如何学习构造编译程序
1、掌握源语言 2、掌握目标语言 3、掌握编译方法 编译程序是极其复杂的系统,学 习时将其分解开来学,但要注意前后 的联系、贯通。 作为编译基本原理和方法的学习, 不涉及具体的目标机和机器指令。
基本术语 1.源程序(Source program)
code) 3.翻译程序(Translator) 4.解释程序(Interpreter) 5.汇编程序(Assembler) 6.编译程序(Compiler) 7.编译系统(Compiler system)
2.目标程序(Object
相关概念
例如“四元式”即为一种中间代码,其形式为: (算符,运算对象1,运算对象2,结果)
赋值语句:Z:=(X+0.48)*Y/W
可以生成如下所示的四元式:
( + ( * ( / ( :=
, , , ,
X , 0.48 , t1) t1 , Y , t2 ) t2 , W , t3 ) t3 , — , Z )
1.3 编译程序的结构
一.编译程序总框
源程序
表 格 与 表 格 管 理
词法分析器(扫描器)
单词符号
语法分析器(分析器)
语法单位
错 误 检 测
语义分析及中间代码生成器
中间代码
优化器
中间代码
目标代码生成器
目标代码
1.词法分析器(扫描器) 2.语法分析器(分析器) 3.语义分析及中间代码生成器 4.优化器 5.目标代码生成器 6. 表格与表格管理 7.错误检测
6. 表格与表格管理:
编译程序在其工作过程中使用最多的数据结构形式就 是表格。各种各样的表格中记录着源程序的各种信息,以 便需要时可以随时查询使用。最重要的表格是符号表,其 主要用途为: 收集记录各类符号的属性信息:当分析到标识符的说明部 分时,在符号表中记录相关属性;当分析到标识符的使用 部分时,在符号表中查证相关属性; 语法分析时合法性检查的依据:同一个标识符可能在程序 的不同地方出现,语法分析需要检查标识符在上下文中的 一致性和合法性,而符号表正是进行这种检查的依据; 作为目标代码生成阶段地址分配的依据:每个变量在目标 代码生成时都需要确定其对应的存储地址,编译程序在完 成了对变量的地址分配后,将其存于符号表中,其后可以 通过符号表获取每个变量对应的存储地址。