Initial implementation of an AST