Parser - yacc(1) Takes the tokens/etc. from lex(1) and validates everything using the grammar of the language. As well as building an AST representation of the statements, etc. %union { -- yacc's value stack used to pass data inside parser symbol table pointer char name[...] int yyint value (data struct for constants) ast - syntax tree for expressions etc. }