




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、会计学1编译原理总复习习题与试题编译原理总复习习题与试题第一页,编辑于星期日:十九点 二十分。词法分析基本概念:正规式:正规表达式。正规集:正规表达式所表示的集合。有限自动机(一个五元数组):确定的有限自动机(DFA)和非确定的有限自动机(NFA)。词法分析器的构造:1)单词符号分类;2)单词输出的形式常见计算题类型:已知集合求正规式、DFA;已知正规式求DFA、集合;已知FA求正规式、集合;FA的确定化、最小化。语法分析基本概念:上下文无关文法、语言、下推自动机,LL分析与LR分析;一些必要的定义、公式、算法的核心思想等;常见的计算题类型:(自己思考)基本解题方法与技巧等。3. 语法制导翻译
2、(略)4. 运行环境(略)(哪些最重要?)第1页/共30页第二页,编辑于星期日:十九点 二十分。3题目类型:简答题(25分)、填空题(25分)、计算题(50分)内容分布(大概):概述与词法分析(30分)、语法分析(40分)、语法制导翻译与运行环境(30分) 考试范围:15章讲过的内容侧重考察:基本概念与基本方法的掌握易犯的错误不认真审题(对题目的要求理解错误:意思理解错、难题想容易、容易题想难。关键问题是基本概念不清楚)所答非所问(例如:没有要求LL分析却将文法改为LL的)画蛇添足(例如:仅问有无冲突却将分析表先构造出来)1.偷工减料(例如:有若干问,仅回答部分或问题仅答一半)警示千万不要作弊
3、!命运掌握在自己的手中!第2页/共30页第三页,编辑于星期日:十九点 二十分。(2分)有哪些方法可以去除文法的二义性。(2分)写出 -(a+b)*c)+d 的后缀式。(4分)试证明正规式(ab)*a与a(ba)*是等价的。1.1 1.1 (1)改写文法 (2)规定文法符号的优先级和结合性1.2 1.2 ab+c*d+(或ab+c*-d+)1.5 1.5 证明: 考虑L(ab)*a)中的任意一个串ababab.aba, 由串连接的结合性可得:a(ba)(ba)(b.a)(ba),它恰好是L(a(ba)*),即L(ab)*a)= L(a(ba)*)。 也可以用归纳法证明(提示:以ab重复0次、1次
4、作为归纳基础,假设ab重复n次成立,证明ab重复n+1次也成立)。第3页/共30页第四页,编辑于星期日:十九点 二十分。(6分)编译程序的基本组成有:词法分析、 、 、中间代码生成、 、 、 和 。(1分)正规式r和s等价说明 相同。(2分)不含子串baa的所有a、b符号串的正规式是 。(4分) 已知文法G定义如下: SeT|RT TDR| RdR| Da|bd则FIRST(S)= ,FIRST(D)= ,FIRST(T)= ,FIRST(R)= 。 2.2 语法分析、语义分析、代码优化、目标代码生成、 符号表管理和出错处理 2.3 r和s表示的正规集 a*(b|ba)* FIRST(S)=
5、e,d,a,b ,FIRST(D)= a,b ,FIRST(T)= ,a,b ,FIRST(R)= d, 。第4页/共30页第五页,编辑于星期日:十九点 二十分。(13分)已知一个NFA如图。 (a)(4分) 用自然语言简要叙述该自动机所识别的语言 的特点,列举两个它可识别的串。 (b)(3分)写出与该自动机等价的正规式r。 (c)(6分)用子集法构造识别r的最小DFA。012bba,ba,b第5页/共30页第六页,编辑于星期日:十九点 二十分。含有至少两个连续b的a、b串,例如bb、bbb等。r=(a|b)*bb(a|b)*。直接用状态转换矩阵构造:初态:0子集法得:(2是终态)ab000,
6、10,100,1,20,1,2 0,20,1,20,20,20,1,2令: 0=A,0,1=B,0,1,2=C,0,2=D得:abAABBACCDCDDC最小化DFA得:(C和D不可区分)abAABBACCCC第6页/共30页第七页,编辑于星期日:十九点 二十分。(15分)有文法G和G的语法制导翻译如下:EE1*T E.place=newtemp; emit(*,E1.place,T.place,E.place; | T E.place=T.place; TT1+F T.place=newtemp; emit(+,T1.place,F.place,T.place; | F T.place=F.
7、place; F(E) F.place=E.place; | id F.place=; (a)(4分)求句型(T+F)*id 的短语、直接短语以及句柄;(b)(4分)根据语法制导翻译写出句子a*b+c*d的中间代码;(c)(3分)若a=3,b=5,c=7,d=8,请给出中间代码计算结果;(d)(4分)将文法G简化为:EE*T|T,TT+F|F,Fid。给出它的识别活前缀的DFA。 第7页/共30页第八页,编辑于星期日:十九点 二十分。短语:(T+F)*id、(T+F)、T+F、id 直接短语:T+F、id 句柄:T+F(b) a*b+c*d的中间代码:(1) (+, b, c,
8、t1)(2) (*, a, t1, t2)(3) (*, t2, d, t3)(c) 计算结果:t3=288 (d) 识别活前缀的DFA: E.EE.E*TE.TT.T+FT.FF.idEE.EE.*TET.TT.+FTF.Fid.EE*.TT.T+FT.FF.idTT+.FF.idEE*T.TT.+FFETFid*+TididI0I1I2I3I4I5I6I7TT+F.I8F第8页/共30页第九页,编辑于星期日:十九点 二十分。10第9页/共30页第十页,编辑于星期日:十九点 二十分。写出下述语言的正规式描述(1)由偶数个0和奇数个1构成的所有01串(2)所有不含子串011的01串(3)每个a
9、后面至少紧随两个b的ab串(4)C的形如/*/ 的注释。其中代表不含*/的字符串思路:分析题意,从最简单的例子考虑,然后找出统一规律(1)的解题步骤:1. 最简单的符合要求的串:1、010(还有100、001、111等)2. 所有01均为偶数的串: A=(00|11)|(01|10)(00|11)*(10|01)*3. 符合要求的所有串:A1A、A0A1A0A(为什么没有后三个?)结果:A1A | A0A1A0A思考:识别它的DFA又应该如何构造?第10页/共30页第十一页,编辑于星期日:十九点 二十分。思路:注释中若遇到*:若后边是/则结束注释否则仍然是注释步骤:1. 注释串是空;2. 考虑
10、没有*的注释;3. 考虑含*的注释结果:(4) /* (*|*/)* */(2)所有不含子串011的01串:1*(01|0)*(3)每个a后面至少紧随两个b的ab串:(b|abb)*第11页/共30页第十二页,编辑于星期日:十九点 二十分。 用自然语言给出下述正规式所描述的语言,并构造他们的最小DFA:10*1(0|1)*011(0|1)*说明:所谓用自然语言描述就是解释字符串的性质,一般情况下是已经有了形式化描述。解:10*1:首尾是1中间有零或若干个0的01串。(0|1)*011(0|1)* :至少含一个011的01串。注意:绝对不允许用正规式表示,因为正规式是已知条件第12页/共30页第
11、十三页,编辑于星期日:十九点 二十分。有一NFA的状态转换矩阵下表,其中S为初态,D为终态abcSA,BC,DDA,B,CAACBBADCCBAADCBS求出它的最小DFA用正规式描述DFA所接受的语言问题:根据DFA写出对应的正规式,通常的考虑和步骤是什么? 再重复一遍: 正规式、DFA是从两个不同的侧面表示一个集合(即正规集)。所以,根本的方法是把正规集作为桥梁,先分析清楚DFA识别出的是一个什么集合,然后再设计此集合的正规式。反之亦然。第13页/共30页第十四页,编辑于星期日:十九点 二十分。 该DFA从初态到终态有三条路径:b|c|a(a|c)*b,而且是这三条路径的至少一次重复,故正
12、规式为:(b|c|a(a|c)*b)+第14页/共30页第十五页,编辑于星期日:十九点 二十分。设计一文法G,使得L(G)=|是不以0开始的正奇数思路:首先根据集合的描述设计几个句子,然后从句子中找出规律(或共性),把它们的性质用产生式表示出来。解:正规式:个位:13579 个位以上:0-9* 最高位:1-9三段连起来:1-90-9*13579两种情况: 1-90-9*13579 | 13579产生式:SACB|BA1|2|3|4|5|6|7|8|9B1|3|5|7|9C|0C|AC第15页/共30页第十六页,编辑于星期日:十九点 二十分。对于文法和它所产生的句子-id+id*id 和 -(i
13、d+id)*idE E+T|TT T*F|F (G3.4)F (E) |-F|id(1)构造基于LR(0)项目集的识别活前缀的DFA(2)指出DFA中所有含有冲突的项目集,并说明这些冲突可以用SLR(1)方法解决;(3)构造文法的SLR(1)分析表(4)用分析表对句子-id+id*id 和 -(id+id)*id进行分析(以格局变化的方式)(5)根据(4)的分析给出-id+id*id的分析树和剪句柄的过程解:作为练习,本题的每一步都是必要的。相对来说分析表的构造并不重要。(具体步骤有时间板书)第16页/共30页第十七页,编辑于星期日:十九点 二十分。1可移进项直接从DFA上看:actionI,
14、a:=sjgotoI,A:=k2可归约项分两步走:若在I状态中有A.,首先计算:FOLLOW(A),然后填写:actionI,b:=Ri其中:bFOLLOW(A)且A是第i个产生式。 第17页/共30页第十八页,编辑于星期日:十九点 二十分。假定下述程序分别采用值调用,引用调用,复写-恢复和换名调用,请给出它们的打印结果。 program main(input output); procedure p(x,y,z); begin y:=y+1; z:=z+x end; begin a:=2; b:=3; p(a+b, a, a); print a end;两种解题的思路:1. 把自己当作计算机
15、,按照参数传递的实现方式“运行”一遍程序,得出结果;2. 找台机子把程序敲进去试试(辅助手段)困惑的是:表达式a+b如何作为引用调用和复写-恢复的实参?解决方案:忽略返回值问题。其实这一思想可以推广到任何不支持某种方式的情况(放心,考试中不会有这种很困惑的问题)具体结果(略)第18页/共30页第十九页,编辑于星期日:十九点 二十分。procedure A is procedure B is Procedure D is x : character; begin end D; begin end B; procedure C is x : integer; procedure E is y: i
16、nteger; begin end E; procedure F is y: float ; begin end F; begin end D;begin end A; 有一过程A如下所示。采用静态作用域、最近嵌套原则,设A是第0层的过程。第19页/共30页第二十页,编辑于星期日:十九点 二十分。(4)若一个可能的程序运行控制流是 A-C-E-F-B,试给出每次调用和返回时的控制栈中各活动记录的可确定内容和显示表的变化;(5)分别给出C调用E的调用序列和从E返回的返回序列。说明:(4)(5)是学生希望讲解的题目解:(4)若一个可能的程序运行控制流是 A-C-E-F-B,给出控制栈中的内容和控制
17、链与访问链的指向。静态嵌套结构、活动栈、以及控制链与访问链:第20页/共30页第二十一页,编辑于星期日:十九点 二十分。22认真复习、迎接考试(结 束 2007年6月19日)第21页/共30页第二十二页,编辑于星期日:十九点 二十分。2323页:例上边两行:将“Msi,sj”改为“Msi,ch”将“.是从状态si到状态sj的边上的标记ch(或)。”改为“.是从状态si经ch(或)到达的下一状态sj。”24页:倒11行:将“Msi,sj”改为“Msi,ch”25页:图最后一行状态“000”应改为“012”34页:算法方法2、3行:将“从si出发”改为“从si出发”,将“称为D的初态”改为“称为D
18、的初态”45页:10行:将“N是仅出现”改为“仅N是可以出现”70页:例:将FOLLOW集合中的“”改为“”75页:到4行:将“文法”改为“文法”81页:图:将I0中的“T.-F”改为“F.-F”第22页/共30页第二十三页,编辑于星期日:十九点 二十分。24教材100页:图:将A.code=(3)“(x,:=,(2)”改为“(:=,x,(2)”129页:例的中间代码:将“t3:=+r t4”改为“t3:=C +r t4”133页:例的中间代码:将“t5:=t3*t4”改为“t5:=t3*4”,将“V7”改为“V5”134页:图:将“V5、V6、V7”分别改为“V6、V7、V5”136页:上边
19、一行:将“ptr.data/=x”改为“ptr.data=x”138页:例:将代码序列中的“L1”改为“L2”, “L2”改为“L1”144页:例上边一行:将“mklist”改为“mkchain”习题解答4页:2.4(1):A1A|A0A1A0可以简化为A(1|010)A32页:缺少3.19(1)的解答32页:到2行:将两处“I10”均改为“I11”,将“I12”改为“I13”第23页/共30页第二十四页,编辑于星期日:十九点 二十分。 设字母表=0,1,设计下述语言的文法。对于正规语言,可用正规式表示。(1)每个0后面至少跟随一个1的字符串(2)0和1个数相等的字符串(3)0和1个数不相等的
20、字符串(4)不以011作为子串的字符串解:(1)(01|1)* (2)S0S1S|1S0S| (3)SA0A|B1B A0A1A|1A0A|0A| B0B1B|1B0B|1B| (4)1*(0|01)*第24页/共30页第二十五页,编辑于星期日:十九点 二十分。构造SLR(1)分析表的算法3.9基于的假设是LR(0)项目集中可能有冲突。如果基于的假设是LR(0)项目集中没有冲突,则构造方法可以简化(无需计算FOLLOW集合),得到的是LR(0)分析表。试修改算法3.9成为构造LR(0)分析表的算法。1.if DFA中有不能解决的移进/归约和归约/归约冲突 then error; else fo
21、r 每个状态转移Dtrani,x=j loop if xT then actioni,x:=Sj; else gotoi,x:=j; end if; end loop; for 状态i的每个可归约项A. loop if S S. then actioni, #:=acc; else for 每个aFOLLOW(A) loop actioni,a:=RkRk; end loop; end if; end loop; end if; 每个终结符aA.状态i:BB. .x x第25页/共30页第二十六页,编辑于星期日:十九点 二十分。设整型数组声明的形式为int Ad1,d2,d3,并且假设每个整型
22、数占据4个字节。(1)试导出以列为主存储时计算c和v的递推公式;(2)*设计数组声明的语法制导翻译(包括语法和语义),以使得在对数组声明从左到右分析的同时,正确填写符号表和内情向量的所有信息。解:(1)n=1时,addr(Ai1)=a+(i1-1)*4n=2时,addr(Ai1,i2)=a+(i2-1)*d1*4+(i1-1)*4addr(Ai1,i2,in)=?第26页/共30页第二十七页,编辑于星期日:十九点 二十分。addr(Ai1,i2,.,in)=a+(in-1)*dn-1*dn-2*.*d1+(in-1-1)*dn-2*dn-3*.*d1+.+ (i1-1)*w=a-(dn-1*dn-2*.*d1+dn-2*dn-3*.*d1+.+d1+1)*w +(in*dn-1*dn-2*.*d1+in-1*dn-2*dn-3*.*d1+.+i2*d1+i1)*w=ac*w+v*w其中:c=dn-1*dn-2*dn-3*d1+dn-2*dn-3*dn-4*d1+*dn-3*dn-4*dn-5*d1+d1+1 =(dn-1+1)*dn-2*.*d1+dn-3*dn-4.*d1+.+d1+1 =(dn-1+1)*dn-2+1)*dn-3*dn-4.*d1+.+d1+1 . =(.(dn-1+1)*dn-2+1)*dn-3.+1)*d1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年南充道路运输从业资格证考试内容是什么
- 工作经验交流会发言稿
- 2025年遂宁货运从业资格证模拟考试保过版
- 《物理光的折射与反射现象教学教案》
- 高中语文课本中的古诗鉴赏训练
- 买卖合同代售协议
- 综合版画教你如何变废为宝知到课后答案智慧树章节测试答案2025年春内蒙古艺术学院
- 公司快递收发记录表格(日常)
- O-Acetylsalicylhydroxamic-acid-生命科学试剂-MCE
- ER-ligand-6-生命科学试剂-MCE
- Unit 3 Food and Culture Reading and thinking阅读课教学设计 2023-2024学年人教版高中英语选择性必修第二册
- 数学大观 知到智慧树网课答案
- 特种设备管理和作业人员岗位职责
- 部编版语文四年级下册第三单元教材解读大单元集体备课
- 小儿白血病饮食
- 2024年杭州科技职业技术学院单招职业技能测试题库及答案解析
- 2024-2029年中国数字能源行业市场发展分析及前景趋势与投融资研究报告
- JGJ79-2012 建筑地基处理技术规范
- 《绘本教学》课件
- 海康威视校招在线测评题库
- LIMS实验室信息管理系统
评论
0/150
提交评论