根据文法(0)E'→E(1)E→E+T(2)E→T(3)T→TF(4)T→F(5)F→(E)(6)F→id给出串id*id+id分析过程的状态栈,符号栈,输入串,动作,输出的分析表
时间: 2024-06-07 14:09:32 浏览: 4
首先,给出该文法的状态转换图和ACTION-GOTO表:
状态转换图:
![image.png](attachment:image.png)
ACTION-GOTO表:
| 状态 | id | + | * | ( | ) | $ | E | T | F |
|:-----:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|:---:|
| 0 | s5 | | | s4 | | | 1 | 2 | 3 |
| 1 | | s6 | | | acc | acc | | | |
| 2 | | r2 | s7 | | r2 | r2 | | | |
| 3 | | r4 | r4 | | r4 | r4 | | | |
| 4 | s5 | | | s4 | | | 8 | 2 | 3 |
| 5 | | r6 | r6 | | r6 | r6 | | | |
| 6 | s5 | | | s4 | | | | 9 | 3 |
| 7 | s5 | | | s4 | | | | | 10 |
| 8 | | s6 | | | | | | | |
| 9 | | r1 | s7 | | r1 | r1 | | | |
| 10 | | r3 | r3 | | r3 | r3 | | | |
接下来,给出id*id+id的分析过程:
状态栈:$0$
符号栈:$
输入串:id*id+id$
动作:$-s5$(移进)
状态栈:$0,5$
符号栈:$id,$
输入串:*id+id$
动作:$-r6$(规约,使用规则6,F→id)
状态栈:$0,5$
符号栈:$F,$
输入串:*id+id$
动作:$-r4$(规约,使用规则4,T→F)
状态栈:$0,2$
符号栈:$T,$
输入串:*id+id$
动作:$-s7$(移进)
状态栈:$0,2,7$
符号栈:$T,*, $
输入串:id+id$
动作:$-s5$(移进)
状态栈:$0,2,7,5$
符号栈:$T,*,id,$
输入串:+id$
动作:$-r6$(规约,使用规则6,F→id)
状态栈:$0,2,7,5$
符号栈:$T,*,F,$
输入串:+id$
动作:$-r2$(规约,使用规则2,E→E+T)
状态栈:$0,1$
符号栈:$E,$
输入串:+id$
动作:$-s6$(移进)
状态栈:$0,1,6$
符号栈:$E,+, $
输入串:id$
动作:$-s5$(移进)
状态栈:$0,1,6,5$
符号栈:$E,+,id,$
输入串:$
动作:$-r1$(规约,使用规则1,E'→E)
状态栈:$0$
符号栈:$E',$
输入串:$
动作:$acc$(接受)