Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
package java_cup.runtime;
import edu.mit.csail.sdg.alloy4.Pos;
/**
* 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
* xleft: is the left position Object in the original input file xright: is the
* left position Object in the original input file
******************************************************************/
public class Symbol {
// TUM 20060327: Added new Constructor to provide more flexible way
// for location handling
/*******************************
*******************************/
public Symbol(int id, Symbol left, Symbol right, Object o) {
this(id, left.left, right.right, o);
}
public Symbol(int id, Symbol left, Symbol right) {
this(id, left.left, right.right);
}
/*******************************
* 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, Pos pos, Object o) {
this(id, -1, -1, o);
this.pos = pos;
}
/*****************************
* 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;
}
/***********************************
* 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 Pos pos;
public int left, right;
public Object value;
/*****************************
* Printing this token out. (Override for pretty-print).
****************************/
@Override
public String toString() {
return "#" + sym;
}
}