资源描述:
《《编译原理》课后习题答案第5章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《编译原理》课后习题答案第五章第5章自顶向下语法分析方法第1题对文法G[S]S→a
2、∧
3、(T)T→T,S
4、S(1)给出(a,(a,a))和(((a,a),∧,(a)),a)的最左推导。(2)对文法G,进行改写,然后对每个非终结符写出不带回溯的递归子程序。(3)经改写后的文法是否是LL(1)的?给出它的预测分析表。(4)给出输入串(a,a)#的分析过程,并说明该串是否为G的句子。答案:(1)对(a,(a,a)的最左推导为:S(T)(T,S)(S,S)(a,S)(a,(T))(a,(T,S))(a,(S,S))(a,(a,S))(a,(a,a))对(((a,a),∧,(a)
5、),a)的最左推导为:S(T)(T,S)(S,S)((T),S)((T,S),S)((T,S,S),S)((S,S,S),S)(((T),S,S),S)(((T,S),S,S),S)(((S,S),S,S),S)(((a,S),S,S),S)(((a,a),S,S),S)(((a,a),∧,S),S)(((a,a),∧,(T)),S)(((a,a),∧,(S)),S)计算机咨询网(www.jsjzx.net)陪着您1《编译原理》课后习题答案第五章(((a,a),∧,(a)),S)(((a,a),∧,(a)),a)(2)改写文法为:0)S→a1)S→∧2)S→(T)3)T
6、→SN4)N→,SN5)N→ε非终结符FIRST集FOLLOW集S{a,∧,(}{#,,,)}T{a,∧,(}{)}....N{,,ε}.{)}....对左部为N的产生式可知:FIRST(→,SN)={,}FIRST(→ε)={ε}FOLLOW(N)={)}由于SELECT(N→,SN)∩SELECT(N→ε)={,}∩{)}=所以文法是LL(1)的。预测分析表(PredictingAnalysisTable)a∧(),#S→a→∧→(T)T→SN→SN→SNN→ε→,SN也可由预测分析表中无多重入口判定文法是LL(1)的。(3)对输入串(a,a)#的分析过程为:当前输
7、入符剩余输入符所用产生式栈(STACK)(CUR_CHAR)(INOUT_STRING)(OPERATION)#S(a,a)#...S→(T)#)T((a,a)#....#)Ta,a)#...T→SN#)NSa,a)#...S→a#)Naa,a)#....#)N,a)#...N→,SN#)NS,,a)#....计算机咨询网(www.jsjzx.net)陪着您2《编译原理》课后习题答案第五章#)NSa)#...S→a#)Naa)#....#)N)#...N→ε#))#...##可见输入串(a,a)#是文法的句子。计算机咨询网(www.jsjzx.net)陪着您3《编译原理
8、》课后习题答案第五章第3题已知文法G[S]:S→MH
9、aH→LSo
10、εK→dML
11、εL→eHfM→K
12、bLM判断G是否是LL(1)文法,如果是,构造LL(1)分析表。答案:文法展开为:0)S→MH1)S→a2)H→LSo3)H→ε4)K→dML5)K→ε6)L→eHf7)M→K8)M→bLM非终结符FIRST集FOLLOW集S{a,d,b,ε,e}{#,o}........M{d,ε,b}....{e,#,o}......H{ε,e}......{#,f,o}......L{e}.........{a,d,b,e,o,#}K{d,ε}......{e,#,o}.....
13、.对相同左部的产生式可知:SELECT(S→MH)∩SELECT(S→a)={d,b,e,#,o}∩{a}=SELECT(H→LSo)∩SELECT(H→ε)={e}∩{#,f,o}=SELECT(K→dML)∩SELECT(K→ε)={d}∩{e,#,o}=SELECT(M→K)∩SELECT(M→bLM)={d,e,#,o}∩{b}=所以文法是LL(1)的。计算机咨询网(www.jsjzx.net)陪着您4《编译原理》课后习题答案第五章预测分析表:aodefb#S→a→MH→MH→MH→MH→MHM→K→K→K→bLM→KH→ε→LSo→ε→εL→eHfK→ε→dM
14、L→ε→ε由预测分析表中无多重入口也可判定文法是LL(1)的。计算机咨询网(www.jsjzx.net)陪着您5《编译原理》课后习题答案第五章第7题对于一个文法若消除了左递归,提取了左公共因子后是否一定为LL(1)文法?试对下面文法进行改写,并对改写后的文法进行判断。(1)A→baB
15、εB→Abb
16、a(2)A→aABe
17、aB→Bb
18、d(3)S→Aa
19、bA→SBB→ab答案:(1)先改写文法为:0)A→baB1)A→ε2)B→baBbb3)B→bb4)B→a再改写文法为:0)A→baB1)A→ε2)B→bN3)B→a4)N→aBbb5)N→