0
点赞
收藏
分享

微信扫一扫

编译原理笔记

Villagers 2022-03-11 阅读 80

编译原理笔记--哈工大教学视频

第一章 绪论

一、什么是编译

在这里插入图片描述
编译:将高级语言(源语言)翻译成汇编语言或机器语言(目标语言)的过程

二、编译系统的结构

在这里插入图片描述

三、词法分析概述

词法分析任务:
从左向右逐行扫描源程序的字符,识别出各个单词,确定单词的类型。将识别出的单词转换成统一的机内表示词法单元 (token) 形式
在这里插入图片描述

四、语法分析概述

语法分析:
语法分析器(parser) 从词法分析器输出的token 序列中识别出各类短语 ,并构造语法分析树(parse tree)

五、语义分析概述

语义分析的主要任务:

  1. 收集标识符的属性信息
    在这里插入图片描述
    收集到的信息存放在符号表中。
    (NAME分为两个部分:在字符串表中的位置+长度)在这里插入图片描述

  2. 语义检查
    在这里插入图片描述

六、中 间 代 码 生 成 及编 译 器 后 端 概 述

在这里插入图片描述
常用的中间表示形式

  • 三地址码
    在这里插入图片描述
  • 语法结构树/语法树

在这里插入图片描述

目标代码生成器
以源程序的中间表示形式作为输入,,并把它映射到目标语言
【目标代码生成的一个重要任务是为程序中使用的变量合理分配寄存器】

代码优化
在这里插入图片描述

第二章 语言及其文法

一、基本概念

字母表
在这里插入图片描述
例如:二进制字母表:{0,1}

字母表上的运算

  1. 乘积
    在这里插入图片描述

  2. n次幂
    在这里插入图片描述字母表的0次幂:空串ε

  3. 正闭包
    在这里插入图片描述

  4. 克林闭包
    在这里插入图片描述多一个空串ε


在这里插入图片描述
在这里插入图片描述
串的运算

  1. 连接
    在这里插入图片描述

  2. 空串是连接运算的单位元
    在这里插入图片描述

  3. 前缀与后缀
    在这里插入图片描述

  4. 幂运算
    在这里插入图片描述串的0次幂是空串

二、文法的定义

在这里插入图片描述

  1. VT: 终结符集合
  1. VN:非终结符集合在这里插入图片描述

  2. P: 产生式集合

  1. S:开始符号

例子:在这里插入图片描述

符号约定:

三、语言的定义

推导和归约

句子和句型
句型:在这里插入图片描述句型既可以包含终结符 ,又可以包含非终
结符
,也可能是空串

句子:句子是不包含非终结符的句型。

在这里插入图片描述
语言:
在这里插入图片描述
【文法解决了有限符号表示无穷语言的问题】

四、文法的分类

  1. 0型文法(无限制文法/短语结构文法)
    在这里插入图片描述

  2. 1型文法(上下文有关文法)
    在这里插入图片描述

  3. 2型文法(上下文无关文法)
    左侧是一个非终结符
    在这里插入图片描述

  4. 3型文法(正则文法)
    右线性文法:右部侧是个终结符号串
    左线性文法:右部侧是个终结符号串
    在这里插入图片描述
    在这里插入图片描述

四种文法之间的关系
在这里插入图片描述

四、CFG(上下文无关文法)的分析树

上下文无关文法分析树:
在这里插入图片描述
边缘:分析树从左到右排列叶节点得到的符号串

句型的短语
在这里插入图片描述直接短语:子树高度为2的边缘

在这里插入图片描述

二义性文法
在这里插入图片描述

例子:
在这里插入图片描述
二义性文法的判断
在这里插入图片描述

举报

相关推荐

0 条评论