finished provisional EBNF