版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1编译原理及实现课后题及答案编译原理及实现
2.1设字母表A={a},符号串x=aaa,写出下列符号串及其长度:x0,xx,x5以及A+和A*.
x0=(aaa)0=ε|x0|=0xx=aaaaaa|xx|=6x5=aaaaaaaaaaaaaaa|x5|=15A+=A1∪A2∪….∪An∪…={a,aa,aaa,aaaa,aaaaa…}A*=A0∪A1∪A2∪….∪An∪…={ε,a,aa,aaa,aaaa,aaaaa…}
2.2令∑={a,b,c},又令x=abc,y=b,z=aab,写出如下符号串及它们的长度:xy,xyz,(xy)3
12
|=(xy)3|cbabcbabcbab=(abcb)3=(xy)37
|=xyz|abcbaab=xyz4|=xy|abcb=xy
2.3设有文法G:S∷=SS*|SS+|a,写出符号串aa+a*规范推导,
并构造语法树。
S=>SS*=>Sa*=>SS+a*=>Sa+a*=>aa+a*
2.4已知文法G:Z∷=U0∣V1、U∷=Z1∣1、V∷=Z0∣0,请写出全部由此文法描述的只含有四个符号的句子。
0101
=>V101=>Z01=>V1=>Z1001=>U001=>Z01=>V1=>Z0110=>V110=>Z10=>U0=>Z1010=>U010=>Z10=>U0=>Z
2.5已知文法G:S∷=ABA∷=aA︱εB∷=bBc︱bc,写出该文法描述的语言。
1}
>=m0,>=n|{anbmcm=L(G)1}>=n|{bncn描述的语述的bc︱bBc=∷B0}>=n|{an:描述的语述ε︱aA=∷A2.6已知文法E∷=T∣E+T∣E-T、T∷=F∣T*F∣T/F、F∷=(E)∣i,写出该文法的开头符号、终结符号集合VT、非终结符号集合VN。
开头符号:E
Vt={+,-,*,/,(,),i}Vn={E,F,T}
2.7对2.6题的文法,写出句型T+T*F+i的短语、简洁短语以及句柄。
短语:T+T*F+iT+T*FiiTT*F简洁短语:iT*FT句柄:T
2.8设有文法G:S∷=S*S|S+S|(S)|a,该文法是二义性文法吗?
依据所给文法推导出句子a+a*a,画出了两棵不同的语法树,所以该文法是二义性文法。
2.9写一文法,使其语言是奇正整数集合。A::=1|3|5|7|9|NA
N::=0|1|2|3|4|5|6|7|8|9
2.10给出语言{anbm|n,m≥1}的文法。
G:S::=AB
A::=aA|a
B::=bB|b
3.1有正则文法G:Z::=Ua|Vb,U::=Zb|b,V::=Za|a,画出该文法的状态图,并检查句子abba是否合法。
解:该文法的状态图如下:
句子abba合法。
3.2状态图如图3.35所示,S为开头状态,Z为终止状态。写出相应的正则文法以及V,Vn和Vt。
图3-35状态图
解:左线性文法G:右线性文法G’:Z::=Ab|bS::=aA|b
A::=Aa|aA::=aA|bV={Z,A,a,b}V={S,A,a,b}
Vn={Z,A}Vn={S,A}
Vt={a,b}Vt={a,b}
3.3构造下列正则表达式相应的NFA:
1(1|0)*|0
1(1010*|1(010)*1)*0
解:正则表达式:1(1|0)*|0
1、
2、
3、
4、
正则表达式:1(1010*|1(010)*1)*0
3.4将图3.36的NFAM确定化
图3.36状态图
解:
DFA:
3.5将图3.37的DFA化简。
解:
q0={0,1}q1={2,4}q2={3,5}
化简后的DFA:
4.1对下面文法,设计递归下降分析程序。
S→aAS|(A),A→Ab|c
解:首先将左递归去掉,将规章A→Ab|c改成A→c{b}非终结符号S的分析程序如下:
非终结符号A的分析程序如下:
4.2设有文法G:
Z∷=(A),A∷=a|Bb,B∷=Aab
若采纳递归下降分析方法,对此文法来说,在分析过程中,能否避开回溯?为什么?
解:若采纳递归下降分析方法,对此文法来说,在分析过程中不能避开回朔。由于规章A∷=a|Bb和规章B∷=Aab构成了间接左递归,不满意实现没有回溯的递归下降分析方法的条件(1)(书P67),且规章A::=a|Bb,FIRST(a)={a},FIRST(Bb)={a},即此规章候选式的首符号集有相交,不满意实现没有回溯的递归下降分析方法的条件(2)(书P67),在分析过程中,将造成回溯。改写文法可避开回溯:
将规章B∷=Aab代入规章A∷=a|Bb得:A∷=a|Aabb,再转换成:A∷=a{abb},可避开回溯。
4.3若有文法如下,设计递归下降分析程序。
>)
表达达(|+|-改为:
|*|/改为:的分析程序如下:
非终结符号的分析程序如
下:
非终结符号
的分析程序
如下:
下:
非终结符号
的分析程序如
下:
4.4有文法G:A::=aABe|ε,B::=Bb|b
(1)求每个非终结符号的FOLLOW集。
(2)该文法是LL(1)文法吗?
(3)构造LL(1)分析表。
解:
(1)FOLLOW(A)=First(B)∪{#}={b,#}
FOLLOW(B)={e,b}
(2)该文法中的规章B::=Bb|b为左递归,因此该文法不是LL(1)文法
(3)先消退文法的左递归(转成右递归),文法变为:A::=aABe|ε,B::=bB’,B’::=bB’|ε,该文法的LL(1)分析表为:
更常用且简洁的LL(1)分析表:
4.5若有文法A→(A)A|ε
(1)为非终结符A构造FIRST集合和FOLLOW集合。
(2)说明该文法是LL(1)的文法。
解:
(1)FIRST(A)={(,ε}
FOLLOW(A)={),#}
(2)
该文法不含左递归;
FIRST((A)A)={(},FIRST(ε)={ε},FIRST((A)A)∩FIRST(ε)=Φ,
且FOLLOW(A)={),#},FIRST((A)A)∩FOLLOW(A)=Φ,
因此,该文法满意LL(1)文法的条件,是LL(1)文法。
4.6利用分析表4-1,识别以下算术表达式,请写出分析过程。(1)i+i*i+i
(2)i*(i+i+i)
解:
(1)i+i*i+i
(2)i*(i+i+i)
4.7考虑下面简化了的C声明文法:→;
→int|float|char
→ID,|ID
(1)在该文法中提取左因子。
(2)为所得的文法的非终结符构造FIRST集合和FOLLOW集合。(3)说明所得的文法是LL(1)文法。
(4)为所得的文法构造LL(1)分析表。
(5)假设有输入串为“charx,y,z;”,写出相对应的LL(1)分析过程。
解:
(1)规章→ID,|ID提取公因子如下:→ID(,|ε)
增加新的非终结符,规章变为:
→ID
→,|ε
C声明文法转变为:
→;
→int|float|char
→ID
→,|ε
(2)FIRST()=FIRST()={int,float,char}FIRST()={ID}
FIRST()={,,ε}
FOLLOW()={#}
FOLLOW()=FIRST()={ID}
FOLLOW()=FOLLOW()={;}
(3)所得文法无左递归,且
FIRST(int)∩FIRST(float)∩FIRST(char)=ΦFIRST(,)∩FIRST(ε)=Φ
FIRST(,)∩FOLLOW()=Φ
因此,所得文法为LL(1)文法。
(4)所得的文法构造LL(1)分析表如下所示:
更常用且简洁的LL(1)分析表:
(5)输入串“charx,y,z;”相对应的LL(1)分析过程如下:
5.1考虑以下的文法:
S→S;T|T
T→a
(1)为这个文法构造LR(0)的项目集规范族。
(2)这个文法是不是LR(0)文法?假如是,则构造LR(0)分析表。(3)对输入串“a;a”进行分析。
解:
(1)拓广文法G:
0:S’→S
1:S→S;T
2:S→T
3:T→a
构造LR(0)项目集规范族
(2)该文法不存在“归约-归约”和“归约-移进”冲突,因此是LR(0)文法。LR(0)分析表如下:
(3)对输入串“a;a”进行分析如下:
5.2证明下面文法是SLR(1)文法,但不是LR(0)文法。S→A
A→Ab|bBa
B→aAc|a|aAb
解:文法G:
0:S→A
1:A→Ab
2:A→bBa
3:B→aAc
4:B→a
5:B→aAb
构造LR(0)项目集规范族:
状态5存在“归约-移进”冲突,状态9存在“归约-归约”冲突,因此该文法不是LR(0)文法。
状态5:
FOLLOW(B)={a},因此,FOLLOW(B)∩{b}=Φ
状态9:
FOLLOW(B)={a},FOLLOW(A)={#,b,c},因此FOLLOW(B)∩FOLLOW(A)=Φ
状态5和状态9的冲突均可用SLR(1)方法解决,构造SLR(1)分析表如下:
该SLR(1)分析表无重定义,因此该文法是SLR(1)文法,不是LR(0)文法。
5.3证明下面文法是LR(1)文法,但不是SLR(1)文法。S→AaAb|BbBa
A→ε
B→ε
解:拓广文法G:
0:S’→S
1:S→AaAb
2:S→BbBa
3:A→ε
4:B→ε
构造LR(0)项目集规范族:
状态0存在“归约-归约”冲突,且FOLLOW(A)={a,b},FOLLOW(B)={a,b},即FOLLOW(A)∩FOLLOW(B)={a,b}≠Φ,所以该文法不是SLR(1)文法。
构造LR(1)项目集规范族:
LR(1)分析表:
分析表无重定义,说明该文法是LR(1)文法,不是SLR(1)文法。
5.4考虑以下的文法:
E→EE+
E→EE*
E→a
(1)为这个文法构造LR(1)项目集规范族。
(2)构造LR(1)分析表。
(3)为这个文法构造LALR(1)项目集规范族。
(4)构造LALR(1)分析表。
(5)对输入符号串“aa*a+”进行LR(1)和LALR(1)分析。解:
(1)拓广文法G:
0:S→E
1:E→EE+
2:E→EE*
3:E→a
构造LR(1)项目集规范族:
(2)构造LR(1)分析表
(3)构造LALR(1)项目集规范族:
(4)构造LALR(1)分析表。
(5)对输入符号串“aa*a+”进行LR(1)分析:
对输入符号串“aa*a+”进行LALR(1)分析:
5.5说明以下的文法是LR(1)文法,但不是LALR(1)文法。S→aAd|bBd|aBe|bAe
A→c
B→c
解:
拓广文法:
0:S’→S
1:S→aAd
2:S→bBd
3:S→aBe
4:S→bAe
5:A→c
6:B→c
构造LR(1)项目集规范族
构造LR(1)分析表:
同核项目集合并,构造LALR(1)项目集规范族:
构造LALR(1)分析表:
从LR(1)分析表可以看出,分析表无重定义,因此该文法是LR(1)文法。
从LALR(1)分析表可以看出,分析表ACTION和ACTION存在重定义,因此该文法不是LALR(1)文法。
7.1给出编译下面程序的有序符号表。
main()
{
intm,n;
realx;
charname;
}
解:
7.2按“质数除余法”,给出编译上题程序的散列符号表。
解:正整数H=ASC函数(字符串),质数=5,散列符号表如下所示:
7.3给出编译到下面程序a、b、c处的栈式符号表。
realx,y;
charstr;………………a
intfun1(intind)
{
intx;……………b
x=m2(ind+1);
}
main()
{
chary;…………c
x=2;y=5;printf("%d\n",fun1(x/y));
}
解:
10.1对下列基本块应用DAG进行优化:
M)
,,L,(=L),J,K,(+K),5,B,(*J),I,H,
(+I),C,A,(*H),C,A,(+G)
,F,B,(*
F)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 试用期销售合同范本(3篇)
- 心理疏导服务团队方案(3篇)
- 新教材高考地理二轮复习三10个长效热点综合专项训练热点3生物多样性与环境含答案
- 武汉市部分重点中学 2024-2025 学年度上学期期中联考 高二地理试卷
- 陕西省西安市曲江第一小学2024-2025学年四年级上学期期中学业水平测试科学试题(无答案)
- 2025年高考物理专项复习:机械波及光的运用(分层练)(解析版)
- 广告制作合同范本怎么写
- 2024年证券交易市场委托交易规则
- 绿色环保课程设计
- 农贸市场摊位租赁条款
- 数据分析师历年考试真题试题库(含答案)
- 心房颤动与认知功能障碍发生机制研究进展
- 2024年全国教育大会精神全文课件
- 广东省珠海市2023-2024学年六年级上学期数学期中试卷(含答案)
- 2024~2025学年高二地理期中考试模拟试卷【人教版选择性必修一第一至三章】
- 广东省深圳市2023-2024学年三年级上学期英语期中试卷(含答案)
- 人教版(2024新版)七年级上册英语Unit 3 单元测试卷(笔试部分)(含答案)
- 2024年海南省发展控股限公司子公司招聘11人高频难、易错点500题模拟试题附带答案详解
- 公司保密工作规范作业指导书
- 浙江省杭州市2024年七年级上学期语文期中阶段性检测试卷【附答案】
- 化学水资源及其利用(第1课时人类拥有的水资源 保护水资源)课件 2024-2025学年九年级人教版(2024)上册
评论
0/150
提交评论