编译原理练习题解答
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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)常见的动态存贮分配策略有哪两种?
解答:常见的两种动态存贮分配策略是栈式动态分配策略和堆式动态分配
策略。