编译过程详述

目录

文章目录

前言

一、编译过程

编译的阶段划分(六个)

注意:编译过程与编译系统区别

二.编译过程详述

 1.词法分析

2.语法分析

3.语义分析

4.中间代码生成

5.代码优化

6.目标代码生成

符号表管理

出错处理管理

总结




前言

之前一篇文章介绍了编译程序,同时介绍了编译程序与解释程序的区别:编译程序与解释程序区别_不负韶话-CSDN博客

大致介绍:

编译程序

编译程序将高级语言转化为低级语言。




一、编译过程

编译程序将高级语言转化为低级语言中的过程中的阶段划分;(因为其转化过程十分复杂)



编译的阶段划分(六个)





注意:编译过程与编译系统区别

编译过程只是编译程序过程中复杂过程的划分,而编译系统是程序,编译系统具有八大程序。


二.编译过程详述

 1.词法分析

输入:源程序

输出:单词符号串(字符串形式的源程序)

功能:从左到右一个字符一个字符的读入源程序,对构成源程序的字符流进行扫描和分解,从而识别出一个个单词

作用:像翻译英语文章一样,需要先分析每个单词,知道每个单词的意义及在句中的作用,才能进行整篇翻译。

常见单词:保留字:int;  运算符: +  等。

经过词法分析,计算机已经能够从一堆由字母或者数字组成的一堆东西里面知道哪些是保留字,哪些是运算符号等。

2.语法分析

输入:单词符号串(经过词法分析的单词,也可以称为字符串形式的源程序)

输出:属性字流(可以称为语句)

功能:定义程序的结构元素及其关系

任务:在词法分析的基础上,将单词分解成各类语法短语,一般语法短语可表示成语法树。

3.语义分析

输入:具有属性的语句

输出:符合语言规范的语句

功能:按照语法树的层次关系和先后次序,逐个语句地进行语义处理。

任务:进行类型审查,审查每个算符是否符合语言规范,不符合时应报告错误。常见错误有类型匹配与类型转换。

4.中间代码生成

将源程序变成一种内部表示形式,这种内部表示形式叫中间代码,该代码是一种简单的记号系统。

5.代码优化

对中间代码进行变换,使目标代码更为高效。(节省时间和空间)

6.目标代码生成

将中间代码变换成特定机器上的绝对指令代码或可重定位的汇编指令代码。主要与硬件系统结构和指令含义有关。
补充:

符号表管理

  • 记录源程序中使用的名字
  • 收集每个名字的各种属性信息

出错处理管理

  • 编译程序在各个阶段应诊断和报告源程序中的错误,包括词法错误,语法错误, 语义错误
  • 编译程序应报告出错地点,并给出简明 准确的提示信息。



总结

  1. 编译过程主要指的6个过程
  2. 编译程序结构为8个结构。
  • 5
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木木子!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值