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