book Crafting Interpreters programming language compiler
Chapter 6 - Parsing Expressions
- Given a string, a parser maps tokens to terminals in the grammar and figures out which rules could have generated the string
- A parser has two jobs
- Produce a syntax tree from a valid sequence of tokens
- Detect and report errors from an invalid sequence of tokens
 
Ambiguity and the Parsing Game
- Some strings can be generated in multiple ways
- We use rules for precedence and associativity to resolve any ambiguity during parsing
| Name | Operators | Associates | 
|---|---|---|
| Equality | ==Â!= | Left | 
| Comparison | >Â>=Â<Â<= | Left | 
| Term | -Â+ | Left | 
| Factor | /Â* | Left | 
| Unary | !Â- | Right | 
Recursive Descent Parsing
- A top-down parser
- Starts at the top (outermost) grammar rule
- Works its way down into nested subexpressions prior to reaching the leaves of the syntax tree
 
- Used in GCC, V8, and more