Syntaxia Lexer Takes a string of code and returns a list of tokens Parser Takes a list of tokens and returns an abstract syntax tree (makes sure that grammar is correct) Code Generator Takes an abstract syntax tree and returns assembly that can be run