LL(1) parsing


**Based on a call stack rather than function calls**
Like running a [Push Down Automaton](https://texonom.com/push-down-automaton-01d8dacbc2414595a5d071b58d9f2f70) (PDA)
- scan from left to right, and perform leftmost derivation
- look ahead at most one input symbol


[Parsing Table](https://texonom.com/parsing-table-8ab92f1179674c82bcf9f3a194338735)


[LL(1) Grammar](https://texonom.com/ll1-grammar-77f22aa1f9ba420f84c576cbc608e511)


- 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:
1. If stack top is a nonterminal A and A à ⍺, replace A with ⍺ (generate)
2. If stack top is a terminal (token), match it with input token
> - If matched, pop stack and advance input
> - Otherwise, throw an error



> [LL 파서 - 위키백과, 우리 모두의 백과사전](https://ko.wikipedia.org/wiki/LL_%ED%8C%8C%EC%84%9C)

> [LL(1) 파싱 알고리듬 - 파싱 테이블과 파싱 방법](https://plas.tistory.com/90)





