Begin id: GenericToken = "tokenID" ; { ";" ":" "," "[" "]" "=" }: SimpleTokens; { "." "{" "}" "RECORD" "REF" "ANY" }: SimpleTokens; { "LIST" "SEQUENCE" "OF" }: SimpleTokens; { "NULL" }: SimpleTokens; { "FROM" }: SimpleTokens; { "TYPE" }: SimpleTokens; { "CEDAR" }: SimpleTokens; { "MODULE" "BEGIN" "END" }: SimpleTokens; MainGoal: NonTerminal; ModuleBody: NonTerminal; declist: NonTerminal; declaration: NonTerminal; from: NonTerminal; identlist: NonTerminal; identlistP: NonTerminal; typeexp: NonTerminal; typeid: NonTerminal; typeidP: NonTerminal; typecons: NonTerminal; elementlist: NonTerminal; elementlistP: NonTerminal; element: NonTerminal; reclist: NonTerminal; variantpair: NonTerminal; variantpart: NonTerminal; vcasehead: NonTerminal; tagtype: NonTerminal; ident: NonTerminal; pairlist: NonTerminal; pairitem: NonTerminal; typelist: NonTerminal; MainGoal _ ModuleBody ; ModuleBody.nosemicolon _ id ":" "MODULE" "=" "BEGIN" declist "END" "." ; ModuleBody.eithsemicolon _ id ":" "MODULE" "=" "BEGIN" declist ";" "END" "." ; declist.one _ declaration ; declist.more _ declist ";" declaration ; declaration.type _ identlist "TYPE" "=" typeexp ; declaration.cedartype _ identlist "CEDAR" "TYPE" from "=" typeexp ; from.no _ ; from.yes _ "FROM" id ; identlist _ identlistP ; identlistP.id _ id ":" ; identlistP.idmore _ id "," identlistP ; typeexp.id _ id ; typeexp.typeid _ typeid ; typeexp.typecons _ typecons ; typeid.idid _ id id ; typeid.idtypeid _ id typeid ; typeid.typeidp _ typeidP ; typeidP.two _ id "." id ; typeidP.more _ typeidP "." id ; typecons.elements _ "{" elementlist "}" ; typecons.record _ "RECORD" reclist ; typecons.ref _ "REF" typeexp ; typecons.refany _ "REF" "ANY" ; typecons.list _ "LIST" "OF" typeexp ; elementlist.empty _ ; elementlist.nonempty _ elementlistP ; elementlistP.one _ element ; elementlistP.more _ elementlistP "," element ; element.id _ id ; reclist.empty _ "[" "]" ; reclist.null _ "NULL" ; reclist.pairs _ "[" pairlist "]" ; reclist.types _ "[" typelist "]" ; reclist.vpairs _ "[" pairlist "," variantpair "]" ; reclist.vpart _ "[" variantpart "]" ; reclist.vpair _ "[" variantpair "]" ; variantpair _ identlist variantpart ; variantpart.seq _ "SEQUENCE" vcasehead "OF" typeexp ; vcasehead.ident _ ident tagtype ; tagtype.exp _ typeexp ; ident _ id ":" ; pairlist.one _ pairitem ; pairlist.more _ pairlist "," pairitem ; pairitem _ identlist typeexp ; typelist.typecons _ typecons ; typelist.typeid _ typeid ; typelist.id _ id ; typelist.typeconsmore _ typecons "," typelist ; typelist.typeidmore _ typeid "," typelist ; typelist.idmore _ id "," typelist ; End.