1盛威网:专业的计算机学习网站指导教师:杨建国二零零七年十一月2盛威网:专业的计算机学习网站重点掌握:符号表的主要属性、作用和组织方法重点掌握:符号表的主要属性、作用和组织方法学习目标第9章符号表3盛威网:专业的计算机学习网站第一节符号表的作用和地位第二节符号的主要属性及作用第三节符号表的组织教学内容第四节符号表的管理4盛威网:专业的计算机学习网站知识结构5盛威网:专业的计算机学习网站§9.1符号表的作用和地位一一..符号表的定符号表的定义义二二..符号表的作符号表的作用用符号表是连接声明与引用的桥梁。一个名字在声明时,相关信息被填写进符号表,而在引用时,根据符号表中的信息生成相应的可执行语句。它的作用主要有:辅助语义的正确性检查辅助代码生成在编译过程中,编译程序用来记录源程序中各种名字的特性信息,所以也称为名字特性表。6盛威网:专业的计算机学习网站三三..符号表与编译各阶段的关符号表与编译各阶段的关系系开始,扫描器识别到一个名字后,查阅符号表,填表在语法分析和语义分析中陆续填入有关信息在语义分析时用到表中信息进行语义检查,生成中间代码在目标代码生成阶段,依据符号表对符号名分配地址7盛威网:专业的计算机学习网站例1.intx,a,b;......L:x:=a+b;...建表,分配存贮符号表数据区x简单变量整型a简单变量整型b简单变量整型L标号1.语法分析和语义分析•说明语句、赋值语句的语法规则•上下文有关分析:是否声明•类型一致性检查2.生成目标代码LOADa的地址ADDb的地址STOx的地址8盛威网:专业的计算机学习网站四四..符号表的组符号表的组成成符号表由若干个登记项(表项)组成,每个表项分两部分,其中前者是标识符的名字(或在符号表中的地址),而后者是属性部分(不同种类的标识符属性不同)。符号表=名字栏+信息栏符号表的基本结构:名字信息“名字”域:存放名字,一般为标识符的符号串,也可为指向标识符字符串的指针。9盛威网:专业的计算机学习网站“信息”域:可包括多个子域,分别表示标识符的有关信息,如:名字(标识符)的种类:简单变量、函数、过程、数组、标号、参数等类型:如整型、浮点型、字符型、指针等性质:变量形参、值形参等值:常量名地址:变量所分配单元的首址或地址位移大小:所占的字节数作用域的嵌套层次:10盛威网:专业的计算机学习网站对于数组:维数、上下界值、计算下标变量地址所用的信息以及数组元素类型等。对于记录(结构、联合):域的个数,每个域名、地址位移、类型等。对于过程或函数:形参个数、所在层次、函数返回值类型、局部变量所占空间大小等。对于指针:所指对象类型等。11盛威网:专业的计算机学习网站五五..符号表的功符号表的功能能1.收集符号属性2.上下文语义的合法性检查的依据3.作为目标代码生成阶段地址分配的依据12盛威网:专业的计算机学习网站六六..符号表的分符号表的分类类静态表:事先构造好的表,如保留字表、标准函数名表等。需要时去查相应的此类表动态表:编译程序在编译过程中根据需要构造的表,如标识符表、标号表、数组信息表、记录信息表和过程信息表等。13盛威网:专业的计算机学习网站§9.2符号的主要属性及作用语言符号可分为:关键字符号、操作符符号、标识符符号符号名符号的类型符号的存储类别符号的作用域及可视性符号变量的存储分配信息符号的其它属性符号表中的标识符一般设置的属性项目以及它们的功能14盛威网:专业的计算机学习网站一一..符号符号名名标识符:变量的名字、函数的名字、过程的名字通常把一个标识符在符号表中的位置的整数值称之为该标识符的内部代码在经过分析处理的语言程序中标识符不再是一个字符串而是一个整数值15盛威网:专业的计算机学习网站二二..符号的类符号的类型型•标识符中除过程标识符之外函数和变量标识符都具有数据类型属性•符号的类型属性是在语言程序中该符号的定义中得到;变量符号的类型属性决定了该变量的数据在存储空间的存储格式,还决定了在该变量上可以施加的运算操作16盛威网:专业的计算机学习网站•目前大多数语言已定义了在基本数据类型基础上扩充...