[关闭]
@Heath 2015-11-03T16:10:59.000000Z 字数 1824 阅读 2131

编译原理第六周

13331130 李有才
编译原理


一、 给出生成下述语言的上下文无关文法:
1. {anbnambm|n,m>=0}.

SAA
AaAb|ε

  1. {1n0m1m0n|n,m>=0}.

    S1S0|A
    A0A1|ε

  2. {WaWr|W{0|a},WrW}.

    S0Sa|aS0|a

二、 考虑以下文法:
SaB|bA
AaS|bAA|a
BbS|aBB|b
给出串 aaabbabbba 的最左推导,最右推导以及推导树

最左推导
SaB
     aaBB
     aaaBBB
     aaabSBB
     aaabbABB
     aaabbaBB
     aaabbabB
     aaabbabbS
     aaabbabbbA
     aaabbabbba
最右推导
SaB
     aaBB
     aaBbS
     aaBbbA
     aaBbba
     aaaBBbba
     aaaBbbba
     aaabSbbba
     aaabbAbbba
     aaabbabbba
推导树
编译原理06-01.svg-17.5kB

三、 考虑以下文法:
NSE|E
SSD|D
E0|2|4|6|8|10
D0|1|2|3|4|5|6|7|8|9
1. 证明此文法有二义性。

对字符串10推导
推导1:
NSE
     DE
     1E
     10
推导2:
NE
     10
对同一字符串存在两个最左推导,所以此文法有二义性

  1. 此文法描述的语言是什么(用自然语言表述)。

    非负偶数

  2. 写出一个新的文法,要求新文法无二义且和上述文法产生相同的语言。

    NSE|E
    SSD|D
    E0|2|4|6|8
    D0|1|2|3|4|5|6|7|8|9

四、 考虑以下文法:
SaTUV|bV
TU|UU
Uε|bV
Vε|cV
写出每个非终端符号的 FIRST 集和 FOLLOW 集。

first(S)={a,b}
first(T)={ε,b}
first(U)={ε,b}
first(V)={ε,c}
follow(S)={$}
follow(T)={b,c,$}
follow(U)={b,c,$}
follow(V)={b,c,$}

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注