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

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

ID:58716213

大小:150.00 KB

页数:59页

时间: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.4声明的语义分析语义分析工作:建立符号表;检查标识符的重复声明;声明部分:标号声明:LabelDecPart;常量声明:ConsDecPart;类型声明:TypeDecPart;变量声明:VarDecPart;过函声明:RoutDecPart;5.4.1声明的语法结构1)标号声明:→labelL{,L};2)常量声明:→constid=C;{id=C;}3)类型声明:→typeid=T;{id=T;}4)变量声明:

2、rt>→var:T;{:T;}5)过函声明:;{;};

3、;→procedureid()→functionid():Type{;}:Type

4、var:Type

5、procedureid

6、f

7、unctionid→beginend

8、forward*5.4.2标号声明部分的语义分析标号出现的位置:标号声明:labelL1,L2,…,Ln;标号定位(语句前):Li:Statement;标号使用(Goto后):gotoLi;标号部分的语义错误:标号重复声明;标号重复定位;标号有定位而无声明;标号有使用而无定位;Goto语句有非法转入.标号部分语义分析原理设置三种表:LDEC,LDEF,LUSELDEC表:(Flag,Label)以子程序为局部单位;LDEF、LUSE表:(Label)以结构体为局部单位分析内容:[1]标号声明部分(labelL1

9、,L2,…,Ln):(填写LDEC表)建立本层LDEC,令Flag:=0;检查是否有重复声明。[2]标号定位部分(L:Statement):(填写LDEF表)1)检查LDEC中没有L,若无,则表示该标号未声明错;否则:检查flag,若是1,则表示有重复定位错误,否则,令flag:=1,并将L填入LDEF表中;2)检查LUSE中没有L,若有,则将其删除。[3]标号使用(gotoL):(填写LUSE表)检查LDEF表中没有L,若无,则将L填入LUSE表中,表示L的定位可能在后。[4]进入结构语句时:记录本段LDEF和LUSE。[5]结束时:将LUSE表中LDEF中的项删除,删除本段LDEF表,

10、LUSE表保留。[6]进入过函时:记录本层LDEC、LDEF表。[7]退出时:删除本层LDEC表和LDEF表,若是主程序的结束时,检查LUSE是否为空,若非空表示有非法转入或使用了无定位的标号。LabelDecPart的实现算法:VoidLabelDecPart();//labelL1,L2,…,Ln;{EnterCurrentLDECaddr;//记录本层LDEC地址L:next_token();EnterLabel(token.seman,Present);//登记LDEC表项if(Present)error();//重复声明错next_token();if(token.class==

11、“,”)GOTOL}5.4.3常量声明部分的语义分析形式:→const;[;]→id=Cid=C的语义处理原理:求C.type,C.value查符号表是否有标识符id;若有则重复声明错误否则,构造(id.name,C.type,consKind,C.value)填写到符号表中。→const;VoidConsDecPart(){next_token();ConsDefList();}

12、efList>→[;]VoidConsDefList(){ConsDef();next_token();if(token.class==ID)ConsDefList()}→id=CVoidConsDef(){cname=token.seman;//记录idnext_token();next_token();//读“=”和“C”cPtr=ConstType(to

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

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

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