[编译原理] 第四次作业
151220129 计科 吴政亿 [email protected]
4.5.3
| 栈 | 输入 | 句柄 | 动作 |
|---|---|---|---|
| $ | aaa*a++$ | 移入 | |
| $a | aa*a++$ | a | 规约: S -> a |
| $S | aa*a++$ | 移入 | |
| $Sa | a*a++$ | a | 规约: S -> a |
| $SS | a*a++$ | 移入 | |
| $SSa | *a++$ | a | 规约: S -> a |
| $SSS | *a++$ | 移入 | |
| $SSS* | a++$ | SS* | 规约: S -> SS* |
| $SS | a++$ | 移入 | |
| $SSa | ++$ | a | 规约: S -> a |
| $SSS | ++$ | 移入 | |
| $SSS+ | +$ | SS+ | 规约: S -> SS+ |
| $SS | +$ | 移入 | |
| $SS+ | $ | SS+ | 规约: S -> SS+ |
| $S | $ | 接受 |
4.6.2
Follow(S) = {+ , *, $ , a}
| GOTO函数表 | + | * | $ | a | S |
|---|---|---|---|---|---|
| ACCEPT | |||||
下面对其进行编号
1. S -> SS+
2. S -> SS*
3. S -> a
得到SLR语法分析表:
因为无冲突,所以是SLR文法。
4.6.3
| 栈 | 符号 | 输入 | 动作 |
|---|---|---|---|
| 0 | aa*a+$ | 移入 | |
| 02 | a | a*a+$ | 按照S->a归约 |
| 01 | S | a*a+$ | 移入 |
| 012 | Sa | *a+$ | 按照S->a归约 |
| 013 | SS | *a+$ | 移入 |
| 0135 | SS* | a+$ | 按照S->SS*归约 |
| 01 | S | a+$ | 移入 |
| 012 | Sa | +$ | 按照S->a归约 |
| 013 | SS | +$ | 移入 |
| 0134 | SS+ | $ | 按照S->SS+归约 |
| 01 | S | $ | 接受 |
4.6.6
-
该文法不是 LL(1) 的
S -> SA和S -> A均能推导出以 a 开头的串,所以不是 LL(1) 的 -
该文法是 SLR(1) 的
该文法生成的语法分析表是没有冲突的