RecFcnDefFormat1
GenericTerminals: id tokenID ;
SimpleTerminals:  : , [ ] = ;
SpelledTerminals: semiColon ; ;
SimpleTerminals: . { } RECORD REF ANY ;
SimpleTerminals: LIST SEQUENCE OF ;
SimpleTerminals: NULL ;
SimpleTerminals: FROM ;
SimpleTerminals: TYPE ;
SimpleTerminals: CEDAR ;
SimpleTerminals: MODULE BEGIN END ;
NonTerminals: MainGoal ;
NonTerminals: ModuleBody ;
NonTerminals: declist ;
NonTerminals: declaration ;
NonTerminals: from ;
NonTerminals: identlist ;
NonTerminals: identlistP ;
NonTerminals: typeexp ;
NonTerminals: typeid ;
NonTerminals: typeidP ;
NonTerminals: typecons ;
NonTerminals: elementlist ;
NonTerminals: elementlistP ;
NonTerminals: element ;
NonTerminals: reclist ;
NonTerminals: variantpair ;
NonTerminals: variantpart ;
NonTerminals: vcasehead ;
NonTerminals: tagtype ;
NonTerminals: ident ;
NonTerminals: pairlist ;
NonTerminals: pairitem ;
NonTerminals: typelist ;
Prod 0: MainGoal ← ModuleBody ;
Prod 1: ModuleBody ← id : MODULE = BEGIN declist END . ;
Prod 2: ModuleBody ← id : MODULE = BEGIN declist semiColon END . ;
Prod 3: declist ← declaration ;
Prod 4: declist ← declist semiColon declaration ;
Prod 5: declaration ← identlist TYPE = typeexp ;
Prod 6: declaration ← identlist CEDAR TYPE from = typeexp ;
Prod 7: from ← ;
Prod 8: from ← FROM id ;
Prod 9: identlist ← identlistP ;
Prod 10: identlistP ← id : ;
Prod 11: identlistP ← id , identlistP ;
Prod 12: typeexp ← id ;
Prod 13: typeexp ← typeid ;
Prod 14: typeexp ← typecons ;
Prod 15: typeid ← id id ;
Prod 16: typeid ← id typeid ;
Prod 17: typeid ← typeidP ;
Prod 18: typeidP ← id . id ;
Prod 19: typeidP ← typeidP . id ;
Prod 20: typecons ← { elementlist } ;
Prod 21: typecons ← RECORD reclist ;
Prod 22: typecons ← REF typeexp ;
Prod 23: typecons ← REF ANY ;
Prod 24: typecons ← LIST OF typeexp ;
Prod 25: elementlist ← ;
Prod 26: elementlist ← elementlistP ;
Prod 27: elementlistP ← element ;
Prod 28: elementlistP ← elementlistP , element ;
Prod 29: element ← id ;
Prod 30: reclist ← [ ] ;
Prod 31: reclist ← NULL ;
Prod 32: reclist ← [ pairlist ] ;
Prod 33: reclist ← [ typelist ] ;
Prod 34: reclist ← [ pairlist , variantpair ] ;
Prod 35: reclist ← [ variantpart ] ;
Prod 36: reclist ← [ variantpair ] ;
Prod 37: variantpair ← identlist variantpart ;
Prod 38: variantpart ← SEQUENCE vcasehead OF typeexp ;
Prod 39: vcasehead ← ident tagtype ;
Prod 40: tagtype ← typeexp ;
Prod 41: ident ← id : ;
Prod 42: pairlist ← pairitem ;
Prod 43: pairlist ← pairlist , pairitem ;
Prod 44: pairitem ← identlist typeexp ;
Prod 45: typelist ← typecons ;
Prod 46: typelist ← typeid ;
Prod 47: typelist ← id ;
Prod 48: typelist ← typecons , typelist ;
Prod 49: typelist ← typeid , typelist ;
Prod 50: typelist ← id , typelist ;
EndOfSyntax