编译原理第五章答案 5000字.docx
《编译原理第五章答案 5000字.docx》由会员分享,可在线阅读,更多相关《编译原理第五章答案 5000字.docx(17页珍藏版)》请在冰豆网上搜索。
编译原理第五章答案5000字
第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
也可由预测分析表中无多重入口判定文法是ll
(1)的。
第2种改写:
用s的产生式右部代替a的产生式右部的s得:
s→aa|ba→aab|bbb→ab
消除左递归后文法变为:
0)s→aa
1)s→b
2)a→bbn
3)n→abn
4)n→ε
5)b→ab
预测分析表: