① 符号名 语言中的一个标识符可以是一个变量的名字、一个函数的名字或一个过程的名字。每个标识符通常由若干个字符(非空格字符)组成的字符串来表达。符号表中设置一个符号名域,存放该标识符,该域通常就是符号表的关键字域。通常在语言程序中标识符字符串是一个变量、函数或过程的唯一标志,因此在符号表中符号名作为表项之间的唯一区别一般不允许重名。从而该符号名与它在符号表中的位置建立起一一对应之关系,使得我们可以用一个符号在表中的位置(通常是一个整数)来替换该符号名。通常把一个标识符在符号表中的位置的整数值称之谓该标识符的内部代码。在经过分析处理的语言程序中标识符不再是一个字符串而是一个整数值,这不但便于识别比较而且缩短了表达的长度。 根据语言的定义,程序中出现的重名标识符定义将按照该标识符在程序中的作用域和可视性规则进行相应的处理。而在符号表运行过程中,表中的标识符名始终是唯一的标志。在一些允许操作重载(operator over load)的语言中,函数名、过程名是可以重名的,对于这类重载的标识符要通过它们的参数个数和类型以及函数返回值类型来区别,以达到它们在符号表中的唯一性。 |