- 1、本文档共49页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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 主要功能 识别一个枚举类型 举例
您可能关注的文档
最近下载
- 4AM3U3 In the shop At Panda’s Glasses Shop ppt英语教学课件.pptx
- 2023年四川省成都市高考物理一诊试卷(含答案解析).docx
- 人教版(2024)英语七年级上册Unit 5 Fun Clubs重难点题型专练(含答案).doc VIP
- GB50174-2008电子信息系统机房设计规范.docx
- 2006-年度经教育部备案或审批同意设置的-高等学校本科专业名单.pdf
- 河南省青桐鸣大联考2024-2025学年高二上学期10月月考英语试题(含解析,含听力原文无音频).pdf VIP
- _电缆桥架安装图集.pdf VIP
- 2024入团前基础知识题库(含答案).docx
- 《小萝卜头的故事》PPT课件.pptx
- 大厦高大模板专项施工方案.doc
文档评论(0)