编译原理01-绪论

课程地址:https://www.icourse163.org/course/HIT-1002123007 

什么是编译:

编译:将高级语言翻译成汇编语言或者机器语言的过程。

编译器的结构:

词法分析:

主要任务:从左向右逐行扫描源程序的字符,识别出各个单词,确定单词的类型。并将识别出的单词转换为统一的机内表示--词法单元(token)形式。

词法单元(token) :<种别码,属性值>

语法分析:

主要任务:语法分析器从词法分析器输出的token序列中识别出各类短语,并构造出语法分析树。语法分析树描述句子的语法结构。

语义分析:

主要任务:

一是收集标识符的属性信息。比如说种属(简单变量、复合变量、过程等)、类型(整型、字符型、指针型等)、存储位置和长度、值、作用域、参数和返回值信息等。

二是进行语义检查。例如变量和过程是否未经说明就使用、重复使用、类型不匹配等问题。

中间代码生成:

常见的中间表示形式:三地址码(由类似于汇编语言的指令序列生成,每个指令最多有三个操作数)、语法结构树/语法树等

三地址指令的表示:三元式、三元间接式、四元式(op,x,y,z);

以三地址指令的四元式为例:   

        x = y op z  可以表示为  (op,y,z,x)

        x = y          可以表示为  (=,y,_,x)

目标代码生成:

主要任务:以源程序的中间表示形式作为输入,并把它映射到目标语言。一个重要任务是为程序中使用的变量合理分配寄存器。

代码优化:

为改进代码所进行的等价程序变换,使其运行的更快一些,占用空间更少一些。

 

猜你喜欢

转载自www.cnblogs.com/xue0708/p/12843833.html
01-