下面我们将给出SLR(1)分析器用表7.8的SLR(1)分析表,对符号串i+i*i#进行。
  分析时栈的变化过程如表7.9。
表 7.9 对输入串i+i*i#的SLR(1)分析过程
步骤 状态栈 符号栈 输入串 ACTION GOTO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
0
05
03
02
01
016
0165
0163
0169
01697
016975
01697(10)
0169
01
#
#i
#F
#T
#E
#E+
#E+i
#E+F
#E+T
#E+T*
#E+T*i
#E+T*F
#E+T
#E
i+i*i#
+i*i#
+i*i#
+i*i#
+i*i#
i*i#
*i#
*i#
*i#
i#
#
#
#
#
S5
r6
r4
r2
S6
S5
r6
r4
S7
S5
r6
r3
r1
acc
.
3
2
1
.
.
3
9
.
.
10
9
1
  尽管采用SLR(1)方法能够对某些LR(0)项目集规范族中存在动作冲突的项目集,对归约项目用向前查看一个符号的办法得到解决,但是仍有许多文法构造的LR(0)项目集规范族存在的动作冲突不能用SLR(1)方法解决。下节将要介绍比SLR(1)功能更强的LR(1)分析法。
  小练习3:对输入串i+i* i分别给出用SLR(1)分析过程(表7.9)和用 算符优先分析过程,并对两种方法进行比较,说明它们各自的优缺点(算符优先关系表用第6章表6.5 )