4 符号表管理 4 符号表管理 ............................................................................................................................... 1 4.1 GJC 中符号表管理相关的类 ................................................................................... 2 4.2 Jav a 语言中符号的种类 ........................................................................................... 3 4.3 符号名字的管理 ....................................................................................................... 5 4.4 符号的表示 ............................................................................................................... 9 4.5 类型的表示 ............................................................................................................. 12 4.6 可见性的管理 ......................................................................................................... 16 4.7 符号表管理程序运行实例分析 ............................................................................. 21 4.8 符号表管理小结 ..................................................................................................... 23 符号表(sy mbol table)在编译的过程中起着非常重要的作用,主要体现在它一方面可以帮助语义分析程序进行语义正确性检查,另一方面可以辅助代码生成器生成正确的代码。对符号表的操作主要是两种,插入和检索。通常,在编译过程中每遇到对符号的定义,编译器就要检索符号表,检查这个符号是否已经存在。若是属于重复定义,则报告错误信息;若是一个新的名字,则填入符号表中去。在编译的过程中遇到对某个符号的使用,编译器要检索符号表,检查该符号是否已经定义,并按照符号表中的定义来使用符号。 符号表中存储的是与符号相关的属性。这些属性主要有: 符号的名字(Name) 符号的种类(kind),例如,符号可以分为表示类型的符号,表示方法的符号,表示变量的符号 符号的类型(ty pe),例如,整型,无符号整型,单精度浮点型,布尔型,指针类型,数组类型等等 对于不同种类和类型的符号有着该种类和类型特有的信息,例如,对于方法,符号表要存储和它相...