1编译简介的要点 编译器的作用 编译的阶段 编译器的上下文环境 ■编译器的其他问题 a分析与综合 a前端与后端 遍 编译器的构造 aT形图 口自举与移植 口构造工具
1.编译简介的要点 ◼ 编译器的作用 ◼ 编译的阶段 ◼ 编译器的上下文环境 ◼ 编译器的其他问题 ❑ 分析与综合 ❑ 前端与后端 ❑ 遍 ◼ 编译器的构造 ❑ T形图 ❑ 自举与移植 ❑ 构造工具
什么是编译程序 口编译程序( compiler) 把某一种高级语言程序等价地转换成另一种低级语 言程序(如汇编语言或机器语言程序)的程序 高级语翻译机器语运行、结果 言程序 言程序 编译 程序
高级语 言程序 机器语 言程序 结果 编译 程序 翻译 运行 一 . 什么是编译程序 ❑编译程序(compiler) 把某一种高级语言程序等价地转换成另一种低级语 言程序(如汇编语言或机器语言程序)的程序
编译过程 把英文翻译为中文 口识别出句子中的一个个单词; 口分析句子的语法结构; 口根据句子的含义进行初步翻译; 对译文进行修饰; 写出最后的译文
二. 编译过程 ◼ 把英文翻译为中文 ❑ 识别出句子中的一个个单词; ❑ 分析句子的语法结构; ❑ 根据句子的含义进行初步翻译; ❑ 对译文进行修饰; ❑ 写出最后的译文
编译过程 编译程序的工作一般分为以下几个阶段: 口词法分析 口语法分析 口语义分析 中间代码产生 口代码优化 a目标代码产生
二. 编译过程 ◼ 编译程序的工作一般分为以下几个阶段: ❑ 词法分析 ❑ 语法分析 ❑ 语义分析 ❑ 中间代码产生 ❑ 代码优化 ❑ 目标代码产生
源程序 词法分析器 单可符号出 表格管理 语法分析器 语法单位错 语义分析与中间代码 生成器 四元式处 优化段 四元式 理 目标代码生成器 目标代码
四元式 单词符号 语法单位 四元式 目标代码 词法分析器 语法分析器 语义分析与中间代码 生成器 优化段 源程序 表格管理 出错处理 目标代码生成器
1.词法分析 ■任务:对源程序字符流进行扫描和分解,识别出一个个单词符号。 依循原则:构词规则 描述工具:有限自动机 例 Z:=Ⅹ+6*Y z|: X+6 可识别为下列单词(记号): 标识符z赋值:=标识符ⅹ加号+数字6乘号*标识符y
1. 词法分析 ◼ 任务: 对源程序字符流进行扫描和分解,识别出一个个单词符号。 ◼ 依循原则:构词规则 ◼ 描述工具:有限自动机 ◼ 例: Z := X + 6 * Y z : = x + 6 * y 可识别为下列单词(记号): 标识符z 赋值 := 标识符x 加号+ 数字6 乘号* 标识符y
2.语法分析 任务:在词法分析的基础上,根据语言的语法规则把 单词符号串分解成各类语法单位 依循的原则:语法规则 描述工具:上下文无关文法、语法树 例( PASCAL): VAR Z,X,Y: real;E Z Ⅹ+6米Y E E E D E E D
2. 语法分析 ◼ 任务:在词法分析的基础上,根据语言的语法规则把 单词符号串分解成各类语法单位。 ◼ 依循的原则:语法规则 ◼ 描述工具:上下文无关文法、语法树 ◼ 例(PASCAL): VAR Z,X,Y:real; Z := X + 6* Y E A_E ID := E E + E ID E * E ID ID Z := * + 6 Y X
3语义分析 检查源程序的语义错误,并收集代码生成阶段 要用到的类型信息。 inttoreal 6
3.语义分析 ◼ 检查源程序的语义错误,并收集代码生成阶段 要用到的类型信息。 Z := * + 6 Y X inttoreal
4.中间代码产生 ■任务:对各类不同语法范畴按语言的语义进 行初步翻译。 ■依循的原则:语义规则 中间代码:三元式,四元式,树形结构等 例: Z:=X+6*Y翻译成四元式为 * 6 Y T1 (3):=271m2 (2)
4. 中间代码产生 ◼ 任务:对各类不同语法范畴按语言的语义进 行初步翻译。 ◼ 依循的原则:语义规则 ◼ 中间代码:三元式,四元式,树形结构等 ◼ 例: Z:=X + 6 * Y 翻译成四元式为 (1) * 6 Y T1 (2) + X T1 T2 (3) := T2 _ Z
5.优化 任务:对于前阶段产生的中间代码进行加 工变换,以期在最后阶段产生更高效的目 标代码。 依循的原则:程序的等价变换规则 例 FOR K:=1T0 100 DO BEGIN X:=工+1 M:=I+10米K N:=丁+10*K END
5. 优化 ◼ 任务:对于前阶段产生的中间代码进行加 工变换,以期在最后阶段产生更高效的目 标代码。 ◼ 依循的原则:程序的等价变换规则 ◼ 例 FOR K:=1 TO 100 DO BEGIN X:=I+1; M := I + 10 * K; N := J + 10 * K; END