KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > netbeans > lib > java > parser > Parser


1 //### This file created by BYACC 1.8(/Java extension 1.1)
2
//### Java capabilities added 7 Jan 97, Bob Jamison
3
//### Updated : 27 Nov 97 -- Bob Jamison, Joe Nieten
4
//### 01 Jan 98 -- Bob Jamison -- fixed generic semantic constructor
5
//### 01 Jun 99 -- Bob Jamison -- added Runnable support
6
//### 06 Aug 00 -- Bob Jamison -- made state variables class-global
7
//### 03 Jan 01 -- Bob Jamison -- improved flags, tracing
8
//### 16 May 01 -- Bob Jamison -- added custom stack sizing
9
//### Please send bug reports to rjamison@lincom-asg.com
10
//### static char yysccsid[] = "@(#)yaccpar 1.8 (Berkeley) 01/20/90";
11

12
13
14 package org.netbeans.lib.java.parser;
15
16
17
18 //#line 3 "parser.y"
19
/*
20  * The contents of this file are subject to the terms of the Common Development
21  * and Distribution License (the License). You may not use this file except in
22  * compliance with the License.
23  *
24  * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
25  * or http://www.netbeans.org/cddl.txt.
26  *
27  * When distributing Covered Code, include this CDDL Header Notice in each file
28  * and include the License file at http://www.netbeans.org/cddl.txt.
29  * If applicable, add the following below the CDDL Header, with the fields
30  * enclosed by brackets [] replaced by your own identifying information:
31  * "Portions Copyrighted [year] [name of copyright owner]"
32  *
33  * The Original Code is NetBeans. The Initial Developer of the Original
34  * Code is Sun Microsystems, Inc. Portions Copyright 1997-2002 Sun
35  * Microsystems, Inc. All Rights Reserved.
36  */

37 /* byaccJ options:
38  * -Jpackage=org.netbeans.lib.java.parser -Jimplements=ASTreeTypes,JParser -Jsemantic=ASTClass -d
39 */

40     import java.io.*;
41 //#line 33 "Parser.java"
42

43
44
45
46 /**
47  * Encapsulates yacc() parser functionality in a Java
48  * class for quick code development
49  */

50 public class Parser
51              implements ASTreeTypes,JParser,ParserTokens
52 {
53
54 boolean yydebug; //do I want debug output?
55
int yynerrs; //number of errors so far
56
int yyerrflag; //was there an error?
57
int yychar; //the current working character
58

59 //########## MESSAGES ##########
60
//###############################################################
61
// method: debug
62
//###############################################################
63
void debug(String JavaDoc msg)
64 {
65   if (yydebug)
66     System.out.println(msg);
67 }
68
69 //########## STATE STACK ##########
70
final static int YYSTACKSIZE = 500; //maximum stack size
71
int statestk[],stateptr; //state stack
72
int stateptrmax; //highest index of stackptr
73
int statemax; //state when highest index reached
74
//###############################################################
75
// methods: state stack push,pop,drop,peek
76
//###############################################################
77
void state_push(int state)
78 {
79   if (stateptr>=YYSTACKSIZE) //overflowed?
80
return;
81   statestk[++stateptr]=state;
82   if (stateptr>statemax)
83     {
84     statemax=state;
85     stateptrmax=stateptr;
86     }
87 }
88 int state_pop()
89 {
90   if (stateptr<0) //underflowed?
91
return -1;
92   return statestk[stateptr--];
93 }
94 void state_drop(int cnt)
95 {
96 int ptr;
97   ptr=stateptr-cnt;
98   if (ptr<0)
99     return;
100   stateptr = ptr;
101 }
102 int state_peek(int relative)
103 {
104 int ptr;
105   ptr=stateptr-relative;
106   if (ptr<0)
107     return -1;
108   return statestk[ptr];
109 }
110 //###############################################################
111
// method: init_stacks : allocate and prepare stacks
112
//###############################################################
113
boolean init_stacks()
114 {
115   statestk = new int[YYSTACKSIZE];
116   stateptr = -1;
117   statemax = -1;
118   stateptrmax = -1;
119   val_init();
120   return true;
121 }
122 //###############################################################
123
// method: dump_stacks : show n levels of the stacks
124
//###############################################################
125
void dump_stacks(int count)
126 {
127 int i;
128   System.out.println("=index==state====value= s:"+stateptr+" v:"+valptr);
129   for (i=0;i<count;i++)
130     System.out.println(" "+i+" "+statestk[i]+" "+valstk[i]);
131   System.out.println("======================");
132 }
133
134
135 //########## SEMANTIC VALUES ##########
136
//## **user defined:ASTClass
137
String JavaDoc yytext;//user variable to return contextual strings
138
ASTClass yyval; //used to return semantic vals from action routines
139
ASTClass yylval;//the 'lval' (result) I got from yylex()
140
ASTClass valstk[];
141 int valptr;
142 //###############################################################
143
// methods: value stack push,pop,drop,peek.
144
//###############################################################
145
void val_init()
146 {
147   valstk=new ASTClass[YYSTACKSIZE];
148   yyval=new ASTClass();
149   yylval=new ASTClass();
150   valptr=-1;
151 }
152 void val_push(ASTClass val)
153 {
154   if (valptr>=YYSTACKSIZE)
155     return;
156   valstk[++valptr]=val;
157 }
158 ASTClass val_pop()
159 {
160   if (valptr<0)
161     return null;
162   return valstk[valptr--];
163 }
164 void val_drop(int cnt)
165 {
166 int ptr;
167   ptr=valptr-cnt;
168   if (ptr<0)
169     return;
170   valptr = ptr;
171 }
172 ASTClass val_peek(int relative)
173 {
174 int ptr;
175   ptr=valptr-relative;
176   if (ptr<0)
177     return null;
178   return valstk[ptr];
179 }
180 //#### end semantic value section ####
181
public final static short YYERRCODE=256;
182 final static short yylhs[] = { -1,
183     1, 1, 2, 2, 2, 4, 4, 5, 5, 5,
184     5, 5, 6, 6, 3, 3, 3, 0, 10, 10,
185    11, 11, 9, 9, 12, 12, 14, 15, 16, 16,
186    13, 13, 13, 17, 17, 20, 20, 21, 21, 23,
187    23, 22, 24, 24, 25, 25, 25, 25, 26, 26,
188    26, 26, 26, 30, 30, 32, 32, 33, 34, 34,
189    35, 35, 36, 36, 31, 39, 39, 41, 41, 43,
190    44, 44, 45, 45, 46, 48, 48, 47, 47, 42,
191    42, 40, 40, 27, 28, 29, 29, 50, 51, 52,
192    52, 53, 53, 53, 53, 53, 18, 18, 57, 57,
193    58, 59, 59, 60, 60, 60, 60, 60, 61, 61,
194    38, 62, 62, 62, 63, 63, 49, 64, 64, 65,
195    65, 54, 54, 54, 66, 68, 68, 67, 67, 67,
196    67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
197    67, 67, 67, 67, 74, 69, 75, 85, 85, 85,
198    85, 85, 85, 85, 70, 70, 76, 93, 94, 94,
199    96, 95, 95, 97, 97, 98, 98, 71, 77, 72,
200    73, 100, 100, 100, 101, 101, 102, 102, 103, 103,
201    78, 104, 104, 79, 80, 82, 81, 83, 83, 106,
202   106, 105, 105, 108, 107, 84, 84, 56, 56, 109,
203   109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
204   109, 111, 111, 111, 111, 111, 111, 92, 92, 92,
205    55, 55, 115, 115, 114, 114, 110, 110, 110, 110,
206   110, 110, 116, 116, 117, 8, 8, 112, 112, 112,
207    91, 91, 91, 91, 91, 113, 113, 118, 118, 118,
208   118, 89, 90, 119, 119, 119, 119, 119, 87, 88,
209   120, 120, 120, 120, 121, 121, 121, 121, 122, 122,
210   122, 122, 123, 123, 123, 124, 124, 124, 124, 125,
211   125, 125, 125, 125, 125, 126, 126, 126, 127, 127,
212   128, 128, 129, 129, 130, 130, 131, 131, 132, 132,
213   133, 133, 86, 134, 134, 134, 135, 135, 135, 135,
214   135, 135, 135, 135, 135, 135, 135, 135, 37, 99,
215    19, 19, 136, 136, 136, 136, 136, 136, 136, 136,
216   136, 136, 136, 7, 7,
217 };
218 final static short yylen[] = { 2,
219     1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
220     1, 1, 1, 1, 1, 2, 2, 3, 0, 2,
221     0, 2, 0, 3, 1, 1, 4, 6, 0, 1,
222     1, 1, 1, 6, 5, 0, 2, 0, 2, 1,
223     3, 3, 0, 2, 1, 1, 1, 1, 1, 1,
224     1, 1, 1, 4, 3, 1, 3, 2, 1, 2,
225     0, 2, 1, 1, 2, 4, 3, 1, 2, 4,
226     0, 1, 1, 3, 4, 0, 1, 0, 1, 0,
227     2, 1, 1, 1, 2, 4, 3, 4, 3, 0,
228     2, 1, 5, 5, 7, 7, 5, 4, 0, 2,
229     3, 0, 2, 1, 1, 1, 1, 1, 5, 4,
230     3, 0, 1, 2, 1, 3, 3, 0, 1, 1,
231     2, 1, 1, 1, 2, 3, 2, 1, 1, 1,
232     1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
233     1, 1, 1, 1, 1, 3, 2, 1, 1, 1,
234     1, 1, 1, 1, 5, 7, 5, 4, 0, 2,
235     2, 0, 1, 1, 2, 3, 2, 5, 7, 7,
236     9, 0, 1, 1, 0, 1, 0, 1, 1, 3,
237     3, 0, 1, 3, 3, 3, 5, 3, 4, 0,
238     1, 1, 2, 5, 2, 3, 5, 1, 1, 1,
239     3, 4, 3, 4, 1, 3, 3, 1, 1, 1,
240     1, 1, 1, 1, 1, 1, 1, 6, 8, 8,
241     0, 1, 1, 3, 0, 1, 4, 3, 4, 3,
242     4, 4, 1, 2, 3, 2, 3, 3, 3, 5,
243     6, 4, 6, 6, 8, 4, 4, 1, 1, 1,
244     1, 2, 2, 1, 1, 2, 2, 1, 2, 2,
245     1, 2, 2, 1, 5, 4, 4, 5, 1, 3,
246     3, 3, 1, 3, 3, 1, 3, 3, 3, 1,
247     3, 3, 3, 3, 3, 1, 3, 3, 1, 3,
248     1, 3, 1, 3, 1, 3, 1, 3, 1, 5,
249     1, 1, 3, 1, 1, 1, 1, 1, 1, 1,
250     1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
251     1, 2, 1, 1, 1, 1, 1, 1, 1, 1,
252     1, 1, 1, 1, 3,
253 };
254 final static short yydefred[] = { 0,
255     0, 0, 19, 334, 0, 0, 24, 0, 0, 0,
256    20, 25, 26, 335, 30, 0, 326, 0, 328, 0,
257   330, 325, 324, 323, 327, 331, 329, 332, 333, 33,
258    22, 31, 32, 0, 321, 0, 0, 0, 0, 0,
259   322, 27, 0, 0, 0, 0, 0, 0, 0, 0,
260     0, 0, 0, 0, 0, 102, 98, 0, 0, 28,
261     0, 43, 35, 0, 0, 0, 97, 0, 0, 4,
262     8, 12, 14, 13, 10, 11, 9, 5, 101, 108,
263     0, 0, 2, 3, 6, 7, 0, 106, 107, 0,
264   104, 103, 105, 34, 0, 42, 53, 0, 0, 51,
265    52, 0, 44, 45, 46, 47, 48, 49, 50, 0,
266    84, 0, 0, 0, 56, 0, 0, 0, 0, 0,
267     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
268     0, 0, 0, 0, 205, 0, 0, 0, 0, 145,
269     0, 0, 214, 212, 213, 215, 216, 217, 0, 0,
270     0, 0, 123, 0, 133, 120, 0, 0, 0, 122,
271   124, 0, 128, 129, 130, 131, 132, 134, 135, 136,
272   137, 138, 139, 140, 141, 142, 143, 144, 0, 148,
273   149, 150, 0, 0, 0, 0, 0, 199, 200, 0,
274     0, 0, 0, 0, 0, 0, 85, 0, 83, 65,
275    82, 0, 0, 0, 0, 55, 0, 0, 58, 0,
276     0, 236, 0, 0, 0, 0, 0, 0, 0, 0,
277     0, 0, 0, 0, 302, 254, 255, 250, 251, 210,
278   208, 0, 269, 258, 264, 0, 0, 0, 0, 0,
279     0, 0, 0, 0, 0, 301, 319, 183, 0, 0,
280     0, 0, 0, 0, 0, 0, 0, 176, 0, 0,
281     0, 0, 0, 0, 0, 0, 0, 209, 211, 259,
282   260, 0, 0, 0, 0, 0, 0, 0, 0, 0,
283     0, 117, 121, 125, 147, 0, 252, 253, 307, 308,
284   309, 310, 311, 312, 313, 314, 315, 316, 317, 318,
285     0, 79, 0, 0, 73, 0, 67, 0, 0, 0,
286    90, 87, 0, 57, 0, 62, 63, 64, 110, 237,
287    54, 0, 0, 0, 0, 263, 262, 256, 257, 0,
288     0, 196, 0, 0, 0, 0, 0, 0, 0, 0,
289     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
290     0, 0, 0, 0, 181, 184, 0, 0, 0, 174,
291   179, 0, 0, 0, 0, 0, 0, 233, 0, 0,
292     0, 185, 0, 0, 0, 186, 0, 0, 0, 192,
293     0, 207, 223, 0, 0, 146, 203, 0, 0, 201,
294     0, 0, 206, 0, 0, 0, 0, 0, 303, 88,
295     0, 0, 66, 86, 0, 70, 115, 0, 0, 109,
296     0, 0, 0, 0, 0, 270, 271, 272, 0, 0,
297     0, 0, 0, 0, 285, 0, 0, 0, 0, 0,
298     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
299     0, 0, 0, 231, 0, 234, 0, 232, 0, 0,
300     0, 0, 0, 193, 0, 189, 0, 242, 0, 204,
301   246, 0, 0, 0, 202, 0, 0, 247, 74, 77,
302     0, 0, 0, 89, 0, 91, 92, 0, 111, 0,
303   266, 0, 0, 267, 197, 0, 0, 0, 0, 180,
304     0, 235, 0, 0, 159, 157, 187, 0, 195, 168,
305   224, 0, 0, 0, 0, 0, 75, 0, 0, 0,
306     0, 116, 265, 268, 300, 0, 0, 0, 0, 226,
307   218, 244, 0, 0, 0, 0, 241, 0, 243, 0,
308     0, 0, 0, 169, 0, 0, 170, 156, 0, 0,
309     0, 160, 0, 164, 194, 0, 0, 0, 0, 0,
310     0, 0, 0, 320, 0, 167, 158, 0, 165, 220,
311   245, 219, 94, 93, 0, 0, 171, 166, 0, 0,
312    96, 95,
313 };
314 final static short yydgoto[] = { 2,
315   150, 222, 83, 84, 85, 86, 223, 120, 3, 6,
316    10, 11, 31, 12, 13, 16, 153, 33, 154, 45,
317    53, 520, 55, 68, 103, 104, 105, 106, 107, 91,
318   109, 114, 115, 116, 209, 316, 383, 318, 110, 200,
319   117, 203, 118, 303, 304, 305, 306, 471, 155, 112,
320   312, 405, 476, 156, 384, 157, 47, 57, 65, 92,
321    93, 408, 409, 158, 159, 160, 161, 162, 163, 164,
322   165, 166, 167, 168, 169, 170, 171, 172, 173, 174,
323   175, 176, 177, 178, 179, 225, 226, 227, 228, 229,
324   230, 231, 496, 523, 541, 542, 543, 544, 555, 362,
325   259, 535, 363, 249, 378, 379, 456, 380, 187, 188,
326   189, 190, 191, 521, 385, 367, 368, 232, 233, 234,
327   235, 236, 237, 238, 239, 240, 241, 242, 243, 244,
328   245, 246, 247, 193, 301, 35,
329 };
330 final static short yysindex[] = { -238,
331  -290, 0, 0, 0, -91, -205, 0, -243, -141, 3370,
332     0, 0, 0, 0, 0, -290, 0, -195, 0, -187,
333     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
334     0, 0, 0, 577, 0, -24, -85, -69, -129, -106,
335     0, 0, -286, -290, 8, -290, -7, -85, -69, -2,
336   -51, -290, 9, -51, 10, 0, 0, 8, -7, 0,
337    10, 0, 0, -290, 1195, 9, 0, 1153, -51, 0,
338     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
339   -48, 44, 0, 0, 0, 0, -109, 0, 0, 1279,
340     0, 0, 0, 0, 1048, 0, 0, 79, -48, 0,
341     0, 1237, 0, 0, 0, 0, 0, 0, 0, -34,
342     0, 29, -66, -186, 0, 84, 29, 44, 77, 98,
343    98, -48, 1578, 51, 51, 1330, 2, 114, 118, 2,
344  1578, 126, 122, 133, 0, 1578, 137, 141, 1578, 0,
345  1578, 1578, 0, 0, 0, 0, 0, 0, -285, 88,
346   -61, 4, 0, 1555, 0, 0, 135, 142, 1048, 0,
347     0, 150, 0, 0, 0, 0, 0, 0, 0, 0,
348     0, 0, 0, 0, 0, 0, 0, 0, 151, 0,
349     0, 0, 0, 0, 0, 0, 154, 0, 0, 0,
350     0, -171, 345, 194, 29, -48, 0, 29, 0, 0,
351     0, -290, 161, 194, 98, 0, 88, 1433, 0, 162,
352    98, 0, 165, -168, 29, 1578, 1578, 1578, 1578, 1578,
353   176, -61, 4, -190, 0, 0, 0, 0, 0, 0,
354     0, -171, 0, 0, 0, -107, 63, 23, -149, -63,
355   149, 148, 155, 159, -226, 0, 0, 0, 182, 185,
356   133, 183, 88, 1620, 1578, 188, -198, 0, 187, 145,
357  1578, 1578, 197, 255, 1578, 212, 4, 0, 0, 0,
358     0, 1578, 1330, 44, 211, 262, 5, 1475, -239, 14,
359  -278, 0, 0, 0, 0, 1578, 0, 0, 0, 0,
360     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
361  1578, 0, 221, 223, 0, 2, 0, 29, 161, 10,
362     0, 0, 236, 0, 1433, 0, 0, 0, 0, 0,
363     0, 232, -73, 4, 238, 0, 0, 0, 0, 5,
364    14, 0, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578,
365  1578, 2, 1578, 1578, 1578, 1578, 1578, 1578, 1578, 1578,
366  1578, 1578, 1578, 1578, 0, 0, 240, 211, 2, 0,
367     0, -151, 234, 243, 1475, 43, 188, 0, 1578, 43,
368   188, 0, 245, 247, 248, 0, 251, 255, 278, 0,
369   254, 0, 0, 256, 249, 0, 0, 289, 257, 0,
370   198, 253, 0, 264, 311, 216, 274, 272, 0, 0,
371   194, 268, 0, 0, 943, 0, 0, 276, 273, 0,
372  1578, -68, -59, 1723, 275, 0, 0, 0, -107, -107,
373    63, 63, 63, 44, 0, 23, 23, 23, 23, -149,
374  -149, -63, 149, 148, 155, 270, 159, 1578, 1578, 1578,
375  1756, 1330, 284, 0, 98, 0, 292, 0, 98, 1578,
376   288, 137, 194, 0, 137, 0, 1330, 0, 1578, 0,
377     0, 294, 242, 1578, 0, 298, 1578, 0, 0, 0,
378    88, -280, 299, 0, 46, 0, 0, 295, 0, 1433,
379     0, 1578, 1723, 0, 0, 1578, 301, 306, 312, 0,
380   336, 0, 9, 313, 0, 0, 0, 314, 0, 0,
381     0, 1578, 307, 316, 1578, 321, 0, 1578, 1578, -196,
382  -273, 0, 0, 0, 0, 318, 1756, 1330, 1330, 0,
383     0, 0, -137, 137, 324, 1578, 0, 326, 0, 327,
384   328, -245, 330, 0, 332, 234, 0, 0, 1578, 317,
385   337, 0, 838, 0, 0, 9, 338, 9, 325, 335,
386  1578, 1578, 1330, 0, 329, 0, 0, 1048, 0, 0,
387     0, 0, 0, 0, 341, 342, 0, 0, 343, 344,
388     0, 0,
389 };
390 final static short yyrindex[] = { 505,
391     0, 0, 0, 0, 0, 541, 0, 0, 297, 655,
392     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
393     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
394     0, 0, 0, 0, 0, 0, -250, 350, 0, 0,
395     0, 0, 0, 0, 351, 0, 0, -250, 350, 0,
396  -248, 0, 0, -276, 355, 0, 0, 351, 0, 0,
397   356, 0, 0, 0, 0, 0, 0, 0, -40, 0,
398     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
399     0, -305, 0, 0, 0, 0, 1956, 0, 0, 0,
400     0, 0, 0, 0, 357, 0, 0, -219, 0, 0,
401     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
402     0, 360, -6, 0, 0, -177, 358, -150, 0, 1995,
403  2034, 0, 0, 359, 359, 0, 1800, 0, 0, 0,
404   361, 0, 0, 3405, 0, 0, 0, 0, 0, 0,
405     0, 0, 0, 0, 0, 0, 0, 0, 1320, 0,
406   309, 618, 0, 0, 0, 0, 2836, 0, 365, 0,
407     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
408     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
409     0, 0, -101, -10, 92, 509, 2656, 0, 0, 2073,
410  2146, 0, 0, 369, 71, 0, 0, 360, 0, 0,
411     0, 0, 0, 369, -194, 0, 0, 0, 0, 0,
412  -145, 0, 0, 0, 358, 0, 0, 0, 0, 0,
413  1810, 0, 2438, 0, 0, 0, 0, 0, 0, 0,
414     0, 2908, 0, 0, 0, 2944, 3052, 1635, 443, 947,
415  1933, 2486, 143, 1491, 209, 0, 0, 0, 0, 0,
416     0, 0, 0, -127, 0, 0, 0, 0, 0, 0,
417     0, 0, 0, 401, 0, 0, 2872, 0, 0, 0,
418     0, 371, 0, -32, -124, 0, 320, 0, 0, 339,
419     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
420     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
421     0, 0, 0, 374, 0, 0, 0, 71, 0, 78,
422     0, 0, 0, 0, 377, 0, 0, 0, 0, 0,
423     0, 0, 0, 2511, 0, 0, 0, 0, 0, 0,
424     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
425     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
426     0, 0, 0, 0, 0, 0, 0, -115, 0, 0,
427     0, 0, -103, 0, 0, 0, 2692, 0, 371, 0,
428  2728, 0, 2219, 0, 0, 0, 0, 628, 0, 0,
429     0, 0, 0, 0, 380, 0, 0, 0, 0, 0,
430     0, 0, 0, 1883, 0, 0, 2292, 0, 0, 0,
431   319, 340, 0, 0, 0, 0, 0, 0, 392, 0,
432     0, 0, 0, 2584, 0, 0, 0, 0, 2980, 3016,
433  3088, 3124, 3160, 0, 0, 3196, 3229, 3262, 3295, 743,
434   848, 1052, 2415, 3328, 1398, 0, 1688, 0, 361, 0,
435     0, 0, 0, 0, 2764, 0, 0, 0, 2800, 371,
436     0, 0, 319, 0, 0, 0, 0, 0, 0, 0,
437     0, 0, 0, 371, 0, 0, 371, 0, 0, 0,
438     0, 0, -136, 0, 618, 0, 0, 100, 0, 393,
439     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
440   733, 0, 2620, 0, 0, 0, 0, 0, 0, 0,
441     0, 371, 2365, 0, 371, 0, 0, 371, 371, 0,
442     0, 0, 0, 0, 0, 0, 396, 0, 0, 0,
443     0, 0, 405, 0, 0, 371, 0, 0, 0, 0,
444     0, 0, 0, 0, 0, 420, 0, 0, 0, 0,
445     0, 0, 419, 0, 0, 2620, 0, 2620, 0, 0,
446   371, 371, 0, 0, 0, 0, 0, -237, 0, 0,
447     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
448     0, 0,
449 };
450 final static short yygindex[] = { 0,
451   -62, -49, 364, 0, 0, 0, -1, 3, 0, 0,
452     0, 0, 0, 0, 0, 0, 19, 215, 37, 683,
453   682, -11, -45, 0, 0, 0, 0, 0, 0, 686,
454     0, -114, 551, 290, 0, -311, 246, 22, 0, 0,
455   -88, -100, 0, 555, 0, -381, 0, 0, -44, 658,
456   454, 0, 0, -157, -315, 370, 715, 706, 0, 0,
457     0, 0, 0, 0, 226, 0, -125, 520, 0, 0,
458     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
459     0, 0, 0, 0, -249, -82, -74, -27, -15, 17,
460    55, 108, 0, 0, 0, 0, 0, 233, 0, 0,
461   349, 0, 260, 653, 0, 0, 0, 412, 0, 0,
462     0, 373, 398, -252, 0, 526, 28, 125, -35, -404,
463     0, 96, 32, 74, 91, 444, 442, 446, 449, 448,
464     0, 322, 503, 0, 0, -16,
465 };
466 final static int YYTABLESIZE=3710;
467 static short yytable[];
468 static { yytable();}
469
470     static void yytable(){
471 yytable = new short[]{ 5,
472   252, 283, 81, 407, 361, 99, 61, 214, 396, 484,
473   195, 1, 180, 396, 36, 82, 210, 41, 82, 469,
474   181, 272, 533, 111, 161, 390, 508, 122, 32, 36,
475   161, 37, 40, 215, 260, 275, 40, 40, 273, 196,
476    82, 63, 51, 180, 54, 151, 34, 391, 50, 1,
477    54, 181, 82, 447, 94, 1, 392, 197, 36, 393,
478    37, 551, 69, 87, 253, 201, 87, 182, 390, 463,
479     4, 498, 161, 41, 14, 9, 180, 82, 514, 183,
480   256, 214, 397, 88, 181, 41, 100, 397, 87, 121,
481   391, 334, 264, 152, 307, 334, 353, 309, 182, 532,
482    87, 90, 393, 354, 102, 270, 271, 308, 369, 151,
483   183, 184, 365, 60, 322, 205, 8, 14, 60, 60,
484   211, 394, 332, 60, 539, 87, 206, 207, 257, 60,
485   540, 182, 342, 333, 494, 61, 61, 41, 358, 267,
486   267, 334, 184, 183, 321, 207, 61, 386, 504, 185,
487    68, 506, 15, 277, 280, 69, 310, 152, 68, 287,
488   288, 439, 68, 69, 394, 37, 323, 69, 512, 343,
489   344, 180, 440, 38, 205, 184, 345, 346, 205, 181,
490   185, 326, 327, 328, 329, 172, 525, 44, 127, 528,
491   180, 490, 530, 531, 205, 205, 172, 126, 181, 127,
492    54, 119, 186, 46, 151, 8, 151, 403, 126, 173,
493   547, 151, 151, 185, 324, 267, 267, 267, 267, 192,
494   173, 7, 151, 8, 330, 331, 182, 334, 335, 250,
495   250, 48, 336, 186, 411, 565, 566, 119, 183, 482,
496   204, 276, 213, 402, 119, 182, 388, 477, 483, 119,
497   192, 213, 152, 276, 49, 395, 82, 183, 366, 370,
498    70, 347, 71, 8, 348, 72, 186, 361, 41, 331,
499   184, 73, 41, 41, 95, 59, 205, 74, 199, 89,
500    59, 59, 101, 192, 75, 59, 76, 52, 42, 184,
501    43, 59, 424, 560, 77, 562, 253, 152, 416, 417,
502   418, 56, 152, 152, 87, 78, 59, 59, 185, 82,
503    60, 59, 113, 152, 278, 213, 491, 62, 279, 388,
504   251, 251, 180, 64, 213, 412, 413, 185, 395, 202,
505   181, 500, 267, 267, 267, 267, 267, 267, 267, 267,
506    87, 267, 267, 267, 267, 267, 267, 267, 267, 267,
507   267, 315, 267, 213, 119, 151, 278, 87, 180, 180,
508   510, 186, 4, 339, 340, 341, 181, 181, 224, 445,
509   421, 422, 423, 449, 180, 481, 258, 182, 192, 80,
510   186, 263, 181, 80, 266, 194, 81, 444, 212, 183,
511    81, 448, 537, 538, 446, 337, 338, 192, 446, 153,
512   283, 208, 210, 475, 153, 153, 210, 497, 213, 267,
513   499, 248, 267, 182, 182, 153, 426, 427, 428, 429,
514   254, 184, 210, 210, 255, 183, 183, 567, 261, 182,
515   248, 248, 419, 420, 180, 180, 180, 430, 431, 262,
516   260, 183, 181, 181, 181, 95, 513, 265, 274, 281,
517   295, 282, 295, 317, 295, 295, 295, 184, 184, 185,
518   180, 325, 284, 285, 286, 295, 295, 302, 181, 311,
519   180, 295, 295, 184, 319, 180, 320, 280, 181, 545,
520   267, 267, 272, 181, 267, 349, 350, 352, 357, 182,
521   182, 182, 351, 151, 355, 185, 185, 356, 365, 372,
522   364, 183, 183, 183, 23, 373, 374, 375, 151, 376,
523   381, 185, 186, 268, 268, 182, 299, 377, 299, 382,
524   299, 299, 299, 389, 207, 182, 387, 183, 400, 192,
525   182, 398, 299, 184, 184, 184, 401, 183, 269, 269,
526    21, 152, 183, 406, 410, 414, 438, 441, 186, 186,
527   442, 450, 455, 460, 451, 452, 152, 453, 462, 184,
528   317, 457, 459, 458, 186, 192, 192, 463, 461, 184,
529   464, 185, 185, 185, 184, 465, 466, 78, 415, 78,
530   467, 192, 78, 468, 470, 479, 480, 485, 78, 268,
531   268, 268, 268, 486, 78, 492, 495, 185, 436, 493,
532   502, 78, 503, 78, 505, 509, 519, 185, 516, 511,
533   443, 78, 185, 526, 269, 269, 269, 269, 517, 518,
534   522, 524, 78, 527, 186, 186, 186, 78, 529, 78,
535   534, 546, 78, 548, 549, 550, 552, 563, 78, 553,
536   556, 192, 192, 192, 78, 561, 557, 564, 569, 570,
537   186, 78, 568, 78, 18, 571, 572, 29, 99, 38,
538   186, 78, 289, 100, 39, 186, 118, 192, 80, 1,
539    80, 182, 78, 175, 119, 190, 71, 192, 221, 78,
540    17, 72, 192, 487, 258, 489, 112, 222, 290, 291,
541   292, 293, 294, 295, 296, 297, 298, 299, 300, 16,
542    76, 113, 114, 177, 501, 425, 268, 268, 268, 268,
543   268, 268, 268, 268, 162, 268, 268, 268, 268, 268,
544   268, 268, 268, 268, 268, 317, 268, 178, 163, 78,
545    58, 269, 269, 269, 269, 269, 269, 269, 269, 66,
546   269, 269, 269, 269, 269, 269, 269, 269, 269, 269,
547   286, 269, 286, 108, 286, 286, 286, 314, 313, 198,
548   507, 23, 404, 59, 67, 286, 286, 286, 558, 23,
549   286, 286, 286, 360, 478, 559, 536, 250, 23, 286,
550   286, 286, 371, 268, 554, 23, 268, 488, 23, 454,
551    23, 433, 432, 23, 23, 23, 434, 21, 23, 23,
552   435, 437, 23, 399, 0, 21, 23, 515, 269, 23,
553     0, 269, 0, 0, 21, 0, 154, 23, 0, 208,
554     0, 154, 154, 208, 21, 0, 21, 0, 0, 21,
555    21, 21, 154, 17, 21, 21, 0, 0, 21, 208,
556   208, 39, 21, 0, 0, 21, 0, 0, 0, 0,
557    19, 0, 0, 21, 268, 268, 0, 0, 268, 0,
558    40, 0, 21, 0, 0, 22, 23, 24, 0, 0,
559    25, 26, 0, 0, 27, 0, 0, 0, 28, 269,
560   269, 29, 0, 269, 188, 188, 188, 188, 188, 188,
561     0, 188, 188, 0, 188, 188, 188, 188, 188, 0,
562     0, 188, 191, 188, 188, 0, 188, 0, 0, 0,
563   188, 0, 188, 188, 188, 0, 188, 188, 188, 188,
564   188, 188, 188, 188, 188, 188, 188, 188, 0, 188,
565   188, 188, 188, 188, 188, 304, 188, 188, 0, 0,
566   188, 0, 0, 0, 0, 0, 0, 0, 249, 249,
567     0, 0, 0, 0, 0, 0, 0, 0, 188, 188,
568     0, 304, 304, 304, 304, 304, 304, 304, 304, 304,
569   304, 304, 0, 0, 0, 0, 0, 0, 15, 0,
570     0, 0, 188, 188, 188, 188, 188, 188, 188, 155,
571   155, 155, 155, 155, 155, 0, 155, 155, 0, 155,
572   155, 155, 155, 0, 0, 0, 155, 0, 155, 155,
573     0, 155, 0, 0, 0, 155, 0, 155, 155, 155,
574     0, 155, 155, 155, 155, 155, 155, 155, 155, 155,
575   155, 155, 155, 0, 155, 155, 155, 155, 155, 155,
576     0, 155, 155, 0, 0, 155, 0, 0, 0, 0,
577   287, 0, 287, 0, 287, 287, 287, 0, 0, 0,
578     0, 0, 0, 155, 155, 287, 287, 287, 0, 0,
579   287, 287, 287, 0, 0, 0, 0, 0, 0, 287,
580   287, 287, 0, 0, 0, 0, 0, 155, 155, 155,
581   155, 155, 155, 155, 17, 123, 70, 124, 71, 539,
582     0, 72, 18, 0, 125, 540, 126, 73, 0, 0,
583     0, 127, 0, 74, 128, 0, 129, 0, 0, 0,
584    75, 0, 76, 21, 130, 0, 22, 23, 24, 131,
585    77, 25, 26, 132, 133, 134, 135, 136, 0, 28,
586   137, 78, 29, 138, 139, 0, 95, 0, 0, 0,
587   140, 0, 0, 0, 0, 288, 0, 288, 0, 288,
588   288, 288, 0, 0, 0, 0, 0, 0, 141, 142,
589   288, 288, 288, 0, 0, 288, 288, 288, 0, 0,
590     0, 0, 0, 0, 288, 288, 288, 0, 0, 0,
591     0, 0, 143, 144, 145, 146, 147, 148, 149, 17,
592   123, 70, 124, 71, 0, 0, 72, 18, 0, 125,
593     0, 126, 73, 0, 0, 0, 127, 0, 74, 128,
594     0, 129, 0, 0, 0, 75, 0, 76, 21, 130,
595     0, 22, 23, 24, 131, 77, 25, 26, 472, 133,
596   134, 473, 136, 0, 28, 137, 78, 29, 138, 139,
597     0, 95, 474, 0, 289, 140, 289, 0, 289, 289,
598   289, 0, 0, 0, 0, 0, 0, 0, 0, 289,
599   289, 0, 0, 141, 142, 289, 289, 0, 0, 0,
600     0, 0, 0, 289, 289, 289, 0, 0, 0, 0,
601     0, 0, 0, 0, 0, 0, 0, 143, 144, 145,
602   146, 147, 148, 149, 17, 123, 70, 124, 71, 0,
603     0, 72, 18, 0, 125, 0, 126, 73, 0, 0,
604     0, 127, 0, 74, 128, 0, 129, 0, 0, 0,
605    75, 0, 76, 21, 130, 0, 22, 23, 24, 131,
606    77, 25, 26, 132, 133, 134, 135, 136, 0, 28,
607   137, 78, 29, 138, 139, 0, 95, 0, 0, 290,
608   140, 290, 0, 290, 290, 290, 0, 0, 0, 0,
609     0, 0, 0, 0, 290, 290, 0, 0, 141, 142,
610   290, 290, 0, 0, 0, 0, 0, 0, 290, 290,
611   290, 0, 0, 0, 0, 0, 0, 0, 0, 0,
612     0, 0, 143, 144, 145, 146, 147, 148, 149, 17,
613     0, 70, 0, 71, 0, 0, 72, 18, 0, 0,
614     0, 0, 73, 0, 0, 0, 19, 0, 74, 0,
615     0, 0, 0, 0, 0, 75, 20, 76, 21, 0,
616     0, 22, 23, 24, 0, 77, 25, 26, 0, 0,
617    27, 17, 0, 70, 28, 71, 78, 29, 72, 18,
618     0, 95, 96, 0, 73, 97, 0, 0, 19, 0,
619    74, 0, 0, 0, 0, 0, 0, 75, 20, 76,
620    21, 0, 0, 22, 23, 24, 0, 77, 25, 26,
621     0, 0, 27, 17, 0, 70, 28, 71, 78, 29,
622    72, 39, 0, 0, 79, 0, 73, 80, 0, 0,
623    19, 0, 74, 98, 0, 0, 0, 0, 0, 75,
624    40, 76, 21, 0, 0, 22, 23, 24, 0, 77,
625    25, 26, 0, 0, 27, 17, 0, 70, 28, 71,
626    78, 29, 72, 39, 0, 95, 0, 0, 73, 0,
627     0, 0, 19, 0, 74, 4, 0, 0, 0, 0,
628     0, 75, 40, 76, 21, 0, 0, 22, 23, 24,
629     0, 77, 25, 26, 0, 0, 27, 0, 0, 0,
630    28, 0, 78, 29, 0, 0, 0, 123, 70, 124,
631    71, 0, 0, 72, 0, 0, 125, 98, 126, 73,
632     0, 0, 0, 0, 0, 74, 128, 0, 129, 0,
633     0, 0, 75, 0, 76, 0, 130, 0, 0, 0,
634     0, 131, 77, 0, 0, 132, 133, 251, 135, 136,
635   334, 0, 137, 78, 334, 138, 139, 334, 95, 4,
636     0, 0, 140, 0, 0, 0, 0, 0, 0, 0,
637   334, 334, 0, 0, 0, 0, 0, 0, 0, 0,
638   141, 142, 0, 334, 334, 334, 334, 334, 334, 334,
639   334, 334, 334, 334, 0, 0, 0, 0, 0, 0,
640   334, 0, 0, 0, 143, 144, 145, 146, 147, 148,
641   149, 70, 0, 71, 0, 0, 72, 0, 0, 0,
642     0, 0, 73, 0, 0, 296, 0, 296, 74, 296,
643   296, 296, 0, 0, 0, 75, 0, 76, 0, 130,
644   296, 296, 0, 0, 0, 77, 296, 296, 132, 0,
645     0, 135, 0, 70, 0, 71, 78, 0, 72, 216,
646     0, 315, 0, 0, 73, 0, 0, 0, 0, 0,
647    74, 0, 0, 217, 218, 0, 0, 75, 0, 76,
648     0, 130, 0, 141, 142, 219, 220, 77, 0, 0,
649   132, 0, 0, 135, 0, 0, 0, 0, 78, 0,
650     0, 216, 0, 0, 0, 0, 212, 143, 144, 145,
651   146, 147, 148, 221, 0, 217, 218, 0, 297, 0,
652   297, 0, 297, 297, 297, 141, 142, 219, 220, 0,
653     0, 17, 0, 297, 297, 0, 0, 0, 0, 39,
654   297, 0, 0, 0, 0, 0, 0, 0, 19, 143,
655   144, 145, 146, 147, 148, 221, 70, 0, 71, 0,
656    21, 72, 0, 22, 23, 24, 0, 73, 25, 26,
657     0, 0, 27, 74, 0, 0, 28, 0, 0, 29,
658    75, 0, 76, 0, 130, 0, 0, 0, 0, 0,
659    77, 0, 0, 132, 0, 0, 135, 0, 70, 0,
660    71, 78, 0, 72, 216, 0, 0, 0, 0, 73,
661     0, 0, 0, 359, 0, 74, 0, 0, 217, 218,
662     0, 0, 75, 0, 76, 0, 130, 0, 141, 142,
663   219, 220, 77, 0, 0, 132, 280, 0, 135, 0,
664     0, 0, 0, 78, 0, 0, 139, 0, 0, 0,
665     0, 0, 143, 144, 145, 146, 147, 148, 221, 0,
666     0, 0, 280, 0, 280, 0, 280, 280, 280, 0,
667   141, 142, 0, 280, 280, 0, 0, 280, 280, 280,
668   280, 280, 280, 280, 280, 0, 0, 0, 0, 0,
669     0, 280, 280, 280, 143, 144, 145, 146, 147, 148,
670   221, 70, 0, 71, 0, 0, 72, 0, 0, 0,
671     0, 0, 73, 0, 0, 298, 0, 298, 74, 298,
672   298, 298, 0, 0, 0, 75, 0, 76, 0, 130,
673   298, 298, 0, 0, 70, 77, 71, 298, 132, 72,
674     0, 135, 0, 0, 0, 73, 78, 0, 0, 216,
675     0, 74, 0, 0, 0, 0, 0, 0, 75, 0,
676    76, 0, 130, 217, 218, 0, 0, 0, 77, 0,
677     0, 132, 0, 0, 135, 0, 328, 0, 0, 78,
678     0, 0, 139, 0, 328, 0, 0, 0, 0, 0,
679     0, 0, 0, 328, 0, 0, 0, 143, 144, 145,
680   146, 147, 148, 221, 0, 328, 141, 142, 328, 328,
681   328, 334, 0, 328, 328, 0, 0, 328, 0, 0,
682     0, 328, 0, 0, 328, 0, 0, 0, 0, 0,
683   143, 144, 145, 146, 147, 148, 221, 334, 0, 334,
684   334, 334, 334, 334, 334, 0, 0, 334, 334, 334,
685     0, 0, 334, 334, 334, 334, 334, 334, 334, 334,
686   334, 334, 334, 334, 334, 334, 334, 334, 334, 334,
687   334, 334, 334, 334, 334, 334, 334, 334, 334, 334,
688   334, 334, 334, 334, 335, 0, 0, 0, 0, 0,
689   334, 0, 0, 0, 0, 0, 0, 0, 0, 0,
690     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
691   335, 0, 335, 335, 335, 335, 335, 335, 0, 0,
692   335, 335, 335, 0, 0, 335, 335, 335, 335, 335,
693   335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
694   335, 335, 335, 335, 335, 335, 335, 335, 335, 335,
695   335, 335, 335, 335, 335, 335, 335, 15, 0, 0,
696   291, 0, 291, 335, 291, 291, 291, 0, 0, 0,
697     0, 0, 0, 0, 0, 291, 291, 0, 0, 0,
698     0, 291, 291, 15, 0, 15, 0, 15, 15, 15,
699   291, 291, 15, 0, 15, 15, 17, 0, 15, 15,
700    15, 15, 15, 15, 15, 15, 0, 0, 0, 0,
701     0, 0, 15, 15, 15, 0, 0, 0, 0, 0,
702     0, 0, 17, 0, 17, 0, 17, 17, 17, 0,
703     0, 17, 0, 17, 17, 16, 15, 17, 17, 17,
704    17, 17, 17, 17, 17, 0, 0, 0, 0, 0,
705     0, 17, 17, 17, 0, 0, 0, 0, 0, 0,
706     0, 16, 0, 16, 0, 16, 16, 16, 0, 0,
707    16, 0, 16, 16, 209, 17, 16, 16, 16, 16,
708    16, 16, 16, 16, 0, 0, 0, 0, 0, 0,
709    16, 16, 16, 0, 0, 0, 0, 0, 0, 0,
710   209, 0, 209, 209, 209, 209, 209, 209, 0, 0,
711   305, 209, 209, 0, 16, 209, 209, 209, 209, 209,
712   209, 209, 209, 209, 209, 209, 209, 209, 209, 209,
713   209, 209, 209, 209, 209, 209, 305, 305, 305, 305,
714   305, 305, 305, 305, 305, 305, 305, 211, 0, 0,
715     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
716     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
717     0, 0, 0, 211, 0, 211, 211, 211, 211, 211,
718   211, 0, 0, 306, 211, 211, 0, 0, 211, 211,
719   211, 211, 211, 211, 211, 211, 211, 211, 211, 211,
720   211, 211, 211, 211, 211, 211, 211, 211, 211, 306,
721   306, 306, 306, 306, 306, 306, 306, 306, 306, 306,
722   239, 0, 0, 0, 0, 0, 0, 0, 0, 0,
723     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
724     0, 0, 0, 0, 0, 0, 239, 0, 239, 239,
725   239, 239, 239, 239, 0, 0, 239, 239, 239, 0,
726     0, 239, 239, 239, 239, 239, 239, 239, 239, 239,
727   239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
728   239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
729   239, 239, 239, 238, 0, 0, 0, 0, 0, 0,
730     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
731     0, 0, 0, 0, 0, 0, 0, 0, 0, 238,
732     0, 238, 238, 238, 238, 238, 238, 0, 0, 238,
733   238, 238, 0, 0, 238, 238, 238, 238, 238, 238,
734   238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
735   238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
736   238, 238, 238, 238, 238, 238, 240, 0, 0, 0,
737     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
738     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
739     0, 0, 240, 0, 240, 240, 240, 240, 240, 240,
740     0, 0, 240, 240, 240, 0, 0, 240, 240, 240,
741   240, 240, 240, 240, 240, 240, 240, 240, 240, 240,
742   240, 240, 240, 240, 240, 240, 240, 240, 240, 240,
743   240, 240, 240, 240, 240, 240, 240, 240, 240, 249,
744     0, 0, 292, 0, 292, 0, 292, 292, 292, 0,
745     0, 0, 0, 0, 0, 0, 0, 292, 292, 0,
746     0, 0, 0, 292, 292, 249, 0, 249, 0, 249,
747   249, 249, 292, 292, 0, 304, 249, 249, 0, 0,
748   249, 249, 249, 249, 249, 249, 249, 249, 249, 249,
749   249, 249, 249, 249, 249, 249, 249, 249, 249, 249,
750   249, 304, 304, 304, 304, 304, 304, 304, 304, 304,
751   304, 304, 249, 293, 0, 293, 0, 293, 293, 293,
752     0, 0, 0, 0, 0, 0, 0, 0, 293, 293,
753     0, 0, 0, 0, 293, 293, 0, 0, 249, 0,
754     0, 0, 0, 293, 0, 0, 0, 0, 304, 249,
755   249, 0, 0, 249, 0, 249, 249, 249, 249, 249,
756   249, 249, 249, 249, 249, 249, 249, 249, 249, 249,
757   249, 249, 249, 249, 304, 304, 304, 304, 304, 304,
758   304, 304, 304, 304, 304, 207, 0, 0, 0, 0,
759     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
760     0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
761     0, 207, 0, 207, 207, 207, 207, 207, 207, 0,
762     0, 225, 207, 207, 0, 0, 207, 207, 207, 207,
763   207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
764   207, 207, 207, 207, 207, 207, 207, 225, 0, 225,
765   225, 225, 225, 225, 225, 0, 0, 198, 225, 225,
766     0, 0, 225, 225, 225, 225, 225, 225, 225, 225,
767   225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
768   225, 225, 225, 198, 0, 198, 0, 198, 198, 198,
769   198, 0, 0, 228, 198, 198, 0, 0, 198, 198,
770   198, 198, 198, 198, 198, 198, 198, 198, 198, 198,
771   198, 198, 198, 198, 198, 198, 198, 198, 198, 228,
772     0, 228, 0, 228, 228, 228, 228, 0, 0, 230,
773   228, 228, 0, 0, 228, 228, 228, 228, 228, 228,
774   228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
775   228, 228, 228, 228, 228, 230, 0, 230, 0, 230,
776   230, 230, 230, 0, 0, 227, 230, 230, 0, 0,
777   230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
778   230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
779   230, 227, 0, 227, 0, 227, 227, 227, 227, 0,
780     0, 229, 227, 227, 0, 0, 227, 227, 227, 227,
781   227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
782   227, 227, 227, 227, 227, 227, 227, 229, 0, 229,
783     0, 229, 229, 229, 229, 0, 0, 248, 229, 229,
784     0, 0, 229, 229, 229, 229, 229, 229, 229, 229,
785   229, 229, 229, 229, 229, 229, 229, 229, 229, 229,
786   229, 229, 229, 248, 0, 248, 0, 248, 248, 248,
787     0, 0, 0, 249, 248, 248, 0, 0, 248, 248,
788   248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
789   248, 248, 248, 248, 248, 248, 248, 248, 248, 249,
790     0, 249, 0, 249, 249, 249, 0, 0, 0, 261,
791   249, 249, 0, 0, 249, 249, 249, 249, 249, 249,
792   249, 249, 249, 249, 249, 249, 249, 249, 249, 249,
793   249, 249, 249, 249, 249, 261, 0, 261, 0, 261,
794   261, 261, 0, 0, 0, 273, 261, 261, 0, 0,
795   261, 261, 261, 261, 261, 261, 261, 261, 0, 0,
796   261, 261, 261, 261, 261, 261, 261, 261, 261, 261,
797   261, 273, 0, 273, 0, 273, 273, 273, 0, 0,
798     0, 274, 273, 273, 0, 0, 273, 273, 273, 273,
799   273, 273, 273, 273, 0, 0, 273, 273, 0, 0,
800   273, 273, 273, 0, 273, 273, 273, 274, 0, 274,
801     0, 274, 274, 274, 0, 0, 0, 275, 274, 274,
802     0, 0, 274, 274, 274, 274, 274, 274, 274, 274,
803     0, 0, 274, 274, 0, 0, 274, 274, 274, 0,
804   274, 274, 274, 275, 0, 275, 0, 275, 275, 275,
805     0, 0, 0, 276, 275, 275, 0, 0, 275, 275,
806   275, 275, 275, 275, 275, 275, 0, 0, 275, 275,
807     0, 0, 275, 275, 275, 0, 275, 275, 275, 276,
808     0, 276, 0, 276, 276, 276, 0, 0, 0, 277,
809   276, 276, 0, 0, 276, 276, 276, 276, 276, 276,
810   276, 276, 0, 0, 0, 0, 0, 0, 276, 276,
811   276, 0, 276, 276, 276, 277, 0, 277, 0, 277,
812   277, 277, 0, 0, 0, 278, 277, 277, 0, 0,
813   277, 277, 277, 277, 277, 277, 277, 277, 0, 0,
814     0, 0, 0, 0, 277, 277, 277, 0, 277, 277,
815   277, 278, 0, 278, 0, 278, 278, 278, 0, 0,
816     0, 279, 278, 278, 0, 0, 278, 278, 278, 278,
817   278, 278, 278, 278, 0, 0, 0, 0, 0, 0,
818   278, 278, 278, 0, 278, 278, 278, 279, 0, 279,
819     0, 279, 279, 279, 0, 0, 0, 282, 279, 279,
820     0, 0, 279, 279, 279, 279, 279, 279, 279, 279,
821     0, 0, 0, 0, 0, 0, 279, 279, 279, 0,
822   279, 279, 279, 282, 0, 282, 0, 282, 282, 282,
823   281, 0, 0, 0, 282, 282, 0, 0, 282, 282,
824   282, 282, 282, 282, 282, 282, 0, 0, 0, 0,
825     0, 0, 282, 282, 282, 0, 281, 0, 281, 0,
826   281, 281, 281, 283, 0, 0, 0, 281, 281, 0,
827     0, 281, 281, 281, 281, 281, 281, 281, 281, 0,
828     0, 0, 0, 0, 0, 281, 281, 281, 0, 283,
829     0, 283, 0, 283, 283, 283, 284, 0, 0, 0,
830   283, 283, 0, 0, 283, 283, 283, 283, 283, 283,
831   283, 283, 0, 0, 0, 0, 0, 0, 283, 283,
832   283, 0, 284, 0, 284, 0, 284, 284, 284, 0,
833     0, 0, 0, 284, 284, 0, 0, 284, 284, 284,
834   284, 284, 284, 284, 284, 0, 17, 0, 0, 0,
835     0, 284, 284, 284, 18, 294, 0, 294, 0, 294,
836   294, 294, 0, 19, 0, 0, 0, 0, 0, 0,
837   294, 294, 0, 20, 0, 21, 294, 294, 22, 23,
838    24, 329, 0, 25, 26, 294, 0, 27, 0, 329,
839     0, 28, 0, 0, 29, 0, 0, 0, 329, 0,
840     0, 0, 30, 0, 0, 0, 0, 0, 0, 0,
841   329, 0, 0, 329, 329, 329, 0, 0, 329, 329,
842     0, 0, 329, 0, 0, 0, 329, 0, 0, 329,
843 };
844 }
845 static short yycheck[];
846 static { yycheck(); }
847 static void yycheck() {
848 yycheck = new short[] { 1,
849   126, 159, 65, 315, 254, 68, 52, 122, 287, 414,
850    99, 317, 95, 287, 16, 65, 117, 34, 68, 401,
851    95, 307, 296, 68, 262, 265, 307, 90, 10, 280,
852   268, 280, 309, 122, 315, 150, 313, 314, 324, 102,
853    90, 53, 44, 126, 46, 95, 10, 287, 335, 288,
854    52, 126, 102, 369, 66, 361, 296, 102, 309, 299,
855   309, 307, 64, 65, 127, 110, 68, 95, 265, 315,
856   361, 453, 310, 90, 361, 281, 159, 127, 483, 95,
857   130, 196, 361, 65, 159, 102, 68, 361, 90, 87,
858   287, 311, 137, 95, 195, 315, 323, 198, 126, 296,
859   102, 65, 299, 330, 68, 141, 142, 196, 307, 159,
860   126, 95, 311, 308, 215, 113, 315, 361, 313, 314,
861   118, 361, 313, 318, 262, 127, 313, 314, 130, 324,
862   268, 159, 282, 324, 450, 313, 314, 154, 253, 141,
863   142, 361, 126, 159, 313, 314, 324, 273, 464, 95,
864   301, 467, 294, 151, 152, 301, 202, 159, 309, 331,
865   332, 313, 313, 309, 361, 361, 216, 313, 480, 319,
866   320, 254, 324, 361, 311, 159, 326, 327, 315, 254,
867   126, 217, 218, 219, 220, 313, 502, 273, 313, 505,
868   273, 441, 508, 509, 331, 332, 324, 313, 273, 324,
869   202, 311, 95, 273, 254, 315, 308, 308, 324, 313,
870   526, 313, 314, 159, 216, 217, 218, 219, 220, 95,
871   324, 313, 324, 315, 222, 223, 254, 335, 336, 331,
872   332, 361, 340, 126, 308, 551, 552, 311, 254, 308,
873   307, 315, 311, 306, 311, 273, 315, 405, 308, 311,
874   126, 311, 254, 315, 361, 315, 306, 273, 256, 257,
875   259, 325, 261, 315, 328, 264, 159, 517, 309, 267,
876   254, 270, 313, 314, 309, 308, 274, 276, 313, 65,
877   313, 314, 68, 159, 283, 318, 285, 280, 313, 273,
878   315, 324, 342, 546, 293, 548, 359, 308, 334, 335,
879   336, 309, 313, 314, 306, 304, 313, 314, 254, 359,
880   313, 318, 361, 324, 311, 311, 442, 309, 315, 315,
881   331, 332, 405, 314, 311, 323, 324, 273, 315, 301,
882   405, 457, 334, 335, 336, 337, 338, 339, 340, 341,
883   342, 343, 344, 345, 346, 347, 348, 349, 350, 351,
884   352, 309, 354, 311, 311, 405, 311, 359, 441, 442,
885   315, 254, 361, 341, 342, 343, 441, 442, 123, 367,
886   339, 340, 341, 371, 457, 411, 131, 405, 254, 309,
887   273, 136, 457, 313, 139, 307, 309, 366, 312, 405,
888   313, 370, 518, 519, 367, 333, 334, 273, 371, 308,
889   558, 318, 311, 405, 313, 314, 315, 452, 311, 411,
890   455, 361, 414, 441, 442, 324, 343, 344, 345, 346,
891   307, 405, 331, 332, 307, 441, 442, 553, 307, 457,
892   331, 332, 337, 338, 517, 518, 519, 347, 348, 307,
893   315, 457, 517, 518, 519, 309, 482, 307, 361, 315,
894   308, 310, 310, 208, 312, 313, 314, 441, 442, 405,
895   543, 216, 313, 313, 311, 323, 324, 274, 543, 309,
896   553, 329, 330, 457, 313, 558, 312, 475, 553, 524,
897   482, 483, 307, 558, 486, 337, 339, 329, 306, 517,
898   518, 519, 338, 543, 313, 441, 442, 313, 311, 313,
899   255, 517, 518, 519, 0, 361, 261, 262, 558, 313,
900   265, 457, 405, 141, 142, 543, 308, 263, 310, 308,
901   312, 313, 314, 278, 314, 553, 265, 543, 308, 405,
902   558, 286, 324, 517, 518, 519, 314, 553, 141, 142,
903     0, 543, 558, 308, 313, 308, 307, 314, 441, 442,
904   308, 307, 275, 265, 308, 308, 558, 307, 361, 543,
905   315, 308, 314, 308, 457, 441, 442, 315, 312, 553,
906   307, 517, 518, 519, 558, 265, 361, 259, 333, 261,
907   307, 457, 264, 312, 317, 310, 314, 313, 270, 217,
908   218, 219, 220, 324, 276, 312, 309, 543, 353, 308,
909   307, 283, 361, 285, 307, 307, 271, 553, 308, 315,
910   365, 293, 558, 307, 217, 218, 219, 220, 313, 308,
911   308, 308, 304, 308, 517, 518, 519, 259, 308, 261,
912   313, 308, 264, 308, 308, 308, 307, 313, 270, 308,
913   324, 517, 518, 519, 276, 308, 310, 313, 308, 308,
914   543, 283, 324, 285, 0, 313, 313, 361, 309, 309,
915   553, 293, 318, 309, 309, 558, 310, 543, 309, 361,
916   313, 313, 304, 313, 310, 275, 308, 553, 308, 361,
917   361, 308, 558, 438, 439, 440, 310, 308, 344, 345,
918   346, 347, 348, 349, 350, 351, 352, 353, 354, 361,
919   361, 310, 310, 308, 459, 342, 334, 335, 336, 337,
920   338, 339, 340, 341, 310, 343, 344, 345, 346, 347,
921   348, 349, 350, 351, 352, 480, 354, 308, 310, 361,
922    48, 334, 335, 336, 337, 338, 339, 340, 341, 58,
923   343, 344, 345, 346, 347, 348, 349, 350, 351, 352,
924   308, 354, 310, 68, 312, 313, 314, 207, 204, 102,
925   471, 257, 309, 49, 59, 323, 324, 325, 543, 265,
926   328, 329, 330, 254, 405, 543, 517, 125, 274, 337,
927   338, 339, 257, 411, 539, 281, 414, 439, 284, 378,
928   286, 350, 349, 289, 290, 291, 351, 257, 294, 295,
929   352, 354, 298, 301, -1, 265, 302, 486, 411, 305,
930    -1, 414, -1, -1, 274, -1, 308, 313, -1, 311,
931    -1, 313, 314, 315, 284, -1, 286, -1, -1, 289,
932   290, 291, 324, 257, 294, 295, -1, -1, 298, 331,
933   332, 265, 302, -1, -1, 305, -1, -1, -1, -1,
934   274, -1, -1, 313, 482, 483, -1, -1, 486, -1,
935   284, -1, 286, -1, -1, 289, 290, 291, -1, -1,
936   294, 295, -1, -1, 298, -1, -1, -1, 302, 482,
937   483, 305, -1, 486, 257, 258, 259, 260, 261, 262,
938    -1, 264, 265, -1, 267, 268, 269, 270, 271, -1,
939    -1, 274, 275, 276, 277, -1, 279, -1, -1, -1,
940   283, -1, 285, 286, 287, -1, 289, 290, 291, 292,
941   293, 294, 295, 296, 297, 298, 299, 300, -1, 302,
942   303, 304, 305, 306, 307, 318, 309, 310, -1, -1,
943   313, -1, -1, -1, -1, -1, -1, -1, 331, 332,
944    -1, -1, -1, -1, -1, -1, -1, -1, 331, 332,
945    -1, 344, 345, 346, 347, 348, 349, 350, 351, 352,
946   353, 354, -1, -1, -1, -1, -1, -1, 361, -1,
947    -1, -1, 355, 356, 357, 358, 359, 360, 361, 257,
948   258, 259, 260, 261, 262, -1, 264, 265, -1, 267,
949   268, 269, 270, -1, -1, -1, 274, -1, 276, 277,
950    -1, 279, -1, -1, -1, 283, -1, 285, 286, 287,
951    -1, 289, 290, 291, 292, 293, 294, 295, 296, 297,
952   298, 299, 300, -1, 302, 303, 304, 305, 306, 307,
953    -1, 309, 310, -1, -1, 313, -1, -1, -1, -1,
954   308, -1, 310, -1, 312, 313, 314, -1, -1, -1,
955    -1, -1, -1, 331, 332, 323, 324, 325, -1, -1,
956   328, 329, 330, -1, -1, -1, -1, -1, -1, 337,
957   338, 339, -1, -1, -1, -1, -1, 355, 356, 357,
958   358, 359, 360, 361, 257, 258, 259, 260, 261, 262,
959    -1, 264, 265, -1, 267, 268, 269, 270, -1, -1,
960    -1, 274, -1, 276, 277, -1, 279, -1, -1, -1,
961   283, -1, 285, 286, 287, -1, 289, 290, 291, 292,
962   293, 294, 295, 296, 297, 298, 299, 300, -1, 302,
963   303, 304, 305, 306, 307, -1, 309, -1, -1, -1,
964   313, -1, -1, -1, -1, 308, -1, 310, -1, 312,
965   313, 314, -1, -1, -1, -1, -1, -1, 331, 332,
966   323, 324, 325, -1, -1, 328, 329, 330, -1, -1,
967    -1, -1, -1, -1, 337, 338, 339, -1, -1, -1,
968    -1, -1, 355, 356, 357, 358, 359, 360, 361, 257,
969   258, 259, 260, 261, -1, -1, 264, 265, -1, 267,
970    -1, 269, 270, -1, -1, -1, 274, -1, 276, 277,
971    -1, 279, -1, -1, -1, 283, -1, 285, 286, 287,
972    -1, 289, 290, 291, 292, 293, 294, 295, 296, 297,
973   298, 299, 300, -1, 302, 303, 304, 305, 306, 307,
974    -1, 309, 310, -1, 308, 313, 310, -1, 312, 313,
975   314, -1, -1, -1, -1, -1, -1, -1, -1, 323,
976   324, -1, -1, 331, 332, 329, 330, -1, -1, -1,
977    -1, -1, -1, 337, 338, 339, -1, -1, -1, -1,
978    -1, -1, -1, -1, -1, -1, -1, 355, 356, 357,
979   358, 359, 360, 361, 257, 258, 259, 260, 261, -1,
980    -1, 264, 265, -1, 267, -1, 269, 270, -1, -1,
981    -1, 274, -1, 276, 277, -1, 279, -1, -1, -1,
982   283, -1, 285, 286, 287, -1, 289, 290, 291, 292,
983   293, 294, 295, 296, 297, 298, 299, 300, -1, 302,
984   303, 304, 305, 306, 307, -1, 309, -1, -1, 308,
985   313, 310, -1, 312, 313, 314, -1, -1, -1, -1,
986    -1, -1, -1, -1, 323, 324, -1, -1, 331, 332,
987   329, 330, -1, -1, -1, -1, -1, -1, 337, 338,
988   339, -1, -1, -1, -1, -1, -1, -1, -1, -1,
989    -1, -1, 355, 356, 357, 358, 359, 360, 361, 257,
990    -1, 259, -1, 261, -1, -1, 264, 265, -1, -1,
991    -1, -1, 270, -1, -1, -1, 274, -1, 276, -1,
992    -1, -1, -1, -1, -1, 283, 284, 285, 286, -1,
993    -1, 289, 290, 291, -1, 293, 294, 295, -1, -1,
994   298, 257, -1, 259, 302, 261, 304, 305, 264, 265,
995    -1, 309, 310, -1, 270, 313, -1, -1, 274, -1,
996   276, -1, -1, -1, -1, -1, -1, 283, 284, 285,
997   286, -1, -1, 289, 290, 291, -1, 293, 294, 295,
998    -1, -1, 298, 257, -1, 259, 302, 261, 304, 305,
999   264, 265, -1, -1, 310, -1, 270, 313, -1, -1,
1000  274, -1, 276, 361, -1, -1, -1, -1, -1, 283,
1001  284, 285, 286, -1, -1, 289, 290, 291, -1, 293,
1002  294, 295, -1, -1, 298, 257, -1, 259, 302, 261,
1003  304, 305, 264, 265, -1, 309, -1, -1, 270, -1,
1004   -1, -1, 274, -1, 276, 361, -1, -1, -1, -1,
1005   -1, 283, 284, 285, 286, -1, -1, 289, 290, 291,
1006   -1, 293, 294, 295, -1, -1, 298, -1, -1, -1,
1007  302, -1, 304, 305, -1, -1, -1, 258, 259, 260,
1008  261, -1, -1, 264, -1, -1, 267, 361, 269, 270,
1009   -1, -1, -1, -1, -1, 276, 277, -1, 279, -1,
1010   -1, -1, 283, -1, 285, -1, 287, -1, -1, -1,
1011   -1, 292, 293, -1, -1, 296, 297, 298, 299, 300,
1012  311, -1, 303, 304, 315, 306, 307, 318, 309, 361,
1013   -1, -1, 313, -1, -1, -1, -1, -1, -1, -1,
1014  331, 332, -1, -1, -1, -1, -1, -1, -1, -1,
1015  331, 332, -1, 344, 345, 346, 347, 348, 349, 350,
1016  351, 352, 353, 354, -1, -1, -1, -1, -1, -1,
1017  361, -1, -1, -1, 355, 356, 357, 358, 359, 360,
1018  361, 259, -1, 261, -1, -1, 264, -1, -1, -1,
1019   -1, -1, 270, -1, -1, 308, -1, 310, 276, 312,
1020  313, 314, -1, -1, -1, 283, -1, 285, -1, 287,
1021  323, 324, -1, -1, -1, 293, 329, 330, 296, -1,
1022   -1, 299, -1, 259, -1, 261, 304, -1, 264, 307,
1023   -1, 309, -1, -1, 270, -1, -1, -1, -1, -1,
1024  276, -1, -1, 321, 322, -1, -1, 283, -1, 285,
1025   -1, 287, -1, 331, 332, 333, 334, 293, -1, -1,
1026  296, -1, -1, 299, -1, -1, -1, -1, 304, -1,
1027   -1, 307, -1, -1, -1, -1, 312, 355, 356, 357,
1028  358, 359, 360, 361, -1, 321, 322, -1, 308, -1,
1029  310, -1, 312, 313, 314, 331, 332, 333, 334, -1,
1030   -1, 257, -1, 323, 324, -1, -1, -1, -1, 265,
1031  330, -1, -1, -1, -1, -1, -1, -1, 274, 355,
1032  356, 357, 358, 359, 360, 361, 259, -1, 261, -1,
1033  286, 264, -1, 289, 290, 291, -1, 270, 294, 295,
1034   -1, -1, 298, 276, -1, -1, 302, -1, -1, 305,
1035  283, -1, 285, -1, 287, -1, -1, -1, -1, -1,
1036  293, -1, -1, 296, -1, -1, 299, -1, 259, -1,
1037  261, 304, -1, 264, 307, -1, -1, -1, -1, 270,
1038   -1, -1, -1, 274, -1, 276, -1, -1, 321, 322,
1039   -1, -1, 283, -1, 285, -1, 287, -1, 331, 332,
1040  333, 334, 293, -1, -1, 296, 282, -1, 299, -1,
1041   -1, -1, -1, 304, -1, -1, 307, -1, -1, -1,
1042   -1, -1, 355, 356, 357, 358, 359, 360, 361, -1,
1043   -1, -1, 308, -1, 310, -1, 312, 313, 314, -1,
1044  331, 332, -1, 319, 320, -1, -1, 323, 324, 325,
1045  326, 327, 328, 329, 330, -1, -1, -1, -1, -1,
1046   -1, 337, 338, 339, 355, 356, 357, 358, 359, 360,
1047  361, 259, -1, 261, -1, -1, 264, -1, -1, -1,
1048   -1, -1, 270, -1, -1, 308, -1, 310, 276, 312,
1049  313, 314, -1, -1, -1, 283, -1, 285, -1, 287,
1050  323, 324, -1, -1, 259, 293, 261, 330, 296, 264,
1051   -1, 299, -1, -1, -1, 270, 304, -1, -1, 307,
1052   -1, 276, -1, -1, -1, -1, -1, -1, 283, -1,
1053  285, -1, 287, 321, 322, -1, -1, -1, 293, -1,
1054   -1, 296, -1, -1, 299, -1, 257, -1, -1, 304,
1055   -1, -1, 307, -1, 265, -1, -1, -1, -1, -1,
1056   -1, -1, -1, 274, -1, -1, -1, 355, 356, 357,
1057  358, 359, 360, 361, -1, 286, 331, 332, 289, 290,
1058  291, 282, -1, 294, 295, -1, -1, 298, -1, -1,
1059   -1, 302, -1, -1, 305, -1, -1, -1, -1, -1,
1060  355, 356, 357, 358, 359, 360, 361, 308, -1, 310,
1061  311, 312, 313, 314, 315, -1, -1, 318, 319, 320,
1062   -1, -1, 323, 324, 325, 326, 327, 328, 329, 330,
1063  331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
1064  341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
1065  351, 352, 353, 354, 282, -1, -1, -1, -1, -1,
1066  361, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1067   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1068  308, -1, 310, 311, 312, 313, 314, 315, -1, -1,
1069  318, 319, 320, -1, -1, 323, 324, 325, 326, 327,
1070  328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
1071  338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
1072  348, 349, 350, 351, 352, 353, 354, 282, -1, -1,
1073  308, -1, 310, 361, 312, 313, 314, -1, -1, -1,
1074   -1, -1, -1, -1, -1, 323, 324, -1, -1, -1,
1075   -1, 329, 330, 308, -1, 310, -1, 312, 313, 314,
1076  338, 339, 317, -1, 319, 320, 282, -1, 323, 324,
1077  325, 326, 327, 328, 329, 330, -1, -1, -1, -1,
1078   -1, -1, 337, 338, 339, -1, -1, -1, -1, -1,
1079   -1, -1, 308, -1, 310, -1, 312, 313, 314, -1,
1080   -1, 317, -1, 319, 320, 282, 361, 323, 324, 325,
1081  326, 327, 328, 329, 330, -1, -1, -1, -1, -1,
1082   -1, 337, 338, 339, -1, -1, -1, -1, -1, -1,
1083   -1, 308, -1, 310, -1, 312, 313, 314, -1, -1,
1084  317, -1, 319, 320, 282, 361, 323, 324, 325, 326,
1085  327, 328, 329, 330, -1, -1, -1, -1, -1, -1,
1086  337, 338, 339, -1, -1, -1, -1, -1, -1, -1,
1087  308, -1, 310, 311, 312, 313, 314, 315, -1, -1,
1088  318, 319, 320, -1, 361, 323, 324, 325, 326, 327,
1089  328, 329, 330, 331, 332, 333, 334, 335, 336, 337,
1090  338, 339, 340, 341, 342, 343, 344, 345, 346, 347,
1091  348, 349, 350, 351, 352, 353, 354, 282, -1, -1,
1092   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1093   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1094   -1, -1, -1, 308, -1, 310, 311, 312, 313, 314,
1095  315, -1, -1, 318, 319, 320, -1, -1, 323, 324,
1096  325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
1097  335, 336, 337, 338, 339, 340, 341, 342, 343, 344,
1098  345, 346, 347, 348, 349, 350, 351, 352, 353, 354,
1099  282, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1100   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1101   -1, -1, -1, -1, -1, -1, 308, -1, 310, 311,
1102  312, 313, 314, 315, -1, -1, 318, 319, 320, -1,
1103   -1, 323, 324, 325, 326, 327, 328, 329, 330, 331,
1104  332, 333, 334, 335, 336, 337, 338, 339, 340, 341,
1105  342, 343, 344, 345, 346, 347, 348, 349, 350, 351,
1106  352, 353, 354, 282, -1, -1, -1, -1, -1, -1,
1107   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1108   -1, -1, -1, -1, -1, -1, -1, -1, -1, 308,
1109   -1, 310, 311, 312, 313, 314, 315, -1, -1, 318,
1110  319, 320, -1, -1, 323, 324, 325, 326, 327, 328,
1111  329, 330, 331, 332, 333, 334, 335, 336, 337, 338,
1112  339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
1113  349, 350, 351, 352, 353, 354, 282, -1, -1, -1,
1114   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1115   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1116   -1, -1, 308, -1, 310, 311, 312, 313, 314, 315,
1117   -1, -1, 318, 319, 320, -1, -1, 323, 324, 325,
1118  326, 327, 328, 329, 330, 331, 332, 333, 334, 335,
1119  336, 337, 338, 339, 340, 341, 342, 343, 344, 345,
1120  346, 347, 348, 349, 350, 351, 352, 353, 354, 282,
1121   -1, -1, 308, -1, 310, -1, 312, 313, 314, -1,
1122   -1, -1, -1, -1, -1, -1, -1, 323, 324, -1,
1123   -1, -1, -1, 329, 330, 308, -1, 310, -1, 312,
1124  313, 314, 338, 339, -1, 318, 319, 320, -1, -1,
1125  323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
1126  333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
1127  343, 344, 345, 346, 347, 348, 349, 350, 351, 352,
1128  353, 354, 282, 308, -1, 310, -1, 312, 313, 314,
1129   -1, -1, -1, -1, -1, -1, -1, -1, 323, 324,
1130   -1, -1, -1, -1, 329, 330, -1, -1, 308, -1,
1131   -1, -1, -1, 338, -1, -1, -1, -1, 318, 319,
1132  320, -1, -1, 323, -1, 325, 326, 327, 328, 329,
1133  330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
1134  340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
1135  350, 351, 352, 353, 354, 282, -1, -1, -1, -1,
1136   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1137   -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1138   -1, 308, -1, 310, 311, 312, 313, 314, 315, -1,
1139   -1, 282, 319, 320, -1, -1, 323, 324, 325, 326,
1140  327, 328, 329, 330, 331, 332, 333, 334, 335, 336,
1141  337, 338, 339, 340, 341, 342, 343, 308, -1, 310,
1142  311, 312, 313, 314, 315, -1, -1, 282, 319, 320,
1143   -1, -1, 323, 324, 325, 326, 327, 328, 329, 330,
1144  331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
1145  341, 342, 343, 308, -1, 310, -1, 312, 313, 314,
1146  315, -1, -1, 282, 319, 320, -1, -1, 323, 324,
1147  325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
1148  335, 336, 337, 338, 339, 340, 341, 342, 343, 308,
1149   -1, 310, -1, 312, 313, 314, 315, -1, -1, 282,
1150  319, 320, -1, -1, 323, 324, 325, 326, 327, 328,
1151  329, 330, 331, 332, 333, 334, 335, 336, 337, 338,
1152  339, 340, 341, 342, 343, 308, -1, 310, -1, 312,
1153  313, 314, 315, -1, -1, 282, 319, 320, -1, -1,
1154  323, 324, 325, 326, 327, 328, 329, 330, 331, 332,
1155  333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
1156  343, 308, -1, 310, -1, 312, 313, 314, 315, -1,
1157   -1, 282, 319, 320, -1, -1, 323, 324, 325, 326,
1158  327, 328, 329, 330, 331, 332, 333, 334, 335, 336,
1159  337, 338, 339, 340, 341, 342, 343, 308, -1, 310,
1160   -1, 312, 313, 314, 315, -1, -1, 282, 319, 320,
1161   -1, -1, 323, 324, 325, 326, 327, 328, 329, 330,
1162  331, 332, 333, 334, 335, 336, 337, 338, 339, 340,
1163  341, 342, 343, 308, -1, 310, -1, 312, 313, 314,
1164   -1, -1, -1, 282, 319, 320, -1, -1, 323, 324,
1165  325, 326, 327, 328, 329, 330, 331, 332, 333, 334,
1166  335, 336, 337, 338, 339, 340, 341, 342, 343, 308,
1167   -1, 310, -1, 312, 313, 314, -1, -1, -1, 282,
1168  319, 320, -1, -1, 323, 324, 325, 326, 327, 328,
1169  329, 330, 331, 332, 333, 334, 335, 336, 337, 338,
1170  339, 340, 341, 342, 343, 308, -1, 310, -1, 312,
1171  313, 314, -1, -1, -1, 282, 319, 320, -1, -1,
1172  323, 324, 325, 326, 327, 328, 329, 330, -1, -1,
1173  333, 334, 335, 336, 337, 338, 339, 340, 341, 342,
1174  343, 308, -1, 310, -1, 312, 313, 314, -1, -1,
1175   -1, 282, 319, 320, -1, -1, 323, 324, 325, 326,
1176  327, 328, 329, 330, -1, -1, 333, 334, -1, -1,
1177  337, 338, 339, -1, 341, 342, 343, 308, -1, 310,
1178   -1, 312, 313, 314, -1, -1, -1, 282, 319, 320,
1179   -1, -1, 323, 324, 325, 326, 327, 328, 329, 330,
1180   -1, -1, 333, 334, -1, -1, 337, 338, 339, -1,
1181  341, 342, 343, 308, -1, 310, -1, 312, 313, 314,
1182   -1, -1, -1, 282, 319, 320, -1, -1, 323, 324,
1183  325, 326, 327, 328, 329, 330, -1, -1, 333, 334,
1184   -1, -1, 337, 338, 339, -1, 341, 342, 343, 308,
1185   -1, 310, -1, 312, 313, 314, -1, -1, -1, 282,
1186  319, 320, -1, -1, 323, 324, 325, 326, 327, 328,
1187  329, 330, -1, -1, -1, -1, -1, -1, 337, 338,
1188  339, -1, 341, 342, 343, 308, -1, 310, -1, 312,
1189  313, 314, -1, -1, -1, 282, 319, 320, -1, -1,
1190  323, 324, 325, 326, 327, 328, 329, 330, -1, -1,
1191   -1, -1, -1, -1, 337, 338, 339, -1, 341, 342,
1192  343, 308, -1, 310, -1, 312, 313, 314, -1, -1,
1193   -1, 282, 319, 320, -1, -1, 323, 324, 325, 326,
1194  327, 328, 329, 330, -1, -1, -1, -1, -1, -1,
1195  337, 338, 339, -1, 341, 342, 343, 308, -1, 310,
1196   -1, 312, 313, 314, -1, -1, -1, 282, 319, 320,
1197   -1, -1, 323, 324, 325, 326, 327, 328, 329, 330,
1198   -1, -1, -1, -1, -1, -1, 337, 338, 339, -1,
1199  341, 342, 343, 308, -1, 310, -1, 312, 313, 314,
1200  282, -1, -1, -1, 319, 320, -1, -1, 323, 324,
1201  325, 326, 327, 328, 329, 330, -1, -1, -1, -1,
1202   -1, -1, 337, 338, 339, -1, 308, -1, 310, -1,
1203  312, 313, 314, 282, -1, -1, -1, 319, 320, -1,
1204   -1, 323, 324, 325, 326, 327, 328, 329, 330, -1,
1205   -1, -1, -1, -1, -1, 337, 338, 339, -1, 308,
1206   -1, 310, -1, 312, 313, 314, 282, -1, -1, -1,
1207  319, 320, -1, -1, 323, 324, 325, 326, 327, 328,
1208  329, 330, -1, -1, -1, -1, -1, -1, 337, 338,
1209  339, -1, 308, -1, 310, -1, 312, 313, 314, -1,
1210   -1, -1, -1, 319, 320, -1, -1, 323, 324, 325,
1211  326, 327, 328, 329, 330, -1, 257, -1, -1, -1,
1212   -1, 337, 338, 339, 265, 308, -1, 310, -1, 312,
1213  313, 314, -1, 274, -1, -1, -1, -1, -1, -1,
1214  323, 324, -1, 284, -1, 286, 329, 330, 289, 290,
1215  291, 257, -1, 294, 295, 338, -1, 298, -1, 265,
1216   -1, 302, -1, -1, 305, -1, -1, -1, 274, -1,
1217   -1, -1, 313, -1, -1, -1, -1, -1, -1, -1,
1218  286, -1, -1, 289, 290, 291, -1, -1, 294, 295,
1219   -1, -1, 298, -1, -1, -1, 302, -1, -1, 305,
1220};
1221}
1222final static short YYFINAL=2;
1223final static short YYMAXTOKEN=368;
1224final static String JavaDoc yyname[] = {
1225"end-of-file",null,null,null,null,null,null,null,null,null,null,null,null,null,
1226null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
1227null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
1228null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
1229null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
1230null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
1231null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
1232null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
1233null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
1234null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
1235null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
1236null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
1237null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
1238null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
1239null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
1240null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
1241null,null,null,"ABSTRACT","ASSERT","BOOLEAN","BREAK","BYTE","CASE","CATCH",
1242"CHAR","CLASS","CONST","CONTINUE","DEFAULT","DO","DOUBLE","ELSE","ENUM",
1243"EXTENDS","FINAL","FINALLY","FLOAT","FOR","GOTO","IF","IMPLEMENTS","IMPORT",
1244"INSTANCEOF","INT","INTERFACE","LONG","NATIVE","NEW","PACKAGE","PRIVATE",
1245"PROTECTED","PUBLIC","RETURN","SHORT","STATIC","STRICTFP","SUPER","SWITCH",
1246"SYNCHRONIZED","THIS","THROW","THROWS","TRANSIENT","TRY","VOID","VOLATILE",
1247"WHILE","L_PAR","R_PAR","L_CURLY","R_CURLY","L_BRACKET","R_BRACKET","SEMICOLON",
1248"COMMA","DOT","MONKEYS_AT","ELLIPSIS","ASSIGN","GT","LT","NOT","COMP",
1249"QUESTION","COLON","EQ","LTE","GTE","NEQ","BOOL_AND","BOOL_OR","INCREMENT",
1250"DECREMENT","PLUS","MINUS","MULTI","DIV","AND","OR","XOR","MOD","L_SHIFT",
1251"R_SHIFT","UR_SHIFT","PLUS_ASSIGN","MINUS_ASSIGN","MULTI_ASSIGN","DIV_ASSIGN",
1252"AND_ASSIGN","OR_ASSIGN","XOR_ASSIGN","MOD_ASSIGN","L_SHIFT_ASSIGN",
1253"R_SHIFT_ASSIGN","UR_SHIFT_ASSIGN","BOOL_LIT","INT_LIT","FLOAT_LIT","CHAR_LIT",
1254"STRING_LIT","NULL_LIT","IDENTIFIER","COMMENT","EOL_COMMENT","DOC_COMMENT",
1255"WHITESPACE","EOL","EOF","ERROR",
1256};
1257final static String JavaDoc yyrule[] = {
1258"$accept : compilation_unit",
1259"type : primitive_type",
1260"type : reference_type",
1261"primitive_type : numeric_type",
1262"primitive_type : BOOLEAN",
1263"primitive_type : VOID",
1264"numeric_type : integer_type",
1265"numeric_type : floating_point_type",
1266"integer_type : BYTE",
1267"integer_type : SHORT",
1268"integer_type : INT",
1269"integer_type : LONG",
1270"integer_type : CHAR",
1271"floating_point_type : FLOAT",
1272"floating_point_type : DOUBLE",
1273"reference_type : multi_part_id",
1274"reference_type : multi_part_id dims",
1275"reference_type : primitive_type dims",
1276"compilation_unit : package_declaration import_declarations type_declarations",
1277"import_declarations :",
1278"import_declarations : import_declarations import_declaration",
1279"type_declarations :",
1280"type_declarations : type_declarations type_declaration",
1281"package_declaration :",
1282"package_declaration : PACKAGE multi_part_id SEMICOLON",
1283"import_declaration : single_type_import_declaration",
1284"import_declaration : type_import_on_demand_declaration",
1285"single_type_import_declaration : IMPORT static_opt multi_part_id SEMICOLON",
1286"type_import_on_demand_declaration : IMPORT static_opt multi_part_id DOT MULTI SEMICOLON",
1287"static_opt :",
1288"static_opt : STATIC",
1289"type_declaration : class_declaration",
1290"type_declaration : interface_declaration",
1291"type_declaration : SEMICOLON",
1292"class_declaration : modifiers CLASS IDENTIFIER super interfaces class_body",
1293"class_declaration : CLASS IDENTIFIER super interfaces class_body",
1294"super :",
1295"super : EXTENDS multi_part_id",
1296"interfaces :",
1297"interfaces : IMPLEMENTS id_type_list",
1298"id_type_list : multi_part_id",
1299"id_type_list : id_type_list COMMA multi_part_id",
1300"class_body : L_CURLY class_body_declarations R_CURLY",
1301"class_body_declarations :",
1302"class_body_declarations : class_body_declarations class_body_declaration",
1303"class_body_declaration : class_member_declaration",
1304"class_body_declaration : instance_initializer",
1305"class_body_declaration : static_initializer",
1306"class_body_declaration : constructor_declaration",
1307"class_member_declaration : field_declaration",
1308"class_member_declaration : method_declaration",
1309"class_member_declaration : class_declaration",
1310"class_member_declaration : interface_declaration",
1311"class_member_declaration : SEMICOLON",
1312"field_declaration : modifiers type variable_declarators SEMICOLON",
1313"field_declaration : type variable_declarators SEMICOLON",
1314"variable_declarators : variable_declarator",
1315"variable_declarators : variable_declarators COMMA variable_declarator",
1316"variable_declarator : variable_declarator_id variable_initializer_opt",
1317"variable_declarator_id : IDENTIFIER",
1318"variable_declarator_id : IDENTIFIER dims",
1319"variable_initializer_opt :",
1320"variable_initializer_opt : ASSIGN variable_initializer",
1321"variable_initializer : expression",
1322"variable_initializer : array_initializer",
1323"method_declaration : method_header method_body",
1324"method_header : modifiers type method_declarator throws",
1325"method_header : type method_declarator throws",
1326"method_declarator : modern_method_declarator",
1327"method_declarator : modern_method_declarator dims",
1328"modern_method_declarator : IDENTIFIER L_PAR formal_parameter_list_opt R_PAR",
1329"formal_parameter_list_opt :",
1330"formal_parameter_list_opt : formal_parameter_list",
1331"formal_parameter_list : formal_parameter",
1332"formal_parameter_list : formal_parameter_list COMMA formal_parameter",
1333"formal_parameter : final_opt type ellipsis_opt variable_declarator_id",
1334"ellipsis_opt :",
1335"ellipsis_opt : ELLIPSIS",
1336"final_opt :",
1337"final_opt : FINAL",
1338"throws :",
1339"throws : THROWS id_type_list",
1340"method_body : block",
1341"method_body : SEMICOLON",
1342"instance_initializer : block",
1343"static_initializer : modifiers block",
1344"constructor_declaration : modifiers constructor_declarator throws constructor_body",
1345"constructor_declaration : constructor_declarator throws constructor_body",
1346"constructor_declarator : IDENTIFIER L_PAR formal_parameter_list_opt R_PAR",
1347"constructor_body : L_CURLY constructor_block_statements R_CURLY",
1348"constructor_block_statements :",
1349"constructor_block_statements : constructor_block_statements constructor_block_statement",
1350"constructor_block_statement : block_statement",
1351"constructor_block_statement : THIS L_PAR argument_list_opt R_PAR SEMICOLON",
1352"constructor_block_statement : SUPER L_PAR argument_list_opt R_PAR SEMICOLON",
1353"constructor_block_statement : primary DOT SUPER L_PAR argument_list_opt R_PAR SEMICOLON",
1354"constructor_block_statement : multi_part_id DOT SUPER L_PAR argument_list_opt R_PAR SEMICOLON",
1355"interface_declaration : modifiers INTERFACE IDENTIFIER extends_interfaces interface_body",
1356"interface_declaration : INTERFACE IDENTIFIER extends_interfaces interface_body",
1357"extends_interfaces :",
1358"extends_interfaces : EXTENDS id_type_list",
1359"interface_body : L_CURLY interface_member_declarations R_CURLY",
1360"interface_member_declarations :",
1361"interface_member_declarations : interface_member_declarations interface_member_declaration",
1362"interface_member_declaration : field_declaration",
1363"interface_member_declaration : abstract_method_declaration",
1364"interface_member_declaration : class_declaration",
1365"interface_member_declaration : interface_declaration",
1366"interface_member_declaration : SEMICOLON",
1367"abstract_method_declaration : modifiers type method_declarator throws SEMICOLON",
1368"abstract_method_declaration : type method_declarator throws SEMICOLON",
1369"array_initializer : L_CURLY variable_initializers_opt R_CURLY",
1370"variable_initializers_opt :",
1371"variable_initializers_opt : variable_initializers",
1372"variable_initializers_opt : variable_initializers COMMA",
1373"variable_initializers : variable_initializer",
1374"variable_initializers : variable_initializers COMMA variable_initializer",
1375"block : L_CURLY block_statements_opt R_CURLY",
1376"block_statements_opt :",
1377"block_statements_opt : block_statements",
1378"block_statements : block_statement",
1379"block_statements : block_statements block_statement",
1380"block_statement : local_variable_declaration_statement",
1381"block_statement : class_declaration",
1382"block_statement : statement",
1383"local_variable_declaration_statement : local_variable_declaration SEMICOLON",
1384"local_variable_declaration : FINAL type variable_declarators",
1385"local_variable_declaration : type variable_declarators",
1386"statement : labeled_statement",
1387"statement : if_statement",
1388"statement : while_statement",
1389"statement : for_each_statement",
1390"statement : for_statement",
1391"statement : block",
1392"statement : empty_statement",
1393"statement : expression_statement",
1394"statement : switch_statement",
1395"statement : do_statement",
1396"statement : break_statement",
1397"statement : continue_statement",
1398"statement : return_statement",
1399"statement : synchronized_statement",
1400"statement : throw_statement",
1401"statement : try_statement",
1402"statement : assert_statement",
1403"empty_statement : SEMICOLON",
1404"labeled_statement : IDENTIFIER COLON statement",
1405"expression_statement : statement_expression SEMICOLON",
1406"statement_expression : assignment",
1407"statement_expression : pre_increment_expression",
1408"statement_expression : pre_decrement_expression",
1409"statement_expression : post_increment_expression",
1410"statement_expression : post_decrement_expression",
1411"statement_expression : method_invocation",
1412"statement_expression : class_instance_creation_expression",
1413"if_statement : IF L_PAR expression R_PAR statement",
1414"if_statement : IF L_PAR expression R_PAR statement ELSE statement",
1415"switch_statement : SWITCH L_PAR expression R_PAR switch_block",
1416"switch_block : L_CURLY switch_block_statement_groups switch_labels_opt R_CURLY",
1417"switch_block_statement_groups :",
1418"switch_block_statement_groups : switch_block_statement_groups switch_block_statement_group",
1419"switch_block_statement_group : switch_labels block_statements",
1420"switch_labels_opt :",
1421"switch_labels_opt : switch_labels",
1422"switch_labels : switch_label",
1423"switch_labels : switch_labels switch_label",
1424"switch_label : CASE constant_expression COLON",
1425"switch_label : DEFAULT COLON",
1426"while_statement : WHILE L_PAR expression R_PAR statement",
1427"do_statement : DO statement WHILE L_PAR expression R_PAR SEMICOLON",
1428"for_each_statement : FOR L_PAR for_init COLON expression R_PAR statement",
1429"for_statement : FOR L_PAR for_init SEMICOLON expression_opt SEMICOLON for_update R_PAR statement",
1430"for_init :",
1431"for_init : statement_expression_list",
1432"for_init : local_variable_declaration",
1433"expression_opt :",
1434"expression_opt : expression",
1435"for_update :",
1436"for_update : statement_expression_list",
1437"statement_expression_list : statement_expression",
1438"statement_expression_list : statement_expression_list COMMA statement_expression",
1439"break_statement : BREAK identifier_opt SEMICOLON",
1440"identifier_opt :",
1441"identifier_opt : IDENTIFIER",
1442"continue_statement : CONTINUE identifier_opt SEMICOLON",
1443"return_statement : RETURN expression_opt SEMICOLON",
1444"throw_statement : THROW expression SEMICOLON",
1445"synchronized_statement : SYNCHRONIZED L_PAR expression R_PAR block",
1446"try_statement : TRY block catches",
1447"try_statement : TRY block catches_opt finally",
1448"catches_opt :",
1449"catches_opt : catches",
1450"catches : catch_clause",
1451"catches : catches catch_clause",
1452"catch_clause : CATCH L_PAR formal_parameter R_PAR block",
1453"finally : FINALLY block",
1454"assert_statement : ASSERT expression SEMICOLON",
1455"assert_statement : ASSERT expression COLON expression SEMICOLON",
1456"primary : primary_no_new_array",
1457"primary : array_creation_expression",
1458"primary_no_new_array : literal",
1459"primary_no_new_array : multi_part_id DOT CLASS",
1460"primary_no_new_array : multi_part_id dims DOT CLASS",
1461"primary_no_new_array : primitive_type DOT CLASS",
1462"primary_no_new_array : primitive_type dims DOT CLASS",
1463"primary_no_new_array : THIS",
1464"primary_no_new_array : multi_part_id DOT THIS",
1465"primary_no_new_array : L_PAR expression R_PAR",
1466"primary_no_new_array : class_instance_creation_expression",
1467"primary_no_new_array : field_access",
1468"primary_no_new_array : method_invocation",
1469"primary_no_new_array : array_access",
1470"literal : INT_LIT",
1471"literal : FLOAT_LIT",
1472"literal : BOOL_LIT",
1473"literal : CHAR_LIT",
1474"literal : STRING_LIT",
1475"literal : NULL_LIT",
1476"class_instance_creation_expression : NEW multi_part_id L_PAR argument_list_opt R_PAR class_body_opt",
1477"class_instance_creation_expression : primary DOT NEW IDENTIFIER L_PAR argument_list_opt R_PAR class_body_opt",
1478"class_instance_creation_expression : multi_part_id DOT NEW IDENTIFIER L_PAR argument_list_opt R_PAR class_body_opt",
1479"argument_list_opt :",
1480"argument_list_opt : argument_list",
1481"argument_list : expression",
1482"argument_list : argument_list COMMA expression",
1483"class_body_opt :",
1484"class_body_opt : class_body",
1485"array_creation_expression : NEW primitive_type dim_exprs dims",
1486"array_creation_expression : NEW primitive_type dim_exprs",
1487"array_creation_expression : NEW multi_part_id dim_exprs dims",
1488"array_creation_expression : NEW multi_part_id dim_exprs",
1489"array_creation_expression : NEW primitive_type dims array_initializer",
1490"array_creation_expression : NEW multi_part_id dims array_initializer",
1491"dim_exprs : dim_expr",
1492"dim_exprs : dim_exprs dim_expr",
1493"dim_expr : L_BRACKET expression R_BRACKET",
1494"dims : L_BRACKET R_BRACKET",
1495"dims : dims L_BRACKET R_BRACKET",
1496"field_access : primary DOT IDENTIFIER",
1497"field_access : SUPER DOT IDENTIFIER",
1498"field_access : multi_part_id DOT SUPER DOT IDENTIFIER",
1499"method_invocation : multi_part_id DOT IDENTIFIER L_PAR argument_list_opt R_PAR",
1500"method_invocation : IDENTIFIER L_PAR argument_list_opt R_PAR",
1501"method_invocation : primary DOT IDENTIFIER L_PAR argument_list_opt R_PAR",
1502"method_invocation : SUPER DOT IDENTIFIER L_PAR argument_list_opt R_PAR",
1503"method_invocation : multi_part_id DOT SUPER DOT IDENTIFIER L_PAR argument_list_opt R_PAR",
1504"array_access : multi_part_id L_BRACKET expression R_BRACKET",
1505"array_access : primary_no_new_array L_BRACKET expression R_BRACKET",
1506"postfix_expression : primary",
1507"postfix_expression : multi_part_id",
1508"postfix_expression : post_increment_expression",
1509"postfix_expression : post_decrement_expression",
1510"post_increment_expression : postfix_expression INCREMENT",
1511"post_decrement_expression : postfix_expression DECREMENT",
1512"unary_expression : pre_increment_expression",
1513"unary_expression : pre_decrement_expression",
1514"unary_expression : PLUS unary_expression",
1515"unary_expression : MINUS unary_expression",
1516"unary_expression : unary_expression_not_plus_minus",
1517"pre_increment_expression : INCREMENT unary_expression",
1518"pre_decrement_expression : DECREMENT unary_expression",
1519"unary_expression_not_plus_minus : postfix_expression",
1520"unary_expression_not_plus_minus : COMP unary_expression",
1521"unary_expression_not_plus_minus : NOT unary_expression",
1522"unary_expression_not_plus_minus : cast_expression",
1523"cast_expression : L_PAR primitive_type dims R_PAR unary_expression",
1524"cast_expression : L_PAR primitive_type R_PAR unary_expression",
1525"cast_expression : L_PAR expression R_PAR unary_expression_not_plus_minus",
1526"cast_expression : L_PAR multi_part_id dims R_PAR unary_expression_not_plus_minus",
1527"multicaptive_expression : unary_expression",
1528"multicaptive_expression : multicaptive_expression MULTI unary_expression",
1529"multicaptive_expression : multicaptive_expression DIV unary_expression",
1530"multicaptive_expression : multicaptive_expression MOD unary_expression",
1531"additive_expression : multicaptive_expression",
1532"additive_expression : additive_expression PLUS multicaptive_expression",
1533"additive_expression : additive_expression MINUS multicaptive_expression",
1534"shift_expression : additive_expression",
1535"shift_expression : shift_expression L_SHIFT additive_expression",
1536"shift_expression : shift_expression R_SHIFT additive_expression",
1537"shift_expression : shift_expression UR_SHIFT additive_expression",
1538"relational_expression : shift_expression",
1539"relational_expression : relational_expression LT shift_expression",
1540"relational_expression : relational_expression GT shift_expression",
1541"relational_expression : relational_expression LTE shift_expression",
1542"relational_expression : relational_expression GTE shift_expression",
1543"relational_expression : relational_expression INSTANCEOF reference_type",
1544"equality_expression : relational_expression",
1545"equality_expression : equality_expression EQ relational_expression",
1546"equality_expression : equality_expression NEQ relational_expression",
1547"and_expression : equality_expression",
1548"and_expression : and_expression AND equality_expression",
1549"exclusive_or_expression : and_expression",
1550"exclusive_or_expression : exclusive_or_expression XOR and_expression",
1551"inclusive_or_expression : exclusive_or_expression",
1552"inclusive_or_expression : inclusive_or_expression OR exclusive_or_expression",
1553"conditional_and_expression : inclusive_or_expression",
1554"conditional_and_expression : conditional_and_expression BOOL_AND inclusive_or_expression",
1555"conditional_or_expression : conditional_and_expression",
1556"conditional_or_expression : conditional_or_expression BOOL_OR conditional_and_expression",
1557"conditional_expression : conditional_or_expression",
1558"conditional_expression : conditional_or_expression QUESTION expression COLON conditional_expression",
1559"assignment_expression : conditional_expression",
1560"assignment_expression : assignment",
1561"assignment : left_hand_side assignment_operator assignment_expression",
1562"left_hand_side : multi_part_id",
1563"left_hand_side : field_access",
1564"left_hand_side : array_access",
1565"assignment_operator : ASSIGN",
1566"assignment_operator : PLUS_ASSIGN",
1567"assignment_operator : MINUS_ASSIGN",
1568"assignment_operator : MULTI_ASSIGN",
1569"assignment_operator : DIV_ASSIGN",
1570"assignment_operator : AND_ASSIGN",
1571"assignment_operator : OR_ASSIGN",
1572"assignment_operator : XOR_ASSIGN",
1573"assignment_operator : MOD_ASSIGN",
1574"assignment_operator : L_SHIFT_ASSIGN",
1575"assignment_operator : R_SHIFT_ASSIGN",
1576"assignment_operator : UR_SHIFT_ASSIGN",
1577"expression : assignment_expression",
1578"constant_expression : expression",
1579"modifiers : modifier",
1580"modifiers : modifiers modifier",
1581"modifier : PUBLIC",
1582"modifier : PROTECTED",
1583"modifier : PRIVATE",
1584"modifier : ABSTRACT",
1585"modifier : STATIC",
1586"modifier : FINAL",
1587"modifier : SYNCHRONIZED",
1588"modifier : NATIVE",
1589"modifier : STRICTFP",
1590"modifier : TRANSIENT",
1591"modifier : VOLATILE",
1592"multi_part_id : IDENTIFIER",
1593"multi_part_id : multi_part_id DOT IDENTIFIER",
1594};
1595
1596//#line 879 "parser.y"
1597

1598private Scanner scanner;
1599private ASTContext astContext;
1600
1601private int yylex() {
1602    try {
1603        int type=scanner.yylex();
1604        ((ScannerToken)yylval).setContext(astContext);
1605        return type;
1606    }
1607    catch (IOException e) {
1608        //System.err.println("Error: "+e);
1609
}
1610    return -1;
1611}
1612
1613private void yyerror(String JavaDoc s) {
1614    System.err.println("YYError: "+s);
1615}
1616
1617public Parser(ASTContext context, Reader in, String JavaDoc filename) {
1618    scanner = new Scanner(in);
1619    scanner.setParser(this);
1620    astContext=context;
1621}
1622
1623public Parser(InputStream in) {
1624    scanner = new Scanner(in);
1625    scanner.setParser(this);
1626}
1627
1628public static void main(String JavaDoc argv[]) {
1629    if (argv.length == 0) {
1630        System.out.println("Usage : java Scanner <inputfile>");
1631    }
1632    else {
1633        for (int i = 0; i < argv.length; i++) {
1634            Parser parser = null;
1635            try {
1636                int status;
1637
1638                System.out.println("File: "+argv[i]);
1639                parser = new Parser(null, new FileReader(argv[i]), argv[i] );
1640                // parser.yydebug=true;
1641
status=parser.yyparse();
1642                if (status!=0)
1643                    System.exit(status);
1644            }
1645            catch (FileNotFoundException e) {
1646                System.out.println("File not found : \""+argv[i]+"\"");
1647            }
1648            catch (IOException e) {
1649                System.out.println("IO error scanning file \""+argv[i]+"\"");
1650                System.out.println(e);
1651            }
1652            catch (Exception JavaDoc e) {
1653                System.out.println("Unexpected exception:");
1654                e.printStackTrace();
1655            }
1656        }
1657    }
1658}
1659
1660public ASTree getASTree() {
1661    return yyval;
1662}
1663
1664public Token[] getTokens() {
1665    return scanner.getTokens();
1666}
1667
1668public int parse(boolean doAttribution) throws CompilerException {
1669    return yyparse();
1670}
1671
1672//#line 1715 "Parser.java"
1673
//###############################################################
1674
// method: yylexdebug : check lexer state
1675
//###############################################################
1676
void yylexdebug(int state,int ch)
1677{
1678String JavaDoc s=null;
1679  if (ch < 0) ch=0;
1680  if (ch <= YYMAXTOKEN) //check index bounds
1681
s = yyname[ch]; //now get it
1682
if (s==null)
1683    s = "illegal-symbol";
1684  debug("state "+state+", reading "+ch+" ("+s+")");
1685}
1686
1687
1688
1689
1690
1691//The following are now global, to aid in error reporting
1692
int yyn; //next next thing to do
1693
int yym; //
1694
int yystate; //current parsing state from state table
1695
String JavaDoc yys; //current token string
1696

1697
1698//###############################################################
1699
// method: yyparse : parse input and execute indicated items
1700
//###############################################################
1701
int yyparse()
1702{
1703boolean doaction;
1704  init_stacks();
1705  yynerrs = 0;
1706  yyerrflag = 0;
1707  yychar = -1; //impossible char forces a read
1708
yystate=0; //initial state
1709
state_push(yystate); //save it
1710
while (true) //until parsing is done, either correctly, or w/error
1711
{
1712    doaction=true;
1713    if (yydebug) debug("loop");
1714    //#### NEXT ACTION (from reduction table)
1715
for (yyn=yydefred[yystate];yyn==0;yyn=yydefred[yystate])
1716      {
1717      if (yydebug) debug("yyn:"+yyn+" state:"+yystate+" yychar:"+yychar);
1718      if (yychar < 0) //we want a char?
1719
{
1720        yychar = yylex(); //get next token
1721
if (yydebug) debug(" next yychar:"+yychar);
1722        //#### ERROR CHECK ####
1723
if (yychar < 0) //it it didn't work/error
1724
{
1725          yychar = 0; //change it to default string (no -1!)
1726
if (yydebug)
1727            yylexdebug(yystate,yychar);
1728          }
1729        }//yychar<0
1730
yyn = yysindex[yystate]; //get amount to shift by (shift index)
1731
if ((yyn != 0) && (yyn += yychar) >= 0 &&
1732          yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
1733        {
1734        if (yydebug)
1735          debug("state "+yystate+", shifting to state "+yytable[yyn]);
1736        //#### NEXT STATE ####
1737
yystate = yytable[yyn];//we are in a new state
1738
state_push(yystate); //save it
1739
val_push(yylval); //push our lval as the input for next rule
1740
yychar = -1; //since we have 'eaten' a token, say we need another
1741
if (yyerrflag > 0) //have we recovered an error?
1742
--yyerrflag; //give ourselves credit
1743
doaction=false; //but don't process yet
1744
break; //quit the yyn=0 loop
1745
}
1746
1747    yyn = yyrindex[yystate]; //reduce
1748
if ((yyn !=0 ) && (yyn += yychar) >= 0 &&
1749            yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
1750      { //we reduced!
1751
if (yydebug) debug("reduce");
1752      yyn = yytable[yyn];
1753      doaction=true; //get ready to execute
1754
break; //drop down to actions
1755
}
1756    else //ERROR RECOVERY
1757
{
1758      if (yyerrflag==0)
1759        {
1760        yyerror("syntax error");
1761        yynerrs++;
1762        }
1763      if (yyerrflag < 3) //low error count?
1764
{
1765        yyerrflag = 3;
1766        while (true) //do until break
1767
{
1768          if (stateptr<0) //check for under & overflow here
1769
{
1770            yyerror("stack underflow. aborting..."); //note lower case 's'
1771
return 1;
1772            }
1773          yyn = yysindex[state_peek(0)];
1774          if ((yyn != 0) && (yyn += YYERRCODE) >= 0 &&
1775                    yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
1776            {
1777            if (yydebug)
1778              debug("state "+state_peek(0)+", error recovery shifting to state "+yytable[yyn]+" ");
1779            yystate = yytable[yyn];
1780            state_push(yystate);
1781            val_push(yylval);
1782            doaction=false;
1783            break;
1784            }
1785          else
1786            {
1787            if (yydebug)
1788              debug("error recovery discarding state "+state_peek(0)+" ");
1789            if (stateptr<0) //check for under & overflow here
1790
{
1791              yyerror("Stack underflow. aborting..."); //capital 'S'
1792
return 1;
1793              }
1794            state_pop();
1795            val_pop();
1796            }
1797          }
1798        }
1799      else //discard this token
1800
{
1801        if (yychar == 0)
1802          return 1; //yyabort
1803
if (yydebug)
1804          {
1805          yys = null;
1806          if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
1807          if (yys == null) yys = "illegal-symbol";
1808          if (yydebug)
1809            debug("state "+yystate+", error recovery discards token "+yychar+" ("+yys+")");
1810          }
1811        yychar = -1; //read another
1812
}
1813      }//end error recovery
1814
}//yyn=0 loop
1815
if (!doaction) //any reason not to proceed?
1816
continue; //skip action
1817
yym = yylen[yyn]; //get count of terminals on rhs
1818
if (yydebug)
1819      debug("state "+yystate+", reducing "+yym+" by rule "+yyn+" ("+yyrule[yyn]+")");
1820    if (yym>0) //if count of rhs not 'nil'
1821
yyval = val_peek(yym-1); //get current semantic value
1822
switch(yyn)
1823      {
1824//########## USER-SUPPLIED ACTIONS ##########
1825
case 3:
1826//#line 65 "parser.y"
1827
{ yyval=new ASTreeNode(astContext,PRIMITIVE_TYPE,val_peek(0)); }
1828break;
1829case 4:
1830//#line 66 "parser.y"
1831
{ yyval=new ASTreeNode(astContext,PRIMITIVE_TYPE,val_peek(0)); }
1832break;
1833case 5:
1834//#line 67 "parser.y"
1835
{ yyval=new ASTreeNode(astContext,PRIMITIVE_TYPE,val_peek(0)); }
1836break;
1837case 16:
1838//#line 87 "parser.y"
1839
{ yyval = new ASTreeNode(astContext,REFERENCE_TYPE,val_peek(1),val_peek(0)); }
1840break;
1841case 17:
1842//#line 88 "parser.y"
1843
{ yyval = new ASTreeNode(astContext,REFERENCE_TYPE,val_peek(1),val_peek(0)); }
1844break;
1845case 18:
1846//#line 93 "parser.y"
1847
{ yyval = new ASTreeNode(astContext,COMPILATION_UNIT,new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); /* System.out.println($$); */ }
1848break;
1849case 19:
1850//#line 96 "parser.y"
1851
{ yyval = null; }
1852break;
1853case 20:
1854//#line 97 "parser.y"
1855
{ if (val_peek(1)==null) yyval=new ASTreeNode(astContext,IMPORT_DECLARATIONS,val_peek(0)); else yyval=val_peek(1).addSubTree(val_peek(0)); }
1856break;
1857case 21:
1858//#line 100 "parser.y"
1859
{ yyval = null; }
1860break;
1861case 22:
1862//#line 101 "parser.y"
1863
{ if (val_peek(1)==null) yyval=new ASTreeNode(astContext,TYPE_DECLARATIONS,val_peek(0)); else yyval=val_peek(1).addSubTree(val_peek(0)); }
1864break;
1865case 23:
1866//#line 105 "parser.y"
1867
{ yyval = null; }
1868break;
1869case 24:
1870//#line 106 "parser.y"
1871
{ yyval = new ASTreeNode(astContext,PACKAGE_DECLARATION,val_peek(2),val_peek(0),val_peek(1)); }
1872break;
1873case 27:
1874//#line 115 "parser.y"
1875
{ yyval = new ASTreeNode(astContext,SINGLE_TYPE_IMPORT,val_peek(3),val_peek(0),new ASTree[]{val_peek(2),val_peek(1)}); }
1876break;
1877case 28:
1878//#line 119 "parser.y"
1879
{ yyval = new ASTreeNode(astContext,TYPE_IMPORT_ON_DEMAND,val_peek(5),val_peek(0),new ASTree[]{val_peek(4),val_peek(3)}); }
1880break;
1881case 29:
1882//#line 122 "parser.y"
1883
{ yyval=null; }
1884break;
1885case 34:
1886//#line 133 "parser.y"
1887
{ yyval = new ASTreeNode(astContext,CLASS_DECLARATION,val_peek(5),val_peek(0),new ASTree[]{val_peek(5),val_peek(3),null,val_peek(2),val_peek(1),val_peek(0)}); /* System.out.println("Class:"+((Token)$3).getValue()); */ }
1888break;
1889case 35:
1890//#line 134 "parser.y"
1891
{ yyval = new ASTreeNode(astContext,CLASS_DECLARATION,val_peek(4),val_peek(0),new ASTree[]{null,val_peek(3),null,val_peek(2),val_peek(1),val_peek(0)}); /* System.out.println("Class:"+((Token)$2).getValue()); */ }
1892break;
1893case 36:
1894//#line 154 "parser.y"
1895
{ yyval=null; }
1896break;
1897case 37:
1898//#line 155 "parser.y"
1899
{ yyval=new ASTreeNode(astContext,SUPER_,val_peek(1),val_peek(0),val_peek(0)); }
1900break;
1901case 38:
1902//#line 159 "parser.y"
1903
{ yyval=null; }
1904break;
1905case 39:
1906//#line 160 "parser.y"
1907
{ yyval = val_peek(0).setFirstToken(val_peek(1)); }
1908break;
1909case 40:
1910//#line 163 "parser.y"
1911
{ yyval = new ASTreeNode(astContext,TYPE_LIST,val_peek(0),val_peek(0),val_peek(0)); }
1912break;
1913case 41:
1914//#line 164 "parser.y"
1915
{ yyval=val_peek(2).addSubTree(val_peek(0)); }
1916break;
1917case 42:
1918//#line 168 "parser.y"
1919
{ if (val_peek(1)!=null) yyval=val_peek(1).setFirstAndLastToken(val_peek(2),val_peek(0));
1920                                                      else yyval=new ASTreeNode(astContext,CLASS_BODY_DECLARATIONS,val_peek(2),val_peek(0),new ASTree[0]); }
1921break;
1922case 43:
1923//#line 172 "parser.y"
1924
{yyval=null; }
1925break;
1926case 44:
1927//#line 173 "parser.y"
1928
{ if (val_peek(1)==null) yyval=new ASTreeNode(astContext,CLASS_BODY_DECLARATIONS,val_peek(0)); else yyval=val_peek(1).addSubTree(val_peek(0)); }
1929break;
1930case 54:
1931//#line 190 "parser.y"
1932
{ yyval = new ASTreeNode(astContext,FIELD_DECLARATION,val_peek(3),val_peek(0),new ASTree[]{val_peek(3),val_peek(2),val_peek(1)}); }
1933break;
1934case 55:
1935//#line 191 "parser.y"
1936
{ yyval = new ASTreeNode(astContext,FIELD_DECLARATION,val_peek(2),val_peek(0),new ASTree[]{null,val_peek(2),val_peek(1)}); }
1937break;
1938case 57:
1939//#line 195 "parser.y"
1940
{ if (val_peek(2).getType()!=VARIABLE_DECLARATORS) yyval=new ASTreeNode(astContext,VARIABLE_DECLARATORS,val_peek(2),val_peek(0));
1941                                                       else yyval=val_peek(2).addSubTree(val_peek(0)); }
1942break;
1943case 58:
1944//#line 199 "parser.y"
1945
{ yyval=val_peek(1).addSubTree(val_peek(0)); }
1946break;
1947case 59:
1948//#line 202 "parser.y"
1949
{ yyval=new ASTreeNode(astContext,VARIABLE_DECLARATOR,val_peek(0),val_peek(0),new ASTree[]{val_peek(0),null}); }
1950break;
1951case 60:
1952//#line 203 "parser.y"
1953
{ yyval=new ASTreeNode(astContext,VARIABLE_DECLARATOR,val_peek(1),val_peek(0),new ASTree[]{val_peek(1),val_peek(0)}); }
1954break;
1955case 61:
1956//#line 206 "parser.y"
1957
{ yyval=null; }
1958break;
1959case 62:
1960//#line 207 "parser.y"
1961
{ yyval=val_peek(0); }
1962break;
1963case 65:
1964//#line 231 "parser.y"
1965
{ yyval=val_peek(1).addSubTree(val_peek(0)); }
1966break;
1967case 66:
1968//#line 234 "parser.y"
1969
{ yyval=new ASTreeNode(astContext,METHOD_DECLARATION,new ASTree[]{val_peek(3),null,val_peek(2),val_peek(1),val_peek(0)}); }
1970break;
1971case 67:
1972//#line 235 "parser.y"
1973
{ yyval=new ASTreeNode(astContext,METHOD_DECLARATION,new ASTree[]{null,null,val_peek(2),val_peek(1),val_peek(0)}); }
1974break;
1975case 68:
1976//#line 244 "parser.y"
1977
{ yyval=val_peek(0).addSubTree(null); }
1978break;
1979case 69:
1980//#line 245 "parser.y"
1981
{ yyval=val_peek(1).addSubTree(val_peek(0)); }
1982break;
1983case 70:
1984//#line 248 "parser.y"
1985
{ yyval=new ASTreeNode(astContext,METHOD_DECLARATOR,val_peek(3),val_peek(0),new ASTree[]{val_peek(3),val_peek(1)}); }
1986break;
1987case 71:
1988//#line 253 "parser.y"
1989
{ yyval=null; }
1990break;
1991case 73:
1992//#line 257 "parser.y"
1993
{ yyval=new ASTreeNode(astContext,FORMAL_PARAMETER_LIST,val_peek(0)); }
1994break;
1995case 74:
1996//#line 258 "parser.y"
1997
{ yyval=val_peek(2).addSubTree(val_peek(0)); }
1998break;
1999case 75:
2000//#line 261 "parser.y"
2001
{ yyval=new ASTreeNode(astContext,FORMAL_PARAMETER,new ASTree[]{val_peek(3),val_peek(2),val_peek(1),val_peek(0)}); }
2002break;
2003case 76:
2004//#line 264 "parser.y"
2005
{ yyval=null;}
2006break;
2007case 78:
2008//#line 268 "parser.y"
2009
{ yyval=null; }
2010break;
2011case 80:
2012//#line 292 "parser.y"
2013
{ yyval=null; }
2014break;
2015case 81:
2016//#line 293 "parser.y"
2017
{ yyval=val_peek(0).setFirstToken(val_peek(1)); }
2018break;
2019case 84:
2020//#line 302 "parser.y"
2021
{ yyval=new ASTreeNode(astContext,INSTANCE_INITIALIZER,val_peek(0),val_peek(0),new ASTree[]{null,val_peek(0)}); }
2022break;
2023case 85:
2024//#line 306 "parser.y"
2025
{ yyval=new ASTreeNode(astContext,STATIC_INITIALIZER,val_peek(1),val_peek(0)); }
2026break;
2027case 86:
2028//#line 310 "parser.y"
2029
{ yyval=new ASTreeNode(astContext,CONSTRUCTOR_DECLARATION,new ASTree[]{val_peek(3),null,null,val_peek(2),val_peek(1),val_peek(0)}); }
2030break;
2031case 87:
2032//#line 311 "parser.y"
2033
{ yyval=new ASTreeNode(astContext,CONSTRUCTOR_DECLARATION,val_peek(2),val_peek(0),new ASTree[]{null,null,null,val_peek(2),val_peek(1),val_peek(0)}); }
2034break;
2035case 88:
2036//#line 314 "parser.y"
2037
{ yyval=new ASTreeNode(astContext,CONSTRUCTOR_DECLARATOR,val_peek(3),val_peek(0),new ASTree[]{val_peek(3),val_peek(1)}); }
2038break;
2039case 89:
2040//#line 331 "parser.y"
2041
{ if (val_peek(1)!=null) yyval=val_peek(1).setFirstAndLastToken(val_peek(2),val_peek(0));
2042                                                                 else yyval=new ASTreeNode(astContext,BLOCK_STATEMENTS,val_peek(2),val_peek(0),(ASTree[])null); }
2043break;
2044case 90:
2045//#line 336 "parser.y"
2046
{ yyval=null; }
2047break;
2048case 91:
2049//#line 337 "parser.y"
2050
{ if (val_peek(1)==null) yyval=new ASTreeNode(astContext,BLOCK_STATEMENTS,val_peek(0)); else yyval=val_peek(1).addSubTree(val_peek(0)); }
2051break;
2052case 93:
2053//#line 341 "parser.y"
2054
{ yyval=new ASTreeNode(astContext,EXPLICIT_CONSTRUCTOR_INVOCATION,val_peek(4),val_peek(0),new ASTree[]{null,null,val_peek(4),val_peek(2)}); }
2055break;
2056case 94:
2057//#line 342 "parser.y"
2058
{ yyval=new ASTreeNode(astContext,EXPLICIT_CONSTRUCTOR_INVOCATION,val_peek(4),val_peek(0),new ASTree[]{null,null,val_peek(4),val_peek(2)}); }
2059break;
2060case 95:
2061//#line 343 "parser.y"
2062
{ yyval=new ASTreeNode(astContext,EXPLICIT_CONSTRUCTOR_INVOCATION,val_peek(6),val_peek(0),new ASTree[]{val_peek(6),null,val_peek(4),val_peek(2)}); }
2063break;
2064case 96:
2065//#line 344 "parser.y"
2066
{ yyval=new ASTreeNode(astContext,EXPLICIT_CONSTRUCTOR_INVOCATION,val_peek(6),val_peek(0),new ASTree[]{val_peek(6),null,val_peek(4),val_peek(2)}); }
2067break;
2068case 97:
2069//#line 356 "parser.y"
2070
{ yyval=new ASTreeNode(astContext,INTERFACE_DECLARATION,val_peek(4),val_peek(0),new ASTree[]{val_peek(4),val_peek(2),null,null,val_peek(1),val_peek(0)}); }
2071break;
2072case 98:
2073//#line 357 "parser.y"
2074
{ yyval=new ASTreeNode(astContext,INTERFACE_DECLARATION,val_peek(3),val_peek(0),new ASTree[]{null,val_peek(2),null,null,val_peek(1),val_peek(0)}); }
2075break;
2076case 99:
2077//#line 376 "parser.y"
2078
{ yyval=null; }
2079break;
2080case 100:
2081//#line 377 "parser.y"
2082
{ yyval=val_peek(0).setFirstToken(val_peek(1)); }
2083break;
2084case 101:
2085//#line 381 "parser.y"
2086
{ if (val_peek(1)!=null) yyval=val_peek(1).setFirstAndLastToken(val_peek(2),val_peek(0));
2087                                                                else yyval=new ASTreeNode(astContext,INTERFACE_MEMBER_DECLARATIONS,val_peek(2),val_peek(0),new ASTree[0]); }
2088break;
2089case 102:
2090//#line 385 "parser.y"
2091
{ yyval=null; }
2092break;
2093case 103:
2094//#line 386 "parser.y"
2095
{ if (val_peek(1)==null) yyval=new ASTreeNode(astContext,INTERFACE_MEMBER_DECLARATIONS,val_peek(0)); else yyval=val_peek(1).addSubTree(val_peek(0)); }
2096break;
2097case 109:
2098//#line 413 "parser.y"
2099
{ yyval=new ASTreeNode(astContext,METHOD_DECLARATION,val_peek(4),val_peek(0),new ASTree[]{val_peek(4),null,val_peek(3),val_peek(2),val_peek(1),val_peek(0)}); }
2100break;
2101case 110:
2102//#line 414 "parser.y"
2103
{ yyval=new ASTreeNode(astContext,METHOD_DECLARATION,val_peek(3),val_peek(0),new ASTree[]{null,null,val_peek(3),val_peek(2),val_peek(1),val_peek(0)}); }
2104break;
2105case 111:
2106//#line 429 "parser.y"
2107
{ yyval=new ASTreeNode(astContext,ARRAY_INITIALIZER,val_peek(2),val_peek(0),val_peek(1)); }
2108break;
2109case 112:
2110//#line 432 "parser.y"
2111
{ yyval=null; }
2112break;
2113case 114:
2114//#line 434 "parser.y"
2115
{ yyval=val_peek(1); }
2116break;
2117case 116:
2118//#line 438 "parser.y"
2119
{ if (val_peek(2).getType()!=VARIABLE_INITIALIZERS) yyval=new ASTreeNode(astContext,VARIABLE_INITIALIZERS,val_peek(2),val_peek(0));
2120                                                          else yyval=val_peek(2).addSubTree(val_peek(0)); }
2121break;
2122case 117:
2123//#line 443 "parser.y"
2124
{ if (val_peek(1)!=null) yyval=val_peek(1).setFirstAndLastToken(val_peek(2),val_peek(0));
2125                                              else yyval=new ASTreeNode(astContext,BLOCK_STATEMENTS,val_peek(2),val_peek(0),(ASTree[])null); }
2126break;
2127case 118:
2128//#line 447 "parser.y"
2129
{ yyval=null; }
2130break;
2131case 120:
2132//#line 451 "parser.y"
2133
{ yyval=new ASTreeNode(astContext,BLOCK_STATEMENTS,val_peek(0)); }
2134break;
2135case 121:
2136//#line 452 "parser.y"
2137
{ yyval=val_peek(1).addSubTree(val_peek(0)); }
2138break;
2139case 125:
2140//#line 461 "parser.y"
2141
{ yyval=val_peek(1).setLastToken(val_peek(0)); }
2142break;
2143case 126:
2144//#line 464 "parser.y"
2145
{ yyval=new ASTreeNode(astContext,LOCAL_VARIABLE_DECLARATION,new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); }
2146break;
2147case 127:
2148//#line 465 "parser.y"
2149
{ yyval=new ASTreeNode(astContext,LOCAL_VARIABLE_DECLARATION,new ASTree[]{null,val_peek(1),val_peek(0)}); }
2150break;
2151case 145:
2152//#line 491 "parser.y"
2153
{ yyval=new ASTreeNode(astContext,EMPTY_STATEMENT,val_peek(0),val_peek(0),(ASTree[])null); }
2154break;
2155case 146:
2156//#line 495 "parser.y"
2157
{ yyval=new ASTreeNode(astContext,LABELED_STATEMENT,val_peek(2),val_peek(0)); }
2158break;
2159case 147:
2160//#line 499 "parser.y"
2161
{ yyval=new ASTreeNode(astContext,EXPRESSION_STATEMENT,val_peek(1),val_peek(0),val_peek(1)); }
2162break;
2163case 155:
2164//#line 513 "parser.y"
2165
{ yyval=new ASTreeNode(astContext,IF_STATEMENT,val_peek(4),val_peek(0),new ASTree[]{val_peek(2),val_peek(0),null}); }
2166break;
2167case 156:
2168//#line 514 "parser.y"
2169
{ yyval=new ASTreeNode(astContext,IF_STATEMENT,val_peek(6),val_peek(0),new ASTree[]{val_peek(4),val_peek(2),val_peek(0)}); }
2170break;
2171case 157:
2172//#line 518 "parser.y"
2173
{ yyval=new ASTreeNode(astContext,SWITCH_STATEMENT,val_peek(4),val_peek(0),new ASTree[]{val_peek(2),val_peek(0)}); }
2174break;
2175case 158:
2176//#line 521 "parser.y"
2177
{ yyval=new ASTreeNode(astContext,SWITCH_BLOCK,val_peek(3),val_peek(0),new ASTree[]{val_peek(2),val_peek(1)}); }
2178break;
2179case 159:
2180//#line 524 "parser.y"
2181
{ yyval=null; }
2182break;
2183case 160:
2184//#line 525 "parser.y"
2185
{ if (val_peek(1)==null) yyval=new ASTreeNode(astContext,SWITCH_BLOCK_STATEMENT_GROUPS,val_peek(0)); else yyval=val_peek(1).addSubTree(val_peek(0)); }
2186break;
2187case 161:
2188//#line 528 "parser.y"
2189
{ yyval=new ASTreeNode(astContext,SWITCH_BLOCK_STATEMENT_GROUP,val_peek(1),val_peek(0)); }
2190break;
2191case 162:
2192//#line 531 "parser.y"
2193
{ yyval=null; }
2194break;
2195case 165:
2196//#line 536 "parser.y"
2197
{ if (val_peek(1).getType()!=SWITCH_LABELS) yyval=new ASTreeNode(astContext,SWITCH_LABELS,val_peek(1),val_peek(0)); else yyval=val_peek(1).addSubTree(val_peek(0)); }
2198break;
2199case 166:
2200//#line 539 "parser.y"
2201
{ yyval=new ASTreeNode(astContext,SWITCH_LABEL,val_peek(2),val_peek(0),new ASTree[]{val_peek(1)}); }
2202break;
2203case 167:
2204//#line 540 "parser.y"
2205
{ yyval=new ASTreeNode(astContext,SWITCH_LABEL,val_peek(1),val_peek(0),new ASTree[]{null}); }
2206break;
2207case 168:
2208//#line 544 "parser.y"
2209
{ yyval=new ASTreeNode(astContext,WHILE_STATEMENT,val_peek(4),val_peek(0),new ASTree[]{val_peek(2),val_peek(0)}); }
2210break;
2211case 169:
2212//#line 548 "parser.y"
2213
{ yyval=new ASTreeNode(astContext,DO_STATEMENT,val_peek(6),val_peek(0),new ASTree[]{val_peek(5),val_peek(2)}); }
2214break;
2215case 170:
2216//#line 552 "parser.y"
2217
{
2218        ASTree[] fparts=val_peek(4).getSubTrees();
2219        ASTree fpar=new ASTreeNode(astContext,FORMAL_PARAMETER,new ASTree[]{fparts[0],fparts[1],null,fparts[2]});
2220        yyval=new ASTreeNode(astContext,FOR_EACH_STATEMENT,val_peek(6),val_peek(0),new ASTree[]{fpar,val_peek(2),val_peek(0)}); }
2221break;
2222case 171:
2223//#line 559 "parser.y"
2224
{ yyval=new ASTreeNode(astContext,FOR_STATEMENT,val_peek(8),val_peek(0),new ASTree[]{val_peek(6),val_peek(4),val_peek(2),val_peek(0)}); }
2225break;
2226case 172:
2227//#line 562 "parser.y"
2228
{ yyval=null; }
2229break;
2230case 175:
2231//#line 567 "parser.y"
2232
{ yyval=null; }
2233break;
2234case 177:
2235//#line 571 "parser.y"
2236
{ yyval=null; }
2237break;
2238case 180:
2239//#line 576 "parser.y"
2240
{ if (val_peek(2).getType()!=STATEMENT_EXPRESSION_LIST) yyval=new ASTreeNode(astContext,STATEMENT_EXPRESSION_LIST,val_peek(2),val_peek(0));
2241                                                     else yyval=val_peek(2).addSubTree(val_peek(0)); }
2242break;
2243case 181:
2244//#line 581 "parser.y"
2245
{ yyval=new ASTreeNode(astContext,BREAK_STATEMENT,val_peek(2),val_peek(0),new ASTree[]{val_peek(1)}); }
2246break;
2247case 182:
2248//#line 584 "parser.y"
2249
{ yyval=null; }
2250break;
2251case 184:
2252//#line 589 "parser.y"
2253
{ yyval=new ASTreeNode(astContext,CONTINUE_STATEMENT,val_peek(2),val_peek(0),new ASTree[]{val_peek(1)}); }
2254break;
2255case 185:
2256//#line 594 "parser.y"
2257
{ yyval=new ASTreeNode(astContext,RETURN_STATEMENT,val_peek(2),val_peek(0),new ASTree[]{val_peek(1)}); }
2258break;
2259case 186:
2260//#line 598 "parser.y"
2261
{ yyval=new ASTreeNode(astContext,THROW_STATEMENT,val_peek(2),val_peek(0),new ASTree[]{val_peek(1)}); }
2262break;
2263case 187:
2264//#line 602 "parser.y"
2265
{ yyval=new ASTreeNode(astContext,SYNCHRONIZE_STATEMENT,val_peek(4),val_peek(0),new ASTree[]{val_peek(2),val_peek(0)}); }
2266break;
2267case 188:
2268//#line 606 "parser.y"
2269
{ yyval=new ASTreeNode(astContext,TRY_STATEMENT,val_peek(2),val_peek(0),new ASTree[]{val_peek(1),val_peek(0),null}); }
2270break;
2271case 189:
2272//#line 607 "parser.y"
2273
{ yyval=new ASTreeNode(astContext,TRY_STATEMENT,val_peek(3),val_peek(0),new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); }
2274break;
2275case 190:
2276//#line 610 "parser.y"
2277
{ yyval=null; }
2278break;
2279case 193:
2280//#line 615 "parser.y"
2281
{ if (val_peek(1).getType()!=CATCHES) yyval=new ASTreeNode(astContext,CATCHES,val_peek(1),val_peek(0)); else yyval=val_peek(1).addSubTree(val_peek(0)); }
2282break;
2283case 194:
2284//#line 618 "parser.y"
2285
{ yyval=new ASTreeNode(astContext,CATCH_CLAUSE,val_peek(4),val_peek(0),new ASTree[]{val_peek(2),val_peek(0)}); }
2286break;
2287case 195:
2288//#line 621 "parser.y"
2289
{ yyval=val_peek(0); }
2290break;
2291case 196:
2292//#line 625 "parser.y"
2293
{ yyval=new ASTreeNode(astContext,ASSERT_STATEMENT,val_peek(2),val_peek(0),new ASTree[]{val_peek(1),null}); }
2294break;
2295case 197:
2296//#line 626 "parser.y"
2297
{ yyval=new ASTreeNode(astContext,ASSERT_STATEMENT,val_peek(4),val_peek(0),new ASTree[]{val_peek(3),val_peek(1)}); }
2298break;
2299case 201:
2300//#line 637 "parser.y"
2301
{ yyval = new ASTreeNode(astContext,PRIMARY_CLASS,val_peek(2),val_peek(0),new ASTree[]{val_peek(2)}); }
2302break;
2303case 202:
2304//#line 638 "parser.y"
2305
{ yyval = new ASTreeNode(astContext,PRIMARY_CLASS,val_peek(3),val_peek(0),new ASTree[]{new ASTreeNode(astContext,REFERENCE_TYPE,val_peek(3),val_peek(2))}); }
2306break;
2307case 203:
2308//#line 639 "parser.y"
2309
{ yyval = new ASTreeNode(astContext,PRIMARY_CLASS,val_peek(2),val_peek(0),new ASTree[]{val_peek(2)}); }
2310break;
2311case 204:
2312//#line 640 "parser.y"
2313
{ yyval = new ASTreeNode(astContext,PRIMARY_CLASS,val_peek(3),val_peek(0),new ASTree[]{new ASTreeNode(astContext,REFERENCE_TYPE,val_peek(3),val_peek(2))}); }
2314break;
2315case 205:
2316//#line 642 "parser.y"
2317
{ yyval = new ASTreeNode(astContext,PRIMARY_THIS,val_peek(0),val_peek(0),(ASTree[])null); }
2318break;
2319case 206:
2320//#line 643 "parser.y"
2321
{ yyval = new ASTreeNode(astContext,PRIMARY_THIS,val_peek(2),val_peek(0),val_peek(2)); }
2322break;
2323case 207:
2324//#line 644 "parser.y"
2325
{ yyval = new ASTreeNode(astContext,COMPLEX_EXPRESSION,val_peek(2),val_peek(0),val_peek(1)); }
2326break;
2327case 218:
2328//#line 661 "parser.y"
2329
{ yyval=new ASTreeNode(astContext,CLASS_INSTANCE_CREATION_EXPRESSION,val_peek(5),val_peek(0)==null?val_peek(1):val_peek(0),new ASTree[]{null,null,val_peek(4),val_peek(2),val_peek(0)}); }
2330break;
2331case 219:
2332//#line 662 "parser.y"
2333
{ yyval=new ASTreeNode(astContext,CLASS_INSTANCE_CREATION_EXPRESSION,val_peek(7),val_peek(0)==null?val_peek(1):val_peek(0),new ASTree[]{val_peek(7),null,val_peek(4),val_peek(2),val_peek(0)}); }
2334break;
2335case 220:
2336//#line 663 "parser.y"
2337
{ yyval=new ASTreeNode(astContext,CLASS_INSTANCE_CREATION_EXPRESSION,val_peek(7),val_peek(0)==null?val_peek(1):val_peek(0),new ASTree[]{val_peek(7),null,val_peek(4),val_peek(2),val_peek(0)}); }
2338break;
2339case 221:
2340//#line 666 "parser.y"
2341
{ yyval=null; }
2342break;
2343case 224:
2344//#line 671 "parser.y"
2345
{ if (val_peek(2).getType()!=ARGUMENT_LIST) yyval=new ASTreeNode(astContext,ARGUMENT_LIST,val_peek(2),val_peek(0)); else yyval=val_peek(2).addSubTree(val_peek(0)); }
2346break;
2347case 225:
2348//#line 674 "parser.y"
2349
{ yyval=null; }
2350break;
2351case 227:
2352//#line 679 "parser.y"
2353
{ yyval=new ASTreeNode(astContext,ARRAY_CREATION_EXPRESSION,val_peek(3),val_peek(0),new ASTree[]{val_peek(2),val_peek(1),val_peek(0),null}); }
2354break;
2355case 228:
2356//#line 680 "parser.y"
2357
{ yyval=new ASTreeNode(astContext,ARRAY_CREATION_EXPRESSION,val_peek(2),val_peek(0),new ASTree[]{val_peek(1),val_peek(0),null,null}); }
2358break;
2359case 229:
2360//#line 681 "parser.y"
2361
{ yyval=new ASTreeNode(astContext,ARRAY_CREATION_EXPRESSION,val_peek(3),val_peek(0),new ASTree[]{val_peek(2),val_peek(1),val_peek(0),null}); }
2362break;
2363case 230:
2364//#line 682 "parser.y"
2365
{ yyval=new ASTreeNode(astContext,ARRAY_CREATION_EXPRESSION,val_peek(2),val_peek(0),new ASTree[]{val_peek(1),val_peek(0),null,null}); }
2366break;
2367case 231:
2368//#line 683 "parser.y"
2369
{ yyval=new ASTreeNode(astContext,ARRAY_CREATION_EXPRESSION,val_peek(3),val_peek(0),new ASTree[]{val_peek(2),null,val_peek(1),val_peek(0)}); }
2370break;
2371case 232:
2372//#line 684 "parser.y"
2373
{ yyval=new ASTreeNode(astContext,ARRAY_CREATION_EXPRESSION,val_peek(3),val_peek(0),new ASTree[]{val_peek(2),null,val_peek(1),val_peek(0)}); }
2374break;
2375case 233:
2376//#line 687 "parser.y"
2377
{ yyval=new ASTreeNode(astContext,DIM_EXPRS,val_peek(0)); yyval.setFirstToken(val_peek(0).getFirstToken()-1); yyval.setLastToken(val_peek(0).getLastToken()+1); }
2378break;
2379case 234:
2380//#line 688 "parser.y"
2381
{ yyval=val_peek(1).addSubTree(val_peek(0)); yyval.setLastToken(val_peek(0).getLastToken()+1); }
2382break;
2383case 235:
2384//#line 691 "parser.y"
2385
{ yyval = val_peek(1); }
2386break;
2387case 236:
2388//#line 694 "parser.y"
2389
{ yyval=new ASTreeNode(astContext,DIMS,val_peek(1),val_peek(0),(ASTree[])null); }
2390break;
2391case 237:
2392//#line 695 "parser.y"
2393
{ yyval=val_peek(2).setLastToken(val_peek(0)); }
2394break;
2395case 238:
2396//#line 699 "parser.y"
2397
{ yyval= new ASTreeNode(astContext,FIELD_ACCESS,val_peek(2),val_peek(0),new ASTree[]{val_peek(2),null,val_peek(0)}); }
2398break;
2399case 239:
2400//#line 700 "parser.y"
2401
{ yyval= new ASTreeNode(astContext,FIELD_ACCESS,val_peek(2),val_peek(0),new ASTree[]{null,val_peek(2),val_peek(0)}); }
2402break;
2403case 240:
2404//#line 701 "parser.y"
2405
{ yyval= new ASTreeNode(astContext,FIELD_ACCESS,val_peek(4),val_peek(0),new ASTree[]{val_peek(4),val_peek(2),val_peek(0)}); }
2406break;
2407case 241:
2408//#line 705 "parser.y"
2409
{ yyval = new ASTreeNode(astContext,METHOD_INVOCATION,val_peek(5),val_peek(0),new ASTree[]{val_peek(5),null,null,val_peek(3),val_peek(1)}); }
2410break;
2411case 242:
2412//#line 706 "parser.y"
2413
{ yyval = new ASTreeNode(astContext,METHOD_INVOCATION,val_peek(3),val_peek(0),new ASTree[]{null,null,null,val_peek(3),val_peek(1)}); }
2414break;
2415case 243:
2416//#line 707 "parser.y"
2417
{ yyval = new ASTreeNode(astContext,METHOD_INVOCATION,val_peek(5),val_peek(0),new ASTree[]{val_peek(5),null,null,val_peek(3),val_peek(1)}); }
2418break;
2419case 244:
2420//#line 708 "parser.y"
2421
{ yyval = new ASTreeNode(astContext,METHOD_INVOCATION,val_peek(5),val_peek(0),new ASTree[]{null,val_peek(5),null,val_peek(3),val_peek(1)}); }
2422break;
2423case 245:
2424//#line 709 "parser.y"
2425
{ yyval = new ASTreeNode(astContext,METHOD_INVOCATION,val_peek(7),val_peek(0),new ASTree[]{val_peek(7),val_peek(5),null,val_peek(3),val_peek(1)}); }
2426break;
2427case 246:
2428//#line 713 "parser.y"
2429
{ yyval=new ASTreeNode(astContext,ARRAY_ACCESS,val_peek(3),val_peek(0),new ASTree[]{val_peek(3),val_peek(1)}); }
2430break;
2431case 247:
2432//#line 714 "parser.y"
2433
{ yyval=new ASTreeNode(astContext,ARRAY_ACCESS,val_peek(3),val_peek(0),new ASTree[]{val_peek(3),val_peek(1)}); }
2434break;
2435case 252:
2436//#line 725 "parser.y"
2437
{ yyval=new ASTreeNode(astContext,POSTFIX_EXPRESSION,val_peek(1),val_peek(0)); }
2438break;
2439case 253:
2440//#line 729 "parser.y"
2441
{ yyval=new ASTreeNode(astContext,POSTFIX_EXPRESSION,val_peek(1),val_peek(0)); }
2442break;
2443case 256:
2444//#line 735 "parser.y"
2445
{ yyval=new ASTreeNode(astContext,PREFIX_EXPRESSION,val_peek(1),val_peek(0)); }
2446break;
2447case 257:
2448//#line 736 "parser.y"
2449
{ yyval=new ASTreeNode(astContext,PREFIX_EXPRESSION,val_peek(1),val_peek(0)); }
2450break;
2451case 259:
2452//#line 740 "parser.y"
2453
{ yyval=new ASTreeNode(astContext,PREFIX_EXPRESSION,val_peek(1),val_peek(0)); }
2454break;
2455case 260:
2456//#line 743 "parser.y"
2457
{ yyval=new ASTreeNode(astContext,PREFIX_EXPRESSION,val_peek(1),val_peek(0)); }
2458break;
2459case 262:
2460//#line 747 "parser.y"
2461
{ yyval=new ASTreeNode(astContext,PREFIX_EXPRESSION,val_peek(1),val_peek(0)); }
2462break;
2463case 263:
2464//#line 748 "parser.y"
2465
{ yyval=new ASTreeNode(astContext,PREFIX_EXPRESSION,val_peek(1),val_peek(0)); }
2466break;
2467case 265:
2468//#line 753 "parser.y"
2469
{ yyval=new ASTreeNode(astContext,CAST_EXPRESSION,val_peek(4),val_peek(0),new ASTree[]{new ASTreeNode(astContext,REFERENCE_TYPE,val_peek(3),val_peek(2)),val_peek(0)}); }
2470break;
2471case 266:
2472//#line 754 "parser.y"
2473
{ yyval=new ASTreeNode(astContext,CAST_EXPRESSION,val_peek(3),val_peek(0),new ASTree[]{val_peek(2),val_peek(0)}); }
2474break;
2475case 267:
2476//#line 755 "parser.y"
2477
{ yyval=new ASTreeNode(astContext,CAST_EXPRESSION,val_peek(3),val_peek(0),new ASTree[]{val_peek(2),val_peek(0)}); }
2478break;
2479case 268:
2480//#line 756 "parser.y"
2481
{ yyval=new ASTreeNode(astContext,CAST_EXPRESSION,val_peek(4),val_peek(0),new ASTree[]{new ASTreeNode(astContext,REFERENCE_TYPE,val_peek(3),val_peek(2)),val_peek(0)}); }
2482break;
2483case 270:
2484//#line 761 "parser.y"
2485
{ yyval=new ASTreeNode(astContext,INFIX_EXPRESSION,new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); }
2486break;
2487case 271:
2488//#line 762 "parser.y"
2489
{ yyval=new ASTreeNode(astContext,INFIX_EXPRESSION,new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); }
2490break;
2491case 272:
2492//#line 763 "parser.y"
2493
{ yyval=new ASTreeNode(astContext,INFIX_EXPRESSION,new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); }
2494break;
2495case 274:
2496//#line 768 "parser.y"
2497
{ yyval=new ASTreeNode(astContext,INFIX_EXPRESSION,new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); }
2498break;
2499case 275:
2500//#line 769 "parser.y"
2501
{ yyval=new ASTreeNode(astContext,INFIX_EXPRESSION,new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); }
2502break;
2503case 277:
2504//#line 774 "parser.y"
2505
{ yyval=new ASTreeNode(astContext,INFIX_EXPRESSION,new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); }
2506break;
2507case 278:
2508//#line 775 "parser.y"
2509
{ yyval=new ASTreeNode(astContext,INFIX_EXPRESSION,new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); }
2510break;
2511case 279:
2512//#line 776 "parser.y"
2513
{ yyval=new ASTreeNode(astContext,INFIX_EXPRESSION,new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); }
2514break;
2515case 281:
2516//#line 781 "parser.y"
2517
{ yyval=new ASTreeNode(astContext,INFIX_EXPRESSION,new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); }
2518break;
2519case 282:
2520//#line 782 "parser.y"
2521
{ yyval=new ASTreeNode(astContext,INFIX_EXPRESSION,new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); }
2522break;
2523case 283:
2524//#line 783 "parser.y"
2525
{ yyval=new ASTreeNode(astContext,INFIX_EXPRESSION,new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); }
2526break;
2527case 284:
2528//#line 784 "parser.y"
2529
{ yyval=new ASTreeNode(astContext,INFIX_EXPRESSION,new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); }
2530break;
2531case 285:
2532//#line 785 "parser.y"
2533
{ yyval=new ASTreeNode(astContext,INFIX_EXPRESSION,new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); }
2534break;
2535case 287:
2536//#line 790 "parser.y"
2537
{ yyval=new ASTreeNode(astContext,INFIX_EXPRESSION,new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); }
2538break;
2539case 288:
2540//#line 791 "parser.y"
2541
{ yyval=new ASTreeNode(astContext,INFIX_EXPRESSION,new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); }
2542break;
2543case 290:
2544//#line 796 "parser.y"
2545
{ yyval=new ASTreeNode(astContext,INFIX_EXPRESSION,new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); }
2546break;
2547case 292:
2548//#line 800 "parser.y"
2549
{ yyval=new ASTreeNode(astContext,INFIX_EXPRESSION,new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); }
2550break;
2551case 294:
2552//#line 804 "parser.y"
2553
{ yyval=new ASTreeNode(astContext,INFIX_EXPRESSION,new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); }
2554break;
2555case 296:
2556//#line 809 "parser.y"
2557
{ yyval=new ASTreeNode(astContext,INFIX_EXPRESSION,new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); }
2558break;
2559case 298:
2560//#line 814 "parser.y"
2561
{ yyval=new ASTreeNode(astContext,INFIX_EXPRESSION,new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); }
2562break;
2563case 300:
2564//#line 819 "parser.y"
2565
{ yyval=new ASTreeNode(astContext,CONDITIONAL_EXPRESSION,val_peek(4),val_peek(0),new ASTree[]{val_peek(4),val_peek(2),val_peek(0)}); }
2566break;
2567case 303:
2568//#line 827 "parser.y"
2569
{ yyval = new ASTreeNode(astContext,ASSIGNMENT,new ASTree[]{val_peek(2),val_peek(1),val_peek(0)}); }
2570break;
2571case 321:
2572//#line 857 "parser.y"
2573
{ yyval=new ASTreeNode(astContext,MODIFIERS,val_peek(0)); }
2574break;
2575case 322:
2576//#line 858 "parser.y"
2577
{ yyval=val_peek(1).addSubTree(val_peek(0)); }
2578break;
2579case 335:
2580//#line 875 "parser.y"
2581
{ yyval=new ASTreeNode(astContext,MULTI_PART_ID,val_peek(2),val_peek(0),new ASTree[]{val_peek(2),val_peek(0),null}); }
2582break;
2583//#line 2621 "Parser.java"
2584
//########## END OF USER-SUPPLIED ACTIONS ##########
2585
}//switch
2586
//#### Now let's reduce... ####
2587
if (yydebug) debug("reduce");
2588    state_drop(yym); //we just reduced yylen states
2589
yystate = state_peek(0); //get new state
2590
val_drop(yym); //corresponding value drop
2591
yym = yylhs[yyn]; //select next TERMINAL(on lhs)
2592
if (yystate == 0 && yym == 0)//done? 'rest' state and at first TERMINAL
2593
{
2594      if (yydebug)
2595        debug("After reduction, shifting from state 0 to state "+YYFINAL+"");
2596      yystate = YYFINAL; //explicitly say we're done
2597
state_push(YYFINAL); //and save it
2598
val_push(yyval); //also save the semantic value of parsing
2599
if (yychar < 0) //we want another character?
2600
{
2601        yychar = yylex(); //get next character
2602
if (yychar<0) yychar=0; //clean, if necessary
2603
if (yydebug)
2604          yylexdebug(yystate,yychar);
2605        }
2606      if (yychar == 0) //Good exit (if lex returns 0 ;-)
2607
break; //quit the loop--all DONE
2608
}//if yystate
2609
else //else not done yet
2610
{ //get next state and push, for next yydefred[]
2611
yyn = yygindex[yym]; //find out where to go
2612
if ((yyn != 0) && (yyn += yystate) >= 0 &&
2613            yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
2614        yystate = yytable[yyn]; //get new state
2615
else
2616        yystate = yydgoto[yym]; //else go to new defred
2617
if (yydebug)
2618        debug("after reduction, shifting from state "+state_peek(0)+" to state "+yystate+"");
2619      state_push(yystate); //going again, so push state & val...
2620
val_push(yyval); //for next action
2621
}
2622    }//main loop
2623
return 0;//yyaccept!!
2624
}
2625//## end of method parse() ######################################
2626

2627
2628
2629//## run() --- for Thread #######################################
2630
/**
2631 * A default run method, used for operating this parser
2632 * object in the background. It is intended for extending Thread
2633 * or implementing Runnable. Turn off with -Jnorun .
2634 */

2635public void run()
2636{
2637  yyparse();
2638}
2639//## end of method run() ########################################
2640

2641
2642
2643//## Constructors ###############################################
2644
/**
2645 * Default constructor. Turn off with -Jnoconstruct .
2646
2647 */

2648public Parser()
2649{
2650  //nothing to do
2651
}
2652
2653
2654/**
2655 * Create a parser, setting the debug to true or false.
2656 * @param debugMe true for debugging, false for no debug.
2657 */

2658public Parser(boolean debugMe)
2659{
2660  yydebug=debugMe;
2661}
2662//###############################################################
2663

2664
2665
2666}
2667//################### END OF CLASS ##############################
2668
Popular Tags