1 / 44
文档名称:

工学语义分析上PPT教案学习.pptx

格式:pptx   大小:176KB   页数:44页
下载后只包含 1 个 PPTX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

工学语义分析上PPT教案学习.pptx

上传人:wz_198613 2021/6/17 文件大小:176 KB

下载得到文件列表

工学语义分析上PPT教案学习.pptx

文档介绍

文档介绍:会计学
1
工学语义分析上
语义分析基础
语义分析的内容
标识符的内部表示
类型的内部表示
值的内部表示
第1页/共44页
语义分析的内容
语法和语义的区别:
语法:关于什么样的字符串才是该语言在组
成结构上合法的程序的法规。
语义:关于结构上合法的程序的意义的法
则。
第2页/共44页
语义种类:
静态语义:在编译阶段能检查的语义。
动态语义:只有在目标代码执行阶段才能
检查的语义。
第3页/共44页
语义分析的内容:
类型分析;
标识符相关信息。
语义分析的功能:
检查语义错误;
构造标识符属性表(符号表)。
语义分析的实现:
与语法分析相结合。
第4页/共44页
标识符的内部表示
标识符种类:
常量名、类型名、变量名、函数名、过程名、域名。
typedef enum=(constKind,typeKind,varKind,
procKind,funcKind,fieldKind)
标识符属性(AttributeIR):
常量:
consKind
TypePtr
Kind
Value
类型:
typeKind
TypePtr
Kind
TypePtr :指类型的内部表示;
Value:常量值。
TypePtr :指类型的内部表示;
第5页/共44页
Access:等于dir(直接变量)或indir(间接变量);
Level:表示变量所在的层数;
Off:表示变量在过程等中的偏移量。
变量:
varKind
TypePtr
Kind
Access
Level
off
Off:表示域名在记录中的偏移量;
HostType:表示域名对应类型的内部表示。
域名:
fieldKind
TypePtr
Kind
Off
HostType
第6页/共44页
Parm:表示值参信息表地址;
Class:为actual时表示实在过程/函数名,为formal时表示形参过程/函数名;
Code:表示过程/函数的目标代码地址;
Size:表示本过程/函数的空间大小;
Forward:为true时表示向前声明。
过函:
routKind
TypePtr
Kind
Level
Parm
Class
Code
Size
Forward
actual
routKind
TypePtr
Kind
Level
Parm
Class
Off
formal
第7页/共44页
例,有声明如下:
const pai= ;
type vector=array[1..10] OF integer;
var x, y : real ;
r, s : vector ;
设当前层数和可用offset值分别为L和0,构造标识符 pai, vector, x, y, r 和s 的属性表示。
pai:
consKind
realPtr

vector:
typeKind
aPtr
x:
varKind
realPtr
dir
L
0
y:
varKind
realPtr
dir
L
1
r:
varKind
aPtr
dir
L
2
s:
varKind
aPtr
dir
L
12
第8页/共44页
符号表的C语言描述如下(见p154):
Typedef enum{consKind,typeKind,varKind,
fieldKind,procKind,funcKind} idKIND;
Typedef enum{dir,indir} AccessKIND;
Typedef enum{formal ,acttual } paramKIND;
Typedef struct{
idNAME id_name;
idATTRIBUTE id_attribute; //标识符属性域
symbolTABLE *next
} symbolTABLE //符号表
第9页/共44页