编译原理compiler7_符号表.ppt
《编译原理compiler7_符号表.ppt》由会员分享,可在线阅读,更多相关《编译原理compiler7_符号表.ppt(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第七七章章:符号符号表管理技术表管理技术7.1 1 概述概述7.2 符号表的组织与内容符号表的组织与内容7.3 非分程序结构语言的符号表组织非分程序结构语言的符号表组织7.4 分程序结构语言的符号表组织分程序结构语言的符号表组织7.1 7.1 概述概述(1)什么什么是符号表是符号表?在编译过程中,编译程序用于记录源程序在编译过程中,编译程序用于记录源程序中各种名字的特性信息,中各种名字的特性信息,所以也称为所以也称为名字特名字特性表性表。名字名字:程序名、过程名、函数名、用户定程序名、过程名、函数名、用户定义类型、变量名、符号名字。义类型、变量名、符号名字。特性信息特性信息:名字种类、类型、
2、维数、参数:名字种类、类型、维数、参数个数及目标地址(存储单元地址)等。个数及目标地址(存储单元地址)等。(2)建表和查表的必要性建表和查表的必要性 (符号表在编译过程中的作用符号表在编译过程中的作用)源程序中变量要先声明,然后才能引用。源程序中变量要先声明,然后才能引用。用户通过用户通过用户通过用户通过声明语句声明语句声明语句声明语句,声明各种,声明各种,声明各种,声明各种名字名字名字名字,以及给出它们,以及给出它们,以及给出它们,以及给出它们的类型维数等的类型维数等的类型维数等的类型维数等信息信息信息信息,编译程序在出来这些声明语句时,编译程序在出来这些声明语句时,编译程序在出来这些声明语
3、句时,编译程序在出来这些声明语句时,因将声明中的名字以及信息因将声明中的名字以及信息因将声明中的名字以及信息因将声明中的名字以及信息登录登录登录登录到符号表中,同时编译到符号表中,同时编译到符号表中,同时编译到符号表中,同时编译还要给变量分配存储单元,而还要给变量分配存储单元,而还要给变量分配存储单元,而还要给变量分配存储单元,而存储单元地址存储单元地址存储单元地址存储单元地址也必须登录也必须登录也必须登录也必须登录在符号表中。在符号表中。在符号表中。在符号表中。当编译程序编译到当编译程序编译到当编译程序编译到当编译程序编译到引用引用引用引用所声明的变量时所声明的变量时所声明的变量时所声明的变
4、量时(赋值或引赋值或引赋值或引赋值或引用其值)要进行语法语义正确性检查用其值)要进行语法语义正确性检查用其值)要进行语法语义正确性检查用其值)要进行语法语义正确性检查 类型是否符合要求类型是否符合要求类型是否符合要求类型是否符合要求和生成相应的目标程序,这就需要和生成相应的目标程序,这就需要和生成相应的目标程序,这就需要和生成相应的目标程序,这就需要查查符号表来取得相关符号表来取得相关符号表来取得相关符号表来取得相关信息信息信息信息。1.1.1.1.语法分析和语义分析语法分析和语义分析语法分析和语义分析语法分析和语义分析 说明语句赋值语句的语法规则说明语句赋值语句的语法规则说明语句赋值语句的语
5、法规则说明语句赋值语句的语法规则 上下文有关分析;是否声明;上下文有关分析;是否声明;上下文有关分析;是否声明;上下文有关分析;是否声明;类型一致性检查类型一致性检查类型一致性检查类型一致性检查2.2.生成目标代码生成目标代码生成目标代码生成目标代码LOAD a LOAD a 的地址的地址的地址的地址ADD b ADD b 的地址的地址的地址的地址STO x STO x 的地址的地址的地址的地址例例例例:int int x,a,b;x,a,b;L:x:=a+b;L:x:=a+b;建表建表建表建表分配存贮分配存贮分配存贮分配存贮符号表符号表符号表符号表数据区数据区数据区数据区X X 简单变量简单
6、变量简单变量简单变量 整型整型整型整型A A 简单变量简单变量简单变量简单变量 整型整型整型整型B B 简单变量简单变量简单变量简单变量 整型整型整型整型L L 标号标号标号标号(3)有关符号表的操作:填表和查有关符号表的操作:填表和查表表填表填表:当分析到程序中的当分析到程序中的当分析到程序中的当分析到程序中的说明说明说明说明或或或或定义定义定义定义语句时应将说明语句时应将说明语句时应将说明语句时应将说明或定义的名字以及与之有关的信息填入符号表中或定义的名字以及与之有关的信息填入符号表中或定义的名字以及与之有关的信息填入符号表中或定义的名字以及与之有关的信息填入符号表中 例:例:例:例:Pr
7、ocedure P()Procedure P()Procedure P()Procedure P()查表查表:(1)(1)填表前查表检查在程序的同一作用域内填表前查表检查在程序的同一作用域内填表前查表检查在程序的同一作用域内填表前查表检查在程序的同一作用域内名字名字名字名字是否是否是否是否重复定义重复定义重复定义重复定义(2)(2)检查名字的检查名字的检查名字的检查名字的种类种类种类种类是否与说明一致是否与说明一致是否与说明一致是否与说明一致(3)(3)(3)(3)对于强类型语言要检查表达式中各变量的对于强类型语言要检查表达式中各变量的对于强类型语言要检查表达式中各变量的对于强类型语言要检查表
8、达式中各变量的类型类型类型类型是是是是否一致否一致否一致否一致(4)(4)生成目标指令时要取得所需要的地址生成目标指令时要取得所需要的地址生成目标指令时要取得所需要的地址生成目标指令时要取得所需要的地址 7.2 符号表的组织与内容符号表的组织与内容(1)(1)符号表的结构与内容符号表的结构与内容符号表的基本结构如下符号表的基本结构如下 名字名字 特性特性(信息信息)“名字名字”域域:存放名字。一般为标识符的符存放名字。一般为标识符的符号串,也可为指向标识符字符串串指针号串,也可为指向标识符字符串串指针“特性特性特性特性”域:域:域:域:可包括多个子域,分别表示标识符的有可包括多个子域,分别表示
9、标识符的有可包括多个子域,分别表示标识符的有可包括多个子域,分别表示标识符的有关信息。如:关信息。如:关信息。如:关信息。如:名字(标识符)的种类:名字(标识符)的种类:名字(标识符)的种类:名字(标识符)的种类:变量、函数、过程、数组、变量、函数、过程、数组、变量、函数、过程、数组、变量、函数、过程、数组、标号、参数等标号、参数等标号、参数等标号、参数等类型:类型:类型:类型:如整型、浮点型、字符型、指针等如整型、浮点型、字符型、指针等如整型、浮点型、字符型、指针等如整型、浮点型、字符型、指针等性质:性质:性质:性质:变量形参、值形参等变量形参、值形参等变量形参、值形参等变量形参、值形参等名
10、字:名字:名字:名字:常量名常量名常量名常量名地址:地址:地址:地址:变量所分配单元的首址或地址位移变量所分配单元的首址或地址位移变量所分配单元的首址或地址位移变量所分配单元的首址或地址位移大小:大小:大小:大小:所占的字节数所占的字节数所占的字节数所占的字节数名字名字名字名字 特性特性特性特性(信息信息信息信息)作用域的嵌套层次作用域的嵌套层次 对于数组:对于数组:维数、上下界值、计算下标量地址维数、上下界值、计算下标量地址所用的信息以及数组元素类型等所用的信息以及数组元素类型等对于记录(结构、联合):对于记录(结构、联合):域的个数、每个域名、域的个数、每个域名、地址位移、类型等地址位移、
11、类型等对于过程或函数:对于过程或函数:形参个数、所在层次、函数返形参个数、所在层次、函数返回值类型、局部变量所占空间大小等回值类型、局部变量所占空间大小等对于指针:对于指针:所指对象类型等所指对象类型等(2)组织方式组织方式1.1.统一符号表统一符号表:无论什么名字都填入统一格式无论什么名字都填入统一格式的符号表中的符号表中符号表表项应按信息量最大的名字设计符号表表项应按信息量最大的名字设计 填表填表查表比较方便查表比较方便 结构简单结构简单 但是但是浪费浪费大量空间大量空间2.对于不同种类的名字分别建立各种符号表对于不同种类的名字分别建立各种符号表节节省省空间空间 但是填表和查表不方便但是填
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 compiler7_ 符号
限制150内