interleaving
1 pass?
lame
unnatural scope rules
limits optimisations
ignores modularity
nowadays...
5-15 passes
lexical analysis
(scanner)
strip whitespace
lexemes
tokens
syntax analysis
generates parse tree
semantic analysis
context-sensitive
type info