• 编译原理网课笔记——第一章


    第一章

    1.1绪论

    编译:将高级语言(源语言)翻译成汇编语言或机器语言(目标语言)的过程。

    1.2编译系统的结构

    词法分析 :确定词性词类

    语法分析 :识别短语,划分句子成分,获取结构

    语义分析 :根据结构,分析短语,词与词之间的关系,给出中间表示形式。

    代码生成优化

    1.3词法分析概述

    词法分析的主要目标:从左向右识别各个单词,确定单词的类型。将识别出的单词转换成统一的机内表示(词法单元形式)。

    token:

    1.4语法分析概述

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

    文法:

    声明语句 ==

    类型 == int|real|char|bool

    标识符序列 == id|,id

    语句的分析树

    1.5语义分析概述

    语义分析的主要任务:

    • 收集标识符的属性信息
      • 种属
      • 类型
      • 存储位置与长度、值、作用域
      • 参数与返回信息)
    • 语义检查
      • 变量或过程未经声明就使用
      • 变量或过程重复声明
      • 运算分量类型不匹配
      • 操作符与操作数之间类型不匹配

    符号表:用来存放标识符的属性信息的数据结构。

    设计字符串表的原因:可能存在字符串相同但种属与类型等参数不同的情况,使用字符串表更好。)

    1.6中间代码生成和编译器后端

    1. 常用的中间表示方式:
    • 三地址码:由类似于汇编语言的指令序列组成,每个指令最多有三个操作数)(表示方法:四元式,三元式,间接三元式)
    • 语法结构树/语法树(Syntax tree)
    1. 目标代码生成的主要任务:以程序的中间表示形式为输入,并把它映射到目标语言。为程序中的变量分配寄存器
    2. 代码优化:为改进代码所进行的等价程序变换,使运行效率加快,占用空间减少。
    • 机器无关优化(对象:中间代码)
    • 机器相关优化(对象:机器代码)
  • 相关阅读:
    vue3中watch的用法
    DDOS攻击防御介绍
    java计算机毕业设计在线问答平台源码+系统+mysql数据库+lw文档+部署
    aspose-words去水印自用资源
    JuiceFS 在多云存储架构中的应用 | 深势科技分享
    服务端主动关闭连接,如何确保对端能够收到全部的数据?
    spring cloud 全家桶 简单介绍
    数据处理的那些事「GitHub 热点速览」
    Redis高级数据结构HyperLogLog
    Docker技术概论(3):Docker 中的基本概念
  • 原文地址:https://blog.csdn.net/m0_54674275/article/details/127631449