编译器-parser

编译器

编译器-parser

编译器-parser
上下文无关语法(content free grammar)
编译器-parser
编译器-parser
编译器-parser

多义性

编译器-parser

解决方案

1 Recursive Descent
编译器-parser
编译器-parser
从左边的约束条件中选取规则,进行递归下降分解
优点是好写,缺点是有时候陷入局部满足,导致整体不能解析,比如int t = 5 + 3,解析了int t = 5 ,剩下+3,导致错误(因为解析的时候,采取规则的顺序导致)
编译器-parser
前面几条规则就放回true了。

编译器-parser
编译器-parser
(Left Recursion)
编译器-parser
RD在处理左递归的时候会出现问题,可以转换为右递归
编译器-parser
编译器-parser
编译器-parser
编译器-parser
2 Predictive Parsing

编译器-parser
编译器-parser
编译器-parser
编译器-parser
编译器-parser
编译器-parser
编译器-parser
编译器-parser
编译器-parser