编译原理期末复习
第七章
1. 根据所涉及的范围,优化可分为局部优化、全局优化、循环优化 3种。
2. 编译程序进行数据流分析的目的是代码优化。
3. 局部优化是局限于一个基本块范围内的一种优化。
第六章
1. 数据对象运行时的表示由它的(类型决定。
2. 当过程名出现在可执行语句中时,就说过程在该点被(调用。
3. 可以用一棵树来描绘控制进入和离开活动的方式,称之为(活动树。
4. 一个声明起作用的那部分程序称为该声明的(作用域。
5. 程序块的概念起源于(Algol 语言。
6. 堆式动态分配在申请和释放存储空间时遵循(自由申请和释放原则。
7. 栈式动态分配与管理在过程返回时应做的工作有(恢复 TOP 。
第五章
1. 在分析树中, 一个节点的 (继承属性是由该节点的父节点和 /或兄弟节点的属性决定。
2. 如果分析树中一节点的属性 b 依赖于属性 c , 那么这个节点的属性 b 的语义规则的计算必须在定义属性 c 的语义规则的计算(之后。
3. 表达式的无环有向图叫做(dag 。
4. 语法树是(分析树的浓缩表示。
5. 三地址代码是语法树或 dag 的(线性化表示。
6. 有 2种方式表示和产生式相联系的语义规则,即语法制导定义和翻译方
案。
7. 语法制导定义是上下文无关文法的推广, 其中每个文法符号都有一个属性集合, 它分成 2个子集,分别为文法符号的综合属性集合和继承属性集合。
8. 仅仅使用综合属性的语法制导定义叫做 S 属性定义。
对于 S 属性定义, 分
析树的注释可以自底向上完成:从叶节点到根,通过计算语义规则而得到节点的属性。
9. 三地址语句是中间代码的抽象形式。
在编译器中这些语句可以用记录实现, 这种记录有运算符和运算对象域。
三地址语句的表示形式分别有三元式、四元式和间接三元式。
10. 布尔表达式由布尔运算符作用于布尔量或关系表达式构成。
11. 可以把布尔表达式翻译成没有任何布尔运算符的三地址代码, 该代码运行时可能只计算部分表达式,这种风格的计算有时叫做“ 短路”或“ 转移”代码。
12. L 属性定义,其中 L 表示 Left ,因为属性信息是从左往右传播的。
13. 判断两种文法是否等价可以利用带动作的分析树。
14. a+b*(c+d/e可被翻译成:1.t1:=d/e 2.t2:=c+t1 3.t3:=b*t2 4.t4:=a+t3。
三元序列:①(/,d,e②(+,c,①③(*,b,②④(+,a,③
四元序列:(/,d,e,t1 (+,c,t1,t2 (*,b,t2,t3 (+,q,t3,t4。
第四章
1. 每颗分析树都有(0个与之对应的最左推导。
2. 每个句子有(一个分析树。
3. 活前缀是(右句型的前缀。
4. LR 分析法是一种(由左到右的分析技术,
5. 语法分析的输入是单词符号串 ,输出是语法单位 (或分析树。
6. 给定一个文法 G ,如果 L(G中存在一个具有两颗或两颗以上的分析树的句子,则称 G 是二义性的。
7. 对于预测语法分析器, 每个非终结符都对应一个状态转换图 , 边上的标记是记号和非终结符。
8. LL (1中的第一个 L 代表从左向右扫描输入 ,第二个 L 代表产生最左推导。
9. 通过“裁剪句柄”可以得到最右推导的逆过程。
10. 移动归约语法分析器的四种可能动作分别是:移动、归约、接受、出错。
11. 出现在移进归约语法分析器栈中的右句型的前缀集合称为:活前缀。
12. LR (k 分析法, k 指的是在决定语法分析动作时需要向前看的符号个数。
13. LR 语法分析栈中存放的状态是识别活前缀的DFA状态。
14. YACC 是语法分析器的自动生成的工具。
第三章
1. 通常对符号表的查找方法有(顺序查找法 (折半查找法 (杂凑法 (分块查找法。
2. Lex 输入文件由以下(定义集 (规则集 (辅助程序集 (用户程序集部分组成。
3. Lex 规定了对字符串的两个处理原则是(规则优先原则 (最长子串匹配原则。
4. (Lex 是词法分析器的自动生成工具。
5. 词法分析器输入是字符串 (或源程序 ,输出是记号 (或称单词、 Token 字。
6. 在程序语言中,词法分析时具有独立意义的最小单位是记号 (或称单词。
7. 词法分析时识别出来的成分的机内表示为 Token 字。
8. 当内存容量很大时, 可将源程序一次读入到内存的一个源程序区, 每一个符号通常占用一个字节。
但为了节省存储空间, 通常在内存中开辟一个输入缓冲区 , 先将源程序顺序地分批读入输入缓冲区。
9. 用术语字母和字符类表示有限符号的集合。
10. 编译过程中扫描器所完成的任务从源程序中识别出一个个具有独立语法意义的单词。
第二章
1. 文法 G 所描述的语言是(由文法的识别符号推出的所有终结符号串的集合。
2. 一个上下文无关文法 G 包含的四个组成部分依次为:一组(终结符号 ,一组(非终结符 ,一组(开始符号 ,一组(产生式。
3. 文法的二义性和语言的二义性是两个(不同的概念。
4. 一个语言的文法是(不唯一的。
5. 巴科斯 -诺尔范式(即 BNF 是一种广泛采用(描述文法的工具。
6. 已知语言 L={a的 n 次 *b*b的 n 次|n≥ 1},则下述文法, (Z->aAb A->aAb|b可以产生语言 L 。
7. 下列属于字符串 banana 的子串是(babn 。
8. 形式语言理论的根本目的是解决什么能自动化且怎样才能被(有效地自动化。
9. Chomsky 将文法分为四类, 分别为 0型文法 (又称短语文法、 1型文法 (又称上下文有关文法、 2型文法 (又称上下文无关文法、 3型文法 (又称正规文法或正则文法。
10. 文法 G 产生的句子的全体是该文法描述的语言。
11. 一个文法 G[Z]若存在推导序列 Z->+...Z...,则称 G[Z]是递归文法,这类文法所产生的句子有无数个。
12. 识别正则文法的自动机为 FA ,识别上下文无关文法的自动机为 PDA 。
13. 正规文法是用来描述正规集的文法,它可以用来描述高级语言的词法部分。
14. 产生式q->ap和q->a用状态转换函数分别表示为:δ(q,a =p和δ(q,a =T.
第一章
1. 一般程序设计语言的定义都涉及(语法、语义、语用三个方面。
2. 程序语言一般分为(低级语言和(高级语言两大类,其中(低级语言又称为面向机器的语言。
3. 面向机器语言指的是(特定计算机系统所固有的语言。
4. 在使用高级语言编程时, 首先可通过编译程序发现源程序的全部 (语法错误和部分 (语义错误。
5. 编译程序与具体的机器(有关 ,与具体的语言(语言。
6. 使用解释程序时,在程序为执行完的情况下, (也能重新执行已执行的部分。
7. 编译程序是一种常用的(系统软件。
8. 编写一个计算机高级语言的源程序后, 到正式上机运行之前, 一般要经过 (编辑、编译、连接这几步。
9. 用高级语言书写的源程序都必须通过编译,产生目标代码后才能投入运行。
(X
10. 编译程序生成的目标程序不一定是机器语言的程序。
(√
11. 编译程序的工作过程一般可以划分为词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成等几个基本阶段,同时还会伴有表格处理和出错处理。
12. 若源程序是用高级语言编写的, 目标程序是机器语言程序或汇编程序 , 则其翻译程序称为编译程序。
13. 编译方式和解释方式的根本区别在于是否生成目标代码。
14. 翻译程序是这样一种程序,它能够将用一种语言书写的程序转换成与其等价的另一种语言书写的程序。
15. 对编译程序而言,输入数据是源程序 ,输出结果是目标程序。
16. 如果编译程序生成的目标程序是机器代码程序 , 则源程序的执行分为两大阶段:编译阶段和运行阶段。
如果编译程序生成的目标程序是汇编语言程序 , 则源程序的执行方式分成三个阶段:编译阶段、汇编阶段、运行阶段。
‘ ( ’表选择, ‘ ___’表填空。