【编译原理】:编译原理期末复习1

1,关于文法
一个文法G可以抽象的分为四元组(VN,VT,P,S)
VN表示非终结符 VT表示终结符 P表示产生式 S表示开始符

2,老师上课说的编译原理的阶段说的是:词法分析,语法分析,语义分析,中间代码生成,代码优化,目标代码生成
其中 语法分析,语义分析,中间代码生成称为 语法制导翻译
语义分析,中间代码生成称为 语义翻译

3,乔姆斯基创造了文法,克林创造了自动机,其实这两种东西是等价的

4,优化可生成“运行时间段且存储空间小的代码”

5,如何判断文法是不是二义文法
对一个串进行识别,判断其是否能够分出两个串
已知文法 G[S] 为 S → aSb|Sb|b ,试证明文法 G[S] 为二义文法。
证明:    
  由文法G[S]:S→aSb|Sb|b,对句子aabbbb对应的两棵语法树为:
这里写图片描述

6,如果文法G是无二义性的,那么它对应的最左推导和最右推导对应的语法树必定相同

7,构造编译程序应该掌握:源程序,目标语言,编译方法

8,两个正规式等价说的是两个正规式所识别的语言集相等

9,计算机执行用高级语言编写的程序主要有:解释编译

10,自上而下分析法操作 (自己想)

11,题型:消除左递归,提取公因子
解题方法:
很好想,左递归就套公式,用一个临时变量解决,提取公因子就用提取公因子,换一个新变量出来
例题:
考虑文法 G[S]:
S → (T) | a+S | a
T → T,S | S
消除文法的左递归及提取公共左因子。
解:消除文法G[S]的左递归:
S→(T) | a+S | a
T→ST′
T′→,ST′| ε
提取公共左因子:
S→(T) | aS′
S′→+S | ε
T→ST′
T′→,ST′| ε

12,几个填空题
词法分析输入:源程序 输出:单词符号
语法分析输入:单词符号 输出:语法单位
语法分析的方法大致分为:自上而下分析法 + 自下而上分析法(现在我还没看)
预测分析使用 预测分析表 + 符号栈 联合控制
最右推导 规范推导! 最右推导就是从右边开始推?哦了?
根据优化所设计的范围,可把优化分为:局部优化循环优化全局优化
优化的定义:对程序进行各种变换,使的从变换后的程序出发,能够产生更高效的代码
文法G含有终结符的句型成为 句子

自上而下分析法: 从开始符号开始推,推出句子 (句子为下)
自下而上分析法:从句子开始逐步归约,直到归约到开始符

目标代码的形式:机器语言,汇编语言,待装配机器语言模块
代码考虑问题:(1)生成目标代码短 (2)减少访问内存(3)考虑到计算机指令系统的特点

display表嵌套层次显示表
作用:登记外层每个活动的最新的起始地址

13,几个填空题:
13.1编译程序首先要识别出源程序中每个(单词),然后分析每个(句子)并翻译其含义
13.2通常把分析前端和综合后端两大阶段,词法,语法和语义分析是对源程序的(分析),中间代码生成,代码优化,目标代码生成是对源程序的(综合)
13.3程序设计语言的发展带来了日渐多变的运行时存储管理方案,主要分为(静态存储分配) + (动态存储分配)
13.4对于编译程序而言,输入数据是(源程序),输出结果是(目标程序

《编译》——复习资料,可适用于课程学习资料、期末复习资料、自主学习资料等等,复习资料共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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值