编译原理
第一章:导论
翻译程序:把某种语言的程序转换为另一种语言的程序
编译程序:把高级语言转换为汇编语言或者机器语言这样的“低级语言”的翻译程序,称为编译程序,编译器
解释程序: 以该语言写的源程序作为输入,但不产生目标程序,而是边解释边执行源程序本身,解释器
编译器和解释器的区别:
- 编译程序是原转换系统,解释程序源程序是一个执行系统
- 编译程序结果是得到等价的源程序的某种目标机程序,解释程序的结果是得到源程序的执行结果,相当于执行源程序的抽象机
高级语言分类及其编译:
- 过程式语言:(特点:面向驱动,面向语言,有系列的语句组成)
- 函数式语言:(注重程序表示的功能,而不是一个语句一个语句的执行,从已有的函数促发构造更复杂的函数)
- 逻辑式语言:(检查一定的条件,当满足时 ,则执行适当的动作)
- 对象式语言:(封闭性,继承性,多态性)
编译过程概述:
五个基本阶段:
词法分析
输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个个单词符号
在词法分析阶段工作所依循的是语言的词法规则。秒数词法规则的有效工具是正规式和有限自动机
语法分析
在词法分析的基础上,根据语言的语法规则,把单词符号分解为各类的语法单位(语法范畴)
语法规则通常用上下文无关文法
语义分析中间代码生成
将源程序转换为一种内部表现形式,是 一种结构简单,含义明确的记号系统
中间代码的两种性质:
- 容易生成这种中间代码
- 容易将他翻译成目标代码
主要形式:
四元式,三元式,间接三元式,逆波兰式
优化
优化的任务在对于前端产生的中间代码进行加工,在最后阶段产生更为高效的代码
优化所依循的原则是程序的等价交换规则
目标代码生成