19-第五章有看点,语义分析语义分析讲解.ppt

19-第五章有看点,语义分析语义分析讲解.ppt

  1. 1、本文档共49页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
19-第五章有看点,语义分析语义分析讲解

第五章 语义分析 任课教师 王养廷 主要内容 类型的等价性和相容性 类型分析 声明的语义分析 1 类型相容和等价 类型 在程序设计语言中,所有的变量都有类型 类型相容 在变量参与运算时,各个分量类型是相容的 类型等价 按名等价:要求有相同的类型名 按类型等价:两个变量有相同的类型结构 1 类型相容和等价(续) 结构等价举例 var a:array[1..10] of integer; b:array[1..10] of integer; 相同写法 type tp1= array[1..10] of integer; tp2= array[1..10] of integer; 结构等价:var a:tp1; b:tp2; 名等价: var a,b:tp1; 1 类型相容和等价(续) 二者区别 按名等价:比较简单,常用 按结构等价:编译复杂,少用 类型定义的作用 计算存储空间大小 检查类型的相容性 其它语义检查 类型相容与等价 等价是相容的特例 程序设计语言中使用相容的概念 1 类型相容和等价(续) 类型相容的主要表现 运算分量类型相容 赋值语句左右类型的相容性 值参与形参的相容性 2 类型分析 前面内容 标识符的内部表示 类型的内部表示 类型分析 类型出现的位置 类型定义中=号后边的位置 变量定义中:号后边的位置 形参中:号后边的位置 函数声明中:号后边的位置 类型识别 2 类型分析 举例 Porgram demo(input, output); Type TStudent = record sname:char; sid:integer; end; TStudents = array[1..30] of TSTudent; Var s: TStudent; students : TStudents; Function Compare(i, j :integer):boolean; …… 2 类型分析(续) 类型处理函数TypeProcess 主要功能 完成一个类型的处理 根据类型的不同分别处理 2 类型分析(续) 实现过程 void TypeProcess(Ptr){ switch(token.class){ case ID: NameTYPE(Ptr);break; case ENUM: EnumTYPE(Ptr);break; case ARRAY: ArrayTYPE(Ptr);break; case RECORD: RecordTYPE(Ptr);break; case UNION: UnionTYPE(Ptr);break; case POINTER: PointerTYPE(Ptr);break; default: Error(); } } 2 类型分析(续) 执行过程分析 Porgram demo(input, output); Type TStudent = record sname:char; sid:integer; end; TStudents = array[1..30] of TStudent; Var s: TStudent; students : TStudents; Function Compare(i, j :integer):boolean; …… 2 类型分析(续) 类型处理函数NameType 主要功能 识别一个命名类型 举例 Var s: TStudent; students : TStudents; 2 类型分析(续) 实现过程 void NameTYPE(Ptr){ FindEntry(token.seman, total, entry, present); if(present == false) error; if((entry-kind)!= typekind) error; Ptr = entry-id_type; } 2 类型分析(续) 举例 var s: TStudent; students : TStudents; 执行过程分析 2 类型分析(续) 类型处理函数SubRangeType 主要功能 识别一个子界类型 实现过程 自己想象实现过程是什么样的??? 执行过程分析 举例 Type tp=‘a’..’z’; var x:1..10; 2 类型分析(续) 类型处理函数EnumType 主要功能 识别一个枚举类型 举例

文档评论(0)

000 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档