package java_cup.runtime; /** This class represents a (terminal or non-terminal) symbol that, among * other things can be placed on the parse stack. Symbols are used to * keep track of state on the parse stack. The symbol currently on top * of the stack contains the current state in the parse_state field. * In addition to the parse_state field, symbols also maintain a record * of the symbol number that they represent in the sym field. Finally, * symbols are used contain to any attributes used by semantic action (this * is done via fields added in subclasses -- see for example, int_token and * str_token). * * @see java_cup.runtime.token * @see java_cup.runtime.int_token * @see java_cup.runtime.str_token * @version last updated: 11/25/95 * @author Scott Hudson */ public class symbol { /** Full constructor. */ public symbol(int sym_num, int state) { sym = sym_num; parse_state = state; } /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/ /** Constructor without a known state. */ public symbol(int sym_num) { this(sym_num, -1); } /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/ /** 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; };