improved ebnf