add EBNF parser