<> <> <> <> Begin { "ARRAY" "BEGIN" "BOOLEAN" "CARDINAL" "CHOICE" "DEPENDS" "END" "ERROR" "FALSE" "INTEGER" "LONG" "OF" "PROCEDURE" "PROGRAM" "RECORD" "REPORTS" "RETURNS" "SEQUENCE" "SINK" "SOURCE" "STRING" "TRUE" "TYPE" "UNSPECIFIED" "UPON" "VERSION" "(" ")" "[" "]" "{" "}" ":" "." ";" "=" "=>" "," "-" }: SimpleTokens; id: GenericToken = "tokenID" ; decimal: GenericToken = "tokenDECIMAL" ; hex: GenericToken = "tokenHEX" ; octal: GenericToken = "tokenOCTAL" ; rope: GenericToken = "tokenROPE" ; export: NonTerminal; program: NonTerminal; dependency: NonTerminal; importlist: NonTerminal; import: NonTerminal; declarationlist: NonTerminal; declaration: NonTerminal; type: NonTerminal; simpletype: NonTerminal; reference: NonTerminal; primitive: NonTerminal; construction: NonTerminal; constant: NonTerminal; value: NonTerminal; complexvalue: NonTerminal; optional: NonTerminal; mandatory: NonTerminal; enumeration: NonTerminal; keyindexpair: NonTerminal; union: NonTerminal; selector: NonTerminal; fieldlist: NonTerminal; field: NonTerminal; grouping: NonTerminal; constructor: NonTerminal; binding: NonTerminal; arguments: NonTerminal; results: NonTerminal; errors: NonTerminal; namelist: NonTerminal; number: NonTerminal; export _ program "." ; program _ id ":" "PROGRAM" decimal "VERSION" decimal "=" "BEGIN" dependency declarationlist "END" ; dependency.empty _ ; dependency.imports _ "DEPENDS" "UPON" importlist ";" ; importlist.one _ import ; importlist.more _ importlist "," import ; import _ id "(" decimal ")" "VERSION" decimal ; declarationlist.a _ ; declarationlist.b _ declarationlist declaration ; declaration.type _ id ":" "TYPE" "=" type ";" ; declaration.constant _ id ":" type "=" constant ";" ; declaration.id _ id ":" type "=" id ";" ; type.simple _ simpletype ; type.construction _ construction ; simpletype.reference _ reference ; simpletype.primitive _ primitive ; reference.alias _ id ; reference.import _ id "." id ; primitive.bool _ "BOOLEAN" ; primitive.card16 _ "CARDINAL" ; primitive.card32 _ "LONG" "CARDINAL" ; primitive.int16 _ "INTEGER" ; primitive.int32 _ "LONG" "INTEGER" ; primitive.sink _ "SINK" ; primitive.source _ "SOURCE" ; primitive.string _ "STRING" ; primitive.unspec _ "UNSPECIFIED" ; construction.array _ "ARRAY" mandatory "OF" simpletype ; construction.choice _ "CHOICE" reference "OF" "{" union "}" ; construction.enum _ "{" enumeration "}" ; construction.error _ "ERROR" arguments ; construction.proc _ "PROCEDURE" arguments results errors ; construction.record _ "RECORD" "[" fieldlist "]" ; construction.null _ "RECORD" "[" "]" ; construction.seq _ "SEQUENCE" optional "OF" simpletype ; constant.value _ value ; constant.complex _ complexvalue ; constant.choiceconstant _ id constant ; constant.choiceid _ id id ; constant.import _ id "." id ; value.true _ "TRUE" ; value.false _ "FALSE" ; value.number _ number ; value.inverted _ "-" number ; value.string _ rope ; complexvalue.grouping _ "[" grouping "]" ; complexvalue.constructor _ "[" constructor "]" ; complexvalue.null _ "[" "]" ; optional.nonempty _ constant ; optional.alias _ id ; optional.empty _ ; mandatory.value _ constant ; mandatory.alias _ id ; enumeration.one _ keyindexpair ; enumeration.more _ keyindexpair "," enumeration ; keyindexpair _ id "(" mandatory ")" ; union.one _ selector ; union.more _ selector "," union ; selector.one _ namelist "=>" simpletype ; selector.two _ namelist "(" number ")" "=>" simpletype ; fieldlist.field _ field ; fieldlist.more _ field "," fieldlist ; field _ namelist ":" simpletype ; grouping.const _ constant ; grouping.id _ id ; grouping.cmore _ constant "," grouping ; grouping.imore _ id "," grouping ; constructor.one _ binding ; constructor.more _ binding "," constructor ; binding.id _ namelist ":" id ; binding.const _ namelist ":" constant ; arguments.empty _ ; arguments.list _ "[" fieldlist "]" ; arguments.null _ "[" "]" ; results.empty _ ; results.list _ "RETURNS" "[" fieldlist "]" ; results.null _ "RETURNS" "[" "]" ; errors.empty _ ; errors.list _ "REPORTS" "[" namelist "]" ; namelist.one _ id ; namelist.more _ id "," namelist ; number.decimal _ decimal ; number.octal _ octal ; number.hex _ hex ; End.