编译原理1.2

词法分析概述

词法分析的主要任务

      从左到右逐行扫描源程序的字符,识别出各个单词,确定单词的类型。将识别出的单词转换成统一的机内表示——词法单元(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不是一回事

 

 

常用的三地址指令

三地址指令的表示

三地址指令的四元式表示

三地址指令的四元式表示与前面说过的自然语言的中间表示形式有相似之处

中间代码生成的例子

 

目标代码生成

      目标代码生成以源程序的中间表示形式作为输入,并把它映射到目标语言

      目标代码生成的一个重要任务是为程序中使用的变量合理分配寄存器
 

代码优化

      为改进代码所进行的等价程序变换,使其运行得更快一些、 占用空间更少一些,或者二者兼顾

      代码优化分为机器无关代码优化机器相关代码优化

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值