编译原理及实现技术(张睿)精品课件7.pptVIP

编译原理及实现技术(张睿)精品课件7.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
标号的语义分析 标号出现的位置: 标号声明:label ?1, ?2, …, ?n; 标号定位(语句前):?i:Statement; 标号使用(Goto后):goto ?i; 标号部分的语义错误: 标号重复声明; 标号重复定位; 标号有定位而无声明; 标号有使用而无定位; Goto语句有非法转入. 标号部分语义分析原理 设置五种表:LDEC,LDEF,LUSE,SL,PL LDEC表:(Flag, Label,Label); LDEF、LUSE表:(Label); SL表:(kind,LDEFaddr,LUSEaddr); PL表:(LDECaddr,LDEFaddr); 标号的语义分析原理 1)进入一个过/函时,将本层LDEC和LDEF的地址填入PL表; 2)遇到一个标号声明“label ?1, ?2,…,?n”时,建立本层LDEC表(检查重复声明错误),其中的Flag标志均设置为0; 3)遇到定位性标号“?:Statement”时: 检查在LDEC表中有无? ,若无则表示无标号声明错误; 若有,则检查其Flag位,若是1,则有重复定位错误; 若Flag=0,令其Flag位为1,并将? 填入LDEF表中。 查看LUSE表,若其中有?则将其删除掉。 4)进入一个结构语句时,将本语句的LDEF和LUSE表位置填入SL表; 5)遇到一个“goto ?” 时: 查看LDEF表,看其中是否有?; 若无,将填入LUSE表; 6)退出一个结构化语句时: 清查本层LUSE表(若有定位则删除该项):用本层的LUSE中标号查本层定位表,若查到,则把该项从LUSE中删除; 作废本层的LDEF。 7)退出一个过/函时: 清查本层LUSE表; 作废本层的LDEC和LDEF。 8)程序结束时,清查LUSE表,若非空,则说明有标号为定位的错误。 第六章 语义分析 语义分析概述 符号表 1 语义分析 必要性 分类 语义错误 功能 1.1语义分析的必要性 语法和语义的区别 语法:关于什么样的字符串才是该语言在组成结构上合法的程序的法则。 语义:关于结构上合法的程序的意义法则。 1.2语义分析的分类 语义种类 指称语义 操作语义 公理语义 静态语义:在编译阶段(从程序文本上)可以检查的语义。 动态语义:通过程序的执行才能检查的语义。 1.3语义错误 各种条件表达式的类型是不是boolean型? 运算符的分量的类型是否相容? 赋值语句的左右部的类型是否相容? 形参和实参的类型是否相容? 下标表达式的类型是否为所允许的类型? 函数说明中的函数类型和返回值的类型是否一致? V[E]中的V是不是变量,而且是数组类型? V.id中的V是不是变量,而且是记录类型? id是不是该记录类型中的域名? y+f(…)中的f是不是函数名?形参个数和实参个数是否一致? p(…)语句中的p是不是过程名?形参个数和实参个数是否一致? V↑中的V是不是指针或文件变量? 变体记录中表示情形的常量是否为合法类型? 子界类型中的下界和上界类型是否相容?下界是否小于等于上界? 语义错误 cont. 每个使用性标识符是否都有声明?在同层内有无标识符被声明多次? 标号是否有声明?有无重复声明和重复定位错误?有无非法转入错误? 1.4语义分析的功能 语义分析的内容: 类型分析; 标识符相关信息提取; 语义分析的功能: 检查语义错误 构造标识符属性表(符号表) 语义分析的实现: 与语法分析相结合 语义分析的功能图示 语义分析 语法分析树 TokenList 语义定义 自然语言描述规定 符号表 判定语义错误 2 符号表 符号名 属性 x int, variable, …… p void, function, (int i), …… … ……. 2.1地位 符号名 类型 指针 大小 … x fun M … 2.2符号的内部表示 值的内部表示 类型的内部表示 标识符的内部表示 2.2.1值的内部表示 基本类型:整型,实型 无序类型:指针,数组,结构体 有序类型:布尔,字符,枚举,数组下标 布尔常量:ord(false)=0, ord(true)= 1 字符常量:ord(C) = ASCⅡ(C) 枚举常量:设有枚举类型(D,A,B),则有ord(D)=0,ord(A)=1,ord(B)=2 2.2.2类型的内部表示 类型的种类:标准、子界、枚举、数组、记录、集合、文件、指针类型等 Type=(intTy,boolTy,charTy,realTy, subTy,enumTy, arrayTy,recordTy,setTy,fileTy,pointerTy) 内部表示:(TypeIR) int/bool/ char/real: enum:

文档评论(0)

1243595614 + 关注
实名认证
文档贡献者

文档有任何问题,请私信留言,会第一时间解决。

版权声明书
用户编号:7043023136000000

1亿VIP精品文档

相关文档