📄 symbol.java
字号:
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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -