16-第五章语义分析讲解.ppt

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

第五章 语义分析 任课教师 王养廷 主要内容 语义分析 标识符内部表示 类型的内部表示 1 语义分析 语义 程序表达的含义 分类 静态语义:编译阶段检查的语义 动态语义:运行阶段检查的语义 例子:C++的动态绑定 再例:数组与指针的空间分配 常见的语义错误 类型相容 变量 1 语义分析 语义分析功能 ($id,idAddr)=($id, entry) 标识符检查 表达式检查 2 程序结构 程序结构 程序首部 声明部分 语句部分 举例 2 程序结构(续) program pl0(input,output); const norw = 11; {no. of reserved words} type symset = set of symbol; var ch: char; {last character read} procedure error(n: integer); begin writeln( ****, : cc-1, ^,n: 2); err := err+1 end {error}; begin {main program} for ch := chr(0) to chr(255) do ssym[ch] := nul; getsym; end. 3 标识符内部表示 标识符的语义 常量名 类型名 变量名 函数名 过程名 域名 3 标识符内部表示(续) 标识符种类声明 TYPE idKind=(consKind, typeKind, varKind, fieldKind, procKind, funcKind) 内部表示 标识符内部表示没有统一结构 与编译器设计有关 下面给出一种结构 3 标识符内部表示(续) 常量标识符 TypePtr Kind Value TypePtr:指向类型的内部表示 consKind:表示相应标识符是常量标识符 Value:常量值 3 标识符内部表示(续) 类型标识符 TypePtr Kind Forward TypePtr:指向类型的内部表示 typeKind:表示相应标识符是类型标识符 Forward:是否是向前引用的标识符 3 标识符内部表示(续) 变量标识符 TypePtr Kind Access Level Off 说明: Access=(dir, indir),直接或间接访问 indir:间接变量,dir直接变量 Level:变量所在层数 Off:偏移量 3 标识符内部表示(续) 域名标识符 TypePtr Kind Off HostType 说明: TypePtr:域名类型的内部表示 Off:记录内的偏移量 HostType:记录类型的内部表示 3 标识符内部表示(续) 过程标识符 TypePtr Kind Level Parm Class Cod Size Forward 说明: TypePtr:函数或过程(void)类型 routKind:过程或函数类型 Level:过程或函数的层数 Parm:表示值参信息表 Class(actual, formal) Code:目标代码地址 Size:函数大小空间 Forward:前向引用 2 标识符内部表示(续) 举例 Const pai=3.14; Type vector= array[1..10] of integer; Var x,y:real; r,s:vector; 标识符表示如下: pai: vector: x: y: r: s: 4 类型的内部表示 类型信息 静态语义的重要内容 Pacsal类型的文法定义 4 类型的内部表示 举例 integer、real、char、boolean array[1..10] of real record name:char; age:integer; end (monday, tuesday,wednesday,thursday,friday) ‘A’..’Z’ ^real file of real 4 类型的内部表示 基本数据类型内部表示 4 类型的内部表示 子界类型(subRange) Size Kind HostType Low Up HostType:子界类型的宿主类型 Low和Up:表示子界的上下界 例子:1..10 表示: (1,subTy, intPtr, 1,10) 4 类型的内部表示 枚举(e

文档评论(0)

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

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

1亿VIP精品文档

相关文档