编译原理复习第一章

系列文章目录

编译原理_MOOC




一、引论

1.1什么是编译程序

翻译程序:把某一种语言程序(源语言程序)等价的转换为另一种语言程序(目标语言程序)的程序。在这里插入图片描述
编译程序:把某一种高级语言程序等价的转换成另一种低级语言程序(如汇编语言或机器语言程序)的程序。
在这里插入图片描述
解释程序:把源语言写的源程序作为输入,不产生目标程序,而是
边解释边执行
源程序。
在这里插入图片描述
交叉编译程序:产生不同于其宿主机的机器代码的编译程序。
可变目标编译程序:不需要重写编译程序中与机器无关的部分就能改变目标机。
编译程序与解释程序的区别为:解释程序不另外生成目标语言程序。

编译理论与技术是计算机科学与技术中理论与实践相结合的最好典范,好强(难)啊!不愧是你。

1.2编译过程概述

编译过程

在这里插入图片描述词法分析:
任务:输入源程序,对构成源程序的字符串进行扫描和分解,识别出单词符号,如基本字(begin,end,for,while,if,
else等),标识符,常数,算符(+、-、*、/)和界符(标点、左右括号等)。
依循原则:构词规则
描述工具:正规式、有限自动机。
语法分析:
任务:在词法分析的基础上,根据语法规则把单词符号串分解成各类语法单位(语法范畴)。
依循原则:语法规则
描述工具:上下文无关文法
如:在这里插入图片描述中间代码生成:三元式、四元式、树…
复杂度和抽象程度介于高级语言与机器语言之间,为优化创造有利条件。
任务:对各类语法单位按语言的语义进行初步翻译。
依循原则:语义规则。
描述工具:属性文法。
在这里插入图片描述优化:
任务:对前阶段产生的中间代码进行加工变换,以期在最后阶段产生更高效(程序在时间和空间上具有更高效率)的目标代码,
依循原则:程序的等价变换规则。

目标代码生成:
任务:把中间代码变换成特定机器上的目标代码
依赖于硬件系统结构和机器指令的含义
三种形式:汇编指令代码:需要进行汇编。绝对指令代码:可直接运行。可重新定位指令代码:需要连接。

编译程序的结构

在这里插入图片描述出错处理程序:发现源程序中的错误,把有关错误信息报告给用户。
语法错误:源程序中不符合语法(或词法)规则的错误(含非法字符、括号不匹配、缺少;、…)。
语义错误:源程序中不符合语义规则的错误(变量声明错误、作用域错误、类型不一致、…)

遍(pass):对源程序或源程序的中间表示从头到尾扫描一次。
阶段与遍是不同的概念,一遍可以由若干段组成,一个阶段也可以分若干遍来完成。
在这里插入图片描述编译五个阶段的工作和编译前后端建立对应关系正确的是:
前端:词法分析,语法分析,中间代码产生,优化;
后端:优化,目标代码生成。

编译程序生成

在这里插入图片描述在这里插入图片描述高级语言书写:利用已有的某种语言的编译程序实现另一种语言的编译程序
在这里插入图片描述这个图不懂
在这里插入图片描述这个更绕,不理解,怎么想起这么画呢?!
在这里插入图片描述

总结

不要问为什么这么多图片,问就是懒。图片内容来自中国大学MOOC平台国防科技大学编译原理课程https://www.icourse163.org/course/NUDT-1003101005

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值