文档详情

CH8 静态语义分析和中间代码生成.pdf

发布:2017-06-17约1.09万字共24页下载文档
文本预览下载声明
S.P 词法分析程序 符 语法分析程序 错 号 表 语义分析、生成中间代码 误 处 管 理 代码优化 理 生成目标程序 O.P 编译原理 2017年5月5 日 第8章 静态语义分析和中间代码生成  符号表  静态语义分析  中间代码生成 编译原理 2017年5月5 日 符号表  符号表 (symbol tables ) •名字信息建立后加入/ 更改符号表 名字信息如:种类,类型,偏移地址,占用空间等 • 需要获取名字信息时,查找符号表 •符号表的组织可以体现名字作用域规则 编译原理 2017年5月5 日 符号表的作用  用来存放有关标识符(符号)的属性信息 • 这些信息会在编译的不同阶段用到 • 符号表的内容将用于静态语义检查和产生中间代码 • 在目标代码生成阶段,符号表是对符号名进行地址 分配的依据 • 对一个多遍扫描的编译程序,不同遍所用的符号表 也会有所不同,因为每遍所关心的信息或所能得到 的信息会有差异  用来体现作用域与可见性信息 编译原理 2017年5月5 日 符号的常见属性  符号名  符号的类别  符号的类型  符号的存储类别和存储分配信息  符号的作用域信息  其他属性 • 数组内情向量 • 记录结构的成员信息 • 函数及过程的形参 编译原理 2017年5月5 日 符号表的实现  针对符号表的常见操作 • 创建符号表 在编译开始,或进入一个作用域 • 插入表项 在遇到新的标识符声明时进行 • 查询表项 在引用标识符时进行 • 修改表项 在获得新的语义值信息时进行 • 删除表项 在标识符成为不可见或不再需要它的任 何信息时进行 • 释放符号表空间 在编译结束前或退出一个作用域 编译原理 2017年5月5 日 符号表的实现  实现符号表的常用数据结构 • 一般的线性表 如:数组,链表,等 • 有序表 查询较无序表快,如可以采用折半查找 • 二叉搜索树 • Hash表 编译原理
显示全部
相似文档