编译原理(1)----引论及编译原理相关重要概念

Carmen ·
更新时间:2024-09-21
· 990 次阅读

一、翻译程序
把某一种语言的程序(成为源语言程序)等价地转换成另外一种语言程序(目的语言程序)的程序。
在这里插入图片描述
二、编译程序
把某一种高级语言程序等价地转换成另外一种低级语言程序(如汇编语言或机器语言)的程序。
在这里插入图片描述
三、编译程序的分类
(1)诊断编译程序
(2)优化编译程序
(3)交叉编译程序(宿主机与目标机不是同一台机器)
(4)可变目标编译程序
注:运行编译程序的主机成为宿主机,运行机器语言的主机是目标机。
四、解释程序
把源程序作为输入,但不产生目标程序,而是边解释边执行源程序。
在这里插入图片描述
五、编译过程
(一)词法分析
(二)语法分析
(三)中间代码生成
(四)优化
(五)目标代码生成
六、词法分析
(一)任务:输入源程序,对构成源程序的字符串进行扫描和分解,识别出单词符号。
(二)原则:构词规则
(三)描述工具:有限自动机
七、语法分析
(一)任务:在词法分析的基础上,根据语法规则,把单词符号分解成各类语法单位或语法范畴。
(二)原则:语法规则
(三)描述工具:上下文无关法
八、中间代码生产
(一)任务:对各语法单位按语言的语义进行初步翻译。
(二)规则:语义规则
(三)描述工具:属性文法
(四)中间代码:三元式,四元式,树等
(五)高级语言----->中间代码---->机器语言
(六)如:Z := X + 0.618 * Y的四元式
在这里插入图片描述
九、优化
(一)任务:对产生的中间代码进行加工变换,以期望在最后阶段产生更高效的目标代码。
(二)原则:等价变换规则
十、目标代码生成
(一)任务:把中间代码变成特定机器上的目标代码。
(二)依赖于硬件系统结构和机器指令含义。
(三)目标代码的形式:
1.汇编指令代码:进行汇编后方可执行
2.绝对指令代码:可直接运行
3.可重新定位指令代码:链接后可运行
十一、编译程序的结构
在这里插入图片描述
注:符号表管理与出错管理在各阶段均有用到。
十二、出错处理
(一)出错处理程序:发现程序错误,把有关错误报告给用户。
(二)语法错误:源程序中出现不符合语法或词法规则的错误,如非法字符,括号不匹配等
(三)语义错误:源程序不符合语义规则的错误,如:声明错误,作用域错误等等
十三、“遍”的概念
对源程序或源程序的中间表示从头到尾扫描一次。
注:阶段与遍是不同的概念,一遍可以由若干段组成,一个阶段也可以分成若干遍完成。
十四、编译程序的前后端
在这里插入图片描述
(一)前端:与语言有关,如词法分析,语法分析,语义分析与中间代码产生,及与机器无关的优化。
(二)后端:与目标及有关,与机器有关的优化及目标代码的生成。
(三)优点:程序的逻辑结构清晰,优化更充分,有利于移植。
十五、编译程序的生成
(一)以机器语言和汇编语言为工具
1.优点:可以针对具体的机器,充分发挥计算机的系统功能,生成的程序效率高。
2.缺点:程序难读,难写,易出错,难维护,生产效率低。
(二)以高级语言程序编写
1.优点:程序易读,易理解,易维护,生产效率高
2.方法:利用已有的某种语言的编译程序实现另一种语言的编译程序。
(三)编译程序的自动产生
1.LEX:词法分析程序产生器
2.YACC:语法分析程序产生器


作者:spectrelwf



编译原理

需要 登录 后方可回复, 如果你还没有账号请 注册新账号