程序的语义分析.ppt
《程序的语义分析.ppt》由会员分享,可在线阅读,更多相关《程序的语义分析.ppt(19页珍藏版)》请在三一办公上搜索。
1、程序的语义分析,主要内容:声明的语义分析;执行体的语义分析:表达式的语义分析;语句的语义分析;,声明的语义分析,语义分析工作:建立符号表;检查标识符的重复声明;声明部分:标号声明:LabelDecPart;常量声明:ConsDecPart;类型声明:TypeDecPart;变量声明:VarDecPart;过函声明:RoutDecPart;,LabelDecPart label,;|ConstDecPart const id=C;.;id=C;|TypeDecPart type id=T;.;id=T;|VarDecPart var VarList:T;.;VarList:T;|RoutDecP
2、art RoutDec;.;RoutDec;|RoutDec ProcHead;Block|FuncHead;Block ProcHead procedure id(ParamDecList)FuncHead function id(ParamDecList):TypeParamDecList ParamDec;.;ParamDecParamDec VarList:Type|var VarList:Type|ProcHead|FuncHead,标号LabelPart,标号出现的位置:标号声明:label 1,2,n;标号定位(语句前):i:Statement;标号使用(Goto后):goto
3、i;标号部分的语义错误:标号重复声明;标号重复定位;标号有定位而无声明;标号有使用而无定位;Goto语句有非法转入.,标号部分语义分析原理,设置三种表:LDEC,LDEF,LUSE LDEC表:(Flag,Label)以子程序为局部单位;LDEF、LUSE表:(Label)以结构体为局部单位 标号声明部分label 1,2,n:(填写LDEC表)建立本层LDEC;令Flag:=0;检查是否有重复声明;标号定位部分:Statement:(填写LDEF表)若LDEC中没有,则表示该标号未声明;否则:若的flag是1,则表示有重复定位错误,否则令flag:=1,并将填入LDEF表中。标号使用 got
4、o:(填写LUSE表)若LDEF表中没有,则将填入LUSE表中,表示的 定位可能在后。,进入结构语句时:记录本段LDEF和LUSE。结束时:将LUSE表中LDEF中的项删除,删除 本段LDEF表,LUSE表保留。进入过函时:记录本层LDEC、LDEF表;退出时:将LUSE表中LDEF中的项删除,删除 本层LDEC表和LDEF表,LUSE表保留。进入主程序时:记录本层LDEC、LDEF表;结束时:检查LUSE是否为空,若非空表示有 非法转入或使用了无定位的标号。,常量声明的语义处理,形式:ConsDecPart const ConsDecList ConsDecList ConsDec;Cons
5、DecList ConsDec id=Cid=C 的语义处理原理:求C.type,C.val 查符号表是否有标识符id;若有则重复 声明错误 否则构造(id,C.type,consKind,C.value)填写到符号表中,类型声明的语义处理,形式:TypeDecPart type TypeDecList TypeDecList TypeDec;TypeDecList TypeDec id=T id=T的语义分析要点:对T进行类型分析返回内部表示指针TPtr;检查符号表是否有重复声明;若无则构造符号表:(id,TPtr,typeKind,false/true)当整个类型声明部分结束时,进行超前指
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序 语义 分析

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