(整理完)编译原理网上作业题参考答案20121101_第1页
(整理完)编译原理网上作业题参考答案20121101_第2页
(整理完)编译原理网上作业题参考答案20121101_第3页
(整理完)编译原理网上作业题参考答案20121101_第4页
(整理完)编译原理网上作业题参考答案20121101_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

东北农业大学网络教育学院编译原理作业题参考答案第一章 编译概述多项选择题:1.编译程序各阶段的工作都涉及到(BC)。()A.语法分析 B.表格管理 C.出错处理 D.语义分析E.词法分析 2.编译程序工作时,通常有(ABCE)阶段。()A.词法分析 B.语法分析 C.中间代码生成 D.语义检查 E.目标代码生成 填空题:1解释程序和编译程序的区别在于(是否生成目标程序)。()2编译过程通常可分为5个阶段,分别是(词法分析)、(语法分析)、(中间代码生成)、(代码优化)和(目标代码)生成。()3编译程序工作过程中,第一段输入是(源程序),最后阶段的输出为(目标代码生成)程序。()4编译程序是指将(高级语言编写的)程序翻译成(目标语言)程序的程序。()综合题:1.画出编译程序的总体结构图,简述各部分的主要功能。()解答:编译程序的总体结构如下图所示:词法分析程序:输入源程序,进行词法分析,输出单词符号。语法分析程序:在词法分析的基础上,根据语言的语法规则(方法规则)把单词符号串分解成各类语法单位,并判断输入串是否构成语法上正确的“程序”。中间代码生成程序:按照语义规则把语法分析程序归约(或推导)出的语法单位翻译成一定形式的中间代码,比如说四元式。优化程序:对中间代码进行优化处理。目标代码生成程序:把中间代码翻译成目标语言程序。表格管理模块保存一系列的表格,登记源程序的各类信息和编译各阶段的进展情况。编译程序各阶段所产生的中间结果都记录在表格中,所需信息多数都需从表格中获取,整个编译过程中都在不断地和表格打交道。出错处理程序对出现在源程序中的错误进行处理。此外,编译的各个阶段都可能出现错误。出错处理程序对发现的错误都及时进行处理。 第二章 文法和语言的基本知识多项选择题:1. ABC 2. ACE 3. BCD 4. AC 5. BC 填空题:1文法中的终结符和非终结符的交集是(空集)。词法分析器交给语法分析器的文法符号一定是(终结符),它一定只出现在产生式的(右)部。()2最左推导是指每次都对句型中的(最左)非终结符进行扩展。()3在语法分析中,最常见的两种方法一定是(自上而上)分析法,另一是(自下而上)分析法。()4采用(自上而下)语法分析时,必须消除文法的左递归。()5(语法)树代表推导过程,(分析)树代表归约过程。()6自下而上分析法采用(移进)、归约、错误处理、(接受)等四种操作。()7Chomsky把文法分为(4)种类型,编译器构造中采用 (2型) 和(3型)文法,它们分别产生(上下文无关语言)和(正规语言)语言,并分别用(下推自动机)和(有限)自动机识别所产生的语言。()判断题:1正确 2错误 3错误 4错误 5错误6 错误 7正确 8正确 9错误简答题1句柄:()解答:一个句型的最左直接短语称为该句型的句柄。2素短语:()解答:至少含有一个终结符的素短语, 并且除它自身之外不再含任何更小的素短语。3语法树:()解答:满足下面4个条件的树称之为文法GS的一棵语法树。每一终结均有一标记,此标记为VNVT中的一个符号;树的根结点以文法GS的开始符S标记;若一结点至少有一个直接后继,则此结点上的标记为VN中的一个符号;若一个以A为标记的结点有K个直接后继,且按从左至右的顺序,这些结点的标记分别为X1,X2,Xk,则AX1,X2,Xk, 必然是G的一个产生式。4归约:()解答:我们称直接归约出A,仅当A 是一个产生式, 且、(VNVT)*。归约过程就是从输入串开始,反复用产生式右部的符号替换成产生式左部符号,直至文法开始符。5推导:()解答:我们称A直接推出,即AT,仅当A 是一个产生式,且、(VNVT)*。如果12n,则我们称这个序列是从1至2的一个推导。若存在一个从1n的推导,则称1可推导出n。推导是归约的逆过程。问答题1给出上下文无关文法的定义。()解答:一个上下文无关文法G是一个四元式(VT,VN,S, P),其中:VT是一个非空有限集,它的每个元素称为终结符号;VN是一个非空有限集,它的每个元素称为非终结符号,VTVN=;S是一个非终结符号,称为开始符号;P是一个产生式集合(有限),每个产生式的形式是P,其中,PVN,(VTVN)*。开始符号S至少必须在某个产生式的左部出现一次。 2.文法GS:SaSPQ|abQQPPQbPbbbQbccQcc(1)它是Chomsky哪一型文法?(2)它生成的语言是什么?()解答: (1)由于产生式左部存在终结符号,且所有产生式左部符号的长度均小于等于产生式右部的符号长度,所以文法GS是Chomsky1型文法,即上下文有关文法。(2)按产生式出现的顺序规定优先级由高到低(否则无法推出句子),我们可以得到:SabQabcSaSPQaabQPQaabPQQaabbQQaabbcQ aabbccSaSPQaaSPQPQaaabQPQPQaaabPQQPQaaabPQPQQaaaPPQQQaaabbPqqqaaabbQQQaaabbbcQQaaabbbccQaaabbbccc于是得到文法GS生成的语言L=anbncn|n13按指定类型,给出语言的文法。 L=aibj|ji1的上下文无关文法。()解答: 由L=aibj|ji1知,所求该语言对应的上下文无关文法首先应有SaSb型产生式,以保证b的个数不少于a的个数;其次,还需有SSb或SbS型的产生式,用以保证b的个数多于a的个数;也即所求上下文无关文法GS为:GS:SaSb|Sb|b4有文法G:SaAcB|BdAAaB|cBbScA|b(1)试求句型aAaBcbbdcc和aAcbBdcc的句柄;(2)写出句子acabcbbdcc的最左推导过程。()解答:(1)分别画出对应两句型的语法树,如下图所示句柄:AaBBd 图 语法树(2)句子acabcbbdcc的最左推导如下:STaAcBaAaBcBacaBcBacabcBacabcbScAacabcbBdcAacabcbbdcAacabcbbdcc5对于文法GS:S(L)|aS|a LL, S|S(1)画出句型(S,(a)的语法树。(2)写出上述句型的所有短语、直接短语、句柄和素短语。()解答:(1)句型(S,(a)的语法树如下图所示。 图句型(S,(a)的语法树(2)由上图可知:短语:S、a、(a)、S,(a)、(S,(a);直接短语:a、S;句柄:S;素短语:素短语可由图2-8-3中相邻终结符之间的优先关系求得,即; 因此素短语为a。6. 考虑文法GS,其产生式如下: S(L)|a LL,S|S (a)试指出此文法的终结符号、非终结符号。(b)给出句子(a,(a,a)的分析树。(c)构造句子(a,(a,a)的一个最左推导。(d)构造句子(a,(a,a)的一个最右推导。(e)这个文法生成的语言是什么?()解答:(a) 终结符号为:(,),a, 非终结符号为:S,L 开始符号为:S(b)分析树(c) S (L) (L,S) (S,S) (a,S) (a,(L) (a,(L,S) (a,(S,S) (a,(a,S) (a,(a,a)(d) S (L) (L,S) (L,(L) (L,(L,S) (L,(L,a) (L,(S,a) (L,(a,a) (S,(a,a) (a,(a,a)(e) L(GS) = (1,2,.,n)或a 其中i(1in)是L(GS)。即L(GS)产生一个以a为原子的纯表,但不包括空表。7考虑文法GT:TT*F|FFFP|PP(T)|i证明T*P(T*F)是该文法的一个句型,并指出直接短语和句柄。()解答:首先构造T*P(T*F)的语法树如下图所示。 图 句型T*P(T*F)的语法树 由上图可知,T*P(T*F)是文法GT的一个句型。直接短语有两个,即P和T*F;句柄为P。8试描述下列文法产生的语言L(GS)()S10S0|aAAbA|a解答:L(G)=(10)iabna0i n0 i09已知语言L(G)=abnc|n1 试对该语言构造相应文法。()解答:GZ:ZaBCBBb|b10证明下列文法的二义性 ()1GZ 2GS ZaZbZ|aZ|aSAB AbB|bC|ba BSb|ba|a CBb|b解答:(1) 对于句子aaaba,画出二棵不同的语法树,因而是二义的。(2)GS 对于句子baba,画出二棵不同的语法树,因而是二义的。11有文法GS:SiSeS|iS|i 该文法是否是二义的。试证明之。()解答: 对于句子iiiei,有两棵不同的语法树,故文法是二义的。12文法GT:TaR,RTb|d生成的语言是什么?GT是否为3型文法?()解答:不是3型文法。13.试写出能够描述下列电话号码格式的文法。()67391742010-67391742(010)67391742解答: 文法产生式规则如下: - ( ) DIG DIG DIG DIG DIG DIG DIG DIG DIG DIG DIG DIG DIG14. 试构造生成语言的上下文无关文法。()(1) anbnci | n1,i0 (2) w | wa,b+,且w中a的个数恰好比b多1 解答:(1)把anbnci分成anbn和ci两部分,分别由两个非终结符号生成,因此,生成此文法的产生式为:S ABA aAb|abB cB|(2)令S为开始符号,产生的w中a的个数恰好比b多一个,令E为一个非终结符号,产生含相同个数的a和b的所有串,则产生式如下: S aE|Ea|bSS|SbS|SSbE aEbE|bEaE|15. 下面的二义性文法描述命题演算公式,为它写一个等价的非二义性文法。GS:S - S AND S | S OR S | NOT S | p | q | (S) ()解答:GS:S - S AND A | AA - A OR B | BB - NOT B |p | q | (S)16. 对于下列语言分别写出它们的正规表达式。 ()(1)英文字母组成的所有符号串,要求符号串中顺序包含五个元音。(2)英文字母组成的所有符号串,要求符号串中的字母依照词典顺序排列。解答:(1)令Letter表示除这五个元音外的其它字母。(letter)*A(letter)*E(letter)*I(letter)*O(letter)*U(letter)*(2)A*B*.Z*第三章 词法分析与有穷自动机多项选择题:1. ACE 2. ABD填空题:1确定有限自动机DFA是( NFA )的一个特例。()2若二个正规式所表示的( 正规集 )相同,则认为二者是等价的。()3一个字集是正规的,当且仅当它可由( DFA/NFA)所 (识别) 。()判断题:1 错误 2错误 3 错误 4正确 5正确6正确 7正确 8正确 9错误 10正确综合题:1设M(x,y, a,b, f,x,y)为一非确定的有限自动机,其中f定义如下:f(x,a)x,yf(a,b)yf(y,a) f(y,b)x,y 试构造相应的确定有限自动机M。()解答:对照自动机的定义M=(S,f,S0,Z), 由f的定义可知f(x,a)、f(y,b)均为多值函数,所以是一非确定有限自动机,先画出NFAM相应的状态图,如图下所示。 图NFAM用子集法构造状态转换矩阵下表所示。 将转换矩阵中的所有子集重新命名而形成下表所示的状态转换矩阵。 表状态转换矩阵即得到M(0,1,2, a,b, f,0, 1,2),其状态转换图如下图所示。将上图的DFAM 最小化。首先,将M的状态分成终态组1,2与非终态组0;其次,考察1,2。由于1,2a=1,2b=21,2, 所以不再将其划分了,也即整个划分只有两组0,1,2:令状态1代表1,2,即把原来到达2的弧都导向1,并删除状态2。 最后,得到如下图所示化简DFAM。 图化简后的DFAM 2对给定正规式b*(d|ad)(b|ab)+,构造其NFAM。()解答:首先用A+=AA*改造正规式得:b*(d|ad)(b|ab)(b|ab)*; 其次,构造该正规式的NFAM,如下图所示。 图 NFAM3字母表a,b上的正规式R=(ba|a)*,构造R的相应DFA。()解答:IIaIbx1y1y21y1y221yIIaIb123223324请写出在=(a,b)上,不是a开头的,但以aa结尾的字符串集合的正规表达式,并构造与之等价状态最少的DFA。()解答:根据题意,不以a开头就意味着以b开头,且以aa结尾的正规式为:b(a|b)* aa根将图1所示的NFA确定化,如图2所示。NFA将图1所示的NFA确定化,如图 从图2可知已为最简状态,由于开始状态0只能输入字符b而不能与状态1合并,而状态2和状态3面对输入符号的下一状态相同,但两者一为非终态、一为终态,故也不有合并,故图2所示的状态转换矩阵已是最简的DFA,如图3所示据正规式画出NFA,如图1所示。 图2状态转换矩阵 图3最简DFA5. 人运狼、羊、菜过河,一次运一件,不让羊吃掉菜,也不让狼吃掉羊,画出渡河的状态转换图。可否将其抽象为一个有限自动机。()解答:先写出渡河的方法,串中对象顺序为人来回渡河时所运的货物的顺序:羊空菜羊狼空羊羊空狼羊菜空羊现给出一个NFA:M=(,Q,0,9,)其中=羊,空,菜,狼Q=0,1,2,3,4,5,6,7,8,9转形函数(0,羊)=1,(1,空)=2,(2,菜)=3,(2,狼)=5(3,羊)=4,(5,羊)=6,(4,狼)=7,(6,菜)=7(7,空)=8,(8,羊)=96对于正规表达式 (a|b)*a(a|b) 构造最小状态的DFA。()解答:NFA M:DFA M:化简: 中的DFA M中没有等价状态,因此为最小化的DFA M。第四章 语法分析多项选择题:1. AD 2. CE 3. ACDE 4. CE 5. ABCE 6. ACDE 填空题:1对于一个文法,如果能够构造 (LR(0)文法) 。使得它的 (每个入口) 均是唯一确定的,则称该文法为LR文法。()2字的前缀是指该字的 (任意首部) 。()3活前缀是指 (规范句型) 的一个前缀,这种前缀不含 (句柄) 之后的任何符号。()4在LR分析过程中,只要 (输入串) 的已扫描部分保持可归约成一个 (活前缀) ,则扫描过的部分正确。()5将识别 (活前缀) 的NFA确定化,使其成为以 (项目集合) 为状态的DFA,这个DFA就是建立 (LR分析算法) 的基础。()6A称为 (归约) 项目;对文法开始符S为 (接受) 项目;若a为终结符,则称Aa为 (移进) 项目;若B为非终结符,则称Aa为 (待约) 项目。()7LR(0)分析法的名字中“L”表示 (自左至右分析) ,“R”表示 (采用最右推导的逆过程即最左归约) ,“0”表示 (向右查看0个字符) 。()判断题:1正确简答题:综合题:1构造下面文法的LL(1)分析表。()DTLTint | realLid RR, id R | 解答:LL(1)分析表见下表。分析虽然这个文法很简单,我们还是从求开始符号集合和后继符号集合开始。FIRST(D)=FIRST(T)=int, realFOLLOW(D)=FOLLOW(L) =#FIRST(L)=idFOLLOW(T)=idFIRST(R)=,, FOLLOW(R)=#有了上面每个非终结符的FIRST集合,填分析表时要计算一个产生式右部的FIRST()就不是件难事了。填表时唯一要小心的时,是产生式R右部的一个开始符号,而#在FOLLOW(R)中,所以R填在输入符号#的栏目中。表LL(1)分析表2下面文法GS是否为LL(1)文法?说明理由。() SAB|PQxAxyBbc PdP| QaQ|解答:该文法不是LL(1)文法,见下面分析中的说明。分析只有三个非终结符有两个选择。(1)P的两个右部dP和的开始符号肯定不相交。(2)Q的两个右部aQ和的开始符号肯定不相交。(3)对S来说,由于xFIRST(AB),同时也有xFIRST(PQx)(因为P和Q都可能为空)。所以该文法不是LL(1)文法。3设有以下文法:()GS:SaAbDe|dABSD|eBSAc|cD|DSe|(1)求出该文法的每一个非终结符U的FOLLOW集。(2)该文法是LL(1)文法吗?(3)构造CS的LL(1)分析表。解答:(1)求文法的每一个非终结符U的FOLLOW集的过程如下:因为:S是识别符号,且有ABSD、BSAc、DSe,所以FOLLOW(S)应包含FIRST(D)FIRST(Ac) FIRST(e) #=a,da,d,c,ee#=a,c,d,e#又因为ABSD和D,所以FOLLOW中还包含FOLLOW(A)。因为SaAbDe和BSAc,所以FOLLOW(A)=FIRST(bDe)FIRST(c)=b,c综合、得FOLLOW(S)=a,d,c,e,#a,b,c,d,e,#因为ABSD,所以 FOLLOW(B)=FIRST(SD)=a,d 因为SaAbDe | d、ABSD| e和BSAc | cD,所以FOLLOW(D)=FIRST(e)FOLLOW(A)FOLLOW(B) =eb,ca,d=a,b,c,d,e(2)GS不是LL(1)文法。因为产生式BSAc|cD|中FIRST(SAc)FOLLOW(B)=a,d(3)构造GS的LL(1)分析表。按照LL(1)分析表的构造算法构造方法GS的LL(1)分析表如下表所示。表GS的LL(1)分析表4将文法GV改造成为LL(1)的。()GV:VN|NEEV|V+ENi解答:对文法GV提取公共左因子后得到文法:GV:VNAA|EEVBB|+ENi求出文法GV中每一个非终结符号的FIRST集:FIRST(V)=iFIRST(A)=,FIRST(E)=iFIRST(B)=+,FIRST(N)=i求出文法GV中每一个非终结符号的FOLLOW集:FOLLOW(V)=#FIRST(B)FOLLOW(E)=#,+,FOLLOW(A)= FOLLOW(V)=+,#FOLLOW(E)= FIRST()FOLLOW(B)= FIRST()FOLLOW(E)=FOLLOW(B)= FOLLOW(E)= FOLLOW(N)= FIRST(A)FOLLOW(V)=,+,#可以看到,对文法GV的产生式A|E,有FIRST(E)FOLLOW(A)=+,#=对产生式B|+E,有FIRST(+E)FOLLOW(B)=+=而文法的其他产生式都只有一个不为的右部,所以文法GV是LL(1)文法。5已知文法:() GA: AaAa|(1)该文法是LL(1)文法吗?为什么?(2)若采用LL(1)方法进行语法分析,如何得到该文法的LL(1)分析表?(3)若输入符号串“aaaa”,请给出语法分析过程。解答:(1)因为产生式AaAa|有空产生式右部,而FOLLOW(A)=#FIRST(a)=a, #造成FIRST(A)FOLLOW(A)=A,a, #所以该文法不是LL(1)文法。(2)若采用LL(1)方法进行语法分析,必须修改该文法。因该文法产生偶数(可以为0)个a,所以得到文法GA:AaaA|此时对产生式AaaA|,有FOLLOW(A)=#FOLLOW(A)=#,因而FIRST(A)FOLLOW(A)=a,#=所以文法GA是LL(1)文法, 按LL(1)分析表构造算法构造该文法的LL(1)分析表如下表所示。 表文法GA的LL(1)分析表 (3)若采用LL(1)方法进行语法分析, 对符号串“aaaa”的分析过程如下表所示。 表对符号串“aaaa”的分析过程6设有文法GS为:()Sa|b|(A)ASdA|S(1)完成下列算符优先关系表,见下表,并判断GS是否为算符优先文法。 表算符优先关系表 (2)给出句型(SdSdS)的短语、简单短语、句柄、素短语和最左素短语。(3)给出输入串(adb)#的分析过程。解答:(1)先求文法GS的FIRSTVT集和LASTVT集:由Sa|b|(A)得:FIRSTVT(S)=a,b,( );由ASd得:FIRSTVT(A)=d;又由AS得:FIRSTVT(S)FIRSTVT(A),即FIRSTVT(A)=d,a,b,(;由Sa|b|(A)得;LASTVT(S)=a,b,;由AdA得:LASTVT(A)=d,又由AS得:LASTVT(S) LASTVT(A),即LASTVT(A)=d,a,b,)。构造优先关系表方法如下:对Pab,或PaQb,有ab;对PaR,而bFIRSTVT(R),有ab;对PRb,而aFIRSTVT(R),有ab。由此得到:由S(A)得:();由S(A得:(FIRSTVT(A),即:(d,(a,(b,(;由AdA得:dFIRSTVT(A),即:dd,da,db,d(; 由SA)得,LASTVT(A),即:d),a),b),);由ASd得:LASTVT(S)d,即:ad,bd,)d;此外,由#S#得:#;由#FIRSTVT(S)得:#a,#b,#(;由LASTVT(S)#得:d#,a#,b#,)#。最后得到算符优先关系表,见下表。 表算符优先关系表 由上表可以看出,任何两个终结符之间至少只满足、三种优先关系之一,故GS为算符优先文法。(2)为求出句型(SdSdS)的短语、简单短语、句柄,我们先画出该句型对应的语法树,如下图所示。由图得到:短语:S,SdS,SdSdS,(SdSdS)简单短语(即直接短语):S句柄(即最左直接短语):S素短语:SdS,它同时也是该句型的最左素短语。 图句型(SdSdS)的语法树(3)输入串(adb)#的分析过程见下表。 表输入串(adb)#的分析过程7设有文法GS为:()Sa|b|(A)ASdA|S(1)完成下列算符优先关系表,见下表,并判断GS是否为算符优先文法。 表算符优先关系表 (2)给出句型(SdSdS)的短语、简单短语、句柄、素短语和最左素短语。(3)给出输入串(adb)#的分析过程。解答:(1)先求文法GS的FIRSTVT集和LASTVT集:由Sa|b|(A)得:FIRSTVT(S)=a,b,( );由ASd得:FIRSTVT(A)=d;又由AS得:FIRSTVT(S)FIRSTVT(A),即FIRSTVT(A)=d,a,b,(;由Sa|b|(A)得;LASTVT(S)=a,b,;由AdA得:LASTVT(A)=d,又由AS得:LASTVT(S) LASTVT(A),即LASTVT(A)=d,a,b,)。构造优先关系表方法如下:对Pab,或PaQb,有ab;对PaR,而bFIRSTVT(R),有ab;对PRb,而aFIRSTVT(R),有ab。由此得到:由S(A)得:();由S(A得:(FIRSTVT(A),即:(d,(a,(b,(;由AdA得:dFIRSTVT(A),即:dd,da,db,d(; 由SA)得,LASTVT(A),即:d),a),b),);由ASd得:LASTVT(S)d,即:ad,bd,)d;此外,由#S#得:#;由#FIRSTVT(S)得:#a,#b,#(;由LASTVT(S)#得:d#,a#,b#,)#。最后得到算符优先关系表,见下表。 表算符优先关系表 由上表可以看出,任何两个终结符之间至少只满足、三种优先关系之一,故GS为算符优先文法。(2)为求出句型(SdSdS)的短语、简单短语、句柄,我们先画出该句型对应的语法树,如下图所示。由图得到:短语:S,SdS,SdSdS,(SdSdS)简单短语(即直接短语):S句柄(即最左直接短语):S素短语:SdS,它同时也是该句型的最左素短语。 图句型(SdSdS)的语法树(3)输入串(adb)#的分析过程见下表。 表输入串(adb)#的分析过程8对于文法GS: SAS|bASA|a(1)列出所有LR(0)项目;(2)列出构成文法LR(0)项目集规范族。()解答:首先将文法G拓广为GS:SSSAS|bASA|a(1)文法GS的LR(0)项目是:1SS5SAS 9ASA 2SS 6Sb10ASA3SAS 7Sb 11Aa4SAS 8ASA 12Aa(2)用-CLOSURE(闭包)办法构造文法G的LR(0)项目集规范族如下: I0:1SS I3:9ASA I6:12Aa3SAS 8ASA I7: 7Sb8ASA 3SAS 11Aa 6Sb6Sb 11AaI1:2SS I4:10.ASA9ASA 4.SAS 8ASA 3.SAS 11Aa 6.Sb3.SAS 8.ASA 6.Sb 11.AaI2:4SASI5: 5SAS3SAS 9ASA 6Sb 8ASA 8ASA 11Aa 11Aa 3SAS 6Sb注意:I1中的SS和ASA是由状态I0中的1和3读入一个S字符后得到的下一个项目;,而I4中的ASA和AAS则是由I3中的9和3读入一个A字符后得到的下一个项目;I5中的SAS和ASA 则是由I4中的4和8读入一个S字符后得到的下一个项目。状态全体构成了文法G的LR(0)规范族。9有文法GS Sa|(T) TT,S|S 该文法是否是LL(1)文法,若不是,请进行改写。并给出它的分析表。()解答:不是。TSTTT,S|SFIRST(S)=FIRST(T)=a,(FIRST(T)=,, FOLLOW(S)=#,,)FOLLOW(T)=FOLLOW(T)= )分析表如下: 10有文法GS(1)SA(2)SB(3)AaAb(4)Ac(5)BaBb(6)Bd试构造相应的LR(0)项目集规范族及相应的分析表。()解答:11. 已知文法GS,其产生式如下: S(L)|a L L,S|S 从GS中消除左递归,并为之构造一个非递归预测分析器LL(1)分析表。请说明在句子(a,(a,a)上的分析器的动作。 ()答:将所给文法消除左递归得G:S (L)|a L SL L ,SL | 实现预测分析器的不含递归调用的一种有效方法是使用一张分析表和一个栈进行联合控制,下面构造预测分析表:根据文法G有FIRST(s) = ( , a )FOLLOW(S) = ) , , , $ FIRST(L) = ( , a )FOLLOW(L) = ) FIRST(L) = , FOLLOW(L) = ) 按以上结果,构造预测分析表M如下:文法G是LL(1)的,因为它的LL(1)分析表不含多重定义入口。预测分析器对输入符号串(a, (a, a)做出的分析动作如下:12. 证明下面文法是SLR(1)文法,并构造其SLR分析表。EE+T|T TTF|F FF*|a|b ()答:该文法的拓广文法G为 (0) E E(1) E E+T(2) E T(3) T TF(4) T F(5) F F*(6) F a(7) F b其LR(0)项目集规范族和goto函数(识别活前缀的DFA)如下:I0 = EE, EE+T, ET, TTF, TF, FF*,Fa, FbI1 = EE, EE+TI2 = ET, TTF, FF*, Fa, FbI3 = TF, FF*I4 = FaI5 = FbI6 = EE+T, TTF, TF, FF*, Fa, FbI7 = TTF, FF*I8 = FF*I9 = EE+T, TTF, FF*, Fa, Fb求FOLLOW集:FOLLOW(E)=, FOLLOW(T)=, , a, bFOLLOW(F)=, , a, b, *构造的SLR分析表如下: 显然,此分析表无多重定义入口,所以此文法是SLR文法第五章 语法制导翻译技术和中间代码生成多项选择题:1. ACDE 2. BCD 3. BC 4. BD 5. BCE 填空题:1中间代码有 (逆波兰记号)、(树形表示)、(三元式)、(四元式) 等形式,生成中间代码主要是为了使 (目标代码的优化容易实现) 。()2语法制导翻译既可以用来产生 (中间) 代码,也可以用来产生 (目标) 指令,甚至可用来对输入串进行 (解释执行) 。()3当源程序中的标号出现“先引用后定义”时,中间代码的转移地址须持 (标号定义) 时才能确定,因而要进行 (回填) 。()4文法符号的属性有两种,一种称为 (继承属性) ,另一种称为 (综合属性) 。()5后缀式abc-/所代表的表达式是( a/(b-c) ),表达式(a-b)*c可用后缀式( ab-c* )表示。()6用一张 (间接码表) 辅以 (三元式表) 的办法来表示中间代码,这种表示法称为间接三元式。()问答题:1给出下列表达式的逆波兰表示(后缀式):()a*(-b+c)(AB)(CDE)解答:abc+*; ABCDE2写出算术表达式:A+B*(C-D)+E/(C-D)N的:()四元式序列;三元式序列;间接三元式序列解答: 3写出下面算术表达式E值的语义描述: ()(1)EE1+E2(2)E0(3)E1解答:E.Val:=E.Val+E2.ValE.Val:=0E.Val:=14给出下列表达式的逆波兰表式。()(1)ab+cada+be(2)a=cb=d(3)(a*b-c)*n+b*(a+d/e)解答:(1)abc+adab+e

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论