[心得]编译原理知识整理

本文是关于编译原理的知识整理,涵盖了从词法分析、语法分析到代码生成的全过程。介绍了编译器的基本结构,如分析和综合阶段,以及正则表达式、上下文无关文法在编译器设计中的应用。还讨论了词法分析器、语法分析器的工作原理,包括LR(k)语法分析和LL(1)文法,并涉及了编译器优化技术,如数据流分析和寄存器分配。最后,文章提到了并行化和过程间分析在编译器设计中的重要性。
摘要由CSDN通过智能技术生成

前言

不学龙书的码农不是靠谱的码农。就冲这句话,我真的把编译原理给速推了一把。

干货

分析把源程序分解成多个组成要素,并在这些要素之上加上语法结构。
综合根据中间表示和符号表中的信息来构造目标程序。
把声明如何完成一个计算任务的语言称为强制式语言。

编译器最基本的数学模型是有穷状态机FSM和正则表达式。它们用来描述词法单位(关键字,标识符)以及被编译器用来识别这些单位的算法。此外,上下文无关文法用于描述程序设计语言的语法结构。

标识符是一个字符串。所有的标识符都是名字,但有些名字也可以是表达式,变量指向存储中的某个特定位置。
一个函数通常有一个返回值,而一个过程不返回任何值。方法在OO语言中和特定类相关联。

声明告诉我们事务的类型,而定义告诉我们它们的值。
语法描述该语言的正确形式。语义定义程序的含义。

词法单元由各名字和属性值组成,这些词法单元也称为终结符号。

一个文法描述了程序的层次结构。文法的定义使用了称为终结符号的基本符号和称为非终结符号的变量符号。这些符号代表了语言的构造。

词法分析器从输入中逐个读取字符,并输出一个词法单元的流。

语法分析从一个文法开始符号推导出一个给定的终结符号串。推导的方法是反复将某个非终结符替换为它的某个产生式的体。
语法分析的结构是中间代码,具体有抽象语法树AST和三地址代码TAC。

词法分析器扫描源程序并输出一个由词法单元组成的序列。
为了判断下一个词素何处结束。常常预先扫描输入字符。
一个词法分析器的行为经常用一个状态转换图来描述。有穷状态机是状态转换图的形式化表示。

自底向上语法分析器基于LR(k)语法分析。L表示从左到右的扫描,R表示反向构造出一个最右推导序列,

  • 3
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《编译》——复习资料,可适用于课程学习资料、期末复习资料、自主学习资料等等,复习资料共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、付费专栏及课程。

余额充值