Internal tree-shaped representation of source code generated by a parser: usually an operation at the top with operands on the sides. Produced by Ruby's syntactical analysis phase from the token stream. Alternative internal representations include three-address code and bytecode (e.g. Java). Subsequent semantical analysis and optimization phases traverse the AST multiple times.