符号表管理
符号表是编译过程中编译程序用来记录源程序中的各种名字(即标识符)的特性信息的表格,符号表的每一个登记项将填入名字标识符以及该名字相关联的一些信息,这些信息将全面地反映各个符号的属性及他们在编译过程中的特征。
符号表结构
同token一样,我们需要为符号表项建立特定的结构,方便进行管理。
public class PerSymbol {
private int type; //表示常量、变量或过程
private int value; //表示常量或变量的值
private int level; //嵌套层次
private int address; //相对于所在嵌套过程基地址的地址
private int size; //表示常量,变量,过程所占的大小(这一项其实默认为0, 并没有用到)
private String name; //变量、常量或过程名
}
符号表管理
为了更好地管理符号表,可以抽象出一些接口供调用
函数名 | 功能 |
---|---|
enterConst | 向符号表中插入常量 |
enterVar | 向符号表中插入变量 |
enterProc | 向符号表中插入过程 |
isNowExists | 在符号表当前层查找变量是否存在 |
isPreExists | 在符号表之前层查找符号是否存在 |
getSymbol | 按名称查找变量 |
getLevelProc | 查找当前层所在的过程 |
网友评论