编译原理重点考点梳理总结[期末总结]

本文深入解析编译原理,涵盖编译型与解释型语言对比,编译器工作流程,词法与语法分析,以及上下文无关文法等关键概念。提供详尽的考点梳理,适合备考与自学。

编译原理考点梳理

期末考试对一些重点内容的梳理总结,希望能帮助到需要的小伙伴。
keep me far away everything i love
keep me far away everyone i know
i’m nothing campared to who uesd to be
words of song Homesick ,belong Flower Face

参考

B站视频链接 > 老师讲课通俗易懂。
Blog
链接1
链接2
编译原理第三版《陈意云》

习题:

  • 机试题

符号和名词⚽⚽⚽

代表 意义 备注
基本字母表 字母表中无 ε
并集 相当于
L* L的闭包 0个或多个L连接的并集,
r** = r*
L+ L的正闭包 一个或多个L的连接的并集
LM L连接M,有顺序 。rs (rs)t = r(st)
ε 空串,长度为0的特殊串。_e_是连接的恒等元素 er = r; re =r ,
r* = (r
词法记号 二元组合集 <记号名,属性值> 即词法分析器所输出的
模式 if for esle
词法单元 age ,100,
名字和符号 为区分二者,使用黑体表示名字
[abc], [A-z] [abc]代表 a b
一元运算符 ? 零个或一个实例 ,r?是r ε的缩写
一元运算符 + 一个或多个实例
保留字 是语言预先确定了含义的词法单元
标准标识符 也是预先确定了含义的标识符,但程序可以重新声明它的含义
正规集 正规式表示的语言叫做正规集或正规语言。

重点内容🎇🎇🎇

第一章 绪论

什么是编译型和解释型语言?

编译型:先编译后执行

  • 把高级语言程序翻译成机器语言程序运行所得机器语言程序求得计算结果
  • 翻译程序,编译程序口

解释型:解释执行

  • 边解释边执行
  • 解释程序

编译型:运行前先应泽器将高级语言代码编泽为对应机器的cpu汇辑指令集,曲汇绸器汇编为目标机器码,生成可执行文件,然最后运行生成的可执行文件。最典型的代表语言为C/C++,一般生成的可执行文件及.exe文件
解释型:在运行时由翻器将高级语言代码翻译成于款行的中间代码,并由解释器(例如浏器、虚拟机)速一将该中间代码解释成机器码并执行(可看做是将编解、运行合二为一了),最典型的代表话言为 Javascript、 Python、Ruby和Perl等

翻译器,编译器,解释器?

能够完成从一种语言到另一种语言的保语义变换的软件称为翻译器
编译器是一种翻译器,它的特点是目标语言比源语言低级
解释器是不同于编译器的另一类语言处理器。 解释器不像编译器那样通过翻译来生成目标程序,而是直接执行源程序所指定的运算。解释器也需要对源程序进行词法分析、语法分析和语义分析等,这样它才有可能知道源程序制定了一些什么运算。

解释执行效率低的原因?
  • 对于编译方式来说,对源程序的词法分析、语法分析和语义分析只要进行一次。
  • 对于解释执行来说,每次执行到源程序的某个语句,都要对它进行一次词法分析、语法分析和语义分析,确定了这个语句的含义以后,才能执行它指定的运算。
编译器的各个阶段?

在这里插入图片描述

  • 词法分析:将源程序代码的字符流转成记号流 。记号流就是个二元组(表示符号的时候是单个的)。** 字符流—记号流**
  • 语法分析(syntax analysis)**检查记号流是否符合编程语言的规则,然后根据编程语言规则用记号的第一元建立一种树形中间表示。典型的中间表示是语法树。**记号流—树形中间表示(语法树)
  • **语义分析 使用语法树和符号表,根据语言的定义检查源程序之间的语法一致性。确保各部分都能组合。另外还进行类型检查。**语法树—更低级的中间代码表示
  • 独立于机器的代码优化 优化代码。速度快或者功耗低。
  • 代码生成是指源程序的一种中间表示作为输入并把它映射到一种目标语言。

如果目标语言是机器代码,则需要为源程序所用的变量选择寄存器或内存单元,然后把中间指令序列翻译为完成同样任务的机器指令序列

第二章

(1)词法分析器的相关概念
  • 构造词法分析器可以用状态转换图来描述词法记号的结构,然后手动把这些状态图翻译成为识别词法记号的程序。
  • 任务:把源程序的字符流翻译成词法记号流。

•词法分析器的任务是把构成源程序的字符流翻译成词法记号流。
•构造词法分析器的一种简单办法是用状态转换图来描述元词法记号的结构,然后手工把这种状态转换图翻译成为识别词法记号的程序。


词法记号 :二元组合集
模式: if for esle
词法单元: age ,100,
// 都是为了能够识别出具有特定意义的整体。而非一个一个的被分割。
>>
关键字、保留字和标准标识符的区别
•保留字是语言预先确定了含义的词法单元
•标准标识符也是预先确定了含义的标识符,但程序可以重新声明它的含义
>>
大多数词法错误是多、漏或错一个字符、或相邻的两个字符错位。(无法发现。可以

《编译》——复习资料,可适用于课程学习资料、期末复习资料、自主学习资料等等,复习资料共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
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wvdon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值