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

一、 基本框架

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型 —— 正则文法

对应包含关系
在这里插入图片描述

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.构造编译程序应掌握 编译方法

  • 19
    点赞
  • 156
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
《编译》——复习资料,可适用于课程学习资料、期末复习资料、自主学习资料等等,复习资料共218页,内容丰富,干货十足! 主要内容包括: 一、概述 1 1.1 课程介绍 1 1.2 编译过程 3 1.3 高级语言程序简介 11 二、程序语言概论 14 2.1 程序语言的定义 14 2.2 文法的形式化定义和分类 18 2.3 文法和语言 22 2.4 语法分析树 29 三、词法分析_1 33 3.1 词法分析概述 33 3.2 词法分析程序的设计 38 3.3 正规式与自动机 41 3.3.1 正规式与正规集 41 3.3.2 确定有限自动机(DFA) 44 3.3.3 非确定有限自动机(NFA) 49 3.4 单元测试 51 四、词汇分析_2 52 4.1正则式和有限自动机的等价 52 五、词法分析_3 59 5.1 DFA的化简 59 六、词法分析_4 62 6.1 词法分析器的自动生成 62 6.2 词法分析程序实现实例 64 七、语法分析—自上而下分析_1 71 7.1 词法分析简介 71 7.2 自顶向下分析简介 73 7.3 消除左递归和回溯 76 八、语法分析—自上而下分析_2 80 8.1 LL(1)分析法 80 8.2 FIRST集和FOLLOW集的构造 82 8.3 单元测试 85 九、语法分析—自上而下分析_3 86 9.1 LL(1)分析表的构造 86 9.2 递归子程序的原理 89 9.3 单元测试 95 十、语法分析—自下而上分析_1 96 10.1 自下而上分析方法的基本思想 96 10.2 分析树与规范规约 99 10.3 符号栈的使用 103 10.4 单元测试 105 十一、语法分析—自下而上分析_2 106 11.1 算符优先文法 106 11.2 优先表构造 109 11.3 算符优先分析算法 112 10.4 单元测试 115 十二、语法分析—自下而上分析_3 116 12.1 LR分析器 116 12.2 LR分析过程 119 12.3 单元测试 132 十三、语法分析—自下而上分析_4 133 13.1 构造识别前缀的DFA 133 13.2 LR(0)项目集规范族构造 140 13.3 由DFA构造LR(0)分析表 146 13.4 单元测试 150 十六、属性文法和语法翻译制导 151 16.1 L-属性文法和自顶向下翻译 151 16.2 自下而上计算继承属性 159 十七、语义分析和中间代码产生_1 166 17.1 语义分析的任务 166 17.2 中间代码的生成 168 17.3 算术表达式和赋值语句 175 17.4 单元测试 178 十八、语义分析和中间代码产生_2 179 18.1 布尔表达式的作用和文法描述 179 18.2 做控制用布尔表达式的翻译(回填) 181 18.3 控制流语句的翻译 186 18.4 控制流语句的翻译(回填) 189 十九、代码优化_1 194 19.1 什么是代码优化 194 19.2 基本块及流图 199 19.3 单元测试 202 二十、代码优化_2 203 20.1 基本块的DAG表示及其作用 203 二十一、重要知识点 213 1. 考试内容及分数分布 213 2. 名词解释 214 3. 简答 215 4. 结语 216
编译原理期末考试主要涵盖了编译原理课程所学的知识点和理论基础,以及相关的实践能力。在考试中,通常会包含选择填空、简答和编程等不同类型的目。 选择考察学生对编译原理相关概念的理解和掌握程度,例如词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成等方面的知识。 填空要求学生填写编译过程中的关键参数、关键步骤或关键算法的具体数值或表达式,考察学生对具体细节的掌握情况。 简答会提出一些编译原理的基本问,要求学生用自己的语言进行解释和回答,主要考察学生对编译原理的原理和概念的理解和应用能力。 编程是考察学生对编译原理知识的实际应用能力,通常要求学生编写一个简单的编译器或解释器的某个功能模块,完成对源代码的词法分析、语法分析、语义分析等操作。 在备考阶段,需要重点复习编译原理的基本概念、算法和原理,练习做一些相关的习和编程实践,熟悉不同类型的目形式和解思路。此外,深入理解编译原理的原理和实践,尝试设计和实现一个简单的编译器,也有助于加深对知识的理解和应用能力的提升。 总之,编译原理期末考试是对学生在编译原理课程上所学的理论和实践能力的检验,通过复习和实践的准备,能更好地应对考试的各个环节,取得好成绩。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值