DOMAIN ::= <domain> <name>STRING</name> <variable-declarations> <list>VARIABLE-DECLARATION...</list> </variable-declarations> <refinements><list>REFINEMENT...</list></refinements> <object-classes><list>OBJECT-CLASS...</list></object-classes> <annotations><map>MAP-ENTRY...</map></annotations> </domain> OBJECT-CLASS ::= <object-class> <name>STRING</name> <super-class-names><list>SYMBOL...</list></super-class-names> <object-properties><list>OBJECT-PROPERTY...</list></object-properties> <annotations><map>MAP-ENTRY...</map></annotations> </object-class> OBJECT-PROPERTY ::= <object-property name="SYMBOL" value-class-name="SYMBOL" syntax="OBJECT-PROPERTY__SYNTAX"> </object-property> OBJECT-PROPERTY$SYNTAX ::= number | symbol | string | list | object | defaultAn object-class has the following fields:
object-class ::= (object-class class-name supers object-property*) supers = (class-name*) object-property ::= (property-name [class-name] [:syntax syntax]) class-name ::= symbol property-name ::= symbol |