




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、清华大学本科生考试试题专用纸考试课程编译原理(样题)06级07级试题合并而成(以07级试题为基础,第九题改为06级试题,附加了 06级的第一题)学号:姓名:(07 级)1.1#对于右图中的Decaf/Mi nd 程序,根据第二阶段实验建立符 号表的过程,当处理到图中所 标出的for语句时,当前作用 域栈中含哪些开作用域?它们 对应的符号表中分别包含哪些 符号?class Computer int cpu;void Crash(int numTimes) int i;for (i = 0; i < numTimes; i = i + 1)Print("sadn");cl
2、ass Mac extends Computer int mouse;void Crash(int numTimes) Print("ack!");class Main static void main() class Mac powerbook; powerbook = new Mac(); powerbook.Crash(2);#2. 对于上图(第1小题图)中的 Decaf/Mind程序,根据课程实验所采取的运行时存储 组织方式,当powerbook所指向的对象创建后,其对象存储空间中含有哪些内容? class Mac的vtable中包含哪些内容?3.若按照某种运行时存
3、储组织方 式,如下函数p被激活时的过 程活动记录如右图所示。其中 d是动态数组。static int N ;void p( int a) float b;float c10; float dN; float e;e指向d空间的指针d的上界(N)控制信息<Offset =30+2N- Offset =30- Offset =28- Offset =27-*Offset =26Offset = 6一Offset= 4- Offset= 3tOffset= 0#试指出函数 p中访问di( 0 < i < N)时相对于活动记录基址的Offset值如何计算?#var a,b; proc
4、edure p ;(1)(2)(3)(4)(5)(6) (8)若将数组c的声明改为float cN,那么你将如何修改函数p活动记录的组织(说明一种可行方案的思路即可)?(06 级)1. PL0编译器的符号表采用一个全局的单符号表栈结构。对于下图左边的PL0程序,PL0编译器在处理到第L行时符号表栈中的符号有哪些?var x;procedure r ;var x, y;begina := 0;if a < b the n call q;en d;begincall r ;end ; procedure q ;var x;begin(L)if a < b then call p ;en
5、d ;begina := 1;b := 2; call q;end .2. 对于PL0的栈式动态存储分配(过程活动记录中的控制信息包括静态链SL,动态链DL,以及返回地址 RA),上图左边的PL0程序执行到过程 p被第二次激活时,运 行栈的当前状态如上图右边所示(栈顶指向单元26)。试补齐该运行状态下,单元18、19、21、22、及23中的内容。3. 针对静态作用域规则和动态作用域规则,分别指出上图左边的 PL0程序执行到过程q被第二次激活时,第 L行代码中所访问的变量a的值各是多少?.(07级)1. 设有如下无二义文法 GS:S t A b A B cA t a A aB > b试给出
6、句型 aA b c的所有短语、直接短语和句柄;即填充下表:句型短语直接短语句柄a A b c2. 给定文法GS:S ; AB A > : |aAbB4#下表中已给出针对文法 GE各产生式右部文法符号串的 First集合,以及各产生式 左部非终结符的 Follow集合。试求出各产生式的预测集合 PS (即完成下表),并指 出文法 GS是否LL(1)文法?G中的规则rFirst (rhs(r)Follow (lhs(r)PS (r)S t ABa, c#A T zzb,c,#A t aAbBab,c,#B t cAcb,c,#表中的rhs(r)表示产生式r右部的文法符号串,lhs(r)表示产
7、生式r左部的非终结符。三( 07 级)1.给定 SLR(1)文法 GS:S > a A bS - cA > A SA > S如下是基于GS的一个S属性文法/翻译模式:/ :=为赋值号 S.x := A.x + 1 S > c A A1 S Sx := 0 A.x := A1.X + S.x A.x := S.x (1)输入串aacbacbb的一棵语法分析树如下图所示。试针对该语法分析树进行标注 (即得到一棵带标注的语法分析树,标出分析树中各结点所对应文法符号的属性 值,本题中的终结符不对应属性值)。(2)如果在LR分析过程中根据该翻译模式进行自下而上翻译,试写出在按每个
8、产生 式归约时语义处理的一个代码片断(设语义栈由向量v表示,归约前栈顶位置为top,终结符不对应语义值,而每个非终结符的综合属性都只对应一个语义值,可用 vi.x表示;不用考虑对 top的维护)。2.变换如下翻译模式, 使嵌在产生式中间的语义动作集中仅含复写规则,并使得在自底向上的语法分析过程中,文法符号的所有继承属性均可以通过归约前已出现在分析栈 中的确定的综合属性进行访问:D Di ; T L.type :=type; L.offset := Di .width ; L.width := T.width LD.width := Di.width + L.num T.width D r T
9、L.type := T.type; L.offset := 0 ; L.width := T.width LD.width := L.numT.width T integer T.type := int ; T.width := 4 T real T.type := real ; T.width := 8 L Li. type := L. type ; Li. offset := L. offset ; Li. width := L. width ; Li , id enter (id. name, L. type, L. offset + Li.num L. width) ; L.num :
10、= Li.num +i L id enter (id. name, L. type, L. offset) ; L.num := i四(07级)如下是以LL(i)文法GS作为基础文法设计的翻译模式,试针对该翻译模式构造 一个自上而下的递归下降(预测)翻译程序:/ :=为赋值号S -; F P.i := F.val P print (P.s) P > + F Pi.i := P.i + F.val Pi P.s := Pi.s P > ; P.s := P.i Fa F. val := i (可以直接使用讲稿中的 MatchToken函数)五(07级)给定文法G(S):S ; A b
11、S、A B c A ; a AA > aB b51. 下图表示该文法的LR(O)自动机,部分状态所对应的项目集未给出,试补齐之(即分 别给出状态10, 12, 13 ,14,I5,I6和I7对应的项目集。IoIl6#2. 指出该LR(0)自动机中冲突的状态(并指出是哪种类型的冲突),以说明该文法不是LR(0)文法。3. 说明该文法是 SLR(1)文法。六(07级)为文法GE态机如下图所示:增加产生式S > E,得到增广文法G'S,并构造相应得LR( 0)有限状IoI3I6I8G(E)E -(LH E )E -FL TL II EL >EF >(F)Fd给定如下文
12、法(1)1. 该LR ( 0)有限状态机中存在两个冲突的状态,试指出它们,并分别说明这两个状 态是否可用SLR(1)分析方法解决?2. 根据课程的讲解,对于不可用SLR(1)分析方法解决的冲突状态,实际上可以根据句柄实际所期望的后跟符号来解决这一冲突。试通过分析该LR(0)有限状态机,指出相应句柄实际所期望的后跟符号,并说明你的结论是通过观察哪几个状态得到 的?七(07级)给定文法G(S):S -; S S a S b ;LR(1)项目集(状态)/归约冲突的项目集(状态)/归约冲突的项目集(状态)在该文法的LR(1)自动机中,存在有冲突的1. 给出这些项目集(状态)中任意一个存在移进2. 给出
13、这些项目集(状态)中任意一个存在归约八(07级)B31. 对于上图所给出的流图,为基本块B2构造DAG图。2. 对于上图所给出的流图,根据采用迭代求解数据流方程对活跃变量信息进行分析的 方法,求出 B2出口处、B2入口处以及 B4入口处的活跃变量集合,即LiveOut(B2),Liveln(B2)和 Liveln (B4)的值。假设迭代开始时LiveOut(B4)=。3. 利用LiveOut(B2)的结果,指出在语句(4)和语句(5)之间的程序点,哪些变量 是活跃的。4. 求该流图范围内,d在定值点(4)的DU链。九 以下是语法制导生成 TAC语句的一个S-属性文法(翻译模式):(06级)S
14、> if E then M S1 backpatch(E.truelist,M.gotostm);S.n extlist := merge(E.falselist, S 1. nextlist) S if E the n M 1 S1 N else M2 S2 backpatch(E.truelist, M 1.gotostm);backpatch(E.falselist, M 2.gotostm);S.n extlist := merge(S 1.n extlist, mergS > while M 1 E then M2 Si backpatch(Si.nextlist, Mi
15、.gotostm); backpatch(E.truelist, M 2.gotostm); S.n extlist := E.falselist;emit( goto' , M1.gotostm) S > S1; M S2 backpatch(S1.nextlist, M.gotostm) ; S.nextlist := S 2.nextlist S ; S' S.nextlist := S '.nextlist) S' id := A S'. nextlist :='emit (id .place := ' A . place)
16、 E j E1 or M E2 backpatch(E1.falselist,M.gotostm); E.truelist := merge(E 1.truelist, E 2.truelist); E.falselist := E 2.falselist E E1 and M E2 backpatch(E1.truelist,M.gotostm); E.falselist := merge(E 1.falselist, E 2 .falselist); E.truelist := E 2 .truelist Enot E1 E.truelist := E 1 .falselist ; E.f
17、alselist := E 1.truelist E > (E1 ) E.truelist := E 1.truelist ; E.falselist := E 1 .falselist E id 1 rop id 2 E.truelist := makelist ( n extstm); E.falselist := makelist ( n extstm+ 1); emit ( if id1.place rop.op id 2.place goto _);' emit ( ' goto _ 'Ar A1 + A2 A .place := n ewtemp;em
18、it( A .place ':= ' A1 . place + A 2 . place) Ar A1 ” A2 A .place := n ewtemp;emit( A .place ':= ' A1 . place - A. place) A > id A .place := newtemp;emit ( A .place := id .place) A > const A .place := newtemp;emit ( A .place := const .val ./*这里略去关于算术表达式更多的部分*/M > ; M.gotostm
19、:= n extstm N 一; N.nextlist := makelist(nextstm); emit( goto _' ) 其中,所用到的语义函数与讲稿中一致,列举如下:makelist(i):创建只有一个结点i的表,对应存放目标 TAC语句数组的一个下标merge(pi,p2):连接两个链表 pi和p2,返回结果链表backpatch(p,i):将链表p中每个元素所指向的跳转语句的标号置为inextstm :下一条TAC语句的地址emit ():输出一条TAC 语句,并使 nextstm加1newtemp :返回一个未使用过的名字属性 E .truelist , E .falselist , S .nextlist, S 'extlist, A .place, M .gotostm, N .nextlist以及所涉及到的 TAC语句与讲稿中一致,另外,要注意到本题中使用的文法非终结符含义:S (所有语句),S'(赋值语句),E(布尔表达式),A (算术表达式)。(此外,假设在语法制导处理过程中遇到的二义性问题可以按照某种原则处理比如规定 优先级,else匹配之前最近的if,运算的结合性,等等,这里
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 油炸食品制造的工艺流程考核试卷
- 浙江国企招聘2025中移铁通嘉兴海盐分公司招聘10人笔试参考题库附带答案详解
- 2025年中国铝锻压五金制品市场调查研究报告
- 树木育种与生态友好型建筑材料开发考核试卷
- 教师考试试题及答案
- 城市规划政策变动分析考核试卷
- 纺织原料企业的客户关系管理考核试卷
- 玻璃纤维增强复合材料生产工艺研究考核试卷
- 2025电缆等器材运输合同范本
- 2025年中国啤酒过滤纸板市场调查研究报告
- 2025年深圳二模考试试题及答案
- (一模)临沂市2025届高三高考第一次模拟考试生物试卷(含标准答案)
- 老年康体指导职业教育课件
- 微训练 一文多考 备考高效之诗歌《临安春雨初霁》陆游 - 教师版
- 新疆乌鲁木齐市米东区2024-2025学年九年级上学期期中数学试卷(含答案)
- 课件:《科学社会主义概论(第二版)》第一章
- 国际关系理论知到智慧树章节测试课后答案2024年秋外交学院
- 第一章整式的乘法单元(教学设计)-七年级数学下册同步备课系列(湘教版2024)
- 中考物理复习欧姆定律复习讲解学习
- 上海市2024年中考英语试题及答案
- TMT行业市场发展现状及趋势与投资分析研究报告
评论
0/150
提交评论