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 | default
An 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 |