<bidirectional-covering> ::= <phi> <--> <field-or-region>
<bidirectional-matching> ::= <phi> <==> <field-or-region>
<compaction-rule> ::= compacts(<phi-list>)
<condition> ::= <local-covers>
| <local-matches>
| <precedence>
| <immediate-precedence>
| <local-compaction>
| <inequation>
<conditions> ::= <condition>
| (<conditions>, <conditions>)
| (<conditions>; <conditions>)
<covered-by-rule> ::= <field-or-region> covered_by <phi>
| <field-or-region> covered_by (<phis>)
<covers-rule> ::= <phi> covers <field-or-region>
| <phi> covers (<fields-or-regions>)
<entry> ::= <lexical-item> ---> <tecto-category>
<field> ::= <prolog-atom>
| matrix
<field-or-region> ::= <field>
| <region>
<fields-or-regions> ::= <field-or-region>
| <fields-or-regions> ; <fields-or-regions>
<fields> ::= <field>
| <fields> ; <fields>
<immediate-precedence> ::= <non-zero-index> << <non-zero-index>
<lexical-entry> ::= <entry>
| <morph-rule>
<lexical-item> ::= <prolog-atom>
| <prolog-variable>
<linking-rule> ::= <region> <<-- <field>
| <region> <<-- (<fields>)
| <field> -->> <region>
| <field> -->> (<regions>)
<local-compaction> ::= compacts(<index>)
<local-covers> ::= <non-zero-index> covers <field-or-region>
<local-matches> ::= <non-zero-index> matches <field-or-region>
<matched-by-rule> ::= <field-or-region> matched_by <phi>
| <field-or-region> matched_by (<phis>)
<matches-rule> ::= <phi> matches <field-or-region>
| <phi> matches (<fields-or-regions>)
| (<phi> matches <field-or-region>) :- <prolog-goals>
<morph-rule> ::= (<entry>) :- <prolog-goals>
<phi> ::= <prolog-atom>
| <prolog-variable>
<phi-conj> ::= <phi>
| <phi-conj>, <phi-conj>
<phis> ::= <phi>
| <phis> ; <phis>
<precedence> ::= <non-zero-index> < <non-zero-index>
<region> ::= <prolog-atom>
<regions> ::= <region>
| <regions> ; <regions>
<tecto-rule> ::= <phi> *--> [<phi-conj>]
| <phi> *--> [<phi-conj>, {<conditions>}]
<topo-rule> ::= <region> topo <field-descriptor-list>