7.3 SLR(1)分析 由于大多数适用的程序设计语言的文法不能满足LR(0)文法的条件,即使是描述一个实数变量说明这样简单的文法也不一定是LR(0)文法。因此本节将介绍对于LR(0)规范族中有冲突的项目集(状态)用向前查看一个符号的办法进行处理,以解决冲突。这种办法将能满足一些文法的需要,因为只对有冲突的状态才向前查看一个符号,以确定做那种动作,因而称这种分析方法为简单的LR(1)分析法,用SLR(1)表示。 实际上大多数适用的程序设计语言的文法也不能满足SLR(1)文法的条件,但是SLR(1) 分析法是为了解LR(1)分析法做准备的,如果没有SLR(1) 分析法的思想基础,那么理解LR(1)分析法是很困难的。 现举实型变量说明文法为例: <实型变量说明>→ real<标识符表> <标识符表>→<标识符表>,i <标识符表>→i 将该文法缩写后并拓广为G′如下: (0) S′→S (1) S→rD (2) D→D,i (3) D→i |