<object> --> <objectname> <objectname> <inspec> <isaspec>
<withspec> <endspec>
| <objectname> <inspec> <isaspec> <withspec> <endspec>
<objectname> --> ( <objectname> )
| <label> <bindings>
| <objectname> SELECTOR1 <label>
| <objectname> SELECTOR2 <objectname>
<bindings> --> <empty>
| [ <bindinglist> ]
<bindinglist> --> <singlebinding>
| <bindinglist> , <singlebinding>
<singlebinding> --> <objectname> / <label>
| <label> : <objectname>
<inspec> --> <empty>
| in <classlist>
<isaspec> --> <empty>
| isA <classlist>
<classlist> --> <objectname>
| <objectname> , <classlist>
<withspec> --> <empty>
| with <decllist>
<decllist> --> <empty>
| <declaration>
| <decllist> <declaration>
<declaration> --> <attrcatlist> <proplist>
<attrcatlist> --> <label>
| <attrcatlist> , <label>
<proplist> --> <property>
| <proplist> ; <property>
<property> --> <label> : <objectname>
| <label> : <complexref>
| <label> : <enumeration>
| <label> : <pathexpression>
<complexref> --> <objectname> <withspec> <endspec>
<enumeration> --> [ <classlist> ]
<pathexpression>--> <objectname> SELECTORB <pathargument>
<pathargument> --> <label>
| <label> SELECTORB <pathargument>
| <restriction>
| <restriction> SELECTORB <pathargument>
<restriction> --> ( <label> : <enumeration> )
| ( <label> : <pathexpression> )
| ( <label> : <objectname> )
<endspec> --> end
<label> --> ALPHANUM
| LABEL
| NUMBER