软件学院编译原理试题2
编译原理期末试题(含答案+大题集+重要知识点)

《编译原理》期末试题(一)一、是非题(请在括号内,正确的划√,错误的划×)(每个2分,共20分)1.编译程序是对高级语言程序的解释执行。
(× )2.一个有限状态自动机中,有且仅有一个唯一的终态。
(×)3.一个算符优先文法可能不存在算符优先函数与之对应。
(√ )4.语法分析时必须先消除文法中的左递归。
(×)5.LR分析法在自左至右扫描输入串时就能发现错误,但不能准确地指出出错地点。
(√)6.逆波兰表示法表示表达式时无须使用括号。
(√ )7.静态数组的存储空间可以在编译时确定。
(×)8.进行代码优化时应着重考虑循环的代码优化,这对提高目标代码的效率将起更大作用。
(×) 9.两个正规集相等的必要条件是他们对应的正规式等价。
(× )10.一个语义子程序描述了一个文法所对应的翻译工作。
(×)二、选择题(请在前括号内选择最确切的一项作为答案划一个勾,多划按错论)(每个4分,共40分) 1.词法分析器的输出结果是_____。
A.( ) 单词的种别编码B.( ) 单词在符号表中的位置C.( ) 单词的种别编码和自身值D.( ) 单词自身值2.正规式M 1 和M 2 等价是指_____。
A.( ) M1和M2的状态数相等B.( ) M1和M2的有向边条数相等C.( ) M1和M2所识别的语言集相等D.( ) M1和M2状态数和有向边条数相等3.文法G:S→xSx|y所识别的语言是_____。
A.( ) xyx B.( ) (xyx)* C.( ) xnyxn(n≥0) D.( ) x*yx*4.如果文法G是无二义的,则它的任何句子α_____。
A.( )最左推导和最右推导对应的语法树必定相同B.( ) 最左推导和最右推导对应的语法树可能不同C.( ) 最左推导和最右推导必定相同D.( )可能存在两个不同的最左推导,但它们对应的语法树相同5.构造编译程序应掌握______。
编译原理试题及答案

编译原理试题及答案一、选择题1. 编译器的主要功能是什么?A. 程序设计B. 程序翻译C. 程序调试D. 数据处理答案:B2. 下列哪一项不是编译器的前端处理过程?A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:D3. 在编译原理中,词法分析器的主要作用是什么?A. 识别程序中的关键字和标识符B. 将源代码转换为中间代码C. 检查程序的语法结构D. 确定程序的运行环境答案:A4. 语法分析通常采用哪种方法?A. 自顶向下分析B. 自底向上分析C. 正则表达式匹配D. 直接解释执行答案:B5. 语义分析的主要任务是什么?A. 检查程序的语法结构B. 检查程序的类型安全C. 识别程序中的变量和常量D. 将源代码转换为机器代码答案:B二、简答题1. 简述编译器的工作原理。
答案:编译器的工作原理主要包括以下几个步骤:词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成。
词法分析器将源代码分解成一系列的词素;语法分析器根据语法规则检查词素序列是否合法;语义分析器检查程序的语义正确性;中间代码生成器将源代码转换为中间代码;代码优化器对中间代码进行优化;最后,目标代码生成器将优化后的中间代码转换为目标机器代码。
2. 什么是词法分析器,它在编译过程中的作用是什么?答案:词法分析器是编译器前端的一个组成部分,负责将源代码分解成一个个的词素(tokens),如关键字、标识符、常量、运算符等。
它在编译过程中的作用是为语法分析器提供输入,是编译过程的基础。
三、论述题1. 论述编译器中的代码优化技术及其重要性。
答案:代码优化是编译过程中的一个重要环节,它旨在提高程序的执行效率,减少资源消耗。
常见的代码优化技术包括:常量折叠、死代码消除、公共子表达式消除、循环不变代码外提、数组边界检查消除等。
代码优化的重要性在于,它可以显著提高程序的运行速度和性能,同时降低程序对内存和处理器资源的需求。
四、计算题1. 给定一个简单的四则运算表达式,请写出其对应的逆波兰表达式。
《编译原理》考试题

《编译原理》考试题一、选择题:(每题2分,共20分)1.文法G所描述的语言是的集合。
A)文法G的字汇表V中所有符号组成的符号串B)文法G的字汇表V的闭包V*中的所有符号串C)由文法的识别符号推出的所有符号串D)由文法的识别符号推出的所有终结符号串2.设有文法G[S]=({b},{S,B},S,{S→b|bB,B→bS}),试问该文法所描述的语言是。
A)L(G[S])={b i|i≥0} B)L(G[S])={b2i|i≥0}C)L(G[S])={b2i+1|i≥0} D)L(G[S])={b2i+1|i≥1}3.一个句型中的最左称为该句型的句柄。
A)短语B)简单短语C)素短语D)终结符号4. 正则文法能产生下面的语言:L={a n b n|n≥1}。
A)存在一个B)存在多个C)不存在D)无法判断5.编译程序中的语法分析器接受以为单位的输入,并产生有关信息供以后各阶段使用。
A)表达式B)产生式C)单词D)语句6.编译方法中,自顶向下的语法分析方法有。
A)简单优先分析方法B)算符优先分析方法C)SLR方法D)LL(1)分析方法7.简单优先分析法每次都是对进行归约。
A)最左短语B)简单短语C)句柄D)最左素短语8.LR语法分析栈中存放的状态是识别的DFA状态。
A)前缀B)可归前缀C)项目D)句柄9.表达式-(a+b)/(c-d)-(a+b*c)的逆波兰表示是(@代表单目运算-)。
A)ab+cd-/@bc*a+- B)ab+/cd@bc*a+--C)ab+@cd-/abc*+- D)ab+cd-/abc*+@-10.乔姆斯基(Chomsky)把文法分成四种类型,即0型、1型、2型和3型。
其中,3型文法是。
A)上下文无关文法B)上下文有关文法C)正则文法D)短语文法二、填空题:(每空1分,共20分)1.假设G是一个文法,S是文法的开始符号,如果S *x,则称x是。
2.已知文法G[E]:E→E+T|T,T→T*F|F,F→(E)|i;该文法的开始符号是,终结符号集合V T是,非终结符号集合V N 是,句型T+T*F+i的短语有T+T*F+i,第一个T,T*F和。
编译原理第2阶段测试题OK

江南大学现代远程教育第二阶段测试卷考试科目:《编译原理》第4章至第7章(总分100分)时间:90分钟学习中心(教学点)批次:层次:专业:学号:身份证号:姓名:得分:一、选择与填充(30)1.有限状态自动机能识别( C )。
A. 上下文无关文法B. 上下文有关文法C. 正则文法D. 短语文法2.在语法分析处理中, FIRST集合、 FOLLOW集合、 SELECT集合都是( B )。
A. 非终极符集 B.终极符集 C.字母表 D. 状态集3.在自底向上的语法分析方法中,分析的关键是( A )。
A. 寻找句柄B. 寻找句型C. 消除递归D. 消除公共前缀4._____尾文作文法_________________是这样一种动作文法,即动作符只出现于产生式的末尾。
5.文法要满足两个条件:______没有左递归__________和_______没有公共前缀__________________才可以使用自顶向下的语法分析方法。
6. 文法G[E]: E→E+T|T, T→T*P|P, P→(E)|I, 则句型P+T+i的短语有( B )。
A. i, P+TB. P, P+T, i, P+T+iC. P+T+iD. P, P+T, i二、若有文法G[S]为:S->Ac|aB A->df B->be,请写出语言L(G[S])的全部元素。
(12)三、文法G[S]为:(18)S→VV→T | ViTT→F| T+FF→)V* |(试给出句型ViFi( 的短语,简单(直接)短语,句柄。
四、写出表达式(a+b*c)/(a+b)-d的逆波兰表示和三元式序列。
(15)五、下面的文法是不是LL(1)文法?若是,请构造相应的LL(1)分析表。
(25)S → aD D → STe | εT → bH | H H → d | ε。
编译原理与技术模拟试题二

编译原理与技术模拟试题二一、填空题(20分)1.1LR(1)分析法中,L的含义是,R的含义是。
1.2源程序经过编译后产生的程序称为。
1.3词法分析的输出由和两部分组成。
1.4文法G:S→AB, A→aA|ε, B→bBc|bc描述的语言L(G)= 。
1.5允许用户随意地动态申请与释放内存空间应采用存储分配技术。
1.6一个文法产生的_______________________称为该文法的语言。
1.7语义错误可分为静态语义错误和动态语义错误,“运算符与运算对象的类型不一致”属于______________错误,“无穷递归”属于______________错误。
二、单选题(20分)2.1编译程序是对______。
A. 汇编语言的翻译B. 高级语言的解释执行C. 机器语言的执行D. 高级语言的翻译2.2编译过程中阶段不是必需的。
A. 语法分析B. 语义分析C. 代码优化D. 目标代码生成2.3为数组声明a:array[1..4, 0..3]中a分配的存储空间的首地址为base_a,且每个数组元素占据一个存储单元。
若以行为主存放,数组元素a[3,1]在存储空间中相对base_a的偏移量是。
A. 8B. 9C. 10D. 112.4识别正则语言的自动机是。
A. 下推自动机B. 有限自动机C. 线性界限自动机D. 图灵机2.5表达式“a+b* (c-d)”的后缀式为。
A. ab+cd-*B. abcd-*+C. ab+*cd-D. abcd*+-2.6一个文法产生的语言是指。
A. 从开始符号出发推导的所有符号串的集合B. 所有终结符和非终结符形成的集合C. 所有短语构成的集合D. 该文法产生的句子的集合2.7函数(或过程)调用时,。
A.值调用方式下将实参的右值传递给形参,引用调用方式下将实参的左值传递给形参B.值调用方式下将实参的左值传递给形参,引用调用方式下将实参的右值传递给形参C. 值调用方式下将形参的右值传递给实参,引用调用方式下将形参的左值传递给实参D. 值调用方式下将形参的左值传递给实参,引用调用方式下将形参的右值传递给实参2.8用来描述控制进入和离开活动方式的树结构被称为。
编译原理期末试题(二)含答案

《编译原理》期末试题(二)、是非题:1. 一个上下文无关文法的开始符,可以是终结符或非终结符。
2. 一个句型的直接短语是唯一的。
( ) () 3. 已经证明文法的二义性是可判定的。
( ) 4. 每个基本块可用一个 DAG 表示。
( ) 5. 每个过程的活动记录的体积在编译时可静态确定。
( ) 6.2 型文法一定是 3 型文法。
()7. 一个句型一定句子。
( )8. 算符优先分析法每次都是对句柄进行归约。
X ( )9. 采用三元式实现三地址代码时,不利于对中间代码进行优化。
()10. 编译过程中,语法分析器的任务是分析单词是怎样构成的。
( ) 11. 一个优先表一定存在相应的优先函数。
X ( )12. 目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。
( )13. 递归下降分析法是一种自下而上分析法。
( )14. 并不是每个文法都能改写成 LL (1) 文法。
( )15. 每个基本块只有一个入口和一个出口。
( )16. 一个 LL (1) 文法一定是无二义的。
( )17. 逆波兰法表示的表达试亦称前缀式。
( )18. 目标代码生成时,应考虑如何充分利用计算机的寄存器的问题。
( )19. 正规文法产生的语言都可以用上下文无关文法来描述。
( )20. 一个优先表一定存在相应的优先函数。
( )21.3 型文法一定是 2 型文法。
( )22. 如果一个文法存在某个句子对应两棵不同的语法树, 则文法是义性的。
( )答案: 1. × 2. × 3. × 4. √ 5. √ 6. × 7.× 8. × 9.√ 10 ×11. × 12. √ 13. × 14. √ 15. √ 16. √ 17. × 18. √ 19. √ 20. × 21. √ 22. √、填空题:2. 编译过程可分为 ( 词法分析) 代码生成 )五个阶段。
编译原理试题汇总-编译原理期末试题(8套答案大题集)

编译原理考试题及答案汇总一、选择1.将编译程序分成若干个“遍”是为了_B__。
A . 提高程序的执行效率B.使程序的结构更加清晰C. 利用有限的机器内存并提高机器的执行效率D.利用有限的机器内存但降低了机器的执行效率2.正规式 MI 和 M2 等价是指__C__。
A . MI 和 M2 的状态数相等 B.Ml 和 M2 的有向弧条数相等。
C .M1 和 M2 所识别的语言集相等 D. Ml 和 M2 状态数和有向弧条数相等3.中间代码生成时所依据的是 _C_。
A.语法规则 B.词法规则 C.语义规则 D.等价变换规则4.后缀式 ab+cd+/可用表达式__B_来表示。
A. a+b/c+d B.(a+b)/(c+d) C. a+b/(c+d) D. a+b+c/d6.一个编译程序中,不仅包含词法分析,_A____,中间代码生成,代码优化,目标代码生成等五个部分。
A.( ) 语法分析 B.( )文法分析 C.( )语言分析 D.( )解释分析7.词法分析器用于识别__C___。
A.( ) 字符串 B.( )语句 C.( )单词 D.( )标识符8.语法分析器则可以发现源程序中的___D__。
A.( ) 语义错误 B.( ) 语法和语义错误C.( ) 错误并校正 D.( ) 语法错误9.下面关于解释程序的描述正确的是__B___。
(1) 解释程序的特点是处理程序时不产生目标代码(2) 解释程序适用于 COBOL 和 FORTRAN 语言(3) 解释程序是为打开编译程序技术的僵局而开发的A.( ) (1)(2) B.( ) (1) C.( ) (1)(2)(3) D.( ) (2)(3)10.解释程序处理语言时 , 大多数采用的是__B___方法。
A.( ) 源程序命令被逐个直接解释执行B.( ) 先将源程序转化为中间代码 , 再解释执行C.( ) 先将源程序解释转化为目标程序 , 再执行D.( ) 以上方法都可以11.编译过程中 , 语法分析器的任务就是__B___。
完整版编译原理试题

编译原理考试题及答案汇总一、选择1.将编译程序分成若干个“遍”是为了 _B__。
A . 提高程序的执行效率 B. 使程序的结构更加清晰C. 利用有限的机器内存并提高机器的执行效率D. 利用有限的机器内存但降低了机器的执行效率 2.正规式 MI 和 M2 等价是指 __C__。
A . MI 和 M2 的状态数相等 B.Ml 和 M2 的有向弧条数相等。
C .M1 和 M2 所识别的语言集相等 D. Ml 和 M2 状态数和有向弧条数相等3.中间代码生成时所依据的是 _C_。
A.语法规则 B •词法规则 C •语义规则 D •等价变换规则 4.后缀式ab+cd+/可用表达式__B_来表示。
A. a+b/c+d B . (a+b)/(c+d) C a+b/(c+d) D a+b+c/d6. 一个编译程序中,不仅包含词法分析, _A _______ ,中间代码生成,代码优化,生成等五个部分。
A .( ) 语法分析B .( ) 文法分析C .( ) 语言分析D .( ) 解释分析 7. 词法分析器用于识别 __C___。
A .( ) 字符串B .( ) 语句C .( ) 单词D .( ) 标识符 8. 语法分析器则可以发现源程序中的 ___D__。
A .( ) 语义错误B .( ) 语法和语义错误C .( ) 错误并校正D .( ) 语法错误 9. 下面关于解释程序的描述正确的是 __B___。
(1) 解释程序的特点是处理程序时不产生目标代码 (2) 解释程序适用于 COBOL 和FORTRAN 语言 (3) 解释程序是为打开编译程序技术的僵局而开发的A .( ) (1)(2)B .( ) (1)C .( ) (1)(2)(3)D .( ) (2)(3) 10. 解释程序处理语言时 , 大多数采用的是 __B___方法。
A .( ) 源程序命令被逐个直接解释执行B .( ) 先将源程序转化为中间代码 , 再解释执行C .( ) 先将源程序解释转化为目标程序 , 再执行D .( ) 以上方法都可以11. 编译过程中 , 语法分析器的任务就是 (1) 分析单词是怎样构成的 (2) (3) 分析语句和说明是如何构成程序的 A .( ) (2)(3) B .( ) (2)(3)(4)C .( ) (1)(2)(3) D .( ) (1)(2)(3)(4) 12. 编译程序是一种 ___C__。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
北京工业大学年度第学期
计算机学院级【编译原理】考试题(A)
考试形式:开卷考试时间:200年月日学号姓名
1.(6分)回答下列问题
1)在存储管理中,为什么在活动记录内为临时变量分配空间?
解:
活动记录为一次过程调用(函数调用)中的局部数据提供栈式存储空间,随过程调用被分配,随过程调用的结束而释放;临时变量用于保存表达式计算中的中间结果,在活动记录中为临时变量分配空间,可以保证该空间随过程调用被分配,随活动记录的释放被自动释放。
2)在符号表管理中,为什么将变量名保存在符号表中?
解:
符号表中将保存变量名及其各种属性,变量名将用于变量的识别、涉及变量的语义分析、变量名与存储空间的绑定、以及类型、作用域、存储地址等各种变量属性的设置、获取等各种维护功能。
2.(8分)试消除下列文法中的左递归。
S →SaA|Se|B A →BbA|B B →cSd|ε
解:
消除左递归提取左因子改写后的文法
S →SaA|Se|B A →BbA | B S →BS’
→S(aA | e )| B → B ( bA | ε) S’→aA S’ | e S’ | ε
引进非终结符S’引进非终结符A’ A →B A’
S →BS’ A →B A’A’→bA | ε
S’→(aA | e )S’ | εA’→bA | ε B →cSd|ε
3. (15分)写出下列文法中各候选式的FIRST集和各非终结符的FOLLOW集,构造该文法的LL(1)分析表,并说明它是否为LL(1)文法。
S →aA|BA
A→cB|ε
B →bB|ε
解:
各候选式的FIRST集 (4分)
FIRST(aA)={a} FIRST(BA)={ b,c,ε } FIRST(cB)={c}
FIRST(ε)={ε} FIRST(bB)={ b } FIRST(ε)={ε}
各非终结符的FOLLOW集 (4分)
FOLLOW(S)= {#} FOLLOW(A)= {#} FOLLOW(B)= { c,#}
LL(1)分析表 (5分)
a b c #
S S →aA S →BA S →BA S →BA
A A→c
B A →ε
B B →bB B →ε B →ε
说明它是否为LL(1)文法 (2分) 判断1分,理由1分
因为LL(1)分析表无冲突,所以该文法是LL(1)文法。
4.(18分)给定文法G[S]
S →L + L |L
L → LB|B
B → 0|1
(1) 构造拓广文法,按LR(0)分析的需要画出识别这个拓广文法的所有规范句型活前缀的DFA。
解2:
0 Sˊ→0S 1
1 S →0L 2+ 6L 8
2 S →0L2
3 L →0,6L 2,8 B 7
4 L →0,6 B 3
5 B →0,2,6,80 4
6 B →0,2,6,81 5
I0:{(0,0),(1,0),(2,0),(3,0),(4,0),(5,0),(6,0)}
I1:{(0,1)}
I2:{(1,1),(2,1),(3,1),(5,0),(6,0)}
I3:{(4,1)}
I4:{(5,1)}
I5:{(6,1)}
I6:{(1,2),(3,0),(4,0),(5,0),(6,0)}
I7:{(3,2)}
I8:{(1,3),(3,1),(5,0),(6,0)}
(2) 求出这个文法的SLR(1)分析表。
解:
给产生式编号:①S→L + L ②S→L③L→LB ④L→B ⑤B → 0 ⑥B→1 FOLLOW(S)={#}
FOLLOW(L)={0,1,+,#}
FOLLOW(B)={0,1,+,#}
5.(7分)写出能产生字母表{x,y}上的不含两个相邻的x,且不含两个相邻的y的全体符号串的有限状态自动机。
解:
x
6.(16分)设文法G[E]:
E → RP|P P → (E)|i
R → RP+| RP* |P+|P*
画出句子
i+i*(i+i)
的语法分析树,
给出其最右推导和最左归约,并指出它的句柄。
解:
(1)语法分析树:
E
R P R
P
*
(
E
)+
i
i P R
P P
+
i
i
(2)
最右推导:
E → RP → R(E) → R(RP) → R(Ri) → R(P+i) → R(i+i) → RP*(i+i) → Ri*(i+i) → P+i*(i+i) → i+i*(i+i)
最左归约:
i+i*(i+i) ← P + i*(i+i) P+i*(i+i) ← Ri*(i+i) Ri*(i+i) ← RP*(i+i) RP*(i+i) ← R(i+i) R(i+i) ← R(P+i) R(P+i) ← R(Ri)
R(Ri) ← R(RP)
R(RP) ← R(E)
R(E) ← RP
RP ← E
句子i+i*(i+i)的句柄为:i;
7. (10分)下面是关于文法
S → xYS|yXS|ε
X → yXX|x
Y → xYY|y
的一个语法制导定义,
S → xYS
1S.nx := Y.nx + S
1
.nx + 1
S.ny := Y.ny + S
1
.ny
S → yXS
1 S.nx := X.nx + S
1
.nx
S.ny := X.ny + S
1
.ny + 1
S →εS.nx := 0
S.ny := 0
X → yX
1 X
2
X.nx := X
1
.nx + X
2
.nx
X.ny := X
1
.ny + X
2
.ny + 1
X → x X.nx := 1
X.ny := 0
Y → xY
1 Y
2
Y.nx := Y
1
.nx + Y
2
.nx + 1
Y.ny := Y
1
.ny + Y
2
.ny
Y → y Y.nx := 0
Y.ny := 1
(1)请说明上述语法制导定义的作用是什么。
(2)按照此语法指导定义给出句子xxxyyyxy的语义分析过程或画出带注释
的语法分析树.
解:
(1)该语法制导定义的作用是统计句子中的x和y的个数;(4分)
(2)按照该语法制导定义对句子xxxyyyxy进行语义分析的结果为:
S.nx = 4;S.ny = 4;(6分)
附加题将左线性文法G=(V N,V T,P,S)转换成等价的有限状态自动机M=(Q,V T, δ,q0,F)的一种等价变换中认为“对产生式A→Ba∈P则M中用移动A∈δ(B,a)与之对应”,请问这种对应使用的是自顶向下的分析思想还是自底向上的分析思想?为什么?(本题第一问最高奖励3分,第二问最高奖励7分)
解:
使用的是自底向上的分析方法——归约。
A∈δ(B,a)表示在状态B遇到输入a时,到达状态A,将状态看成是目前已经分析出来的中间结果,这样就相当于目前的分析已经得到了前缀B,加上a后相当于获得前缀A,也就是相当于B和紧接着的a可以归约成A,这与产生式A→Ba所表示出来的意义是相同的,所以产生式A→Ba∈P则M中用移动A∈δ(B,a)与之对应。
(答到这里可以得4分)
要得满分7分,必须根据上述思路给出“对于任意的左线性文法G,存在FA M 与之等价:L(M)=L(G)”即:先构造与给定文法G=(V N,V T,P,S)等价的FA M,然后证明所构造的FA与所给的文法G等价。