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 "{-""-}";