美文网首页
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简单编译系统(三)

    符号表管理 符号表是编译过程中编译程序用来记录源程序中的各种名字(即标识符)的特性信息的表格,符号表的每一个登记项...

  • PL/0简单编译系统(一)

    上文中我们介绍了PL/0的文法,接下来我们将介绍一个完整的编译系统各个部分~ 编译系统介绍 一个经典的编译程序一般...

  • PL/0简单编译系统(二)

    词法分析 词法分析又称词法分析器或者扫描器,是编译程序的基本子程序之一。本项目采用手工方式设计并实现词法分析程序。...

  • PL/0简单编译系统(四)

    语法分析和语义分析 由于本项目使用的是递归下降子程序法,对每一个PL/0中的语法成分都进行了分析,并单独编写为一个...

  • PL/0简单编译系统(零)

    本学期修了《编译原理》这门课。课程大作业是实现一个PL/0编译器。接下来将记录在实现过程中的心得、遇到的问题和解决...

  • PL/0简单编译系统(六)

    出错管理 在编译过程中,既可能出现语法错误,也可能出现语义错误(如变量未声明等)。本项目将错误分为24类,如下表所...

  • PL/0简单编译系统(五)

    Pcode生成 P-code 语言是一种栈式机的语言。此类栈式机没有累加器和通用寄存器,有一个栈式存储器,有四个控...

  • OLLVM in Android Studio

    0x01 Ollvm编译 系统: macos 10.15.6 在之前的macos系统上,编译ollvm还是比较流畅...

  • Pl0编译器源码阅读

    写在前面 其实这个是我的编译原理一次作业的草稿,也是第一次阅读编译器的源码,虽然比较简单,但是也是第一次,分享一下...

  • 递归算法:0/1背包问题

    1、环境配置: 系统:win10 编程语言:C++ 编译器:DevC++ 2、问题描述: 简单的0/1背包问题:设...

网友评论

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

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