ARCH-SPEC-DEFN ::= arch spec ARCH-SPEC-NAME = ARCH-SPEC end/
! ARCH-SPEC ::= BASIC-ARCH-SPEC | GROUP-ARCH-SPEC
! GROUP-ARCH-SPEC ::= { ARCH-SPEC } | ARCH-SPEC-NAME
BASIC-ARCH-SPEC ::= unit/units UNIT-DECL-DEFN ;...; UNIT-DECL-DEFN ;/
result UNIT-EXPRESSION ;/
UNIT-DECL-DEFN ::= UNIT-DECL | UNIT-DEFN
UNIT-DECL ::= UNIT-NAME : UNIT-SPEC
! given GROUP-UNIT-TERM ,..., GROUP-UNIT-TERM
| UNIT-NAME : UNIT-SPEC
UNIT-DEFN ::= UNIT-NAME = UNIT-EXPRESSION
! UNIT-SPEC-DEFN ::= unit spec SPEC-NAME = UNIT-SPEC end/
! UNIT-SPEC ::= GROUP-SPEC
! | GROUP-SPEC *...* GROUP-SPEC -> GROUP-SPEC
! | arch spec GROUP-ARCH-SPEC
! | closed UNIT-SPEC
UNIT-EXPRESSION ::= lambda UNIT-BINDING ;...; UNIT-BINDING "." UNIT-TERM
| UNIT-TERM
UNIT-BINDING ::= UNIT-NAME : UNIT-SPEC
UNIT-TERM ::= UNIT-TERM RENAMING
| UNIT-TERM RESTRICTION
| UNIT-TERM and...and UNIT-TERM
| local UNIT-DEFN ;...; UNIT-DEFN ;/ within UNIT-TERM
! | GROUP-UNIT-TERM
! GROUP-UNIT-TERM ::= { UNIT-TERM }
| UNIT-NAME
| UNIT-NAME [ FIT-ARG-UNIT ]...[ FIT-ARG-UNIT ]
FIT-ARG-UNIT ::= UNIT-TERM
| UNIT-TERM fit SYMB-MAP-ITEMS ,..., SYMB-MAP-ITEMS
ARCH-SPEC-NAME ::= SIMPLE-ID
UNIT-NAME ::= SIMPLE-ID