跳转至

4. 语法分析

语法分析器

image.png

这个例子中是最左推导,因为 alpha 中没有非终结符(也可以理解为将最左边的非终结符进行了推导)E+T 中 E 是 A,alpha 是空串,beta 是 +T

leftmost/rightmost

image.png

  • 消除二义性的惯用技术:分层
  • 改造文法,对于引发二义性的多种推导处于文法同一层的情况,将真正想要的推导提取出来,放到更深的层次
  • 最左推导中,更深层的非终结符总是会被优先替换
  • 确保只有一种最左推导,消除二义性

自顶向下的语法分析

递归向下法(有局限)

直接左递归和间接左递归


预测分析法

image.png

FIRST 和 FOLLOW 的计算方式(p49/pdf42 没那么简单)

LL(1) 文法与预测分析表构造算法

要注意构造方式

当表格出现两个推导式时,发生冲突(二义性),课件 p65 有例子

image.png