Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: java_cup/runtime/Symbol.java


1   package java_cup.runtime;
2   
3   /**
4    * Defines the Symbol class, which is used to represent all terminals
5    * and nonterminals while parsing.  The lexer should pass CUP Symbols 
6    * and CUP returns a Symbol.
7    *
8    * @version last updated: 7/3/96
9    * @author  Frank Flannery
10   */
11  
12  /* ****************************************************************
13    Class Symbol
14    what the parser expects to receive from the lexer. 
15    the token is identified as follows:
16    sym:    the symbol type
17    parse_state: the parse state.
18    value:  is the lexical value of type Object
19    left :  is the left position in the original input file
20    right:  is the right position in the original input file
21  ******************************************************************/
22  
23  public class Symbol {
24  
25  /*******************************
26    Constructor for l,r values
27   *******************************/
28  
29    public Symbol(int id, int l, int r, Object o) {
30      this(id);
31      left = l;
32      right = r;
33      value = o;
34    }
35  
36  /*******************************
37    Constructor for no l,r values
38  ********************************/
39  
40    public Symbol(int id, Object o) {
41      this(id);
42      left = -1;
43      right = -1;
44      value = o;
45    }
46  
47  /*****************************
48    Constructor for no value
49    ***************************/
50  
51    public Symbol(int sym_num, int l, int r) {
52      sym = sym_num;
53      left = l;
54      right = r;
55      value = null;
56    }
57  
58  /***********************************
59    Constructor for no value or l,r
60  ***********************************/
61  
62    public Symbol(int sym_num) {
63      this(sym_num, -1);
64      left = -1;
65      right = -1;
66      value = null;
67    }
68  
69  /***********************************
70    Constructor to give a start state
71  ***********************************/
72    public Symbol(int sym_num, int state)
73      {
74        sym = sym_num;
75        parse_state = state;
76      }
77  
78  /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
79  
80    /** The symbol number of the terminal or non terminal being represented */
81    public int sym;
82  
83    /*. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .*/
84  
85    /** The parse state to be recorded on the parse stack with this symbol.
86     *  This field is for the convenience of the parser and shouldn't be 
87     *  modified except by the parser. 
88     */
89    public int parse_state;
90    /** This allows us to catch some errors caused by scanners recycling
91     *  symbols.  For the use of the parser only. [CSA, 23-Jul-1999] */
92    boolean used_by_parser = false;
93  
94  /*******************************
95    The data passed to parser
96   *******************************/
97  
98    public int left, right;
99    public Object value;
100 
101   /*****************************
102     Printing this token out. (Override for pretty-print).
103     ****************************/
104   public String toString() { return "#"+sym; }
105 }
106 
107 
108 
109 
110 
111