01 绪论 | 《编译原理》笔记
本系列是编译原理 (哈工大陈鄞、郭勇)视频课的课堂笔记,主要是课堂 PPT 和部分讲授内容的文字版,仅供参考。
什么是编译
编译系统的结构
词法分析概述
语法分析概述
- D: declaration
- T: type
- IDS: identifier sequence
语义分析概述
语义分析的主要任务:
- 收集标识符的属性信息
- 种属(kind):简单变量、复合变量(数组、记录等)、过程等
- 类型(type):整型、实型、字符型、布尔型、指针型等
- 存储位置、长度:
- 变量的值
- 变量和过程的作用域
- 参数和返回值信息:参数个数、参数类型、参数传递方式、返回值类型等
- 语义检查
- 变量或过程未经声明就使用
- 变量或过程名重复声明
- 运算分量类型不匹配(比如将数据和过程相加)
- 操作符与操作数之间的类型不匹配(如数组下标不是整数、对非数组变量使用数组访问操作符、对非过程名使用过程调用操作符、过程调用的参数类型或数目不匹配、函数返回类型有误)
语义分析的结果会存放在符号表中:
每个标识符对应一行信息。符号表通常带有一个字符串表,NAME 字段为两个部分,用于标识 NAME 的起始位置和长度。
中间代码生成及编译
常用的中间表示形式:
- 三地址码:三地址码由类似于汇编语言的指令序列组成,每个指令最多有三个操作数,三地址指令序列唯一确定了运算完成的顺序
- 语法结构树/语法树
01 绪论 | 《编译原理》笔记