网站大量收购独家精品文档,联系QQ:2885784924

18-第五章语义分析.ppt

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

第五章 语义分析 任课教师 王养廷 主要内容 符号表 1 符号表 概念 存放标识符信息的表 主要内容 表识符的名字 表识符的属性 符号表的主要操作 建表 查表 1 符号表(续) 主要的查表技术 顺序查表 二分叉表 散列查表 顺序查表法 存储方式 问题 二分查找法 三列查找 建表慢 查表快 2 符号表局部化 问题引入 program demo(input, output); var x,y:real; procedure subrout1; var x, z:real; begin x:=100; end; begin x:=10; end; 2 符号表局部化(续) 问题 在不同层声明中,都有变量X。 如何进行识别和使用? 解决方法 局部化 使用嵌套作用域规则 2 符号表局部化(续) 作用域单位 子程序和分程序 Procedure...end Function... end Begin ... end Record... end 其中记录部分需要单独处理 符号表对应的有效范围 2 符号表局部化(续) 举例 begin a,b,c:real; begin b,d:boolean; begin t,z:string; end; end; begin a,f:integer; begin t,z:char; end; end end 2 符号表局部化(续) 程序说明 每个begin... end是一个过程 关于嵌套的层次 只给出类型定义部分 程序的执行过程 符号表说明 结构说明 如何解决结构化 2 符号表局部化(续) 符号表的树型组织 2 符号表局部化(续) 符号表分类 全局符号表 局部符号表 符号表主要种类 二叉式局部符号表 散列式全局符号表 嵌套式局部符号表 3 二叉式局部符号表 方法 使用Scope栈 3 二叉式局部符号表(续) 说明 Scope栈 活跃表 局部符号表 使用规则 进入新的局部化单位,创建新表,入Scope栈 遇到定义性表识符,记入当前符号表 遇到使用性符号表,一次从栈定向下叉每个符号表 结束一个局部化单位,弹出Scope栈顶元素 3 二叉式局部符号表(续) 实例程序 [1] begin a:integer; [2] begin a:real; [3] begin a:boolen;a:=false;end; a:=0.55; a:=100; end; 3 二叉式局部符号表(续) 局部符号表 4 符号表接口函数 创建空表: CreateTable() 申请一个表空间 撤销一个表: DestroyTable() 释放一个表空间 登记符号:Enter() Enter(id,Attribute,Entry,Present) 把一个符号填入符号表 寻找符号表项:FindEntry() FindEntry(id,Flag,Entry,Present) 从符号表中查找某个符号 3 二叉式局部符号表(续) 过程分析 练习 画出P152页程序的二叉式局部符号表 作业 P190 3 * * *

文档评论(0)

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

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

1亿VIP精品文档

相关文档