




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2001级编译原理试题(A) 200312一 简答题(60分)1编译程序按功能分为哪几个阶段?各个阶段的主要功能? 六个阶段: 词法分析,语法分析,语义分析,中间代码生成,中间代码优化和目标代码生成。 各阶段的主要功能: 词法分析: 检查词法错误并把源程序中的单词转换成一种内部形式(数据形式); 语法分析: 检查源程序的语法错误,当发现错误时输出一些信息,并尽可能的继续检查; 中间代码生成: 生成源程序的一种便于优化和便于产生目标代码的内部表示; 中间代码优化: 进行不依赖于目标机的优化,以产生高质量目标代码; 目标代码生成: 根据目标机特点从中间代码产生高质量目标代码。 2实现高级语言程序的途径有哪几种?它们之间的区别? 途径有两种: 解释器和编译器;解释器是源程序的一个执行系统,而编译器是源程序的一个转换系统;解释器直接由源程序得到运行结果,而编译器是生成等价于源程序的某种目标机程序。 3给出描述非0数字作为开始符的奇数字符串的正则表达式或正则式。 S Head Body Tail | Tail Head 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 Body Body D | D D 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Tail 1 | 3 | 5 | 7 | 9 4判断字符串anbn(n 0)是否可用确定自动机识别?如果能,则画出自动机,否则说明原因 anbn ( n0 )不能用确定自动机识别,因为确定自动机只有有限个状态,而a,b的个数是不定 的(也可以是无限的),而要识别的话需要每扫描一个a或b都要产生一个新的状态,所以无法识别。5对如下文法:GS :S a b S | a a B | a d B b b B | b 分别给出句子abaabbb和ad的句柄 句子ad的语法分析树为:S a d句子abaabbb的语法分析树为:SabSaaB b b B b所以句子abaabbb的句柄是b;句子ad的句柄是ad .6有如下文法,给出每个产生式的Predict集。 P begin S end S id := E ; S | l E n | id Follow( S ) = end Predict( P begin S end ) = begin Predict( S id := E ; S ) = id Predict ( S l ) = end Predict ( E n ) = n Predict ( E id )= id 7什么是可规约活前缀?举一例说明。 若活前缀是含句柄的活前缀,即有 = ,且是句柄,则活前缀为可归约活前缀。 例S a | b C d C e 则be为一个可归约活前缀8通过合并LR(1)文法中的同心状态得到的LALR(1)文法可能会产生哪些冲突?一定不会产生哪些冲突? 可能引入归约归约冲突,不会产生移入归约冲突。9 设对偶表(L,N)分别表示程序在当前位置的层数和偏移量,确定下面程序段中括号部分的内容。假设系统规定整型(int)变量占1个单元,实型(real)变量占2个单元。(L, N) Type at = array of 1.10 of int;() var x :real;() function f ( ( ?,M) var a: at, () b: at, () var x: real ) : int ( L , N ) ( L , N+2 ) ( L+1 , M+1 ) ( L+1,M+11)10 给出活动记录空间结构?并给出各部分的存储对象? 活动记录的空间结构: 临时变量区本层变量和返回值 局部变量区 形参变量区全局变量信息 返回值机器状态信息 全局变量环境 机器状态 过程层数控制状态信息 返回地址 动态链指针11 有如下文法: GS:S ( L ) | a L S P P , S P | l 给出该文法的动作文法打印每个a的嵌套深度。例如(a,(a),(a)打印1,2,2。 动作文法: G: S ( L ) | a L S P P S P | l : i :=0; : i := i+1; : i := i -1; : print(“%d”,i); 12 文法可分为几类;各举一例。 文法分为四类:0型(短语文法),1型(上下文有关),2型(上下文无关),3型(正则)文法。 0型:S abC | c, bCd; 1型:S abC , bC ad; 2型:S abC, Cbd; 3型:S a | bC , Cd; 13 Display表的作用? Display表用来表示变量访问环境,对于每一个AR,求出其变量访问环境,并把它以地址表的形式(Display表)保存在AR中,这样通过查询Display表就可以找到变量。14 如下是当前执行某个过程时的活动记录,设变量x的层数和偏移量分别为L和Off,说明如何访问变量x。局部Display表 sp . . . .Dsp Addr(x) = sp+D+L+Off15 当实参为变量,形参分别为变参和值参时,传参的区别。 形参为变参时,AR中保存实参变量的地址,改变形参即改变实参变量; 形参为值参时,AR中保存形参变量,其初始值为实参的值,此后形参与实参没有联系。二、(10分)说明如下文法是否是LL(1)文法,若不是,将其转换为LL(1)文法。最后给出该文法的LL(1)分析表。 GA:A B e B B b | a 文法中有左递归,不是LL(1)文法。 转换为 G : A B e B a B Bb B | Predict(A B e) = a Predict(B a B) = a Predict(Bb B) = b Predict(B ) = e LL(1)分析表: a b e A B e B a B B b B 三、(15分)判断如下文法是否是LR(1)文法,若不是,说明理由,是则画出它的LR状态图,并给出它的LR(1)分析表。 GS:S a | b | (T) T TeS | S 是LR(1)文法,状态图如下: (1): S a (4): TTeS(2): S b (5):TS(3): S(T) LR(1)分析表: a b e ( ) S T # 0 S2 S3 S4 1 1 Acc 2 R1 3 R2 4 S6 S7 S8 5 10 5 R5 R5 6 R1 R1 7 R2 R2 8 S6 S7 S8 5 9 9 S11 S13 10 S11 S12 11 S6 S7 S8 14 12 R3 13 R3 R3 14 R4 R4四、(15分)给出如下程序段的中间代码,并将其优化为最简代码形式。(中间代码的操作符可用自身代替)。其中A:Array of 1.10 of Array 1.10 of integer,整型变量占1个存储单元。z := 3; while j 10 do begin j := x +1;x := x+1 ;m: = x+1; if x 10 then y:= Aij+m else y:= Aij-m n := z + 10; end 中间代码:(1) (: = , 3 , z )(2) ( LABLE,L1)(3) ( LT, j , 10 , t1)(4) (JUMP0,L2)(5) ( + , x , 1 ,t2 )(6) ( : = , t2 , j )(7) ( + , x , 1 ,t3 )(8) ( : = , t3 , x )(9) ( + , x , 1 , t4 )(10) ( : = , t4 ,m )(11) ( LT , x ,10 , t5)(12) ( JUMP0, L3)(13) ( - , i ,1 , t6 )(14) ( * , t6, 10 , t7)(15) ( - , j , 1 ,t8)(16) ( + , t7 , t8 ,t9)(17) (* , t9 , 1, t10)(18) ( , A ,t10 , t11)(19) (+, t11,m ,t12)(20) ( : = , t12 , y )(21) (JUMP, L4)(22) (LABLE, L3) (23) ( - , i , 1 ,t13 )(24) ( * ,t13 ,10 , t14 )(25) ( - , j , 1 , t15 )(26) ( + , t14 , t15 , t16)(27) (* , t16 , 1 ,t17 )(28) ( , A , t17 , t18 ) (29) ( - , t18 , m ,t19 )(30) (LABLE , L4)(31) ( + , z , 10, t20 )(32) ( : = , t20, n)(33) ( JUMP, L1 )(34) ( LABLE, L2 ) 优化后的中间代码:(1) (: = , 3 , z )(2) ( LABLE,L1)(3) ( LT, j , 10 , t1)(4) (JUMP0,L2)(5) ( + , x , 1 ,t2 )(6) ( : = , t2 , j )(7) ( : = , t2 , x )(8) ( + , x , 1 , t3 )(9) ( : = , t3 ,m )(10) ( - , i ,1 , t4 )(11) ( * , t4 , 10 , t5)(12) ( - , j , 1 ,t6)(13) ( + , t5 , t6, t7 )(14) (* , t7 , 1, t8 )(15) ( , A ,t8 , t9 )(16) ( LT , x ,10 , t10)(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 科技园配套基础设施建设项目规划设计方案(仅供参考)
- 乡村医疗卫生人才队伍建设面临的主要问题与障碍
- 繁星春水:诗歌意境与情感表达教学教案
- 农村农户绿色生态种植协议规范
- 元宇宙概论 课件 -第十讲 元宇宙应用-数字人
- 生态产品产业链协同与资源整合路径
- 企业新闻发布记录表
- 顾客群体:消费者年龄分布表
- 中医药适宜技术推广的健康管理与服务模式
- 2025年音乐表演艺术专业综合能力考试试卷及答案
- 自动控制原理知到章节答案智慧树2023年广东工业大学
- 全国“创新杯”电类说课大赛课件一等奖作品组合逻辑电路设计 (说课)
- 最小作战单元-以盾棍叉战法为例
- 小学老师述职报告ppt
- LY/T 1704-2007白蛾周氏啮小蜂人工繁育及应用技术规程
- JJF 1078-2002光学测角比较仪校准规范
- GB/T 22843-2009枕、垫类产品
- GB 1903.21-2016食品安全国家标准食品营养强化剂富硒酵母
- 艺术硕士论证报告
- 帕金森病患者的睡眠障碍课件
- 公司质量目标过程绩效评价表
评论
0/150
提交评论