【编译原理】作业四
[编译原理] 第四次作业
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) 的
该文法生成的语法分析表是没有冲突的