编译原理试题及答案(二).ppt
《编译原理试题及答案(二).ppt》由会员分享,可在线阅读,更多相关《编译原理试题及答案(二).ppt(31页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、程程 序序 设设 计计 语语 言言 Chapter 4.Chapter 4.自上而下自上而下语法分析语法分析2022/12/222CH.4.CH.4.练习题练习题1(1(P81.)P81.)n1.考虑下面文法考虑下面文法G1:Sa|(T)TT,S|Sn(1)消去消去G1的左递归。然后对每个非终结符的左递归。然后对每个非终结符,写出写出不带回溯的递归子程序不带回溯的递归子程序。n解解(1)消左后的文法消左后的文法G1:Sa|(T)TST T,ST|2022/12/223CH.4.CH.4.练习题练习题1 1(P81.)(P81.)n解解(1)不带回溯的递归子程序不带回溯的递归子程序:Sa|(T)
2、Procedure S;Begin if sym=a or sym=then advance else if sym=(then begin advance;T;if sym=)then advance else error end else error End;4CH.4.CH.4.练习题练习题1 1(P81.)(P81.)n解解(1)不带回溯的递归不带回溯的递归子程序子程序:nTST Procedure T;Begin S;T end;n解解(1)不带回溯的递归不带回溯的递归子程序子程序:nT,ST|procedure T;begin if sym=,then begin advance;
3、S;T end End;5CH.4.CH.4.练习题练习题1(1(P81.)P81.)(2)经改写后的文法是否是经改写后的文法是否是LL(1)的的?给出它的预测分析表。给出它的预测分析表。消左后的文法消左后的文法G1:Sa|(T)TST T,ST|(2)因为因为G1:文法不含左递归文法不含左递归;对对 Sa|(T)FIRST(a)=a,FIRST()=,FIRST(T)=(,集合互不相交且不含集合互不相交且不含;对对 T,ST|FIRST(,ST)=,FIRST()=,其交集为空。其交集为空。但但FIRST(T)=FIRST(,ST)FIRST()=,,然而,然而,FOLLOW(T)=)FIR
4、ST(T)=,,,两者,两者 不不相交。相交。所以,所以,G1是是LL(1)文法。文法。6CH.4.CH.4.练习题练习题1(1(P81.)P81.)(2)构造构造G1的的预测分析表预测分析表:对对Sa|(T)对对TST FIRST(a)=a FIRST(ST)=a,(FIRST()=对对 T,ST|FIRST(T)=(FIRST(,ST)=,预测分析表预测分析表:FOLLOW(T)=)a (),#SSaSS(T)TTSTTSTTST TTT,ST2022/12/227CH4.CH4.1.(3)给出对符号串给出对符号串(a,)的分析过的分析过程程步骤步骤 符号栈符号栈 输入串输入串 动作动作,
5、所用产生式所用产生式 .0#S (a,)#初始;初始;用用 S,(查表查表 1#)T(a,)#S(T),展开展开S 2#)T a,)#匹配匹配(;用用 T,a 查表查表 3#)TS a,)#TST,展开展开T;用用 S,a 查表查表 4#)Ta a,)#S a,展开展开S 5#)T ,)#匹配匹配a;用用T,查表查表 6#)TS,)#T,ST,展开展开T 7#)TS )#匹配匹配,;用用 S,查表查表 8#)T )#S,展开展开S 9#)T )#匹配匹配;用用 T,)查表查表 10#)#T,展展 开开T 11#匹配匹配)12#分析成功分析成功,结束分析结束分析8CH.4.CH.4.练习题练习题
6、3(3(P82.)P82.)n3.下面文法中下面文法中,哪些是哪些是LL(1)的的,说明理由。说明理由。n(1)SABc A a|B b|。n解,解,因为因为 FOLLOW(S)=#文法不含左递归文法不含左递归;FIRST(S)=a,b,c 对对 Aa|候选式的候选式的FIRST集合互不相交集合互不相交;FIRST(A)但但,FOLLOW(A)=b,c FIRST(A)=a,两者不相交。两者不相交。Bb|其候选式的其候选式的FIRST集合互不相交集合互不相交;FIRST(B)但,但,FOLLOW(B)=c FIRST(B)=b,两者也不相交。两者也不相交。所以,文法是所以,文法是LL(1)文法
7、。文法。9CH.4.CH.4.练习题练习题3(3(P82.)P82.)n3.下面文法中下面文法中,哪些是哪些是LL(1)的的,说明理由。说明理由。n(2)SAb A a|B|B b|。n解解(1)因为因为 FOLLOW(S)=#对对 Aa|B|;FIRST(S)=a,b FIRST(B)=b,与与FIRST()=相交相交;所以文法不是所以文法不是LL(1)文法。文法。n解解(2)对对 Aa|因为因为 FIRST(A)=a,b,,FOLLOW(A)=b,FOLLOW和和FIRST两者相交。两者相交。所以文法不是所以文法不是LL(1)文法。文法。10CH.4.CH.4.练习题练习题3(3(P82.
8、)P82.)n3.下面文法中下面文法中,哪些是哪些是LL(1)的的,说明理由。说明理由。n(3)SABBA A a|B b|。n解,解,虽然虽然 FOLLOW(S)=#文法不含左递归文法不含左递归;FIRST(S)=a,b,对对 Aa|,其候选式的,其候选式的FIRST集合不相交集合不相交;对对 Bb|,其候选式的,其候选式的FIRST集合也不相交集合也不相交;但但 对对 Aa|(由 Bb|出发证明也可)FOLLOW(A)=a,b,#,FIRST(A)=a,两者相交。两者相交。所以,文法不是所以,文法不是LL(1)文法。文法。11CH.4.CH.4.练习题练习题3(3(P82.)P82.)n3
9、.下面文法中下面文法中,哪些是哪些是LL(1)的的,说明理由。说明理由。n(4)SaSe|B BbBe|C CcCe|d。n解,解,因为因为 文法不含左递归文法不含左递归;对对 SaSe|B、BbBe|C 和和 CcCe|d 各产生式的候选式的各产生式的候选式的FIRST集合均不相交集合均不相交;即即 FIRST(aSe)FIRST(B)=;FIRST(bBe)FIRST(C)=;FIRST(cCe)FIRST(d)=;FIRST(S)=a,b,c,d ,FIRST(B)=b,c,d FIRST(C)=c,d 均不含均不含。所以,文法是所以,文法是LL(1)文法。文法。程程 序序 设设 计计
10、语语 言言 Chapter 7.Chapter 7.语义分析和中语义分析和中间代码产生间代码产生2022/12/2213P217-1na*(-b+c)后缀式:后缀式:ab-c+*na+b*(c+d/e)后缀式:后缀式:abcde/+*+n-a+b*(-c+d)后缀式:后缀式:a-bc-d+*+nnot A or not(C or not D)后缀式:后缀式:A not C D not or not orn(A and B)or(not C or D)后缀式:后缀式:A B and C not D or or2022/12/2214P217-3n-(a+b)*(c+d)-(a+b+c)的四元式序
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 试题 答案
限制150内