slightly changed State datatype
EBNF parser now can generate syntax checkers from grammar