symbol.java

来自「jflex-1.4.zip for the compiler construct」· Java 代码 · 共 106 行

JAVA
106
字号
package java_cup.runtime;/** * Defines the Symbol class, which is used to represent all terminals * and nonterminals while parsing.  The lexer should pass CUP Symbols  * and CUP returns a Symbol. * * @version last updated: 7/3/96 * @author  Frank Flannery *//* ****************************************************************  Class Symbol  what the parser expects to receive from the lexer.   the token is identified as follows:  sym:    the symbol type  parse_state: the parse state.  value:  is the lexical value of type Object  left :  is the left position in the original input file  right:  is the right position in the original input file******************************************************************/public class Symbol {/*******************************  Constructor for l,r values *******************************/  public Symbol(int id, int l, int r, Object o) {    this(id);    left = l;    right = r;    value = o;  }/*******************************  Constructor for no l,r values********************************/  public Symbol(int id, Object o) {    this(id, -1, -1, o);  }/*****************************  Constructor for no value  ***************************/  public Symbol(int id, int l, int r) {    this(id, l, r, null);  }/***********************************  Constructor for no value or l,r***********************************/  public Symbol(int sym_num) {    this(sym_num, -1);    left = -1;    right = -1;    value = null;  }/***********************************  Constructor to give a start state***********************************/  Symbol(int sym_num, int state)    {      sym = sym_num;      parse_state = state;    }/*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/  /** The symbol number of the terminal or non terminal being represented */  public int sym;  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/  /** The parse state to be recorded on the parse stack with this symbol.   *  This field is for the convenience of the parser and shouldn't be    *  modified except by the parser.    */  public int parse_state;  /** This allows us to catch some errors caused by scanners recycling   *  symbols.  For the use of the parser only. [CSA, 23-Jul-1999] */  boolean used_by_parser = false;/*******************************  The data passed to parser *******************************/  public int left, right;  public Object value;  /*****************************    Printing this token out. (Override for pretty-print).    ****************************/  public String toString() { return "#"+sym; }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?