嘉兴学院08-09编译原理期中练习题答案

合集下载

大学计算机编译原理练习题及答案

大学计算机编译原理练习题及答案

大学计算机编译原理练习题及答案编译原理是计算机科学中的重要基础课程,其目的是让学生了解编译器的工作原理、构造与实现方法。

为了帮助同学们更好地掌握编译原理,以下是一些练习题及其答案,供大家参考学习。

1. 什么是编译器?它的主要功能是什么?编译器是一种将源代码(高级语言)转化为目标代码(机器语言)的软件工具。

它的主要功能包括词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等。

2. 简要解释编译器的工作原理。

编译器的工作原理可以分为以下几个步骤:a. 词法分析:将源代码分解成各个词素(tokens)的序列。

b. 语法分析:根据源代码的语法规则,构建语法树。

c. 语义分析:对语法树进行语义检查,确保程序的合法性。

d. 中间代码生成:将语法树转化为中间代码,方便后续的优化。

e. 代码优化:对中间代码进行各种优化,提高程序的性能和效率。

f. 目标代码生成:将优化后的中间代码转化为目标代码(机器语言)。

3. 解释以下概念:词法单元、词法分析器、上下文无关文法、语法分析器。

- 词法单元:是最小的语法单元,是词法分析器生成的结果。

可以是标识符、关键字、常量、运算符等。

- 词法分析器:负责将源代码分解为词法单元序列的工具,将输入的字符流转化为记号流。

- 上下文无关文法:是一种形式语言,用于描述程序中的语法结构,不依赖于上下文环境。

常用于语法分析器进行代码语法分析和生成语法树。

- 语法分析器:根据给定的上下文无关文法,对词法分析器生成的记号流进行语法检查和语法树的构建。

4. 下面是一个简化的算术表达式的上下文无关文法描述,请写出其对应的语法树。

```<expression> -> <term> | <expression> + <term> | <expression> - <term> <term> -> <factor> | <term> * <factor> | <term> / <factor><factor> -> <number> | (<expression>)<number> -> [0-9]+```例如,对于表达式 "3 + 5 * (2 - 1)",对应的语法树为:```expression/ \expression +/ \ / \term + term| \ / |factor | factor| | |3 term factor/ \ |factor 5 2|term|factor|1```5. 简要解释语义分析的主要任务。

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

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

编译原理习题及答案(整理后)第⼀章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→xSx|y所识别的语⾔是。

c. x n yx n(n≥0)d. x*yx*2、⽂法G描述的语⾔L(G)是指。

a. L(G)={α|S + ?α , α∈VT*} b. L(G)={α|S*?α, α∈VT*}c. L(G)={α|S *?α,α∈(VT∪V N*)} d. L(G)={α|S+ ?α, α∈(VT∪V N*)}3、有限状态⾃动机能识别。

a. 上下⽂⽆关⽂法b. 上下⽂有关⽂法c.正规⽂法d. 短语⽂法4、设G为算符优先⽂法,G的任意终结符对a、b有以下关系成⽴。

a. 若f(a)>g(b),则a>bb.若f(a)c. a~b都不⼀定成⽴d. a~b⼀定成⽴5、如果⽂法G是⽆⼆义的,则它的任何句⼦α。

a. 最左推导和最右推导对应的语法树必定相同b. 最左推导和最右推导对应的语法树可能不同c. 最左推导和最右推导必定相同d. 可能存在两个不同的最左推导,但它们对应的语法树相同6、由⽂法的开始符经0步或多步推导产⽣的⽂法符号序列是。

编译原理练习题答案

编译原理练习题答案

编译原理练习题一、选择题1.下列()程序语言是依赖于机器的。

A.自然语言B.高级语言C.SQL语言D.汇编语言或机器语言2.编译程序是对()程序进行翻译。

A.机器语言B. 汇编语言C. 高级语言D. 自然语言3.编译程序的工作过程划分为5个阶段:词法分析、()、语义分析与中间代码A. 语法分析B. 出错处理C. 表格管理D.存储空间组织4.编译程序各阶段的工作都涉及到()。

A. 语法分析B. 语义分析C.代码优化D.表格管理5.设A是符号串的集合,下列对A*计算不正确的是()。

A.{ε}∪A+B. A*=A1∪A2∪…∪A n∪…C. A0∪A+D. A*=A0∪A1∪A2∪…∪A n∪…6.设x是符号串,符号串的幂运算x0=()A.ΦB.xC.1D.ε7.程序语言的生成机构是()。

A.自动机B.文法C.产生式D.语言本身8.设有文法G的符号集V,非终结符集V N,终结符集V T,下列叙述中正确的是()。

A.V=V TB.V=V NC.V=V T∪V ND.V=V T∩V N9.文法G产生的()的全体构成该文法描述的语言。

A.句型B.终结符集C.非终结符集D.句子10.若一个文法满足(),则称该文法为二义文法。

A. 存在一个最左推导。

B.存在一个最右推导。

C.文法的某个句子存在两棵(包括两棵)以上的语法树。

D.文法的某个句子存在一棵(包括一棵)以上的语法树。

11.给定文法A→bA|cc,下面的符号串中为该文法句子的是()。

①cc ②bcbc ③bcbcc ④bccbcc ⑤bbbcc可选项有:A.①⑤B.①③④⑤C.①④D.①④⑤12.设∑={0,1},则∑上所有以1开头,后跟若干个010的字串的集合对应的正规式为()。

A.1(010)*B.1(010)+C.(010)*1D.(010)+113.从编译程序的语法分析角度看,源程序是句子的集合,()可以较好地反映句子的结构。

A.线性表B.树C.强连通图D.堆栈14.在常用的语法分析中,递归下降分析法属于()分析方法。

编译原理试题与答案

编译原理试题与答案

编译原理试题与答案第1讲绪论本讲模拟练习题(不计分)1. 编译是对( )。

A. 机器语⾔的执⾏B. 汇编语⾔的翻译C. ⾼级语⾔的翻译D. ⾼级语⾔程序的解释执⾏正确答案:C你选对了2. ⽤⾼级语⾔编写的程序经编译后产⽣的程序叫( )。

A. 源程序B. ⽬标程序C. 连接程序D. 解释程序正确答案:B你选对了3. ( )不是编译程序的组成部分。

A. 词法分析程序B. 代码⽣成程序C. 设备管理程序D. 语法分析程序正确答案:C你选对了4. 源程序是句⼦的集合,( )可以较好地反映句⼦的结构。

A. 线性表B. 树C. 完全图D. 堆栈正确答案:B你选对了5. 编译程序是⼀种( )。

A. 汇编程序B. 翻译程序C. 解释程序D. ⽬标程序正确答案:B你选对了6. 按逻辑上划分,编译程序第三步⼯作是( )。

A. 语义分析B. 词法分析C. 语法分析D. 代码⽣成正确答案:A你选对了7. 编译程序中语法分析器接收以( )为单位的输⼊。

A. 单词B. 表达式C. 产⽣式D. 句⼦正确答案:A你选对了8. 编译过程中,语法分析器的任务就是( )。

A. 分析单词是怎样构成的B. 分析单词串是如何构成语句和声明的C. 分析语句和声明是如何构成程序的D. 分析程序的结构正确答案:B你选对了9. 语法分析时所依据的是( )A. 语法规则B. 词法规则C. 语义规则D. 等价变换规则正确答案:A你选对了第1讲测验(计分)把汇编语⾔程序翻译成机器可执⾏的⽬标程序的⼯作是由( )完成的。

1. 单选(1分) 把汇编语⾔程序翻译成机器可执⾏的⽬标程序的⼯作是由A. 编译器B. 解释器C. 预处理器D. 汇编器正确答案:D你选对了2. 单选(1分) ( )不是编译程序的组成部分。

A. 词法分析程序B. 语法分析程序C. 代码⽣成程序D. 设备管理程序正确答案:D你选对了3. 单选(1分) 通常⼀个编译程序中,不仅包含词法分析,语法分析,语义分析,中间代码⽣成,代码优化,⽬标代码⽣成等六个部分,还应包括( )。

编译原理试题及答案

编译原理试题及答案

参考答案一、单项选择题(共10小题,每小题2分,共20分)1.语言是A .句子的集合B .产生式的集合C .符号串的集合D .句型的集合 2.编译程序前三个阶段完成的工作是 A .词法分析、语法分析和代码优化 B .代码生成、代码优化和词法分析C .词法分析、语法分析、语义分析和中间代码生成D .词法分析、语法分析和代码优化3.一个句型中称为句柄的是该句型的最左A .非终结符号B .短语C .句子D .直接短语 4.下推自动机识别的语言是A .0型语言B .1型语言C .2型语言D .3型语言5.扫描器所完成的任务是从字符串形式的源程序中识别出一个个具有独立含义的最小语法单位即A . 字符B .单词C .句子D .句型 6.对应Chomsky 四种文法的四种语言之间的关系是 A .L 0⊂L 1⊂L 2⊂L 3 B .L 3⊂L 2⊂L 1⊂L 0C .L 3=L 2⊂L 1⊂L 0D .L 0⊂L 1⊂L 2=L 3 7.词法分析的任务是A .识别单词B .分析句子的含义C .识别句子D .生成目标代码 8.常用的中间代码形式不含A .三元式B .四元式C .逆波兰式D .语法树 9. 代码优化的目的是A .节省时间B .节省空间C .节省时间和空间D .把编译程序进行等价交换 10.代码生成阶段的主要任务是 A .把高级语言翻译成汇编语言 B .把高级语言翻译成机器语言C .把中间代码变换成依赖具体机器的目标代码装 订 线D.把汇编语言翻译成机器语言二、填空题(本大题共5小题,每小题2分,共10分)1.编译程序首先要识别出源程序中每个(单词),然后再分析每个(句子)并翻译其意义。

2.编译器常用的语法分析方法有(自底向上)和(自顶向下)两种。

3.通常把编译过程分为分析前端与综合后端两大阶段。

词法、语法和语义分析是对源程序的(分析),中间代码生成、代码优化与目标代码的生成则是对源程序的(综合)。

编译原理试题及答案

编译原理试题及答案

编译原理试题及答案
试题:
1. 解释编译原理的定义,同时给出编译器的作用。

2. 简要描述编译过程中的四个基本步骤。

3. 解释词法分析器的功能和作用。

4. 解释语法分析器的功能和作用。

答案:
1. 编译原理是研究如何将高级语言程序转化为等价机器语言程序的一门学科。

编译器是将高级语言文本转换成等价的机器语言的软件工具。

它负责将源代码转化为目标代码,以便计算机能够理解和执行。

2. (1) 词法分析:将源代码分解成一系列单词或标记。

(2) 语法分析:根据语法规则组织单词或标记形成语法树。

(3) 语义分析:分析语法树以检测语义错误。

(4) 代码生成:根据语法树生成目标代码。

3. 词法分析器的功能是将源代码分解成一系列单词或标记。

它将源代码读取为字符流,然后将这些字符组成单词,同时可以去除空格、注释等不具有实际意义的内容。

词法分析器的作用是为语法分析器提供正确的单词序列,为后续的语义分析和代
码生成步骤建立基础。

4. 语法分析器的功能是根据语法规则组织单词或标记形成语法树。

它通过构建语法树来分析源代码的语法结构,同时可以检测语法错误。

语法分析器的作用是为后续的语义分析和代码生成步骤提供一个结构化的表示形式,便于后续的处理和转换。

编译原理考试试题及答案

编译原理考试试题及答案

《编译原理》考试试题及答案(附录)一、判断题:1.一个上下文无关文法的开始符,可以是终结符或非终结符。

( X )2.一个句型的直接短语是唯一的。

( X )3.已经证明文法的二义性是可判定的。

( X )4.每个基本块可用一个DAG表示。

(√)5.每个过程的活动记录的体积在编译时可静态确定。

(√)6.2型文法一定是3型文法。

( x )7.一个句型一定句子。

( X )8.算符优先分析法每次都是对句柄进行归约。

(应是最左素短语) ( X )9.采用三元式实现三地址代码时,不利于对中间代码进行优化。

(√)10.编译过程中,语法分析器的任务是分析单词是怎样构成的。

( x )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.扫描器的任务是从()中识别出一个个()。

编译原理练习题参考答案[]

编译原理练习题参考答案[]

一、填空题:1-01.编译程序的工作过程一般可以划分为词法分析,语法分析,语义分析,之间代码生成,代码优化等几个基本阶段,同时还会伴有表格处理和出错处理 .1-02.若源程序是用高级语言编写的,目标程序是机器语言程序或汇编程序 ,则其翻译程序称为编译程序.1-03.编译方式与解释方式的根本区别在于是否生成目标代码 .1-04.翻译程序是这样一种程序,它能够将用甲语言书写的程序转换成与其等价的用乙语言书写的程序 .1-05.对编译程序而言,输入数据是源程序 ,输出结果是目标程序 .1-06.如果编译程序生成的目标程序是机器代码程序,则源程序的执行分为两大阶段: 编译阶段和运行阶段 .如果编译程序生成的目标程序是汇编语言程序,则源程序的执行分为三个阶段: 编译阶段 ,汇编阶段和运行阶段 .1-07.若源程序是用高级语言编写的,目标程序是机器语言程序或汇编程序,则其翻译程序称为编译程序。

1-08.一个典型的编译程序中,不仅包括词法分析、语法分析、中间代码生成、代码优化、目标代码生成等五个部分,还应包括表格处理和出错处理。

其中,词法分析器用于识别单词。

1-09.编译方式与解释方式的根本区别为是否生成目标代码。

2-01.所谓最右推导是指:任何一步αβ都是对α中最右非终结符进行替换的。

2-02.一个上下文无关文法所含四个组成部分是一组终结符号、一组非终结符号、一个开始符号、一组产生式。

2-03.产生式是用于定义语法成分的一种书写规则。

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

2-05.设G是一个给定的文法,S是文法的开始符号,如果Sx(其中x∈V*),则称x是文法的一个句型。

2-06.设G是一个给定的文法,S是文法的开始符号,如果Sx(其中x∈V T*),则称x是文法的一个句子。

3-01.扫描器的任务是从源程序中识别出一个个单词符号。

4-01.语法分析最常用的两类方法是自上而下和自下而上分析法。

编译原理考试题及答案

编译原理考试题及答案

编译原理考试题及答案一、选择题(每题5分,共20分)1. 编译器的主要功能是什么?A. 代码优化B. 代码翻译C. 代码调试D. 代码运行答案:B2. 下列哪个选项不属于编译器的前端部分?A. 词法分析B. 语法分析C. 语义分析D. 代码生成答案:D3. 在编译原理中,文法的产生式通常表示为:A. A -> αB. A -> βC. A -> γD. A -> δ答案:A4. 下列哪个算法用于构建语法分析树?A. LL(1)分析B. LR(1)分析C. SLR(1)分析D. LALR(1)分析答案:A二、填空题(每空5分,共20分)1. 编译器的前端通常包括词法分析、语法分析和________。

答案:语义分析2. 编译器的后端主要负责________和目标代码生成。

答案:代码优化3. 编译器中的词法分析器通常使用________算法来识别单词。

答案:有限自动机4. 语法分析中,________分析是一种自顶向下的分析方法。

答案:递归下降三、简答题(每题10分,共30分)1. 简述编译器的作用。

答案:编译器的主要作用是将高级语言编写的源代码转换成计算机能够理解的低级语言或机器代码,以便执行。

2. 解释一下什么是语法制导翻译。

答案:语法制导翻译是一种翻译技术,它利用源语言的语法信息来指导翻译过程,使得翻译过程能够更好地理解源代码的语义。

3. 什么是词法分析器?答案:词法分析器是编译器前端的一部分,它的任务是将源代码文本分解成一系列的标记(tokens),这些标记是源代码的最小有意义的单位。

四、计算题(每题10分,共30分)1. 给定一个简单的文法G(E):E → E + T | TT → T * F | FF → (E) | id请计算文法的非终结符号E的FIRST集和FOLLOW集。

答案:E的FIRST集为{(, id},FOLLOW集为{), +, $}。

2. 假设编译器在进行语法分析时,遇到一个语法错误的代码片段,请简述编译器如何处理这种情况。

编译原理习题及答案(课堂PPT)

编译原理习题及答案(课堂PPT)
这两种途径的主要区别在于:解释方式下不生成目 标代码程序,而编译方式下生成目标代码程序。
.
8
《编译原理教程》习题解析
9
1.3 请画出编译程序的总框图。如果你是一个编译程 序的总设计师,设计编译程序时应当考虑哪些问题?
【解答】 编译程序总框图如图1-1所示。 作为一个编译程序的总设计师,首先要深刻理解被编 译的源语言其语法及语义;其次,要充分掌握目标指令的 功能及特点,如果目标语言是机器指令,还要搞清楚机器 的硬件结构以及操作系统的功能;第三,对编译的方法及 使用的软件工具也必须准确化。总之,总设计师在设计编 译程序时必须估量系统功能要求、硬件设备及软件工具等 诸因素对编译程序构造的影响。
《编译原理教程》习题解析
1
第一章 绪 论 第二章 词 法 分 析 第三章 语 法 分 析
.
1
《编译原理教程》习题解析
2
第一章 绪 论
1.1 完成下列选择题: (1) 下面叙述中正确的是 。
A.编译程序是将高级语言程序翻译成等价的机 器语言程序的程序
B.机器语言因其使用过于困难,所以现在计算 机根本不使用机器语言
.
5
《编译原理教程》习题解析
6
(4) 编译各阶段的工作都涉及到构造、查找或更新有 关表格,即编译过程的绝大部分时间都用在造表、查表和 更新表格的事务上。故选D。
(5) 由(1)可知,编译程序实际上实现了对高级语言程 序的翻译。故选D。
.
6
《编译原理教程》习题解析
7
1.2 计算机执行用高级语言编写的程序有哪些途径?它们 之间的主要区别是什么?
.
12
《编译原理教程》习题解析
13
图2-1 习题2.1的DFA M

编译原理试题及答案

编译原理试题及答案

编译原理试题及答案1. 选择题(每题4分,共40分)1) 当编译器在词法分析阶段遇到无法识别的字符时,应该采取的动作是:A. 直接忽略该字符并继续进行词法分析B. 输出错误信息并终止词法分析过程C. 将该字符标记为非法字符并继续词法分析D. 转交给语法分析器进行处理答案:B2) 下列关于语法分析器的描述中,错误的是:A. 语法分析器使用文法规则将输入的记号流转化为推导树B. 语法分析器可以通过自上而下或自下而上的方式进行解析C. LL(1)文法是一种常用于自上而下语法分析的文法形式D. 语法分析器的输入是词法分析器输出的记号流答案:A3) 以下关于语法制导翻译的说法,正确的是:A. 语法制导翻译是在语义分析阶段完成的B. 语法制导翻译通过产生式的属性传递进行信息的传递和计算C. 语法制导翻译只能用于自上而下的语法分析D. 语法制导翻译是在语法分析阶段完成的答案:B4) 在SLR分析算法中,项目集簇的构造过程中需要进行的操作是:A. 闭包操作和移进操作B. 移进操作和规约操作C. 闭包操作和规约操作D. 闭包操作、移进操作和规约操作答案:D5) 下列关于中间代码生成的叙述中,错误的是:A. 中间代码是一种类似于汇编代码的表示形式B. 中间代码可以直接被目标代码生成器所使用C. 中间代码的生成可以采用三地址码的形式D. 中间代码的生成在语法分析和语义分析之后进行答案:B2. 简答题(每题10分,共30分)1) 请简要描述编译器的主要工作流程。

答案:编译器的主要工作流程包括词法分析、语法分析、语义分析、中间代码生成、优化和目标代码生成等阶段。

在词法分析阶段,编译器将输入的源代码转化为一个个记号流。

接下来,在语法分析阶段,编译器使用文法规则对记号流进行分析,并生成语法树或推导树。

在语义分析阶段,编译器对语法树进行语义检查,并进行类型推导和符号表管理等操作。

中间代码生成阶段将经过语义分析的源代码转化为一种中间表示形式,通常是三地址码。

编译原理习题答案

编译原理习题答案

编译原理习题答案编译原理习题答案编译原理是计算机科学中的重要课程,它研究的是如何将高级程序语言翻译成机器语言的过程。

在学习编译原理的过程中,习题是必不可少的一部分。

通过解答习题,我们可以更好地理解和掌握编译原理的相关知识。

下面是一些编译原理习题的答案,希望对大家的学习有所帮助。

1. 什么是编译器?答:编译器是一种将高级程序语言翻译成机器语言的程序。

它接收源程序作为输入,经过词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等阶段的处理,最终生成可执行的目标程序。

2. 什么是词法分析?答:词法分析是编译器的第一阶段,它将源程序分割成一个个词素(token),并识别出每个词素的类型。

常见的词素类型包括关键字、标识符、常量、运算符和界符等。

3. 什么是语法分析?答:语法分析是编译器的第二阶段,它根据词法分析得到的词素序列,判断它们是否符合给定的语法规则。

语法分析使用的是上下文无关文法,常用的语法分析方法有LL(1)分析和LR(1)分析等。

4. 什么是语义分析?答:语义分析是编译器的第三阶段,它对源程序进行语义检查,并生成中间代码。

语义分析主要包括类型检查、作用域分析和语义动作等。

5. 什么是中间代码生成?答:中间代码生成是编译器的第四阶段,它将源程序转换成一种中间表示形式,以便进行代码优化和目标代码生成。

常见的中间表示形式有抽象语法树(AST)、三地址码和四元式等。

6. 什么是代码优化?答:代码优化是编译器的第五阶段,它通过对中间代码进行分析和变换,以提高目标程序的执行效率。

常见的代码优化技术包括常量传播、公共子表达式消除和循环优化等。

7. 什么是目标代码生成?答:目标代码生成是编译器的最后一阶段,它将中间代码转换成特定机器的目标代码。

目标代码可以是汇编语言代码或机器语言代码,它可以直接在目标机器上执行。

8. 什么是语法制导翻译?答:语法制导翻译是一种将源程序翻译成目标代码的方法,它将语义动作嵌入到语法规则中,以实现翻译的过程。

编译原理试题+答案

编译原理试题+答案

编译原理试卷三一、选择1.下面说法正确的是:A 一个正规文法也一定是二型文法B 一个二型文法也一定能有一个等价的正规文法2.文法G[A]:A→b A→AB B→Ab B→a是( ):A 二型文法B 正规文法3.下面说法正确的是( ):A lex是一个词法分析器B yacc是一个语法分析器的生成器4.一个LR(1)文法合并同心集后,如果不是LALR(1)文法必定存在( ):A 移进--归约冲突B 归约--归约冲突5.7.5 PL/0语言编译程序使用递归子程序法进行语法分析,他的文法必须满足( ):A LL(1)文法B SLR(1) 文法二、问答题问答第1题(6分)试对 repeat x:=b until b>a or (b<a and b=d) 的四元式序列给出第四区段应回填的指令地址,并指出真假出口链和链头及回填的次序。

应回填的值回填的次序真链头 E.true=(1) x:= b 真出口链( )(2) if b>a goto ( ) ( ) 真出口链( )(3) goto ( ) ( )(4) if b<a goto ( ) ( ) 假链头 E.false=(5) goto ( ) ( ) 假出口链( )(6) if b=d goto ( ) ( )(7) goto ( ) ( )(8) ...问答第2题(10分)某语言的拓广文法G′为:(0) S′→S(1) S → Db|B(2) D → d|ε(3) B → Ba|ε证明G不是LR(0)文法而是SLR(1)文法,请给出SLR(1)分析表。

问答第3题(5分)给出文法G[S]的LR(1)项目集规范族中I0项目集的全体项目。

G[S]为:S →S;V|VV →VaA|AA →b(S)| εI0:问答第4题(5分)文法G[M]及其LR分析表如下,请给出对串dada#的分析过程。

G[M]: 1) S →VdB2) V →e3) V →ε 4) B →a5) B →Bda 6) B →ε状态ACTION GOTOd e a # S B V0 r3 S3 1 21 acc2 S43 r24 r6 S5 r6 65 r4 r46 S7 r17 S88 r5 r5问答第5题(7分)(1) 给出下列PL/0示意程序中当程序执行到D过程调用A过程后(即执行A过程体时)的栈式存储分配布局和用Display显示表时A过程最新活动记录的内容。

编译原理试题及答案

编译原理试题及答案

编译原理试题一、填空题1、汇编程序将________翻译成________;编译程序将________翻译成________。

2、编译程序工作工程可以划分为______、______、______、______和______等5个基本阶段,同时还会伴有______和______。

3、对编译程序而言,输入数据是______,输出数据是______。

4、已知文法G[E]:E—>T|E+T|E—F,T-〉F|T*F|T/F,F->(E)|I,(“,”是间隔符号,不是文法中的符号)。

该文法的开始符号(识别字符)是______,终结符号集合V T是______,非终结符号结合V N是______,句型T+T*F+i的短语有____________。

该文法消除直接左递归,改写后的文法为E->________,T ->________,F-〉________。

5、Chomsky定以来寺中形式语言的文法分别为:________文法(又称________文法)、________文法(又称________文法)、________文法(又称________文法)、________文法(又称________文法)。

6、编译过程中扫描器所完成的任务是从________中识别出一个个具有________。

7、确定的有穷自动机是一个________,通常表示为________.8、LL(k)分析中,第一个L的含义是________,第二个L的含义是________,“k"的含义是________。

9、LL(1)分析中,第一个L的含义是________,第二个L的含义是________,“1”的含义是________.10、LR(0)分析中,“L"的含义是________,“R”的含义是________,“0”的含义是________。

11、SLR(1)分析中,“L”的含义是________,“R”的含义是________,“1”的含义是________。

编译原理 测试题 复习题(附答案)

编译原理 测试题 复习题(附答案)

《编译原理》软件工程期终考卷学号:姓名:说明:1.本考卷中大写字母∈V N ,其他符号∈V T;2、试卷中一、二两题请作在考卷上一、概念题(15分)1、编译过程一般分为几个阶段?各阶段的输入输出分别为什么?2、对下列状态转换图,写出状态0的处理过程:其中:状态2的过程为proc2.3、文法G为:S→aABA→aB→γβα| |则判断G为LL(1)文法的条件是:二、判断题(10分。

注:每答对一题得+2分;答错一题得-2分;不答者得0分)1、设∑为{a,b},则a,ba,{∑},Ø都是∑上的正规式。

()2、对于上下文无关文法G[S],若S⇒αAB⇒αβγ则A→γ一定是一条产生式规则,其中α,β,γ∈(V T∨V N)*()3、对于逆波兰后缀式,无论从哪头开始分析均可得到唯一正确的分解。

()4、LR(0)分析法是一种规范归约法。

()5、算符优先分析法只能用来分析算符优先文法。

()三、(10分)设文法G3为:S →AaBcA →Aa|aB →b 求句型AaBc 的最左素语。

四、(20分)设文法G[S]为S →aAcB 问:1、该文法是否为算符文法,为什么? A →Ab|b 2、构造算符优先关系表。

B →d 3、该文法是否可改造为LL (1)文法,为什么? 五、(本题20分)设文法G 为: E →eAf|eBgA →aA|aB →Bb|a 对于输入串eaaaf ,采用LR (0)、LL (1)、SLR (1)等方法中合适的一种进行分析。

六、(25分)有作控制用的布尔表达式文法G[E]及其语义动作如下:1、 构造SLR (1)分析表(若不是SLR(1))的,则说明理由)2、 分析布尔式a∨b<c 的四元式生成过程,并画出最后的真假链表。

3、 给出语句IF a∨b<c THEN I:=m*n ELSE I:=m+n 的完整四元式序列。

文法G[E]:(1)E →i()1<i()2 {E.TC:=NXQ; E.FC=NXQ+1;GEN(J<,ENTRY(i()1),ENTRY(i()2),O);GEN(J, , ,0)}(2)E →AE ()1 {E.FC:=E ()1.FC; E.FC:=MERGE(A.TC ,E ()1.TC)} (3)A →B∨ {BACKPATCH(B.FC ,NXQ); A.TC:=B.TC} (4)B →i {B.TC:=NXQ; B.FC:=NXQ+1;GEN(Jnz, ENTRY(i), ,0); GEN(J, , ,0)}编译原理考试答案及评分细则一:1、(5分)2、(5分)Proc 0:getchar();CASE char OF‘a’,’b’,…,’z’:‘A’,’B’,…,’Z’: proc 1else errorEND CASE3、(5分)条件:(1)文法G不含左递归;(2)对于每个非终结符,First(α)、First(β)、First(γ)两两不相交;(3)对于每个非终结符,不含能推出ε的产生式,故不考虑非终结符的First集和Follow集相交的情况。

编译原理期中测试答案 (1)

编译原理期中测试答案 (1)

编译原理期中测试答案三、单项选择题(每题3分,共15分)1.设有文法G[S]: S→(AS)|(b)A→(SaA)|(a)该文法的句型(((b)a(a))(b))有 C 个直接短语。

A.1B. 2C. 3D. 42.如果一个文法满足 D ,则称该文法是二义性文法。

(1) 文法的某一个句子存在两个(包括两个)以上的语法树(2) 文法的某一个句子存在两个(包括两个)以上的最左推导(3) 文法的某一个句子存在两个(包括两个)以上的最右推导(4) 在进行归约时,文法的某些规范句型的句柄不唯一上述描述中的所有正确描述有:A. (1)B. (1)(2)C. (1)(2)(3)D. (1)(2)(3)(4) 3.构造一个不带回溯的自顶向下语法分析器,要求文法满足E 。

A.对每个形如A→x1|x2|…|xn的产生式,要求FIRST(xi)与FIRST(xj)的交集为空集(i≠j)B.对每个形如A→x1|x2|…|xn的产生式,若xi* ε,则要求FIRST(xj)与FOLLOW(A)的交集为空集(i≠j)C. 不含左递归D. A和B同时满足E. A、B和C同时满足4、给定文法A→bA|cc,下列符号串中,是该文法的句子的是C 。

① cc ② bcbc ③ bcbcc ④ bccbcc ⑤ bbbccA① B. ①③④⑤ C. ①⑤ D. ①④⑤5、若一个句型中出现了某一产生式的右部,则此右部 B 是该句型的句柄。

A.一定B. 不一定C. 一定不D. 无法判断四、简述题(每题5分,共20分)1、写一上下文无关文法,它能产生语言}0n。

naL mb,=m|{>=#S→A#BA→Aa|εB→Bb|ε2、将文法G[S] 改写为等价的G′[S],使G′[S]不含左递归和左公共因子。

G[S]:S→bSAe | bAA→Ab | d答:文法G[S] 改写为等价的不含左递归和左公共因子的G'[S]S→bBB→SAe | AA→d A'A' →bA' | ε3、什么是文法的二义性?下面的文法是二义的吗?为什么?G[S]:S→AB | ABD A→a B→CD |D C→c D→d答:如果一个文法存在某个句子对应两棵不同的语法树,则该文法是二义的。

编译原理期中考试答案

编译原理期中考试答案

三、完成下列各题(共30分)1、(5分)2、(1)E⇒E+T⇒ E+T+T ⇒ E+T+F⇒ E+T+i⇒⇒ E+T*F+i⇒ T+T*F+i(3分)语法树(2分)(2)短语:T*F,T,i,T+T*F,T+T*F+i (1分)简单短语:T*F,T,i (1分)句柄:T (1分)活前缀:T (1分)可归前缀:T (1分)3、如果对于某文法的同一个句子存在两个不同的语法树则称该句子是二义性的,包含二义性句子的文法称为二义性文法。

(4分)对于句子i+i*i有两棵不同的语法树。

画出两棵不同的语法树(6分)四、(共40分)1、R=1(1|0)*|0正则式转化为NFA(5分)NFA转化为DFA,并换名(5分)DFA最小化(5分)K1={B,C,D} K2={A}K11={ C,D} K12={B}C,D为等价状态,合并等价状态为0,11 0,10,12、S→aBc|bABA→aAb|bB→b|ε(1)FOLLOW(S)={#}FOLLOW(A)={b,#}FOLLOW(B)= {c,#} (3分)(2)SELECT(S→aBc)={a}SELECT(S→Bab)={b}SELECT(S→aBc)∩SELECT(S→Bab)=ФSELECT(A→aAb)={a}SELECT(A→b)={b}SELECT(A→aAb)∩SELECT(A→b)={b}=ФSELECT(B→b)={b}SELECT(ε)={c,#}SELECT(B→b)∩SELECT(ε)=Ф所以该文法是LL(1)文法。

(7分)(3)(5分)3、对规则进行编号(0) S→A(1)A→Ab(2) A→bBa(3)B→aAc(4) B→a(5) B→aAb(1)为这个文法构造LR(0)项目集规范族。

(2)该文法是LR(0)文法吗?请说明理由。

(3)构造它的LR(0)分析表。

(15分)(2)状态C5存在“移进-归约”冲突,状态C9存在“归约-归约”冲突,所以该文法不是LR(0)文法。

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

一.填空题:
1.编译程序的工作过程一般可以划分为_词法分析、语法分析、语义分析、中间代码生成、代码优化、
目标代码生成、__等几个基本阶段,同时还会伴有_错误检查和处理__和
信息表管理.
2.若源程序是用高级语言编写的,目标程序是二进制代码,则其翻译程序称为编译程序.
3.编译方式与解释方式的根本区别在于_解释方式不生成中间代码.
4.所谓最右推导是指:是指对于一个推导序列中的每一直接推导被替换的总是当
前符号串中的最右非终结符号。

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

6.扫描器的任务是从源程序中识别出一个个单词。

7.语法分析最常用的两类方法是自底向上和自顶向下分析法。

8.自顶向下的语法分析方法的关键是消除左递归的问题。

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

二.单选题:
1.一个编译程序中,不仅包含词法分析,语法分析,中间代码生成,代码优化,目标代码生成等五个部
分,还应包括_c_.其中,__b_和代码优化部分不是每个编译程序都必需的.
词法分析器用于识别__c__,语法分析器则可以发现源程序中的__d_.
(1) a.模拟执行器 b.解释器 c.表格处理和出错处理 d.符号执行器
(2) a.语法分析 b.中间代码生成 c.词法分析 d.目标代码生成
(3) a.字符串 b.语句 c.单词 d.标识符
(4) a.语义错误 b.语法和语义错误 c.错误并校正 d.语法错误
2.程序语言的语言处理程序是一种__a__.__b__是两类程序语言处理程序,他们的主要区别在于
__d__.
(1) a.系统软件 b.应用软件 c.实时系统 d.分布式系统
(2) a.高级语言程序和低级语言程序 b.解释程序和编译程序
c.编译程序和操作系统
d.系统程序和应用程序
(3) a.单用户与多用户的差别 b.对用户程序的查错能力
c.机器执行效率
d.是否生成目标代码
3.汇编程序是将_a___翻译成__b__,编译程序是将_c__翻译成__d__.
a.汇编语言程序
b.机器语言程序
c.高级语言程序
d.a或者b
e.a或者c
f.b或者c
4.下面关于解释程序的描述正确的是_b__.
(1)解释程序的特点是处理程序时不产生目标代码
(2)解释程序适用于COBOL和FORTRAN语言
(3)解释程序是为打开编译程序技术的僵局而开发的
a.(1)(2)
b.(1)
c.(1)(2)(3)
d.(2)(3)
5.高级语言的语言处理程序分为解释程序和编译程序两种.编译程序有五个阶段,而解释程序通常缺少
___a_和__b__.其中,__e__的目的是使最后阶段产生的目标代码更为高效.
与编译系统相比,解释系统_a__.解释程序处理语言时,大多数采用的是_a__方法.__a__就是一种典型的解释型语言.
(1):a.中间代码生成 b.目标代码生成 c.词法分析 d.语法分析 e.代码优化
(2):a.比较简单,可移植性好,执行速度快
b.比较复杂,可移植性好,执行速度快
c.比较简单,可移植性差,执行速度慢
d.比较简单,可移植性好,执行速度慢
(3):a.源程序命令被逐个直接解释执行 b.先将源程序转化为之间代码,再解释执行
c.先将源程序解释转化为目标程序,在执行
d.以上方法都可以
(4): a.BASIC b.C c.FORTRAN d.PASCAL
6.文法G所描述的语言是c的集合。

其中:开始状态:0终止状态:2a
a a 0b
b
b
12A.文法G 的字母表V 中所有符号组成的符号串
B.文法G 的字母表V 的闭包V *中的所有符号串
C.由文法的开始符号推出的所有终极符串
D.由文法的开始符号推出的所有符号串
7.
乔姆斯基(Chomsky)把文法分为四种类型,即0型、1型、2型、3型。

其中3型文法是b 。

A.短语文法 B.正则文法 C.上下文有关文法 D.上下文无关文法8.文法G[N]=({b},{N,B},N,{N→b│bB,B→bN}),该文法所描述的语言是
c 。

A.L(G[N])={b i │i≥0}
B.L(G[N])={b 2i │i≥0}
C.L(G[N])={b
2i+1│i≥0} D.L(G[N])={b 2i+1│i≥1}9.
一个句型中的最左b 称为该句型的句柄。

可选项有:
A.短语
B.简单短语(直接短语)
C.素短语
D.终结符号10.词法分析器用于识别c 。

A.句子 B.句型 C.单词 D.产生式
11.在语法分析处理中,FIRST 集合、FOLLOW 集合、SELECT 集合均是b 。

A.非终极符集
B.终极符集
C.字母表
D.状态集12.编译程序中语法分析器接收以
a 为单位的输入。

A.单词
B.表达式
C.产生式
D.句子三、简答题:
1.什么是句子?什么是语言?见课本P20定义
2.4
已知文法G[E]为:E→T|E+T|E-T
T→F|T*F|T/F
F→(E)|i
①该文法的开始符号(识别符号)是什么?E ②请给出该文法的终结符号集合V T 和非终结符号集合V N 。

V T ={+,-,*,/,(,),i}V n ={E,T,F,}
③找出句型T+T*F+i 的所有短语、简单短语和句柄。

(上课讲解)
2.简述DFA 与NFA 有何区别?当自动机处于状态U 且正扫视的输入符号为a 时,自动机的下一状态不是
唯一的则这个自动机是非确定型自动机,如果下一状态是唯一的,则此自动机为确定型自动机。

为正规式(a|b)*a(a|b)构造一个等价的确定的有限自动机。

3.给定下列自动机:
(1)把此自动机转换为确定自动机DFA。

(2)给出此DFA 的正则表达式。

4.消除下列文法G[E]的左递归。

E→E-T∣T
T→T/F∣F
F→(E)∣i
5.在LL(1)分析法中,LL分别代表什么含义?
第一个L:自左至右。

第二个L:从输入串的最左边开始扫视。

相关文档
最新文档