【课程笔记】编译原理

感谢Bilibili University的 致爱意,语法分析部分她的讲解视频提供了很大的帮助


  • 绪论
  • 形式语言概论
  • 词法分析
  • 语法分析
  • 语义分析及中间代码生成
  • 代码优化
  • 符号表

绪论

编译程序的概念

程序:一系列指令或语句,用来描述计算机依次要执行的一系列工作。本质上是描述一定数据的处理过程

程序的层次结构:

程序
子程序,分程序,过程,函数
语句
表达式
数据引用
算符
函数调用

结构:基本符号(字母,数组,符号等)、单词、表达式、语句、分程序、程序

程序设计语言:所有该语言的程序的全体

  • 语法、语义、语用
  • 语法:表示构成语言句子的各个记号之间的组合规律
    是描述程序的结构,根据它可以产生正确的程序(词法规则,语法规则)。
    语法规则和词法规则定义了程序的形式结构,定义语法单位的意义属于语义问题。
    • 词法规则:单词符号的形成规则(单词符号是语言中具有独立意义的最基本结构)
      • 包括:常数、标识符、基本字、算符、界符(逗号、分号、括号、空白)
      • 描述工具:有限自动机
    • 语法规则:语法单位的形成规则
      • 包括:表达式、语句、分程序、过程、函数、程序
      • 描述工具:上下文无关文法
  • 语义:表示按照各种表示方法所表示的各个记号的特定含义
    是语言成分的含义,由程序执行的效果来说明。各个记号和记号所表示的对象之间的关系。
  • 语用:表示在各个记号所出现的行为中,它们的来源、使用和影响

编译程序:将程序翻译成汇编语言程序或机器语言程序(目标程序),然后再执行的翻译程序

编译过程

符号表管理
主要过程
出错管理

主要过程:

单词符号
语法单位
四元式
四元式
源程序
词法分析
语法分析
语义分析及中间代码生成
代码优化
目标代码生成

语法分析之后产生语法单位;目标代码之前都是四元式

词法分析:从左至右读取字符流的源程序,识别单词并表示成机内表示

语法分析:依据源程序的语法规则把源程序的单词序列组成语法短语

语义分析:分析由语法分析器给出的语法单位的语义

中间代码生成:源程序的内部表示(三元式、四元式、逆波兰表达式)

代码优化:对代码进行等价变换提高执行效率[运行速度、节省存储空间](机器有关、机器无关)

目标代码生成

符号表管理:每一步都会用到

前端:词法、语法、语义、中间代码生成,与机器无关的代码优化

后端:与机器有关的代码优化、目标代码生成

便于程序移植

对源程序或源程序的中间表示从头到尾扫描一次

  • 一遍可以由若干段组成
  • 一个阶段也可以分若干遍来完成

形式语言自动机

形式语言:只在语法意义下的语言

字母表 ∑ \sum :元素的非空有穷集合

符号:字母表中的元素

文法:描述语言的语法结构的形式规则或语法规则
作用:用有穷集合表示无穷句子
文法四元组: G ( V N , V T , P , S ) G(V_N,V_T,P,S) G(VN,VT,P,S),简记为 G [ S ] G[S] G[S]

V => W: V直接推导出W,W直接规约为V

句型 = { x ∣ S ⇒ ∗ x ,   且   x ∈ V ∗ } \{x|S \stackrel{*}{\Rightarrow} x ,\ 且\ x\in V^* \} { xSx,  xV}识别符号S也是句型

句子 = x , ( S ⇒ + x ,   且   x ∈ V T ∗ ) x, (S \stackrel{+}{\Rightarrow} x ,\ 且\ x\in V_T^* ) x,(S+x,  xVT) x x x仅由终结符号组成,句子也是句型

语言 L ( G ) = { x ∣ S ⇒ + x ,   且   x ∈ V T ∗ } L(G) = \{x|S \stackrel{+}{\Rightarrow} x ,\ 且\ x\in V_T^* \} L(G)={ xS+x,  xVT},文法G的一切句子的集合

文法的等价: L ( G 1 ) = L ( G 2 ) L(G_1) = L(G_2) L(G1)=L(G2)

文法的类型:对任一产生式 α → β \alpha \rightarrow \beta αβ,

  1. 0型文法: α ∈ ( V N ∪ V T ) + ,    β ∈ ( V N ∪ V T ) ∗ \alpha \in (V_N \cup V_T)^+,\ \ \beta \in (V_N \cup V_T)^* α(VNVT)+,  β(VNVT)
  2. 1型文法(上下文相关): ∣ β ∣ ≥ ∣ α ∣ ,    S → ϵ 除 外 |\beta| \ge |\alpha|, \ \ S \rightarrow \epsilon除外 βα,  Sϵ
  3. 2型文法(上下文无关): α ∈ V N ,    β ∈
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值