美文网首页
PL/0简单编译系统(三)

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

作者: Shiyi001 | 来源:发表于2017-01-17 15:39 被阅读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生成
    出错管理

    相关文章

      网友评论

          本文标题:PL/0简单编译系统(三)

          本文链接:https://www.haomeiwen.com/subject/qooubttx.html