Creating and traversing an AST.