武汉理工编译原理复习题目(很全哦)

合集下载

(完整版)编译原理复习题及答案

(完整版)编译原理复习题及答案

编译原理复习题及答案一、选择题1.一个正规语言只能对应(B)A 一个正规文法B 一个最小有限状态自动机2.文法G[A]:A→εA→aB B→Ab B→a是(A)A 正规文法B 二型文法3.下面说法正确的是(A)A 一个SLR(1)文法一定也是LALR(1)文法B 一个LR(1)文法一定也是LALR(1)文法4.一个上下文无关文法消除了左递归,提取了左公共因子后是满足LL(1)文法的(A)A 必要条件B 充分必要条件5.下面说法正确的是(B)A 一个正规式只能对应一个确定的有限状态自动机B 一个正规语言可能对应多个正规文法6.算符优先分析与规范归约相比的优点是(A)A 归约速度快B 对文法限制少7.一个LR(1)文法合并同心集后若不是LALR(1)文法(B)A 则可能存在移进/归约冲突B 则可能存在归约/归约冲突C 则可能存在移进/归约冲突和归约/归约冲突8.下面说法正确的是(A)A Lex是一个词法分析器的生成器B Yacc是一个语法分析器9.下面说法正确的是(A)A 一个正规文法也一定是二型文法B 一个二型文法也一定能有一个等价的正规文法10.编译原理是对(C)。

A、机器语言的执行B、汇编语言的翻译C、高级语言的翻译D、高级语言程序的解释执行11.(A)是一种典型的解释型语言。

A.BASIC B.C C.FORTRAN D.PASCAL12.把汇编语言程序翻译成机器可执行的目标程序的工作是由(B)完成的。

A. 编译器B. 汇编器C. 解释器D. 预处理器13.用高级语言编写的程序经编译后产生的程序叫(B)A.源程序 B.目标程序C.连接程序D.解释程序14.(C)不是编译程序的组成部分。

A.词法分析程序B.代码生成程序C.设备管理程序D.语法分析程序15.通常一个编译程序中,不仅包含词法分析,语法分析,语义分析,中间代码生成,代码优化,目标代码生成等六个部分,还应包括(C)。

A.模拟执行器B.解释器 C.表格处理和出错处理D.符号执行器16.编译程序绝大多数时间花在(D)上。

编译原理复习题及答案doc下载

编译原理复习题及答案doc下载

编译原理复习题及答案doc下载以下是编译原理复习题及答案的正文内容:1. 什么是编译器的主要功能?编译器的主要功能是将源代码转换成目标代码,包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等步骤。

2. 词法分析的主要任务是什么?词法分析的主要任务是将源程序的字符序列转换成一系列的标记(token),并识别出其中的关键字、标识符、常量、运算符等。

3. 语法分析的目的是什么?语法分析的目的是检查源代码的语法结构是否符合语言的语法规则,并构建出抽象语法树(AST)。

4. 什么是语义分析?语义分析是编译过程中的一个阶段,它在语法分析的基础上,对源代码进行上下文相关的检查,确保变量的声明和使用是合法的,以及类型检查等。

5. 中间代码生成的作用是什么?中间代码生成的作用是将抽象语法树转换成一种中间表示形式,这种表示形式既接近于源代码,又方便后续的优化和目标代码生成。

6. 代码优化的目的是什么?代码优化的目的是为了提高程序的执行效率和减少资源消耗,通过各种优化技术改进中间代码。

7. 目标代码生成包括哪些步骤?目标代码生成包括指令选择、寄存器分配、指令调度等步骤,最终生成可以在特定硬件上运行的目标代码。

8. 什么是编译器前端和后端?编译器前端包括词法分析、语法分析、语义分析和中间代码生成,而后端包括代码优化和目标代码生成。

9. 什么是词法单元?词法单元是词法分析过程中识别的基本单位,包括关键字、标识符、常量、运算符等。

10. 什么是左递归?左递归是指在文法的产生式中,一个非终结符直接或间接地在其产生式右边以自身开始的情况。

以上是编译原理的复习题及答案,供参考和学习使用。

编译原理考试题及答案

编译原理考试题及答案

编译原理考试题及答案一、选择题(每题2分,共20分)1. 编译器的主要功能是什么?A. 代码优化B. 代码解释C. 代码翻译D. 代码调试答案:C2. 编译过程中的语法分析阶段主要解决什么问题?A. 词法问题B. 语法问题C. 语义问题D. 代码生成问题答案:B3. 在编译原理中,哪些技术用于处理程序中的递归结构?A. 正则表达式B. 有限自动机C. 上下文无关文法D. 属性文法答案:C4. 编译器的哪个部分负责将中间代码转换为目标代码?A. 词法分析器B. 语法分析器C. 语义分析器D. 代码生成器答案:D5. 编译器中的词法分析器主要使用哪种数据结构来存储输入的源代码?A. 栈B. 队列C. 链表D. 哈希表答案:C6. 在编译原理中,哪个概念用于描述程序语言的语法结构?A. 语法树B. 抽象语法树C. 控制流图D. 数据流图答案:B7. 编译器的哪个阶段负责检查变量是否被正确声明和使用?A. 词法分析B. 语法分析C. 语义分析D. 代码优化答案:C8. 编译器在哪个阶段会进行代码优化?A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:D9. 在编译原理中,哪些技术用于生成有效的目标代码?A. 语法分析B. 语义分析C. 代码优化D. 目标代码生成答案:D10. 编译器的哪个部分负责将源代码中的注释和空白字符去除?A. 词法分析器B. 语法分析器C. 语义分析器D. 代码生成器答案:A二、填空题(每题2分,共20分)1. 编译器的前端包括词法分析、语法分析和______。

答案:语义分析2. 编译器的后端包括中间代码生成、______和目标代码生成。

答案:代码优化3. 编译原理中的______用于描述词法单元。

答案:词法规则4. 编译原理中的______用于描述程序语言的语法结构。

答案:上下文无关文法5. 编译原理中的______用于描述程序语言的语义。

答案:属性文法6. 编译原理中的______用于描述程序控制流。

编译原理试题汇总+编译原理期末试题(8套含答案+大题集)(完整资料).doc

编译原理试题汇总+编译原理期末试题(8套含答案+大题集)(完整资料).doc

此文档下载后即可编辑编译原理考试题及答案汇总一、选择1.将编译程序分成若干个“遍”是为了_B__。

A . 提高程序的执行效率B.使程序的结构更加清晰C. 利用有限的机器内存并提高机器的执行效率D.利用有限的机器内存但降低了机器的执行效率2.正规式 MI 和 M2 等价是指__C__。

A . MI 和 M2 的状态数相等和 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)前缀答:前缀——是指符号串任意首部。

2)可归前缀答:可归前缀——是指规范句型的一个前缀,这种前缀包含句柄且不含句柄之后的任何符号。

3)活前缀答:活前缀——规范句型的一个前缀,这种前缀不含句柄之后的任何符号。

或给定文法规范句型的可归前缀的任意首部。

4)简单短语答:简单短语——设G[Z]是给定文法,w=xuy ∈V +,为该文法的句型,如果满足下面两个条件:① Z xUy ; ② U ⇒u ;则称句型xuy 中的子串u 是句型xuy 的简单短语。

5)扫描遍答:扫描遍——指编译程序对源程序或中间代码程序从头到尾扫描一次。

6)句柄答:句柄——给定句型中的最左简单短语就是句柄。

7)句型答:句型——设G 是一个给定的文法,S 是文法的开始符号,如果S x(其中x ∈V *),则称x 是文法的一个句型。

8)句子答:句子——设G 是一个给定的文法,S 是文法的开始符号,如果S x (其中x ∈V T *),则称x 是文法的一个句子。

9)非终结符答:非终结符——出现在文法产生式的左部且能派生出符号或符号串的那些符号称为非终结符号。

10)终结符答:终结符——出现在文法产生式的右部且不能派生出符号或符号串的那些符号称为终结符号。

11)属性文法答:一个属性文法形式的定义为一个三元组AG ,AG=(G ,V ,E )。

其中G 为一个上下文无关文法;V 为属性的有穷集;E 为一组语义规则。

12)语法制导翻译答:语法制导翻译——语法制导翻译就是在语法分析的过程中,当进行推导或归约时同步完成附加在所使用的产生式上的语义规则描述的动作,从而实现语义处理。

或:为文法中每个产生式配上一组语义规则,并且在语法分析过程中,随着分析的步步进展,当进行推导或归约时同步完成附加在所使用的产生式上的语义规则描述的动作,从而进行翻译的办法称作语法制导翻译。

13)后缀式答:后缀式——一种把运算量(操作数)写在前面,把算符写在后面(后缀)的表示法。

编译原理复习题集.docx

编译原理复习题集.docx

《编译原理》复习题集1.名词解释短语句柄文法上下文无关文法LL (1)文法LR (1)文法语法分析无环路冇向图(DAG) 后缀式语法制导翻译遍局部优化词法分析语法分析语义分析源语言源程序目标语言中间语言(中间表示)2.简答题(1)编译程序和高级语言有什么区别?(2)编译程序的工作分为那几个阶段?(3)简述自下而上的分析方法。

(4)口标代码有哪几种形式?生成口标代码吋通常应考虑哪几个问题?(5)何谓优化?按所涉及的程序范围可分为哪几级优化?(6)简述代码优化的目的和意义。

3.叙述下面的正规式描述的语言,并画岀接受该语言的最简DFA的状态转换图。

(1 101 )*0*4.Pascal语言无符号数的止规定义如卜•:num T digit (. digit) ? (E(+|—)? digit) ?其中digit表示数字,用状态转换图表示接受无符号数的确定有限自动机。

5.画出Pascal中实数(不带正负号,可带指数部分)的状态转换图。

6.用状态转换图表示接收(a|b)*aa的确定的冇限自动机。

7.处于/*和*/之间的串构成注解,注解屮间没有*/。

画出接受这种注解的DFA的状态转换图。

8.某操作系统下合法的文件名为device:name.extension其中第一部分(device:)和第三部分(.extension) 口J缺省,device, name和extension都是字母串,长度不限,但至少为1,画出识别这种文件名的确定有限自动机。

9.构造一个DFA,它接受Z={0, 1}± 0和1的个数都是偶数的字符串。

10.设有非确定的有自限动机NFAM二({A, B, C}, {0, 1}, 5, {A}, {C}),其中:5 (A, 0) = {C} 5(A, 1)二{A, B} 6 (B, 1) = {C} 5 (C, 1) = {C}。

请画出状态转换距阵和状态转换图。

11.设匕{a,b,c}*是满足下述条件的符号串构成的语言:(1)若出现a ,则其后至少紧跟两个c ;(2)若出现b,其后至少紧跟一个c o试构造识别L的最小化的DFA ,并给出描述L的正规表达式。

编译原理(专科)——武汉理工大学

编译原理(专科)——武汉理工大学

一、单选( 每题参考分值2.5分 )1、PASCAL中过程说明的局部量的地址分配在。

A. 调用者的数据区中B. 被调用者的数据区中C. 主程序的数据区中D. 公共数据区中正确答案:【B】2、不能被如下状态转换图识别的句子是。

A. a0bB. a1010bC. b00bD. ab正确答案:【D】3、编译程序的语法分析器接受以____为单位的输入,并产生有关信息供以后各阶段使用。

A. 表达式B. 产生式C. 单词D. 语句正确答案:【C】4、编译程序使用()区别标识符的作用域。

A. 说明标识符的过程或函数名B. 说明标识符的过程或函数的静态层次C. 说明标识符的过程或函数的动态层次D. 标识符的行数正确答案:【B】5、算符优先分析法从左到右扫描输入串,当栈顶出现()时进行归约。

A. 素短语B. 直接短语C. 句柄D. 最左素短语正确答案:【D】6、文法G所描述的语言是()的集合。

A. 文法G的字汇表V中所有符号组成的符号串B. 文法G的字汇表V的闭包组成的所有符号串C. 由文法的识别符号推出的所有符号串D. 由文法的识别符号推出的所有终结符号串正确答案:【D】7、编译程序是对_____程序进行翻译。

A. 汇编语言B. 机器语言C. 自然语言D. 高级语言正确答案:【D】8、代码优化时所依据的是()。

A. 等价变换规则B. 词法规则C. 语法规则D. 语义规则正确答案:【A】9、过程的DISPLAY表中记录了()。

A. 过程的嵌套层次B. 过程的连接数据C. 过程的返回地址D. 过程的入口地址正确答案:【A】10、一个文法G是四元组,分别是:非终结符,终结符,开始符号,以及()。

A. 句子B. 句型C. 单词D. 产生式正确答案:【D】11、程序基本块是指____。

A. 一个子程序B. 一个仅有一个入口和一个出口的语句C. 一个没有嵌套的程序段D. 一组顺序执行的程序段,仅有一个入口和一个出口正确答案:【D】12、无符号常数的识别与拼数工作通常在阶段完成。

编译原理总结复习题包括答案.doc

编译原理总结复习题包括答案.doc

.....二、概念题1、设有文法:P→P+Q|QQ→Q*R|RR→(P)|i(1)证明 Q*R+Q+Q 是它的一个句型。

( 3 分)(2)给出 Q*R+Q+Q 的所有短语,直接短语和句柄。

(4 分)(3)给出句子i+ i*i的最右推导。

(4 分)(4)给出句子i+ i*i的最左推导。

(4 分)2、设有文法:E→E+T|T T→T*F|F F→(E)|i(1)证明 E+T*F 是它的一个句型。

( 3 分 )答案: E E T E T * F(2)给出 E+T*F 的所有短语,直接短语和句柄。

(4 分)短语 :E+T*F, T*F,直接短语 : T*F句柄 : T*F(3)给出句子i+ i*i的最右推导。

(4 分)3、写出表达式 a+b*(c-d) 对应的逆波兰式和三元式序列。

答案:逆波兰式:(abcd-*+)三元式序列 :OP ARG1 ARG2(1) - c d(2) * b (1)(3) + a (2)三、词法分析题给出下面语言的相应文法n n m m≥L1={a b a b |n,m 0}答案: S →AB|A|B|∑A → aAb|abB→ aBb|ab给出下面语言的相应文法L2={a n b n c i |n≥1,i≥0}答案: S→ AB|BA→ a|aAB→ bBc|bc给出下面语言的相应文法L3={ a n b n c m| m,n≥ 1n,为奇数,m为偶数}。

答案:文法 G(S):S→ACA→aaAbb/abC→ccCcc/cc四、词法分析题1、构造下面正规式相应的DFA((0|1)* |(11)*)*(要求:先将正规式转化为NFA,再将 NFA 确定化,最小化)2、构造下面正规式相应的DFA1(0|1)* 101答案:I I0 I1{X} Ф{A,B,C}{A,B,C} { B,C} { B,C,D}{B,C} { B,C} { B,C,D}{B,C,D} { B,C,E} { B,C,D}{B,C,E} { B,C} {B,C,D,y}{B,C,D,y} {B,C,E} { B,C,D}3、构造一个 DFA,它接受={a ,b}上所有包含 ab 的字符串。

完整版编译原理复习题及答案

完整版编译原理复习题及答案
一个上下文无关文法消除了左递归,提取了左公共因子后是满足LL(1)文法的( A )
A必要条件B充分必要条件
下面说法正确的是( A )
A一个正规文法也一定是二型文法
B一个二型文法也一定能有一个等价的正规文法 编译原理是对(C)。
A、机器语言的执行B、汇编语言的翻译
D、咼级语言程序的解释执行
(A)是一种典型的解释型语言。
A.线性表B.树
词法分析器的输出结果是(D)。
A、单词自身值
C、单词的种别编码 词法分析器不能(D)
A.识别出数值常量
C.扫描源程序并识别记号
C.完全图D.堆栈
B、单词在符号表中的位置
D、单词的种别编码和自身值
B.过滤源程序中的注释
D.发现括号不匹配
文法:G:StxSx|y所识别的语言是(D)。
A、xyxB、(xyx)*
A.状态数相等
C.所识别的语言相等
若状态k含有项目“ 归约的语法分析方法是
LR分析法
源程序
(C)。
Af a
(D)。
B.LR(0)分析法
a•为(B)项目。
B.移进
_宀曰 一定是
但不能用正则表达式表示。
无法判定是否存在
C. a0b0a
D. cba
(D)
D. bc10
C.非终结符集
(A)
C.二义性的
A.BASICB.C
把汇编语言程序翻译成机器可执行的目标程序的工作是由(B)完成的。
A.编译器
B.汇编器
C.解释器
D.
预处理器
用高级语言编写的程序经编译后产生的程序叫
(B)
A•源程序
B.目标程序
C.连接程序

武汉理工大学-编译原理考试范围-中国好学长系列之小灰灰的爸爸

武汉理工大学-编译原理考试范围-中国好学长系列之小灰灰的爸爸

目标代码生成
目标代码形式 目标代码生成时需考虑的问题 简单目标代码生成方法 表达式操作的目标代码 赋值的目标代码 临时变量的特点、寄存器的பைடு நூலகம்配。
语义分析
符号表: 作用;标识符、类型、值的表示;数 组的组织; 程序的语义分析:属性文法 声明部分 表达式 语句部分
中间代码的生成
动作文法(属性文法) 动作文法的实现 中间代码生成: 表达式的中间代码 复杂变量的中间代码(数组变量) 语句的中间代码(转移语句、循环语句) 过函声明的中间代码
编译原理总结
基本概念
编译器 、解释器 编译过程 、各过程的功能 编译器在程序执行过程中的作用 编译器的实现途径
文法与语言
文法、文法分类 正规文法与上下文无关文法 语法分析树、二义性、推导、归约、短语 简单短语、句柄。
词法分析
正则表达式(正规式) 有限自动机:DFA NFA 正则表达式、NFA、DFA之间的关系、 DFA的化简 DFA的实现
中间代码优化
优化的目标、要求、对象 基本块、基本块的划分、程序流程图 优化方法:局部、循环、全局 DAG图及其在局部优化中的应用 循环的查找及优化
运行时的存储空间管理
存储结构、各区的存储分配的特点 常用的存储分配策略 AR(活动记录)的结构、内容 控制链、存取链、Display表 参数传递
语法分析
语法分析方法: 自顶向下 自底向上
自顶向下分析方法
思想与关键问题 两种分析方法: [条件、分析过程] LL(1)文法分析:First、Follow、 Select 递归下降方法 LL(1)分析方法 等价变换:消除左递归、左公共前缀

编译原理-复习题-答案

编译原理-复习题-答案

一、选择题(请在前括号内选择最确切的一项作为答案划一个勾,多划按错论) ACDBB BCCBD CCBBB ACBDCDACAB BADDC二、填空题(每空2分)1.表格处理、出错处理2.编译程序3.是否生成目标代码4.源程序、目标程序5.语法成分6.自上而下、自下而上7.句子8.左9.开始符号、直接推导、句子、匹配10.直接归约、开始符号11.传地址12.语法13.句柄14.语义规则15.词法分析、语法分析、中间代码生成、16.执行性、说明性17.源程序、单词符号18.语法范畴三、简答题1. 写一文法,使其语言是偶正整数的集合,要求:(1)允许0打头;(2)不允许0打头。

答案:(1)G[S]=({S,P,D,N},{0,1,2,…,9},P,S)P:S->PD|DP->NP|ND->0|2|4|6|8N->0|1|2|3|4|5|6|7|8|9(2)G[S]=({S,P,R,D,N,Q },{0,1,2,…,9},P,S)P:S->PD|P0|DP->NR|NR->QR|QD->2|4|6|8N->1|2|3|4|5|6|7|8|9Q->0|1|2|3|4|5|6|7|8|92. 已知文法 G[E] 为:E→T|E+T|E-TT→F|T*F|T/FF→ ( E ) |i①该文法的开始符号(识别符号)是什么?②请给出该文法的终结符号集合 VT 和非终结符号集合 VN 。

③找出句型 T+T*F+i 的所有短语、简单短语和句柄。

答案:①该文法的开始符号(识别符号)是E。

②该文法的终结符号集合VT={+、-、*、/、(、)、i}。

非终结符号集合VN={E、T、F}。

③句型T+T*F+I的短语为i、T*F、第一个T、T+T*F+i; 简单短语为i、T*F、第一个T;句柄为第一个T。

3. 构造正规式相应的 NFA : 1(0|1)*101答案:1(0|1)*101对应的NFA为4. 写出表达式(a+b*c)/(a+b)-d的逆波兰表示和三元式序列。

【精品】编译原理复习题集.docx

【精品】编译原理复习题集.docx
(2)写一个翻译方案,打卬该程序每个变量id的嵌套深度。
18.构造下面文法的LL(1)分析表。
DtTL
T t int|real
L — id R
R t , id R | £
19.已知文法G(S)
S-a| A| (T) TT S|S写出句子((a, a), a)的规范归约过程及每一步的句柄。
20.已知文法G(E)
S' t S
S t S B|B
B t0 | 1
27.写岀表达式(a + b*c)/(a+b)-d的逆波兰表示及三元式序列。
28.何谓优化?按所涉及的程序范围可分为哪几级优化?
29.目标代码有哪几种形式?生成目标代码时通常应考虑哪几个问题?
30・把表达式
■(a+b)*(c+d)+(a+b+c)
翻译成三元式。
8.构造一个DFA,它接受2>{0,1}上0和1的个数都是偶数的字符串。
9.给出与下图的NFA等价的正规式。
10.把下面的NFA确定化。
11.下面两个文法屮哪一个不是LR(1)文法?对非LR(1)的那个文法。给出那个有 移进一归约冲突的规范的LR(1)项目集。
S-aAc A t bbA|b
S ~》aAc A t bAb|b
34.—个C语言程序如下:
func(il, i2, i3)
long il, i2, i3;
{
long jl, j2, j3;
printf (^Addresses of il,i2, i3二%o, %o, %o\n〃,&il, &i2, &i3); printf (^Addresses of jl, j2, j3 = %o, %o, %o\rT, &jl, &j2, &j3);

编译原理期末测试练习题及答案

编译原理期末测试练习题及答案

一、单选题1、编译程序是一种( )。

A.汇编程序B.目标程序C.翻译程序D.解释程序正确答案:C2、若文法G定义的语言是无限集,则文法必然是( )。

A.二义性的B.上下文无关的C.递归的D.无二义性的正确答案:C3、一个上下文无关文法G包括四个组成部分,它们是一组非终结符号,一组终结符号,一个开始符号,以及一组( )。

A.句子B.单词C.产生式D.句型正确答案:C4、文法G:S →x xS | y 所识别的语言是( )。

A.xxy∗B. xx∗yxC.(xxy)∗D.(xx)∗y正确答案:D5、文法G:S →xS | y 所识别的语言是( )。

A.(xy)∗B.xy∗C.x∗yD. xx∗yx正确答案:C6、在自上而下的语法分析中,应从( )开始分析。

A.句型B.句子C.文法开始符号D.句柄正确答案:C7、语法分析器的输入是()。

A.符号表B.目标程序C.源程序D.Token序列正确答案:D8、LL(1)分析法中“1”的含义是在输入串中查看一个输入符号,其目的是()。

A.确定最左推导B.确定是否推导C.确定句柄D.确定使用哪一个产生式进行展开正确答案:D9、同正规式(a|b)∗等价的正规式为( )。

A.a∗|b∗B.(a|b)+C.(ab)∗D.(a∗|b∗)+正确答案:D10、已知文法G[S]:S→A1,A→A1|S0|0,与G等价的正规式是( )。

A.1∗|0∗1B.0(1|10)∗1C.0(0|1)∗D.1(10|01)∗0正确答案:B11、与(a|b)∗(a|b)等价的正规式是( )。

A.a∗|b∗B.(ab)∗(a|b)C.(a|b)(a|b)∗D.(a|b)∗正确答案:C12、如果一个正规式所代表的集合是无穷的,则它必含有的运算是( )。

A.接运算“·”B.或运算“|”C.括号“(”和“)”D.闭包运算“* ”正确答案:D13、在语法分析处理中,FIRST集合、FOLLOW集合均是( )。

编译原理试题及答案(期末复习版).pdf资料

编译原理试题及答案(期末复习版).pdf资料

词法分析器输出的结果是单词的种别编码和自身值,选 C。
正规式 M1 和 M2 所识别的语言集相等,故选 C。
选 c。
选 b。
选 C
堆式动态分配申请和释放存储空间不一定遵守先请后放和后请先放的原则,故选 d
. 【解答】
1.2 所示。
语法分析器:在词法分析
“程序”。 中间代码生成器:按照
H→M 得:LASTVT(M)cLASTVT(H),即 LASTVT(H)={;,d,b}
H,有#H#存在,即有#=#,#<FIRSTVT(H),LASTVT(H)>#,也即#
#<d. #<a,;>#,d>#, b>#。
P→…ab…,或 P→…aQb…,有 a=b,由 M→a|b 得:a=b;
优化:对中间代码
目标代码生成器:把中间代码翻译

出错处理程序对出现在源程序中的错误进行处理。此
. 【解答】
E 的短语有 FF^^*;相对于 T 的短语有
相对于 F 的短语有 F^;F^^;简单短语有 F;F^;句柄为 F.
. 【解答】
DFA 如图 2.66 所示。

和 M2 所识别的语言集相等 d. Ml 和 M2 状态数和有向弧条数相等
.中间代码生成时所依据的是—c。
.语法规则 b.词法规则 c.语义规则 d.等价变换规则
.后缀式 ab+cd+/可用表达式__b_来表示。
. a+b/c+d b. (a+b)/(c+d) c. a+b/(c+d) d. a+b+c/d 9.程序所需的
求出流图中的回边,

编译原理复习(有答案)

编译原理复习(有答案)

第一章引论1.编译过程的阶段由词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成六个阶段2.编译程序的概念3.编译程序的结构例:〔B〕不是编译程序的组成局部。

A. 词法分析器;B. 设备管理程序C. 语法分析程序;D. 代码生成程序4.遍的概念对源程序(或其中间形式)从头至尾扫描一次并进展有关加工处理,生成新的中间形式或最终目标程序,称为一遍。

5.编译程序与解释程序的区别例:解释程序和编译程序是两类程序语言处理程序,它们的主要区别在于〔D〕。

A. 单用户与多用户的差异B. 对用户程序的过失能力C. 机器执行效率D. 是否生成目标代码第三章文法和语言文法的概念字母表、符号串和集合的概念与运算例:(ab|b)*c 与下面的那些串匹配?〔ACD〕A. ababbc;B. abab;C. c;D. babc;E. aaabc例:ab*c*(a|b)c 与后面的那些串匹配?〔BC〕A.acbbcB.abbcacC.abcD.acc例:(a|b)a+(ba)*与后面的那些串匹配? 〔ADE〕A.baB.bbaC.ababaD.aaE.baa文法的定义〔四元组表示〕文法G定义为四元组〔V N,V T,P,S〕V N:非终结符集V T:终结符集P:产生式〔规那么〕集合S:开场符号〔或识别符号〕例:给定文法,A::= bA | cc,下面哪些符号串可由其推导出〔①② ⑤〕。

①cc ②b*cc ③b*cbcc ④bccbcc ⑤bbbcc什么是推导例:文法G:E->E+T|E-T|TT->T*F|T/F|FF->(E)|i试给出下述表达式的推导:i*i+i推导过程:E->E+T->T+T->T*F+T->F*F+T->i*F+T->i*i+T->i*i+F->i*i+i●句型、句子的概念例:假设G一个文法,S是文法的开场符号,如果S=>*x,那么称x是句型。

编译原理习题及答案(整理后)

编译原理习题及答案(整理后)

编译原理习题及答案(整理后)第一章1、将编译程序分成若干个“遍”是为了b.使程序的结构更加清晰2、构造编译程序应掌握a.源程序b.目标语言c.编译方法3、变量应当c.既持有左值又持有右值4、编译程序绝大多数时间花在上。

d.管理表格5、不可能是目标代码。

d.中间代码6、使用可以定义一个程序的意义。

a.语义规则7、词法分析器的输入是b.源程序8、中间代码生成时所遵循的是-c.语义规则9、编译程序是对d.高级语言的翻译10、语法分析应遵循c.构词规则二、多项选择题1、编译程序各阶段的工作都涉及到b.表格管理c.出错处理2、编译程序工作时,通常有阶段。

a.词法分析三、填空题b.语法分析c.中间代码生成e.目标代码生成1、解释程序和编译程序的区别在于是否生成目标程序2、编译过程通常可分为5个阶段,分别是词法分析、语法分析中间代码生成、代码优化和目标代码生成。

3、编译程序工作过程中,第一段输入是源程序,最后阶段的输出为标代码生成程序。

4、编译程序是指将源程序程序翻译成目标语言程序的程序。

一、单项选择题1、文法G:S→某S某|y所识别的语言是a.某y某b.(某y某)某c.某ny某n(n≥0)d.某某y某某2、文法G描述的语言L(G)是指α,α∈VT某}a.L(G)={α|S+某α,α∈V某}b.L(G)={α|ST某α,α∈(V∪V某)}d.L(G)={α|S+α,α∈(V∪V某)}c.L(G)={α|STNTN3、有限状态自动机能识别a.上下文无关文法c.正规文法b.上下文有关文法d.短语文法4、设G为算符优先文法,G的任意终结符对a、b有以下关系成立a.若f(a)>g(b),则a>bc.a~b都不一定成立b.若f(a)5、如果文法G是无二义的,则它的任何句子αa.最左推导和最右推导对应的语法树必定相同b.最左推导和最右推导对应的语法树可能不同c.最左推导和最右推导必定相同d.可能存在两个不同的最左推导,但它们对应的语法树相同6、由文法的开始符经0步或多步推导产生的文法符号序列是a.短语b.句柄c.句型d.句子7、文法G:E→E+T|TT→T某P|PP→(E)|I则句型P+T+i的句柄和最左素短语为a.P+T和ib.P和P+Tc.i和P+T+id.P和T8、设文法为:S→SA|AA→a|b则对句子aba,下面是规范推导。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

* ⇒一.名词解释:1)前缀答:前缀——是指符号串任意首部。

2)可归前缀答:可归前缀——是指规范句型的一个前缀,这种前缀包含句柄且不含句柄之后的任何符号。

3)活前缀答:活前缀——规范句型的一个前缀,这种前缀不含句柄之后的任何符号。

或给定文法规范句型的可归前缀的任意首部。

4)简单短语答:简单短语——设G[Z]是给定文法,w=xuy ∈V +,为该文法的句型,如果满足下面两个条件:① Z xUy ; ② U ⇒u ;则称句型xuy 中的子串u 是句型xuy 的简单短语。

5)扫描遍答:扫描遍——指编译程序对源程序或中间代码程序从头到尾扫描一次。

6)句柄答:句柄——给定句型中的最左简单短语就是句柄。

7)句型答:句型——设G 是一个给定的文法,S 是文法的开始符号,如果S x(其中x ∈V *),则称x 是文法的一个句型。

8)句子答:句子——设G 是一个给定的文法,S 是文法的开始符号,如果S x (其中x ∈V T *),则称x 是文法的一个句子。

9)非终结符答:非终结符——出现在文法产生式的左部且能派生出符号或符号串的那些符号称为非终结符号。

10)终结符答:终结符——出现在文法产生式的右部且不能派生出符号或符号串的那些符号称为终结符号。

11)属性文法答:一个属性文法形式的定义为一个三元组AG ,AG=(G ,V ,E )。

其中G 为一个上下文无关文法;V 为属性的有穷集;E 为一组语义规则。

12)语法制导翻译答:语法制导翻译——语法制导翻译就是在语法分析的过程中,当进行推导或归约时同步完成附加在所使用的产生式上的语义规则描述的动作,从而实现语义处理。

或:为文法中每个产生式配上一组语义规则,并且在语法分析过程中,随着分析的步步进展,当进行推导或归约时同步完成附加在所使用的产生式上的语义规则描述的动作,从而进行翻译的办法称作语法制导翻译。

13)后缀式答:后缀式——一种把运算量(操作数)写在前面,把算符写在后面(后缀)的表示法。

*14)短语答:短语——设G[Z]是给定文法,w=xuy ∈V +,为该文法的句型,如果满足下面两个条件:① Z xUy ; ② U u ;则称句型xuy 中的子串u 是句型xuy 的短语。

或:句型语法树的全部子树的叶从左到右排列起来构成的符号串均是句型的短语。

15)基本块答:基本块——源程序或者中间代码程序中只有一个入口和一个出口的顺序执行的代码段。

16)语义规则答:对于文法的每个产生式都配备了一组属性的计算规则,称为语义规则。

17)语法分析答:语法分析——按文法的产生式识别输入的符号串是否为一个句子的分析过程。

18)四元式答:四元式——是一个带有四个域的记录结构,这四个域分别称为操作符域、左运算对象域、右运算对象域及运算结果域。

二.简答题:1) 什么是句子?什么是语言?解答:句子——设G 是一个给定的文法,S 是文法的开始符号,如果S x (其中x ∈V T *),则称x 是文法的一个句子。

语言——语言是句子的集合。

或——设G[S]是给定文法,则由文法G 所定义的语言L(G)可描述为:L(G)={x │S x,x ∈V T *} 。

2) DFA 与NFA 有何区别 ?解答:DFA 与NFA 的区别表现为两个方面:一是NFA 可以有若干个开始状态,而DFA 仅只有一个开始状态。

另一方面,DFA 的映象M 是从K ×∑到K ,而NFA 的映象M 是从K ×∑到K 的子集,即映象M 将产生一个状态集合(可能为空集),而不是单个状态。

3) 自顶向下的语法分析方法的基本思想是什么?解答:从文法的开始符号开始,根据给定的输入串并按照文法的产生式一步一步的向下进行直接推导,试图推导出文法的句子,使之与给定的输入串匹配。

4) 自底向上的语法分析方法的基本思想是什么?解答:从给定的输入串(终结符串)开始,根据文法的规则一步一步的向上进行直接归约,试图归约到文法的开始符号。

5) 一个上下文无关文法G 包括哪四个组成部分?解答:一组非终结符号,一组终结符号,一个开始符号,以及一组产生式。

6) 在自底向上的语法分析方法中,分析的关键是什么?解答:关键是寻找句柄。

7)在自顶向下的语法分析方法中,分析的关键是什么?解答:关键是选择候选式。

8)编译程序中语法分析器接收以什么为单位的输入?解答: 接收以单词为单位的输入。

9)若一个文法是递归的,则它所产生的语言的句子是可枚举的吗?解答: 它所产生的语言的句子不是可枚举的,而是无穷多个。

10)编译程序生成的目标程序是不是一定是机器语言的程序?解答:不一定是机器语言的程序。

11)词法分析器是用于做什么的?解答:词法分析器是用于识别单词的。

12)“用高级语言书写的源程序都必须通过编译,产生目标代码后才能投入运行”这种说法正确吗?解答:不正确。

13)把汇编语言程序翻译成机器可执行的目标程序的工作是由什么完成的?14)图示运行时存储空间的划分(分为哪几个区)。

解答: 一般分为静态区和动态区:程序代码区、静态数据区、栈区和堆区15)词法分析的主要任务是什么?解答:词法分析器的任务是对构成源程序的字符串从左到右逐个字符逐个字符地进行扫描,依次把它们识别为一个一个具有独立意义的单词,并确定其属性,再转换为长度统一的属性字并输出。

16)常用的中间语言种类有哪几种?解答: 常用的中间语言种类有逆波兰表示、三元式、四元式和树形表示。

17)文法G所描述的语言是什么的集合?解答:是由文法的开始符号推出的所有终结符串的集合。

或说是句子的集合。

18)乔姆斯基把文法分为四种类型,即0型、1型、2型、3型。

其中2型文法叫什么?解答: 2型文法叫上下文无关文法。

19)编译程序是一种解释程序吗?还是什么程序?解答:编译程序是一种翻译程序。

20)按逻辑上划分,编译程序第二步工作是什么?解答:编译程序第二步工作是语法分析。

21)源程序是用高级语言编写的,目标程序是机器语言程序或汇编语言程序,则其翻译程序称为什么?解答: 其翻译程序称为编译程序。

22)编译方式与解释方式的根本区别为什么?解答:编译方式与解释方式的根本区别在于是否生成目标代码。

23)常见的动态存贮分配策略有哪两种?解答:常见的两种动态存贮分配策略是栈式动态分配策略和堆式动态分配策略。

24)常用的参数传递方式有哪三种?解答:常见的参数传递方式有传地址、传值和传名三种方式。

25)语法分析的任务是什么?解答:语法分析的任务是识别给定的终结符串是否为给定文法的句子。

26)局部优化是局限于一个什么范围内的一种优化?解答: 是局限于一个基本块范围内的一种优化。

27)文法等价的定义是什么?解答: 设G1和G2是给定的文法,如果有L(G1)= L(G2),则称G1与G2等价。

28)在语法分析处理中,FIRST集合、FOLLOW集合、SELECT集合均是什么集合?解答: 均是终结符集。

29)通常一个编译程序中应包括哪七个部分?解答: 通常一个编译程序中应包含词法分析,语法分析,语义分析与中间代码生成,代码优化,目标代码生成以及表格处理和出错处理等七个部分。

32)如果编译程序生成的目标程序是汇编语言程序,则源程序的执行分为哪三个阶段?解答: 源程序的执行分为三个阶段: 编译阶段,汇编阶段和运行阶段。

33)翻译程序是这样一种程序,它能够将用什么转换成与其等价的用乙语言书写的程序?解答:能够将用甲语言书写的程序转换成与其等价的用乙语言书写的程序。

34)说明下面文法G[S]是二义性文法:S→SaS|SbS|cSd|eS|f解答:fafbf是文法G[S]的一个句子,并且有两个不同的最右推导。

(1)S =>SaS =>SaSbS =>SaSbf=>Safbf=>fafbf(2)S =>SbS =>Sbf=>SaSbf =>Safbf=>fafbf因此说明此文法有二义性。

35)在属性文法中,综合属性与继承属性是如何传递信息的?解答: 综合属性用于自下而上传递信息,继承属性用于自上而下传递信息。

36)代码优化的主要目标是什么?解答: 代码优化的主要目标是如何提高目标程序的运行速度和如何减少目标程序运行时所需的空间。

37)写一个文法,使其语言是无符号二进制实数(不含指数)。

解答:文法G(N):N→L.L|LL→LB|BB→0|1三.应用题1)消除下列文法G[A]的左递归。

E→E-T∣TT→T/F∣FF→( E )∣i解答:消除文法G[E]的左递归后得到:其中:开始状态:0终止状态:2bE →TE ′E ’→-T E ′∣εT →FT ′T ’→/FT ′∣εF →( E )∣i2) 消除下列文法G[A]的左递归。

A →AaB ∣BB →BbC ∣CC →eD ∣DD →(A)∣d解答:消除文法G[A]的左递归后得到:A →BA ˊA ˊ→aBA ˊ∣εB →CB ˊB ˊ→bcB ˊ∣εC →eD ∣DD →(A)∣d3)给定下列自动机:把此自动机转换为确定自动机DFA 。

解答:从而可得DFA 如图:4)正规式(a|b )*a(a|b) 构造一个等价的有限自动机。

解答:⇒四.设计题(1)给定文法G[S′] 及相应翻译方案为:1.S'→S {print:“a”}2.S→r D {print:“b”}3.D→D,i {print:“c”}4.D→i{print:“d”}a. 按chomsky分类法,文法G属于哪一型文法?b. 符号串ri,i,i是不是该文法的一个句型,请证实。

c. 若是句型,写出该句型的所有短语、简单短语,以及句柄。

d. 构造识别该文法的活前缀的DFA。

e. 判断该文法是LR(0)还是SLR(1),并构造其相应的语法分析表。

f. 对于ri,i,i这个输入符号串,经该翻译方案翻译后的输出是什么?解答:a.文法G属于2型(上下文无关)文法。

b.符号串r i,i,i是该文法的一个句型。

证:S'⇒S⇒rD⇒rD,i⇒rD,i,i⇒ r i,i,i,得证。

或证:构造语法树见图4,可知符号串r i,i,i是该文法的一个句型。

c.句型r i,i,i的短语有:①r i,i,i;②i,i,i;③i,i;④第一个i简单短语有:第一个i句柄有:第一个id.求得文法G的识别全部活前缀的DFA见图3:图3 识别全部活前缀的DFAe.∵在项目集I4中存在冲突项目,∴文法G不是LR(0)文法。

FOLLOW(S')={#}FOLLOW(S)={#}FOLLOW(D)={ ,,#}而由于{ ,}∩FOLLOW(S)={ ,}∩{#}=Φ,所以文法G是SLR(1)文法。

求得文法G 的SLR (1)分析表见表1:f .可以先求得该句子的语法树(见图4),然后通过剪枝的方式进行归约, 最后归约到文法的开始符号,在归约的过程中同步产生输出符号串dccba 。

相关文档
最新文档