add an AST and flesh out the grammar a bit more