Grm. Grammar ::= [RExp] ; App. RExp ::= "(" CId [RExp] ")" ; AId. RExp ::= CId ; AInt. RExp ::= Integer ; AStr. RExp ::= String ; AFlt. RExp ::= Double ; AMet. RExp ::= "?" ; terminator RExp "" ; token CId (('_' | letter) (letter | digit | '\'' | '_')*) ;