词法分析概述
词法分析的主要任务
从左到右逐行扫描源程序的字符,识别出各个单词,确定单词的类型。将识别出的单词转换成统一的机内表示——词法单元(token)形式
词法分析又叫扫描(scanning)
词法分析后得到的token序列举例
通过第一个分量就可以区分的单词,第二个分量都是空的
SLP左括号
SRP右括号
LP左花括号
RP右花括号
IDN 标识符(identifier)
NE 不等号
CONST常量
INC ++
SEMI分号
语法分析(pasring)概述
语法分析的主要任务
语法分析器从词法分析器输出的token序列中识别出各类短语,并构造语法分析树(parse tree)
语法分析树描述了句子的语法结构
例1:赋值语句的分析树
例2: 变量声明语句的分析树
语义分析概述
①收集标识符的属性信息
语义分析收集的标识符的属性信息都会存放在符号表中,每一个标识符都对应着符号表中的一条记录
②语义检查
中间代码生成和编译器后端
常用的中间表示形式
①三地址码(Three-address Code)
三地址码由类似于汇编语言的指令序列组成,每个指令最多有三个操作数(operand)
②语法结构树/语法树(Syntax Trees)
这里的语法结构树syntax tree和之前讲的语法分析书parse tree不是一回事
常用的三地址指令
三地址指令的表示
三地址指令的四元式表示
三地址指令的四元式表示与前面说过的自然语言的中间表示形式有相似之处
中间代码生成的例子
目标代码生成
目标代码生成以源程序的中间表示形式作为输入,并把它映射到目标语言
目标代码生成的一个重要任务是为程序中使用的变量合理分配寄存器
代码优化
为改进代码所进行的等价程序变换,使其运行得更快一些、 占用空间更少一些,或者二者兼顾
代码优化分为机器无关代码优化和机器相关代码优化
编译原理1.2
猜你喜欢
转载自blog.csdn.net/hxxjxw/article/details/105523866
今日推荐
周排行