【编译原理】作业四

[编译原理] 第四次作业

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
I0 I2 I1
I1 ACCEPT I2 I3
I2
I3 I4 I5 I2 I3
I4
I5

下面对其进行编号
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

  1. 该文法不是 LL(1) 的

    S -> SAS -> A 均能推导出以 a 开头的串,所以不是 LL(1) 的

  2. 该文法是 SLR(1) 的

    该文法生成的语法分析表是没有冲突的