1:  package compiler;
   2:   
   3:  /**
   4:   * 采用全局变量sym来存储符号码,并用全局变量id和num来传递语义值
   5:   *
   6:   * @author jiangnan
   7:   *
   8:   */
   9:  public class Symbol {
  10:   
  11:      //各类符号码
  12:      public static final int nul = 0;                  //NULL
  13:      public static final int ident = 1;               //标识符
  14:      public static final int plus = 2;                //加号+
  15:      public static final int minus = 3;              //减号-
  16:      public static final int mul = 4;                 //乘号*
  17:      public static final int div = 5;                  //除号/
  18:      public static final int oddsym = 6;           //odd
  19:      public static final int number = 7;           //数字
  20:      public static final int eql = 8;                  //等于号=(equal)
  21:      public static final int neq = 9;                 //不等于<>(not equal)
  22:      public static final int lss = 10;                 //小于<(less)
  23:      public static final int geq = 11;                 //大于等于>=(greater or equal)
  24:      public static final int gtr = 12;                //大于>(greater)
  25:      public static final int leq = 13;                //小于等于<=(less or equal)
  26:      public static final int lparen = 14;            //左括号(
  27:      public static final int rparen = 15;           //右括号 ) 
  28:      public static final int comma = 16;           //逗号,
  29:      public static final int semicolon = 17;       //分号;
  30:      public static final int peroid = 18;            //句号.
  31:      public static final int becomes = 19;         //赋值符号 :=
  32:      public static final int beginsym = 20;        //开始符号begin
  33:      public static final int endsym = 21;           //结束符号end
  34:      public static final int ifsym = 22;             //if
  35:      public static final int thensym = 23;         //then
  36:      public static final int whilesym = 24;        //while
  37:      public static final int writesym = 25;        //write
  38:      public static final int readsym = 26;         //read
  39:      public static final int dosym = 27;            //do
  40:      public static final int callsym = 28;          //call
  41:      public static final int constsym = 29;       //const
  42:      public static final int varsym = 30;           //var
  43:      public static final int procsym = 31;         //procedure
  44:      public static final int elsesym = 32;
  45:      public static final int repeatsym=33;
  46:      public static final int untilsym=34;
  47:      
  48:      //符号码的个数
  49:      public static final int symnum = 35;
  50:   
  51:      //设置保留字名字,按照字母顺序,便于折半查找
  52:      public static final String[] word = new String[]{
  53:          "begin","call" , "const"    , "do" ,
  54:          "else"  ,"end" ,"if"   , "odd", 
  55:          "procedure", "read","repeat","then",
  56:          "until" , "var", "while"    , "write" };
  57:      //保留字对应的符号值
  58:      public static final int[] wsym = new int[]{
  59:          beginsym, callsym, constsym, dosym,
  60:          elsesym, endsym, ifsym,oddsym, 
  61:          procsym,readsym,repeatsym, thensym,
  62:          untilsym ,varsym,whilesym, writesym};
  63:   
  64:      //符号码
  65:      public int symtype;
  66:      //标志符号名字;
  67:      public String id;
  68:      //数值的大小
  69:      public int num;
  70:   
  71:      /**
  72:       * 构造具有特定符号码的符号
  73:       *
  74:       * @param stype
  75:       */
  76:      public Symbol(int stype) {
  77:          symtype = stype;
  78:          id = "";
  79:          num = 0;
  80:      }
  81:  }

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

PL/0编译器(java version) – Symbol.java的更多相关文章

  1. PL/0编译器(java version) - MainFrame.java

    1: /* 2: * To change this license header, choose License Headers in Project Properties. 3: * To chan ...

  2. PL/0编译器实践---后记

    花了几天时间,把清华版的<编译原理>一书中的PL/0编译器实践了一遍.颇有收获,记录如下: 理解代码的技巧,如何理解一份代码,比如这个程序,其逻辑相对于一般程序就比较复杂了,如何翻译,虚拟 ...

  3. PL/0编译器(java version)–Praser.java

    1: package compiler; 2:   3: import java.io.IOException; 4: import java.util.BitSet; 5:   6: /** 7: ...

  4. PL/0编译器(java version) – Scanner.java

    1: package compiler; 2:   3: import java.io.BufferedReader; 4: import java.io.FileNotFoundException; ...

  5. PL/0编译器(java version) – SymbolTable.java

    1: package compiler; 2: //竟然没有对符号表检查大小,会溢出的. 3:   4: import java.io.IOException; 5:   6: public clas ...

  6. PL/0编译器(java version)–PL0.java

    1: package compiler; 2:   3: import java.io.BufferedWriter; 4: import java.io.FileWriter; 5:   6: /* ...

  7. PL/0编译器(java version) - Interpreter.java

    1: package compiler; 2:   3: import java.io.BufferedReader; 4: import java.io.BufferedWriter; 5: imp ...

  8. PL/0编译器(java version) - Err.java

    1: package compiler; 2:   3: import java.io.BufferedWriter; 4:   5: public class Err { 6:   7: publi ...

  9. PL/0编译器(java version)–Pcode.java

    1: package compiler; 2:   3: /** 4: * //虚拟机指令 5: * 6: * @author jiangnan 7: * 8: */ 9: public class ...

随机推荐

  1. 高性能JavaScript DOM编程

    我们知道,DOM是用于操作XML和HTML文档的应用程序接口,用脚本进行DOM操作的代价很昂贵.有个贴切的比喻,把DOM和JavaScript(这里指ECMScript)各自想象为一个岛屿,它们之间用 ...

  2. Android闹钟设置的解决方案

    Android设置闹钟并不像IOS那样这么简单,做过Android设置闹钟的开发者都知道里面的坑有多深.下面记录一下,我解决Android闹钟设置的解决方案. 主要问题 API19开始AlarmMan ...

  3. Tensorflow学习笔记4:分布式Tensorflow

    简介 Tensorflow API提供了Cluster.Server以及Supervisor来支持模型的分布式训练. 关于Tensorflow的分布式训练介绍可以参考Distributed Tenso ...

  4. Linux下网络流量实时监控工具

    Linux下网络流量实时监控工具大全 在工作中发现,经常因为业务的原因,需要即时了解某台服务器网卡的流量,虽然公司也部署了cacti软件,但cacti是五分钟统计的,没有即时性,并且有时候打开监控页面 ...

  5. 同态加密-Homomorphic encryption

    同态加密(Homomorphic encryption)是一种加密形式,它允许人们对密文进行特定的代数运算得到仍然是加密的结果,将其解密所得到的结果与对明文进行同样的运算结果一样.换言之,这项技术令人 ...

  6. android开发------响应用户事件

    今天的内容有点简单,不难,就是为按钮添加onClick事件.  新知识点: Intent类的简单使用 startActivity方法 一般事件都由按钮触发,现在我们要实现的是当用户点击按钮的时候,启动 ...

  7. 获取 AlertDialog自定义的布局 的控件

    AlertDialog自定义的布局 效果图: 创建dialog方法的代码如下: 1 LayoutInflater inflater = getLayoutInflater(); 2 View layo ...

  8. import random 模块导入

    import random print(random.random()) #浮点数值 print(random.randint(1,2))#循环显示1,2 print(random.randrange ...

  9. Android NestedScrolling与分发机制 二

    上篇转载了 Android:30分钟弄明白Touch事件分发机制 这篇转载 Android中的dispatchTouchEvent().onInterceptTouchEvent()和onTouchE ...

  10. 如何用linux命令查看nginx是否在正常运行

      有时想知道nigix是否在正常运行,需要用linux命令查看nginx运行情况. 执行命令: ps -A | grep nginx  如果返回结果的话,说明有nginx在运行,服务已经启动. 如果 ...