跳至主要內容
编译原理复习

编译原理复习

Neonscape大约 1 分钟notescompiler

编译原理复习

一 概论

1.1 编译器结构

编译器分为 前端 和 后端。

  • 前端:
    • 负责分析源程序,获取源程序的语法结构,并据此生成中间代码。
    • 将源程序中的相关信息放入符号表
    • 分析语法和语义,定位语法和语义错误
    • 与机器无关
  • 后端
    • 根据符号表和中间表示构造目标程序
    • 与机器相关

1.2 编译过程

  • 词法分析:字符流 -> 符号流
  • 语法分析:符号流 -> 语法树
  • 语义分析
  • 中间代码生成:语法树->中间表示形式
  • 机器无关优化
  • 最终代码生成:中间表示形式->目标机器语言
  • 机器相关优化

上述过程中还会构建 符号表,由各个步骤使用;

符号表负责记录源程序中使用的变量的各种属性:

  • 名字
  • 类型
  • 作用域
  • 函数的参数数量、参数类型等

1.3 词法分析概述

词法分析负责读入字符流,产生有意义的 词素;基于词素产生 词法单元

每个词法单元有类似于<token_name, attribute_value>的形式;其中token_name在语法分析中使用;attribute_value指向对应的 符号表条目

1.4 语法分析概述