在编译程序中符号表用来存放语言程序中出现的有关标识符的属性信息,这些信息集中反映了标识符的语义特征属性。在词法分析及语法在分析过程中不断积累和更新表中的信息,并在词法分析到代码生成的各阶段,按各自的需要从表中获取不同的属性信息。不论编译策略是否分趟,符号表的作用和地位是完全一致的。
1. 收集符号属性:编译程序扫描说明部分收集有关标识符的属性,并在符号表中建立符号的相应属性信息。
2. 上下文语义的合法性检查的依据:同一标识符可能出现在程序的不同地方。该符号的属性是在这些不同情况下收集的。特别是在多趟编译及程序分段编译(在PASCAL及C中以文件为单位)的情况下,更需检查标识符属性在上下文中的一致性和合法性。通过符号表中属性记录可进行相应上下文的语义检查。
3. 作为目标代码生成阶段地址分配的依据:每个符号变量在目标代码生成时需要确定其在存储分配的位置(主要是相对位置)。语言程序中,符号变量由它被定义的存储类别(如在C、FORTRAN语言中)或被定义的位置(如分程序结构的位置)来确定。首先要确定其被分配的区域。
网友评论