- 31
- 0
- 约8.94千字
- 约 167页
- 2017-06-03 发布于四川
- 举报
编译原理Principle of Compiler;在编译器的“分析-综合”模型中,前端对源程序进行分析并产生中间表示,而关于目标机器的细节则在后端处理。
本章内容涉及中间代码表示、静态类型检查和中间代码生成。;“中间代码生成”的任务把经过语法分析和语义分析而获得的源程序中间表示翻译为中间代码表示。
不同的编译器对中间表示的选择和设计各有不同。
中间表示可以是一种真正的语言,也可以是各个处理阶段共享的多个内部数据结构。
早期的C++编译器就把C语言作为中间表示
方法: 语法制导翻译
采用独立于机器的中间代 码的好处
1. 便于编译系统建立和编译系统的移植;
2. 便于进行独立于机器的代码优化工作。;中间语言
语法树
有向非循环图DAG
三地址代码表示
类型检查
常用语句的中间代码生成方法
说明语句
赋值语句
布尔表达式与控制流语句
回填;常用的中间代码(语言)
语法树
后缀式(逆波兰式)
三地址代码表示
特点
形式简单、语义明确、便于翻译
独立于目标语言;抽象语法(Abstract Syntax)
从具体语法中抽象出语言结构的本质性的东西,而不考虑语言的具体符号表示,从而可简化语义的形式描述。
在不同的语言中赋值语句有不同的写法
? x=y;? x:=y;? y→x 等等
可以用抽象形式 ??? ??????assignment(variable, exp
原创力文档

文档评论(0)