编译原理—LR(1)文法

LL(0),LR(0),SLR(1)

Posted by MetaNetworks on October 17, 2019
本页面总访问量

LR分析包含四种分析技术

image-20191022103523111

LR(1)文法所处的位置

image-20191017093039305

算法解释

1
2
3
4
5
6
void processLR_1(){
  //1. 移进
  //2. 针对·后为非终结符的情况,采用下方的方法进行处理得到新的二元组
  //3. 扩展上面得到的二元组
  //4. 重复,按照某一个方向进行DFA的构造
}

针对点·后为非终结符的情况:

如$A \rightarrow a·Bc,#$,文法中有$B \rightarrow cA$

则扩展出:

($B \rightarrow cA,c$) ——(因为$c \in first(c#)$)

例子:

图中$I_5,I_7$存在冲突项,进行$LR(1)$分析

image-20191017092628003

构造表:

image-20191017092725272

判断文法不是LALR(1)的方法

image-20191017094845788

参考链接