




下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本文格式为Word版,下载可任意编辑——编译原理龙书其次版第4章第四章
习题4.2.1:考虑上下文无关文法:S->SS+|SS*|a以及串aa+a*(1)给出这个串的一个最左推导S->SS*->SS+S*->aS+S*->aa+S*->aa+a*
(3)给出这个串的一棵语法分析树
习题4.3.1:下面是一个只包含符号a和b的正则表达式的文法。它使用+替代表示并运算的符号|,以避免和文法中作为元符号使用的竖线相混淆:rexpr?rexpr+rterm|rtermrterm?rtermrfactor|rfactorrfactor?rfactor*|rprimaryrprimary?a|b1)对这个文法提取公因子
2)提取公因子的变换使这个文法适用于自顶向下的语法分析技术吗?3)提取公因子之后,原文法中消除左递归4)得到的文法适用于自顶向下的语法分析吗?解
1)提取左公因子之后的文法变为
rexpr?rexpr+rterm|rtermrterm?rtermrfactor|rfactorrfactor?rfactor*|rprimaryrprimary?a|b
2)不可以,文法中存在左递归,而自顶向下技术不适合左递归文法3)消除左递归后的文法
rexpr->rtermrexpr’
rexpr’->+rtermrexpr’|?rterm->rfactorrterm’rterm’->rfactorrterm’|?rfactor->rprimayrfactor’rfactor’->*rfactor’|?rprimary->a|b
4)该文法无左递归,适合于自顶向下的语法分析
习题4.4.1:为下面的每一个文法设计一个预计分析器,并给出预计分析表。可能要先对文法进行提取左公因子或消除左递归(3)S->S(S)S|?
(5)S->(L)|aL->L,S|S解(3)
①消除该文法的左递归后得到文法S->S’
S’->(S)SS’|?用类Pascal语言构造的一个预计分析器:PROCEDURESBEGINS;WHILE(lookahead==’(')THENBEGINmatch('(');S;match(')');END;ELSEIF(lookahead=='a')THENmatch('a')ELSEerrorEND;②计算FIRST和FOLLOW集合
FIRST(S)={(,?}FOLLOW(S)={),$}FIRST(S’)={(,?}FOLLOW(S’)={),$}③构建预计分析表非终结符号SS’输入符号(S->S’S’->(S)SS’)S->S’S’->?$S->S’S’->?(5)
①消除该文法的左递归得到文法S->(L)|a
L->SL’
L’->,SL’|?用类Pascal语言的一个预计分析器:PROCEDURESBEGINif(lookahead==’(')THENBEGINmatch('(');L;match(')');END;ELSEIF(lookahead=='a')THENmatch('a')ELSEerrorEND;PROCEDUREL;BEGINS;WHILE(lookahead==',');BEGINmatch(',');S;END;END;②计算FIRST与FOLLOW集合
FIRST(S)={(,a}FOLLOW(S)={),,,$}FIRST(L)={(,a}FOLLOW(L)={)}FIRST(L’)={,,?}FOLLOW(L’)={)}③构建预计分析表非终结符号SLL’输入符号(S->(L))L’->?,L’->,SL’aS->aL->SL’$L->SL’
习题4.4.4计算练习4.2.2的文法的FIRST和FOLLOW集合3)S?S(S)S|?
5)S?(L)|a,L?L,S|S解:
3)FIRST(S)={?,(}FOLLOW(S)={(,),$}5)FIRST(S)={(,a}FOLLOW(S)={),,,$}
FIRST(L)={(,a}FOLLOW(L)={),,}
习题4.6.2为练习4.2.1中的增广文法构造SLR项集,计算这些项集的GOTO函数,给出这个文法的语法分析表。这个文法是SLR文法吗?S?SS+|SS*|a解:
①构造该文法的增广文法如下
S’->SS->SS+S->SS*S->a
②构造该文法的LR(0)项集如下I0I1I2I3I4I5S’->.SS’->S.S->a.S->SS.+S->SS+.S->SS*.S->.SS+S->S.S+S->SS.*S->.SS*S->S.S*S->S.S+S->.aS->.SS+S->S.S*S->.SS*S->.SS+S->.aS->.SS*S->.a③GOTO函数如下
GOTO(I0,S)=I1GOTO(I0,a)=I2
GOTO(I1,S)=I3GOTO(I1,a)=I2GOTO(I1,$)=acc
GOTO(I3,S)=I3GOTO(I3,+)=I4GOTO(I3,*)=I5GOTO(I3,a)=I2④构造该文法的语法分析表
状态+012345R3S4R1R2*R3S5R1R2ACTIONaS2S2R3S2R1R2$accR3R1R2GOTOS133注:FOLLOW(S’)=FOLLOW(S)={+,*,a,$}
这个文法是SLR文法,由于语法分析表中没有重复的条目
习题4.6.6说明下面文法S?SA|AA?a
是SLR(1)的,而不是LL(1)的。证明:
1)可以求得FIRST(SA)=FIRST(A)={a},故该文法不是LL(1)文法2)构造该文法的增广文法的语法分析表如下
①构造增广文法S’->SS->SAS->AA->a
②构造LR(0)项集族I0I1I2I3S’->.SS’->S.S->A.A->a.S->.SAS->S.AS->.AA->.aA->.a③GOTO函数如下
GOTO(I0,S)=I1GOTO(I0,A)=I2GOTO(I0,a)=I3GOTO(I1,A)=I4GOTO(I1,a)=I3GOTO(I1,$)=acc④构建语法分析表如下(FOLLOW(A)=FOLLOW(S)={a,$})
状态a01234S3S3R2R3R1ACTION$accR2R3R1I4S->SA.GOTOS1A24可以看到该语法分析表中没有重复的条目故该文法
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 气密条施工方案
- 尿素脱硝施工方案
- 陕西财税知识培训课件
- 第2单元第2节《人机的互动》教学设计 2023-2024学年粤教清华版初中信息技术七年级下册
- 光伏材料合同范例
- 合同范本运用方法
- 年度创新思维与实践分享计划
- 产品定价和利润计划
- 精细化管理在急诊科的应用计划
- 安徽省合肥市长丰县七年级生物上册 1.1.1 生物的特征教学实录2 (新版)新人教版
- 老年精神病的药物护理
- 南京信息工程大学《流体力学Ⅰ》2022-2023学年第一学期期末试卷
- 英文在职证明模版
- 大学生职业素养训练(第六版)课件 第十二单元养成友善品格
- GB/T 44592-2024红树林生态保护修复技术规程
- 传感器技术-武汉大学
- 初中数学建模研究报告
- 人教A版(2019)高中数学选择性必修第二册 《数列的相关概念》教学设计
- 虚劳中医护理方案
- 2024至2030年中国调味品市场前景预测及投资研究报告
- 江苏省南通市通州区通州区育才中学2023-2024学年英语八下期末检测试题含答案
评论
0/150
提交评论