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;
};