entrypoints Grm; Grm. Grm ::= [Term1]; separator nonempty Term1 "" ; Fun. Term ::= Id [Term1]; _. Term ::= Term1; internal Abs. Term ::= "\\" Id "->" Term ; internal Var. Term ::= Id ; fun0. Term1 ::= Id ; Lit. Term1 ::= Literal ; Met. Term1 ::= "?" ; _. Term1 ::= "(" Term ")" ; define fun0 x = Fun x [] ; LStr. Literal ::= String ; LInt. Literal ::= Integer ; LFlt. Literal ::= Double ; token Id ((letter | '_') (letter | digit | '_')*) ;