递归下降分析算法是自顶向下分析算法的一部分。
递归下降分析算法
- 也称为预测分析
- 分析高效(线性时间)
- 容易实现(方便手工编码)
- 错误定位和诊断信息准确
- 被很多开源和商业的编译器所采用
- GCC 4.0, LLVM, ...
- 算法基本思想
- 每个非终结符构造一个分析函数
- 用前看符号指导产生式规则的规则
对于给定的文法G如下:
S -> N V N
N -> s
| t
| g
| w
V -> e
| d
我们写出它的递归下降算法如下:
parse_S()
parse_N()
parse_V()
parse_N()
parse_N()
token = tokens[i++]
if(token == s || token == t || token == g || token == w)
return;
error("...")
parse_V()
token = tokens[i++]
... //
一般算法框架
X -> β11 ... β1i
| β2