编译原理第五章答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
编译原理第五章答案本页仅作为文档封面,使用时可以删除
This document is for reference only-rar21year.March
第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|a B→Bb|d
提取左公共因子和消除左递归后文法变为:
0) A→a N
1) N→A B e
2) N→ε
3) B→d N1
4) N1→b N1
5) N1→ε
(3)文法:S→Aa|b A→SB B→ab
第1种改写:
用A的产生式右部代替S的产生式右部的A得:S→SBa|b B→ab
消除左递归后文法变为:
0) S→b N
1) N→B a N
2) N→ε
3) B→a b
也可由预测分析表中无多重入口判定文法是LL(1)的。第2种改写:
用S的产生式右部代替A的产生式右部的S得:
S→Aa|b A→AaB|bB B→ab
消除左递归后文法变为:
0) S→A a
1) S→b
2) A→b B N
3) N→a B N
4) N→ε
5) B→a b
预测分析表: