收藏 分销(赏)

编译原理作业20150515(答案).doc

上传人:s4****5z 文档编号:8819814 上传时间:2025-03-03 格式:DOC 页数:11 大小:350KB 下载积分:10 金币
下载 相关 举报
编译原理作业20150515(答案).doc_第1页
第1页 / 共11页
编译原理作业20150515(答案).doc_第2页
第2页 / 共11页


点击查看更多>>
资源描述
第3章作业【编辑人:陈芳芳】 1. 写一文法,使其语言是偶正整数的集合。要求: (1)允许0打头; (2)不允许0打头。 【解】: (1) 允许0打头且含0的偶正整数集合的文法为: N—>(0|D|E)N|(E|0) D—>1|3|5|7|9 E—>2|4|6|8 (2) 不允许0打头的偶正整数集合的文法为: R—>(D|E)N|E N—>(0|D|E)N|(E|0) D—>1|3|5|7|9 E—>2|4|6|8 (3) 允许0打头的偶正整数集合的文法为: S—>0S|R R—>(D|E)N|E N—>(0|D|E)N|(E|0) D—>1|3|5|7|9 E—>2|4|6|8 2.一个上下文无关文法生成句子abbaa的推导树如下: S A B S a S B B A a Ɛ b b a (1)给出该句子的相应的最左推导,最右推导。 (2)该文法的产生式集合P可能有哪些元素? (3)找出该句子的所有短语,简单短语,句柄。 【解】: (1)最左推导: S=>ABS=>aBS=>aSBBS=>aBBS=>abBS=>abbS=>abbAa=>abbaa 最右推导: S=>ABS=>ABAa=>ABaa=>ASBBaa=>ASBbaa=>ASbbaa=>Abbaa=>abbaa (2) 产生式集合P: S—>ABS | Aa| Ɛ A—>a B—>SBB | b (3) 短语:a , Ɛ , b , bb , aa , abbaa 直接短语:a , Ɛ , b 句柄:a 3、给出生成下述语言的上下文无关文法: (1){anbnambm | n, m >= 0} (2){1n0m1m0n | n, m >= 0} 【解】: (1)S—>AA A—>aAb | Ɛ (2)S—>1S0 | A A—>0A1 | Ɛ 第4章课后作业 1. 构造一个状态数最小的DFA,它接受∑={0,1}上所有倒数第二个字符为1的字符串。(编辑:张超) 解: ① 构造正规式:(0│1)* 1(0│1) ② 由正规式构造NFA: ③ NFA转化为DFA : T0=ε-closure({0})={0} 用子集构造法求DFA状态,T0为初态,T2,T3为终态。 状态 ε-closure(move(Ti,0)) ε-closure(move(Ti,1)) T0={0} {0} {0,1} T1={0,1} {0,2} {0,1,2} T2={0,2} {0} {0,1} T3={0,1,2} {0,2} {0,1,2} 用0,1,2,3代表T0,T1,T2,T3,得到如下DFA : ④最小化DFA : P0=({0,1},{2,3}) P1=({0},{1},{2},{3}) ∴无等价状态。 ∵ 没有找到多余状态,∴ 无多余状态。 ∴ 上图为最小化的DFA。 2、将下图的NFA确定化为DFA,并最小化。(编辑:张超) 解:用子集构造法求DFA状态,T0为初态,T3为终态。 状态 ε-closure(move(Ti,a)) ε-closure(move(Ti,b)) T0={X,1,2} {1,2} {1,2,3} T1={1,2} {1,2} {1,2,3} T2={1,2,3} {1,2,Y} {1,2,3} T3={1,2,Y} {1,2} {1,2,3} 用0,1,2,3代表T0,T1,T2,T3,得到如下DFA : 最小化: ①{0,1,2} {3} ②{0,1} {2} {3} ③{0,1} {2} {3} 0和1是等价的,∴ 得到最小化的DFA 如下 : 第5-7章课后作业(含答案) 1、将文法G[S] 改写为等价的G′[S],使G′[S]不含左递归和左公共因子。G[S]: S→bSAe|bA A→Abd | dc | a 【解】: G[S]:S→bS’ S’→SAe|A A→(dc|a)A’ A’ →bd A’ |ε 2、有文法G[S]:S→ABf A→BbS|e B→dAg|ε 证明文法G是LL(1)文法,并构造预测分析表 【解】: ①计算FIRST、FOLLOW、SELECT集 产生式 FIRST FOLLOW SELECT 左部 右部 S ABf d b e # g d f d b e A BbS d b g d f d b e e e B dAg d b f d ε ε b f 由上表可知:该文法中,所有相同左部不同右部的产生式SELECT集两两相交均为空集,所以该文法为LL(1)文法。 ②构造预测分析表 f b e d g # S ABf ABf ABf A BbS e BbS B ε ε dAg 3、已知文法G[S]:S→(A)│a│b A→AcS│S 构造文法的算符优先矩阵,并判断该文法是否是算符优先文法。 【解】: ①拓展该文法:S’→#S# S→(A)│a│b A→AcS│S ②计算FIRSTVT与LASTVT: FIRSTVT LASTVT S’ # # S ( a b ) a b A c ( a b c ) a b ③计算算符优先关系: # = # ( = ) # < FIRSTVT(S) ( < FIRSTVT(A) c< FIRSTVT(A) LASTVT(S) > # LASTVT(A) > ) LASTVT(A) > c ④构造算符优先矩阵(注:按终结符出现顺序列表): ( ) a b c # ( < = < < < ) > > > a > > > b > > > c < > < < > # < < < = ⑤ 因为该文法G为2型文法,且不含空产生式,没有形如 U®…VW…的产生式,其中V,W∈VN,所以 G 为算符文法;又因为G 中任意两个终结符间至多有一种算符优先关系存在(算符优先矩阵无冲突,见上表),所以G 为算符优先文法。 4、课后习题 P122:4(2) 已知文法:S→ S;G|G G→ G(T)|H H→ a|(S) T→ T+S|S 求句型a(T+S);H;(S) 的短语、直接短语、句柄、素短语与最左素短语。 【解】: ①该句型的对应的语法树如下: ②短语: a T+S H (S) a(T+S) a(T+S);H a(T+S);H;(S) 直接短语: a T+S H (S) 句柄: a 素短语: a T+S (S) 最左素短语:a 5. 给定文法G[A]:A→(A)│a,构造出该文法的LR(1)分析表。 【解】 ①对该文法拓广,得其拓广文法G[S’]: (0) S’→A (1) A→(A) (2) A→a ②计算其LR(1)项目集规范族如下: I0 = { [S’→.A,#], [A→.(A),#], [A→.a,#] } I1 = GOTO(I0,A) = { [S’→A.,#] } I2 = GOTO(I0,() = { [A→(.A),#],[A→.(A),)],[A→.a,)] } I3 = GOTO(I0,a) = { [A→a.,#] } I4 = GOTO(I2,A) = { [A→(A.),#] } I5 = GOTO(I2,() = { [A→(.A),)],[A→.(A),)],[A→.a,)] } I6 = GOTO(I2,a) = { [A→a.,)] } I7 = GOTO(I4,)) = { [A→(A).,#] } I8 = GOTO(I5,A) = { [A→(A.),)] } GOTO(I5,() = I5 ; GOTO(I5,a) = I6 I9 = GOTO(I8,)) = { [A→(A).,)] } ③构造LR(1)分析表: 状 态 Action表 Goto表 ( ) a # A 0 S2 S3 1 1 acc 2 S5 S6 4 3 r2 4 S7 5 S5 S6 8 6 r2 7 r1 8 S9 9 r1 6、证明文法 S ® bB B® B*a B ® a 不是LR(0)文法,而是 SLR(1)文法。 【解】 ①对该文法拓广,得其拓广文法G[S’]: (0) S’→S (1) S ® bB (2) B® B*a (3) B ® a ②计算其LR(0)项目集规范族如下: I0 = closure{ S’→.S } ={ S’→.S , S→. bB } I1 = GOTO(I0,S) = { S’→S.} I2 = GOTO(I0,b) = { S→b.B,B® .B*a,B ® .a } I3 = GOTO(I2,B) = { S→bB.,B® B.*a } I4 = GOTO(I2,a) = { B ® a. } I5 = GOTO(I3,*) = { B® B*.a } I6 = GOTO(I5,a) = { B® B*a. } ③ 因为该文法的LR(0)项目集规范族中有一个项目集I3同时存在移进项目与归约项目,即“移进-归约”冲突,所以不是LR(0)文法。 I3 = { S→bB.,B® B.*a } 而,FOLLOW(S)={ # } Follow(S) ∩ { * } = φ 即可采用Follow集能解决其冲突,所以该文法是SLR(1)文法。 7. 给出下面赋值语句的逆波兰式: x := a*(b+c)-d/e 【解】 x a b c + * d e / – := 8. 把下列语句翻译成四元式(四元式的编号从100开始)。 while A∨B∧~C∨D do if a > b then x := m - k else y := m + k; 【解】 对应的四元式序列为: 100(Jnz, A, , 108 ) 101(J , , , 102 ) 102(Jnz, B, , 104 ) 103(J , , , 106 ) 104(Jnz, C, , 106 ) 105(J , , , 108 ) 106(Jnz, D, , 108 ) 107(J , , , 116 ) 108(J>,a ,b , 110 ) 109(J , , , 113 ) 110(-, m,k , T1 ) 111(:= ,T1 , ,x ) 112(J , , , 100) 113(+, m,k , T2 ) 114(:= ,T2 , ,y ) 115(J , , ,100 ) 116 11
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服