ImageVerifierCode 换一换
格式:DOC , 页数:206 ,大小:2.56MB ,
资源ID:11306779      下载积分:25 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/11306779.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(编译原理题库——简答题.doc)为本站上传会员【知****运】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

编译原理题库——简答题.doc

1、编译原理A 1. 简要说明语义分析的基本功能。 2. 考虑文法 G[S]: S → (T) | a+S | a T → T,S | S 消除文法的左递归及提取公共左因子。 3试为表达式 w+(a+b)*(c+d/(e-10)+8) 写出相应的逆波兰表示。 4. 按照三种基本控制结构文法将下面的语句翻译成四元式序列: while (A

2、答:语义分析的基本功能包括: 确定类型、类型检查、语义处理和某些静态语义检 查。 2解:消除文法G[S]的左递归: S→(T) | a+S | a T→ST′ T′→,ST′| ε 提取公共左因子: S→(T) | aS′ S′→+S | ε T→ST′ T′→,ST′| ε 3答:w a b + c d e 10 - / + 8 + * + 4答:该语句的四元式序列如下(其中E1、E2和E3分别对应A<C∧B<D、A≥1和A≤D,并且关系运算符优先级高): 100 (j<,A,C,102) 101 (j,_,_,113) 102 (j<,

3、B,D,104) 103 (j,_,_,113) 104 (j=,A,1,106) 105 (j,_,_,108) 106 (+, C, 1, C) 107 (j,_,_,112) 108 (j≤,A,D,110) 109 (j,_,_,112) 110 (+, A, 2, A) 111 (j,_,_,108) 112 (j,_,_,100) 113 5答:证明:       由文法G[S]:S→aSb|Sb|b,对句子aabbbb对应的两棵语法树为:    因此,文法G[S]为二义文法。    编译原理B 1. 什么是句子? 什么是

4、语言 ? 2. 写一文法,使其语言是偶正整数的集合,要求:    (1)允许0打头;    (2) 不允许0打头。 3. 已知文法 G[E] 为:     E→T|E+T|E-T     T→F|T*F|T/F     F→ ( E ) |i ① 该文法的开始符号(识别符号)是什么? ② 请给出该文法的终结符号集合 VT 和非终结符号集合 VN 。 ③ 找出句型 T+T*F+i 的所有短语、简单短语和句柄。 4. 构造正规式相应的 NFA : 1(0|1)*101。 5. 写出表达式(a+b*c)/(a+b)-d的逆波兰表示和三元式序列。 B卷答案 1

5、答:(1)设G是一个给定的文法,S是文法的开始符号,如果S x(其中x∈VT*),则称x是文法的一个句子。 (2)设G[S]是给定文法,则由文法G所定义的语言L(G)可描述为: L(G)={x│S x,x∈VT*} 。 2解:(1)G[S]=({S,P,D,N},{0,1,2,…,9},P,S) P: S->PD|D P->NP|N D->0|2|4|6|8 N->0|1|2|3|4|5|6|7|8|9 (2)G[S]=({S,P,R,D,N,Q },{0,1,2,…,9},P,S) P: S->PD|P0|D P->NR|N R->QR|Q

6、D->2|4|6|8 N->1|2|3|4|5|6|7|8|9 Q->0|1|2|3|4|5|6|7|8|9 3解:① 该文法的开始符号(识别符号)是E。 ②该文法的终结符号集合VT={+、-、*、/、(、)、i}。 非终结符号集合VN={E、T、F}。 ③句型T+T*F+I的短语为i、T*F、第一个T、T+T*F+i; 简单短语为i、T*F、第一个T;句柄为第一个T。 4解:1(0|1)*101对应的NFA为 5解:逆波兰表示:      abc*+ab+/d-           三元式序列:       ① (*,b,c)       ② (+,a,①)    

7、   ③ (+,a,b)       ④ (/,②,③)       ⑤ (-,④,d) 编译原理C 1.(10分) 对下列错误信息,请指出可能是编译的哪个阶段(词法分析、语法分析、语义分析、代码生成)报告的。 (1) else 没有匹配的if (2) 数组下标越界 (3) 使用的函数没有定义 (4) 在数中出现非数字字符 (5)函数调用时实参与形参类型不一致。 2.(15分) 构造一个DFA,它接收Σ={0,1}上所有满足如下条件的字符串:每个1 都有0 直接跟在右边。并给出该语言的正规式 3.(10分) 为下面的语言设计文法: (1) {ambn, 其中m ³ n }

8、 (2) {w | wÎ{a, b}*,w的长度为奇数} 证明 E + T*(id)是文法的一个句型,指出该句型的所有短语、直接短语和句柄。 5.(15分) 给定文法: E → E + T | E - T |T T → T * F | T / F |F F → (E) | id C卷答案 1答案:(每小题2分) (1) 语法分析 (2) 语法分析 (3) 语义分析 (4) 词法分析 (5) 语义分析 2答案: 按题意相应的正规表达式是(0*10)*0*,或0*(0 | 10)*0* ,构造相应的DFA。 3答案:(每小题 10分) (1)考虑在先产生同

9、样数目的a,b,然后再生成多余的a。以下是一种解法: S → aSb | aS | ε (2) A → aB | bB B → aA | bA | ε 5证明 E + T*(id)是文法的一个句型,指出该句型的所有短语、直接短语和句柄。 答:, 短语:id,(id), T*(id), E+ T*(id)。 直接短语:id。 句柄是id。 编译原理D卷 3、何谓“标识符”,何谓“名字”,两者的区别是什么? 4、令 +、* 和↑代表加、乘和乘幂,按如下的非标准优先级和结合性质的约定,计算1+1*2↑*1↑2的值: (1)、优先顺序(从高至低)为+、* 和↑,同级优先采用左

10、结合。 (2)、优先顺序为↑、+、*,同级优先采用右结合。 6、令文法G6为N→D∣ND,D→0∣1∣2∣3∣4∣5∣6∣7∣8∣9 (1)、G6的语言L(G6)是什么? (2)、给出句子0127、34和568的最左推导和最右推导。 7、写一个文法,使其语言是奇数集,且每个奇数不以0开头。 8、令文法为E→T∣E+ T∣E-T T→F∣T*F∣T/F F→(E)∣i (1) 给出i+i*i、i*(i+i)的最左推导和最右推导; 给出i+i+i、i+i*i和i-i-i的语法树。 9、证明下面的文法是二义的:S→iSeS∣iS∣i 11、给出下面语言的

11、相应文法: L1={anbnci∣n≥1,i≥0}, L2={aibncn∣n≥1,i≥0} L3={anbnambm∣n,m≥0} L4={1n0m1m0n∣n,m≥0} 3解:标识符是高级语言中定义的字符串,一般是以英文字母(包括大小写字母)或下划线开头的,由数字、字母和下划线组成的一定长度的字符串,它只是一个标志,没有其他含义。名字是用标识符表示的,但名字不仅仅是一个字符串,它还具有属性和值。 4解: (1)、1+1*2↑*1↑2 = 2*2↑*1↑2 = 4↑*1↑2 = 4↑↑2 = (2)、1+1*2↑*1↑2 = 6解: (1)、L(G6)是

12、由0到9这10个数字组成的字符串。 (2)、句子0127、34和568的最左推导: N=>ND=>NDD=>NDDD=>DDDD=>0DDD=>01DD=>012D=>0127 N=>ND=>DD=>3D=>34 N=>ND=>NDD=>DDD=>5DD=>56D=>568 句子0127、34和568的最右推导: N=>ND=>N7=>ND7=>N27=>ND27=>N127=>D127=>0127 N=>ND=>N4=>D4=>34 N=>ND=>N8=>ND8=>N68=>D68=>568 7解: G(S):A→2∣4∣6∣8∣D

13、 B→A∣0 C→CB∣A D→1∣3∣5∣7∣9 S→CD∣D 8解: (1) 最左推导为: E => E+T => T+T => F+T => i+T => i+T*F => i+F*F => i+i*F => i+i*i E => T => T*F => F*F => i*F => i*(E) => i*(E+ T) => i*(T+ T) => i*(F+ T) => i*(i+ T) => i*(i+ F) => i*(i+ i) 最右推导为: E =>E+T =>E+T*F =>E+T*i =>E+F*i =>E+i

14、i => T+i*i => F+i*i => i+i*i E => T => T*F => F*F => F*(E) => F*(E+T) => F*(E+ F) => F*(E+ i) => F*(T+i) => F*(F+i) => F*(i+i) => i*(i+ i) (2) 语法树: T E + E F i + T F i i E + T E F i * T F i T F i E E - T E F i T F i - F i 9解:考虑句子iiiei,存在如下两个最右推导: S=>i

15、SeS=>iSei=>iiSei=>iiiei S=>iS=>iiSeS=>iiSei=>iiiei 由此该文法是二义的。 11解: L1的文法:S→AC;A→aAb∣ab;C→cC∣ε L2的文法:S→AB;A→aA∣ε;B→bBc∣bc L3的文法:S→AB;A→aAb∣ε;B→aBb∣ε L4的文法: S→1S0∣A; A→0A1∣ε; 编译原理E卷 1、 令A、B和C是任意正规式,证明以下关系成立: A∣A=A (A*)*= A* A*=ε∣A A* (AB)*A=A(BA)* (A∣B)*=(A*B*)*=(A*∣B*)* A

16、b∣aA当且仅当A=a*b 2、 构造下列正规式相应的DFA 1(0∣1)*101 1(1010*∣1(010)*1)*0 0*10*10*10* (00∣11)*((01∣10)(00∣11)*(01∣10)(00∣11)*)* 3、 给出下面正规表达式: (1) 以01结尾的二进制数串; (2) 能被5整除的十进制整数; 包含奇数个1或奇数个0的二进制数串; 4、 对下面情况给出DFA及正规表达式: (1){0,1}上不含子串010的所有串。 5、 将图3.18的(a)和(b)分别确定化和最小化。 1 0 a,b a a (a)

17、2 0 b a a (b) 1 5 4 3 b b b b b a a a a a 6、 构造一个DFA,它接受∑={0,1}上所有满足如下条件的字符串:每个1都有0直接跟在右边。、 7、 给定右线性文法G: S→0S∣1S∣1A∣0B A→1C∣1 B→0C∣0 C→0C∣1C∣0∣1 求出一个与G等价的左线性文法。 文法G对应的状态转换图如下所示: S Z 1 0 0,1 B C A 1 0,1 0,1 0 0 1 E卷答案 1证明: (1)、A∣A=A L(A∣A)=L

18、A)∪L(A)=L(A),所以有A∣A=A。 (2)、(A*)*= A* (3)、A*=ε∣A A* 通过证明两个正规式所表示的语言相同来证明两个正规式相等。 L(ε∣A A*)=L(ε)∪L(A)L(A*)= L(ε)∪L(A)(L(A) )* =L(ε)∪L(A)((L(A))0∪(L(A))1∪(L(A))2∪(L(A))3∪…) =L(ε)∪(L(A))1∪(L(A))2∪(L(A))3∪(L(A))4∪… =(L(A))*=L(A*) 即:L(ε∣A A*)=L(A*),所以有:A*=ε∣A A* (4)、(AB)*A=A(B

19、A)* 利用正规式的分配率和结合律直接推导。 (AB)*A=((AB)0∣(AB)1∣(AB)2∣(AB)3∣…)A =εA∣(AB)1A∣(AB)2A∣(AB)3A∣… =Aε∣A (BA)1∣A (BA)2∣A (BA)3∣… =A(ε∣(BA)1∣(BA)2∣(BA)3∣…) =A(BA)* 即:(AB)*A=A(BA)* (5)、(A∣B)*=(A*B*)*=(A*∣B*)* 证明:先证(A∣B)*=(A*B*)* 因为L(A)L(A) *L(B) *,L(B) L(A) *L(B) * 故:L(A) ∪L(B) L(A) *L(B

20、) * 于是由本题第二小题结论可知(L(A)∪L(B)) *(L(A) *L(B)*)* ① 又L(A)L(A)∪L(B), L(B) L(A)∪L(B) 故:L(A)*(L(A)∪L(B))* L(B)*(L(A)∪L(B))* 因此有:L(A)*L(B)* (L(A)∪L(B))* (L(A)∪L(B))*=( (L(A)∪L(B))*) 2 故(L(A)*L(B)*)*((L(A)∪L(B))*)* 由本题第二小题得: ((L(A)∪L(B))*)*= (L(A)∪L(B)) * 故得: (L(A)*L(B)*)*(L(A)∪L(B)) *

21、 ② 则由①②得: (L(A)∪L(B)) *=(L(A)*L(B)*)* 由于L((A*B*))*=(L(A*B*))*=(L(A*)L(B*))*=(L(A)*L(B)*)* 即有(L(A)∪L(B))*=L((A*B*))* ③ 而(A|B)*对应的语言为(L(A)∪L(B))*,且(A*B*)*对应的语言为L((A*B*))* 则根据③得(A|B)*=(A*B*)* 再证:(A*|B*)*=(A*B*)* 因为:A,B是任意正规式,由以上结论得: (A*|B*)*=((A*)*(B*)*)* 又由本题第二小题目的结论可得:(A*

22、A*,(B*)*=B* 因此,(A*|B*)*=(A*B*)* 综合上述两种结论,最后得:(A∣B)*=(A*B*)*=(A*∣B*)* 2解: (1)、1(0∣1)*101 第一步:根据正规式构造NFA,先引入初始状态X和终止状态Y: X 1(0∣1)*101 Y 再对该转换图进行分解,得到分解后的NFA如下图: X 1 2 3 4 5 Y 1 ε 1 0 1 ε 0 1 第二步:对NFA进行确定化,获得状态转换矩阵: 状态 0 1 {X} Ø {1,2,3} {1,2,3} {2,3} {2,3,

23、4} {2,3} {2,3} {2,3,4} {2,3,4} {2,3,5} {2,3,4} {2,3,5} {2,3} {2,3,4,Y} {2,3,4,Y} {2,3,5} {2,3,4} 根据转换矩阵获得相应的DFA: 0 1 2 3 4 1 0 0 0 1 0 1 1 1 5 0 1 第三步:化简该DFA,获得最简的DFA即为所求。 首先根据是否终止状态将所有状态分为两个集合{0,1,2,3,4}和{5},这里集合{5}已经不可划分,只需考虑集合{0,1,2,3,4}。 {0,1,2,3,4}0={2,4,-

24、},{0,1,2,3,4}1={1,3,5} 因为{1,3,5}和{2,4,-}不在一个集合里面,所以需要对集合{0,1,2,3,4}进行进一步的划分,检查其中的所有状态。状态0不能接受字符0,需要把状态0划分出来;另外,只有状态4读入字符1后进入状态5,因此将状态4划分出来,划分的结果为4个集合:{0},{1,2,3},{4},{5}。 检查集合{1,2,3},{1,2,3}0={2,4},不属于同一个集合,因此要对集合{1,2,3}进行进一步划分,划分结果为5个集合:{0},{1,2},{3},{4},{5}。 检查集合{1,2},{1,2}0={2},{1,2}1=3,不需要

25、进行进一步划分。所以最终划分结果为5个集合:{0},{1,2},{3},{4},{5}。 所以,最终所求DFA如下图示: 0 1 3 4 1 0 0 1 0 1 1 5 0 1 3解: (1)以01结尾的二进制数串; (1︱0)*01。 (2)能被5整除的十进制整数; (1︱2︱3︱4︱5︱6︱7︱8︱9) (0︱1︱2︱3︱4︱5︱6︱7︱8︱9)*(0︱5)(0︱5)。 (3)包含奇数个1或奇数个0的二进制数串; 1*0(1︱01*0)*︱0*1(0︱10*1)*。 4解: (1)、直接写出满足条件的正规表达式。考虑满足条件

26、的字符串中的1:在串的开始部分可以有0个或多个1,串的尾部也可以有0个或多个1,但串的中间只要出现1则至少在两个以上,所以满足条件的正规表达式为1*(0∣111*)*1*。 所求的DFA如下图所示: A S 1 0a 1 1 B 0 5 解: (1)、图(a)中为一个NFA,所以需要先对它进行确定化,得到DFA,然后再对DFA进行最小化。 首先进行确定化,如下两个表所示: 206 状态 a b {0} {0,1} {1} {0,1} {0,1} {1} {1} {0} Ø 状态 a b 0 1 2 1

27、 1 2 2 0 根据状态转换矩阵得到如下图所示的DFA: 2 1 0 b b a a a 化简后的DFA为: 2 0 b a a (2)、题中所给即为一个DFA,不需要确定化,只对它进行最小化即可。 首先将状态划分为两个集合{{0,1},{2,3,4,5}}。有{0,1}a={1},{0,1}b={2,4}和{2,3,4,5}a={1,3,0,5},{2,3,4,5}b={2,3,4,5},所以可以进一步划分为{{0,1},{2,4},{3,5}},然后有{0,1}a={1},{0,1}b={2,4},{2,4}a={1,0},{2

28、4}b={3,5},{3,5}a={3,5},{3,5}b={2,4}。因此,最后划分结果是{{0,1},{2,4},{3,5}}。 最小化后的DFA如下图所示: 1 0 b a a 2 b b a 6解:第一步:写出正规表达式。根据题意,该DFA接受的字符串由0和1组成,并且每个1的后面都有0直接跟在右边,因此,可以将该字符串理解为由0和10构成的串,则相应的正规表达式就是(0︱10)*。 第二步:构造NFA。首先得出下图: (0︱10)* X Y 然后对上图进行分解后得到如下图所示的NFA。 X Y ε 1 2 ε 0

29、1 0 第三步:确定化,得到DFA。确定化结果如表14.1所列;给状态编号,得到表14.2所示的状态转换矩阵: 状态 0 1 {X,1,Y} {1,Y} {2} {1,Y} {1,Y} {2} {2} {1,Y} Ø 表14.1 状态转换矩阵 状态 0 1 0 1 2 1 1 2 2 1 表14.2 新的状态转换矩阵 根据状态转换矩阵得到DFA如下图所示: 2 1 0 1 1 0 0 0 第四步:对该DFA进行最小化。其分析过程如下: {0,1},{2} {0,1}0={1},{0,1}

30、1={2} {0,1},{2} 最小化后的DFA如图所示,该DFA即为所求。 1 0 1 0 0 对状态转换图进行确定化,得到状态转换矩阵: 状态 0 1 {S} {S,B} {S,A} {S,B} {S,B,C,Z} {S,A} {S,A} {S,B} {S,A,C,Z} {S,B,C,Z} {S,B,C,Z} {S,A,C,Z} {S,A,C,Z} {S,B,C,Z} {S,A,C,Z} 给状态编号,得到新的状态转换矩阵: 状态 0 1 0 1 2 1 3 2 2 1 4 3 3 4 4 3

31、 4 根据状态转换矩阵获得DFA如下: 0 4 0 1 2 3 1 0 0 1 0 1 1 0 1 还可以对上图的DFA进行化简,状态3和4可以合并,化简后的DFA如下图所示: 0,1 S T 0 1 B A 0 1 0 1 不难看出,该DFA接受的语言是{0,1}上包含00或11的字符串。根据化简后的DFA,我们可以写出相应的左线性文法G’: T→A0∣B1∣T0∣T1 A→B0∣0 B→A1∣1 编译原理F卷 1、考虑下面的文法G1: S→a∣∧∣(T) T→T,S∣S (1)消去G1的左

32、递归。然后对每个非终结符,写出不带回溯的递归子程序。 (2)经改写后的文法是否是LL(1)的?给出它的预测分析表。 (2)计算每个非终结符的FIRST集合和FOLLOW集合: FIRST(S)={a,∧,( } FIRST(T)={a,∧,( } FIRST(T’)={,,ε} FOLLOW(S)={ ),’,’,#} FOLLOW(T)={ ) } FOLLOW(T’)={ ) } 从而可见改造后的文法符合LL(1)文法的充分必要条件,所以是LL(1)的。 该文法的预测分析表 a ^ (

33、 ) , # S S->a S->^ S->(T) T T->S T’ T->S T’ T->S T’ T’ T’->ξ T->,S T’ 2、对下面的文法G: E→TE’ E’→+E∣ε T→FT’ T’→T∣ε F→PF’ F’→*F’∣ε P→(E)∣a∣b∣∧ (1) 计算这个文法的每个非终结符的FIRST和FOLLOW。 (2) 证明这个文法是LL(1)的。 (3) 构造它的预测分析表。 (4) 构造它的递归下降分析程序。 3、下面文法中,哪些是LL(1)的,说明理由

34、 (1)、 S→Abc A→a∣ε B→b∣ε (2)、 S→Ab A→a∣B∣ε B→b∣ε (3)、 S→ABBA A→a∣ε B→b∣ε (4)、 S→aSe∣B B→bBe∣C C→cCe∣d 4、对下面文法: Expr→-Expr Expr→(Expr)∣Var ExprTail→-Expr∣ε Var→id VarTail VarTail→(Expr)∣ε (1)、构造LL(1)分析表。 (2)、给出对句

35、子id--id((id))的分析过程。 5、把下面文法改写为LL(1)的: Declist→Declist;Decl∣Decl Decl→IdList:Type IdList→IdList,id∣id Type→ScalarType∣array(ScalarTypeList) of Type ScalarType→id∣Bound..Bound Bound→Sign IntLiteral∣id Sign→+∣-∣ε ScalarTypeList→ScalarTypeList,ScalarType∣ScalarType 1、令文法G1为 E→E+T∣T

36、 T→T*F∣F F→(E)∣i 证明E+T*F是它的一个句型,指出这个句型的所有短语,直接短语和句柄。 2、考虑下面的表格结构文法G2: S→a∣∧∣(T) T→T,S∣S (1) 给出(a,(a,a))和(((a,a),∧,(a)),a)的最左和最右推导。 指出(((a,a),^,(a)),a)的规范归约及每一步的句柄。根据这个规范归约,给出“移进-归约”的过程,并给出它的语法树自下而上的构造过程。 3、(1)计算练习2文法G2的FIRSTVT和LASTVT。 (2)计算G2的优先关系。G2是一个算符优先文法吗? (3)给出输入串(a,(a,a))的算符

37、优先分析过程。 4、考虑文法: S→AS︱b A→SA︱a (1) 列出这个文法的所有LR(0)项目。 (2) 构造这个文法的LR(0)项目集规范族及识别活前缀的DFA。 (3) 这个文法是SLR的吗?若是,构造出它的SLR分析表。 (4) 这个文法是LALR或LR(1)的吗? F卷答案 1答:解: (1)按照T、S的顺序消除左递归,得到文法: G’(S) S→a∣∧∣(T) T→ST’ T’→,ST’ ∣ε 对于非终结符S,T, T’的递归子程序如下: Procedure S; Begin If sym = ‘a’

38、or sym = ‘^’ Then advance Else if sym = ‘(‘ Then begin Advance ; T; If sym = ’)’ Then advance Else error End Else error Ends; Procedure T; Begin S; T’; Ends; Procedure T’ Begin If sym = ‘,’ Then begin Advance ;

39、 S; T’ Ends ends; 2解: (1) 计算每个非终结符的FIRST集合和FOLLOW集合如下: FIRST(E)={(,a,b,∧} FIRST(E’)={+,ε} FIRST(T)={(,a,b,∧} FIRST(T’)={(,a,b,∧,ε} FIRST(F)={(,a,b,∧} FIRST(F’)={*,ε} FIRST(P)={(,a,b,∧} FOLLOW(E)={#,)} FOLLOW(E’)={#,)} FOLLOW(T)={+,),#} FOLLOW(T’)={+,),#} FOLLOW

40、F)={(,a,b,∧,+,),#} FOLLOW(F’)={(,a,b,∧,+,),#} FOLLOW(P)={*,(,a,b,∧,+,),#} (2) 本文法是LL ( 1 )文法。 证明: 通过观察可知文法中不含有左递归,满足LL (1)文法定义的第一个条件。 考虑下列产生式: E’→+E∣ε T’→T∣ε F’→*F’∣ε P→(E)∣a∣b∣∧ 因为: FIRST(+E)∩FIRST(ε)={+}∩{ε}=Ø FIRST(E’)∩FOLLOW(E’)={+}∩{#,)}= Ø FIRST(T)∩FIRST(ε)={(,a,b,∧}∩{ε

41、}=Ø FIRST(T’)∩FOLLOW(T’)={(,a,b,∧}∩{+,),#}=Ø FIRST(*F’)∩FIRST(ε)={*}∩{ε}=Ø FIRST(F’)∩FOLLOW(F’)={*}∩{(,a,b,∧,+,),#}= Ø FIRST((E))∩FIRST(a)∩FIRST(b)∩FIRST(∧)= Ø 所以该文法是LL(1)文法。 (3) 构造其预测分析表: 预测分析表 + * ( ) a b ^ # E

42、EàT E’ EàT E’ EàT E’ EàT E’ E’ E’à+E E’ àξ E’ ->ξ T T àFT’ T’àFT’ TàFT’ TàFT’ T’ T’àξ T’ à T T’àξ T’àT T’àT T’ àT T’àξ F F àPF’ FàPF’ PàPF’ FàPF’ F’ F’ à ξ F’ à*F’ F’ à ξ F’àξ F’àξ F’àξ F’àξ F’àξ P P à(E) Pàa Pàb Pà ^

43、4) 构造其递归下降分析程序: Procedure E; Begin T ; E’ End ; Procedure E’ ; Begin If sym = ‘ + ’ Then begin Acvance ; E End End ; Procedure T ; Begin F ; T’ End ; Procedure T’ ; Begin If sym ∈first ( T ) Then T Else if sym = ‘*’ then

44、 error End ; Procedure F ; Begin If sym ∈first ( P ) P; F’; End ; Procedure F’ Begin If sym = ‘ * ’ Then begin Advance ; F’ End End; Procedure P Begin If sym = ‘ a ’ or sym = ‘ b ‘ or sym = ‘ ^ Then acvanc

45、e Else if sym = ‘ ( ‘ Then begin Advance ; E ; If sym = ‘ ) ‘ Then advance Else error End Else error End; 3 解: (1) 该文法不含左递归,计算每个非终结符的FIRST集合和FOLLOW集合如下: FIRST(S)={a,b,c} FIRST(A)={a,ε} FIRST(B)={b,ε} FOLLOW(S)={#}

46、 FOLLOW(A)={b,c} FOLLOW(B)={c} 可见该文法满足LL(1)文法的三个条件,是LL(1)文法。 (2) 该文法不含左递归,计算每个非终结符的FIRST集合和FOLLOW集合如下: FIRST(S)={a,b} FIRST(A)={a,b,ε} FIRST(B)={b,ε} FOLLOW(S)={#} FOLLOW(A)={b} FOLLOW(B)={b} 考虑A→a∣B∣ε,因为FIRST(B)∩FOLLOW(A)={b}≠Ø,所以该文法不是LL(1)文法。 (3) 该文法不含左递归,计算每个非终结符的FIRS

47、T集合和FOLLOW集合如下: FIRST(S)={a,b,ε} FIRST(A)={a,ε} FIRST(B)={b,ε} FOLLOW(S)={#} FOLLOW(A)={a,b,#} FOLLOW(B)={a,b,#} 考虑A→a∣ε和B→b∣ε,因为 FIRST(a)∩FOLLOW(A)={a}≠Ø FIRST(b)∩FOLLOW(B)={b}≠Ø 所以该文法不是LL(1)文法。 (4) 该文法不含左递归,计算每个非终结符的FIRST集合和FOLLOW集合如下: FIRST(S)={a,b,c,d}

48、FIRST(B)={b,c,d} FIRST(C)={c,d} FOLLOW(S)={e,#} FOLLOW(B)={e,#} FOLLOW(C)={e,#} 可见该文法满足LL(1)文法的三个条件,是LL(1)文法。 4 解: (1)、计算每个非终结符的FIRST集合和FOLLOW集合如下: FIRST(Expr)={-,(,id} FIRST(ExprTail)={-,ε} FIRST(Var)={id} FIRST(VarTail)={(,ε} FOLLOW(Expr)={),#} FOLLOW(ExprTail)=

49、{),#} FOLLOW(Var)={-,),#} FOLLOW(VarTail)={-,∣,#} 构造其预测分析表如下: - id ( ) # Expr Expr→- Expr Expr Expr Expr→-( Expr) ExprTail ExprTail→-Expr ExprTail→ε ExprTail→ε Var Var→id VarTail VarTail VarTail→ε VarTail→(Expr) VarTail→ε VarTail→ε (2)、句子id--i

50、d((id))的分析过程如下: 步骤 符号栈 输入串 所用产生式 0 # Expr id--id((id)) # 1 # ExprTail Var id--id((id)) # Expr→Var ExprTail 2 # ExprTail VarTail id id--id((id)) # Var→id VarTail 3 # ExprTail VarTail --id((id)) # 4 # ExprTail --id((id)) # VarTail→ε 5 # Expr - --id((id)) # ExprTail→-E

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

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

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

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

gongan.png浙公网安备33021202000488号   

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

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

客服