《语义分析中》PPT课件.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《《语义分析中》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《语义分析中》PPT课件.ppt(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1编译原理电子教案韶关学院计算机系程细柱第第0505章章 语义分析语义分析主要内容:主要内容:.语义分析基础语义分析基础.符号表符号表.类型分析类型分析.声明和执行体的语义分析声明和执行体的语义分析2编译原理电子教案韶关学院计算机系程细柱5.3 类型分析类型分析5.3.1 5.3.1 类型的等价性和相容性类型的等价性和相容性类型的等价性类型的等价性 1 1)按名等价:)按名等价:type type tptp=array1.10of integer;=array1.10of integer;varvar a,b:tpa,b:tp;则称则称a,ba,b是相同类型的变量是相同类型的变量 2 2)结构
2、等价:)结构等价:type tp1=array1.10of integer;type tp1=array1.10of integer;type tp2=array1.10of integer;type tp2=array1.10of integer;varvar a:tp1;b:tp2;a:tp1;b:tp2;则称则称a,ba,b是相同类型的变量是相同类型的变量3编译原理电子教案韶关学院计算机系程细柱类型的相容性:类型的相容性:主要有:主要有:1 1)运算分量类型的相容性;)运算分量类型的相容性;2 2)赋值语句左右类型的相容性;)赋值语句左右类型的相容性;3 3)形参和实参类型的相容性;)形
3、参和实参类型的相容性;类型分析的作用:类型分析的作用:构造类型的内部表示,进行类构造类型的内部表示,进行类型检查。型检查。分析过程:分析过程:读读TokenToken序列,识别出各种类型,类型序列,识别出各种类型,类型检查,返回类型内部表示的地址。检查,返回类型内部表示的地址。4编译原理电子教案韶关学院计算机系程细柱5.3.2 类型分析的总控算法类型分析的总控算法功能:功能:类型检查,类型检查,PtrPtr返回类型的内部表示地址。返回类型的内部表示地址。Void TypeProcess(Ptr)Void TypeProcess(Ptr)switch(token.class)switch(tok
4、en.class)case IDcase ID :NameTYPE(Ptr);break;/:NameTYPE(Ptr);break;/类型名类型名 case ENUM case ENUM:EnumTYPE(Ptr);break;/:EnumTYPE(Ptr);break;/枚举类枚举类 case ARRAYcase ARRAY:ArrayTYPE(Ptr);break;/:ArrayTYPE(Ptr);break;/数组类数组类 case RECORDcase RECORD:RecordTYPE(Ptr,0,null);break/:RecordTYPE(Ptr,0,null);break/
5、记录类记录类 case UNIONcase UNION:UnionTYPE(Ptr,0,null);break;/:UnionTYPE(Ptr,0,null);break;/联合类联合类 case POINTER:case POINTER:PointerTYPE(Ptr);break;/PointerTYPE(Ptr);break;/指针类指针类 default:error()default:error();next_token();next_token();return;return;5编译原理电子教案韶关学院计算机系程细柱5.3.3 类型名分析类型名分析形式:形式:id /*类型标识符类型
6、标识符*/处理子程序:处理子程序:void NameType(Ptr)FindEntry(token.seman,total,Entry,Present);/查符号表查符号表 if(Present=flase)error;/无声明错无声明错 if(Entrykind)!=typeKind error;/非类型标识符非类型标识符 Ptr=Entry idType;如:如:VAR id:t;6编译原理电子教案韶关学院计算机系程细柱5.3.4 枚举类型分析枚举类型分析形式:形式:(idid1 1,ididn n)分析任务:分析任务:1 1)扫描及检查枚举类型的语义错误;)扫描及检查枚举类型的语义错误
7、;2 2)构造该类型的内部表示,用)构造该类型的内部表示,用PtrPtr指针指向它;指针指向它;3 3)构造枚举常量标识符的符号表项。)构造枚举常量标识符的符号表项。例:例:设枚举类型设枚举类型(a,b)(a,b),则首先产生枚举类型的内部表示,则首先产生枚举类型的内部表示,其中其中EntryListEntryList表示一个指针,指向枚举表。表示一个指针,指向枚举表。Size enumTy EnumListPtr:a Ptr ConsKind 0b Ptr ConsKind 1aEntry:bEntry:其次,在符号表区里为常量其次,在符号表区里为常量a和和b构造相应表项如下:构造相应表项如
8、下:7编译原理电子教案韶关学院计算机系程细柱处理处理子程序:子程序:void EnumType(Ptr)list=nil;L0:next_token();/读表的下一个元素读表的下一个元素 Link(list,token.seman);/连接到内部枚举表连接到内部枚举表 next_token();if(token.class=“,”)goto L0;Ptr:=(enumSize,enumTy,List);/生成枚举类型的内部表示生成枚举类型的内部表示 Size enumTy EnumListPtr:8编译原理电子教案韶关学院计算机系程细柱 m=0;L1:name=first(List);/取取
9、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:a Ptr ConsKind 0b Ptr ConsKind 19编译原理电子教案韶关学院计算机系程细柱5.3.5 数组类型分析数组类型分析形式:形式:arrayc1.c2 of T arrayc1.c2 of T 算法要点:算法要点:扫描
10、扫描C1C1时把其值计算到时把其值计算到LowLow中;中;扫描扫描C2C2时把其值计算到时把其值计算到UpUp中;中;扫描扫描T T时构造出其内部结点(由时构造出其内部结点(由ElemPtrElemPtr指向);指向);构造数组结点:构造数组结点:PtrPtr:=(:=(size,arrayTy,Low,Up,ElemPtrsize,arrayTy,Low,Up,ElemPtr)10编译原理电子教案韶关学院计算机系程细柱 实现算法:实现算法:void ArrayType(Ptr)/array Carray C1 1.C.C2 2 of T of T next_token();/读读“”nex
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语义分析中 语义 分析 PPT 课件
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内