Pratt parsing is one of the most frequently used techniques for hand-written parsing. In traditional parsing, we usually represent expressions by specifying precedence and associativity of operators. e.g.

1
2
3
4
5
6
7
8
9
10
11
type Expr
= Factor
| Expr '+' Factor

type Factor
= Atom
| Factor '*' Atom

type Atom
= 'number'
| '(' Expr ')'

While in pratt parsing, we don’t need such abstraction.