哈工大 编译原理 网课笔记 —— 1.绪论

1.什么是编译

计算机程序涉及语言与编译
  • 机器语言(计算机可以理解的语言)
  • 汇编语言(引入助记符号)
  • 高级语言(类似于数学定义和自然语言的简洁形式)

在这里插入图片描述

编译器在语言处理系统中的位置

在这里插入图片描述

2.编译系统的结构

  • 使用英汉翻译类比编译系统功能
    • 中间表示很重要
    • 在这里插入图片描述
    • 在这里插入图片描述
      在这里插入图片描述

在这里插入图片描述

  • 在这里插入图片描述

  • 在这里插入图片描述

  • 编译器的结构

    • 在这里插入图片描述

3.词法分析概述

  • 词法分析:从左到右扫描源程序,识别出每个有正确含义的单词(token)
  • token表示: <种别码、属性值>
    • 属性值起到区分作用

    • 在这里插入图片描述

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

    • ❓词法分析器是如何自动将代码转换为token序列

4.语法分析概述

  • 语法分析器从词法分析器输出的token序列种识别出各类短语,并 构造语法分析树
    • 语法分析树描述了句子的语法结构

    • 赋值语句的分析树

      • 在这里插入图片描述
    • 变量声明语句的分析树

      • D(declaration)、IDS(identify sequence)、T(Type)

      • 在这里插入图片描述

      • ❓如何根据语法规则为输入句子构造分析树

5.语义分析概述

  • 主要任务——

    1. 收集标识符的属性信息

      • 种属(Kind)

      • 类型(Type)

      • 存储位置

      • 长度

      • 作用域

      • 参数和返回信息

        符号表是用来存放标识符的属性信息的数据结构在这里插入图片描述

    2. 语义检查

      • 变量或过程未经声明就使用
      • 变量或过程名重复声明
      • 运算分量类型不匹配
      • 操作符操作数之间的类型不匹配
        • 数组下标不是整数
        • 非数组变量 使用数组访问操作符
        • 非过程名 使用过程调用操作符
        • 过程调用的参数类型或数目不匹配
        • 函数返回类型有误

6. 中间代码生成及编译器后端

  • 三地址码

    • 类似于汇编语言的指令序列组成 ,每个指令 最多有三个操作数

    • 常用的三地址指令
      -在这里插入图片描述

    • 三地址指令表示

      • 四元式

        • 在这里插入图片描述
      • 三地址指令序列唯一确定了运算完成的顺序

    • 中间代码生成例子

      • 在这里插入图片描述
  • 语法结构树(语法树)——与之前说的 语法分析树 不是同一个

  • 目标代码生成

    • 在这里插入图片描述
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值