What are important qualities that compilers have?
Source code → Machine code (or potential errors)
Two pass compiler:
Source → Frontend (or potential errors) → (IR) → Backend (or potential errors) → Machine code
Source code → Scanner → Tokens → Parser → IR
Scanner: Maps chars to tokens, character string val is a lexeme
Parser: Recognizes CFG and constructs IR