• 编译原理随笔1


    <!doctype html>

    编译原理

    编译原理概述

    1、编译概念:

    • 从高级语言->目标代码的过程(汇编语言or机器码)

    2、编译器的结构:

    • 分析部分/前端(front end)->与源语言相关

      1. 词法分析>>词法单元流
      2. 语法分析>>语法分析树parse tree
      3. 语义分析>>语法树
      4. 中间代码生成>>中间表示形式
      5. 机器无关的代码优化
    • 综合部分/后端(back end)->与目标语言相关

      1. 目标代码生成>>目标机器语言
      2. 机器相关代码优化>>目标机器语言

    3、词法分析

    • 主要任务:

      • 扫描源程序->识别每个单词->确定单词类型->将识别的单词换成机内表示(即:词法单元token)

      • token:<种别码:属性值>

        • 单词类型种别种别码
          关键字 if 等 一词一码
          标识符 变量、数组名、过程名…… 多词一码
          常量   多词一码
          运算符 算术运算符:+-
          关系运算符:> < ==
          逻辑运算符:& ! ||
          一词一码
          一型一码
          界限符 ;{}()=…… 一词一码

    4、语法分析

    • 概念:语法分析器Parser从词法分析器输出的token中,识别各类短语,构造语法分析树parse tree
    • 1563886893948
    • 1563887016328

    5、语义分析

    • 主要任务:

      • 收集标识符的属性信息->>>存放在符号表Symbol Table

        1. 种属kind
        2. 类型type
        3. 存储位置、长度
        4. 作用域
        5. 参数和返回值信息
        6. 1563887456617
      • 语义检查:

        1. 变量or过程未经声明便使用
        2. ……重复声明
        3. 运算分量类型不匹配(强制类型转换or报错)

    6、中间代码生成

    • 中间表示形式:

      • 三地址码Three-address Code

        • 1563888449816

        • 三地址指令的表示形式:

          • 三元式

          • 间接三元式

          • 四元式

            • 1563888570767
            • 1563888909029
      • 语法结构树/语法树Syntax Tree

    7、目标代码生成:

    • 中间表示形式作为输入,映射到目标语言

      • 重要作用:为程序变量使用分配寄存器

    8、代码优化

    • 等价程序变换,使其运行快,占内存少。
  • 相关阅读:
    Git 开发、合并、提交的一些常见命令语句
    selenium自动化过程中窗口句柄的问题
    git 忽略文件夹下面的文件,但是保留空文件夹
    python接口测试中不同的请求方式
    python接口测试中发送请求中的一些参数
    python接口测试中的session运用
    接口测试数据依赖处理
    pygame的安装
    Bottstrap的基本用法
    前端CSS
  • 原文地址:https://www.cnblogs.com/sqchao/p/11234860.html
Copyright © 2020-2023  润新知