Based on a call stack rather than function calls
Like running a Push Down Automaton (PDA)
- scan from left to right, and perform leftmost derivation
- look ahead at most one input symbol
- L - from Left to right
- L - Leftmost
- (1) - lookahead
- Begin by pushing the start nonterminal to the stack
- Perform actions based on stack and next token
- Accept if both stack and input become empty
Two Actions:
- If stack top is a nonterminal A and A à ⍺, replace A with ⍺ (generate)
- If stack top is a terminal (token), match it with input token
- If matched, pop stack and advance input
- Otherwise, throw an error