编译原理复习资料试题.docx

上传人:b****7 文档编号:8823007 上传时间:2023-02-01 格式:DOCX 页数:11 大小:160.74KB
下载 相关 举报
编译原理复习资料试题.docx_第1页
第1页 / 共11页
编译原理复习资料试题.docx_第2页
第2页 / 共11页
编译原理复习资料试题.docx_第3页
第3页 / 共11页
编译原理复习资料试题.docx_第4页
第4页 / 共11页
编译原理复习资料试题.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

编译原理复习资料试题.docx

《编译原理复习资料试题.docx》由会员分享,可在线阅读,更多相关《编译原理复习资料试题.docx(11页珍藏版)》请在冰豆网上搜索。

编译原理复习资料试题.docx

编译原理复习资料试题

一、单项选择题(将正确答案的字母填入括号,每题1.5分,共30分)

1、一般程序设计语言的定义都涉及到(1.2.3)3个方面。

(1)语法

(2)语义(3)语用(4)程序基本符号的确定

2、程序语言一般分为

(1)和

(2)。

(1)高级语言;

(2)低级语言;(3)专用程序语言;(4)通用程序语言

3、面向机器语言指的是(B)。

A.用于解决机器硬件设计问题的语言B.特定计算机系统所固有的语言

C.各种计算机系统都通用的语言D.只能在一台计算机上使用的语言

4.面向机器语言的特点是(D)。

A.程序的执行效率低,编制效率低,可读性差

B.程序的执行效率高,编制效率高,可读性强

C.程序的执行效率低,编制效率高,可读性强

D.程序的执行效率高,编制效率低,可读性差

5、程序设计语言常见的数据类型有:

1.2.3.4

(1)数值型数据

(2)逻辑数据(3)字符数据(4)指针类型

6、下列程序设计语言中是应用式语言的是:

B

A、PASCALB、LISPC、VBD、PROLOG

7、任何语法结构都可以用(C)来表示。

A、语法树B、树C、抽象语法树D、二义文法树

8、字母表是符号的有穷集合,由(C)组成词和句子。

A、字符串B、字符C、符号D、语言

9、下列符号是终结符的是(A)。

A、cB、AC、SD、β

10、语法树用(C)关系说明了句子中以操作符为核心的操作顺序,同时也说明了每一个操作符的操作对象。

A、上下B、先后C、层次D、关联

11、循环语句的语法树为(D)

A、

B、

C、

D、

12、表达式中间代码的生成可采用(B)。

A、三地址代码B、四元式C、三元式D、间接三元式

13、下列文法中,赋值语句的文法是(C)。

A、B、

C、D、E→EopE

14、词法分析的任务是(A)

A、识别单词B、分析句子的含义C、识别句子D、生成目标代码

15、常用的中间代码形式中不含(D)

A、三元式B、四元式C、逆波兰式D、语法树

16、代码优化的目的是(C)

A、节省时间B、节省空间C、节省时间和空间D、把编译程序进行等价转换

17、代码生成阶段的主要任务是(C)

A、把高级语言翻译成汇编语言B、把高级语言翻译成机器语言

C、把中间代码变换成依赖具体机器的目标代码D、把汇编语言翻译成机器语言

18、词法分析器的输入是(B)

A、单词符号串B、源程序C、语法单位D、目标程序

19、中间代码的生成所遵循的是(C)

A、语法规则B、词法规则C、语义规则D、等价变换规则

20、编译程序是对(D)

A、汇编程序的翻译B、高级语言程序的解释并执行C、机器语言的执行D、高级语言的翻译

21、语法分析应遵循(C)

A、语义规则B、语法规则C、构词规则D、等价变换规则

22、编译程序各阶段的工作都涉及到(B)

A、语法分析B、表格管理、出错处理C、语义分析D、词法分析

23、编译程序工作时,通常有(1.2.3.4)阶段。

(1)词法分析

(2)语法分析(3)中间代码生成(4)语义检查(5)目标代码生成

24、由文法的开始符经0步或多步推导产生的文法符号序列是C。

A、短语B、句柄C、句型D、句子

25、产生正规语言的文法为D。

A、0型B、1型C、2型D、3型

26、对无二义性文法来说,一棵语法树往往代表了D。

(1)多种推导过程

(2)多种最左推导过程(3)一种最左推导过程

(4)仅一种推导过程(5)一种最左推导过程

A、B、

(1)(3)(5)C、D

27、如果文法G存在一个句子,满足下列条件之一时,则称该文法是二义文法。

BCD

a.该句子的最左推导与最右推导相同b.该句子有两个不同的最左推导

c.该句子有两棵不同的最右推导d.该句子有两棵不同的语法树

e.该句子的语法树只有一个

28、优化可生成(D)的目标代码。

A、运行时间较短B、占用存储空间较小C、运行时间短且占用内存空间大D、运行时间短且存储空间小

29、构造编译程序应掌握(D)

A、源程序B、目标程序C、编译方法D、以上三项都是

30、赋值语句x=a+b*c-d的逆波兰式为(B)

A、xab+c*d-=B、xabc*+d-=C、xabcd*+-=D、x=abc*+d-

31、词法分析器的输出结果是(C)

A、单词的种别编码B、单词在符号表中的位置

C、单词的种别编码和自身值D、单词自身值

二、填空题(每空1分,共15分)

1、常见的程序设计语言主要有(过程式语言)、(面向对象语言)、(应用式语言)、(基于规则的语言)4种类型。

2、翻译过程中翻译的主要工作就是把高级语言翻译成(中间语言)。

3、编译程序前端主要由与源语言有关而与目标语言无关的部分组成,这些部分包括词法分析、(语法分析)、语义分析和(中间代码生成)。

4、编译程序后端主要由编译程序中与目标程序有关的部分组成,主要包括(代码优化)和(目标代码生成)。

5、如果按语言结构的形式分类,可以把程序设计语言分为过程式语言、(面向对象语言)、应用式语言和(基于规则的语言)。

6、编译程序首先要识别出源程序中每个单词,然后再分析每个句子并翻译其意义。

7、编译器常用的语法分析方法有自底向上和自顶向下两种。

8、通常把编译过程分为分析前端与综合后端两大阶段,词法、语法和语义分析是对源程序的分析,中间代码生成、代码优化与目标代码的生成则是对源程序的综合。

9、对编译程序而言,输入数据是源程序,输出结果是目标程序。

10、从功能上说,程序语言的语句大体可分为执行性语句和说明性语句。

11、所谓最右推导是指(任何一步аβ都是对a中最右非终结符进行替换的)。

12、一个上下文无关法所含四个组成部分是:

一组终结符号、一组非终结符号、一个开始符号、一组产生式。

13、产生式是用于定义语法范畴的一种书写规则。

14、文法中的终结符和非终结符的交集是空集。

词法分析器交给语法分析器的文法符号一定是终结符,它一定只出现在产生式的右部。

15、最左推导是指每次都对句型中的最左非终结符进行扩展。

16、语法树代表推导过程,分析树代表归约过程。

17、计算机执行用高级语言编写的程序主要由两种途径解释和编译。

18、后缀式abc-/所代表的表达式是a/(b-c)。

19、编译过程可分为词法分析、语法分析、语义分析与中间代码生成、优化和目标代码生成五个阶段。

20、如果一个文法存在某个句子对应两个不同的语法树,则称这个文法是二义性的。

21、语法分析是依据语言的语法规则进行,中间代码的产生是依据语言的语义规则进行的。

22、对一个文法G,仅含终结符号的句型称为句子。

23、2型文法又称为上下文无关文法,3型文法又称为正则文法。

三、名词解释

1、词法分析:

主要任务是是从左到右扫描每行源程序的符号,按照词法规则从构成源程序的字符串中识别出一个个具有独立意义的最小语法单位,并转换成统一的内部表示,送给语法分析程序。

2、语法树:

句子的树结构表示法称为语法树。

给定文法G=(Vn,Vt,P,S),对于G的任何句型都能构造与之关联的语法树(推导树)。

语法树具有如下特征:

 

(1)根节点的的标记是开始符S。

  

(2)每个节点的标记都是V中的一个符号。

(3)若一颗树的根节点为A,且其具有直接子孙的标记从左向右的排列次序为A1A2……AR,那么A—>A1A2……AR一定是P中的一条产生式。

(4)若一标记为A的节点至少有一个除它以外的子孙,则A∈Vn.

(5)若树的所有叶节点上的标记从左到右排列为字符串W,则W是文法G的句型;若W中仅含终结符号,则W为文法G所产生的句子。

3、推导:

我们称αAβ直接推出αγβ,即αAβÞαγβ,仅当A→γ是一个产生式,且α、β∈(VN∪VT)*。

如果α1Þα2Þ…Þαn,则我们称这个序列是从α1至α2的一个推导。

若存在一个从α1αn的推导,则称α1可推导出αn。

推导是归约的逆过程。

4、语法:

表示程序的结构或形式,亦即表示构成语言的各个记号之间的组合规律,但不涉及这些记号的特定含义,也不涉及使用者。

语义:

表示程序的含义,亦即表示按照各种方法所表示的各个记号的特定含义,但不涉及使用者。

5、上下文无关法:

一个上下文无关文法G是一个四元式(VT,VN,S,P),其中:

VT是一个非空有限集,它的每个元素称为终结符号;VN是一个非空有限集,它的每个元素称为非终结符号,VT∩VN=Φ;S是一个非终结符号,称为开始符号;P是一个产生式集合(有限),每个产生式的形式是P→α,其中,P∈VN,α∈(VT∪VN)*。

开始符号S至少必须在某个产生式的左部出现一次。

6、翻译程序:

把某一种语言程序(称为源语言程序)等价地转换成另一种语言程序(称为目标语言程序)的程序。

7、编译程序(compiler):

把某一种高级语言程序等价地转换成另一种低级语言程序(如汇编语言或机器语言程序)的程序。

8、解释程序:

把源语言写的源程序作为输入,但不产生目标程序,而是边解释边执行源程序本身。

9、源语言:

被翻译的语言。

目标语言:

翻译后的语言。

中间语言:

在编译过程中,把源语言首先转换为一种中间表示形式,然后再把这种中间表示形式翻译为最终的目标语言,这种中间表示形式就叫做中间语言。

编译方式:

把一个高级语言的文本文件“翻译”成机器语言的可执行文件。

解释方式:

将源语言文件放在一个被称为解释器的程序里执行,把源语言代码中的语句翻译成一小段及其代码并执行之,工作方式是翻译一句执行一句

10、抽象语法树或者语法树(syntaxtree),是源代码的抽象语法结构的树状表现形式,这里特指编程语言的源代码。

树上的每个节点都表示源代码中的一种结构。

之所以说语法是“抽象”的,是因为这里的语法并不会表示出真实语法中出现的每个细节。

11、二义性定义:

“若对于一个文法的某一句子存在两棵不同的语法树,则该文法是二义性文法。

12、语法:

就是描述语言现象这种词汇间的并列关系与嵌套关系的规则。

四、简答题

1、给出上下文无关文法的定义。

解:

一个上下文无关文法G是一个四元式(VT,VN,S,P),其中:

VT是一个非空有限集,它的每个元素称为终结符号;

VN是一个非空有限集,它的每个元素称为非终结符号,VT∩VN=Φ;

S是一个非终结符号,称为开始符号;

P是一个产生式集合(有限),每个产生式的形式是P→α,其中,P∈VN,

α∈(VT∪VN)*。

开始符号S至少必须在某个产生式的左部出现一次。

2、何谓源程序、目标程序、翻译程序、编译程序和解释程序?

它们之间可能有何种关系?

3、一个典型的编译系统通常由哪些部分组成?

各部分的主要功能是什么?

4、编译程序把高级语言翻译成机器语言时有哪几种方式?

它们之间有什么区别?

计算机执行用高级语言编写的程序主要途径有两种,即解释与编译。

像Basic之类的语言,属于解释型的高级语言。

它们的特点是计算机并不事先对高级语

言进行全盘翻译,将其变为机器代码,而是每读入一条高级语句,就用解释器将其翻译为一

条机器代码,予以执行,然后再读入下一条高级语句,翻译为机器代码,再执行,如此反复。

总而言之,是边翻译边执行。

像C,Pascal之类的语言,属于编译型的高级语言。

它们的特点是计算机事先对高级语

言进行全盘翻译,将其全部变为机器代码,再统一执行,即先翻译,后执行。

从速度上看,

编译型的高级语言比解释型的高级语言更快。

5、简述如何将语法树转化成抽象语法树。

6、求定义语言L1={anbnci|n≥0,i≥0}的文法。

7、将下列语句翻译为逆波兰表示(后缀式)和四元式表示:

a=(b+c)*e+(b+c)/f

8、什么是编译程序?

编译程序把高级语言翻译成机器语言时有哪几种方式?

它们之间有什么区别?

编译和翻译编译程序就是把人们熟悉的高级计算机语言换成二进制机器语言。

编译程序把一个源程序翻译成目标程序的工作过程分为五个阶段:

词法分析;语法分析;语义检查和中间代码生成;代码优化;目标代码生成。

主要是进行词法分析和语法分析,又称为源程序分析,分析过程中发现有语法错误,给出提示信息。

由于结构的完成不同,编译时不只是表示的转换更是结构和格式的转变。

而翻译只是简单的进行表示方法的转换,转换前后的内容基本是一一对应的。

五、应用题

2、文法G[S]为:

S→Ac|aB

A→ab

B→bc

写出L(G[S])的全部元素。

abc

5、把语句

Whilex>ydo

ifx>0thenx:

=x-1

elsey:

=y+1;

翻译为四元式序列。

whilex

{

do

{

if

{

x>0

{

x=x-1

}

else

y=y+1

}

}

}

六、计算题:

1、写一个文法,使其语言是奇数集,且每个奇数不以0开头。

解:

文法G(N):

N→AB∣B

A→AC∣D

B→1∣3∣5∣7∣9

D→B∣2∣4∣6∣8

C→0∣D

2、写一个文法,使其语言是偶数集,且每个偶数不以0开头。

解:

所求文法是G(S):

S→AB∣BAO

A→AD∣C

B→2∣4∣6∣8

C→1∣3∣5∣7∣9∣B

D→0∣C

3、按指定类型,给出语言的文法。

L={aibj|j>i≥1}的上下文无关文法。

【解答】

(1)由L={aibj|j>i≥1}知,所求该语言对应的上下文无关文法首先应有S→aSb型产生式,以保证b的个数不少于a的个数;其次,还需有S→Sb或S→bS型的产生式,用以保证b的个数多于a的个数;也即所求上下文无关文法G[S]为:

G[S]:

S→aSb|Sb|b

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

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

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