Parse Succesful! [Abstract Syntax] (MkGrammar [(Rule (LabNoP (Id "MkGrammar")) (IdCat "Grammar") [(NTerminal (ListCat (IdCat "Def")))]), (Rule (LabNoP ListE) (ListCat (IdCat "Def")) []), (Rule (LabNoP ListCons) (ListCat (IdCat "Def")) [(NTerminal (IdCat "Def")), (Terminal ";"), (NTerminal (ListCat (IdCat "Def")))]), (Rule (LabNoP ListE) (ListCat (IdCat "Item")) []), (Rule (LabNoP ListCons) (ListCat (IdCat "Item")) [(NTerminal (IdCat "Item")), (NTerminal (ListCat (IdCat "Item")))]), (Rule (LabNoP (Id "Rule")) (IdCat "Def") [(NTerminal (IdCat "Label")), (Terminal "."), (NTerminal (IdCat "Cat")), (Terminal "::="), (NTerminal (ListCat (IdCat "Item")))]), (Rule (LabNoP (Id "Terminal")) (IdCat "Item") [(NTerminal (IdCat "String"))]), (Rule (LabNoP (Id "NTerminal")) (IdCat "Item") [(NTerminal (IdCat "Cat"))]), (Rule (LabNoP (Id "ListCat")) (IdCat "Cat") [(Terminal "["), (NTerminal (IdCat "Cat")), (Terminal "]")]), (Rule (LabNoP (Id "IdCat")) (IdCat "Cat") [(NTerminal (IdCat "Ident"))]), (Rule (LabNoP (Id "LabNoP")) (IdCat "Label") [(NTerminal (IdCat "LabelId"))]), (Rule (LabNoP (Id "LabP")) (IdCat "Label") [(NTerminal (IdCat "LabelId")), (NTerminal (ListCat (IdCat "ProfItem")))]), (Rule (LabNoP (Id "LabPF")) (IdCat "Label") [(NTerminal (IdCat "LabelId")), (NTerminal (IdCat "LabelId")), (NTerminal (ListCat (IdCat "ProfItem")))]), (Rule (LabNoP (Id "LabF")) (IdCat "Label") [(NTerminal (IdCat "LabelId")), (NTerminal (IdCat "LabelId"))]), (Rule (LabNoP (Id "Id")) (IdCat "LabelId") [(NTerminal (IdCat "Ident"))]), (Rule (LabNoP (Id "Wild")) (IdCat "LabelId") [(Terminal "_")]), (Rule (LabNoP (Id "ListE")) (IdCat "LabelId") [(Terminal "["), (Terminal "]")]), (Rule (LabNoP (Id "ListCons")) (IdCat "LabelId") [(Terminal "("), (Terminal ":"), (Terminal ")")]), (Rule (LabNoP (Id "ListOne")) (IdCat "LabelId") [(Terminal "("), (Terminal ":"), (Terminal "["), (Terminal "]"), (Terminal ")")]), (Rule (LabNoP (Id "ProfIt")) (IdCat "ProfItem") [(Terminal "("), (Terminal "["), (NTerminal (ListCat (IdCat "IntList"))), (Terminal "]"), (Terminal ","), (Terminal "["), (NTerminal (ListCat (IdCat "Integer"))), (Terminal "]"), (Terminal ")")]), (Rule (LabNoP (Id "Ints")) (IdCat "IntList") [(Terminal "["), (NTerminal (ListCat (IdCat "Integer"))), (Terminal "]")]), (Separator MEmpty (IdCat "Integer") ","), (Separator MEmpty (IdCat "IntList") ","), (Terminator MNonempty (IdCat "ProfItem") ""), (Rule (LabNoP (Id "Comment")) (IdCat "Def") [(Terminal "comment"), (NTerminal (IdCat "String"))]), (Rule (LabNoP (Id "Comments")) (IdCat "Def") [(Terminal "comment"), (NTerminal (IdCat "String")), (NTerminal (IdCat "String"))]), (Rule (LabNoP (Id "Internal")) (IdCat "Def") [(Terminal "internal"), (NTerminal (IdCat "Label")), (Terminal "."), (NTerminal (IdCat "Cat")), (Terminal "::="), (NTerminal (ListCat (IdCat "Item")))]), (Rule (LabNoP (Id "Token")) (IdCat "Def") [(Terminal "token"), (NTerminal (IdCat "Ident")), (NTerminal (IdCat "Reg"))]), (Rule (LabNoP (Id "PosToken")) (IdCat "Def") [(Terminal "position"), (Terminal "token"), (NTerminal (IdCat "Ident")), (NTerminal (IdCat "Reg"))]), (Rule (LabNoP (Id "Entryp")) (IdCat "Def") [(Terminal "entrypoints"), (NTerminal (ListCat (IdCat "Ident")))]), (Rule (LabNoP (Id "Separator")) (IdCat "Def") [(Terminal "separator"), (NTerminal (IdCat "MinimumSize")), (NTerminal (IdCat "Cat")), (NTerminal (IdCat "String"))]), (Rule (LabNoP (Id "Terminator")) (IdCat "Def") [(Terminal "terminator"), (NTerminal (IdCat "MinimumSize")), (NTerminal (IdCat "Cat")), (NTerminal (IdCat "String"))]), (Rule (LabNoP (Id "Coercions")) (IdCat "Def") [(Terminal "coercions"), (NTerminal (IdCat "Ident")), (NTerminal (IdCat "Integer"))]), (Rule (LabNoP (Id "Rules")) (IdCat "Def") [(Terminal "rules"), (NTerminal (IdCat "Ident")), (Terminal "::="), (NTerminal (ListCat (IdCat "RHS")))]), (Rule (LabNoP (Id "Layout")) (IdCat "Def") [(Terminal "layout"), (NTerminal (ListCat (IdCat "String")))]), (Rule (LabNoP (Id "LayoutStop")) (IdCat "Def") [(Terminal "layout"), (Terminal "stop"), (NTerminal (ListCat (IdCat "String")))]), (Rule (LabNoP (Id "LayoutTop")) (IdCat "Def") [(Terminal "layout"), (Terminal "toplevel")]), (Separator MNonempty (IdCat "String") ","), (Separator MNonempty (IdCat "RHS") "|"), (Rule (LabNoP (Id "MkRHS")) (IdCat "RHS") [(NTerminal (ListCat (IdCat "Item")))]), (Rule (LabNoP (Id "MNonempty")) (IdCat "MinimumSize") [(Terminal "nonempty")]), (Rule (LabNoP (Id "MEmpty")) (IdCat "MinimumSize") []), (Rule (LabNoP (Id "RSeq")) (IdCat "Reg2") [(NTerminal (IdCat "Reg2")), (NTerminal (IdCat "Reg3"))]), (Rule (LabNoP (Id "RAlt")) (IdCat "Reg1") [(NTerminal (IdCat "Reg1")), (Terminal "|"), (NTerminal (IdCat "Reg2"))]), (Rule (LabNoP (Id "RMinus")) (IdCat "Reg1") [(NTerminal (IdCat "Reg2")), (Terminal "-"), (NTerminal (IdCat "Reg2"))]), (Rule (LabNoP (Id "RStar")) (IdCat "Reg3") [(NTerminal (IdCat "Reg3")), (Terminal "*")]), (Rule (LabNoP (Id "RPlus")) (IdCat "Reg3") [(NTerminal (IdCat "Reg3")), (Terminal "+")]), (Rule (LabNoP (Id "ROpt")) (IdCat "Reg3") [(NTerminal (IdCat "Reg3")), (Terminal "?")]), (Rule (LabNoP (Id "REps")) (IdCat "Reg3") [(Terminal "eps")]), (Rule (LabNoP (Id "RChar")) (IdCat "Reg3") [(NTerminal (IdCat "Char"))]), (Rule (LabNoP (Id "RAlts")) (IdCat "Reg3") [(Terminal "["), (NTerminal (IdCat "String")), (Terminal "]")]), (Rule (LabNoP (Id "RSeqs")) (IdCat "Reg3") [(Terminal "{"), (NTerminal (IdCat "String")), (Terminal "}")]), (Rule (LabNoP (Id "RDigit")) (IdCat "Reg3") [(Terminal "digit")]), (Rule (LabNoP (Id "RLetter")) (IdCat "Reg3") [(Terminal "letter")]), (Rule (LabNoP (Id "RUpper")) (IdCat "Reg3") [(Terminal "upper")]), (Rule (LabNoP (Id "RLower")) (IdCat "Reg3") [(Terminal "lower")]), (Rule (LabNoP (Id "RAny")) (IdCat "Reg3") [(Terminal "char")]), (Rule (LabNoP Wild) (IdCat "Reg") [(NTerminal (IdCat "Reg1"))]), (Rule (LabNoP Wild) (IdCat "Reg1") [(NTerminal (IdCat "Reg2"))]), (Rule (LabNoP Wild) (IdCat "Reg2") [(NTerminal (IdCat "Reg3"))]), (Rule (LabNoP Wild) (IdCat "Reg3") [(Terminal "("), (NTerminal (IdCat "Reg")), (Terminal ")")]), (Rule (LabNoP ListOne) (ListCat (IdCat "Ident")) [(NTerminal (IdCat "Ident"))]), (Rule (LabNoP ListCons) (ListCat (IdCat "Ident")) [(NTerminal (IdCat "Ident")), (Terminal ","), (NTerminal (ListCat (IdCat "Ident")))]), (Comment "--"), (Comments "{-" "-}")]) [Linearized Tree] MkGrammar . Grammar ::= [Def]; [] . [Def] ::=; (:) . [Def] ::= Def ";" [Def]; [] . [Item] ::=; (:) . [Item] ::= Item [Item]; Rule . Def ::= Label "." Cat "::=" [Item]; Terminal . Item ::= String; NTerminal . Item ::= Cat; ListCat . Cat ::= "[" Cat "]"; IdCat . Cat ::= Ident; LabNoP . Label ::= LabelId; LabP . Label ::= LabelId [ProfItem]; LabPF . Label ::= LabelId LabelId [ProfItem]; LabF . Label ::= LabelId LabelId; Id . LabelId ::= Ident; Wild . LabelId ::= "_"; ListE . LabelId ::= "[" "]"; ListCons . LabelId ::= "(" ":" ")"; ListOne . LabelId ::= "(" ":" "[" "]" ")"; ProfIt . ProfItem ::= "(" "[" [IntList] "]" "," "[" [Integer] "]" ")"; Ints . IntList ::= "[" [Integer] "]"; separator Integer ","; separator IntList ","; terminator nonempty ProfItem ""; Comment . Def ::= "comment" String; Comments . Def ::= "comment" String String; Internal . Def ::= "internal" Label "." Cat "::=" [Item]; Token . Def ::= "token" Ident Reg; PosToken . Def ::= "position" "token" Ident Reg; Entryp . Def ::= "entrypoints" [Ident]; Separator . Def ::= "separator" MinimumSize Cat String; Terminator . Def ::= "terminator" MinimumSize Cat String; Coercions . Def ::= "coercions" Ident Integer; Rules . Def ::= "rules" Ident "::=" [RHS]; Layout . Def ::= "layout" [String]; LayoutStop . Def ::= "layout" "stop" [String]; LayoutTop . Def ::= "layout" "toplevel"; separator nonempty String ","; separator nonempty RHS "|"; MkRHS . RHS ::= [Item]; MNonempty . MinimumSize ::= "nonempty"; MEmpty . MinimumSize ::=; RSeq . Reg2 ::= Reg2 Reg3; RAlt . Reg1 ::= Reg1 "|" Reg2; RMinus . Reg1 ::= Reg2 "-" Reg2; RStar . Reg3 ::= Reg3 "*"; RPlus . Reg3 ::= Reg3 "+"; ROpt . Reg3 ::= Reg3 "?"; REps . Reg3 ::= "eps"; RChar . Reg3 ::= Char; RAlts . Reg3 ::= "[" String "]"; RSeqs . Reg3 ::= "{" String "}"; RDigit . Reg3 ::= "digit"; RLetter . Reg3 ::= "letter"; RUpper . Reg3 ::= "upper"; RLower . Reg3 ::= "lower"; RAny . Reg3 ::= "char"; _ . Reg ::= Reg1; _ . Reg1 ::= Reg2; _ . Reg2 ::= Reg3; _ . Reg3 ::= "(" Reg ")"; (: []) . [Ident] ::= Ident; (:) . [Ident] ::= Ident "," [Ident]; comment "--"; comment "{-" "-}";