Accidentally checked this file in...removing it now.
[repair.git] / Repair / RepairCompiler / java_cup / parser.java
1
2 //----------------------------------------------------
3 // The following code was generated by CUP v0.10k
4 // Sun Jul 25 13:35:26 EDT 1999
5 //----------------------------------------------------
6
7 package java_cup;
8
9 import java_cup.runtime.*;
10 import java.util.Hashtable;
11
12 /** CUP v0.10k generated parser.
13   * @version Sun Jul 25 13:35:26 EDT 1999
14   */
15 public class parser extends java_cup.runtime.lr_parser {
16
17   /** Default constructor. */
18   public parser() {super();}
19
20   /** Constructor which sets the default scanner. */
21   public parser(java_cup.runtime.Scanner s) {super(s);}
22
23   /** Production table. */
24   protected static final short _production_table[][] = 
25     unpackFromStrings(new String[] {
26     "\000\153\000\002\002\004\000\002\055\002\000\002\003" +
27     "\012\000\002\003\007\000\002\056\002\000\002\004\006" +
28     "\000\002\004\003\000\002\005\004\000\002\005\003\000" +
29     "\002\057\002\000\002\020\006\000\002\010\003\000\002" +
30     "\010\003\000\002\010\003\000\002\010\003\000\002\007" +
31     "\002\000\002\007\004\000\002\006\006\000\002\013\006" +
32     "\000\002\022\006\000\002\023\006\000\002\014\004\000" +
33     "\002\014\003\000\002\024\005\000\002\024\004\000\002" +
34     "\024\005\000\002\024\004\000\002\060\002\000\002\024" +
35     "\006\000\002\061\002\000\002\024\006\000\002\062\002" +
36     "\000\002\044\005\000\002\063\002\000\002\045\005\000" +
37     "\002\026\005\000\002\026\003\000\002\027\005\000\002" +
38     "\027\003\000\002\040\003\000\002\040\003\000\002\043" +
39     "\004\000\002\043\003\000\002\064\002\000\002\041\007" +
40     "\000\002\065\002\000\002\041\007\000\002\066\002\000" +
41     "\002\041\007\000\002\042\005\000\002\042\003\000\002" +
42     "\052\003\000\002\053\003\000\002\067\002\000\002\015" +
43     "\007\000\002\015\003\000\002\016\004\000\002\016\003" +
44     "\000\002\070\002\000\002\071\002\000\002\030\010\000" +
45     "\002\072\002\000\002\030\005\000\002\035\005\000\002" +
46     "\035\003\000\002\036\005\000\002\036\003\000\002\031" +
47     "\004\000\002\031\003\000\002\032\004\000\002\032\003" +
48     "\000\002\051\004\000\002\051\003\000\002\017\005\000" +
49     "\002\017\003\000\002\021\005\000\002\021\003\000\002" +
50     "\025\003\000\002\025\005\000\002\033\003\000\002\034" +
51     "\003\000\002\046\003\000\002\046\003\000\002\047\003" +
52     "\000\002\047\003\000\002\050\003\000\002\054\003\000" +
53     "\002\054\003\000\002\054\003\000\002\054\003\000\002" +
54     "\054\003\000\002\054\003\000\002\054\003\000\002\054" +
55     "\003\000\002\054\003\000\002\054\003\000\002\054\003" +
56     "\000\002\054\003\000\002\054\003\000\002\054\003\000" +
57     "\002\054\003\000\002\054\003\000\002\012\004\000\002" +
58     "\012\003\000\002\011\002\000\002\011\003\000\002\037" +
59     "\002" });
60
61   /** Access to production table. */
62   public short[][] production_table() {return _production_table;}
63
64   /** Parse-action table. */
65   protected static final short[][] _action_table = 
66     unpackFromStrings(new String[] {
67     "\000\247\000\026\003\006\004\000\005\000\007\000\010" +
68     "\000\011\000\012\000\013\000\014\000\035\000\001\002" +
69     "\000\004\002\251\001\002\000\024\004\200\005\uff97\007" +
70     "\uff97\010\uff97\011\uff97\012\uff97\013\uff97\014\uff97\035\uff97" +
71     "\001\002\000\010\011\007\012\012\035\014\001\002\000" +
72     "\042\003\163\006\026\007\027\010\040\011\036\012\022" +
73     "\013\042\014\030\015\017\016\015\026\033\027\023\030" +
74     "\035\031\041\035\025\036\160\001\002\000\020\003\uffeb" +
75     "\011\uffeb\012\uffeb\016\uffeb\026\uffeb\035\uffeb\036\uffeb\001" +
76     "\002\000\020\003\uff97\011\007\012\012\016\uff97\026\065" +
77     "\035\014\036\uff97\001\002\000\004\011\061\001\002\000" +
78     "\042\003\034\006\026\007\027\010\040\011\036\012\022" +
79     "\013\042\014\030\015\017\016\015\026\033\027\023\030" +
80     "\035\031\041\035\025\036\016\001\002\000\042\003\uff9a" +
81     "\006\uff9a\007\uff9a\010\uff9a\011\uff9a\012\uff9a\013\uff9a\014" +
82     "\uff9a\015\uff9a\016\uff9a\026\uff9a\027\uff9a\030\uff9a\031\uff9a" +
83     "\035\uff9a\036\uff9a\001\002\000\022\003\uffa1\017\uffa1\022" +
84     "\uffa1\025\uffa1\032\uffa1\033\uffa1\036\uffa1\037\uffa1\001\002" +
85     "\000\014\017\uffb1\020\uffb1\022\uffab\033\uffab\036\uffab\001" +
86     "\002\000\022\003\uffa2\017\uffa2\022\uffa2\025\uffa2\032\uffa2" +
87     "\033\uffa2\036\uffa2\037\uffa2\001\002\000\006\017\uffe0\020" +
88     "\055\001\002\000\010\022\051\033\uffb4\036\uffb4\001\002" +
89     "\000\022\003\uffa6\017\uffa6\022\uffa6\025\uffa6\032\uffa6\033" +
90     "\uffa6\036\uffa6\037\uffa6\001\002\000\022\003\uff9f\017\uff9f" +
91     "\022\uff9f\025\uff9f\032\uff9f\033\uff9f\036\uff9f\037\uff9f\001" +
92     "\002\000\006\033\047\036\045\001\002\000\022\003\uffa5" +
93     "\017\uffa5\022\uffa5\025\uffa5\032\uffa5\033\uffa5\036\uffa5\037" +
94     "\uffa5\001\002\000\022\003\uffaa\017\uffaa\022\uffaa\025\uffaa" +
95     "\032\uffaa\033\uffaa\036\uffaa\037\uffaa\001\002\000\022\003" +
96     "\uffa9\017\uffa9\022\uffa9\025\uffa9\032\uffa9\033\uffa9\036\uffa9" +
97     "\037\uffa9\001\002\000\022\003\uffa3\017\uffa3\022\uffa3\025" +
98     "\uffa3\032\uffa3\033\uffa3\036\uffa3\037\uffa3\001\002\000\012" +
99     "\017\uffb7\022\uffb7\033\uffb7\036\uffb7\001\002\000\020\003" +
100     "\uffe7\011\uffe7\012\uffe7\016\uffe7\026\uffe7\035\uffe7\036\uffe7" +
101     "\001\002\000\022\003\uffa0\017\uffa0\022\uffa0\025\uffa0\032" +
102     "\uffa0\033\uffa0\036\uffa0\037\uffa0\001\002\000\012\017\uffe4" +
103     "\022\uff9c\033\uff9c\036\uff9c\001\002\000\022\003\uff9e\017" +
104     "\uff9e\022\uff9e\025\uff9e\032\uff9e\033\uff9e\036\uff9e\037\uff9e" +
105     "\001\002\000\022\003\uffa7\017\uffa7\022\uffa7\025\uffa7\032" +
106     "\uffa7\033\uffa7\036\uffa7\037\uffa7\001\002\000\006\017\uffdb" +
107     "\020\uffdb\001\002\000\022\003\uffa8\017\uffa8\022\uffa8\025" +
108     "\uffa8\032\uffa8\033\uffa8\036\uffa8\037\uffa8\001\002\000\022" +
109     "\003\uff9d\017\uff9d\022\uff9d\025\uff9d\032\uff9d\033\uff9d\036" +
110     "\uff9d\037\uff9d\001\002\000\022\003\uffa4\017\uffa4\022\uffa4" +
111     "\025\uffa4\032\uffa4\033\uffa4\036\uffa4\037\uffa4\001\002\000" +
112     "\004\017\044\001\002\000\020\003\uffe3\011\uffe3\012\uffe3" +
113     "\016\uffe3\026\uffe3\035\uffe3\036\uffe3\001\002\000\006\017" +
114     "\uffb1\020\uffb1\001\002\000\020\003\uffe8\011\uffe8\012\uffe8" +
115     "\016\uffe8\026\uffe8\035\uffe8\036\uffe8\001\002\000\004\034" +
116     "\050\001\002\000\006\033\uffb3\036\uffb3\001\002\000\042" +
117     "\003\054\006\026\007\027\010\040\011\036\012\022\013" +
118     "\042\014\030\015\017\016\015\026\033\027\023\030\035" +
119     "\031\041\035\025\036\053\001\002\000\012\017\uffb8\022" +
120     "\uffb8\033\uffb8\036\uffb8\001\002\000\022\003\uffab\017\uffab" +
121     "\022\uffab\025\uffab\032\uffab\033\uffab\036\uffab\037\uffab\001" +
122     "\002\000\022\003\uff9c\017\uff9c\022\uff9c\025\uff9c\032\uff9c" +
123     "\033\uff9c\036\uff9c\037\uff9c\001\002\000\004\036\045\001" +
124     "\002\000\004\017\057\001\002\000\020\003\uffdf\011\uffdf" +
125     "\012\uffdf\016\uffdf\026\uffdf\035\uffdf\036\uffdf\001\002\000" +
126     "\006\017\uffdc\020\uffdc\001\002\000\042\003\uff9b\006\uff9b" +
127     "\007\uff9b\010\uff9b\011\uff9b\012\uff9b\013\uff9b\014\uff9b\015" +
128     "\uff9b\016\uff9b\026\uff9b\027\uff9b\030\uff9b\031\uff9b\035\uff9b" +
129     "\036\uff9b\001\002\000\010\003\uff97\016\116\036\uff97\001" +
130     "\002\000\012\003\uffda\016\uffda\026\065\036\uffda\001\002" +
131     "\000\010\003\uffd9\016\uffd9\036\uffd9\001\002\000\010\027" +
132     "\071\030\072\031\070\001\002\000\020\003\uffec\011\uffec" +
133     "\012\uffec\016\uffec\026\uffec\035\uffec\036\uffec\001\002\000" +
134     "\012\003\uffd7\016\uffd7\026\uffd7\036\uffd7\001\002\000\006" +
135     "\003\uffd2\036\uffd2\001\002\000\006\003\uffd6\036\uffd6\001" +
136     "\002\000\006\003\uffd4\036\uffd4\001\002\000\006\003\077" +
137     "\036\074\001\002\000\022\003\uffae\017\uffae\020\uffae\023" +
138     "\uffae\025\uffae\032\uffae\036\uffae\037\uffae\001\002\000\010" +
139     "\017\uffcd\020\uffcd\025\uffcd\001\002\000\006\017\uffce\020" +
140     "\uffce\001\002\000\022\003\uffad\017\uffad\020\uffad\023\uffad" +
141     "\025\uffad\032\uffad\036\uffad\037\uffad\001\002\000\006\017" +
142     "\102\020\103\001\002\000\006\017\uffcf\020\uffcf\001\002" +
143     "\000\012\003\uffd3\016\uffd3\026\uffd3\036\uffd3\001\002\000" +
144     "\006\003\077\036\074\001\002\000\006\017\uffd0\020\uffd0" +
145     "\001\002\000\006\003\077\036\074\001\002\000\006\017" +
146     "\107\020\103\001\002\000\012\003\uffd5\016\uffd5\026\uffd5" +
147     "\036\uffd5\001\002\000\006\003\077\036\074\001\002\000" +
148     "\006\017\112\020\103\001\002\000\012\003\uffd1\016\uffd1" +
149     "\026\uffd1\036\uffd1\001\002\000\012\003\uffd8\016\uffd8\026" +
150     "\uffd8\036\uffd8\001\002\000\006\003\uffca\036\uffca\001\002" +
151     "\000\006\003\126\036\120\001\002\000\004\015\117\001" +
152     "\002\000\006\003\122\036\120\001\002\000\006\017\uffb0" +
153     "\024\uffb0\001\002\000\004\017\uffcc\001\002\000\004\017" +
154     "\uffaf\001\002\000\004\017\124\001\002\000\006\003\uffcb" +
155     "\036\uffcb\001\002\000\004\024\uffc7\001\002\000\006\017" +
156     "\uffc4\024\uffaf\001\002\000\010\002\ufffe\003\126\036\120" +
157     "\001\002\000\010\002\uffc8\003\uffc8\036\uffc8\001\002\000" +
158     "\010\002\uffc9\003\uffc9\036\uffc9\001\002\000\004\017\133" +
159     "\001\002\000\010\002\uffc3\003\uffc3\036\uffc3\001\002\000" +
160     "\004\024\135\001\002\000\016\003\uffc6\017\uffc6\025\uffc6" +
161     "\032\uffc6\036\uffc6\037\uffc6\001\002\000\016\003\uff97\017" +
162     "\uff97\025\uff97\032\uff97\036\uff97\037\uff97\001\002\000\016" +
163     "\003\uffbd\017\uffbd\025\uffbd\032\uffbd\036\uffbd\037\uffbd\001" +
164     "\002\000\016\003\077\017\uffbf\025\uffbf\032\147\036\074" +
165     "\037\146\001\002\000\006\017\uffc1\025\uffc1\001\002\000" +
166     "\006\017\143\025\144\001\002\000\010\002\uffc5\003\uffc5" +
167     "\036\uffc5\001\002\000\016\003\uff97\017\uff97\025\uff97\032" +
168     "\uff97\036\uff97\037\uff97\001\002\000\006\017\uffc2\025\uffc2" +
169     "\001\002\000\016\003\uffbb\017\uffbb\025\uffbb\032\uffbb\036" +
170     "\uffbb\037\uffbb\001\002\000\006\003\077\036\074\001\002" +
171     "\000\020\003\uff97\017\uff97\023\154\025\uff97\032\uff97\036" +
172     "\uff97\037\uff97\001\002\000\016\003\uffbe\017\uffbe\025\uffbe" +
173     "\032\uffbe\036\uffbe\037\uffbe\001\002\000\016\003\uffb9\017" +
174     "\uffb9\025\uffb9\032\uffb9\036\uffb9\037\uffb9\001\002\000\016" +
175     "\003\uffbc\017\uffbc\025\uffbc\032\uffbc\036\uffbc\037\uffbc\001" +
176     "\002\000\042\003\054\006\026\007\027\010\040\011\036" +
177     "\012\022\013\042\014\030\015\017\016\015\026\033\027" +
178     "\023\030\035\031\041\035\025\036\053\001\002\000\016" +
179     "\003\uffba\017\uffba\025\uffba\032\uffba\036\uffba\037\uffba\001" +
180     "\002\000\016\003\uffac\017\uffac\025\uffac\032\uffac\036\uffac" +
181     "\037\uffac\001\002\000\006\017\uffc0\025\uffc0\001\002\000" +
182     "\014\017\uffb2\020\uffb2\022\uffab\033\uffab\036\uffab\001\002" +
183     "\000\006\033\047\036\170\001\002\000\006\017\uffdd\020" +
184     "\uffdd\001\002\000\012\017\uffe6\022\uff9c\033\uff9c\036\uff9c" +
185     "\001\002\000\020\003\uffe9\011\uffe9\012\uffe9\016\uffe9\026" +
186     "\uffe9\035\uffe9\036\uffe9\001\002\000\006\017\uffe2\020\167" +
187     "\001\002\000\004\017\172\001\002\000\004\036\170\001" +
188     "\002\000\006\017\uffb2\020\uffb2\001\002\000\006\017\uffde" +
189     "\020\uffde\001\002\000\020\003\uffe1\011\uffe1\012\uffe1\016" +
190     "\uffe1\026\uffe1\035\uffe1\036\uffe1\001\002\000\004\017\174" +
191     "\001\002\000\020\003\uffe5\011\uffe5\012\uffe5\016\uffe5\026" +
192     "\uffe5\035\uffe5\036\uffe5\001\002\000\020\003\uffea\011\uffea" +
193     "\012\uffea\016\uffea\026\uffea\035\uffea\036\uffea\001\002\000" +
194     "\022\005\ufffb\007\ufffb\010\ufffb\011\ufffb\012\ufffb\013\ufffb" +
195     "\014\ufffb\035\ufffb\001\002\000\022\005\uff97\007\uff97\010" +
196     "\uff97\011\uff97\012\uff97\013\uff97\014\uff97\035\uff97\001\002" +
197     "\000\042\003\054\006\026\007\027\010\040\011\036\012" +
198     "\022\013\042\014\030\015\017\016\015\026\033\027\023" +
199     "\030\035\031\041\035\025\036\053\001\002\000\006\017" +
200     "\ufffd\022\051\001\002\000\004\017\203\001\002\000\022" +
201     "\005\ufffc\007\ufffc\010\ufffc\011\ufffc\012\ufffc\013\ufffc\014" +
202     "\ufffc\035\ufffc\001\002\000\022\005\210\007\ufff2\010\ufff2" +
203     "\011\ufff2\012\ufff2\013\ufff2\014\ufff2\035\ufff2\001\002\000" +
204     "\022\005\ufff9\007\ufff9\010\ufff9\011\ufff9\012\ufff9\013\ufff9" +
205     "\014\ufff9\035\ufff9\001\002\000\020\007\223\010\224\011" +
206     "\007\012\012\013\227\014\225\035\014\001\002\000\022" +
207     "\005\ufffa\007\ufffa\010\ufffa\011\ufffa\012\ufffa\013\ufffa\014" +
208     "\ufffa\035\ufffa\001\002\000\042\003\054\006\026\007\027" +
209     "\010\040\011\036\012\022\013\042\014\030\015\017\016" +
210     "\015\026\033\027\023\030\035\031\041\035\025\036\053" +
211     "\001\002\000\006\017\uffb5\022\215\001\002\000\004\017" +
212     "\ufff8\001\002\000\004\017\214\001\002\000\022\005\ufff7" +
213     "\007\ufff7\010\ufff7\011\ufff7\012\ufff7\013\ufff7\014\ufff7\035" +
214     "\ufff7\001\002\000\044\003\054\006\026\007\027\010\040" +
215     "\011\036\012\022\013\042\014\030\015\017\016\015\021" +
216     "\216\026\033\027\023\030\035\031\041\035\025\036\053" +
217     "\001\002\000\004\017\uffb6\001\002\000\020\007\ufff3\010" +
218     "\ufff3\011\ufff3\012\ufff3\013\ufff3\014\ufff3\035\ufff3\001\002" +
219     "\000\020\007\ufff5\010\ufff5\011\ufff5\012\ufff5\013\ufff5\014" +
220     "\ufff5\035\ufff5\001\002\000\020\007\ufff1\010\ufff1\011\ufff1" +
221     "\012\ufff1\013\ufff1\014\ufff1\035\ufff1\001\002\000\020\007" +
222     "\ufff4\010\ufff4\011\ufff4\012\ufff4\013\ufff4\014\ufff4\035\ufff4" +
223     "\001\002\000\004\006\246\001\002\000\004\006\243\001" +
224     "\002\000\004\015\240\001\002\000\020\007\ufff6\010\ufff6" +
225     "\011\ufff6\012\ufff6\013\ufff6\014\ufff6\035\ufff6\001\002\000" +
226     "\004\015\234\001\002\000\020\003\uff97\011\007\012\012" +
227     "\016\uff97\026\065\035\014\036\uff97\001\002\000\010\003" +
228     "\uff97\016\116\036\uff97\001\002\000\006\003\126\036\120" +
229     "\001\002\000\010\002\uffff\003\126\036\120\001\002\000" +
230     "\004\037\235\001\002\000\022\007\uff99\010\uff99\011\uff99" +
231     "\012\uff99\013\uff99\014\uff99\017\236\035\uff99\001\002\000" +
232     "\020\007\uff98\010\uff98\011\uff98\012\uff98\013\uff98\014\uff98" +
233     "\035\uff98\001\002\000\020\007\uffee\010\uffee\011\uffee\012" +
234     "\uffee\013\uffee\014\uffee\035\uffee\001\002\000\004\037\241" +
235     "\001\002\000\022\007\uff99\010\uff99\011\uff99\012\uff99\013" +
236     "\uff99\014\uff99\017\236\035\uff99\001\002\000\020\007\uffed" +
237     "\010\uffed\011\uffed\012\uffed\013\uffed\014\uffed\035\uffed\001" +
238     "\002\000\004\037\244\001\002\000\022\007\uff99\010\uff99" +
239     "\011\uff99\012\uff99\013\uff99\014\uff99\017\236\035\uff99\001" +
240     "\002\000\020\007\uffef\010\uffef\011\uffef\012\uffef\013\uffef" +
241     "\014\uffef\035\uffef\001\002\000\004\037\247\001\002\000" +
242     "\022\007\uff99\010\uff99\011\uff99\012\uff99\013\uff99\014\uff99" +
243     "\017\236\035\uff99\001\002\000\020\007\ufff0\010\ufff0\011" +
244     "\ufff0\012\ufff0\013\ufff0\014\ufff0\035\ufff0\001\002\000\004" +
245     "\002\001\001\002" });
246
247   /** Access to parse-action table. */
248   public short[][] action_table() {return _action_table;}
249
250   /** <code>reduce_goto</code> table. */
251   protected static final short[][] _reduce_table = 
252     unpackFromStrings(new String[] {
253     "\000\247\000\006\003\003\055\004\001\001\000\002\001" +
254     "\001\000\006\004\176\037\175\001\001\000\010\012\012" +
255     "\014\010\024\007\001\001\000\016\017\020\025\160\026" +
256     "\164\033\161\044\163\054\030\001\001\000\002\001\001" +
257     "\000\016\012\012\024\065\037\063\040\061\041\066\043" +
258     "\062\001\001\000\002\001\001\000\016\017\020\025\023" +
259     "\027\017\034\036\045\031\054\030\001\001\000\002\001" +
260     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
261     "\000\004\063\055\001\001\000\002\001\001\000\002\001" +
262     "\001\000\002\001\001\000\010\027\017\034\036\045\045" +
263     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
264     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
265     "\000\002\001\001\000\004\061\042\001\001\000\002\001" +
266     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
267     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
268     "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
269     "\001\001\000\002\001\001\000\004\054\051\001\001\000" +
270     "\002\001\001\000\002\001\001\000\002\001\001\000\004" +
271     "\034\057\001\001\000\002\001\001\000\002\001\001\000" +
272     "\002\001\001\000\002\001\001\000\006\015\114\037\113" +
273     "\001\001\000\004\041\112\001\001\000\002\001\001\000" +
274     "\002\001\001\000\002\001\001\000\002\001\001\000\004" +
275     "\066\107\001\001\000\004\064\104\001\001\000\004\065" +
276     "\072\001\001\000\012\042\077\047\074\052\100\053\075" +
277     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
278     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
279     "\000\002\001\001\000\010\047\074\052\103\053\075\001" +
280     "\001\000\002\001\001\000\012\042\105\047\074\052\100" +
281     "\053\075\001\001\000\002\001\001\000\002\001\001\000" +
282     "\012\042\110\047\074\052\100\053\075\001\001\000\002" +
283     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
284     "\001\000\010\016\126\030\127\046\124\001\001\000\002" +
285     "\001\001\000\004\046\120\001\001\000\002\001\001\000" +
286     "\004\067\122\001\001\000\002\001\001\000\002\001\001" +
287     "\000\002\001\001\000\004\070\133\001\001\000\004\072" +
288     "\131\001\001\000\006\030\130\046\124\001\001\000\002" +
289     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
290     "\001\000\002\001\001\000\004\071\135\001\001\000\012" +
291     "\031\137\035\141\036\140\037\136\001\001\000\002\001" +
292     "\001\000\006\032\150\047\147\001\001\000\002\001\001" +
293     "\000\002\001\001\000\002\001\001\000\010\031\137\036" +
294     "\144\037\136\001\001\000\002\001\001\000\002\001\001" +
295     "\000\006\047\074\053\156\001\001\000\006\037\151\051" +
296     "\152\001\001\000\002\001\001\000\002\001\001\000\002" +
297     "\001\001\000\006\050\154\054\155\001\001\000\002\001" +
298     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
299     "\000\010\026\164\033\161\044\174\001\001\000\002\001" +
300     "\001\000\004\060\172\001\001\000\002\001\001\000\004" +
301     "\062\165\001\001\000\002\001\001\000\004\033\170\001" +
302     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
303     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
304     "\002\001\001\000\006\005\203\037\204\001\001\000\006" +
305     "\017\200\054\030\001\001\000\004\056\201\001\001\000" +
306     "\002\001\001\000\002\001\001\000\006\007\205\020\206" +
307     "\001\001\000\002\001\001\000\022\006\225\010\220\012" +
308     "\012\013\217\014\227\022\221\023\216\024\007\001\001" +
309     "\000\002\001\001\000\010\017\210\021\211\054\030\001" +
310     "\001\000\002\001\001\000\004\057\212\001\001\000\002" +
311     "\001\001\000\002\001\001\000\004\054\051\001\001\000" +
312     "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
313     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
314     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
315     "\000\016\012\012\024\065\037\063\040\230\041\066\043" +
316     "\062\001\001\000\006\015\231\037\113\001\001\000\010" +
317     "\016\232\030\127\046\124\001\001\000\006\030\130\046" +
318     "\124\001\001\000\002\001\001\000\004\011\236\001\001" +
319     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
320     "\004\011\241\001\001\000\002\001\001\000\002\001\001" +
321     "\000\004\011\244\001\001\000\002\001\001\000\002\001" +
322     "\001\000\004\011\247\001\001\000\002\001\001\000\002" +
323     "\001\001" });
324
325   /** Access to <code>reduce_goto</code> table. */
326   public short[][] reduce_table() {return _reduce_table;}
327
328   /** Instance of action encapsulation class. */
329   protected CUP$parser$actions action_obj;
330
331   /** Action encapsulation object initializer. */
332   protected void init_actions()
333     {
334       action_obj = new CUP$parser$actions(this);
335     }
336
337   /** Invoke a user supplied parse action. */
338   public java_cup.runtime.Symbol do_action(
339     int                        act_num,
340     java_cup.runtime.lr_parser parser,
341     java.util.Stack            stack,
342     int                        top)
343     throws java.lang.Exception
344   {
345     /* call code in generated class */
346     return action_obj.CUP$parser$do_action(act_num, parser, stack, top);
347   }
348
349   /** Indicates start state. */
350   public int start_state() {return 0;}
351   /** Indicates start production. */
352   public int start_production() {return 0;}
353
354   /** <code>EOF</code> Symbol index. */
355   public int EOF_sym() {return 0;}
356
357   /** <code>error</code> Symbol index. */
358   public int error_sym() {return 1;}
359
360
361   /** User initialization code. */
362   public void user_init() throws java.lang.Exception
363     {
364  lexer.init(); 
365     }
366
367   /** Scan to get the next Symbol. */
368   public java_cup.runtime.Symbol scan()
369     throws java.lang.Exception
370     {
371  return lexer.next_token(); 
372     }
373
374
375
376   /* override error routines */
377
378   public void report_fatal_error(
379     String   message,
380     Object   info)
381     {
382       done_parsing();
383       lexer.emit_error(message);
384       System.err.println("Can't recover from previous error(s), giving up.");
385       System.exit(1);
386     }
387
388     public void report_error(String message, Object info)
389     {
390       lexer.emit_error(message);
391     }
392
393 }
394
395 /** Cup generated class to encapsulate user supplied action code.*/
396 class CUP$parser$actions {
397
398
399   /** helper routine to clone a new production part adding a given label */
400   protected production_part add_lab(production_part part, String lab)
401     throws internal_error
402     {
403       /* if there is no label, or this is an action, just return the original */
404       if (lab == null || part.is_action()) return part;
405
406       /* otherwise build a new one with the given label attached */
407       return new symbol_part(((symbol_part)part).the_symbol(),lab);
408     }
409
410   /** max size of right hand side we will support */
411   protected final int MAX_RHS = 200;
412
413   /** array for accumulating right hand side parts */
414   protected production_part[] rhs_parts = new production_part[MAX_RHS];
415
416   /** where we are currently in building a right hand side */
417   protected int rhs_pos = 0;
418
419   /** start a new right hand side */
420   protected void new_rhs() {rhs_pos = 0; }
421
422   /** add a new right hand side part */
423   protected void add_rhs_part(production_part part) throws java.lang.Exception
424     {
425       if (rhs_pos >= MAX_RHS)
426         throw new Exception("Internal Error: Productions limited to " + 
427                              MAX_RHS + " symbols and actions"); 
428
429       rhs_parts[rhs_pos] = part;
430       rhs_pos++;
431     }
432
433   /** string to build up multiple part names */
434   protected String multipart_name = new String();
435
436   /** append a new name segment to the accumulated multipart name */
437   protected void append_multipart(String name)
438     {
439       String dot = "";
440
441       /* if we aren't just starting out, put on a dot */
442       if (multipart_name.length() != 0)  dot = ".";
443
444       multipart_name = multipart_name.concat(dot + name);
445     }
446
447   /** table of declared symbols -- contains production parts indexed by name */
448   protected Hashtable symbols = new Hashtable();
449
450   /** table of just non terminals -- contains non_terminals indexed by name */
451   protected Hashtable non_terms = new Hashtable();
452
453   /** declared start non_terminal */
454   protected non_terminal start_nt = null;
455
456   /** left hand side non terminal of the current production */
457   protected non_terminal lhs_nt;
458
459   /** Current precedence number */
460   int _cur_prec = 0;
461
462   /** Current precedence side */
463   int _cur_side = assoc.no_prec;
464
465   /** update the precedences we are declaring */
466   protected void update_precedence(int p) {
467     _cur_side = p;
468     _cur_prec++;
469   }
470   /** add relevant data to terminals */ 
471   protected void add_precedence(String term) {
472     if (term == null) {
473       System.err.println("Unable to add precedence to nonexistent terminal");
474     } else {
475       symbol_part sp = (symbol_part)symbols.get(term);
476       if (sp == null) {
477         System.err.println("Could find terminal " + term + " while declaring precedence");
478       } else {
479         java_cup.symbol sym = sp.the_symbol();
480         if (sym instanceof terminal) 
481           ((terminal)sym).set_precedence(_cur_side, _cur_prec);
482         else System.err.println("Precedence declaration: Can't find terminal " + term);
483       }
484     }
485   }
486
487   private final parser parser;
488
489   /** Constructor */
490   CUP$parser$actions(parser parser) {
491     this.parser = parser;
492   }
493
494   /** Method with the actual generated action code. */
495   public final java_cup.runtime.Symbol CUP$parser$do_action(
496     int                        CUP$parser$act_num,
497     java_cup.runtime.lr_parser CUP$parser$parser,
498     java.util.Stack            CUP$parser$stack,
499     int                        CUP$parser$top)
500     throws java.lang.Exception
501     {
502       /* Symbol object for return from actions */
503       java_cup.runtime.Symbol CUP$parser$result;
504
505       /* select the action based on the action number */
506       switch (CUP$parser$act_num)
507         {
508           /*. . . . . . . . . . . . . . . . . . . .*/
509           case 106: // empty ::= 
510             {
511               Object RESULT = null;
512
513               CUP$parser$result = new java_cup.runtime.Symbol(29/*empty*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
514             }
515           return CUP$parser$result;
516
517           /*. . . . . . . . . . . . . . . . . . . .*/
518           case 105: // opt_semi ::= SEMI 
519             {
520               Object RESULT = null;
521
522               CUP$parser$result = new java_cup.runtime.Symbol(7/*opt_semi*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
523             }
524           return CUP$parser$result;
525
526           /*. . . . . . . . . . . . . . . . . . . .*/
527           case 104: // opt_semi ::= 
528             {
529               Object RESULT = null;
530
531               CUP$parser$result = new java_cup.runtime.Symbol(7/*opt_semi*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
532             }
533           return CUP$parser$result;
534
535           /*. . . . . . . . . . . . . . . . . . . .*/
536           case 103: // non_terminal ::= NONTERMINAL 
537             {
538               Object RESULT = null;
539
540               CUP$parser$result = new java_cup.runtime.Symbol(8/*non_terminal*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
541             }
542           return CUP$parser$result;
543
544           /*. . . . . . . . . . . . . . . . . . . .*/
545           case 102: // non_terminal ::= NON TERMINAL 
546             {
547               Object RESULT = null;
548
549               CUP$parser$result = new java_cup.runtime.Symbol(8/*non_terminal*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
550             }
551           return CUP$parser$result;
552
553           /*. . . . . . . . . . . . . . . . . . . .*/
554           case 101: // robust_id ::= error 
555             {
556               String RESULT = null;
557                 
558                 lexer.emit_error("Illegal use of reserved word");
559                 RESULT="ILLEGAL";
560         
561               CUP$parser$result = new java_cup.runtime.Symbol(42/*robust_id*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
562             }
563           return CUP$parser$result;
564
565           /*. . . . . . . . . . . . . . . . . . . .*/
566           case 100: // robust_id ::= NONASSOC 
567             {
568               String RESULT = null;
569                  RESULT = "nonassoc"; 
570               CUP$parser$result = new java_cup.runtime.Symbol(42/*robust_id*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
571             }
572           return CUP$parser$result;
573
574           /*. . . . . . . . . . . . . . . . . . . .*/
575           case 99: // robust_id ::= RIGHT 
576             {
577               String RESULT = null;
578                  RESULT = "right"; 
579               CUP$parser$result = new java_cup.runtime.Symbol(42/*robust_id*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
580             }
581           return CUP$parser$result;
582
583           /*. . . . . . . . . . . . . . . . . . . .*/
584           case 98: // robust_id ::= LEFT 
585             {
586               String RESULT = null;
587                  RESULT = "left"; 
588               CUP$parser$result = new java_cup.runtime.Symbol(42/*robust_id*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
589             }
590           return CUP$parser$result;
591
592           /*. . . . . . . . . . . . . . . . . . . .*/
593           case 97: // robust_id ::= PRECEDENCE 
594             {
595               String RESULT = null;
596                  RESULT = "precedence"; 
597               CUP$parser$result = new java_cup.runtime.Symbol(42/*robust_id*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
598             }
599           return CUP$parser$result;
600
601           /*. . . . . . . . . . . . . . . . . . . .*/
602           case 96: // robust_id ::= START 
603             {
604               String RESULT = null;
605                  RESULT = "start"; 
606               CUP$parser$result = new java_cup.runtime.Symbol(42/*robust_id*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
607             }
608           return CUP$parser$result;
609
610           /*. . . . . . . . . . . . . . . . . . . .*/
611           case 95: // robust_id ::= WITH 
612             {
613               String RESULT = null;
614                  RESULT = "with"; 
615               CUP$parser$result = new java_cup.runtime.Symbol(42/*robust_id*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
616             }
617           return CUP$parser$result;
618
619           /*. . . . . . . . . . . . . . . . . . . .*/
620           case 94: // robust_id ::= SCAN 
621             {
622               String RESULT = null;
623                  RESULT = "scan"; 
624               CUP$parser$result = new java_cup.runtime.Symbol(42/*robust_id*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
625             }
626           return CUP$parser$result;
627
628           /*. . . . . . . . . . . . . . . . . . . .*/
629           case 93: // robust_id ::= INIT 
630             {
631               String RESULT = null;
632                  RESULT = "init"; 
633               CUP$parser$result = new java_cup.runtime.Symbol(42/*robust_id*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
634             }
635           return CUP$parser$result;
636
637           /*. . . . . . . . . . . . . . . . . . . .*/
638           case 92: // robust_id ::= NONTERMINAL 
639             {
640               String RESULT = null;
641                  RESULT = "nonterminal"; 
642               CUP$parser$result = new java_cup.runtime.Symbol(42/*robust_id*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
643             }
644           return CUP$parser$result;
645
646           /*. . . . . . . . . . . . . . . . . . . .*/
647           case 91: // robust_id ::= NON 
648             {
649               String RESULT = null;
650                  RESULT = "non"; 
651               CUP$parser$result = new java_cup.runtime.Symbol(42/*robust_id*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
652             }
653           return CUP$parser$result;
654
655           /*. . . . . . . . . . . . . . . . . . . .*/
656           case 90: // robust_id ::= TERMINAL 
657             {
658               String RESULT = null;
659                  RESULT = "terminal"; 
660               CUP$parser$result = new java_cup.runtime.Symbol(42/*robust_id*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
661             }
662           return CUP$parser$result;
663
664           /*. . . . . . . . . . . . . . . . . . . .*/
665           case 89: // robust_id ::= PARSER 
666             {
667               String RESULT = null;
668                  RESULT = "parser"; 
669               CUP$parser$result = new java_cup.runtime.Symbol(42/*robust_id*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
670             }
671           return CUP$parser$result;
672
673           /*. . . . . . . . . . . . . . . . . . . .*/
674           case 88: // robust_id ::= ACTION 
675             {
676               String RESULT = null;
677                  RESULT = "action"; 
678               CUP$parser$result = new java_cup.runtime.Symbol(42/*robust_id*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
679             }
680           return CUP$parser$result;
681
682           /*. . . . . . . . . . . . . . . . . . . .*/
683           case 87: // robust_id ::= CODE 
684             {
685               String RESULT = null;
686                  RESULT = "code"; 
687               CUP$parser$result = new java_cup.runtime.Symbol(42/*robust_id*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
688             }
689           return CUP$parser$result;
690
691           /*. . . . . . . . . . . . . . . . . . . .*/
692           case 86: // robust_id ::= ID 
693             {
694               String RESULT = null;
695                 int the_idleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
696                 int the_idright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
697                 String the_id = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
698                  RESULT = the_id; 
699               CUP$parser$result = new java_cup.runtime.Symbol(42/*robust_id*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
700             }
701           return CUP$parser$result;
702
703           /*. . . . . . . . . . . . . . . . . . . .*/
704           case 85: // label_id ::= robust_id 
705             {
706               String RESULT = null;
707                 int the_idleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
708                 int the_idright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
709                 String the_id = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
710                  RESULT = the_id; 
711               CUP$parser$result = new java_cup.runtime.Symbol(38/*label_id*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
712             }
713           return CUP$parser$result;
714
715           /*. . . . . . . . . . . . . . . . . . . .*/
716           case 84: // symbol_id ::= error 
717             {
718               String RESULT = null;
719                 
720                 lexer.emit_error("Illegal use of reserved word");
721                 RESULT="ILLEGAL";
722         
723               CUP$parser$result = new java_cup.runtime.Symbol(37/*symbol_id*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
724             }
725           return CUP$parser$result;
726
727           /*. . . . . . . . . . . . . . . . . . . .*/
728           case 83: // symbol_id ::= ID 
729             {
730               String RESULT = null;
731                 int the_idleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
732                 int the_idright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
733                 String the_id = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
734                  RESULT = the_id; 
735               CUP$parser$result = new java_cup.runtime.Symbol(37/*symbol_id*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
736             }
737           return CUP$parser$result;
738
739           /*. . . . . . . . . . . . . . . . . . . .*/
740           case 82: // nt_id ::= error 
741             {
742               String RESULT = null;
743                 
744                 lexer.emit_error("Illegal use of reserved word");
745                 RESULT="ILLEGAL";
746         
747               CUP$parser$result = new java_cup.runtime.Symbol(36/*nt_id*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
748             }
749           return CUP$parser$result;
750
751           /*. . . . . . . . . . . . . . . . . . . .*/
752           case 81: // nt_id ::= ID 
753             {
754               String RESULT = null;
755                 int the_idleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
756                 int the_idright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
757                 String the_id = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
758                  RESULT = the_id; 
759               CUP$parser$result = new java_cup.runtime.Symbol(36/*nt_id*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
760             }
761           return CUP$parser$result;
762
763           /*. . . . . . . . . . . . . . . . . . . .*/
764           case 80: // new_non_term_id ::= ID 
765             {
766               Object RESULT = null;
767                 int non_term_idleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
768                 int non_term_idright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
769                 String non_term_id = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
770                  
771           /* see if this non terminal has been declared before */
772           if (symbols.get(non_term_id) != null)
773             {
774               /* issue a message */
775               lexer.emit_error( "java_cup.runtime.Symbol \"" + non_term_id + 
776                                               "\" has already been declared");
777             }
778           else
779             {
780               if (multipart_name.equals("")) {
781                 append_multipart("Object");
782               }
783               /* build the non terminal object */
784               non_terminal this_nt = 
785                 new non_terminal(non_term_id, multipart_name);
786
787               /* put it in the non_terms table */
788               non_terms.put(non_term_id, this_nt);
789
790               /* build a production_part and put it in the symbols table */ 
791               symbols.put(non_term_id, new symbol_part(this_nt));
792             }
793         
794               CUP$parser$result = new java_cup.runtime.Symbol(26/*new_non_term_id*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
795             }
796           return CUP$parser$result;
797
798           /*. . . . . . . . . . . . . . . . . . . .*/
799           case 79: // new_term_id ::= ID 
800             {
801               Object RESULT = null;
802                 int term_idleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
803                 int term_idright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
804                 String term_id = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
805                  
806           /* see if this terminal has been declared before */
807           if (symbols.get(term_id) != null)
808             {
809               /* issue a message */
810               lexer.emit_error("java_cup.runtime.Symbol \"" + term_id + 
811                            "\" has already been declared");
812             }
813           else
814             {
815               /* if no type declared, declare one */
816               if (multipart_name.equals("")) {
817                 append_multipart("Object");
818               }
819               /* build a production_part and put it in the table */ 
820               symbols.put(term_id, 
821                 new symbol_part(new terminal(term_id, multipart_name)));
822             }
823         
824               CUP$parser$result = new java_cup.runtime.Symbol(25/*new_term_id*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
825             }
826           return CUP$parser$result;
827
828           /*. . . . . . . . . . . . . . . . . . . .*/
829           case 78: // type_id ::= type_id LBRACK RBRACK 
830             {
831               Object RESULT = null;
832                  multipart_name = multipart_name.concat("[]"); 
833               CUP$parser$result = new java_cup.runtime.Symbol(19/*type_id*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
834             }
835           return CUP$parser$result;
836
837           /*. . . . . . . . . . . . . . . . . . . .*/
838           case 77: // type_id ::= multipart_id 
839             {
840               Object RESULT = null;
841
842               CUP$parser$result = new java_cup.runtime.Symbol(19/*type_id*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
843             }
844           return CUP$parser$result;
845
846           /*. . . . . . . . . . . . . . . . . . . .*/
847           case 76: // import_id ::= multipart_id 
848             {
849               Object RESULT = null;
850
851               CUP$parser$result = new java_cup.runtime.Symbol(15/*import_id*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
852             }
853           return CUP$parser$result;
854
855           /*. . . . . . . . . . . . . . . . . . . .*/
856           case 75: // import_id ::= multipart_id DOT STAR 
857             {
858               Object RESULT = null;
859                  append_multipart("*"); 
860               CUP$parser$result = new java_cup.runtime.Symbol(15/*import_id*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
861             }
862           return CUP$parser$result;
863
864           /*. . . . . . . . . . . . . . . . . . . .*/
865           case 74: // multipart_id ::= robust_id 
866             {
867               Object RESULT = null;
868                 int an_idleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
869                 int an_idright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
870                 String an_id = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
871                  append_multipart(an_id); 
872               CUP$parser$result = new java_cup.runtime.Symbol(13/*multipart_id*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
873             }
874           return CUP$parser$result;
875
876           /*. . . . . . . . . . . . . . . . . . . .*/
877           case 73: // multipart_id ::= multipart_id DOT robust_id 
878             {
879               Object RESULT = null;
880                 int another_idleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
881                 int another_idright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
882                 String another_id = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
883                  append_multipart(another_id); 
884               CUP$parser$result = new java_cup.runtime.Symbol(13/*multipart_id*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
885             }
886           return CUP$parser$result;
887
888           /*. . . . . . . . . . . . . . . . . . . .*/
889           case 72: // opt_label ::= empty 
890             {
891               String RESULT = null;
892                  RESULT = null; 
893               CUP$parser$result = new java_cup.runtime.Symbol(39/*opt_label*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
894             }
895           return CUP$parser$result;
896
897           /*. . . . . . . . . . . . . . . . . . . .*/
898           case 71: // opt_label ::= COLON label_id 
899             {
900               String RESULT = null;
901                 int labidleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
902                 int labidright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
903                 String labid = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
904                  RESULT = labid; 
905               CUP$parser$result = new java_cup.runtime.Symbol(39/*opt_label*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
906             }
907           return CUP$parser$result;
908
909           /*. . . . . . . . . . . . . . . . . . . .*/
910           case 70: // prod_part ::= CODE_STRING 
911             {
912               Object RESULT = null;
913                 int code_strleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
914                 int code_strright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
915                 String code_str = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
916                  
917           /* add a new production part */
918           add_rhs_part(new action_part(code_str));
919         
920               CUP$parser$result = new java_cup.runtime.Symbol(24/*prod_part*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
921             }
922           return CUP$parser$result;
923
924           /*. . . . . . . . . . . . . . . . . . . .*/
925           case 69: // prod_part ::= symbol_id opt_label 
926             {
927               Object RESULT = null;
928                 int symidleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
929                 int symidright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
930                 String symid = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
931                 int labidleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
932                 int labidright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
933                 String labid = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
934                  
935           /* try to look up the id */
936           production_part symb = (production_part)symbols.get(symid);
937
938           /* if that fails, symbol is undeclared */
939           if (symb == null)
940             {
941               if (lexer.error_count == 0)
942                 lexer.emit_error("java_cup.runtime.Symbol \"" + symid + 
943                                "\" has not been declared");
944             }
945           else
946             {
947               /* add a labeled production part */
948               add_rhs_part(add_lab(symb, labid));
949             }
950         
951               CUP$parser$result = new java_cup.runtime.Symbol(24/*prod_part*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
952             }
953           return CUP$parser$result;
954
955           /*. . . . . . . . . . . . . . . . . . . .*/
956           case 68: // prod_part_list ::= empty 
957             {
958               Object RESULT = null;
959
960               CUP$parser$result = new java_cup.runtime.Symbol(23/*prod_part_list*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
961             }
962           return CUP$parser$result;
963
964           /*. . . . . . . . . . . . . . . . . . . .*/
965           case 67: // prod_part_list ::= prod_part_list prod_part 
966             {
967               Object RESULT = null;
968
969               CUP$parser$result = new java_cup.runtime.Symbol(23/*prod_part_list*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
970             }
971           return CUP$parser$result;
972
973           /*. . . . . . . . . . . . . . . . . . . .*/
974           case 66: // rhs ::= prod_part_list 
975             {
976               Object RESULT = null;
977                  
978           if (lhs_nt != null) 
979             {
980               /* build the production */
981               production p = new production(lhs_nt, rhs_parts, rhs_pos);
982
983               /* if we have no start non-terminal declared and this is 
984                  the first production, make its lhs nt the start_nt 
985                  and build a special start production for it. */
986               if (start_nt == null)
987                 {
988                   start_nt = lhs_nt;
989
990                   /* build a special start production */
991                   new_rhs();
992                   add_rhs_part(add_lab(new symbol_part(start_nt),"start_val"));
993                   add_rhs_part(new symbol_part(terminal.EOF));
994                   add_rhs_part(new action_part("RESULT = start_val;"));
995                   emit.start_production = 
996                      new production(non_terminal.START_nt, rhs_parts, rhs_pos);
997
998                   new_rhs();
999                 }
1000             }
1001           
1002           /* reset the rhs accumulation in any case */
1003           new_rhs();
1004         
1005               CUP$parser$result = new java_cup.runtime.Symbol(28/*rhs*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1006             }
1007           return CUP$parser$result;
1008
1009           /*. . . . . . . . . . . . . . . . . . . .*/
1010           case 65: // rhs ::= prod_part_list PERCENT_PREC term_id 
1011             {
1012               Object RESULT = null;
1013                 int term_nameleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
1014                 int term_nameright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
1015                 String term_name = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
1016                 
1017           java_cup.symbol sym = null;
1018           if (lhs_nt != null) 
1019             {
1020               /* Find the precedence symbol */
1021               if (term_name == null) {
1022                 System.err.println("No terminal for contextual precedence");
1023                 sym = null;
1024               } else {
1025                 sym = ((symbol_part)symbols.get(term_name)).the_symbol();
1026               }
1027               /* build the production */
1028               production p;
1029               if ((sym!=null) && (sym instanceof terminal)) {
1030                 p = new production(lhs_nt, rhs_parts, rhs_pos,
1031                                    ((terminal)sym).precedence_num(),
1032                                    ((terminal)sym).precedence_side());
1033                 ((symbol_part)symbols.get(term_name)).the_symbol().note_use();
1034               } else {
1035                 System.err.println("Invalid terminal " + term_name + 
1036                                    " for contextual precedence assignment");
1037                 p = new production(lhs_nt, rhs_parts, rhs_pos);
1038               }
1039
1040               /* if we have no start non-terminal declared and this is 
1041                  the first production, make its lhs nt the start_nt 
1042                  and build a special start production for it. */
1043               if (start_nt == null)
1044                 {
1045                   start_nt = lhs_nt;
1046
1047                   /* build a special start production */
1048                   new_rhs();
1049                   add_rhs_part(add_lab(new symbol_part(start_nt),"start_val"));
1050                   add_rhs_part(new symbol_part(terminal.EOF));
1051                   add_rhs_part(new action_part("RESULT = start_val;"));
1052                   if ((sym!=null) && (sym instanceof terminal)) {
1053                     emit.start_production = 
1054                       new production(non_terminal.START_nt, rhs_parts, 
1055                                      rhs_pos, ((terminal)sym).precedence_num(),
1056                                      ((terminal)sym).precedence_side());
1057                   } else {
1058                     emit.start_production = 
1059                       new production(non_terminal.START_nt, rhs_parts, rhs_pos);
1060                   }
1061                   new_rhs();
1062                 }
1063             }
1064
1065           /* reset the rhs accumulation in any case */
1066           new_rhs();
1067         
1068               CUP$parser$result = new java_cup.runtime.Symbol(28/*rhs*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1069             }
1070           return CUP$parser$result;
1071
1072           /*. . . . . . . . . . . . . . . . . . . .*/
1073           case 64: // rhs_list ::= rhs 
1074             {
1075               Object RESULT = null;
1076
1077               CUP$parser$result = new java_cup.runtime.Symbol(27/*rhs_list*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1078             }
1079           return CUP$parser$result;
1080
1081           /*. . . . . . . . . . . . . . . . . . . .*/
1082           case 63: // rhs_list ::= rhs_list BAR rhs 
1083             {
1084               Object RESULT = null;
1085
1086               CUP$parser$result = new java_cup.runtime.Symbol(27/*rhs_list*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1087             }
1088           return CUP$parser$result;
1089
1090           /*. . . . . . . . . . . . . . . . . . . .*/
1091           case 62: // production ::= error NT$13 SEMI 
1092             {
1093               Object RESULT = null;
1094               // propagate RESULT from NT$13
1095               if ( ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value != null )
1096                 RESULT = (Object) ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
1097
1098               CUP$parser$result = new java_cup.runtime.Symbol(22/*production*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1099             }
1100           return CUP$parser$result;
1101
1102           /*. . . . . . . . . . . . . . . . . . . .*/
1103           case 61: // NT$13 ::= 
1104             {
1105               Object RESULT = null;
1106  lexer.emit_error("Syntax Error"); 
1107               CUP$parser$result = new java_cup.runtime.Symbol(56/*NT$13*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1108             }
1109           return CUP$parser$result;
1110
1111           /*. . . . . . . . . . . . . . . . . . . .*/
1112           case 60: // production ::= nt_id NT$11 COLON_COLON_EQUALS NT$12 rhs_list SEMI 
1113             {
1114               Object RESULT = null;
1115               // propagate RESULT from NT$11
1116               if ( ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-4)).value != null )
1117                 RESULT = (Object) ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-4)).value;
1118               // propagate RESULT from NT$12
1119               if ( ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value != null )
1120                 RESULT = (Object) ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
1121                 int lhs_idleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-5)).left;
1122                 int lhs_idright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-5)).right;
1123                 String lhs_id = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-5)).value;
1124
1125               CUP$parser$result = new java_cup.runtime.Symbol(22/*production*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-5)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1126             }
1127           return CUP$parser$result;
1128
1129           /*. . . . . . . . . . . . . . . . . . . .*/
1130           case 59: // NT$12 ::= 
1131             {
1132               Object RESULT = null;
1133                 int lhs_idleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
1134                 int lhs_idright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
1135                 String lhs_id = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
1136  
1137               CUP$parser$result = new java_cup.runtime.Symbol(55/*NT$12*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1138             }
1139           return CUP$parser$result;
1140
1141           /*. . . . . . . . . . . . . . . . . . . .*/
1142           case 58: // NT$11 ::= 
1143             {
1144               Object RESULT = null;
1145                 int lhs_idleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
1146                 int lhs_idright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
1147                 String lhs_id = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
1148
1149           /* lookup the lhs nt */
1150           lhs_nt = (non_terminal)non_terms.get(lhs_id);
1151
1152           /* if it wasn't declared, emit a message */
1153           if (lhs_nt == null)
1154             {
1155               if (lexer.error_count == 0)
1156                 lexer.emit_error("LHS non terminal \"" + lhs_id + 
1157                                "\" has not been declared");
1158             }
1159
1160           /* reset the rhs accumulation */
1161           new_rhs();
1162         
1163               CUP$parser$result = new java_cup.runtime.Symbol(54/*NT$11*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1164             }
1165           return CUP$parser$result;
1166
1167           /*. . . . . . . . . . . . . . . . . . . .*/
1168           case 57: // production_list ::= production 
1169             {
1170               Object RESULT = null;
1171
1172               CUP$parser$result = new java_cup.runtime.Symbol(12/*production_list*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1173             }
1174           return CUP$parser$result;
1175
1176           /*. . . . . . . . . . . . . . . . . . . .*/
1177           case 56: // production_list ::= production_list production 
1178             {
1179               Object RESULT = null;
1180
1181               CUP$parser$result = new java_cup.runtime.Symbol(12/*production_list*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1182             }
1183           return CUP$parser$result;
1184
1185           /*. . . . . . . . . . . . . . . . . . . .*/
1186           case 55: // start_spec ::= empty 
1187             {
1188               Object RESULT = null;
1189
1190               CUP$parser$result = new java_cup.runtime.Symbol(11/*start_spec*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1191             }
1192           return CUP$parser$result;
1193
1194           /*. . . . . . . . . . . . . . . . . . . .*/
1195           case 54: // start_spec ::= START WITH nt_id NT$10 SEMI 
1196             {
1197               Object RESULT = null;
1198               // propagate RESULT from NT$10
1199               if ( ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value != null )
1200                 RESULT = (Object) ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
1201                 int start_nameleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left;
1202                 int start_nameright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).right;
1203                 String start_name = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
1204
1205               CUP$parser$result = new java_cup.runtime.Symbol(11/*start_spec*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-4)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1206             }
1207           return CUP$parser$result;
1208
1209           /*. . . . . . . . . . . . . . . . . . . .*/
1210           case 53: // NT$10 ::= 
1211             {
1212               Object RESULT = null;
1213                 int start_nameleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
1214                 int start_nameright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
1215                 String start_name = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
1216  
1217           /* verify that the name has been declared as a non terminal */
1218           non_terminal nt = (non_terminal)non_terms.get(start_name);
1219           if (nt == null)
1220             {
1221               lexer.emit_error( "Start non terminal \"" + start_name + 
1222                                  "\" has not been declared");
1223             }
1224           else
1225             {
1226               /* remember the non-terminal for later */
1227               start_nt = nt;
1228
1229               /* build a special start production */
1230               new_rhs();
1231               add_rhs_part(add_lab(new symbol_part(start_nt), "start_val"));
1232               add_rhs_part(new symbol_part(terminal.EOF));
1233               add_rhs_part(new action_part("RESULT = start_val;"));
1234               emit.start_production = 
1235                      new production(non_terminal.START_nt, rhs_parts, rhs_pos);
1236               new_rhs();
1237             }
1238         
1239               CUP$parser$result = new java_cup.runtime.Symbol(53/*NT$10*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1240             }
1241           return CUP$parser$result;
1242
1243           /*. . . . . . . . . . . . . . . . . . . .*/
1244           case 52: // term_id ::= symbol_id 
1245             {
1246               String RESULT = null;
1247                 int symleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
1248                 int symright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
1249                 String sym = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
1250                 
1251           /* check that the symbol_id is a terminal */
1252           if (symbols.get(sym) == null)
1253             {
1254               /* issue a message */
1255               lexer.emit_error("Terminal \"" + sym + 
1256                            "\" has not been declared");
1257             }
1258           RESULT = sym;
1259          
1260               CUP$parser$result = new java_cup.runtime.Symbol(41/*term_id*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1261             }
1262           return CUP$parser$result;
1263
1264           /*. . . . . . . . . . . . . . . . . . . .*/
1265           case 51: // terminal_id ::= term_id 
1266             {
1267               String RESULT = null;
1268                 int symleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left;
1269                 int symright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right;
1270                 String sym = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
1271                         
1272           add_precedence(sym);
1273           RESULT = sym;
1274         
1275               CUP$parser$result = new java_cup.runtime.Symbol(40/*terminal_id*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1276             }
1277           return CUP$parser$result;
1278
1279           /*. . . . . . . . . . . . . . . . . . . .*/
1280           case 50: // terminal_list ::= terminal_id 
1281             {
1282               Object RESULT = null;
1283
1284               CUP$parser$result = new java_cup.runtime.Symbol(32/*terminal_list*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1285             }
1286           return CUP$parser$result;
1287
1288           /*. . . . . . . . . . . . . . . . . . . .*/
1289           case 49: // terminal_list ::= terminal_list COMMA terminal_id 
1290             {
1291               Object RESULT = null;
1292
1293               CUP$parser$result = new java_cup.runtime.Symbol(32/*terminal_list*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1294             }
1295           return CUP$parser$result;
1296
1297           /*. . . . . . . . . . . . . . . . . . . .*/
1298           case 48: // preced ::= PRECEDENCE NONASSOC NT$9 terminal_list SEMI 
1299             {
1300               Object RESULT = null;
1301               // propagate RESULT from NT$9
1302               if ( ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value != null )
1303                 RESULT = (Object) ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
1304
1305               CUP$parser$result = new java_cup.runtime.Symbol(31/*preced*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-4)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1306             }
1307           return CUP$parser$result;
1308
1309           /*. . . . . . . . . . . . . . . . . . . .*/
1310           case 47: // NT$9 ::= 
1311             {
1312               Object RESULT = null;
1313
1314           update_precedence(assoc.nonassoc);
1315         
1316               CUP$parser$result = new java_cup.runtime.Symbol(52/*NT$9*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1317             }
1318           return CUP$parser$result;
1319
1320           /*. . . . . . . . . . . . . . . . . . . .*/
1321           case 46: // preced ::= PRECEDENCE RIGHT NT$8 terminal_list SEMI 
1322             {
1323               Object RESULT = null;
1324               // propagate RESULT from NT$8
1325               if ( ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value != null )
1326                 RESULT = (Object) ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
1327
1328               CUP$parser$result = new java_cup.runtime.Symbol(31/*preced*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-4)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1329             }
1330           return CUP$parser$result;
1331
1332           /*. . . . . . . . . . . . . . . . . . . .*/
1333           case 45: // NT$8 ::= 
1334             {
1335               Object RESULT = null;
1336
1337           update_precedence(assoc.right);
1338         
1339               CUP$parser$result = new java_cup.runtime.Symbol(51/*NT$8*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1340             }
1341           return CUP$parser$result;
1342
1343           /*. . . . . . . . . . . . . . . . . . . .*/
1344           case 44: // preced ::= PRECEDENCE LEFT NT$7 terminal_list SEMI 
1345             {
1346               Object RESULT = null;
1347               // propagate RESULT from NT$7
1348               if ( ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value != null )
1349                 RESULT = (Object) ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
1350
1351               CUP$parser$result = new java_cup.runtime.Symbol(31/*preced*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-4)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1352             }
1353           return CUP$parser$result;
1354
1355           /*. . . . . . . . . . . . . . . . . . . .*/
1356           case 43: // NT$7 ::= 
1357             {
1358               Object RESULT = null;
1359
1360           update_precedence(assoc.left);
1361         
1362               CUP$parser$result = new java_cup.runtime.Symbol(50/*NT$7*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1363             }
1364           return CUP$parser$result;
1365
1366           /*. . . . . . . . . . . . . . . . . . . .*/
1367           case 42: // precedence_l ::= preced 
1368             {
1369               Object RESULT = null;
1370
1371               CUP$parser$result = new java_cup.runtime.Symbol(33/*precedence_l*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1372             }
1373           return CUP$parser$result;
1374
1375           /*. . . . . . . . . . . . . . . . . . . .*/
1376           case 41: // precedence_l ::= precedence_l preced 
1377             {
1378               Object RESULT = null;
1379
1380               CUP$parser$result = new java_cup.runtime.Symbol(33/*precedence_l*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1381             }
1382           return CUP$parser$result;
1383
1384           /*. . . . . . . . . . . . . . . . . . . .*/
1385           case 40: // precedence_list ::= empty 
1386             {
1387               Object RESULT = null;
1388
1389               CUP$parser$result = new java_cup.runtime.Symbol(30/*precedence_list*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1390             }
1391           return CUP$parser$result;
1392
1393           /*. . . . . . . . . . . . . . . . . . . .*/
1394           case 39: // precedence_list ::= precedence_l 
1395             {
1396               Object RESULT = null;
1397
1398               CUP$parser$result = new java_cup.runtime.Symbol(30/*precedence_list*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1399             }
1400           return CUP$parser$result;
1401
1402           /*. . . . . . . . . . . . . . . . . . . .*/
1403           case 38: // non_term_name_list ::= new_non_term_id 
1404             {
1405               Object RESULT = null;
1406
1407               CUP$parser$result = new java_cup.runtime.Symbol(21/*non_term_name_list*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1408             }
1409           return CUP$parser$result;
1410
1411           /*. . . . . . . . . . . . . . . . . . . .*/
1412           case 37: // non_term_name_list ::= non_term_name_list COMMA new_non_term_id 
1413             {
1414               Object RESULT = null;
1415
1416               CUP$parser$result = new java_cup.runtime.Symbol(21/*non_term_name_list*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1417             }
1418           return CUP$parser$result;
1419
1420           /*. . . . . . . . . . . . . . . . . . . .*/
1421           case 36: // term_name_list ::= new_term_id 
1422             {
1423               Object RESULT = null;
1424
1425               CUP$parser$result = new java_cup.runtime.Symbol(20/*term_name_list*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1426             }
1427           return CUP$parser$result;
1428
1429           /*. . . . . . . . . . . . . . . . . . . .*/
1430           case 35: // term_name_list ::= term_name_list COMMA new_term_id 
1431             {
1432               Object RESULT = null;
1433
1434               CUP$parser$result = new java_cup.runtime.Symbol(20/*term_name_list*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1435             }
1436           return CUP$parser$result;
1437
1438           /*. . . . . . . . . . . . . . . . . . . .*/
1439           case 34: // declares_non_term ::= non_term_name_list NT$6 SEMI 
1440             {
1441               Object RESULT = null;
1442               // propagate RESULT from NT$6
1443               if ( ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value != null )
1444                 RESULT = (Object) ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
1445
1446               CUP$parser$result = new java_cup.runtime.Symbol(35/*declares_non_term*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1447             }
1448           return CUP$parser$result;
1449
1450           /*. . . . . . . . . . . . . . . . . . . .*/
1451           case 33: // NT$6 ::= 
1452             {
1453               Object RESULT = null;
1454  
1455           /* reset the accumulated multipart name */
1456           multipart_name = new String();
1457         
1458               CUP$parser$result = new java_cup.runtime.Symbol(49/*NT$6*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1459             }
1460           return CUP$parser$result;
1461
1462           /*. . . . . . . . . . . . . . . . . . . .*/
1463           case 32: // declares_term ::= term_name_list NT$5 SEMI 
1464             {
1465               Object RESULT = null;
1466               // propagate RESULT from NT$5
1467               if ( ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value != null )
1468                 RESULT = (Object) ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
1469
1470               CUP$parser$result = new java_cup.runtime.Symbol(34/*declares_term*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1471             }
1472           return CUP$parser$result;
1473
1474           /*. . . . . . . . . . . . . . . . . . . .*/
1475           case 31: // NT$5 ::= 
1476             {
1477               Object RESULT = null;
1478  
1479           /* reset the accumulated multipart name */
1480           multipart_name = new String();
1481         
1482               CUP$parser$result = new java_cup.runtime.Symbol(48/*NT$5*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1483             }
1484           return CUP$parser$result;
1485
1486           /*. . . . . . . . . . . . . . . . . . . .*/
1487           case 30: // symbol ::= non_terminal error NT$4 SEMI 
1488             {
1489               Object RESULT = null;
1490               // propagate RESULT from NT$4
1491               if ( ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value != null )
1492                 RESULT = (Object) ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
1493
1494               CUP$parser$result = new java_cup.runtime.Symbol(18/*symbol*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1495             }
1496           return CUP$parser$result;
1497
1498           /*. . . . . . . . . . . . . . . . . . . .*/
1499           case 29: // NT$4 ::= 
1500             {
1501               Object RESULT = null;
1502
1503           /* reset the accumulated multipart name */
1504           multipart_name = new String();
1505         
1506               CUP$parser$result = new java_cup.runtime.Symbol(47/*NT$4*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1507             }
1508           return CUP$parser$result;
1509
1510           /*. . . . . . . . . . . . . . . . . . . .*/
1511           case 28: // symbol ::= TERMINAL error NT$3 SEMI 
1512             {
1513               Object RESULT = null;
1514               // propagate RESULT from NT$3
1515               if ( ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value != null )
1516                 RESULT = (Object) ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
1517
1518               CUP$parser$result = new java_cup.runtime.Symbol(18/*symbol*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1519             }
1520           return CUP$parser$result;
1521
1522           /*. . . . . . . . . . . . . . . . . . . .*/
1523           case 27: // NT$3 ::= 
1524             {
1525               Object RESULT = null;
1526
1527           /* reset the accumulated multipart name */
1528           multipart_name = new String();
1529         
1530               CUP$parser$result = new java_cup.runtime.Symbol(46/*NT$3*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1531             }
1532           return CUP$parser$result;
1533
1534           /*. . . . . . . . . . . . . . . . . . . .*/
1535           case 26: // symbol ::= non_terminal declares_non_term 
1536             {
1537               Object RESULT = null;
1538
1539               CUP$parser$result = new java_cup.runtime.Symbol(18/*symbol*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1540             }
1541           return CUP$parser$result;
1542
1543           /*. . . . . . . . . . . . . . . . . . . .*/
1544           case 25: // symbol ::= non_terminal type_id declares_non_term 
1545             {
1546               Object RESULT = null;
1547
1548               CUP$parser$result = new java_cup.runtime.Symbol(18/*symbol*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1549             }
1550           return CUP$parser$result;
1551
1552           /*. . . . . . . . . . . . . . . . . . . .*/
1553           case 24: // symbol ::= TERMINAL declares_term 
1554             {
1555               Object RESULT = null;
1556
1557               CUP$parser$result = new java_cup.runtime.Symbol(18/*symbol*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1558             }
1559           return CUP$parser$result;
1560
1561           /*. . . . . . . . . . . . . . . . . . . .*/
1562           case 23: // symbol ::= TERMINAL type_id declares_term 
1563             {
1564               Object RESULT = null;
1565
1566               CUP$parser$result = new java_cup.runtime.Symbol(18/*symbol*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-2)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1567             }
1568           return CUP$parser$result;
1569
1570           /*. . . . . . . . . . . . . . . . . . . .*/
1571           case 22: // symbol_list ::= symbol 
1572             {
1573               Object RESULT = null;
1574
1575               CUP$parser$result = new java_cup.runtime.Symbol(10/*symbol_list*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1576             }
1577           return CUP$parser$result;
1578
1579           /*. . . . . . . . . . . . . . . . . . . .*/
1580           case 21: // symbol_list ::= symbol_list symbol 
1581             {
1582               Object RESULT = null;
1583
1584               CUP$parser$result = new java_cup.runtime.Symbol(10/*symbol_list*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1585             }
1586           return CUP$parser$result;
1587
1588           /*. . . . . . . . . . . . . . . . . . . .*/
1589           case 20: // scan_code ::= SCAN WITH CODE_STRING opt_semi 
1590             {
1591               Object RESULT = null;
1592                 int user_codeleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
1593                 int user_coderight = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
1594                 String user_code = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
1595                  
1596           if (emit.scan_code!=null)
1597             lexer.emit_error("Redundant scan code (skipping)");
1598           else /* save the user code */
1599             emit.scan_code = user_code;
1600         
1601               CUP$parser$result = new java_cup.runtime.Symbol(17/*scan_code*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1602             }
1603           return CUP$parser$result;
1604
1605           /*. . . . . . . . . . . . . . . . . . . .*/
1606           case 19: // init_code ::= INIT WITH CODE_STRING opt_semi 
1607             {
1608               Object RESULT = null;
1609                 int user_codeleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
1610                 int user_coderight = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
1611                 String user_code = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
1612                  
1613           if (emit.init_code!=null)
1614             lexer.emit_error("Redundant init code (skipping)");
1615           else /* save the user code */
1616             emit.init_code = user_code;
1617         
1618               CUP$parser$result = new java_cup.runtime.Symbol(16/*init_code*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1619             }
1620           return CUP$parser$result;
1621
1622           /*. . . . . . . . . . . . . . . . . . . .*/
1623           case 18: // parser_code_part ::= PARSER CODE CODE_STRING opt_semi 
1624             {
1625               Object RESULT = null;
1626                 int user_codeleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
1627                 int user_coderight = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
1628                 String user_code = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
1629                 
1630           if (emit.parser_code!=null)
1631             lexer.emit_error("Redundant parser code (skipping)");
1632           else /* save the user included code string */
1633             emit.parser_code = user_code;
1634         
1635               CUP$parser$result = new java_cup.runtime.Symbol(9/*parser_code_part*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1636             }
1637           return CUP$parser$result;
1638
1639           /*. . . . . . . . . . . . . . . . . . . .*/
1640           case 17: // action_code_part ::= ACTION CODE CODE_STRING opt_semi 
1641             {
1642               Object RESULT = null;
1643                 int user_codeleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
1644                 int user_coderight = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
1645                 String user_code = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
1646                 
1647           if (emit.action_code!=null)
1648             lexer.emit_error("Redundant action code (skipping)");
1649           else /* save the user included code string */
1650             emit.action_code = user_code;
1651         
1652               CUP$parser$result = new java_cup.runtime.Symbol(4/*action_code_part*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1653             }
1654           return CUP$parser$result;
1655
1656           /*. . . . . . . . . . . . . . . . . . . .*/
1657           case 16: // code_parts ::= code_parts code_part 
1658             {
1659               Object RESULT = null;
1660
1661               CUP$parser$result = new java_cup.runtime.Symbol(5/*code_parts*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1662             }
1663           return CUP$parser$result;
1664
1665           /*. . . . . . . . . . . . . . . . . . . .*/
1666           case 15: // code_parts ::= 
1667             {
1668               Object RESULT = null;
1669
1670               CUP$parser$result = new java_cup.runtime.Symbol(5/*code_parts*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1671             }
1672           return CUP$parser$result;
1673
1674           /*. . . . . . . . . . . . . . . . . . . .*/
1675           case 14: // code_part ::= scan_code 
1676             {
1677               Object RESULT = null;
1678
1679               CUP$parser$result = new java_cup.runtime.Symbol(6/*code_part*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1680             }
1681           return CUP$parser$result;
1682
1683           /*. . . . . . . . . . . . . . . . . . . .*/
1684           case 13: // code_part ::= init_code 
1685             {
1686               Object RESULT = null;
1687
1688               CUP$parser$result = new java_cup.runtime.Symbol(6/*code_part*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1689             }
1690           return CUP$parser$result;
1691
1692           /*. . . . . . . . . . . . . . . . . . . .*/
1693           case 12: // code_part ::= parser_code_part 
1694             {
1695               Object RESULT = null;
1696
1697               CUP$parser$result = new java_cup.runtime.Symbol(6/*code_part*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1698             }
1699           return CUP$parser$result;
1700
1701           /*. . . . . . . . . . . . . . . . . . . .*/
1702           case 11: // code_part ::= action_code_part 
1703             {
1704               Object RESULT = null;
1705
1706               CUP$parser$result = new java_cup.runtime.Symbol(6/*code_part*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1707             }
1708           return CUP$parser$result;
1709
1710           /*. . . . . . . . . . . . . . . . . . . .*/
1711           case 10: // import_spec ::= IMPORT import_id NT$2 SEMI 
1712             {
1713               Object RESULT = null;
1714               // propagate RESULT from NT$2
1715               if ( ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value != null )
1716                 RESULT = (Object) ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
1717
1718               CUP$parser$result = new java_cup.runtime.Symbol(14/*import_spec*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1719             }
1720           return CUP$parser$result;
1721
1722           /*. . . . . . . . . . . . . . . . . . . .*/
1723           case 9: // NT$2 ::= 
1724             {
1725               Object RESULT = null;
1726  
1727           /* save this import on the imports list */
1728           emit.import_list.push(multipart_name);
1729
1730           /* reset the accumulated multipart name */
1731           multipart_name = new String();
1732         
1733               CUP$parser$result = new java_cup.runtime.Symbol(45/*NT$2*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1734             }
1735           return CUP$parser$result;
1736
1737           /*. . . . . . . . . . . . . . . . . . . .*/
1738           case 8: // import_list ::= empty 
1739             {
1740               Object RESULT = null;
1741
1742               CUP$parser$result = new java_cup.runtime.Symbol(3/*import_list*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1743             }
1744           return CUP$parser$result;
1745
1746           /*. . . . . . . . . . . . . . . . . . . .*/
1747           case 7: // import_list ::= import_list import_spec 
1748             {
1749               Object RESULT = null;
1750
1751               CUP$parser$result = new java_cup.runtime.Symbol(3/*import_list*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1752             }
1753           return CUP$parser$result;
1754
1755           /*. . . . . . . . . . . . . . . . . . . .*/
1756           case 6: // package_spec ::= empty 
1757             {
1758               Object RESULT = null;
1759
1760               CUP$parser$result = new java_cup.runtime.Symbol(2/*package_spec*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1761             }
1762           return CUP$parser$result;
1763
1764           /*. . . . . . . . . . . . . . . . . . . .*/
1765           case 5: // package_spec ::= PACKAGE multipart_id NT$1 SEMI 
1766             {
1767               Object RESULT = null;
1768               // propagate RESULT from NT$1
1769               if ( ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value != null )
1770                 RESULT = (Object) ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
1771
1772               CUP$parser$result = new java_cup.runtime.Symbol(2/*package_spec*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-3)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1773             }
1774           return CUP$parser$result;
1775
1776           /*. . . . . . . . . . . . . . . . . . . .*/
1777           case 4: // NT$1 ::= 
1778             {
1779               Object RESULT = null;
1780
1781           /* save the package name */
1782           emit.package_name = multipart_name;
1783
1784           /* reset the accumulated multipart name */
1785           multipart_name = new String();
1786         
1787               CUP$parser$result = new java_cup.runtime.Symbol(44/*NT$1*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1788             }
1789           return CUP$parser$result;
1790
1791           /*. . . . . . . . . . . . . . . . . . . .*/
1792           case 3: // spec ::= error symbol_list precedence_list start_spec production_list 
1793             {
1794               Object RESULT = null;
1795
1796               CUP$parser$result = new java_cup.runtime.Symbol(1/*spec*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-4)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1797             }
1798           return CUP$parser$result;
1799
1800           /*. . . . . . . . . . . . . . . . . . . .*/
1801           case 2: // spec ::= NT$0 package_spec import_list code_parts symbol_list precedence_list start_spec production_list 
1802             {
1803               Object RESULT = null;
1804               // propagate RESULT from NT$0
1805               if ( ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-7)).value != null )
1806                 RESULT = (Object) ((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-7)).value;
1807
1808               CUP$parser$result = new java_cup.runtime.Symbol(1/*spec*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-7)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1809             }
1810           return CUP$parser$result;
1811
1812           /*. . . . . . . . . . . . . . . . . . . .*/
1813           case 1: // NT$0 ::= 
1814             {
1815               Object RESULT = null;
1816
1817           /* declare "error" as a terminal */
1818           symbols.put("error", new symbol_part(terminal.error));
1819
1820           /* declare start non terminal */
1821           non_terms.put("$START", non_terminal.START_nt);
1822         
1823               CUP$parser$result = new java_cup.runtime.Symbol(43/*NT$0*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1824             }
1825           return CUP$parser$result;
1826
1827           /*. . . . . . . . . . . . . . . . . . . .*/
1828           case 0: // $START ::= spec EOF 
1829             {
1830               Object RESULT = null;
1831                 int start_valleft = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left;
1832                 int start_valright = ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).right;
1833                 Object start_val = (Object)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
1834                 RESULT = start_val;
1835               CUP$parser$result = new java_cup.runtime.Symbol(0/*$START*/, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-1)).left, ((java_cup.runtime.Symbol)CUP$parser$stack.elementAt(CUP$parser$top-0)).right, RESULT);
1836             }
1837           /* ACCEPT */
1838           CUP$parser$parser.done_parsing();
1839           return CUP$parser$result;
1840
1841           /* . . . . . .*/
1842           default:
1843             throw new Exception(
1844                "Invalid action number found in internal parse table");
1845
1846         }
1847     }
1848 }
1849