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