4-SLR分析表

构造SLR分析表本质上就是构造一个基于文法LR(0)项目的LR(0)自动机。LR(0)项目,LR(0)自动机

LR(0)项目

在右部的某个地方加点的产生式
加点的目的是用来表示分析过程中的状态

image.png

LR(0)自动机

根据文法LR(0)项目构造识别可行前缀的DFA

LR(0)项 => LR(0)自动机
文法的所有LR(0)项构成一组规范LR(0)项集,这些规范项集对应LR(0)自动机的状态。

构造SLR分析表的两大步骤

  1. 从文法构造识别可行前缀的DFA
  2. 从上述DFA构造分析表

image.png

接下来就是把增广文法分写来写成I0

image.png

接下来就是根据I0不断推进,并在对应的action,goto表格中记录下来

image.png

image.png

image.png

image.png

image.png

如果出现动作冲突,那么该文法就不是SLR(1)的

image.png

SLR(1)和LR(0)的语法分析表的区别就是,SLR(1)仅在FOLLOW集下写ri,而LR(0)是在action整行写下ri

以上就是构建SLR分析表的步骤,严格来时,SLR分析表是一种特殊的LR(0)分析表,在后面我们还会了解到更为特殊的规范LR方法,通常情况下称为LR(1)文法