@Heath
2015-11-03T16:10:59.000000Z
字数 1824
阅读 2131
13331130 李有才
编译原理
一、 给出生成下述语言的上下文无关文法:
1.
S→AA
A→aAb|ε
S→1S0|A
A→0A1|ε
S→0Sa|aS0|a
二、 考虑以下文法:
给出串 aaabbabbba 的最左推导,最右推导以及推导树
最左推导
S⇒aB
⇒aaBB
⇒aaaBBB
⇒aaabSBB
⇒aaabbABB
⇒aaabbaBB
⇒aaabbabB
⇒aaabbabbS
⇒aaabbabbbA
⇒aaabbabbba
最右推导
S⇒aB
⇒aaBB
⇒aaBbS
⇒aaBbbA
⇒aaBbba
⇒aaaBBbba
⇒aaaBbbba
⇒aaabSbbba
⇒aaabbAbbba
⇒aaabbabbba
推导树
三、 考虑以下文法:
1. 证明此文法有二义性。
对字符串
10
推导
推导1:
N⇒SE
⇒DE
⇒1E
⇒10
推导2:
N⇒E
⇒10
对同一字符串存在两个最左推导,所以此文法有二义性
此文法描述的语言是什么(用自然语言表述)。
非负偶数
写出一个新的文法,要求新文法无二义且和上述文法产生相同的语言。
N→SE|E
S→SD|D
E→0|2|4|6|8
D→0|1|2|3|4|5|6|7|8|9
四、 考虑以下文法:
写出每个非终端符号的 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,$}