1. 编译引论
1.1 编译原理六个阶段
词法分析 ——> 语法分析 ——> 语义分析 ——> 中间代码生成 ——> 代码优化 ——> 目标代码生成
所以编译程序的结构也由上面六个部分组成。一个完整的编译程序还必须包括“表格管理程序“和“出错处理程序”。
1.2 编译阶段的组合
编译的过程可以分为前端(front-end)和后端(back-end)。
前端的工作主要依赖于源语言,与目标机无关。这些阶段包括词法分析、语法分析、语义分析和中间代码生成。某些优化工作也可以在前端进行。
后端工作指那些依赖于目标机而一般不依赖于源语言,只与中间代码有关,即目标代码生成,以及出错处理和符号表处理。
1.3 解释程序
与编译程序不同,它不需要在运行前把源程序翻译成目标代码,它接受某个语言的程序立即运行这个源程序。它的工作模式是一个个的获取、分析并执行源程序语句,特别适合程序员的交互工作情况,即希望获取下一个语句之前了解每个语句的执行情况,允许执行时修改程序。
编译程序和解释程序在储存组织上也大有不同。
2. PL/0 编译程序的实现
2.1 PL/0 语言描述
可以用语法图和EBNF范式这2种形式给出描述。
书p13—p16。
2.2 PL/0 编译程序的结构
由18个嵌套且并列的过程或函数组成。见书p16-18。
2.3 剩下的都在书上23333
3. 文法和语言
参考书籍
1. 编译原理(第二版)-张素琴 清华大学出版社