PL/0简单编译系统(三)

符号表管理

符号表是编译过程中编译程序用来记录源程序中的各种名字(即标识符)的特性信息的表格,符号表的每一个登记项将填入名字标识符以及该名字相关联的一些信息,这些信息将全面地反映各个符号的属性及他们在编译过程中的特征。

符号表结构

同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 查找当前层所在的过程

词法分析
符号表管理
语法和语义分析
Pcode生成
出错管理

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容