ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:28.87KB ,
资源ID:7733481      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7733481.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(编译原理上海交通大学期末考试.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

编译原理上海交通大学期末考试.docx

1、编译原理上海交通大学期末考试上海交通大学期末考试编译原理试题及答案一、对于文法 GS :S 1A | 0B | A 0S | 1AA B 1S | 0BB (3 分 ) 请写出三个关于 GS 的句子; (4 分 ) 符号串 11A0S 是否为 G S 的句型?试证明你的结论。 (3 分 ) 试画出 001B 关于 G S 的语法树。二、请构造一个文法,使其产生这样的表达式 E :表达式中只含有双目运算符 + 、 * ,且 + 的优先级高于 * , + 采用右结合, * 采用左结合,运算对象只有标识符 i ,可以用括号改变运算符优先级。要求给出该文法的形式化描述。三、设有语言 L= | 0,1

2、+ ,且 不以 0 开头,但以 00 结尾 。试写出描述 L 的正规表达式;构造识别 L 的 DFA (要求给出详细过程, 并画出构造过程中的 NDFA 、 DFA 的状态转换图,以及 DFA 的形式化描述 ) 。四、给定文法 GS :SABA aB | bS | cB AS | d (6 分 ) 请给出每一个产生式右部的 First 集; (3 分 ) 请给出每一个非终结符号的 Follow 集; (8 分 ) 请构造该文法的 LL(1) 分析表; (8 分 ) 什么是 LL(1) 文法?该文法是 LL(1) 文法吗?为什么?五、给定文法 GS :S SaA|aA AbS|b请构造该文法的以

3、 LR(0) 项目集为状态的识别规范句型活前缀的 DFA 。请构造该文法的 LR(0) 分析表。什么是 LR(0) 文法?该文法是 LR(0) 文法吗?为什么?什么是 SLR(1) 文法?该文法是 SLR(1) 文法吗?为什么?六、给定下列语句:ifa+bcthen x := a*(b-c) + (b*c-d)/e写出其等价的逆波兰表示;写出其等价的四元式序列。七、已知下列 C 语言程序:int * f()int a = 100; return&a;main()int * i = f();char a = “ compiler ” ; printf( “the result is %dn ”

4、, *i);1程序运行结果为: the result is 26157,请解释为什么程序运行的结果不是期望的“ the result is 100 ”?1.1 三个 0 和 1 数量相等的串1.2 S =1A = 11AA =11A 0S1.3第二题构造文法如下 :GE=(+,*,(,),i, E,F,T, P, E) ,其中 P 为:EE*F|F F T+F|T T (E)|i第三题( 1 )正规表达式: 1(0|1) * 00( 2 )第一步:将正规表达式转换为 NDFA第二步:将 NDFA确定化为 DFA:造表法确定化(3分)确定化后DFA M的状态转换表 (2分 )状态输入I 0I 1

5、t01SA,D,Bq 0q 1A,D,BD,B,CD,B重新命名q 1q 2q 3D,B,CD,B,C,ZD,Bq 2q 4q 32D,BD,B,CD,Bq 3q 2q 3D,B,C,ZD,B,C,ZD,Bq 4q 4q 3DFA 的状态转换图( 3分)第三步:给出 DFA 的形式化描述DFA M = ( q 0 , q 1 , q 2 , q 3 , q 4 , 0,1, t, q 0 , q 4 )t 的定义见 M 的状态转换表。第四题( 1 ) First(AB) = a, b, c First(aB) = aFirst(bS) = bFirst(c) = cFirst(AS) = a,

6、 b, cFirst(d) = d( 2 ) Follow(S) = #, a, b, c, d Follow(A) = a, b, c, dFollow(B) = #, a, b, c, d( 3 ) LL(1) 分析表( 8 分)V NV Tabcd#SS?ABS?ABS?ABAA ?aBA ?bSA ? CBB?ASB?ASB?ASB ? d3( 4 )对于文法 G 的每一个非终结符 U 的产生式 U ? 1 | 2 | | n,如果 SELECT(U ? i ) ? SELECT(U ? j ) = ? (i j, i,j=1, 2, , n),则文法 G 是一个 LL(1) 文法。该

7、文法是 LL(1) 文法。因为 SELECT(A ? aB) ? SELECT(A ? bS) ? SELECT(A ? C) = ?SELECT(B ? AS) ?SELECT(B ? d) = ?第五题拓广文法 1 分GS :SSS SaA S a A AbS A b 该文法的以 LR(0) 项目集为状态的识别规范句型活前缀的 DFA :该文法的LR(0)分析表:状态ACTIONGOTOab#SA0S 211S 3acc2r 3r 3r 33S 544r 2r 2 /S 6r 25r 5r 5r 56S 277r 4 /S 3r 4r 4 LR(0)文法:该文法的以LR(0) 项目集为状态

8、的识别规范句型活前缀的DFA 中没有冲突状态。该文法不是LR(0)文法4因为存在冲突状态: I4 和 I7 SLR(1) 文法:该文法的以 LR(0) 项目集为状态的识别规范句型活前缀的 DFA 中有冲突状态,冲突可用 FOLLOW 集解决。该文法不是 SLR(1) 文法。因为 FOLLOW(S)=a,b,# ,所以无法解决冲突第六题( 1 ) (1) ab+c (23) jumpf(8) xabc-*bc*d-e/+:=(23) .( 2 )第七题C 语言采用栈式存储分配方法作为其运行环境;f() 返回的是指向其活动记录某一位置的指针;f() 返回后,其活动记录被释放,并且,其对应的存储空间

9、被数组 a 占用,再次引用该指针时,其结果由于对回收的活动记录所占用的内存空间的再分配,其所指的值发生了改变。释放在前,引用在后的现象称 : Dangling Reference 。5历年试题及答案一 (每项选择 2 分,共 20 分)选择题1将编译程序分成若干个 “遍 ”是为了 _。a.提高程序的执行效率b.使程序的结构更加清晰c.利用有限的机器内存并提高机器的执行效率d.利用有限的机器内存但降低了机器的执行效率2构造编译程序应掌握 _。a.源程序 b.目标语言c.编译方法 d.以上三项都是3变量应当。a.持有左值 b.持有右值c.既持有左值又持有右值 d.既不持有左值也不持有右值4编译程序

10、绝大多数时间花在 _上。a.出错处理 b.词法分析c.目标代码生成 d.管理表格5词法分析器的输出结果是 _。a.单词的种别编码 b.单词在符号表中的位置c.单词的种别编码和自身值 d.单词自身值6正规式 MI 和 M2 等价是指 _ 。a. MI 和 M2 的状态数相等 b.Ml 和 M2 的有向弧条数相等。C.M1 和 M2 所识别的语言集相等 d. Ml 和 M2 状态数和有向弧条数相等7中间代码生成时所依据的是 。a语法规则 b词法规则 c语义规则 d等价变换规则8后缀式 ab+cd+/ 可用表达式 _来表示。a a+b/c+d b (a+b)/(c+d) c a+b/(c+d) d

11、a+b+c/d9程序所需的数据空间在程序运行前就可确定,称为 _管理技术。a.动态存储 b.栈式存储 c.静态存储 d.堆式存储10.堆式动态分配申请和释放存储空间遵守 _原则。a.先请先放 b.先请后放 c.后请先放 d.任意二(每小题 10 分,共 80 分)简答题1.画出编译程序的总体结构图,简述各部分的主要功能。2. 已知文法 GE:E ET+|T T TF* | F F F | a试证: FF* 是文法的句型,指出该句型的短语、简单短语和句柄 .3为正规式 (a|b) *a(a|b) 构造一个确定的有限自动机。4 设文法 G(S):S (L)|a S|aLL, S|S(1) 消除左递

12、归和回溯;6(2) 计算每个非终结符的 FIRST 和 FOLLOW ;(3) 构造预测分析表。5 已知文法A- aAd| aAb| 判断该文法是否 SLR ( 1)文法,若是构造相应分析表,并对输入串 ab#给出分析过程。6 构造算符文法 GH 的算符优先关系(含) 。GH : H H;M|MM d|aHb7已构造出文法 G( S)( 1)S BB( 2) B aB( 3) Bb1)。给出 DFA 图2) .给出 LR 分析表3)假定输入串为 abaab,请给出 LR 分析过程(即状态,符号,输入串的变化过程) 。8 将下面的语句翻译成四元式序列:while AC BA (1) A-aAd

13、(2)A-aAb (3)A- (2) 构造识别活前缀的 DFAFOLLOW(A)=d,b,#对于状态I0:FOLLOW(A)a= 对于状态I1:FOLLOW(A)a= 因为,在 DFA 中无冲突的现象,所以该文法是SLR(1) 文法。(3)SLR(1) 分析表状态ACTIONGOTOaBd#A0S2r3r3r311acc2S2r3r3r3383S5S44r1r1r15r2r2r2(4) 串 ab#的分析过程步骤状态栈符号栈当前字符剩余字符串动作10#ab#移进202#ab#归约 A- 3023#aAb#移进40235#aAb#归约 A-aAb501#A#接受6 【解答】由 Md 和 M a 得

14、: FIRSTVT(M)= d,a;由 H- H; 得: FIRSTVT(H)= ;由 HM 得: FIRSTVT(M) cFIRSTVT(H) ,即 FIRSTVT(H)=;,d,a由 Md 和 Mb 得: LASTVT(M)=d,b ;由 H- ,;m 得: LASTVT(H)= ;由 HM 得: LASTVT ( M )cLASTVT(H ),即 LASTVT(H)= ;,d,b对文法开始符 H,有 #H#存在,即有 =, #, 也即;, #d. #, b# 。对形如 P ab,或 P aQb,有 a=b,由 M a|b 得: a=b;对形如 P aR,而 b FIRSTVT(R) ,有

15、 ab。由 H ; M 得:; FIRSTVT(M) ,即:d,: a由 M aH 得: aFIRSTVT(H) ,即: a;, a; ,即:;, d;, b;由 M Hb 得: LASTVT(H)b ,即:; b, db, b b由此得到算符优先关系表,见表 3.5。7 【解答】( 1) LR 分析表如下:( 2)分析表状态ACTIONGOTOab#SB0s3s4121acc2S3S453s3s464r3r35R1R1r16R2R2R29(3) 句子 abaab 的分析过程表: 句子 abaab 的分析过程步骤状态符号栈输入串所得产生式0#0#abaad#1#03#abaad#2#034#a

16、baab#Bb3#036#aBaab#B aB4#02#Baab#5#023#Baab#6#0233#Baab#7#02334#Baab#8#02336#BaaB#9#0236#BaBad#10#025#BBad#11#01#Sd#12#d#13 识别成功8【解答】该语句的四元式序列如下(其中E1、 E2 和 E3 分别对应: AC BD, A=1 和 AD并且关系运算符优先级高) :100(j,A,C,102)101(j,_,_,113 )/*E1为 F*/102(j2, 4-3(3) 求出流图中的循环 :回边 5-2 对应的循环: 2、 5、 3、4;回边 4-3 对应的循环: 3、 41

17、0参考答案一、单项选择题 (共 10 小题,每小题 2 分,共 20 分 )1语言是A 句子的集合 B产生式的集合C符号串的集合 D 句型的集合2编译程序前三个阶段完成的工作是A 词法分析、语法分析和代码优化装 B代码生成、代码优化和词法分析C词法分析、语法分析、语义分析和中间代码生成订 D词法分析、语法分析和代码优化3一个句型中称为句柄的是该句型的最左A 非终结符号B短语C句子 D 直接短语线4下推自动机识别的语言是A0 型语言B 1 型语言C2 型语言D 3 型语言5扫描器所完成的任务是从字符串形式的源程序中识别出一个个具有独立含义的最小语法单位即A 字符 B单词 C句子 D句型6对应 C

18、homsky 四种文法的四种语言之间的关系是AL0 L1 L2 L3BL3 L2 L1 L0CL3=L2 L1 L0 DL0 L1 L2=L37词法分析的任务是A 识别单词 B分析句子的含义C识别句子 D 生成目标代码8常用的中间代码形式不含A 三元式 B 四元式 C逆波兰式 D 语法树9代码优化的目的是A 节省时间 B 节省空间C节省时间和空间 D把编译程序进行等价交换10代码生成阶段的主要任务是A 把高级语言翻译成汇编语言11B 把高级语言翻译成机器语言C把中间代码变换成依赖具体机器的目标代码D把汇编语言翻译成机器语言二、填空题(本大题共 5 小题,每小题 2 分,共 10 分)1编译程序

19、首先要识别出源程序中每个 ( 单词 ),然后再分析每个 (句子 )并翻译其意义。2编译器常用的语法分析方法有 (自底向上 )和 ( 自顶向下 )两种。3通常把编译过程分为分析前端与综合后端两大阶段。词法、语法和语义分析是对源程序的( 分析 ),中间代码生成、代码优化与目标代码的生成则是对源程序的 (综合 )。4程序设计语言的发展带来了日渐多变的运行时存储管理方案,主要分为两大类,即 (静态存储分配 )方案和 (动态存储分配 )方案。5对编译程序而言,输入数据是 (源程序 ),输出结果是 (目标程序 )。三、名词解释题 (共 5 小题,每小题 4 分,共 20 分)1词法分析词法分析的主要任务是从左向右扫描每行源程序的符号,按照词法规则从

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1