【编译原理】第四章作业(2)

编译原理第四章作业(2)

计科 吴政亿

2

  1. 增广文法:

    (0) SS
    (1) SSS+
    (2) BSS
    (3) Ba

  2. SLR项集如下:

    • I0:SS,SSS+,SSS,Sa
    • I1:Sa
    • I2:SS,SSS+,SSS,SSS+,SSS,Sa
    • I3:SSS+,SSS,SSS+,
             SSS,SSS+,SSS,Sa
    • I4:SSS+
    • I5:SSS
  3. GOTO 函数如下:
    GOTO(I0,a)=I1 , GOTO(I0,S)=I2
    GOTO(I2,a)=I1 , GOTO(I2,S)=I3 , GOTO(I2, $ )=accept
    GOTO(I3,a)=I1 , GOTO(I3,S)=I3
    GOTO(I3,+)=I4 , GOTO(I3,)=I5

  4. 语法分析表如下:

状态ACTIONGOTO
a+*$S
0S12
1r3r3r3r3
2S1accept3
3S1S4S53
4r1r1r1r1
5r2r2r2r2

无冲突,这显然是一个 SLR 文法

3

序号符号输入动作
(1)0aa*a+$移入
(2)01aa*a+$按S->a规约
(3)02Sa*a+$移入
(4)021Sa*a+$按S->a规约
(5)023SS*a+$移入
(6)0235SS*a+$按S->SS*规约
(7)02Sa+$移入
(8)021Sa+$按S->a规约
(9)023SS+$移入
(10)0234SS+$按S->SS+规约
(11)02S$接受

6

  • 因为First(SA) = First(A) = {a},所以该文法不是LL(1)的。
  • 下证该文法是SLR(1)的:

    1. 增广文法:
      (0) SS
      (1) SSA
      (2) SA
      (3) Aa
    2. SLR项集:

      • I0:SS,SSA,SA,Aa
      • I1:Aa
      • I2:SA
      • I3:SS,SSA,Aa
      • I4:SSA
    3. 语法分析表:

状态ACTIONGOTO
a$SA
0S1S2S3
1r3r3
2r2r2
3S!accS4
4r1r1

因为没有重复的冲突项,故该文法为SLR(1)的。

1

  1. 规范LR项集族
I0:
    [S' -> ·S  , $] 
    [S' -> ·SS+, $], [S' -> ·SS+, a]
    [S' -> ·SS*, $], [S' -> ·SS*, a]
    [S' -> ·a  , $], [S' -> ·a  , a]
I1:
    [S' -> a·  , $], [S' -> a·  , a]
I2:
    [S' -> S·  , $] 
    [S' -> S·S+, $], [S' -> S·S+, a]
    [S' -> S·S*, $], [S' -> S·S*, a]
    [S' -> ·SS+, a], [S' -> ·SS+, *], [S' -> ·SS+, +]
    [S' -> ·SS*, a], [S' -> ·SS*, *], [S' -> ·SS*, +]
    [S' -> ·a  , a], [S' -> ·a  , *], [S' -> ·a  , +]
I3:
    [S' -> a·  , a], [S' -> a·  , *], [S' -> a·  , +]
I4:
    [S' -> SS·+, $], [S' -> SS·+, a]
    [S' -> SS·*, $], [S' -> SS·*, a]
    [S' -> S·S+, a], [S' -> S·S+, *], [S' -> S·S+, +]
    [S' -> S·S*, a], [S' -> S·S*, *], [S' -> S·S*, +]
    [S' -> ·SS+, a], [S' -> ·SS+, *], [S' -> ·SS+, +]
    [S' -> ·SS*, a], [S' -> ·SS*, *], [S' -> ·SS*, +]
    [S' -> ·a  , a], [S' -> ·a  , *], [S' -> ·a  , +]
I5:
    [S' -> SS+·, $], [S' -> SS+·, a]
I6:
    [S' -> SS*·, $], [S' -> SS*·, a]
I7:
    [S' -> SS·+, a], [S' -> SS·+, *], [S' -> SS·+, +]
    [S' -> SS·*, a], [S' -> SS·*, *], [S' -> SS·*, +]
    [S' -> S·S+, a], [S' -> S·S+, *], [S' -> S·S+, +]
    [S' -> S·S*, a], [S' -> S·S*, *], [S' -> S·S*, +]
    [S' -> ·SS+, a], [S' -> ·SS+, *], [S' -> ·SS+, +]
    [S' -> ·SS*, a], [S' -> ·SS*, *], [S' -> ·SS*, +]
    [S' -> ·a  , a], [S' -> ·a  , *], [S' -> ·a  , +]
I8:
    [S' -> SS+·, a], [S' -> SS+·, *], [S' -> SS+·, +]
I9:
    [S' -> SS*·, a], [S' -> SS*·, *], [S' -> SS*·, +]
  1. LALR项集族:
I0:
    [S' -> ·S  , $] 
    [S' -> ·SS+, $], [S' -> ·SS+, a]
    [S' -> ·SS*, $], [S' -> ·SS*, a]
    [S' -> ·a  , $], [S' -> ·a  , a]
I1:
    [S' -> S·  , $] 
    [S' -> S·S+, $], [S' -> S·S+, a]
    [S' -> S·S*, $], [S' -> S·S*, a]
    [S' -> ·SS+, a], [S' -> ·SS+, *], [S' -> ·SS+, +]
    [S' -> ·SS*, a], [S' -> ·SS*, *], [S' -> ·SS*, +]
    [S' -> ·a  , a], [S' -> ·a  , *], [S' -> ·a  , +]
I2:
    [S' -> SS·+, a], [S' -> SS·+, *], [S' -> SS·+, +], [S' -> SS·+, $]
    [S' -> SS·*, a], [S' -> SS·*, *], [S' -> SS·*, *], [S' -> SS·*, $]
    [S' -> S·S+, a], [S' -> S·S+, *], [S' -> S·S+, +]
    [S' -> S·S*, a], [S' -> S·S*, *], [S' -> S·S*, +]
    [S' -> ·SS+, a], [S' -> ·SS+, *], [S' -> ·SS+, +]
    [S' -> ·SS*, a], [S' -> ·SS*, *], [S' -> ·SS*, +]
    [S' -> ·a  , a], [S' -> ·a  , *], [S' -> ·a  , +]
I3:
    [S' -> a·  , a], [S' -> a·  , *], [S' -> a·  , +], [S' -> a·  , $]
I4:
    [S' -> SS+·, a], [S' -> SS+·, *], [S' -> SS+·, +], [S' -> SS+·, $]
I5:
    [S' -> SS*·, a], [S' -> SS*·, *], [S' -> SS*·, +], [S' -> SS*·, $]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值