What is the purpose of a compiler
Translates source code into machine code
What are the 3 components of a compiler (and their functions)
Pipeline as follows:
Why may it be useful to break up a compiler into separate parts
Allows it to be maintained separately and reused on different platforms etc.
What are the 2 parts of a compiler front-end and their function
What is the lexer responsible for (and what are tokens)
What is the Parser responsible for (and what is the difference between statement and expression)
What would the AST for this look like
How does a recursive decent parser work?
What is some example psuedocode for a recursive descent parser
What is a symbol table and its use (parser)
What is the purpose of the compiler backend / what does it do
What are some potential compiler backend optimisations
What is the concept of bootstrapping (compilers)?
What is a Tombstone diagram (for bootstrapping)
How would you bootstrap a compiler for hex-8 (show using tombstone diagram)
Outline how cross compiling works (use Tombstone diagrams)