《语义分析中》PPT课件.ppt
《《语义分析中》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《语义分析中》PPT课件.ppt(19页珍藏版)》请在三一办公上搜索。
1、第05章 语义分析,主要内容:语义分析基础 符号表 类型分析 声明和执行体的语义分析,5.3 类型分析,5.3.1 类型的等价性和相容性类型的等价性 1)按名等价:type tp=array1.10of integer;var a,b:tp;则称a,b是相同类型的变量 2)结构等价:type tp1=array1.10of integer;type tp2=array1.10of integer;var a:tp1;b:tp2;则称a,b是相同类型的变量,类型的相容性:主要有:1)运算分量类型的相容性;2)赋值语句左右类型的相容性;3)形参和实参类型的相容性;类型分析的作用:构造类型的内部表示
2、,进行类型检查。分析过程:读Token序列,识别出各种类型,类型检查,返回类型内部表示的地址。,5.3.2 类型分析的总控算法,功能:类型检查,Ptr返回类型的内部表示地址。Void TypeProcess(Ptr)switch(token.class)case ID:NameTYPE(Ptr);break;/类型名 case ENUM:EnumTYPE(Ptr);break;/枚举类 case ARRAY:ArrayTYPE(Ptr);break;/数组类 case RECORD:RecordTYPE(Ptr,0,null);break/记录类 case UNION:UnionTYPE(Pt
3、r,0,null);break;/联合类 case POINTER:PointerTYPE(Ptr);break;/指针类 default:error();next_token();return;,5.3.3 类型名分析,形式:id/*类型标识符*/处理子程序:void NameType(Ptr)FindEntry(token.seman,total,Entry,Present);/查符号表 if(Present=flase)error;/无声明错 if(Entrykind)!=typeKind error;/非类型标识符 Ptr=Entry idType;,如:VAR id:t;,5.3.4
4、 枚举类型分析,形式:(id1,idn)分析任务:1)扫描及检查枚举类型的语义错误;2)构造该类型的内部表示,用Ptr指针指向它;3)构造枚举常量标识符的符号表项。,例:设枚举类型(a,b),则首先产生枚举类型的内部表示,其中EntryList表示一个指针,指向枚举表。,其次,在符号表区里为常量a和b构造相应表项如下:,处理子程序:void EnumType(Ptr)list=nil;L0:next_token();/读表的下一个元素 Link(list,token.seman);/连接到内部枚举表 next_token();if(token.class=“,”)goto L0;Ptr:=(e
5、numSize,enumTy,List);/生成枚举类型的内部表示,m=0;L1:name=first(List);/取List的首元素 List=tail(List);/去掉List的首元素 Enter(name,(Ptr,constKind,m),entry,present);/建立符号表项 if(present)error();m=m+1;if(List!=“nil”)goto L1;,如:(a,b)的符号表EntryList:,5.3.5 数组类型分析,形式:arrayc1.c2 of T 算法要点:扫描C1时把其值计算到Low中;扫描C2时把其值计算到Up中;扫描T时构造出其内部结点
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语义分析中 语义 分析 PPT 课件

链接地址:https://www.31ppt.com/p-5606376.html