期末考试:编译原理复习基础题——选择填空

一、 基本框架

1. 程序编译的6步

词法分析 —— 单词
语法分析 —— 语法
语义分析 —— 语义
中间代码生成 —— 文章初稿
代码优化 —— 文章修改
目标代码生成 —— 文章完成

2.编译程序的过程

  1. 首先要读取源程序的每一个( 字符 )识别出( 单词 ) —— 词法分析
    然后再识别出( 句子 ) —— 语法分析
    再分析每个句子的( 语义 )—— 语义分析
    并翻译成中间代码。 —— 中间代码生成

  2. 编译程序的工作过程一般可以划分为
    词法分析、语法分析、语义分析、代码优化等几个基本阶段,
    同时还会伴有 表格处理 和 出错处理 。

  3. 中间代码生成时所依据的是 语义规则

  4. 编译程序分两阶段工作,前阶段完成的工作是 。
    C.词法分析、语法分析、语义分析和中间代码生成

3.编译与解释

1.区别:编译方式与解释方式的根本区别在于 是否生成机器代码
2.计算机执行用高级语言编写的程序主要有两种途径:编译解释
3.解释程序编译程序 是两类高级程序语言处理程序。
4.与编译系统相比,解释系统_____。
D. 比较简单 , 可移植性好 , 执行速度慢


二、文法

1.句型和句子的区别:是否只有终结符的句型

1.设 G 是一个给定的文法,S 是文法的开始符号,如果 S→α( 其中 α∈(VN1+VT)), 则称 α是该文 法的一个 句型
2.设 G 是一个给定的文法,S 是文法的开始符号,如果 S→α( 其中 α∈V1
), 则称 α是文 法的一个句子

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

S→α

  1. α∈(VN +VT)* —— 句型
  2. α∈VT* —— 句子

句型包含句子,只有终结符的句型为句子

2.四种文法

0型 —— 短语文法
1型 —— 上下文有关文法
2型 —— 上下文无关文法
3型 —— 正则文法

对应包含关系
期末考试:编译原理复习基础题——选择填空_第1张图片

3. 句柄

1. 基本概念
短语:非叶子节点——叶子节点形成语句 (深度为n)
直接短语:深度为1的短语
句柄:最左的直接短语

2.考题

  1. 句柄是一棵给定语法树的最左直接短语
  2. 在规范归约中,用句柄 来刻画可归约串。
  3. 对于文法G,仅含终结符号的句型称为 句子

4.其它(低频考点可跳过)

  1. 一个上下文无关文法 G 包括四个组成部分,
    它们是:一组非终结符号,一组终结符号, 一个开始符号,以及一组 产生式

  2. 文法G1 和 G2 等价是指_____。 G1 和 G2 所识别的(VT)*相等

  3. 文法 G 产生的_____的全体是该文法描述的语言。D.句子


三、词法分析

  1. 词法分析基于 正则文法 进行的,即识别的单词是该类文法的句子。
  2. 词法分析的任务是 识别单词
  3. 词法分析器的输出结果是 单词的种别编码和自身值
  4. 扫描器是( 词法 )分析器,它接受输入的( 源程序 ),对源程序进行( 词法分析)并识别出一个个单词符号,其输出结果是单词符号,供语法分析器使用。
  5. 自动机所完成的任务是从字符串形式的源程序中识别出一个个具有独立含义的最小语法单位即是 B.单词
  6. 词法分析器接受输入的源程序,对 源程序 进行逐个字符识读并识别出一个个单词符号,其输出结果是单词符号,以一个 整数 的形式表示。

四 、语法分析

1. 语法分析的类型

  1. .自底向上语法分析
    分析的关键:寻找句柄
    对应操作:移进 、归约、错误处理、接受

  2. .自顶向下语法分析
    禁止:不允许任一非终结符有间接 左递归的产生式。

2. 其它知识点

  1. 在语法分析处理中, FIRST集合、 FOLLOW集合、 SELECT集合均是 终结符集
  2. 语法分析的数学模型是语法树
  3. 语法分析器调用词法分析器,并接受词法分析器返回的一个个单词,
    单词 进行逐个逐个类型识别, 检查这些单词能否构成一个 句子

五 、代码优化

  1. 优化目的:节省时间和空间
  2. 优化分类
    循环优化 —— 强度削弱 、删除归纳变量、代码外提
    局部优化(基本块内的优化) —— 删除多余运算,删除无用赋值
    全局优化

六、目标代码生成

  1. 对编译程序而言,
    输入数据是 —— 源程序
    输出结果是 —— 目标程序

  2. 若源程序是用高级语言编写的
    目标程序 是机器语言程序或汇编程序,
    则其翻译程序称为 编译程序

  3. 编写一个计算机高级语言的源程序后 , 到正式上机运行之前,一般要经过编辑 、编译、连接

  4. 代码生成阶段的主要任务是_____。
    C.把中间代码变换成依赖具体机器的目标代码

  5. 解释程序处理语言时,大多数采用的是_____ 方法。
    B.先将源程序转化为中间代码,再解释执行。

七 其它常考题型

1. 存储分配

程序设计语言存储管理方案,主要分为两大类,即( 静态存储分配 )方案和( 动态存储分配)方案。
常用的两种动态存贮分配办法是 栈式 动态分配 和 堆式 动态分配

2.零散知识点(低频考点可跳过)

1.编译程序使用____区别标识符的作用域。 B.说明标识符的过程或函数的静态层次

2.四元式之间的联系是通过____ 实现的。 B.临时变量

3.正规式 M 1 和 M 2 等价是指_____。C. M1和M2所识别的语言集相等

4.四元式之间的联系是通过 临时变量 实现的。

5.构造编译程序应掌握 编译方法

你可能感兴趣的:(期末考试:编译原理复习基础题——选择填空)