码迷,mamicode.com
首页 > 其他好文 > 详细

编译器各个步骤的介绍

时间:2018-06-24 19:25:37      阅读:134      评论:0      收藏:0      [点我收藏+]

标签:scan   png   语法   style   需要   span   任务   inf   com   

233

技术分享图片

 

 

词法分析:scanning

将字符流变成词素序列。每个词素使用  <token-name, attribute-vallue> 格式的词法单元(token)表示。

position = initial + rate * 60 转换成  <id, 1> <=> <id,2> <+> <id,3> <*> <60>

 

语法分析:parsing

创建树形的中间表示形式。表示词法单元流的语法结构。

 

语义分析:semantic analyzer

检查代码是否符合语义。将类型信息存入语法树或符号表中,包括类型检查和类型自动转换。

 

中间代码生成:

翻译成目标代码的过程中,编译器可能构造出多个中间表示形式,语法树是其中一种表示形式,通常在语法分析与语义分析中使用。

在完成语义分析后,还需要生成一个明确的低级的或类机器语言的中间表示形式。考虑使用三地址代码的中间表示形式。它 由一组类似汇编语言的指令组成,每个指令有三个运算分量。

 技术分享图片  指令的最右部最多只有一个运算符,并且这些指令确定了运算完成的顺序。

 

代码生成器:

以源程序的中间表示形式作为输入,映射到目标语言。如果目标语言是机器代码,那么必须为程序使用的每个变量选择寄存器或内存位置。这样,中间指令将被翻译成能够完成相同任务的机器指令序列。

技术分享图片

 

编译器各个步骤的介绍

标签:scan   png   语法   style   需要   span   任务   inf   com   

原文地址:https://www.cnblogs.com/lemos/p/9221078.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!