编译原理复习笔记 第一章
编译原理第一章
1-1
1.计算机设计语言
2. 编译系统
可重定位:内存中存放的起始位置不定
加载器:修改可重定位地址
连接器:链接库文件;将多个可重定位代码连接到一起;解决外部内存地址
1-2 编译系统结构
-
词法分析:分析词性
语法分析:识别句子中的各类短语,分析句子结构
语义结构:根据句子结构,分析短语成分
-
编译器结构
中间表示形式:独立于任何语言
1-3 词法分析概述
- “从左向右”扫描源程序字符,识别单词,确定单词类型,表示为token形式
Token:<种别码,属性值>
1-4 语法分析概述
- 从词法分析器输出的token序列中识别各类短语,并构造语法分析树
1-5 语义分析概述
- 收集标识符的属性信息——种属,类型,存储位置、长度,值,作用域,参数和返回值信息
- 符号表:
NAME字段:(1)标识符在字符串表的起始位置(2)标识符长度
3,语义(错误)检查
1-6 中间代码及编译器后端
-
中间代码的常见表示形式:
(1)三地址码
四元式表示形式
(2)语法结构树/语法树 -
目标代码生成:分配寄存器
-
代码优化
思考:符号表中NAME字段的设计:
NAME字段长度不固定,若要将NAME直接存入符号表造成空间浪费、效率低;加入索引可节省空间、便于管理