贵州财经大学编译原理复习资料

2026/1/27 7:07:35

编译原理学习指导与习题解析

第一章:

1-1选择、填空题

(1)构造一个编译程序的三要素是 , , 。 答案:源语言、目标语言和编译方法、技术及工具

(2)被编译的语言为A语言,编译的最终结果为B语言代码,编写编译程序的语言为C语言。那么, 语言是源语言, 语言是宿主语言, 语言是目标语言。 答案:A、C、B

(3)下面对编译原理的有关概念描述正确的是 。

A.目标语言只能是机器语言 B.编译程序处理的对象是源语言

C.Lex是语法分析自动生成器 D.解释程序属于编译程序 答案:c

(4) 是编译程序的组成部分。

A.词法分析程序 B.代码生成程序

c.设备管理程序 D.语法分析程序 答案:C

(5)下面对编译程序分为“遍”描述正确的是

A.分“遍”可以使编译程序结构清晰 B.可以提高程序的执行效率

C.可以提高机器的执行效率 D.可以增加对内存容量的要求 答案:A

(6)编译程序各阶段的工作都涉及到 , 。

A.表格管理 B.语法分析 C.出错处理 D.代码优化 答案:A、C

(7)编译程序的生成方式可以是 , , 。 A.自编译 B.高级程序设计语言编写 C.完全自动生成 D.汇编语言缩写 答案:ABD

(8)设有表达式a*b—c,将其中a*b识别为表达式的编译阶段是 。 A.词法分析 B.语法分析 C.语义分析 D.代码生成 答案:B

(9)设一个编译器接收的源语言A,目标语言为B,宿主语言为C,则该编译器的符号表示是 。 答案:

(10)下面对编译程序分“遍”应考虑的因素描述不正确的是 。 A.源语言的特征和约束 B.代码优化的因素 C.编译程序的功能 D.目标代码的选择 答案:C I-2判断题

(I)解释执行与编译执行的根本区别在于解释程序对源程序没有真正进行翻译。 ( ) 答案:错

(2)宿主语言是目标机的目标语言。 ( ) 答案:错

(3)具有优化功能的编译器可以组织为一遍扫描的编译器。 ( ) 答案:错

(4)编译程序是将用某一种程序设计语言编写的源程序翻译成等价的另一种语言程序(目标程序。 ( ) 答案:错

(5)编译程序是应用软件。 ( ) 答案:错

(6)编译程序的基本组成中,词法分析、语法分析和语义分析应该是有序的。( ) 答案:对

(7)“遍”是指对源程序的从头到尾扫描。 ( ) 答案:错

(8)用高级语言书写的源程序都必须通过翻译,产生目标代码后才能运行。 ( ) 答案:对

(9)含有优化功能的编译程序执行效率高。 ( ) 答案:错

(10)解释程序和编译程序的不同在于,解释程序根据语法翻译成目标代码并立即执行之,而编译程序需产生中间代码及优化。 ( ) 答案:错 1-3简答题

(I)什么是编译程序? 答:把用某一种程序设计语言编写的源程序翻译成等价的另一种语言程序(目标程序)的程序,称之为编译程序。

(2)源程序的编译执行和解释执行的主要区别是什么?

答:一般编译程序从对源程序执行途径的角度不同,可分为解释执行和编译执行。所谓解释执行是借助于解释程序完成,即按源程序语句运行时的动态结构,直接逐句地边分析边翻译并执行。像自然语言翻译中的口译,随时进行翻译。所谓编译执行,是将源程序先翻译成一个等价的目标程序,然后再运行此目标程序,故编译执行分为编译阶段和运行阶段。

两种执行方式的主要区别是:编译执行是由编译程序生成一个与源程序等价的目标程序,它可以完全取代源程序,目标程序可运行任意多次,不必依赖编译程序。正像自然语言翻译中的笔译,一次翻译可多次阅读。而解释执行不生成目标程序,对源程序的每次执行都伴随着重新翻译的工作,而且不能摆脱翻译程序。

(3)典型的编译程序在逻辑功能上由哪几部分组成?各部分的功能是什么?

答:典型的编译程序在逻辑功能上由词法分析、语法分析、语义分析与中间代码生成、代码优化及目标代码生成五部分组成。各部分的简要功能是:

①词法分析的任务是对输入的符号串形式的源程序进行最初的加工处理。它依次扫描读入的源程序中的每个字符,根据源语言的词法规则识别出源程序中有独立意义的单词,用某种特定的数据结构对它的属性予以表示和标注。

②语法分析的任务是:在词法分析基础上,依据源语言的语法规则,对词法分析的结果进行语法检查,并识别出单词符号串所对应的语法范畴。 ③语义分析与中间代码生成的任务是:依据源语言的语义规则对语法分析所识别的语法范畴

进行语义检查并分析其含义,翻译成与其等价的中间代码。

④代码优化是为了改进目标代码的质量而在编译过程中进行的工作。代码优化可以在中间代码或目标代码级上进行,其实质是在不改变源程序语义的基础上对其进行加工变换,以期获得更高效的目标代码。而“高效”一般是指,对所产生的目标程序缩短其运行时间和节省存储空间。

⑤目标代码生成的功能是:根据中间代码及编译过程中产生的各种表格的有关信息,最终生成所期望的目标代码程序。

(4)编译程序实现的途径有哪些?

答:编译程序的实现途径即实现方式一般可以用高、中级程序设计语言编程实现,可以通过移植的方式实现,可以通过自编译的方式,还可以通过部分自动生成的方式实现。

(5)为不同目标机编写相同源语言的编译器时,其设计变化最大的是后端,为什么?

答:在编译程序构成的经典划分中,词法分析、语法分析及语义分析中间代码生成称为编译程序的前端,代码优化及代码生成称为后端。涉及前端的功能仅与源语言的词法、语法及语义相关适于自动生成。对后端实现的代码优化和代码生成,鉴于不同的目标机具有不同的体系结构和指令系统,代码优化和代码生成需要基于特定的目标机来设计和实现。

(6)简述编译程序中“出错处理”程序的作用。 答:“出错处理”作为编译程序的一个不可或缺的公共程序,其主要作用是对在编译过程中扫描、翻译源程序时根据文法规则和语义规则诊断源程序中存在的错误,对错误进行定性、定位和必要的容错处理。这样可以协助程序员及时准确地发现源程序中的错误,以提高调试程序的效率,方便用户修改程序,并能把错误限制在尽可能小的范围里。

(7)为不同目标机编写相同源语言的编译器时,其设计变化最大的是后端,为什么?

答:在编译程序构成的经典划分中,词法分析、语法分析及语义分析中间代码生成称为编译程序的前端,代码优化及代码生成称为后端。涉及前端的功能仅与源语言的词法、语法及语义相关适于自动生成。对后端实现的代码优化和代码生成,鉴于不同的目标机具有不同的体系结构和指令系统,代码优化和代码生成需要基于特定的目标机来设计和实现。

(8)简述编译程序中“出错处理”程序的作用。 答:“出错处理”作为编译程序的一个不可或缺的公共程序,其主要作用是对在编译过程中扫描、翻译源程序时根据文法规则和语义规则诊断源程序中存在的错误,对错误定性、定位和必要的容错处理。这样可以协助程序员及时准确地发现源程序中的错误,以提高调试程序的效率,方便用户修改程序,并能把错误限制在尽可能小的范围里。

第二章: 2.2 习题

2-1)选择、填空题

设有字母表A={0},A˙={ 答案:,0,00,000 ...

用于描述另一种语言的语言称为 答案:元语言

(3)一个文法所描述的语言是一个无限集合,则该文法一定是 文法。 答案:递归

(4)下面不能用于对文法进行描述的是 。

A.源语言 B.EBNF C.BNF D.语法图 答案:A

(5)设有文法G的符号集V,非终结符集 ,终结符集,下列叙述中正确的是 。 A.V= B.V= C.V=

D. V=

答案:D

(6设文法G(S)为: S 0A A 1B B 0|0S 则L(G(S))为 。 A. B. C.

D.

答案:B

(7)设有文法G(S)为: S (B)a B Bb|b|

下列叙述错误的是 。 A.G是2型文法 B.

C.

D.有文法G'为S ()a|(B)a B bB|b,则G'=G

答案:C

(8)给定文法G(S): S 0S|1A|0 A 1|1S|0B B 1A|0B

下列符号串是L(G)中元素的是 。

A.10100010011011 B. 0101001110010010 C.1101010011110111 D. 1010011101101010 答案:A

(9)设有文法G(S):S S1|S0|Sa|Sc|a|b|c ,下列符号串中不是该文法的句子的是 A.ab0 B.a0c01 C.aaa D.bc10 答案:A

(10)设有文法G(S):


贵州财经大学编译原理复习资料.doc 将本文的Word文档下载到电脑
搜索更多关于: 贵州财经大学编译原理复习资料 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219