
编译原理复习
大约 1 分钟
编译原理复习
一 概论
1.1 编译器结构
编译器分为 前端 和 后端。
- 前端:
- 负责分析源程序,获取源程序的语法结构,并据此生成中间代码。
- 将源程序中的相关信息放入符号表
- 分析语法和语义,定位语法和语义错误
- 与机器无关
- 后端
- 根据符号表和中间表示构造目标程序
- 与机器相关
1.2 编译过程
- 词法分析:字符流 -> 符号流
- 语法分析:符号流 -> 语法树
- 语义分析
- 中间代码生成:语法树->中间表示形式
- 机器无关优化
- 最终代码生成:中间表示形式->目标机器语言
- 机器相关优化
上述过程中还会构建 符号表,由各个步骤使用;
符号表负责记录源程序中使用的变量的各种属性:
- 名字
- 类型
- 作用域
- 函数的参数数量、参数类型等
1.3 词法分析概述
词法分析负责读入字符流,产生有意义的 词素;基于词素产生 词法单元。
每个词法单元有类似于<token_name, attribute_value>
的形式;其中token_name
在语法分析中使用;attribute_value
指向对应的 符号表条目。