3 statement -> nonterm "->" derivations ";" | "ignore" nonterm "in" nonterm +(,);
4 derivations -> ( "e" | derivation ) +(|);
6 term -> ( name "=" )? (regex | string | nonterm | ( "(" derivations ")" ) ) modifier ? ;
8 modifier -> "?" | "*" | "+" | ("*" | "+") "(" ( /[^)]*/ | string ) ")";
10 string -> '"' /([^"]|\\")*/ '"';
11 string -> "'" /([^']|\\')*/ "'";
12 regex -> "/" /([^\/]|\\\/)*/ "/";
14 whitespace -> /[\r\n\s\t]+/;
15 allow whitespace in grammar, statement, derivations, derivation, term;