add grammar description
rewrite the lexer
rewrite the AST node definitions