一、自顶向下分析算法思想
语法分析:给定文法 G 和句子 S,回答S 是否能够从G推导出来?
基本算法思想:从G的开始字符处罚,随意推导出某个句子t,比较t和S
若t==s,则回答“是”
若他!=s ,多推导几次才能判断
为了让编译高效,需要线性时间的算法,避免回溯,引出递归下降分析算法和LL(1)分析算法
递归下降分析算法
也叫预测分析
- 分析高效(线性时间)
- 容易实现(方便手工编码)
- 错误定位和诊断信息准确
- GCC4.0,LLVM都在使用
算法基本思想: - 每个非终结符构造一个分析函数
- 用前看符号指导产生式规则的选择