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 * * *
您可能关注的文档
最近下载
- 分点进水多级AO污水处理工艺设计计算探讨.pdf VIP
- 高中物理必修二圆周运动习题精选.doc VIP
- (必会)军队文职(中医学)近年考试真题题库资料汇总(含答案).pdf VIP
- 2025年安徽分类考试对口升学语文真题试卷 .pdf VIP
- (必会)军队文职(公共科目)近年考试真题题库资料汇总(含答案).pdf VIP
- 专题01-语言文字运用【真题汇编】(2021-2025)五年高考真题语文分类汇编-含答案解析.pdf VIP
- 分段进水多级 AO 工艺的特点与问题.pdf VIP
- 沉淀+多级 AO+混凝沉淀废水处理工艺.docx VIP
- 2025年新版对口高考试卷及答案安徽.doc VIP
- 不同回流比对多级AO工艺污染物去除的影响.docx VIP
原创力文档

文档评论(0)