第9章符号表数计学院宋彩芳9 符号表?符号表的作用和地位?符号的主要属性及作用?符号表的组织?符号表的管理符号表的作用和地位?符号表用来存放语言程序中出现的有关标识符的属性信息,这些信息集中反映了标识符的语义特征属性;?在词法分析及语法分析过程中不断积累和更新表中的信息。?在词法分析到代码生成的各个阶段,按各自需要从表中获取不同的属性信息。符号表的作用和地位?符号表的功能有:?收集符号属性;? int i[3][5];?上下文语义的合法性检查的依据;?extern float i; //类型不一致?float i[4][2]; //重定义?作为目标代码生成阶段地址分配的依据;?extern 公共区?extern static 文件静态区?static 函数静态区?auto 动态区9 符号表?符号表的作用和地位?符号的主要属性及作用?符号表的组织?符号表的管理符号的主要属性及作用?语言符号可分为:?关键字(保留字)符号?操作符符号?标识符符号?语言中标识符可以是变量名、函数名、过程名;?过程没有返回值,如同C的void 函数则有,如同C的带返回值函数标识符符号的属性(信息)几种通常都是需要的。1符号名2符号的类型3符号的存储类别4符号的作用域及可视性5符号变量的存储分配信息6符号的其它属性?数组内情向量?记录结构型的成员信息?函数及过程的形参标识符符号的属性(信息)一、符号名?符号名与它在符号表中的位置一一对应;?标识符的内部代码也即标识符在符号表中的位置(通常是一个整数)可以替换符号名;?符号表运行过程中,表中的标识符名始终是唯一标志;?特殊情形:?重名标识符定义:根据标识符在程序中的作用域和可视性规则进行处理。表中标识符名始终唯一;?操作重载:通过它们的参数个数和类型,以及函数返回值类型来区别。以达到标识符的唯一;标识符符号的属性(信息)二、符号的类型?除过程标识符之外的函数和变量标识符都具有数据类型;?函数的数据类型指该函数值的数据类型;?变量符号的类型属性决定了其存储方式和可施加的运算操作;?数据类型:?基本数据类型:整型、实型、字符型、逻辑型(布尔型)、位组型(字节型);?复合数据类型:数组、记录结构;标识符符号的属性(信息)三、符号的存储类别?由关键字指定;?用static定义属于文件的静态存储变量或属于函数内部的静态存储变量?用regist定义使用寄存器存储的变量;?由变量在程序中位置决定;?函数外是程序的公共存储变量?函数内是内部变量;?存储类别作用:?编译过程语义处理、检查和存储分配的重要依据;?决定了符号变量的作用域、可视性和它的生命周期;
编译原理 符号表9 来自淘豆网www.taodocs.com转载请标明出处.