引论赵建华南京大学计算机系2009年2月
引论 赵建华 南京大学计算机系 2009年2月
课程内容引论编译器的总体结构词法分析语法分析语法制导的翻译技术中间代码生成运行时刻环境代码生成·机器无关优化
课程内容 • 引论 • 编译器的总体结构 • 词法分析 • 语法分析 • 语法制导的翻译技术 • 中间代码生成 • 运行时刻环境 • 代码生成 • 机器无关优化
编译器的作用·读入以某种语言(源语言)编写的程序源程序·输出等价的、用另一种语言(目标语言)编写的程序。茶编译器通常目标程序是可执行的。解释器一直接利用用户提供的输入,目标程序执行源程序中指定的操作。一不生成目标程序,而是根据源程序的语义直接运行。一Java语言的处理结合了编译和解释
编译器的作用 • 读入以某种语言(源语言) 编写的程序 • 输出等价的、用另一种语言 (目标语言)编写的程序。 • 通常目标程序是可执行的。 • 解释器 – 直接利用用户提供的输入, 执行源程序中指定的操作。 – 不生成目标程序,而是根据 源程序的语义直接运行。 – Java语言的处理结合了编译 和解释
编译器的结构(1),编译器可以分为分析部分和综合部分·分析部分(前端,frontend)一把源程序分解成组成要素。以及相应的语法结构一使用这个结构创建源程序的中间表示一同时收集和源程序相关的信息,存放到符号表·综合部分(后端,backend)一根据中间表示和符号表信息构造目标程序前端部分是机器无关的。后端部分是机器相关的
编译器的结构(1) • 编译器可以分为分析部分和综合部分 • 分析部分(前端,front end) – 把源程序分解成组成要素,以及相应的语法结构 – 使用这个结构创建源程序的中间表示 – 同时收集和源程序相关的信息,存放到符号表 • 综合部分(后端,back end) – 根据中间表示和符号表信息构造目标程序 • 前端部分是机器无关的,后端部分是机器相关 的
(2)编译器的结构字符流中间表示形式?Y词法分析器机器无关代码优化器符号流中间表示形式★★语法分析代码生成器语法树+目标机器语言L语义分析机器相关代码优化器语法树*目标机器语言+中间代码生成器(phase)编译器可分成顺序执行的一组步骤
编译器的结构(2) • 编译器可分成顺序执行的一组步骤(phase)