第05章 语义分析(上)ppt课件.ppt

第05章 语义分析(上)ppt课件.ppt

ID:58716214

大小:178.50 KB

页数:44页

时间:2020-10-04

第05章 语义分析(上)ppt课件.ppt_第1页
第05章 语义分析(上)ppt课件.ppt_第2页
第05章 语义分析(上)ppt课件.ppt_第3页
第05章 语义分析(上)ppt课件.ppt_第4页
第05章 语义分析(上)ppt课件.ppt_第5页
资源描述:

《第05章 语义分析(上)ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第05章语义分析主要内容:语义分析基础符号表类型分析声明和执行体的语义分析5.1语义分析基础语义分析的内容标识符的内部表示类型的内部表示值的内部表示5.1.1语义分析的内容语法和语义的区别:语法:关于什么样的字符串才是该语言在组成结构上合法的程序的法规。语义:关于结构上合法的程序的意义的法则。语义种类:静态语义:在编译阶段能检查的语义。动态语义:只有在目标代码执行阶段才能检查的语义。语义分析的内容:类型分析;标识符相关信息。语义分析的功能:检查语义错误;构造标识符属性表(符号表)。语义分析的实现:与语法分析

2、相结合。5.1.2标识符的内部表示标识符种类:常量名、类型名、变量名、函数名、过程名、域名。typedefenum=(constKind,typeKind,varKind,procKind,funcKind,fieldKind)标识符属性(AttributeIR):常量:consKindTypePtrKindValue类型:typeKindTypePtrKindTypePtr:指类型的内部表示;Value:常量值。TypePtr:指类型的内部表示;Access:等于dir(直接变量)或indir(间接变量)

3、;Level:表示变量所在的层数;Off:表示变量在过程等中的偏移量。变量:varKindTypePtrKindAccessLeveloffOff:表示域名在记录中的偏移量;HostType:表示域名对应类型的内部表示。域名:fieldKindTypePtrKindOffHostTypeParm:表示值参信息表地址;Class:为actual时表示实在过程/函数名,为formal时表示形参过程/函数名;Code:表示过程/函数的目标代码地址;Size:表示本过程/函数的空间大小;Forward:为true时

4、表示向前声明。过函:routKindTypePtrKindLevelParmClassCodeSizeForwardactualroutKindTypePtrKindLevelParmClassOffformal例,有声明如下:constpai=3.14;typevector=array[1..10]OFinteger;varx,y:real;r,s:vector;设当前层数和可用offset值分别为L和0,构造标识符pai,vector,x,y,r和s的属性表示。pai:consKindrealPtr3.

5、14vector:typeKindaPtrx:varKindrealPtrdirL0y:varKindrealPtrdirL1r:varKindaPtrdirL2s:varKindaPtrdirL12符号表的C语言描述如下(见p154):Typedefenum{consKind,typeKind,varKind,fieldKind,procKind,funcKind}idKIND;Typedefenum{dir,indir}AccessKIND;Typedefenum{formal,acttual}para

6、mKIND;Typedefstruct{idNAMEid_name;idATTRIBUTEid_attribute;//标识符属性域symbolTABLE*next}symbolTABLE//符号表Typedefstruct{idTYPE*id_type;idKINDid_kind;idBODYid_body;//标识符的BODY}idATTRIBUTE;//标识符属性域Typedefstruct{constidBODYconst_id_body;//常量属性varidBODYvar_id_body;//变

7、量属性profunidBODYprofunc_id_body;//过函}idBODY;//标识符的BODYTypedefstruct{constTYPEConst_value;}constidBODY;//常量属性域BODYTypedefstruct{AccessKINDaccess_mode;intvar_id_level;intvar_id_offset;}varidBODY;//变量属性域BODYTypedefstruct{intpro_id_level;paramKINDparam_kind;pro

8、funcBOXprofunc_box;//过函BOX}profuncidBODY;//过程函数名的BODYTypedefunion{struct{paramLIST*param_list;codeADDRcode_addr;intspace_size;booleanforward;}actual_profunc_box;//实在过函struct{intOff;}formal_profunc_box;//形参过函}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。