编译原理第五章答案.pdf
人人好公,则天下太平;人人营私,则天下大乱。——刘鹗
第5章自顶向下语法分析方法
第1题
对文法G[S]
S→a||(T)∧
T→T,S|S
(1)给出(a,(a,a))和(((a,a),,(a)),a)∧的最左推导。
(2)对文法G,进行改写,然后对每个非终结符写出不带回溯的递归子程序。
(3)经改写后的文法是否是LL(1)的?给出它的预测分析表。
(4)给出输入串(a,a)#的分析过程,并说明该串是否为G的句子。
答案:
人人好公,则天下太平;人人营私,则天下大乱。——刘鹗
人人好公,则天下太平;人人营私,则天下大乱。——刘鹗
也可由预测分析表中无多重入口判定文法是LL(1)的。
可见输入串(a,a)#是文法的句子。
第3题
已知文法G[S]:
S→MH|a
H→LSo|ε
K→dML|ε
L→eHf
M→K|bLM
判断G是否是LL(1)文法,如果是,构造LL(1)分析表。
人人好公,则天下太平;人人营私,则天下大乱。——刘鹗
第7题
对于一个文法若消除了左递归,提取了左公共因子后是否一定为LL(1)文法?试对下面文
法进行改写,并对改写后的文法进行判断。
(1)A→baB|ε
人人好公,则天下太平;人人营私,则天下大乱。——刘鹗
B→Abb|a
(2)A→aABe|a
B→Bb|d
(3)S→Aa|b
A→SB
B→ab
答案:
(1)先改写文法为:
0)A→baB
1)A→ε
2)B→baBbb
3)B→bb
4)B→a
再改写文法为:
0)A→baB
1)A→ε
2)B→bN
3)B→a
4)N→aBbb
5)N→b
(2)文法:A→aABe|aB→Bb|d
提取左公共因子和消除左递归后文法变为:
0)A→aN
1)N→ABe
2)N→ε
3)B→dN1
4)N1→bN1
5)N1→ε
人人好公,则天下太平;人人营私,则天下大乱。——刘鹗
(3)文法:S→Aa|bA→SBB→ab
第1种改写:
用A的产生式右部代替S的产生式右部的A得:
S→SBa|bB→ab
消除左递归后文法变为:
0)S→bN
1)N→BaN
2)N→ε
3)B→ab
人人好