EBNF: made things right recursive instead of left recursive where possible, made spacing more consistent