1 //### This file created by BYACC 1.9(/C# extension 0.9)
2 //### C# capabilities added 11 Sep 2000
3 //### static char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93";
4
5
6
7 // the current file was generated on 06/16/2010 at 16:57
8
9
10 //#line 2 "CqlGrammar.y"
11
12 /*#define YYDEBUG*/
13
14 /*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
15 !! !!
16 !! ATTENTION ATTENTION ATTENTION ATTENTION ATTENTION ATTENTION !!
17 !! !!
18 !! DO NOT CHANGE THIS FILE (CqlParser.cs) BY HAND!!!! !!
19 !! YOU HAVE BEEN WARNED !!!! !!
20 !! !!
21 !! ATTENTION ATTENTION ATTENTION ATTENTION ATTENTION ATTENTION !!
22 !! !!
23 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
24
25 /*-----------------------------------------------------------------------------
26 // <copyright file="CqlGrammar.y" company="Microsoft">
27 // Copyright (c) Microsoft Corporation. All rights reserved.
28 // </copyright>
29 //
30 // @owner Microsoft
31 // @backupOwner Microsoft
32 //---------------------------------------------------------------------------*/
33
34 using System;
35 using System.Data.Common.EntitySql.AST;
36 using System.Data.Entity;
37
38 /*//////////////////////////////////////////////////////////////////////////////
39
40 This pragma is needed since symbols used for defining precedence are not always
41 code generated by yacc
42
43 ///////////////////////////////////////////////////////////////////////////////*/
44 #pragma warning disable 414
45
46
47
48
49 //#####################################################################
50 // namespace: System.Data.Common.EntitySql
51 //#####################################################################
52 namespace System.Data.Common.EntitySql {
53 //#####################################################################
54 // class: CqlParser
55 // does : encapsulates yacc() parser functionality in a C# class
56 //#####################################################################
57 internal partial class CqlParser{
58
59 Boolean yydebug; //do I want debug output?
60 static int YYMAJOR = 1;
61 static int YYMINOR = 9;
62 int yynerrs; //number of errors so far
63 int yyerrflag; //was there an error?
64 int yychar; //the current working character
65
66 //########## MESSAGES ##########
67 //###############################################################
68 // method: debug
69 //###############################################################
debug(String msg)70 void debug(String msg)
71 {
72 if (yydebug)
73 Console.WriteLine(msg);
74 }
75
76 //########## STATE STACK ##########
77 static int YYSTACKSIZE = 500; //maximum stack size
78 int[] statestk; int stateptr; //state stack
79 //###############################################################
80 // methods: state stack push,pop,drop,peek
81 //###############################################################
state_push(int state)82 void state_push(int state)
83 {
84 if (stateptr>=YYSTACKSIZE-1) //overflowed?
85 yyerror_stackoverflow();
86 statestk[++stateptr]=state;
87 }
state_pop()88 int state_pop()
89 {
90 if (stateptr<0) //underflowed?
91 return -1;
92 return statestk[stateptr--];
93 }
state_drop(int cnt)94 void state_drop(int cnt)
95 {
96 int ptr;
97 ptr=stateptr-cnt;
98 if (ptr<0)
99 return;
100 stateptr = ptr;
101 }
state_peek(int relative)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 //###############################################################
init_stacks()113 Boolean init_stacks()
114 {
115 statestk = new int[YYSTACKSIZE];
116 stateptr = -1;
117 val_init();
118 return true;
119 }
120 //###############################################################
121 // method: dump_stacks : show n levels of the stacks
122 //###############################################################
dump_stacks(int count)123 void dump_stacks(int count)
124 {
125 int i;
126 Console.WriteLine("=index==state====value= s:"+stateptr+" v:"+valptr);
127 for (i=0;i<count;i++)
128 Console.WriteLine(" "+i+" "+statestk[i]+" "+valstk[i]);
129 Console.WriteLine("======================");
130 }
131
132
133 //########## SEMANTIC VALUES ##########
134 //## **default:object
135 //String yytext;//user variable to return contextual strings
136 object yyval; //used to return semantic vals from action routines
137 object yylval;//the 'lval' (result) I got from yylex()
138 object [] valstk;
139 int valptr;
140 //###############################################################
141 // methods: value stack push,pop,drop,peek.
142 //###############################################################
val_init()143 void val_init()
144 {
145 valstk=new object[YYSTACKSIZE];
146 yyval=(object)0;
147 yylval=(object)0;
148 valptr=-1;
149 }
val_push(object val)150 void val_push(object val)
151 {
152 if (valptr>=YYSTACKSIZE)
153 return;
154 valstk[++valptr]=val;
155 }
val_pop()156 object val_pop()
157 {
158 if (valptr<0)
159 return (object)-1;
160 return valstk[valptr--];
161 }
val_drop(int cnt)162 void val_drop(int cnt)
163 {
164 int ptr;
165 ptr=valptr-cnt;
166 if (ptr<0)
167 return;
168 valptr = ptr;
169 }
val_peek(int relative)170 object val_peek(int relative)
171 {
172 int ptr;
173 ptr=valptr-relative;
174 if (ptr<0)
175 return (object)-1;
176 return valstk[ptr];
177 }
178 //#### end semantic value section ####
179 public static short IDENTIFIER=257;
180 public static short ESCAPED_IDENTIFIER=258;
181 public static short PARAMETER=259;
182 public static short LITERAL=260;
183 public static short ALL=261;
184 public static short AND=262;
185 public static short ANYELEMENT=263;
186 public static short APPLY=264;
187 public static short AS=265;
188 public static short ASC=266;
189 public static short BETWEEN=267;
190 public static short BY=268;
191 public static short CASE=269;
192 public static short CAST=270;
193 public static short COLLATE=271;
194 public static short COLLECTION=272;
195 public static short CROSS=273;
196 public static short CREATEREF=274;
197 public static short DEREF=275;
198 public static short DESC=276;
199 public static short DISTINCT=277;
200 public static short ELEMENT=278;
201 public static short ELSE=279;
202 public static short END=280;
203 public static short EXCEPT=281;
204 public static short EXISTS=282;
205 public static short ESCAPE=283;
206 public static short FLATTEN=284;
207 public static short FROM=285;
208 public static short FULL=286;
209 public static short FUNCTION=287;
210 public static short GROUP=288;
211 public static short GROUPPARTITION=289;
212 public static short HAVING=290;
213 public static short IN=291;
214 public static short INNER=292;
215 public static short INTERSECT=293;
216 public static short IS=294;
217 public static short JOIN=295;
218 public static short KEY=296;
219 public static short LEFT=297;
220 public static short LIKE=298;
221 public static short LIMIT=299;
222 public static short MULTISET=300;
223 public static short NAVIGATE=301;
224 public static short NOT=302;
225 public static short NULL=303;
226 public static short OF=304;
227 public static short OFTYPE=305;
228 public static short ON=306;
229 public static short OR=307;
230 public static short ORDER=308;
231 public static short OUTER=309;
232 public static short OVERLAPS=310;
233 public static short ONLY=311;
234 public static short QMARK=312;
235 public static short REF=313;
236 public static short RELATIONSHIP=314;
237 public static short RIGHT=315;
238 public static short ROW=316;
239 public static short SELECT=317;
240 public static short SET=318;
241 public static short SKIP=319;
242 public static short THEN=320;
243 public static short TOP=321;
244 public static short TREAT=322;
245 public static short UNION=323;
246 public static short USING=324;
247 public static short VALUE=325;
248 public static short WHEN=326;
249 public static short WHERE=327;
250 public static short WITH=328;
251 public static short COMMA=329;
252 public static short COLON=330;
253 public static short SCOLON=331;
254 public static short DOT=332;
255 public static short EQUAL=333;
256 public static short L_PAREN=334;
257 public static short R_PAREN=335;
258 public static short L_BRACE=336;
259 public static short R_BRACE=337;
260 public static short L_CURLY=338;
261 public static short R_CURLY=339;
262 public static short PLUS=340;
263 public static short MINUS=341;
264 public static short STAR=342;
265 public static short FSLASH=343;
266 public static short PERCENT=344;
267 public static short OP_EQ=345;
268 public static short OP_NEQ=346;
269 public static short OP_LT=347;
270 public static short OP_LE=348;
271 public static short OP_GT=349;
272 public static short OP_GE=350;
273 public static short UNARYPLUS=351;
274 public static short UNARYMINUS=352;
275 public static short YYERRCODE=256;
276 static short [] yylhs = { -1,
277 0, 0, 1, 2, 2, 4, 4, 5, 5, 5,
278 3, 9, 9, 12, 12, 13, 14, 14, 15, 15,
279 16, 10, 10, 11, 11, 18, 27, 20, 30, 20,
280 26, 26, 26, 28, 28, 21, 31, 31, 32, 32,
281 32, 32, 32, 34, 34, 35, 36, 36, 36, 36,
282 36, 36, 36, 36, 36, 36, 37, 37, 22, 22,
283 38, 23, 23, 39, 24, 24, 41, 40, 25, 25,
284 44, 42, 45, 45, 46, 46, 43, 43, 47, 47,
285 48, 48, 48, 50, 50, 19, 19, 19, 19, 19,
286 19, 19, 19, 19, 19, 19, 19, 19, 19, 51,
287 62, 63, 52, 52, 52, 52, 52, 52, 52, 52,
288 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
289 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
290 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
291 52, 52, 52, 52, 52, 52, 52, 66, 66, 8,
292 67, 33, 33, 29, 29, 64, 64, 68, 68, 69,
293 58, 58, 58, 7, 53, 59, 54, 54, 55, 56,
294 57, 57, 57, 57, 57, 57, 60, 60, 60, 70,
295 70, 71, 71, 72, 72, 72, 65, 65, 65, 65,
296 65, 73, 74, 74, 74, 74, 6, 6, 49, 61,
297 61, 17, 17, 17, 17, 75, 76, 77, 78, 78,
298 79,
299 };
300 static short [] yylen = { 2,
301 0, 1, 2, 0, 1, 1, 2, 3, 3, 3,
302 3, 0, 1, 1, 2, 7, 2, 3, 1, 3,
303 2, 1, 1, 0, 1, 6, 0, 5, 0, 6,
304 0, 1, 1, 0, 4, 2, 1, 3, 1, 3,
305 1, 3, 1, 3, 5, 3, 2, 3, 2, 3,
306 2, 1, 2, 2, 3, 2, 2, 2, 0, 1,
307 2, 0, 1, 3, 0, 1, 0, 3, 0, 1,
308 0, 6, 0, 2, 0, 2, 1, 3, 2, 4,
309 0, 1, 1, 1, 3, 1, 1, 1, 1, 1,
310 1, 1, 1, 1, 1, 1, 1, 1, 1, 3,
311 3, 4, 3, 3, 3, 3, 3, 2, 2, 3,
312 3, 3, 3, 3, 3, 3, 4, 3, 3, 3,
313 4, 4, 4, 4, 4, 4, 3, 4, 1, 6,
314 6, 6, 7, 6, 7, 7, 8, 3, 4, 5,
315 6, 3, 3, 3, 2, 3, 1, 1, 1, 3,
316 3, 3, 1, 1, 3, 3, 4, 4, 5, 2,
317 4, 4, 3, 3, 4, 4, 6, 8, 4, 5,
318 3, 6, 6, 3, 6, 6, 6, 8, 10, 0,
319 1, 2, 2, 6, 8, 10, 1, 1, 2, 2,
320 1, 3, 3, 4, 3, 4, 1, 1, 1, 1,
321 1, 1, 1, 1, 1, 4, 4, 4, 1, 3,
322 2,
323 };
324 static short [] yydefred = { 0,
325 0, 0, 2, 0, 0, 6, 199, 197, 87, 200,
326 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
327 0, 0, 0, 201, 0, 0, 0, 0, 0, 0,
328 0, 0, 0, 0, 0, 0, 0, 198, 86, 89,
329 91, 92, 93, 94, 95, 96, 97, 98, 99, 0,
330 0, 129, 147, 149, 0, 3, 0, 0, 14, 7,
331 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
332 0, 0, 0, 0, 0, 148, 0, 0, 0, 0,
333 0, 0, 0, 0, 22, 0, 0, 0, 0, 0,
334 0, 8, 0, 9, 0, 10, 0, 0, 0, 0,
335 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
336 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
337 0, 0, 0, 0, 15, 0, 0, 0, 156, 0,
338 0, 0, 0, 0, 0, 0, 0, 32, 33, 0,
339 0, 0, 0, 0, 0, 0, 0, 154, 0, 0,
340 0, 0, 100, 0, 0, 0, 163, 174, 0, 171,
341 0, 0, 0, 0, 0, 0, 0, 127, 0, 0,
342 0, 0, 0, 0, 0, 0, 0, 164, 0, 0,
343 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
344 0, 0, 0, 0, 25, 11, 123, 0, 0, 0,
345 157, 0, 0, 166, 124, 122, 125, 0, 169, 162,
346 0, 0, 165, 0, 0, 161, 126, 0, 0, 0,
347 0, 0, 0, 39, 41, 43, 0, 0, 60, 0,
348 0, 0, 0, 0, 128, 0, 0, 0, 0, 0,
349 0, 0, 17, 0, 0, 19, 0, 0, 0, 0,
350 0, 0, 191, 0, 170, 0, 0, 0, 152, 155,
351 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
352 0, 0, 52, 0, 0, 0, 0, 0, 0, 0,
353 0, 63, 0, 0, 0, 0, 0, 0, 0, 0,
354 0, 0, 0, 0, 21, 0, 203, 204, 205, 0,
355 18, 0, 0, 189, 0, 0, 131, 190, 0, 0,
356 167, 0, 177, 0, 132, 130, 0, 0, 0, 40,
357 42, 0, 57, 47, 54, 0, 53, 49, 0, 58,
358 51, 0, 0, 46, 0, 67, 0, 66, 0, 176,
359 0, 175, 173, 172, 0, 0, 0, 134, 0, 0,
360 0, 0, 20, 0, 195, 0, 192, 193, 0, 0,
361 0, 133, 0, 0, 55, 48, 50, 0, 0, 0,
362 0, 26, 70, 0, 182, 183, 0, 135, 136, 0,
363 0, 0, 0, 209, 16, 196, 194, 168, 0, 178,
364 35, 0, 0, 71, 0, 137, 206, 207, 211, 0,
365 208, 0, 0, 0, 210, 179, 0, 0, 77, 0,
366 82, 0, 83, 79, 0, 0, 0, 0, 0, 0,
367 78, 0, 72, 0, 184, 80, 0, 0, 0, 185,
368 0, 186,
369 };
370 static short [] yydgoto = { 2,
371 3, 4, 56, 5, 6, 74, 75, 76, 57, 84,
372 196, 58, 59, 194, 245, 246, 295, 85, 86, 87,
373 155, 228, 281, 337, 372, 140, 151, 263, 147, 152,
374 222, 223, 224, 225, 226, 277, 278, 229, 282, 338,
375 370, 373, 408, 403, 417, 423, 409, 414, 38, 89,
376 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
377 49, 50, 51, 52, 296, 53, 54, 63, 131, 340,
378 341, 375, 252, 253, 297, 298, 299, 383, 384,
379 };
380 static short [] yysindex = { -321,
381 4723, 0, 0, -269, -321, 0, 0, 0, 0, 0,
382 -309, -271, -284, -204, -176, -162, -155, -131, -118, -94,
383 -84, -75, 4723, 0, -73, -51, -46, -42, -37, 4054,
384 4723, 4723, 4723, -182, -181, -211, 3614, 0, 0, 0,
385 0, 0, 0, 0, 0, 0, 0, 0, 0, -111,
386 14, 0, 0, 0, -171, 0, 4054, -269, 0, 0,
387 4054, 4723, -207, 4723, 4723, 4054, 4054, 4054, 4054, -225,
388 4054, 4723, 4723, -36, -28, 0, 5025, 4723, 4054, 4723,
389 4054, 4723, 0, -13, 0, 3614, 22, 3614, -291, -8,
390 -8, 0, -232, 0, -226, 0, 4723, 4723, 4723, 4723,
391 4723, 174, 4723, -186, 4723, 4723, 4139, -171, 4723, 4723,
392 4723, 4723, 4723, 4723, 4723, 4723, 4723, 4723, 4723, 4723,
393 4723, 4723, -6, -5, 0, -3, 3098, 4723, 0, 4723,
394 53, 3170, 3198, 3, 13, 18, 19, 0, 0, 4054,
395 41, -213, 3270, 3298, 42, 3370, -159, 0, 47, 3442,
396 -225, 62, 0, 4796, 68, 4723, 0, 0, 4054, 0,
397 4054, 5025, 4955, 5124, 5053, 3413, -141, 0, 59, 2998,
398 4723, 4723, 4723, 3814, 2926, 4723, 3341, 0, 4037, -177,
399 -177, -8, -8, -8, 4037, 4037, 1461, 1461, 1461, 1461,
400 5025, 5025, -256, 160, 0, 0, 0, 4723, 3614, 3514,
401 0, -171, 4723, 0, 0, 0, 0, 99, 0, 0,
402 -171, -241, 0, -171, 4723, 0, 0, -171, 124, -225,
403 4212, 122, -58, 0, 0, 0, 4723, 167, 0, 3614,
404 125, -110, 127, -81, 0, 123, -194, 4723, 4955, 5053,
405 3786, 3341, 0, -216, -69, 0, 135, 3614, 4723, -254,
406 -161, -245, 0, 3026, 0, -214, -171, -128, 0, 0,
407 -127, 139, 4723, 124, 3370, -58, 149, 151, 4796, -249,
408 -272, 179, 0, -265, 223, -248, 4796, 4796, 3614, 226,
409 207, 0, 170, 170, 170, 170, -183, -171, -112, 5096,
410 4723, 161, 175, 176, 0, 169, 0, 0, 0, -171,
411 0, 4054, 3614, 0, 4285, -171, 0, 0, 4358, -171,
412 0, -171, 0, -102, 0, 0, 4054, 178, 4723, 0,
413 0, -58, 0, 0, 0, 216, 0, 0, 230, 0,
414 0, 236, 228, 0, 4723, 0, 229, 0, 222, 0,
415 222, 0, 0, 0, -171, -100, -39, 0, 5096, -216,
416 -171, -171, 0, 204, 0, -66, 0, 0, -61, -20,
417 -57, 0, 209, 178, 0, 0, 0, 4723, 178, 4723,
418 272, 0, 0, 212, 0, 0, 73, 0, 0, 214,
419 115, -216, -56, 0, 0, 0, 0, 0, -171, 0,
420 0, 3614, 3614, 0, 4723, 0, 0, 0, 0, -171,
421 0, 227, 4723, 3542, 0, 0, 2954, -276, 0, -171,
422 0, 294, 0, 0, 4723, 4723, 259, -151, -199, 3614,
423 0, 4723, 0, -171, 0, 0, 3614, -45, -171, 0,
424 231, 0,
425 };
426 static short [] yyrindex = { 1510,
427 0, 0, 0, 4431, 3981, 0, 0, 0, 0, 0,
428 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
429 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
430 0, 0, 0, 3642, 3714, 3742, 0, 0, 0, 0,
431 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
432 0, 0, 0, 0, 0, 0, 0, 4504, 0, 0,
433 0, 0, 0, 0, 0, 0, 0, 0, 0, 4577,
434 0, 0, 0, 173, 262, 0, 2591, 0, 0, 0,
435 0, 0, 3908, 0, 0, 76, 0, -117, 0, 532,
436 621, 0, 4577, 0, 4577, 0, 0, 0, 0, 0,
437 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
438 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
439 0, 0, 0, 563, 0, 0, 0, 0, 0, 0,
440 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
441 0, 0, 0, 0, 0, 28, 0, 0, 0, 0,
442 4650, 0, 0, 0, 39, 0, 0, 0, 0, 0,
443 0, 2662, 303, 2023, 2307, 1576, 0, 0, 0, 2378,
444 0, 0, 0, 2861, 2094, 0, 1876, 0, 1647, 979,
445 1068, 711, 800, 889, 1723, 1798, 1157, 1242, 1331, 1420,
446 2733, 2804, 0, 0, 0, 0, 0, 0, 287, 0,
447 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
448 0, 0, 0, 0, 0, 0, 0, 0, 4869, 4650,
449 0, 1185, 31, 0, 0, 0, 0, 82, 0, -108,
450 0, 0, 0, 0, 0, 0, 0, 0, 311, 2449,
451 2520, 1947, 0, 0, 0, 0, 0, -169, 0, -139,
452 0, -83, 0, 0, 0, 0, 0, 0, 0, 0,
453 0, 0, 0, 4869, -109, 0, -15, 1294, 0, 0,
454 0, 0, 0, 0, 0, 0, 0, 0, 96, 0,
455 33, 0, 352, 352, 352, 352, 0, 0, 0, 2165,
456 0, 0, 0, 0, 0, -44, 0, 0, 0, 0,
457 0, 0, -166, 0, 0, 0, 0, 0, 0, 0,
458 0, 0, 0, 0, 0, 0, 0, 289, 0, 0,
459 0, 95, 0, 0, 0, 4942, 0, 0, 0, 0,
460 0, 0, 2909, 0, 0, 0, 84, 0, 0, 0,
461 443, 0, 0, 0, 0, 0, 0, 0, 2236, 0,
462 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
463 0, 0, 0, 290, 0, 0, 0, 0, 195, 0,
464 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
465 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
466 0, 83, 71, 0, 0, 0, 0, 0, 0, 0,
467 0, 0, 0, 0, 0, 0, 11, 66, 0, 0,
468 0, 0, 0, 0, 0, 0, 85, 0, 11, 101,
469 0, 0, 0, 0, 0, 0, 102, 0, 0, 0,
470 0, 0,
471 };
472 static short [] yygindex = { 0,
473 0, 0, 0, 0, 571, -1, 577, 578, 0, -47,
474 0, 0, 522, 0, 0, 283, -342, 30, 26, 0,
475 0, 0, 0, 0, 0, -86, 0, 320, -257, 0,
476 0, -209, -54, 365, 366, 0, 0, 0, 0, 0,
477 0, 0, 0, 0, 0, 0, 180, 171, 186, -67,
478 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
479 0, 0, 0, 0, -43, 0, 0, 0, 0, 205,
480 0, 251, 0, 0, 0, 0, 0, 0, 199,
481 };
482 static int YYTABLESIZE=5474;
483 static short[] yytable = { 34,
484 7, 8, 1, 304, 142, 318, 159, 380, 161, 124,
485 81, 266, 308, 126, 323, 7, 8, 55, 134, 135,
486 136, 137, 325, 141, 61, 148, 37, 153, 138, 328,
487 37, 145, 65, 149, 138, 138, 326, 156, 59, 399,
488 7, 8, 415, 329, 139, 324, 331, 157, 77, 64,
489 139, 139, 416, 123, 62, 292, 88, 90, 91, 322,
490 332, 364, 7, 8, 219, 73, 411, 333, 334, 257,
491 68, 128, 129, 7, 8, 23, 413, 369, 243, 305,
492 171, 62, 45, 69, 75, 7, 8, 127, 309, 132,
493 133, 232, 208, 234, 38, 61, 293, 88, 143, 294,
494 74, 76, 158, 144, 172, 146, 178, 150, 160, 158,
495 158, 173, 159, 159, 312, 156, 288, 306, 130, 96,
496 313, 210, 162, 163, 164, 165, 166, 345, 170, 65,
497 174, 175, 177, 264, 179, 180, 181, 182, 183, 184,
498 185, 186, 187, 188, 189, 190, 191, 192, 92, 94,
499 121, 93, 95, 199, 108, 200, 158, 66, 251, 159,
500 260, 235, 236, 153, 112, 113, 114, 256, 258, 215,
501 306, 67, 88, 307, 261, 216, 153, 424, 68, 146,
502 306, 230, 153, 425, 88, 153, 88, 153, 231, 187,
503 233, 244, 187, 289, 64, 187, 239, 240, 241, 153,
504 250, 242, 69, 306, 306, 153, 315, 316, 148, 250,
505 250, 84, 259, 314, 270, 70, 250, 84, 156, 306,
506 85, 84, 348, 248, 284, 23, 85, 271, 254, 306,
507 85, 306, 362, 272, 378, 250, 273, 356, 274, 71,
508 146, 359, 250, 346, 347, 188, 265, 156, 188, 72,
509 275, 188, 279, 286, 354, 250, 276, 41, 73, 300,
510 78, 90, 156, 290, 148, 301, 360, 156, 386, 363,
511 41, 389, 400, 387, 303, 122, 41, 390, 401, 41,
512 148, 41, 79, 429, 202, 250, 250, 80, 146, 430,
513 202, 81, 306, 41, 146, 379, 82, 93, 244, 41,
514 153, 377, 146, 146, 357, 95, 154, 381, 250, 81,
515 361, 306, 153, 153, 388, 153, 349, 153, 37, 153,
516 37, 153, 153, 108, 153, 195, 59, 193, 59, 81,
517 88, 197, 201, 153, 88, 153, 153, 204, 37, 81,
518 65, 81, 153, 250, 146, 81, 59, 205, 250, 250,
519 382, 180, 206, 207, 153, 45, 153, 37, 153, 37,
520 146, 37, 153, 65, 73, 37, 418, 65, 45, 59,
521 45, 62, 45, 59, 45, 209, 213, 45, 68, 45,
522 250, 217, 38, 61, 38, 61, 220, 402, 45, 62,
523 45, 45, 237, 392, 227, 393, 73, 45, 382, 74,
524 73, 68, 38, 61, 306, 68, 23, 396, 250, 45,
525 23, 45, 62, 45, 69, 75, 62, 45, 69, 75,
526 404, 38, 428, 38, 247, 38, 61, 431, 407, 38,
527 61, 74, 76, 255, 88, 74, 76, 88, 88, 88,
528 420, 407, 181, 88, 262, 88, 306, 427, 88, 398,
529 269, 88, 88, 88, 280, 88, 287, 88, 88, 283,
530 88, 285, 88, 88, 88, 88, 88, 88, 302, 88,
531 88, 88, 317, 327, 88, 167, 168, 169, 88, 88,
532 88, 88, 88, 320, 64, 321, 330, 88, 342, 343,
533 344, 88, 88, 335, 350, 88, 336, 339, 88, 88,
534 306, 88, 64, 88, 88, 88, 215, 88, 351, 352,
535 365, 88, 88, 88, 88, 88, 88, 88, 88, 88,
536 88, 88, 88, 90, 366, 64, 90, 90, 90, 64,
537 367, 109, 90, 368, 90, 374, 371, 90, 385, 394,
538 90, 90, 90, 391, 90, 395, 90, 90, 397, 90,
539 7, 90, 90, 90, 90, 90, 90, 422, 90, 90,
540 90, 406, 24, 90, 101, 432, 160, 90, 90, 90,
541 90, 90, 102, 28, 30, 60, 90, 35, 36, 125,
542 90, 90, 353, 319, 90, 267, 268, 90, 90, 426,
543 90, 376, 90, 90, 90, 421, 90, 419, 405, 0,
544 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,
545 90, 90, 0, 180, 0, 0, 180, 180, 180, 0,
546 108, 0, 180, 0, 180, 0, 0, 180, 0, 0,
547 180, 180, 180, 0, 180, 0, 180, 180, 0, 180,
548 0, 180, 180, 180, 180, 180, 180, 0, 180, 180,
549 180, 0, 0, 180, 0, 0, 0, 180, 180, 180,
550 180, 180, 0, 0, 0, 0, 180, 0, 0, 0,
551 180, 180, 0, 0, 180, 0, 0, 180, 180, 0,
552 180, 0, 180, 180, 180, 0, 180, 0, 0, 0,
553 180, 180, 180, 180, 180, 180, 180, 180, 180, 180,
554 180, 180, 0, 0, 181, 0, 0, 181, 181, 181,
555 105, 0, 0, 181, 0, 181, 0, 0, 181, 0,
556 0, 181, 181, 181, 0, 181, 0, 181, 181, 0,
557 181, 0, 181, 181, 181, 181, 181, 181, 0, 181,
558 181, 181, 0, 0, 181, 0, 0, 0, 181, 181,
559 181, 181, 181, 0, 0, 0, 0, 181, 0, 0,
560 0, 181, 181, 0, 0, 181, 0, 0, 181, 181,
561 0, 181, 0, 181, 181, 181, 0, 181, 0, 0,
562 0, 181, 181, 181, 181, 181, 181, 181, 181, 181,
563 181, 181, 181, 109, 0, 0, 109, 109, 109, 106,
564 0, 0, 109, 0, 109, 0, 0, 109, 0, 0,
565 109, 109, 109, 0, 109, 0, 109, 109, 0, 109,
566 0, 109, 109, 109, 109, 109, 109, 0, 109, 109,
567 109, 0, 0, 109, 0, 0, 0, 109, 109, 109,
568 109, 109, 0, 0, 0, 0, 109, 0, 0, 0,
569 109, 109, 0, 0, 109, 0, 0, 109, 109, 0,
570 109, 0, 109, 0, 109, 0, 109, 0, 0, 0,
571 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
572 109, 109, 108, 0, 0, 108, 108, 108, 107, 0,
573 0, 108, 0, 108, 0, 0, 108, 0, 0, 108,
574 108, 108, 0, 108, 0, 108, 108, 0, 108, 0,
575 108, 108, 108, 108, 108, 108, 0, 108, 108, 108,
576 0, 0, 108, 0, 0, 0, 108, 108, 108, 108,
577 108, 0, 0, 0, 0, 108, 0, 0, 0, 108,
578 108, 0, 0, 108, 0, 0, 108, 108, 0, 108,
579 0, 108, 0, 108, 0, 108, 0, 0, 0, 108,
580 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
581 108, 0, 105, 0, 0, 105, 105, 105, 103, 0,
582 0, 105, 0, 105, 0, 0, 105, 0, 0, 105,
583 105, 105, 0, 105, 0, 105, 105, 0, 105, 0,
584 105, 105, 105, 105, 105, 105, 0, 105, 105, 105,
585 0, 0, 105, 0, 0, 0, 105, 105, 105, 105,
586 105, 0, 0, 0, 0, 105, 0, 0, 0, 105,
587 105, 0, 0, 105, 0, 0, 105, 105, 0, 105,
588 0, 105, 0, 105, 0, 105, 0, 0, 0, 105,
589 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
590 105, 106, 0, 0, 106, 106, 106, 104, 0, 0,
591 106, 0, 106, 0, 0, 106, 0, 0, 106, 106,
592 106, 0, 106, 0, 106, 106, 0, 106, 0, 106,
593 106, 106, 106, 106, 106, 0, 106, 106, 106, 0,
594 0, 106, 0, 0, 0, 106, 106, 106, 106, 106,
595 0, 0, 0, 0, 106, 0, 0, 0, 106, 106,
596 0, 0, 106, 0, 0, 106, 106, 0, 106, 0,
597 106, 0, 106, 0, 106, 0, 0, 0, 106, 106,
598 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
599 107, 0, 0, 107, 107, 107, 113, 0, 0, 107,
600 0, 107, 0, 0, 107, 0, 0, 107, 107, 107,
601 0, 107, 0, 107, 107, 0, 107, 0, 107, 107,
602 107, 107, 107, 107, 36, 107, 107, 107, 0, 0,
603 107, 0, 0, 0, 107, 107, 107, 107, 107, 0,
604 0, 0, 0, 107, 0, 0, 0, 107, 107, 0,
605 0, 107, 0, 0, 107, 107, 0, 107, 0, 107,
606 0, 107, 0, 107, 0, 0, 0, 107, 107, 107,
607 107, 107, 107, 107, 107, 107, 107, 107, 107, 0,
608 103, 114, 0, 103, 103, 103, 0, 0, 0, 103,
609 0, 103, 0, 0, 103, 0, 0, 103, 103, 103,
610 0, 103, 0, 103, 103, 0, 103, 0, 103, 103,
611 103, 103, 103, 103, 0, 103, 103, 103, 0, 0,
612 103, 0, 0, 0, 103, 103, 103, 103, 103, 0,
613 0, 0, 0, 103, 0, 0, 0, 103, 103, 0,
614 0, 103, 0, 0, 103, 103, 0, 103, 0, 103,
615 0, 103, 0, 103, 0, 0, 0, 103, 103, 103,
616 0, 0, 0, 103, 103, 103, 103, 103, 103, 104,
617 111, 0, 104, 104, 104, 0, 0, 0, 104, 0,
618 104, 0, 0, 104, 0, 0, 104, 104, 104, 0,
619 104, 0, 104, 104, 0, 104, 0, 104, 104, 104,
620 104, 104, 104, 0, 104, 104, 104, 0, 0, 104,
621 0, 0, 0, 104, 104, 104, 104, 104, 0, 0,
622 0, 0, 104, 0, 0, 0, 104, 104, 0, 0,
623 104, 0, 0, 104, 104, 0, 104, 0, 104, 0,
624 104, 0, 104, 0, 0, 0, 104, 104, 104, 0,
625 0, 0, 104, 104, 104, 104, 104, 104, 113, 112,
626 0, 113, 113, 113, 0, 0, 0, 113, 0, 113,
627 0, 0, 113, 0, 0, 113, 113, 113, 0, 113,
628 0, 113, 113, 0, 113, 0, 113, 113, 113, 113,
629 113, 113, 0, 113, 113, 113, 0, 0, 113, 0,
630 0, 0, 113, 113, 113, 113, 113, 0, 0, 0,
631 0, 113, 36, 0, 36, 113, 113, 0, 0, 113,
632 0, 0, 113, 113, 0, 113, 0, 113, 0, 113,
633 0, 113, 36, 0, 0, 113, 0, 0, 0, 0,
634 0, 113, 113, 114, 0, 0, 114, 114, 114, 1,
635 0, 36, 114, 0, 114, 36, 0, 114, 0, 36,
636 114, 114, 114, 0, 114, 0, 114, 114, 0, 114,
637 0, 114, 114, 114, 114, 114, 114, 0, 114, 114,
638 114, 0, 0, 114, 0, 0, 0, 114, 114, 114,
639 114, 114, 0, 0, 0, 0, 114, 0, 0, 0,
640 114, 114, 0, 0, 114, 0, 43, 114, 114, 0,
641 114, 0, 114, 0, 114, 115, 114, 0, 0, 43,
642 114, 0, 0, 0, 0, 43, 114, 114, 43, 0,
643 43, 0, 111, 0, 0, 111, 111, 111, 0, 0,
644 0, 111, 43, 111, 0, 0, 111, 0, 43, 111,
645 111, 111, 0, 111, 0, 111, 111, 0, 111, 0,
646 111, 111, 111, 111, 111, 111, 0, 111, 111, 111,
647 0, 0, 111, 0, 0, 0, 111, 111, 111, 111,
648 111, 0, 0, 0, 0, 111, 150, 0, 0, 111,
649 111, 0, 0, 111, 0, 0, 111, 111, 0, 111,
650 0, 111, 0, 111, 0, 111, 0, 0, 0, 111,
651 0, 0, 0, 0, 0, 111, 111, 0, 0, 0,
652 0, 112, 0, 0, 112, 112, 112, 0, 0, 0,
653 112, 0, 112, 0, 0, 112, 0, 0, 112, 112,
654 112, 0, 112, 0, 112, 112, 0, 112, 0, 112,
655 112, 112, 112, 112, 112, 0, 112, 112, 112, 0,
656 0, 112, 151, 0, 0, 112, 112, 112, 112, 112,
657 0, 0, 0, 0, 112, 0, 0, 0, 112, 112,
658 0, 0, 112, 0, 0, 112, 112, 0, 112, 0,
659 112, 0, 112, 0, 112, 0, 0, 0, 112, 0,
660 0, 0, 0, 0, 112, 112, 4, 4, 4, 4,
661 0, 0, 4, 0, 0, 0, 0, 0, 4, 4,
662 0, 0, 0, 4, 4, 0, 0, 4, 0, 0,
663 0, 4, 108, 4, 0, 0, 4, 110, 4, 0,
664 110, 111, 112, 113, 114, 4, 0, 0, 0, 4,
665 4, 4, 4, 0, 4, 0, 0, 0, 0, 0,
666 0, 0, 4, 0, 0, 4, 4, 4, 0, 0,
667 0, 4, 0, 0, 0, 0, 0, 115, 0, 0,
668 115, 115, 115, 4, 0, 0, 115, 4, 115, 4,
669 4, 115, 0, 0, 115, 115, 115, 0, 115, 0,
670 115, 115, 0, 115, 0, 115, 115, 115, 115, 115,
671 115, 0, 115, 115, 115, 116, 0, 115, 0, 0,
672 0, 115, 115, 115, 115, 115, 0, 0, 0, 0,
673 115, 0, 0, 0, 115, 115, 0, 0, 115, 0,
674 0, 115, 115, 0, 115, 0, 115, 0, 150, 0,
675 115, 150, 150, 150, 115, 0, 0, 150, 0, 150,
676 0, 0, 150, 0, 0, 150, 150, 150, 0, 150,
677 0, 150, 150, 0, 150, 0, 150, 150, 150, 150,
678 150, 150, 0, 150, 150, 150, 117, 0, 150, 0,
679 0, 0, 150, 150, 150, 150, 150, 0, 0, 0,
680 0, 150, 0, 0, 0, 150, 150, 0, 0, 150,
681 0, 0, 150, 150, 0, 150, 0, 150, 0, 0,
682 0, 150, 0, 0, 151, 150, 0, 151, 151, 151,
683 0, 0, 0, 151, 0, 151, 0, 0, 151, 0,
684 0, 151, 151, 151, 0, 151, 0, 151, 151, 0,
685 151, 0, 151, 151, 151, 151, 151, 151, 0, 151,
686 151, 151, 118, 0, 151, 0, 0, 0, 151, 151,
687 151, 151, 151, 0, 0, 0, 0, 151, 0, 0,
688 0, 151, 151, 0, 0, 151, 0, 0, 151, 151,
689 0, 151, 0, 151, 0, 0, 0, 151, 0, 110,
690 0, 151, 110, 110, 110, 0, 0, 0, 110, 0,
691 110, 0, 0, 110, 0, 0, 110, 110, 110, 0,
692 110, 0, 110, 110, 0, 110, 0, 110, 110, 110,
693 110, 110, 110, 119, 110, 110, 110, 0, 0, 110,
694 0, 0, 0, 110, 110, 110, 110, 110, 0, 0,
695 0, 0, 110, 0, 0, 0, 110, 110, 0, 0,
696 110, 0, 0, 110, 110, 0, 110, 0, 110, 0,
697 0, 0, 110, 0, 0, 0, 110, 116, 0, 0,
698 116, 116, 116, 0, 0, 0, 116, 0, 116, 0,
699 0, 116, 0, 0, 116, 116, 116, 0, 116, 0,
700 116, 116, 0, 116, 140, 116, 116, 116, 0, 116,
701 116, 0, 116, 116, 116, 0, 0, 116, 0, 0,
702 0, 116, 116, 116, 116, 116, 0, 0, 0, 0,
703 116, 0, 0, 0, 116, 116, 0, 0, 116, 0,
704 0, 116, 116, 0, 116, 0, 116, 0, 117, 0,
705 116, 117, 117, 117, 116, 0, 0, 117, 0, 117,
706 0, 0, 117, 0, 0, 117, 117, 117, 0, 117,
707 0, 117, 117, 0, 117, 141, 117, 117, 117, 0,
708 117, 117, 0, 117, 117, 117, 0, 0, 117, 0,
709 0, 0, 117, 117, 117, 117, 117, 0, 0, 0,
710 0, 117, 0, 0, 0, 117, 117, 0, 0, 117,
711 0, 0, 117, 117, 0, 117, 0, 117, 0, 0,
712 0, 117, 0, 0, 118, 117, 0, 118, 118, 118,
713 0, 0, 0, 118, 0, 118, 0, 0, 118, 0,
714 0, 118, 118, 118, 0, 118, 120, 118, 118, 0,
715 118, 0, 118, 118, 118, 0, 118, 118, 0, 118,
716 118, 118, 0, 0, 118, 0, 0, 0, 118, 118,
717 118, 118, 118, 0, 0, 0, 0, 118, 0, 0,
718 0, 118, 118, 0, 0, 0, 0, 0, 118, 118,
719 0, 118, 0, 118, 0, 119, 0, 118, 119, 119,
720 119, 118, 0, 0, 119, 0, 119, 0, 0, 119,
721 0, 0, 119, 119, 0, 0, 119, 138, 119, 119,
722 0, 119, 0, 119, 119, 119, 0, 119, 119, 0,
723 119, 119, 119, 0, 0, 119, 0, 0, 0, 119,
724 119, 119, 119, 119, 0, 0, 0, 0, 119, 0,
725 0, 0, 119, 119, 0, 0, 0, 0, 0, 119,
726 119, 0, 119, 0, 119, 0, 140, 0, 119, 140,
727 140, 140, 119, 0, 0, 140, 0, 140, 0, 0,
728 140, 0, 0, 140, 140, 0, 0, 140, 121, 140,
729 140, 0, 140, 0, 140, 140, 140, 0, 140, 140,
730 0, 140, 140, 140, 0, 0, 140, 0, 0, 0,
731 140, 140, 140, 140, 0, 0, 0, 0, 0, 140,
732 0, 0, 0, 140, 140, 0, 0, 0, 0, 0,
733 140, 140, 0, 140, 0, 140, 0, 141, 0, 140,
734 141, 141, 141, 140, 0, 0, 141, 0, 141, 0,
735 0, 141, 0, 0, 141, 141, 0, 0, 141, 139,
736 141, 141, 0, 141, 0, 141, 141, 141, 0, 141,
737 141, 0, 141, 141, 141, 0, 0, 141, 0, 0,
738 0, 141, 141, 141, 141, 0, 0, 0, 0, 0,
739 141, 0, 0, 0, 141, 141, 0, 0, 0, 0,
740 0, 141, 141, 0, 141, 0, 141, 0, 120, 0,
741 141, 120, 120, 120, 141, 0, 0, 120, 0, 120,
742 0, 0, 120, 0, 0, 120, 120, 0, 0, 120,
743 145, 120, 120, 0, 120, 0, 120, 0, 120, 0,
744 120, 120, 0, 120, 0, 120, 0, 0, 120, 0,
745 0, 0, 120, 120, 120, 120, 0, 0, 0, 0,
746 0, 120, 0, 0, 0, 120, 120, 0, 0, 0,
747 0, 0, 120, 120, 0, 120, 0, 120, 0, 138,
748 0, 120, 138, 138, 138, 120, 0, 0, 138, 0,
749 138, 0, 0, 138, 0, 0, 138, 138, 0, 0,
750 0, 146, 138, 138, 0, 138, 0, 138, 138, 138,
751 0, 138, 138, 0, 138, 0, 138, 0, 0, 138,
752 0, 0, 0, 138, 138, 138, 138, 0, 0, 0,
753 0, 0, 138, 0, 0, 0, 138, 138, 0, 0,
754 0, 0, 0, 138, 138, 0, 138, 0, 138, 0,
755 121, 0, 138, 121, 121, 121, 138, 0, 0, 121,
756 0, 121, 0, 0, 121, 0, 0, 121, 121, 0,
757 0, 121, 142, 121, 121, 0, 121, 0, 121, 0,
758 121, 0, 121, 121, 0, 121, 0, 121, 0, 0,
759 121, 0, 0, 0, 121, 121, 121, 121, 0, 0,
760 0, 0, 0, 121, 0, 0, 0, 121, 121, 0,
761 0, 0, 0, 0, 121, 121, 0, 121, 0, 121,
762 0, 139, 0, 121, 139, 139, 139, 121, 0, 0,
763 139, 0, 139, 0, 0, 139, 0, 0, 139, 139,
764 0, 0, 0, 143, 139, 139, 0, 139, 0, 139,
765 139, 139, 0, 139, 139, 0, 139, 0, 139, 0,
766 0, 139, 0, 0, 0, 139, 139, 139, 139, 0,
767 0, 0, 0, 0, 139, 0, 0, 0, 139, 139,
768 0, 0, 0, 0, 0, 139, 139, 0, 139, 0,
769 139, 0, 145, 0, 139, 145, 145, 0, 139, 0,
770 144, 145, 0, 145, 0, 0, 145, 0, 0, 145,
771 145, 0, 0, 145, 0, 145, 145, 0, 145, 0,
772 145, 0, 145, 0, 0, 145, 0, 145, 0, 145,
773 0, 0, 0, 0, 0, 0, 145, 145, 145, 145,
774 0, 0, 0, 0, 0, 145, 0, 0, 44, 145,
775 145, 0, 0, 0, 0, 0, 145, 145, 0, 145,
776 0, 145, 0, 146, 0, 145, 146, 146, 0, 145,
777 0, 0, 146, 0, 146, 0, 0, 146, 0, 0,
778 146, 146, 0, 0, 146, 0, 146, 146, 0, 146,
779 0, 146, 0, 146, 0, 0, 146, 0, 146, 0,
780 146, 0, 0, 0, 0, 0, 0, 146, 146, 146,
781 146, 0, 0, 0, 0, 0, 146, 0, 0, 0,
782 146, 146, 0, 0, 0, 0, 0, 146, 146, 0,
783 146, 0, 146, 0, 142, 0, 146, 142, 142, 0,
784 146, 0, 0, 142, 0, 142, 0, 0, 142, 0,
785 0, 142, 142, 0, 0, 142, 0, 142, 142, 0,
786 142, 0, 142, 0, 142, 0, 0, 142, 0, 142,
787 0, 142, 0, 0, 0, 0, 0, 0, 142, 142,
788 142, 142, 0, 0, 0, 0, 0, 142, 0, 0,
789 0, 142, 142, 0, 0, 0, 0, 0, 142, 142,
790 0, 142, 0, 142, 0, 143, 0, 142, 143, 143,
791 0, 142, 0, 0, 143, 0, 143, 0, 0, 143,
792 0, 0, 143, 143, 0, 0, 143, 0, 143, 143,
793 0, 143, 0, 143, 0, 143, 0, 0, 143, 0,
794 143, 0, 143, 0, 0, 0, 0, 0, 0, 143,
795 143, 143, 143, 0, 0, 0, 0, 0, 143, 0,
796 0, 0, 143, 143, 0, 144, 144, 0, 0, 143,
797 143, 144, 143, 144, 143, 0, 144, 0, 143, 144,
798 144, 0, 143, 144, 0, 144, 144, 0, 144, 0,
799 144, 0, 144, 0, 0, 144, 0, 144, 0, 144,
800 0, 0, 0, 0, 0, 0, 144, 144, 144, 144,
801 0, 0, 0, 0, 0, 144, 0, 0, 0, 144,
802 144, 44, 0, 0, 0, 0, 144, 144, 0, 144,
803 0, 144, 0, 0, 44, 144, 44, 0, 44, 144,
804 44, 0, 0, 44, 0, 44, 99, 0, 0, 0,
805 0, 0, 0, 0, 0, 97, 44, 44, 101, 411,
806 98, 0, 0, 44, 412, 0, 0, 0, 0, 413,
807 0, 0, 0, 0, 99, 44, 0, 44, 0, 44,
808 0, 0, 0, 44, 100, 0, 101, 102, 107, 0,
809 0, 103, 0, 0, 0, 104, 0, 108, 109, 0,
810 105, 0, 0, 106, 0, 110, 111, 112, 113, 114,
811 115, 116, 117, 118, 119, 120, 107, 0, 99, 0,
812 238, 0, 0, 0, 0, 108, 109, 97, 0, 0,
813 101, 0, 98, 110, 111, 112, 113, 114, 115, 116,
814 117, 118, 119, 120, 0, 0, 99, 106, 0, 0,
815 0, 0, 0, 0, 0, 0, 100, 0, 101, 102,
816 107, 0, 0, 103, 0, 0, 0, 104, 0, 108,
817 109, 0, 105, 0, 0, 106, 0, 110, 111, 112,
818 113, 114, 115, 116, 117, 118, 119, 120, 107, 0,
819 0, 0, 0, 0, 310, 0, 0, 108, 109, 97,
820 311, 0, 0, 0, 98, 110, 111, 112, 113, 114,
821 115, 116, 117, 118, 119, 120, 0, 0, 99, 0,
822 0, 0, 0, 0, 0, 0, 0, 0, 100, 0,
823 101, 102, 0, 0, 0, 103, 0, 0, 0, 104,
824 0, 0, 0, 0, 105, 0, 0, 106, 0, 0,
825 0, 0, 0, 0, 0, 0, 0, 198, 0, 0,
826 107, 0, 0, 0, 0, 0, 0, 0, 0, 108,
827 109, 97, 0, 0, 202, 0, 98, 110, 111, 112,
828 113, 114, 115, 116, 117, 118, 119, 120, 0, 0,
829 99, 0, 0, 0, 0, 0, 0, 0, 0, 97,
830 100, 0, 101, 102, 98, 0, 0, 103, 0, 0,
831 0, 104, 0, 0, 0, 0, 105, 0, 99, 106,
832 0, 0, 0, 0, 0, 0, 0, 0, 100, 0,
833 101, 102, 107, 0, 0, 103, 0, 0, 0, 104,
834 0, 108, 109, 0, 105, 0, 0, 106, 0, 110,
835 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
836 107, 0, 0, 0, 0, 0, 203, 0, 0, 108,
837 109, 97, 0, 0, 0, 0, 98, 110, 111, 112,
838 113, 114, 115, 116, 117, 118, 119, 120, 0, 0,
839 99, 0, 0, 0, 0, 0, 0, 0, 0, 97,
840 100, 0, 101, 102, 98, 0, 0, 103, 0, 0,
841 0, 104, 0, 0, 0, 0, 105, 0, 99, 106,
842 0, 0, 0, 0, 0, 0, 0, 0, 100, 0,
843 101, 102, 107, 0, 0, 103, 0, 0, 211, 104,
844 0, 108, 109, 0, 105, 0, 0, 106, 0, 110,
845 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
846 107, 0, 0, 0, 0, 0, 212, 0, 0, 108,
847 109, 97, 0, 101, 214, 0, 98, 110, 111, 112,
848 113, 114, 115, 116, 117, 118, 119, 120, 0, 0,
849 99, 0, 0, 0, 0, 0, 0, 0, 0, 0,
850 100, 0, 101, 102, 0, 0, 0, 103, 0, 0,
851 0, 104, 108, 109, 0, 0, 105, 0, 0, 106,
852 110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
853 120, 0, 107, 0, 0, 0, 0, 0, 0, 0,
854 0, 108, 109, 97, 0, 0, 218, 0, 98, 110,
855 111, 112, 113, 114, 115, 116, 117, 118, 119, 120,
856 0, 0, 99, 0, 0, 0, 0, 0, 0, 0,
857 0, 0, 100, 0, 101, 102, 0, 0, 0, 103,
858 0, 0, 0, 104, 108, 109, 0, 0, 105, 0,
859 0, 106, 110, 111, 112, 113, 114, 115, 116, 117,
860 118, 119, 120, 0, 107, 0, 0, 0, 0, 0,
861 0, 0, 0, 108, 109, 97, 0, 0, 0, 0,
862 98, 110, 111, 112, 113, 114, 115, 116, 117, 118,
863 119, 120, 0, 0, 99, 0, 0, 0, 0, 0,
864 0, 0, 0, 97, 100, 0, 101, 102, 98, 0,
865 0, 103, 0, 0, 0, 104, 0, 0, 0, 0,
866 105, 0, 99, 106, 0, 0, 0, 0, 0, 0,
867 0, 0, 100, 249, 101, 102, 107, 0, 0, 103,
868 0, 0, 0, 104, 0, 108, 109, 0, 105, 0,
869 0, 106, 0, 110, 111, 112, 113, 114, 115, 116,
870 117, 118, 119, 120, 107, 0, 0, 0, 0, 0,
871 410, 0, 0, 108, 109, 97, 0, 0, 0, 0,
872 98, 110, 111, 112, 113, 114, 115, 116, 117, 118,
873 119, 120, 0, 0, 99, 0, 0, 0, 0, 0,
874 0, 0, 0, 88, 100, 0, 101, 102, 88, 0,
875 0, 103, 0, 0, 0, 104, 0, 0, 0, 0,
876 105, 0, 88, 106, 0, 0, 0, 0, 0, 0,
877 0, 0, 88, 0, 88, 88, 107, 0, 0, 88,
878 0, 0, 0, 88, 0, 108, 109, 0, 88, 0,
879 0, 88, 0, 110, 111, 112, 113, 114, 115, 116,
880 117, 118, 119, 120, 88, 0, 0, 0, 0, 0,
881 0, 0, 0, 88, 88, 90, 0, 0, 0, 0,
882 90, 88, 88, 88, 88, 88, 88, 88, 88, 88,
883 88, 88, 0, 0, 90, 0, 0, 0, 0, 0,
884 0, 0, 0, 148, 90, 0, 90, 90, 148, 0,
885 0, 90, 0, 0, 0, 90, 0, 0, 0, 0,
886 90, 0, 148, 90, 0, 0, 0, 0, 0, 0,
887 0, 0, 148, 0, 148, 148, 90, 0, 0, 148,
888 0, 0, 0, 148, 0, 90, 90, 0, 148, 0,
889 0, 148, 0, 90, 90, 90, 90, 90, 90, 90,
890 90, 90, 90, 90, 148, 0, 99, 0, 291, 0,
891 0, 0, 0, 148, 148, 97, 0, 0, 101, 0,
892 98, 148, 148, 148, 148, 148, 148, 148, 148, 148,
893 148, 148, 0, 0, 99, 106, 0, 0, 0, 0,
894 0, 0, 0, 0, 100, 0, 101, 102, 107, 0,
895 0, 103, 0, 0, 0, 104, 0, 108, 109, 0,
896 0, 0, 0, 106, 0, 110, 111, 112, 113, 114,
897 115, 116, 117, 118, 119, 120, 107, 0, 0, 0,
898 0, 0, 0, 0, 0, 108, 109, 0, 0, 0,
899 0, 0, 0, 110, 111, 112, 113, 114, 115, 116,
900 117, 118, 119, 120, 27, 27, 27, 27, 27, 0,
901 27, 0, 0, 0, 0, 0, 27, 27, 0, 0,
902 0, 27, 27, 0, 27, 27, 0, 0, 0, 27,
903 0, 27, 0, 0, 0, 0, 27, 0, 0, 0,
904 0, 0, 0, 27, 0, 0, 0, 27, 27, 27,
905 27, 0, 27, 0, 0, 0, 0, 0, 0, 0,
906 27, 0, 0, 27, 0, 27, 0, 0, 27, 27,
907 0, 0, 29, 0, 0, 0, 0, 5, 5, 5,
908 5, 27, 0, 5, 0, 27, 0, 27, 27, 5,
909 5, 0, 0, 0, 5, 5, 0, 0, 5, 0,
910 0, 0, 5, 0, 5, 0, 0, 5, 0, 5,
911 0, 0, 0, 0, 0, 0, 5, 0, 0, 0,
912 5, 5, 5, 5, 0, 5, 0, 0, 0, 0,
913 0, 0, 0, 5, 0, 0, 5, 5, 5, 0,
914 0, 0, 5, 0, 0, 0, 0, 0, 0, 0,
915 7, 8, 9, 10, 5, 0, 11, 0, 5, 0,
916 5, 5, 12, 13, 0, 0, 0, 14, 15, 0,
917 0, 16, 0, 0, 0, 17, 0, 18, 0, 0,
918 0, 0, 19, 0, 0, 0, 0, 0, 0, 20,
919 0, 0, 0, 21, 22, 23, 24, 0, 25, 0,
920 0, 0, 0, 0, 0, 0, 26, 0, 108, 27,
921 83, 28, 0, 0, 0, 29, 110, 111, 112, 113,
922 114, 0, 0, 117, 118, 119, 120, 30, 0, 0,
923 0, 31, 0, 32, 33, 7, 8, 9, 10, 176,
924 0, 11, 0, 0, 0, 0, 0, 12, 13, 0,
925 0, 0, 14, 15, 0, 0, 16, 0, 0, 0,
926 17, 0, 18, 0, 0, 0, 0, 19, 0, 0,
927 0, 0, 0, 0, 20, 0, 0, 0, 21, 22,
928 23, 24, 0, 25, 0, 0, 0, 0, 0, 0,
929 0, 26, 0, 0, 27, 0, 28, 0, 0, 0,
930 29, 0, 0, 0, 0, 0, 0, 0, 7, 8,
931 9, 10, 30, 0, 11, 0, 31, 0, 32, 33,
932 12, 13, 0, 0, 0, 14, 15, 0, 0, 16,
933 0, 0, 0, 17, 0, 18, 0, 0, 0, 0,
934 19, 0, 0, 0, 0, 0, 0, 20, 0, 0,
935 0, 21, 22, 23, 24, 0, 25, 0, 0, 0,
936 0, 0, 0, 0, 26, 0, 0, 27, 83, 28,
937 0, 0, 0, 29, 0, 0, 0, 0, 0, 0,
938 0, 7, 8, 9, 10, 221, 0, 11, 0, 31,
939 0, 32, 33, 12, 13, 0, 0, 0, 14, 15,
940 0, 0, 16, 0, 0, 0, 17, 0, 18, 0,
941 0, 0, 0, 19, 0, 0, 0, 0, 0, 0,
942 20, 0, 0, 0, 21, 22, 23, 24, 0, 25,
943 0, 0, 0, 0, 0, 0, 0, 26, 0, 0,
944 27, 0, 28, 0, 0, 0, 29, 0, 0, 0,
945 0, 0, 0, 0, 7, 8, 9, 10, 30, 355,
946 11, 0, 31, 0, 32, 33, 12, 13, 0, 0,
947 0, 14, 15, 0, 0, 16, 0, 0, 0, 17,
948 0, 18, 0, 0, 0, 0, 19, 0, 0, 0,
949 0, 0, 0, 20, 0, 0, 0, 21, 22, 23,
950 24, 0, 25, 0, 0, 0, 0, 0, 0, 0,
951 26, 0, 0, 27, 0, 28, 0, 0, 0, 29,
952 0, 0, 0, 0, 0, 0, 0, 12, 12, 12,
953 12, 30, 358, 12, 0, 31, 0, 32, 33, 12,
954 12, 0, 0, 0, 12, 12, 0, 0, 12, 0,
955 0, 0, 12, 0, 12, 0, 0, 0, 0, 12,
956 0, 0, 0, 0, 0, 0, 12, 0, 0, 0,
957 12, 12, 12, 12, 0, 12, 0, 0, 0, 0,
958 0, 0, 0, 12, 0, 0, 12, 12, 12, 0,
959 0, 0, 12, 0, 0, 0, 0, 0, 0, 0,
960 13, 13, 13, 13, 12, 0, 13, 0, 12, 0,
961 12, 12, 13, 13, 0, 0, 0, 13, 13, 0,
962 0, 13, 0, 0, 0, 13, 0, 13, 0, 0,
963 0, 0, 13, 0, 0, 0, 0, 0, 0, 13,
964 0, 0, 0, 13, 13, 13, 13, 0, 13, 0,
965 0, 0, 0, 0, 0, 0, 13, 0, 0, 13,
966 13, 13, 0, 0, 0, 13, 0, 0, 0, 0,
967 0, 0, 0, 31, 31, 31, 31, 13, 0, 31,
968 0, 13, 0, 13, 13, 31, 31, 0, 0, 0,
969 31, 31, 0, 0, 31, 0, 0, 0, 31, 0,
970 31, 0, 0, 0, 0, 31, 0, 0, 0, 0,
971 0, 0, 31, 0, 0, 0, 31, 31, 31, 31,
972 0, 31, 0, 0, 0, 0, 0, 0, 0, 31,
973 0, 0, 31, 31, 31, 0, 0, 0, 31, 0,
974 0, 0, 0, 0, 0, 0, 31, 31, 31, 31,
975 31, 0, 31, 0, 31, 0, 31, 31, 31, 31,
976 0, 0, 0, 31, 31, 0, 0, 31, 0, 0,
977 0, 31, 0, 31, 0, 0, 0, 0, 31, 0,
978 0, 0, 0, 0, 0, 31, 0, 0, 0, 31,
979 31, 31, 31, 0, 31, 0, 0, 0, 0, 0,
980 0, 0, 31, 0, 0, 31, 0, 31, 0, 0,
981 31, 31, 0, 0, 0, 0, 0, 0, 0, 7,
982 8, 9, 10, 31, 0, 11, 0, 31, 0, 31,
983 31, 12, 13, 0, 0, 0, 14, 15, 0, 0,
984 16, 0, 0, 0, 17, 0, 18, 0, 0, 0,
985 0, 19, 0, 0, 0, 0, 0, 0, 20, 0,
986 0, 0, 21, 22, 23, 24, 0, 25, 0, 0,
987 0, 0, 0, 0, 0, 26, 0, 0, 27, 0,
988 28, 0, 0, 0, 29, 0, 0, 0, 0, 0,
989 0, 0, 7, 8, 9, 10, 30, 0, 11, 0,
990 31, 0, 32, 33, 12, 13, 0, 0, 0, 14,
991 15, 0, 0, 16, 0, 0, 0, 17, 0, 18,
992 0, 0, 0, 0, 19, 0, 0, 0, 0, 0,
993 0, 20, 0, 0, 0, 21, 22, 23, 24, 0,
994 25, 0, 0, 0, 0, 0, 0, 0, 26, 0,
995 0, 27, 0, 28, 0, 0, 0, 29, 0, 0,
996 0, 0, 0, 0, 0, 34, 34, 34, 34, 221,
997 0, 34, 0, 31, 0, 32, 33, 34, 34, 0,
998 0, 0, 34, 34, 0, 0, 34, 0, 0, 0,
999 34, 0, 34, 0, 0, 0, 0, 34, 0, 0,
1000 0, 0, 0, 0, 34, 0, 0, 0, 34, 34,
1001 34, 34, 0, 34, 0, 0, 0, 0, 0, 0,
1002 0, 34, 0, 0, 34, 0, 34, 0, 0, 0,
1003 34, 0, 0, 0, 0, 0, 0, 0, 56, 56,
1004 56, 56, 34, 0, 56, 0, 34, 0, 34, 34,
1005 56, 56, 0, 0, 0, 56, 56, 0, 0, 56,
1006 0, 98, 0, 56, 0, 56, 0, 0, 0, 0,
1007 56, 0, 0, 0, 0, 99, 0, 56, 0, 0,
1008 0, 56, 56, 56, 56, 100, 56, 101, 102, 0,
1009 0, 0, 103, 0, 56, 0, 104, 56, 0, 56,
1010 0, 105, 0, 56, 106, 0, 0, 0, 0, 0,
1011 0, 0, 0, 0, 0, 56, 0, 107, 0, 56,
1012 0, 56, 56, 0, 0, 0, 108, 109, 0, 0,
1013 0, 98, 0, 0, 110, 111, 112, 113, 114, 115,
1014 116, 117, 118, 119, 120, 99, 0, 0, 0, 0,
1015 0, 0, 0, 0, 0, 100, 0, 101, 102, 0,
1016 0, 0, 103, 0, 0, 0, 104, 0, 0, 0,
1017 0, 0, 0, 99, 106, 0, 0, 0, 0, 0,
1018 0, 0, 0, 0, 0, 101, 0, 107, 0, 0,
1019 103, 0, 0, 0, 0, 0, 108, 109, 0, 0,
1020 0, 0, 106, 0, 110, 111, 112, 113, 114, 115,
1021 116, 117, 118, 119, 120, 107, 99, 0, 0, 0,
1022 0, 0, 0, 0, 108, 109, 0, 0, 101, 0,
1023 0, 0, 110, 111, 112, 113, 114, 115, 116, 117,
1024 118, 119, 120, 0, 0, 106, 0, 0, 0, 0,
1025 0, 0, 0, 0, 0, 0, 101, 0, 107, 0,
1026 0, 0, 0, 0, 0, 0, 0, 108, 109, 0,
1027 0, 0, 0, 0, 0, 110, 111, 112, 113, 114,
1028 115, 116, 117, 118, 119, 120, 107, 0, 0, 0,
1029 0, 0, 0, 0, 0, 108, 109, 0, 0, 0,
1030 0, 0, 0, 110, 111, 112, 113, 114, 115, 116,
1031 117, 118, 119, 120,
1032 };
1033 static short [] yycheck = { 1,
1034 257, 258, 324, 258, 72, 263, 93, 350, 95, 57,
1035 0, 221, 258, 61, 264, 257, 258, 287, 66, 67,
1036 68, 69, 295, 71, 334, 80, 1, 0, 261, 295,
1037 0, 79, 0, 81, 261, 261, 309, 329, 0, 382,
1038 257, 258, 319, 309, 277, 295, 295, 339, 23, 334,
1039 277, 277, 329, 55, 326, 272, 31, 32, 33, 269,
1040 309, 319, 257, 258, 151, 0, 266, 277, 278, 311,
1041 0, 279, 280, 257, 258, 0, 276, 335, 335, 334,
1042 267, 0, 0, 0, 0, 257, 258, 62, 334, 64,
1043 65, 159, 140, 161, 0, 0, 313, 72, 73, 316,
1044 0, 0, 335, 78, 291, 80, 108, 82, 335, 279,
1045 280, 298, 279, 280, 329, 329, 311, 332, 326, 331,
1046 335, 335, 97, 98, 99, 100, 101, 311, 103, 334,
1047 105, 106, 107, 220, 109, 110, 111, 112, 113, 114,
1048 115, 116, 117, 118, 119, 120, 121, 122, 331, 331,
1049 262, 334, 334, 128, 332, 130, 326, 334, 202, 326,
1050 215, 303, 304, 273, 342, 343, 344, 211, 212, 329,
1051 332, 334, 0, 335, 218, 335, 286, 329, 334, 154,
1052 332, 156, 292, 335, 159, 295, 161, 297, 159, 329,
1053 161, 193, 332, 237, 0, 335, 171, 172, 173, 309,
1054 202, 176, 334, 332, 332, 315, 335, 335, 263, 211,
1055 212, 329, 214, 257, 273, 334, 218, 335, 329, 332,
1056 329, 339, 335, 198, 335, 335, 335, 286, 203, 332,
1057 339, 332, 335, 292, 335, 237, 295, 305, 297, 334,
1058 215, 309, 244, 287, 288, 329, 221, 329, 332, 334,
1059 309, 335, 227, 335, 302, 257, 315, 273, 334, 329,
1060 334, 0, 329, 238, 319, 335, 310, 329, 335, 317,
1061 286, 329, 329, 335, 249, 262, 292, 335, 335, 295,
1062 335, 297, 334, 329, 329, 287, 288, 334, 263, 335,
1063 335, 334, 332, 309, 269, 335, 334, 334, 300, 315,
1064 273, 345, 277, 278, 306, 334, 285, 351, 310, 299,
1065 312, 332, 285, 286, 335, 288, 291, 290, 288, 292,
1066 290, 335, 295, 332, 297, 331, 288, 334, 290, 319,
1067 305, 335, 280, 306, 309, 308, 309, 335, 308, 329,
1068 308, 331, 315, 345, 319, 335, 308, 335, 350, 351,
1069 352, 0, 335, 335, 327, 273, 329, 327, 331, 329,
1070 335, 331, 335, 331, 299, 335, 410, 335, 286, 331,
1071 288, 290, 290, 335, 292, 335, 335, 295, 308, 297,
1072 382, 335, 288, 288, 290, 290, 325, 389, 306, 308,
1073 308, 309, 334, 368, 327, 370, 331, 315, 400, 299,
1074 335, 331, 308, 308, 332, 335, 331, 335, 410, 327,
1075 335, 329, 331, 331, 331, 331, 335, 335, 335, 335,
1076 395, 327, 424, 329, 265, 331, 331, 429, 403, 335,
1077 335, 331, 331, 335, 262, 335, 335, 265, 266, 267,
1078 415, 416, 0, 271, 321, 273, 332, 422, 276, 335,
1079 329, 279, 280, 281, 288, 283, 334, 285, 286, 335,
1080 288, 335, 290, 291, 292, 293, 294, 295, 334, 297,
1081 298, 299, 334, 295, 302, 302, 303, 304, 306, 307,
1082 308, 309, 310, 335, 290, 335, 264, 315, 284, 285,
1083 286, 319, 320, 268, 334, 323, 290, 328, 326, 327,
1084 332, 329, 308, 331, 332, 333, 329, 335, 334, 334,
1085 295, 339, 340, 341, 342, 343, 344, 345, 346, 347,
1086 348, 349, 350, 262, 295, 331, 265, 266, 267, 335,
1087 295, 0, 271, 306, 273, 314, 308, 276, 335, 268,
1088 279, 280, 281, 335, 283, 334, 285, 286, 335, 288,
1089 257, 290, 291, 292, 293, 294, 295, 299, 297, 298,
1090 299, 335, 0, 302, 262, 335, 280, 306, 307, 308,
1091 309, 310, 262, 285, 285, 5, 315, 1, 1, 58,
1092 319, 320, 300, 264, 323, 221, 221, 326, 327, 419,
1093 329, 341, 331, 332, 333, 416, 335, 412, 400, -1,
1094 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
1095 349, 350, -1, 262, -1, -1, 265, 266, 267, -1,
1096 0, -1, 271, -1, 273, -1, -1, 276, -1, -1,
1097 279, 280, 281, -1, 283, -1, 285, 286, -1, 288,
1098 -1, 290, 291, 292, 293, 294, 295, -1, 297, 298,
1099 299, -1, -1, 302, -1, -1, -1, 306, 307, 308,
1100 309, 310, -1, -1, -1, -1, 315, -1, -1, -1,
1101 319, 320, -1, -1, 323, -1, -1, 326, 327, -1,
1102 329, -1, 331, 332, 333, -1, 335, -1, -1, -1,
1103 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
1104 349, 350, -1, -1, 262, -1, -1, 265, 266, 267,
1105 0, -1, -1, 271, -1, 273, -1, -1, 276, -1,
1106 -1, 279, 280, 281, -1, 283, -1, 285, 286, -1,
1107 288, -1, 290, 291, 292, 293, 294, 295, -1, 297,
1108 298, 299, -1, -1, 302, -1, -1, -1, 306, 307,
1109 308, 309, 310, -1, -1, -1, -1, 315, -1, -1,
1110 -1, 319, 320, -1, -1, 323, -1, -1, 326, 327,
1111 -1, 329, -1, 331, 332, 333, -1, 335, -1, -1,
1112 -1, 339, 340, 341, 342, 343, 344, 345, 346, 347,
1113 348, 349, 350, 262, -1, -1, 265, 266, 267, 0,
1114 -1, -1, 271, -1, 273, -1, -1, 276, -1, -1,
1115 279, 280, 281, -1, 283, -1, 285, 286, -1, 288,
1116 -1, 290, 291, 292, 293, 294, 295, -1, 297, 298,
1117 299, -1, -1, 302, -1, -1, -1, 306, 307, 308,
1118 309, 310, -1, -1, -1, -1, 315, -1, -1, -1,
1119 319, 320, -1, -1, 323, -1, -1, 326, 327, -1,
1120 329, -1, 331, -1, 333, -1, 335, -1, -1, -1,
1121 339, 340, 341, 342, 343, 344, 345, 346, 347, 348,
1122 349, 350, 262, -1, -1, 265, 266, 267, 0, -1,
1123 -1, 271, -1, 273, -1, -1, 276, -1, -1, 279,
1124 280, 281, -1, 283, -1, 285, 286, -1, 288, -1,
1125 290, 291, 292, 293, 294, 295, -1, 297, 298, 299,
1126 -1, -1, 302, -1, -1, -1, 306, 307, 308, 309,
1127 310, -1, -1, -1, -1, 315, -1, -1, -1, 319,
1128 320, -1, -1, 323, -1, -1, 326, 327, -1, 329,
1129 -1, 331, -1, 333, -1, 335, -1, -1, -1, 339,
1130 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
1131 350, -1, 262, -1, -1, 265, 266, 267, 0, -1,
1132 -1, 271, -1, 273, -1, -1, 276, -1, -1, 279,
1133 280, 281, -1, 283, -1, 285, 286, -1, 288, -1,
1134 290, 291, 292, 293, 294, 295, -1, 297, 298, 299,
1135 -1, -1, 302, -1, -1, -1, 306, 307, 308, 309,
1136 310, -1, -1, -1, -1, 315, -1, -1, -1, 319,
1137 320, -1, -1, 323, -1, -1, 326, 327, -1, 329,
1138 -1, 331, -1, 333, -1, 335, -1, -1, -1, 339,
1139 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
1140 350, 262, -1, -1, 265, 266, 267, 0, -1, -1,
1141 271, -1, 273, -1, -1, 276, -1, -1, 279, 280,
1142 281, -1, 283, -1, 285, 286, -1, 288, -1, 290,
1143 291, 292, 293, 294, 295, -1, 297, 298, 299, -1,
1144 -1, 302, -1, -1, -1, 306, 307, 308, 309, 310,
1145 -1, -1, -1, -1, 315, -1, -1, -1, 319, 320,
1146 -1, -1, 323, -1, -1, 326, 327, -1, 329, -1,
1147 331, -1, 333, -1, 335, -1, -1, -1, 339, 340,
1148 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
1149 262, -1, -1, 265, 266, 267, 0, -1, -1, 271,
1150 -1, 273, -1, -1, 276, -1, -1, 279, 280, 281,
1151 -1, 283, -1, 285, 286, -1, 288, -1, 290, 291,
1152 292, 293, 294, 295, 0, 297, 298, 299, -1, -1,
1153 302, -1, -1, -1, 306, 307, 308, 309, 310, -1,
1154 -1, -1, -1, 315, -1, -1, -1, 319, 320, -1,
1155 -1, 323, -1, -1, 326, 327, -1, 329, -1, 331,
1156 -1, 333, -1, 335, -1, -1, -1, 339, 340, 341,
1157 342, 343, 344, 345, 346, 347, 348, 349, 350, -1,
1158 262, 0, -1, 265, 266, 267, -1, -1, -1, 271,
1159 -1, 273, -1, -1, 276, -1, -1, 279, 280, 281,
1160 -1, 283, -1, 285, 286, -1, 288, -1, 290, 291,
1161 292, 293, 294, 295, -1, 297, 298, 299, -1, -1,
1162 302, -1, -1, -1, 306, 307, 308, 309, 310, -1,
1163 -1, -1, -1, 315, -1, -1, -1, 319, 320, -1,
1164 -1, 323, -1, -1, 326, 327, -1, 329, -1, 331,
1165 -1, 333, -1, 335, -1, -1, -1, 339, 340, 341,
1166 -1, -1, -1, 345, 346, 347, 348, 349, 350, 262,
1167 0, -1, 265, 266, 267, -1, -1, -1, 271, -1,
1168 273, -1, -1, 276, -1, -1, 279, 280, 281, -1,
1169 283, -1, 285, 286, -1, 288, -1, 290, 291, 292,
1170 293, 294, 295, -1, 297, 298, 299, -1, -1, 302,
1171 -1, -1, -1, 306, 307, 308, 309, 310, -1, -1,
1172 -1, -1, 315, -1, -1, -1, 319, 320, -1, -1,
1173 323, -1, -1, 326, 327, -1, 329, -1, 331, -1,
1174 333, -1, 335, -1, -1, -1, 339, 340, 341, -1,
1175 -1, -1, 345, 346, 347, 348, 349, 350, 262, 0,
1176 -1, 265, 266, 267, -1, -1, -1, 271, -1, 273,
1177 -1, -1, 276, -1, -1, 279, 280, 281, -1, 283,
1178 -1, 285, 286, -1, 288, -1, 290, 291, 292, 293,
1179 294, 295, -1, 297, 298, 299, -1, -1, 302, -1,
1180 -1, -1, 306, 307, 308, 309, 310, -1, -1, -1,
1181 -1, 315, 288, -1, 290, 319, 320, -1, -1, 323,
1182 -1, -1, 326, 327, -1, 329, -1, 331, -1, 333,
1183 -1, 335, 308, -1, -1, 339, -1, -1, -1, -1,
1184 -1, 345, 346, 262, -1, -1, 265, 266, 267, 0,
1185 -1, 327, 271, -1, 273, 331, -1, 276, -1, 335,
1186 279, 280, 281, -1, 283, -1, 285, 286, -1, 288,
1187 -1, 290, 291, 292, 293, 294, 295, -1, 297, 298,
1188 299, -1, -1, 302, -1, -1, -1, 306, 307, 308,
1189 309, 310, -1, -1, -1, -1, 315, -1, -1, -1,
1190 319, 320, -1, -1, 323, -1, 273, 326, 327, -1,
1191 329, -1, 331, -1, 333, 0, 335, -1, -1, 286,
1192 339, -1, -1, -1, -1, 292, 345, 346, 295, -1,
1193 297, -1, 262, -1, -1, 265, 266, 267, -1, -1,
1194 -1, 271, 309, 273, -1, -1, 276, -1, 315, 279,
1195 280, 281, -1, 283, -1, 285, 286, -1, 288, -1,
1196 290, 291, 292, 293, 294, 295, -1, 297, 298, 299,
1197 -1, -1, 302, -1, -1, -1, 306, 307, 308, 309,
1198 310, -1, -1, -1, -1, 315, 0, -1, -1, 319,
1199 320, -1, -1, 323, -1, -1, 326, 327, -1, 329,
1200 -1, 331, -1, 333, -1, 335, -1, -1, -1, 339,
1201 -1, -1, -1, -1, -1, 345, 346, -1, -1, -1,
1202 -1, 262, -1, -1, 265, 266, 267, -1, -1, -1,
1203 271, -1, 273, -1, -1, 276, -1, -1, 279, 280,
1204 281, -1, 283, -1, 285, 286, -1, 288, -1, 290,
1205 291, 292, 293, 294, 295, -1, 297, 298, 299, -1,
1206 -1, 302, 0, -1, -1, 306, 307, 308, 309, 310,
1207 -1, -1, -1, -1, 315, -1, -1, -1, 319, 320,
1208 -1, -1, 323, -1, -1, 326, 327, -1, 329, -1,
1209 331, -1, 333, -1, 335, -1, -1, -1, 339, -1,
1210 -1, -1, -1, -1, 345, 346, 257, 258, 259, 260,
1211 -1, -1, 263, -1, -1, -1, -1, -1, 269, 270,
1212 -1, -1, -1, 274, 275, -1, -1, 278, -1, -1,
1213 -1, 282, 332, 284, -1, -1, 287, 0, 289, -1,
1214 340, 341, 342, 343, 344, 296, -1, -1, -1, 300,
1215 301, 302, 303, -1, 305, -1, -1, -1, -1, -1,
1216 -1, -1, 313, -1, -1, 316, 317, 318, -1, -1,
1217 -1, 322, -1, -1, -1, -1, -1, 262, -1, -1,
1218 265, 266, 267, 334, -1, -1, 271, 338, 273, 340,
1219 341, 276, -1, -1, 279, 280, 281, -1, 283, -1,
1220 285, 286, -1, 288, -1, 290, 291, 292, 293, 294,
1221 295, -1, 297, 298, 299, 0, -1, 302, -1, -1,
1222 -1, 306, 307, 308, 309, 310, -1, -1, -1, -1,
1223 315, -1, -1, -1, 319, 320, -1, -1, 323, -1,
1224 -1, 326, 327, -1, 329, -1, 331, -1, 262, -1,
1225 335, 265, 266, 267, 339, -1, -1, 271, -1, 273,
1226 -1, -1, 276, -1, -1, 279, 280, 281, -1, 283,
1227 -1, 285, 286, -1, 288, -1, 290, 291, 292, 293,
1228 294, 295, -1, 297, 298, 299, 0, -1, 302, -1,
1229 -1, -1, 306, 307, 308, 309, 310, -1, -1, -1,
1230 -1, 315, -1, -1, -1, 319, 320, -1, -1, 323,
1231 -1, -1, 326, 327, -1, 329, -1, 331, -1, -1,
1232 -1, 335, -1, -1, 262, 339, -1, 265, 266, 267,
1233 -1, -1, -1, 271, -1, 273, -1, -1, 276, -1,
1234 -1, 279, 280, 281, -1, 283, -1, 285, 286, -1,
1235 288, -1, 290, 291, 292, 293, 294, 295, -1, 297,
1236 298, 299, 0, -1, 302, -1, -1, -1, 306, 307,
1237 308, 309, 310, -1, -1, -1, -1, 315, -1, -1,
1238 -1, 319, 320, -1, -1, 323, -1, -1, 326, 327,
1239 -1, 329, -1, 331, -1, -1, -1, 335, -1, 262,
1240 -1, 339, 265, 266, 267, -1, -1, -1, 271, -1,
1241 273, -1, -1, 276, -1, -1, 279, 280, 281, -1,
1242 283, -1, 285, 286, -1, 288, -1, 290, 291, 292,
1243 293, 294, 295, 0, 297, 298, 299, -1, -1, 302,
1244 -1, -1, -1, 306, 307, 308, 309, 310, -1, -1,
1245 -1, -1, 315, -1, -1, -1, 319, 320, -1, -1,
1246 323, -1, -1, 326, 327, -1, 329, -1, 331, -1,
1247 -1, -1, 335, -1, -1, -1, 339, 262, -1, -1,
1248 265, 266, 267, -1, -1, -1, 271, -1, 273, -1,
1249 -1, 276, -1, -1, 279, 280, 281, -1, 283, -1,
1250 285, 286, -1, 288, 0, 290, 291, 292, -1, 294,
1251 295, -1, 297, 298, 299, -1, -1, 302, -1, -1,
1252 -1, 306, 307, 308, 309, 310, -1, -1, -1, -1,
1253 315, -1, -1, -1, 319, 320, -1, -1, 323, -1,
1254 -1, 326, 327, -1, 329, -1, 331, -1, 262, -1,
1255 335, 265, 266, 267, 339, -1, -1, 271, -1, 273,
1256 -1, -1, 276, -1, -1, 279, 280, 281, -1, 283,
1257 -1, 285, 286, -1, 288, 0, 290, 291, 292, -1,
1258 294, 295, -1, 297, 298, 299, -1, -1, 302, -1,
1259 -1, -1, 306, 307, 308, 309, 310, -1, -1, -1,
1260 -1, 315, -1, -1, -1, 319, 320, -1, -1, 323,
1261 -1, -1, 326, 327, -1, 329, -1, 331, -1, -1,
1262 -1, 335, -1, -1, 262, 339, -1, 265, 266, 267,
1263 -1, -1, -1, 271, -1, 273, -1, -1, 276, -1,
1264 -1, 279, 280, 281, -1, 283, 0, 285, 286, -1,
1265 288, -1, 290, 291, 292, -1, 294, 295, -1, 297,
1266 298, 299, -1, -1, 302, -1, -1, -1, 306, 307,
1267 308, 309, 310, -1, -1, -1, -1, 315, -1, -1,
1268 -1, 319, 320, -1, -1, -1, -1, -1, 326, 327,
1269 -1, 329, -1, 331, -1, 262, -1, 335, 265, 266,
1270 267, 339, -1, -1, 271, -1, 273, -1, -1, 276,
1271 -1, -1, 279, 280, -1, -1, 283, 0, 285, 286,
1272 -1, 288, -1, 290, 291, 292, -1, 294, 295, -1,
1273 297, 298, 299, -1, -1, 302, -1, -1, -1, 306,
1274 307, 308, 309, 310, -1, -1, -1, -1, 315, -1,
1275 -1, -1, 319, 320, -1, -1, -1, -1, -1, 326,
1276 327, -1, 329, -1, 331, -1, 262, -1, 335, 265,
1277 266, 267, 339, -1, -1, 271, -1, 273, -1, -1,
1278 276, -1, -1, 279, 280, -1, -1, 283, 0, 285,
1279 286, -1, 288, -1, 290, 291, 292, -1, 294, 295,
1280 -1, 297, 298, 299, -1, -1, 302, -1, -1, -1,
1281 306, 307, 308, 309, -1, -1, -1, -1, -1, 315,
1282 -1, -1, -1, 319, 320, -1, -1, -1, -1, -1,
1283 326, 327, -1, 329, -1, 331, -1, 262, -1, 335,
1284 265, 266, 267, 339, -1, -1, 271, -1, 273, -1,
1285 -1, 276, -1, -1, 279, 280, -1, -1, 283, 0,
1286 285, 286, -1, 288, -1, 290, 291, 292, -1, 294,
1287 295, -1, 297, 298, 299, -1, -1, 302, -1, -1,
1288 -1, 306, 307, 308, 309, -1, -1, -1, -1, -1,
1289 315, -1, -1, -1, 319, 320, -1, -1, -1, -1,
1290 -1, 326, 327, -1, 329, -1, 331, -1, 262, -1,
1291 335, 265, 266, 267, 339, -1, -1, 271, -1, 273,
1292 -1, -1, 276, -1, -1, 279, 280, -1, -1, 283,
1293 0, 285, 286, -1, 288, -1, 290, -1, 292, -1,
1294 294, 295, -1, 297, -1, 299, -1, -1, 302, -1,
1295 -1, -1, 306, 307, 308, 309, -1, -1, -1, -1,
1296 -1, 315, -1, -1, -1, 319, 320, -1, -1, -1,
1297 -1, -1, 326, 327, -1, 329, -1, 331, -1, 262,
1298 -1, 335, 265, 266, 267, 339, -1, -1, 271, -1,
1299 273, -1, -1, 276, -1, -1, 279, 280, -1, -1,
1300 -1, 0, 285, 286, -1, 288, -1, 290, 291, 292,
1301 -1, 294, 295, -1, 297, -1, 299, -1, -1, 302,
1302 -1, -1, -1, 306, 307, 308, 309, -1, -1, -1,
1303 -1, -1, 315, -1, -1, -1, 319, 320, -1, -1,
1304 -1, -1, -1, 326, 327, -1, 329, -1, 331, -1,
1305 262, -1, 335, 265, 266, 267, 339, -1, -1, 271,
1306 -1, 273, -1, -1, 276, -1, -1, 279, 280, -1,
1307 -1, 283, 0, 285, 286, -1, 288, -1, 290, -1,
1308 292, -1, 294, 295, -1, 297, -1, 299, -1, -1,
1309 302, -1, -1, -1, 306, 307, 308, 309, -1, -1,
1310 -1, -1, -1, 315, -1, -1, -1, 319, 320, -1,
1311 -1, -1, -1, -1, 326, 327, -1, 329, -1, 331,
1312 -1, 262, -1, 335, 265, 266, 267, 339, -1, -1,
1313 271, -1, 273, -1, -1, 276, -1, -1, 279, 280,
1314 -1, -1, -1, 0, 285, 286, -1, 288, -1, 290,
1315 291, 292, -1, 294, 295, -1, 297, -1, 299, -1,
1316 -1, 302, -1, -1, -1, 306, 307, 308, 309, -1,
1317 -1, -1, -1, -1, 315, -1, -1, -1, 319, 320,
1318 -1, -1, -1, -1, -1, 326, 327, -1, 329, -1,
1319 331, -1, 262, -1, 335, 265, 266, -1, 339, -1,
1320 0, 271, -1, 273, -1, -1, 276, -1, -1, 279,
1321 280, -1, -1, 283, -1, 285, 286, -1, 288, -1,
1322 290, -1, 292, -1, -1, 295, -1, 297, -1, 299,
1323 -1, -1, -1, -1, -1, -1, 306, 307, 308, 309,
1324 -1, -1, -1, -1, -1, 315, -1, -1, 0, 319,
1325 320, -1, -1, -1, -1, -1, 326, 327, -1, 329,
1326 -1, 331, -1, 262, -1, 335, 265, 266, -1, 339,
1327 -1, -1, 271, -1, 273, -1, -1, 276, -1, -1,
1328 279, 280, -1, -1, 283, -1, 285, 286, -1, 288,
1329 -1, 290, -1, 292, -1, -1, 295, -1, 297, -1,
1330 299, -1, -1, -1, -1, -1, -1, 306, 307, 308,
1331 309, -1, -1, -1, -1, -1, 315, -1, -1, -1,
1332 319, 320, -1, -1, -1, -1, -1, 326, 327, -1,
1333 329, -1, 331, -1, 262, -1, 335, 265, 266, -1,
1334 339, -1, -1, 271, -1, 273, -1, -1, 276, -1,
1335 -1, 279, 280, -1, -1, 283, -1, 285, 286, -1,
1336 288, -1, 290, -1, 292, -1, -1, 295, -1, 297,
1337 -1, 299, -1, -1, -1, -1, -1, -1, 306, 307,
1338 308, 309, -1, -1, -1, -1, -1, 315, -1, -1,
1339 -1, 319, 320, -1, -1, -1, -1, -1, 326, 327,
1340 -1, 329, -1, 331, -1, 262, -1, 335, 265, 266,
1341 -1, 339, -1, -1, 271, -1, 273, -1, -1, 276,
1342 -1, -1, 279, 280, -1, -1, 283, -1, 285, 286,
1343 -1, 288, -1, 290, -1, 292, -1, -1, 295, -1,
1344 297, -1, 299, -1, -1, -1, -1, -1, -1, 306,
1345 307, 308, 309, -1, -1, -1, -1, -1, 315, -1,
1346 -1, -1, 319, 320, -1, 265, 266, -1, -1, 326,
1347 327, 271, 329, 273, 331, -1, 276, -1, 335, 279,
1348 280, -1, 339, 283, -1, 285, 286, -1, 288, -1,
1349 290, -1, 292, -1, -1, 295, -1, 297, -1, 299,
1350 -1, -1, -1, -1, -1, -1, 306, 307, 308, 309,
1351 -1, -1, -1, -1, -1, 315, -1, -1, -1, 319,
1352 320, 273, -1, -1, -1, -1, 326, 327, -1, 329,
1353 -1, 331, -1, -1, 286, 335, 288, -1, 290, 339,
1354 292, -1, -1, 295, -1, 297, 281, -1, -1, -1,
1355 -1, -1, -1, -1, -1, 262, 308, 309, 293, 266,
1356 267, -1, -1, 315, 271, -1, -1, -1, -1, 276,
1357 -1, -1, -1, -1, 281, 327, -1, 329, -1, 331,
1358 -1, -1, -1, 335, 291, -1, 293, 294, 323, -1,
1359 -1, 298, -1, -1, -1, 302, -1, 332, 333, -1,
1360 307, -1, -1, 310, -1, 340, 341, 342, 343, 344,
1361 345, 346, 347, 348, 349, 350, 323, -1, 281, -1,
1362 283, -1, -1, -1, -1, 332, 333, 262, -1, -1,
1363 293, -1, 267, 340, 341, 342, 343, 344, 345, 346,
1364 347, 348, 349, 350, -1, -1, 281, 310, -1, -1,
1365 -1, -1, -1, -1, -1, -1, 291, -1, 293, 294,
1366 323, -1, -1, 298, -1, -1, -1, 302, -1, 332,
1367 333, -1, 307, -1, -1, 310, -1, 340, 341, 342,
1368 343, 344, 345, 346, 347, 348, 349, 350, 323, -1,
1369 -1, -1, -1, -1, 329, -1, -1, 332, 333, 262,
1370 335, -1, -1, -1, 267, 340, 341, 342, 343, 344,
1371 345, 346, 347, 348, 349, 350, -1, -1, 281, -1,
1372 -1, -1, -1, -1, -1, -1, -1, -1, 291, -1,
1373 293, 294, -1, -1, -1, 298, -1, -1, -1, 302,
1374 -1, -1, -1, -1, 307, -1, -1, 310, -1, -1,
1375 -1, -1, -1, -1, -1, -1, -1, 320, -1, -1,
1376 323, -1, -1, -1, -1, -1, -1, -1, -1, 332,
1377 333, 262, -1, -1, 265, -1, 267, 340, 341, 342,
1378 343, 344, 345, 346, 347, 348, 349, 350, -1, -1,
1379 281, -1, -1, -1, -1, -1, -1, -1, -1, 262,
1380 291, -1, 293, 294, 267, -1, -1, 298, -1, -1,
1381 -1, 302, -1, -1, -1, -1, 307, -1, 281, 310,
1382 -1, -1, -1, -1, -1, -1, -1, -1, 291, -1,
1383 293, 294, 323, -1, -1, 298, -1, -1, -1, 302,
1384 -1, 332, 333, -1, 307, -1, -1, 310, -1, 340,
1385 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
1386 323, -1, -1, -1, -1, -1, 329, -1, -1, 332,
1387 333, 262, -1, -1, -1, -1, 267, 340, 341, 342,
1388 343, 344, 345, 346, 347, 348, 349, 350, -1, -1,
1389 281, -1, -1, -1, -1, -1, -1, -1, -1, 262,
1390 291, -1, 293, 294, 267, -1, -1, 298, -1, -1,
1391 -1, 302, -1, -1, -1, -1, 307, -1, 281, 310,
1392 -1, -1, -1, -1, -1, -1, -1, -1, 291, -1,
1393 293, 294, 323, -1, -1, 298, -1, -1, 329, 302,
1394 -1, 332, 333, -1, 307, -1, -1, 310, -1, 340,
1395 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
1396 323, -1, -1, -1, -1, -1, 329, -1, -1, 332,
1397 333, 262, -1, 293, 265, -1, 267, 340, 341, 342,
1398 343, 344, 345, 346, 347, 348, 349, 350, -1, -1,
1399 281, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1400 291, -1, 293, 294, -1, -1, -1, 298, -1, -1,
1401 -1, 302, 332, 333, -1, -1, 307, -1, -1, 310,
1402 340, 341, 342, 343, 344, 345, 346, 347, 348, 349,
1403 350, -1, 323, -1, -1, -1, -1, -1, -1, -1,
1404 -1, 332, 333, 262, -1, -1, 265, -1, 267, 340,
1405 341, 342, 343, 344, 345, 346, 347, 348, 349, 350,
1406 -1, -1, 281, -1, -1, -1, -1, -1, -1, -1,
1407 -1, -1, 291, -1, 293, 294, -1, -1, -1, 298,
1408 -1, -1, -1, 302, 332, 333, -1, -1, 307, -1,
1409 -1, 310, 340, 341, 342, 343, 344, 345, 346, 347,
1410 348, 349, 350, -1, 323, -1, -1, -1, -1, -1,
1411 -1, -1, -1, 332, 333, 262, -1, -1, -1, -1,
1412 267, 340, 341, 342, 343, 344, 345, 346, 347, 348,
1413 349, 350, -1, -1, 281, -1, -1, -1, -1, -1,
1414 -1, -1, -1, 262, 291, -1, 293, 294, 267, -1,
1415 -1, 298, -1, -1, -1, 302, -1, -1, -1, -1,
1416 307, -1, 281, 310, -1, -1, -1, -1, -1, -1,
1417 -1, -1, 291, 320, 293, 294, 323, -1, -1, 298,
1418 -1, -1, -1, 302, -1, 332, 333, -1, 307, -1,
1419 -1, 310, -1, 340, 341, 342, 343, 344, 345, 346,
1420 347, 348, 349, 350, 323, -1, -1, -1, -1, -1,
1421 329, -1, -1, 332, 333, 262, -1, -1, -1, -1,
1422 267, 340, 341, 342, 343, 344, 345, 346, 347, 348,
1423 349, 350, -1, -1, 281, -1, -1, -1, -1, -1,
1424 -1, -1, -1, 262, 291, -1, 293, 294, 267, -1,
1425 -1, 298, -1, -1, -1, 302, -1, -1, -1, -1,
1426 307, -1, 281, 310, -1, -1, -1, -1, -1, -1,
1427 -1, -1, 291, -1, 293, 294, 323, -1, -1, 298,
1428 -1, -1, -1, 302, -1, 332, 333, -1, 307, -1,
1429 -1, 310, -1, 340, 341, 342, 343, 344, 345, 346,
1430 347, 348, 349, 350, 323, -1, -1, -1, -1, -1,
1431 -1, -1, -1, 332, 333, 262, -1, -1, -1, -1,
1432 267, 340, 341, 342, 343, 344, 345, 346, 347, 348,
1433 349, 350, -1, -1, 281, -1, -1, -1, -1, -1,
1434 -1, -1, -1, 262, 291, -1, 293, 294, 267, -1,
1435 -1, 298, -1, -1, -1, 302, -1, -1, -1, -1,
1436 307, -1, 281, 310, -1, -1, -1, -1, -1, -1,
1437 -1, -1, 291, -1, 293, 294, 323, -1, -1, 298,
1438 -1, -1, -1, 302, -1, 332, 333, -1, 307, -1,
1439 -1, 310, -1, 340, 341, 342, 343, 344, 345, 346,
1440 347, 348, 349, 350, 323, -1, 281, -1, 283, -1,
1441 -1, -1, -1, 332, 333, 262, -1, -1, 293, -1,
1442 267, 340, 341, 342, 343, 344, 345, 346, 347, 348,
1443 349, 350, -1, -1, 281, 310, -1, -1, -1, -1,
1444 -1, -1, -1, -1, 291, -1, 293, 294, 323, -1,
1445 -1, 298, -1, -1, -1, 302, -1, 332, 333, -1,
1446 -1, -1, -1, 310, -1, 340, 341, 342, 343, 344,
1447 345, 346, 347, 348, 349, 350, 323, -1, -1, -1,
1448 -1, -1, -1, -1, -1, 332, 333, -1, -1, -1,
1449 -1, -1, -1, 340, 341, 342, 343, 344, 345, 346,
1450 347, 348, 349, 350, 257, 258, 259, 260, 261, -1,
1451 263, -1, -1, -1, -1, -1, 269, 270, -1, -1,
1452 -1, 274, 275, -1, 277, 278, -1, -1, -1, 282,
1453 -1, 284, -1, -1, -1, -1, 289, -1, -1, -1,
1454 -1, -1, -1, 296, -1, -1, -1, 300, 301, 302,
1455 303, -1, 305, -1, -1, -1, -1, -1, -1, -1,
1456 313, -1, -1, 316, -1, 318, -1, -1, 321, 322,
1457 -1, -1, 325, -1, -1, -1, -1, 257, 258, 259,
1458 260, 334, -1, 263, -1, 338, -1, 340, 341, 269,
1459 270, -1, -1, -1, 274, 275, -1, -1, 278, -1,
1460 -1, -1, 282, -1, 284, -1, -1, 287, -1, 289,
1461 -1, -1, -1, -1, -1, -1, 296, -1, -1, -1,
1462 300, 301, 302, 303, -1, 305, -1, -1, -1, -1,
1463 -1, -1, -1, 313, -1, -1, 316, 317, 318, -1,
1464 -1, -1, 322, -1, -1, -1, -1, -1, -1, -1,
1465 257, 258, 259, 260, 334, -1, 263, -1, 338, -1,
1466 340, 341, 269, 270, -1, -1, -1, 274, 275, -1,
1467 -1, 278, -1, -1, -1, 282, -1, 284, -1, -1,
1468 -1, -1, 289, -1, -1, -1, -1, -1, -1, 296,
1469 -1, -1, -1, 300, 301, 302, 303, -1, 305, -1,
1470 -1, -1, -1, -1, -1, -1, 313, -1, 332, 316,
1471 317, 318, -1, -1, -1, 322, 340, 341, 342, 343,
1472 344, -1, -1, 347, 348, 349, 350, 334, -1, -1,
1473 -1, 338, -1, 340, 341, 257, 258, 259, 260, 261,
1474 -1, 263, -1, -1, -1, -1, -1, 269, 270, -1,
1475 -1, -1, 274, 275, -1, -1, 278, -1, -1, -1,
1476 282, -1, 284, -1, -1, -1, -1, 289, -1, -1,
1477 -1, -1, -1, -1, 296, -1, -1, -1, 300, 301,
1478 302, 303, -1, 305, -1, -1, -1, -1, -1, -1,
1479 -1, 313, -1, -1, 316, -1, 318, -1, -1, -1,
1480 322, -1, -1, -1, -1, -1, -1, -1, 257, 258,
1481 259, 260, 334, -1, 263, -1, 338, -1, 340, 341,
1482 269, 270, -1, -1, -1, 274, 275, -1, -1, 278,
1483 -1, -1, -1, 282, -1, 284, -1, -1, -1, -1,
1484 289, -1, -1, -1, -1, -1, -1, 296, -1, -1,
1485 -1, 300, 301, 302, 303, -1, 305, -1, -1, -1,
1486 -1, -1, -1, -1, 313, -1, -1, 316, 317, 318,
1487 -1, -1, -1, 322, -1, -1, -1, -1, -1, -1,
1488 -1, 257, 258, 259, 260, 334, -1, 263, -1, 338,
1489 -1, 340, 341, 269, 270, -1, -1, -1, 274, 275,
1490 -1, -1, 278, -1, -1, -1, 282, -1, 284, -1,
1491 -1, -1, -1, 289, -1, -1, -1, -1, -1, -1,
1492 296, -1, -1, -1, 300, 301, 302, 303, -1, 305,
1493 -1, -1, -1, -1, -1, -1, -1, 313, -1, -1,
1494 316, -1, 318, -1, -1, -1, 322, -1, -1, -1,
1495 -1, -1, -1, -1, 257, 258, 259, 260, 334, 335,
1496 263, -1, 338, -1, 340, 341, 269, 270, -1, -1,
1497 -1, 274, 275, -1, -1, 278, -1, -1, -1, 282,
1498 -1, 284, -1, -1, -1, -1, 289, -1, -1, -1,
1499 -1, -1, -1, 296, -1, -1, -1, 300, 301, 302,
1500 303, -1, 305, -1, -1, -1, -1, -1, -1, -1,
1501 313, -1, -1, 316, -1, 318, -1, -1, -1, 322,
1502 -1, -1, -1, -1, -1, -1, -1, 257, 258, 259,
1503 260, 334, 335, 263, -1, 338, -1, 340, 341, 269,
1504 270, -1, -1, -1, 274, 275, -1, -1, 278, -1,
1505 -1, -1, 282, -1, 284, -1, -1, -1, -1, 289,
1506 -1, -1, -1, -1, -1, -1, 296, -1, -1, -1,
1507 300, 301, 302, 303, -1, 305, -1, -1, -1, -1,
1508 -1, -1, -1, 313, -1, -1, 316, 317, 318, -1,
1509 -1, -1, 322, -1, -1, -1, -1, -1, -1, -1,
1510 257, 258, 259, 260, 334, -1, 263, -1, 338, -1,
1511 340, 341, 269, 270, -1, -1, -1, 274, 275, -1,
1512 -1, 278, -1, -1, -1, 282, -1, 284, -1, -1,
1513 -1, -1, 289, -1, -1, -1, -1, -1, -1, 296,
1514 -1, -1, -1, 300, 301, 302, 303, -1, 305, -1,
1515 -1, -1, -1, -1, -1, -1, 313, -1, -1, 316,
1516 317, 318, -1, -1, -1, 322, -1, -1, -1, -1,
1517 -1, -1, -1, 257, 258, 259, 260, 334, -1, 263,
1518 -1, 338, -1, 340, 341, 269, 270, -1, -1, -1,
1519 274, 275, -1, -1, 278, -1, -1, -1, 282, -1,
1520 284, -1, -1, -1, -1, 289, -1, -1, -1, -1,
1521 -1, -1, 296, -1, -1, -1, 300, 301, 302, 303,
1522 -1, 305, -1, -1, -1, -1, -1, -1, -1, 313,
1523 -1, -1, 316, 317, 318, -1, -1, -1, 322, -1,
1524 -1, -1, -1, -1, -1, -1, 257, 258, 259, 260,
1525 334, -1, 263, -1, 338, -1, 340, 341, 269, 270,
1526 -1, -1, -1, 274, 275, -1, -1, 278, -1, -1,
1527 -1, 282, -1, 284, -1, -1, -1, -1, 289, -1,
1528 -1, -1, -1, -1, -1, 296, -1, -1, -1, 300,
1529 301, 302, 303, -1, 305, -1, -1, -1, -1, -1,
1530 -1, -1, 313, -1, -1, 316, -1, 318, -1, -1,
1531 321, 322, -1, -1, -1, -1, -1, -1, -1, 257,
1532 258, 259, 260, 334, -1, 263, -1, 338, -1, 340,
1533 341, 269, 270, -1, -1, -1, 274, 275, -1, -1,
1534 278, -1, -1, -1, 282, -1, 284, -1, -1, -1,
1535 -1, 289, -1, -1, -1, -1, -1, -1, 296, -1,
1536 -1, -1, 300, 301, 302, 303, -1, 305, -1, -1,
1537 -1, -1, -1, -1, -1, 313, -1, -1, 316, -1,
1538 318, -1, -1, -1, 322, -1, -1, -1, -1, -1,
1539 -1, -1, 257, 258, 259, 260, 334, -1, 263, -1,
1540 338, -1, 340, 341, 269, 270, -1, -1, -1, 274,
1541 275, -1, -1, 278, -1, -1, -1, 282, -1, 284,
1542 -1, -1, -1, -1, 289, -1, -1, -1, -1, -1,
1543 -1, 296, -1, -1, -1, 300, 301, 302, 303, -1,
1544 305, -1, -1, -1, -1, -1, -1, -1, 313, -1,
1545 -1, 316, -1, 318, -1, -1, -1, 322, -1, -1,
1546 -1, -1, -1, -1, -1, 257, 258, 259, 260, 334,
1547 -1, 263, -1, 338, -1, 340, 341, 269, 270, -1,
1548 -1, -1, 274, 275, -1, -1, 278, -1, -1, -1,
1549 282, -1, 284, -1, -1, -1, -1, 289, -1, -1,
1550 -1, -1, -1, -1, 296, -1, -1, -1, 300, 301,
1551 302, 303, -1, 305, -1, -1, -1, -1, -1, -1,
1552 -1, 313, -1, -1, 316, -1, 318, -1, -1, -1,
1553 322, -1, -1, -1, -1, -1, -1, -1, 257, 258,
1554 259, 260, 334, -1, 263, -1, 338, -1, 340, 341,
1555 269, 270, -1, -1, -1, 274, 275, -1, -1, 278,
1556 -1, 267, -1, 282, -1, 284, -1, -1, -1, -1,
1557 289, -1, -1, -1, -1, 281, -1, 296, -1, -1,
1558 -1, 300, 301, 302, 303, 291, 305, 293, 294, -1,
1559 -1, -1, 298, -1, 313, -1, 302, 316, -1, 318,
1560 -1, 307, -1, 322, 310, -1, -1, -1, -1, -1,
1561 -1, -1, -1, -1, -1, 334, -1, 323, -1, 338,
1562 -1, 340, 341, -1, -1, -1, 332, 333, -1, -1,
1563 -1, 267, -1, -1, 340, 341, 342, 343, 344, 345,
1564 346, 347, 348, 349, 350, 281, -1, -1, -1, -1,
1565 -1, -1, -1, -1, -1, 291, -1, 293, 294, -1,
1566 -1, -1, 298, -1, -1, -1, 302, -1, -1, -1,
1567 -1, -1, -1, 281, 310, -1, -1, -1, -1, -1,
1568 -1, -1, -1, -1, -1, 293, -1, 323, -1, -1,
1569 298, -1, -1, -1, -1, -1, 332, 333, -1, -1,
1570 -1, -1, 310, -1, 340, 341, 342, 343, 344, 345,
1571 346, 347, 348, 349, 350, 323, 281, -1, -1, -1,
1572 -1, -1, -1, -1, 332, 333, -1, -1, 293, -1,
1573 -1, -1, 340, 341, 342, 343, 344, 345, 346, 347,
1574 348, 349, 350, -1, -1, 310, -1, -1, -1, -1,
1575 -1, -1, -1, -1, -1, -1, 293, -1, 323, -1,
1576 -1, -1, -1, -1, -1, -1, -1, 332, 333, -1,
1577 -1, -1, -1, -1, -1, 340, 341, 342, 343, 344,
1578 345, 346, 347, 348, 349, 350, 323, -1, -1, -1,
1579 -1, -1, -1, -1, -1, 332, 333, -1, -1, -1,
1580 -1, -1, -1, 340, 341, 342, 343, 344, 345, 346,
1581 347, 348, 349, 350,
1582 };
1583 static short YYFINAL=2;
1584 static short YYMAXTOKEN=352;
1585 static String [] yyname = {
1586 "end-of-file",null,null,null,null,null,null,null,null,null,null,null,null,null,
1587 null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
1588 null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
1589 null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
1590 null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
1591 null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
1592 null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
1593 null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
1594 null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
1595 null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
1596 null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
1597 null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
1598 null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
1599 null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
1600 null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
1601 null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,
1602 null,null,null,"IDENTIFIER","ESCAPED_IDENTIFIER","PARAMETER","LITERAL","ALL",
1603 "AND","ANYELEMENT","APPLY","AS","ASC","BETWEEN","BY","CASE","CAST","COLLATE",
1604 "COLLECTION","CROSS","CREATEREF","DEREF","DESC","DISTINCT","ELEMENT","ELSE",
1605 "END","EXCEPT","EXISTS","ESCAPE","FLATTEN","FROM","FULL","FUNCTION","GROUP",
1606 "GROUPPARTITION","HAVING","IN","INNER","INTERSECT","IS","JOIN","KEY","LEFT",
1607 "LIKE","LIMIT","MULTISET","NAVIGATE","NOT","NULL","OF","OFTYPE","ON","OR",
1608 "ORDER","OUTER","OVERLAPS","ONLY","QMARK","REF","RELATIONSHIP","RIGHT","ROW",
1609 "SELECT","SET","SKIP","THEN","TOP","TREAT","UNION","USING","VALUE","WHEN",
1610 "WHERE","WITH","COMMA","COLON","SCOLON","DOT","EQUAL","L_PAREN","R_PAREN",
1611 "L_BRACE","R_BRACE","L_CURLY","R_CURLY","PLUS","MINUS","STAR","FSLASH",
1612 "PERCENT","OP_EQ","OP_NEQ","OP_LT","OP_LE","OP_GT","OP_GE","UNARYPLUS",
1613 "UNARYMINUS",
1614 };
1615 static String [] yyrule = {
1616 "$accept : commandStart",
1617 "commandStart :",
1618 "commandStart : command",
1619 "command : optNamespaceImportList queryStatement",
1620 "optNamespaceImportList :",
1621 "optNamespaceImportList : namespaceImportList",
1622 "namespaceImportList : namespaceImport",
1623 "namespaceImportList : namespaceImportList namespaceImport",
1624 "namespaceImport : USING identifier SCOLON",
1625 "namespaceImport : USING dotExpr SCOLON",
1626 "namespaceImport : USING assignExpr SCOLON",
1627 "queryStatement : optQueryDefList generalExpr optSemiColon",
1628 "optQueryDefList :",
1629 "optQueryDefList : functionDefList",
1630 "functionDefList : functionDef",
1631 "functionDefList : functionDefList functionDef",
1632 "functionDef : FUNCTION identifier functionParamsDef AS L_PAREN generalExpr R_PAREN",
1633 "functionParamsDef : L_PAREN R_PAREN",
1634 "functionParamsDef : L_PAREN functionParamDefList R_PAREN",
1635 "functionParamDefList : functionParamDef",
1636 "functionParamDefList : functionParamDefList COMMA functionParamDef",
1637 "functionParamDef : identifier typeDef",
1638 "generalExpr : queryExpr",
1639 "generalExpr : Expr",
1640 "optSemiColon :",
1641 "optSemiColon : SCOLON",
1642 "queryExpr : selectClause fromClause optWhereClause optGroupByClause optHavingClause optOrderByClause",
1643 "$$1 :",
1644 "selectClause : SELECT $$1 optAllOrDistinct optTopClause aliasExprList",
1645 "$$2 :",
1646 "selectClause : SELECT $$2 VALUE optAllOrDistinct optTopClause aliasExprList",
1647 "optAllOrDistinct :",
1648 "optAllOrDistinct : ALL",
1649 "optAllOrDistinct : DISTINCT",
1650 "optTopClause :",
1651 "optTopClause : TOP L_PAREN generalExpr R_PAREN",
1652 "fromClause : FROM fromClauseList",
1653 "fromClauseList : fromClauseItem",
1654 "fromClauseList : fromClauseList COMMA fromClauseItem",
1655 "fromClauseItem : aliasExpr",
1656 "fromClauseItem : L_PAREN joinClauseItem R_PAREN",
1657 "fromClauseItem : joinClauseItem",
1658 "fromClauseItem : L_PAREN applyClauseItem R_PAREN",
1659 "fromClauseItem : applyClauseItem",
1660 "joinClauseItem : fromClauseItem joinType fromClauseItem",
1661 "joinClauseItem : fromClauseItem joinType fromClauseItem ON Expr",
1662 "applyClauseItem : fromClauseItem applyType fromClauseItem",
1663 "joinType : CROSS JOIN",
1664 "joinType : LEFT OUTER JOIN",
1665 "joinType : LEFT JOIN",
1666 "joinType : RIGHT OUTER JOIN",
1667 "joinType : RIGHT JOIN",
1668 "joinType : JOIN",
1669 "joinType : INNER JOIN",
1670 "joinType : FULL JOIN",
1671 "joinType : FULL OUTER JOIN",
1672 "joinType : FULL OUTER",
1673 "applyType : CROSS APPLY",
1674 "applyType : OUTER APPLY",
1675 "optWhereClause :",
1676 "optWhereClause : whereClause",
1677 "whereClause : WHERE Expr",
1678 "optGroupByClause :",
1679 "optGroupByClause : groupByClause",
1680 "groupByClause : GROUP BY aliasExprList",
1681 "optHavingClause :",
1682 "optHavingClause : havingClause",
1683 "$$3 :",
1684 "havingClause : HAVING $$3 Expr",
1685 "optOrderByClause :",
1686 "optOrderByClause : orderByClause",
1687 "$$4 :",
1688 "orderByClause : ORDER BY $$4 orderByItemList optSkipSubClause optLimitSubClause",
1689 "optSkipSubClause :",
1690 "optSkipSubClause : SKIP Expr",
1691 "optLimitSubClause :",
1692 "optLimitSubClause : LIMIT Expr",
1693 "orderByItemList : orderByClauseItem",
1694 "orderByItemList : orderByItemList COMMA orderByClauseItem",
1695 "orderByClauseItem : Expr optAscDesc",
1696 "orderByClauseItem : Expr COLLATE simpleIdentifier optAscDesc",
1697 "optAscDesc :",
1698 "optAscDesc : ASC",
1699 "optAscDesc : DESC",
1700 "exprList : Expr",
1701 "exprList : exprList COMMA Expr",
1702 "Expr : parenExpr",
1703 "Expr : PARAMETER",
1704 "Expr : identifier",
1705 "Expr : builtInExpr",
1706 "Expr : dotExpr",
1707 "Expr : refExpr",
1708 "Expr : createRefExpr",
1709 "Expr : keyExpr",
1710 "Expr : groupPartitionExpr",
1711 "Expr : methodExpr",
1712 "Expr : ctorExpr",
1713 "Expr : derefExpr",
1714 "Expr : navigateExpr",
1715 "Expr : literalExpr",
1716 "parenExpr : L_PAREN generalExpr R_PAREN",
1717 "betweenPrefix : Expr BETWEEN Expr",
1718 "notBetweenPrefix : Expr NOT BETWEEN Expr",
1719 "builtInExpr : Expr PLUS Expr",
1720 "builtInExpr : Expr MINUS Expr",
1721 "builtInExpr : Expr STAR Expr",
1722 "builtInExpr : Expr FSLASH Expr",
1723 "builtInExpr : Expr PERCENT Expr",
1724 "builtInExpr : MINUS Expr",
1725 "builtInExpr : PLUS Expr",
1726 "builtInExpr : Expr OP_NEQ Expr",
1727 "builtInExpr : Expr OP_GT Expr",
1728 "builtInExpr : Expr OP_GE Expr",
1729 "builtInExpr : Expr OP_LT Expr",
1730 "builtInExpr : Expr OP_LE Expr",
1731 "builtInExpr : Expr INTERSECT Expr",
1732 "builtInExpr : Expr UNION Expr",
1733 "builtInExpr : Expr UNION ALL Expr",
1734 "builtInExpr : Expr EXCEPT Expr",
1735 "builtInExpr : Expr OVERLAPS Expr",
1736 "builtInExpr : Expr IN Expr",
1737 "builtInExpr : Expr NOT IN Expr",
1738 "builtInExpr : EXISTS L_PAREN generalExpr R_PAREN",
1739 "builtInExpr : ANYELEMENT L_PAREN generalExpr R_PAREN",
1740 "builtInExpr : ELEMENT L_PAREN generalExpr R_PAREN",
1741 "builtInExpr : FLATTEN L_PAREN generalExpr R_PAREN",
1742 "builtInExpr : SET L_PAREN generalExpr R_PAREN",
1743 "builtInExpr : Expr IS NULL",
1744 "builtInExpr : Expr IS NOT NULL",
1745 "builtInExpr : searchedCaseExpr",
1746 "builtInExpr : TREAT L_PAREN Expr AS typeName R_PAREN",
1747 "builtInExpr : CAST L_PAREN Expr AS typeName R_PAREN",
1748 "builtInExpr : OFTYPE L_PAREN Expr COMMA typeName R_PAREN",
1749 "builtInExpr : OFTYPE L_PAREN Expr COMMA ONLY typeName R_PAREN",
1750 "builtInExpr : Expr IS OF L_PAREN typeName R_PAREN",
1751 "builtInExpr : Expr IS NOT OF L_PAREN typeName R_PAREN",
1752 "builtInExpr : Expr IS OF L_PAREN ONLY typeName R_PAREN",
1753 "builtInExpr : Expr IS NOT OF L_PAREN ONLY typeName R_PAREN",
1754 "builtInExpr : Expr LIKE Expr",
1755 "builtInExpr : Expr NOT LIKE Expr",
1756 "builtInExpr : Expr LIKE Expr ESCAPE Expr",
1757 "builtInExpr : Expr NOT LIKE Expr ESCAPE Expr",
1758 "builtInExpr : betweenPrefix AND Expr",
1759 "builtInExpr : notBetweenPrefix AND Expr",
1760 "builtInExpr : Expr OR Expr",
1761 "builtInExpr : NOT Expr",
1762 "builtInExpr : Expr AND Expr",
1763 "builtInExpr : equalsOrAssignExpr",
1764 "equalsOrAssignExpr : assignExpr",
1765 "equalsOrAssignExpr : equalsExpr",
1766 "assignExpr : Expr EQUAL Expr",
1767 "equalsExpr : Expr OP_EQ Expr",
1768 "aliasExpr : Expr AS identifier",
1769 "aliasExpr : Expr",
1770 "aliasExprList : aliasExpr",
1771 "aliasExprList : aliasExprList COMMA aliasExpr",
1772 "searchedCaseExpr : CASE whenThenExprList END",
1773 "searchedCaseExpr : CASE whenThenExprList caseElseExpr END",
1774 "whenThenExprList : WHEN Expr THEN Expr",
1775 "whenThenExprList : whenThenExprList WHEN Expr THEN Expr",
1776 "caseElseExpr : ELSE Expr",
1777 "ctorExpr : ROW L_PAREN aliasExprList R_PAREN",
1778 "ctorExpr : MULTISET L_PAREN exprList R_PAREN",
1779 "ctorExpr : L_CURLY exprList R_CURLY",
1780 "dotExpr : Expr DOT identifier",
1781 "refExpr : REF L_PAREN generalExpr R_PAREN",
1782 "derefExpr : DEREF L_PAREN generalExpr R_PAREN",
1783 "createRefExpr : CREATEREF L_PAREN Expr COMMA Expr R_PAREN",
1784 "createRefExpr : CREATEREF L_PAREN Expr COMMA Expr COMMA typeName R_PAREN",
1785 "keyExpr : KEY L_PAREN generalExpr R_PAREN",
1786 "groupPartitionExpr : GROUPPARTITION L_PAREN optAllOrDistinct generalExpr R_PAREN",
1787 "methodExpr : dotExpr L_PAREN R_PAREN",
1788 "methodExpr : dotExpr L_PAREN optAllOrDistinct exprList R_PAREN optWithRelationship",
1789 "methodExpr : dotExpr L_PAREN optAllOrDistinct queryExpr R_PAREN optWithRelationship",
1790 "methodExpr : identifier L_PAREN R_PAREN",
1791 "methodExpr : identifier L_PAREN optAllOrDistinct exprList R_PAREN optWithRelationship",
1792 "methodExpr : identifier L_PAREN optAllOrDistinct queryExpr R_PAREN optWithRelationship",
1793 "navigateExpr : NAVIGATE L_PAREN Expr COMMA typeName R_PAREN",
1794 "navigateExpr : NAVIGATE L_PAREN Expr COMMA typeName COMMA identifier R_PAREN",
1795 "navigateExpr : NAVIGATE L_PAREN Expr COMMA typeName COMMA identifier COMMA identifier R_PAREN",
1796 "optWithRelationship :",
1797 "optWithRelationship : relationshipList",
1798 "relationshipList : WITH relationshipExpr",
1799 "relationshipList : relationshipList relationshipExpr",
1800 "relationshipExpr : RELATIONSHIP L_PAREN Expr COMMA typeName R_PAREN",
1801 "relationshipExpr : RELATIONSHIP L_PAREN Expr COMMA typeName COMMA identifier R_PAREN",
1802 "relationshipExpr : RELATIONSHIP L_PAREN Expr COMMA typeName COMMA identifier COMMA identifier R_PAREN",
1803 "typeName : identifier",
1804 "typeName : qualifiedTypeName",
1805 "typeName : identifier ESCAPED_IDENTIFIER",
1806 "typeName : qualifiedTypeName ESCAPED_IDENTIFIER",
1807 "typeName : typeNameWithTypeSpec",
1808 "qualifiedTypeName : typeName DOT identifier",
1809 "typeNameWithTypeSpec : qualifiedTypeName L_PAREN R_PAREN",
1810 "typeNameWithTypeSpec : qualifiedTypeName L_PAREN exprList R_PAREN",
1811 "typeNameWithTypeSpec : identifier L_PAREN R_PAREN",
1812 "typeNameWithTypeSpec : identifier L_PAREN exprList R_PAREN",
1813 "identifier : ESCAPED_IDENTIFIER",
1814 "identifier : simpleIdentifier",
1815 "simpleIdentifier : IDENTIFIER",
1816 "literalExpr : LITERAL",
1817 "literalExpr : NULL",
1818 "typeDef : typeName",
1819 "typeDef : collectionTypeDef",
1820 "typeDef : refTypeDef",
1821 "typeDef : rowTypeDef",
1822 "collectionTypeDef : COLLECTION L_PAREN typeDef R_PAREN",
1823 "refTypeDef : REF L_PAREN typeName R_PAREN",
1824 "rowTypeDef : ROW L_PAREN propertyDefList R_PAREN",
1825 "propertyDefList : propertyDef",
1826 "propertyDefList : propertyDefList COMMA propertyDef",
1827 "propertyDef : identifier typeDef",
1828 };
1829
1830 //#line 1415 "CqlGrammar.y"
1831
1832 #pragma warning restore 414
1833 //###############################################################
1834 // method: yylexdebug : check lexer state
1835 //###############################################################
yylexdebug(int state,int ch)1836 void yylexdebug(int state,int ch)
1837 {
1838 String s=null;
1839 if (ch < 0) ch=0;
1840 if (ch <= YYMAXTOKEN) //check index bounds
1841 s = yyname[ch]; //now get it
1842 if (s==null)
1843 s = "illegal-symbol";
1844 debug("state "+state+", reading "+ch+" ("+s+")");
1845 }
1846
1847
1848
1849 //###############################################################
1850 // method: yyparse : parse input and execute indicated items
1851 //###############################################################
yyparse()1852 int yyparse()
1853 {
1854 int yyn; //next thing to do
1855 int yym; //
1856 int yystate; //current parsing state from state table
1857 #if YYDEBUG
1858 String yys; //current token string
1859 #endif
1860 init_stacks();
1861 yynerrs = 0;
1862 yyerrflag = 0;
1863 yychar = (-1);
1864
1865 yystate = 0;
1866 state_push(yystate);
1867
1868 yyloop:
1869 #if YYDEBUG
1870 debug("yyloop");
1871 #endif
1872 yyn = yydefred[yystate];
1873 if (yyn!=0) goto yyreduce;
1874 #if YYDEBUG
1875 debug("yyn:"+yyn+" state:"+yystate+" char:"+yychar);
1876 #endif
1877 if (yychar < 0)
1878 {
1879 yychar = yylex();
1880 if (yychar < 0) yychar = 0;
1881 }
1882 yyn = yysindex[yystate];
1883 if ((yyn!=0) && (yyn += yychar) >= 0 &&
1884 yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
1885 {
1886 #if YYDEBUG
1887 debug("state "+yystate+", shifting to state "+yytable[yyn]+"");
1888 #endif
1889 yystate = yytable[yyn];
1890 state_push(yystate);
1891 val_push( yylval );
1892 yychar = (-1);
1893 if (yyerrflag > 0) --yyerrflag;
1894 goto yyloop;
1895 }
1896 yyn = yyrindex[yystate];
1897 if ((yyn!=0) && (yyn += yychar) >= 0 &&
1898 yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
1899 {
1900 yyn = yytable[yyn];
1901 #if YYDEBUG
1902 debug("reduce");
1903 #endif
1904 goto yyreduce;
1905 }
1906 if (yyerrflag!=0) goto yyinrecovery;
1907 yyerror("syntax error");
1908
1909 ++yynerrs;
1910 yyinrecovery:
1911 if (yyerrflag < 3)
1912 {
1913 yyerrflag = 3;
1914 for (;;)
1915 {
1916 if (stateptr < 0)
1917 {
1918 goto yyoverflow;
1919 }
1920 yyn = yysindex[state_peek(0)];
1921 if ((yyn!=0) && (yyn += YYERRCODE) >= 0 &&
1922 yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
1923 {
1924 if (stateptr < 0)
1925 {
1926 goto yyoverflow;
1927 }
1928 #if YYDEBUG
1929 debug("state "+state_peek(0)+", error recovery shifting to state "+yytable[yyn]+" ");
1930 #endif
1931 yystate = yytable[yyn];
1932 state_push(yystate);
1933 val_push( yylval );
1934 goto yyloop;
1935 }
1936 else
1937 {
1938 if (stateptr < 0)
1939 {
1940 goto yyoverflow;
1941 }
1942 #if YYDEBUG
1943 debug("error recovery discarding state "+state_peek(0)+" ");
1944 #endif
1945 state_pop();
1946 val_pop();
1947 }
1948 }
1949 }
1950 else
1951 {
1952 if (yychar == 0) goto yyabort;
1953 #if YYDEBUG
1954 if (yydebug)
1955 {
1956 yys = null;
1957 if (yychar <= YYMAXTOKEN) yys = yyname[yychar];
1958 if (yys == null) yys = "illegal-symbol";
1959 debug("state "+yystate+", error recovery discards token "+yychar+" ("+yys+")");
1960 }
1961 #endif
1962 yychar = (-1);
1963 goto yyloop;
1964 }
1965 yyreduce:
1966 yym = yylen[yyn];
1967 #if YYDEBUG
1968 debug("state "+yystate+", reducing "+yym+" by rule "+yyn+" ("+yyrule[yyn]+")");
1969 #endif
1970 yyval = val_peek(yym-1);
1971 switch (yyn)
1972 {
1973 //########## USER-SUPPLIED ACTIONS ##########
1974 case 1:
1975 //#line 108 "CqlGrammar.y"
1976 {
1977 yyval = _parsedTree = null;
1978 }
1979 break;
1980 case 2:
1981 //#line 112 "CqlGrammar.y"
1982 {
1983 yyval = _parsedTree = (Node)val_peek(0);
1984 }
1985 break;
1986 case 3:
1987 //#line 118 "CqlGrammar.y"
1988 {
1989 yyval = new Command(ToNodeList<NamespaceImport>(val_peek(1)),(Statement)val_peek(0));
1990 SetErrCtx(AstNode(yyval), (val_peek(1) != null) ? AstNodePos(val_peek(1)) : AstNodePos(val_peek(0)), EntityRes.CtxCommandExpression);
1991 }
1992 break;
1993 case 4:
1994 //#line 129 "CqlGrammar.y"
1995 {
1996 yyval = null;
1997 }
1998 break;
1999 case 5:
2000 //#line 133 "CqlGrammar.y"
2001 {
2002 yyval = val_peek(0);
2003 }
2004 break;
2005 case 6:
2006 //#line 139 "CqlGrammar.y"
2007 {
2008 yyval = new NodeList<NamespaceImport>((NamespaceImport)val_peek(0));
2009 SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxNamespaceImportList);
2010 }
2011 break;
2012 case 7:
2013 //#line 144 "CqlGrammar.y"
2014 {
2015 yyval = ToNodeList<NamespaceImport>(val_peek(1)).Add((NamespaceImport)val_peek(0));
2016 }
2017 break;
2018 case 8:
2019 //#line 150 "CqlGrammar.y"
2020 {
2021 yyval = new NamespaceImport((Identifier)val_peek(1));
2022 SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxNamespaceImport);
2023 }
2024 break;
2025 case 9:
2026 //#line 155 "CqlGrammar.y"
2027 {
2028 yyval = new NamespaceImport((DotExpr)val_peek(1));
2029 SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxNamespaceImport);
2030 }
2031 break;
2032 case 10:
2033 //#line 160 "CqlGrammar.y"
2034 {
2035 yyval = new NamespaceImport((BuiltInExpr)val_peek(1));
2036 SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxAliasedNamespaceImport);
2037 }
2038 break;
2039 case 11:
2040 //#line 171 "CqlGrammar.y"
2041 {
2042 yyval = new QueryStatement(ToNodeList<AST.FunctionDefinition>(val_peek(2)),(Node)val_peek(1));
2043 SetErrCtx(AstNode(yyval), (val_peek(2) != null) ? AstNodePos(val_peek(2)) : AstNodePos(val_peek(1)), EntityRes.CtxQueryStatement);
2044 }
2045 break;
2046 case 12:
2047 //#line 182 "CqlGrammar.y"
2048 {
2049 yyval = null;
2050 }
2051 break;
2052 case 13:
2053 //#line 186 "CqlGrammar.y"
2054 {
2055 yyval = val_peek(0);
2056 }
2057 break;
2058 case 14:
2059 //#line 192 "CqlGrammar.y"
2060 {
2061 yyval = new NodeList<AST.FunctionDefinition>((AST.FunctionDefinition)val_peek(0));
2062 SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo);
2063 }
2064 break;
2065 case 15:
2066 //#line 197 "CqlGrammar.y"
2067 {
2068 yyval = ToNodeList<AST.FunctionDefinition>(val_peek(1)).Add((AST.FunctionDefinition)val_peek(0));
2069 SetErrCtx(AstNode(yyval), AstNodePos(yyval), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo);
2070 }
2071 break;
2072 case 16:
2073 //#line 204 "CqlGrammar.y"
2074 {
2075 yyval = new AST.FunctionDefinition((Identifier)val_peek(5), ToNodeList<PropDefinition>(val_peek(4)), (Node)val_peek(1), Terminal(val_peek(6)).IPos, Terminal(val_peek(0)).IPos);
2076 SetErrCtx(AstNode(yyval), Terminal(val_peek(6)), EntityRes.CtxFunctionDefinition);
2077 }
2078 break;
2079 case 17:
2080 //#line 211 "CqlGrammar.y"
2081 {
2082 yyval = null;
2083 }
2084 break;
2085 case 18:
2086 //#line 215 "CqlGrammar.y"
2087 {
2088 yyval = val_peek(1);
2089 }
2090 break;
2091 case 19:
2092 //#line 221 "CqlGrammar.y"
2093 {
2094 yyval = new NodeList<PropDefinition>((PropDefinition)val_peek(0));
2095 SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo);
2096 }
2097 break;
2098 case 20:
2099 //#line 226 "CqlGrammar.y"
2100 {
2101 yyval = ToNodeList<PropDefinition>(val_peek(2)).Add((PropDefinition)val_peek(0));
2102 SetErrCtx(AstNode(yyval), AstNodePos(yyval), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo);
2103 }
2104 break;
2105 case 21:
2106 //#line 233 "CqlGrammar.y"
2107 {
2108 yyval = new PropDefinition((Identifier)val_peek(1), (Node)val_peek(0));
2109 SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxFunctionDefinition);
2110 }
2111 break;
2112 case 22:
2113 //#line 244 "CqlGrammar.y"
2114 {
2115 yyval = val_peek(0);
2116 }
2117 break;
2118 case 23:
2119 //#line 248 "CqlGrammar.y"
2120 {
2121 yyval = val_peek(0);
2122 }
2123 break;
2124 case 24:
2125 //#line 254 "CqlGrammar.y"
2126 {
2127 yyval = null;
2128 }
2129 break;
2130 case 25:
2131 //#line 258 "CqlGrammar.y"
2132 {
2133 yyval = null;
2134 }
2135 break;
2136 case 26:
2137 //#line 268 "CqlGrammar.y"
2138 {
2139 yyval = new QueryExpr( (SelectClause)val_peek(5) ,
2140 (FromClause)val_peek(4) ,
2141 (Node)val_peek(3) ,
2142 (GroupByClause)val_peek(2) ,
2143 (HavingClause)val_peek(1) ,
2144 (OrderByClause)val_peek(0) );
2145
2146 SetErrCtx(AstNode(yyval), AstNodePos(val_peek(5)), EntityRes.CtxQueryExpression);
2147 }
2148 break;
2149 case 27:
2150 //#line 281 "CqlGrammar.y"
2151 {
2152 StartMethodExprCounting();
2153 }
2154 break;
2155 case 28:
2156 //#line 287 "CqlGrammar.y"
2157 {
2158 yyval = new SelectClause(ToNodeList<AliasedExpr>(val_peek(0)), SelectKind.Row, (DistinctKind)val_peek(2), (Node)val_peek(1), EndMethodExprCounting());
2159 SetErrCtx(AstNode(yyval), Terminal(val_peek(4)), EntityRes.CtxSelectRowClause);
2160 }
2161 break;
2162 case 29:
2163 //#line 292 "CqlGrammar.y"
2164 {
2165 StartMethodExprCounting();
2166 }
2167 break;
2168 case 30:
2169 //#line 299 "CqlGrammar.y"
2170 {
2171 yyval = new SelectClause(ToNodeList<AliasedExpr>(val_peek(0)), SelectKind.Value, (DistinctKind)val_peek(2), (Node)val_peek(1), EndMethodExprCounting());
2172 SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxSelectValueClause);
2173 }
2174 break;
2175 case 31:
2176 //#line 306 "CqlGrammar.y"
2177 {
2178 yyval = DistinctKind.None;
2179 }
2180 break;
2181 case 32:
2182 //#line 310 "CqlGrammar.y"
2183 {
2184 yyval = DistinctKind.All;
2185 }
2186 break;
2187 case 33:
2188 //#line 314 "CqlGrammar.y"
2189 {
2190 yyval = DistinctKind.Distinct;
2191 }
2192 break;
2193 case 34:
2194 //#line 320 "CqlGrammar.y"
2195 {
2196 yyval = null;
2197 }
2198 break;
2199 case 35:
2200 //#line 324 "CqlGrammar.y"
2201 {
2202 yyval = val_peek(1);
2203 SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxTopSubClause);
2204 }
2205 break;
2206 case 36:
2207 //#line 331 "CqlGrammar.y"
2208 {
2209 yyval = new FromClause(ToNodeList<FromClauseItem>(val_peek(0)));
2210 SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxFromClause);
2211 }
2212 break;
2213 case 37:
2214 //#line 338 "CqlGrammar.y"
2215 {
2216 yyval = new NodeList<FromClauseItem>((FromClauseItem)val_peek(0));
2217 SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo);
2218 }
2219 break;
2220 case 38:
2221 //#line 343 "CqlGrammar.y"
2222 {
2223 yyval = ToNodeList<FromClauseItem>(val_peek(2)).Add((FromClauseItem)val_peek(0));
2224 SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxFromClauseList);
2225 }
2226 break;
2227 case 39:
2228 //#line 350 "CqlGrammar.y"
2229 {
2230 yyval = new FromClauseItem((AliasedExpr)val_peek(0));
2231 SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxFromClauseItem);
2232 }
2233 break;
2234 case 40:
2235 //#line 355 "CqlGrammar.y"
2236 {
2237 yyval = new FromClauseItem((JoinClauseItem)val_peek(1));
2238 SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxFromJoinClause);
2239 }
2240 break;
2241 case 41:
2242 //#line 360 "CqlGrammar.y"
2243 {
2244 yyval = new FromClauseItem((JoinClauseItem)val_peek(0));
2245 SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxFromJoinClause);
2246 }
2247 break;
2248 case 42:
2249 //#line 365 "CqlGrammar.y"
2250 {
2251 yyval = new FromClauseItem((ApplyClauseItem)val_peek(1));
2252 SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxFromApplyClause);
2253 }
2254 break;
2255 case 43:
2256 //#line 370 "CqlGrammar.y"
2257 {
2258 yyval = new FromClauseItem((ApplyClauseItem)val_peek(0));
2259 SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxFromApplyClause);
2260 }
2261 break;
2262 case 44:
2263 //#line 377 "CqlGrammar.y"
2264 {
2265 yyval = new JoinClauseItem((FromClauseItem)val_peek(2), (FromClauseItem)val_peek(0), (JoinKind)val_peek(1));
2266 SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxJoinClause);
2267 }
2268 break;
2269 case 45:
2270 //#line 382 "CqlGrammar.y"
2271 {
2272 yyval = new JoinClauseItem((FromClauseItem)val_peek(4), (FromClauseItem)val_peek(2), (JoinKind)val_peek(3), (Node)val_peek(0));
2273 SetErrCtx(AstNode(yyval), AstNodePos(val_peek(4)), EntityRes.CtxJoinOnClause);
2274 }
2275 break;
2276 case 46:
2277 //#line 389 "CqlGrammar.y"
2278 {
2279 yyval = new ApplyClauseItem((FromClauseItem)val_peek(2), (FromClauseItem)val_peek(0), (ApplyKind)val_peek(1));
2280 SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxApplyClause);
2281 }
2282 break;
2283 case 47:
2284 //#line 396 "CqlGrammar.y"
2285 {
2286 yyval = JoinKind.Cross;
2287 }
2288 break;
2289 case 48:
2290 //#line 400 "CqlGrammar.y"
2291 {
2292 yyval = JoinKind.LeftOuter;
2293 }
2294 break;
2295 case 49:
2296 //#line 404 "CqlGrammar.y"
2297 {
2298 yyval = JoinKind.LeftOuter;
2299 }
2300 break;
2301 case 50:
2302 //#line 408 "CqlGrammar.y"
2303 {
2304 yyval = JoinKind.RightOuter;
2305 }
2306 break;
2307 case 51:
2308 //#line 412 "CqlGrammar.y"
2309 {
2310 yyval = JoinKind.RightOuter;
2311 }
2312 break;
2313 case 52:
2314 //#line 416 "CqlGrammar.y"
2315 {
2316 yyval = JoinKind.Inner;
2317 }
2318 break;
2319 case 53:
2320 //#line 420 "CqlGrammar.y"
2321 {
2322 yyval = JoinKind.Inner;
2323 }
2324 break;
2325 case 54:
2326 //#line 424 "CqlGrammar.y"
2327 {
2328 yyval = JoinKind.FullOuter;
2329 }
2330 break;
2331 case 55:
2332 //#line 428 "CqlGrammar.y"
2333 {
2334 yyval = JoinKind.FullOuter;
2335 }
2336 break;
2337 case 56:
2338 //#line 432 "CqlGrammar.y"
2339 {
2340 yyval = JoinKind.FullOuter;
2341 }
2342 break;
2343 case 57:
2344 //#line 438 "CqlGrammar.y"
2345 {
2346 yyval = ApplyKind.Cross;
2347 }
2348 break;
2349 case 58:
2350 //#line 442 "CqlGrammar.y"
2351 {
2352 yyval = ApplyKind.Outer;
2353 }
2354 break;
2355 case 59:
2356 //#line 447 "CqlGrammar.y"
2357 {
2358 yyval = null;
2359 }
2360 break;
2361 case 60:
2362 //#line 451 "CqlGrammar.y"
2363 {
2364 yyval = val_peek(0);
2365 }
2366 break;
2367 case 61:
2368 //#line 457 "CqlGrammar.y"
2369 {
2370 yyval = (Node)val_peek(0);
2371 SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxWhereClause);
2372 }
2373 break;
2374 case 62:
2375 //#line 464 "CqlGrammar.y"
2376 {
2377 yyval = null;
2378 }
2379 break;
2380 case 63:
2381 //#line 468 "CqlGrammar.y"
2382 {
2383 yyval = val_peek(0);
2384 }
2385 break;
2386 case 64:
2387 //#line 474 "CqlGrammar.y"
2388 {
2389 yyval = new GroupByClause(ToNodeList<AliasedExpr>(val_peek(0)));
2390 SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxGroupByClause);
2391 }
2392 break;
2393 case 65:
2394 //#line 481 "CqlGrammar.y"
2395 {
2396 yyval = null;
2397 }
2398 break;
2399 case 66:
2400 //#line 485 "CqlGrammar.y"
2401 {
2402 yyval = val_peek(0);
2403 }
2404 break;
2405 case 67:
2406 //#line 491 "CqlGrammar.y"
2407 {
2408 StartMethodExprCounting();
2409 }
2410 break;
2411 case 68:
2412 //#line 495 "CqlGrammar.y"
2413 {
2414 yyval = new HavingClause((Node)val_peek(0), EndMethodExprCounting());
2415 SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxHavingClause);
2416 }
2417 break;
2418 case 69:
2419 //#line 502 "CqlGrammar.y"
2420 {
2421 yyval = null;
2422 }
2423 break;
2424 case 70:
2425 //#line 506 "CqlGrammar.y"
2426 {
2427 yyval = val_peek(0);
2428 }
2429 break;
2430 case 71:
2431 //#line 512 "CqlGrammar.y"
2432 {
2433 StartMethodExprCounting();
2434 }
2435 break;
2436 case 72:
2437 //#line 518 "CqlGrammar.y"
2438 {
2439 yyval = new OrderByClause(ToNodeList<OrderByClauseItem>(val_peek(2)), (Node)val_peek(1), (Node)val_peek(0), EndMethodExprCounting());
2440 SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxOrderByClauseItem);
2441 }
2442 break;
2443 case 73:
2444 //#line 525 "CqlGrammar.y"
2445 {
2446 yyval = null;
2447 }
2448 break;
2449 case 74:
2450 //#line 529 "CqlGrammar.y"
2451 {
2452 yyval = val_peek(0);
2453 SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxSkipSubClause);
2454 }
2455 break;
2456 case 75:
2457 //#line 536 "CqlGrammar.y"
2458 {
2459 yyval = null;
2460 }
2461 break;
2462 case 76:
2463 //#line 540 "CqlGrammar.y"
2464 {
2465 yyval = val_peek(0);
2466 SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxLimitSubClause);
2467 }
2468 break;
2469 case 77:
2470 //#line 547 "CqlGrammar.y"
2471 {
2472 yyval = new NodeList<OrderByClauseItem>((OrderByClauseItem)val_peek(0));
2473 SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo);
2474 }
2475 break;
2476 case 78:
2477 //#line 552 "CqlGrammar.y"
2478 {
2479 yyval = ToNodeList<OrderByClauseItem>(val_peek(2)).Add((OrderByClauseItem)val_peek(0));
2480 SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxOrderByClause);
2481 }
2482 break;
2483 case 79:
2484 //#line 559 "CqlGrammar.y"
2485 {
2486 yyval = new OrderByClauseItem((Node)val_peek(1), (OrderKind)val_peek(0));
2487 SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxOrderByClauseItem);
2488 }
2489 break;
2490 case 80:
2491 //#line 564 "CqlGrammar.y"
2492 {
2493 yyval = new OrderByClauseItem((Node)val_peek(3), (OrderKind)val_peek(0), (Identifier)val_peek(1));
2494 SetErrCtx(AstNode(yyval), AstNodePos(val_peek(3)), EntityRes.CtxCollatedOrderByClauseItem);
2495 }
2496 break;
2497 case 81:
2498 //#line 571 "CqlGrammar.y"
2499 {
2500 yyval = OrderKind.None;
2501 }
2502 break;
2503 case 82:
2504 //#line 575 "CqlGrammar.y"
2505 {
2506 yyval = OrderKind.Asc;
2507 }
2508 break;
2509 case 83:
2510 //#line 579 "CqlGrammar.y"
2511 {
2512 yyval = OrderKind.Desc;
2513 }
2514 break;
2515 case 84:
2516 //#line 588 "CqlGrammar.y"
2517 {
2518 yyval = new NodeList<Node>((Node)val_peek(0));
2519 SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo);
2520 }
2521 break;
2522 case 85:
2523 //#line 593 "CqlGrammar.y"
2524 {
2525 yyval = ToNodeList<Node>(val_peek(2)).Add((Node)val_peek(0));
2526 SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxExpressionList);
2527 }
2528 break;
2529 case 86:
2530 //#line 600 "CqlGrammar.y"
2531 {
2532 yyval = val_peek(0);
2533 }
2534 break;
2535 case 87:
2536 //#line 604 "CqlGrammar.y"
2537 {
2538 yyval = (QueryParameter)val_peek(0);
2539 }
2540 break;
2541 case 88:
2542 //#line 608 "CqlGrammar.y"
2543 {
2544 yyval = (Identifier)val_peek(0);
2545 }
2546 break;
2547 case 89:
2548 //#line 612 "CqlGrammar.y"
2549 {
2550 yyval = val_peek(0);
2551 }
2552 break;
2553 case 90:
2554 //#line 616 "CqlGrammar.y"
2555 {
2556 yyval = val_peek(0);
2557 }
2558 break;
2559 case 91:
2560 //#line 620 "CqlGrammar.y"
2561 {
2562 yyval = val_peek(0);
2563 }
2564 break;
2565 case 92:
2566 //#line 624 "CqlGrammar.y"
2567 {
2568 yyval = val_peek(0);
2569 }
2570 break;
2571 case 93:
2572 //#line 628 "CqlGrammar.y"
2573 {
2574 yyval = val_peek(0);
2575 }
2576 break;
2577 case 94:
2578 //#line 632 "CqlGrammar.y"
2579 {
2580 yyval = val_peek(0);
2581 IncrementMethodExprCount();
2582 }
2583 break;
2584 case 95:
2585 //#line 637 "CqlGrammar.y"
2586 {
2587 yyval = val_peek(0);
2588 IncrementMethodExprCount();
2589 }
2590 break;
2591 case 96:
2592 //#line 642 "CqlGrammar.y"
2593 {
2594 yyval = val_peek(0);
2595 }
2596 break;
2597 case 97:
2598 //#line 646 "CqlGrammar.y"
2599 {
2600 yyval = val_peek(0);
2601 }
2602 break;
2603 case 98:
2604 //#line 650 "CqlGrammar.y"
2605 {
2606 yyval = val_peek(0);
2607 }
2608 break;
2609 case 99:
2610 //#line 654 "CqlGrammar.y"
2611 {
2612 yyval = val_peek(0);
2613 }
2614 break;
2615 case 100:
2616 //#line 660 "CqlGrammar.y"
2617 {
2618 yyval = new ParenExpr((Node)val_peek(1));
2619 SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxParen);
2620 }
2621 break;
2622 case 101:
2623 //#line 667 "CqlGrammar.y"
2624 {
2625 yyval = new NodeList<Node>((Node)val_peek(2)).Add((Node)val_peek(0));
2626 }
2627 break;
2628 case 102:
2629 //#line 673 "CqlGrammar.y"
2630 {
2631 yyval = new NodeList<Node>((Node)val_peek(3)).Add((Node)val_peek(0));
2632 }
2633 break;
2634 case 103:
2635 //#line 682 "CqlGrammar.y"
2636 {
2637 yyval = new BuiltInExpr(BuiltInKind.Plus, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
2638 SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxPlus);
2639 }
2640 break;
2641 case 104:
2642 //#line 687 "CqlGrammar.y"
2643 {
2644 yyval = new BuiltInExpr(BuiltInKind.Minus, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
2645 SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxMinus);
2646 }
2647 break;
2648 case 105:
2649 //#line 692 "CqlGrammar.y"
2650 {
2651 yyval = new BuiltInExpr(BuiltInKind.Multiply, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
2652 SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxMultiply);
2653 }
2654 break;
2655 case 106:
2656 //#line 697 "CqlGrammar.y"
2657 {
2658 yyval = new BuiltInExpr(BuiltInKind.Divide, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
2659 SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxDivide);
2660 }
2661 break;
2662 case 107:
2663 //#line 702 "CqlGrammar.y"
2664 {
2665 yyval = new BuiltInExpr(BuiltInKind.Modulus, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
2666 SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxModulus);
2667 }
2668 break;
2669 case 108:
2670 //#line 707 "CqlGrammar.y"
2671 {
2672 Literal literal = val_peek(0) as Literal;
2673 if ( literal != null && literal.IsNumber && !literal.IsSignedNumber )
2674 {
2675 literal.PrefixSign(Terminal(val_peek(1)).Token);
2676 yyval = val_peek(0);
2677 }
2678 else
2679 {
2680 yyval = new BuiltInExpr(BuiltInKind.UnaryMinus, Terminal(val_peek(1)).Token, (Node)val_peek(0));
2681 SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxUnaryMinus);
2682 }
2683
2684 }
2685 break;
2686 case 109:
2687 //#line 722 "CqlGrammar.y"
2688 {
2689 Literal literal = val_peek(0) as Literal;
2690 if ( null != literal && literal.IsNumber && !literal.IsSignedNumber )
2691 {
2692 literal.PrefixSign(Terminal(val_peek(1)).Token);
2693 yyval = val_peek(0);
2694 }
2695 else
2696 {
2697 yyval = new BuiltInExpr(BuiltInKind.UnaryPlus, Terminal(val_peek(1)).Token, (Node)val_peek(0));
2698 SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxUnaryPlus);
2699 }
2700 }
2701 break;
2702 case 110:
2703 //#line 739 "CqlGrammar.y"
2704 {
2705 yyval = new BuiltInExpr(BuiltInKind.NotEqual, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
2706 SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxNotEqual);
2707 }
2708 break;
2709 case 111:
2710 //#line 744 "CqlGrammar.y"
2711 {
2712 yyval = new BuiltInExpr(BuiltInKind.GreaterThan, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
2713 SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxGreaterThan);
2714 }
2715 break;
2716 case 112:
2717 //#line 749 "CqlGrammar.y"
2718 {
2719 yyval = new BuiltInExpr(BuiltInKind.GreaterEqual, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
2720 SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxGreaterThanEqual);
2721 }
2722 break;
2723 case 113:
2724 //#line 754 "CqlGrammar.y"
2725 {
2726 yyval = new BuiltInExpr(BuiltInKind.LessThan, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
2727 SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxLessThan);
2728 }
2729 break;
2730 case 114:
2731 //#line 759 "CqlGrammar.y"
2732 {
2733 yyval = new BuiltInExpr(BuiltInKind.LessEqual, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
2734 SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxLessThanEqual);
2735 }
2736 break;
2737 case 115:
2738 //#line 767 "CqlGrammar.y"
2739 {
2740 yyval = new BuiltInExpr(BuiltInKind.Intersect, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
2741 SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxIntersect);
2742 }
2743 break;
2744 case 116:
2745 //#line 772 "CqlGrammar.y"
2746 {
2747 yyval = new BuiltInExpr(BuiltInKind.Union, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
2748 SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxUnion);
2749 }
2750 break;
2751 case 117:
2752 //#line 777 "CqlGrammar.y"
2753 {
2754 yyval = new BuiltInExpr(BuiltInKind.UnionAll, Terminal(val_peek(2)).Token, (Node)val_peek(3), (Node)val_peek(0));
2755 SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxUnionAll);
2756 }
2757 break;
2758 case 118:
2759 //#line 782 "CqlGrammar.y"
2760 {
2761 yyval = new BuiltInExpr(BuiltInKind.Except, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
2762 SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxExcept);
2763 }
2764 break;
2765 case 119:
2766 //#line 787 "CqlGrammar.y"
2767 {
2768 yyval = new BuiltInExpr(BuiltInKind.Overlaps, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
2769 SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxOverlaps);
2770 }
2771 break;
2772 case 120:
2773 //#line 792 "CqlGrammar.y"
2774 {
2775 yyval = new BuiltInExpr(BuiltInKind.In, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
2776 SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxIn);
2777 }
2778 break;
2779 case 121:
2780 //#line 797 "CqlGrammar.y"
2781 {
2782 yyval = new BuiltInExpr(BuiltInKind.NotIn, Terminal(val_peek(2)).Token, (Node)val_peek(3), (Node)val_peek(0));
2783 SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxNotIn);
2784 }
2785 break;
2786 case 122:
2787 //#line 802 "CqlGrammar.y"
2788 {
2789 yyval = new BuiltInExpr(BuiltInKind.Exists, Terminal(val_peek(3)).Token, (Node)val_peek(1));
2790 SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxExists);
2791 }
2792 break;
2793 case 123:
2794 //#line 807 "CqlGrammar.y"
2795 {
2796 yyval = new BuiltInExpr(BuiltInKind.AnyElement, Terminal(val_peek(3)).Token, (Node)val_peek(1));
2797 SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxAnyElement);
2798 }
2799 break;
2800 case 124:
2801 //#line 812 "CqlGrammar.y"
2802 {
2803 yyval = new BuiltInExpr(BuiltInKind.Element, Terminal(val_peek(3)).Token, (Node)val_peek(1));
2804 SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxElement);
2805 }
2806 break;
2807 case 125:
2808 //#line 817 "CqlGrammar.y"
2809 {
2810 yyval = new BuiltInExpr(BuiltInKind.Flatten, Terminal(val_peek(3)).Token, (Node)val_peek(1));
2811 SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxFlatten);
2812 }
2813 break;
2814 case 126:
2815 //#line 822 "CqlGrammar.y"
2816 {
2817 yyval = new BuiltInExpr(BuiltInKind.Distinct, Terminal(val_peek(3)).Token, (Node)val_peek(1));
2818 SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxSet);
2819 }
2820 break;
2821 case 127:
2822 //#line 830 "CqlGrammar.y"
2823 {
2824 yyval = new BuiltInExpr(BuiltInKind.IsNull, "IsNull", (Node)val_peek(2));
2825 SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxIsNull);
2826 }
2827 break;
2828 case 128:
2829 //#line 835 "CqlGrammar.y"
2830 {
2831 yyval = new BuiltInExpr(BuiltInKind.IsNotNull, "IsNotNull", (Node)val_peek(3));
2832 SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxIsNotNull);
2833 }
2834 break;
2835 case 129:
2836 //#line 843 "CqlGrammar.y"
2837 {
2838 yyval = (CaseExpr)val_peek(0);
2839 }
2840 break;
2841 case 130:
2842 //#line 850 "CqlGrammar.y"
2843 {
2844 yyval = new BuiltInExpr(BuiltInKind.Treat, Terminal(val_peek(5)).Token, (Node)val_peek(3), (Node)val_peek(1));
2845 SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxTreat);
2846 }
2847 break;
2848 case 131:
2849 //#line 855 "CqlGrammar.y"
2850 {
2851 yyval = new BuiltInExpr(BuiltInKind.Cast, Terminal(val_peek(5)).Token, (Node)val_peek(3), (Node)val_peek(1));
2852 SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxCast);
2853 }
2854 break;
2855 case 132:
2856 //#line 864 "CqlGrammar.y"
2857 {
2858 yyval = new BuiltInExpr(BuiltInKind.OfType,
2859 Terminal(val_peek(5)).Token,
2860 (Node)val_peek(3),
2861 (Node)val_peek(1),
2862 Literal.NewBooleanLiteral( false ) /* only */);
2863
2864 SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxOfType);
2865 }
2866 break;
2867 case 133:
2868 //#line 874 "CqlGrammar.y"
2869 {
2870 yyval = new BuiltInExpr(BuiltInKind.OfType,
2871 "OFTYPE ONLY",
2872 (Node)val_peek(4),
2873 (Node)val_peek(1),
2874 Literal.NewBooleanLiteral( true ) /* only */);
2875
2876 SetErrCtx(AstNode(yyval), Terminal(val_peek(6)), EntityRes.CtxOfTypeOnly);
2877 }
2878 break;
2879 case 134:
2880 //#line 887 "CqlGrammar.y"
2881 {
2882 yyval = new BuiltInExpr( BuiltInKind.IsOf,
2883 "IS OF",
2884 (Node)val_peek(5),
2885 (Node)val_peek(1),
2886 Literal.NewBooleanLiteral( false ), /* only */
2887 Literal.NewBooleanLiteral( false ) /* not */
2888 );
2889
2890 SetErrCtx(AstNode(yyval), Terminal(val_peek(4)), EntityRes.CtxIsOf);
2891 }
2892 break;
2893 case 135:
2894 //#line 899 "CqlGrammar.y"
2895 {
2896 yyval = new BuiltInExpr( BuiltInKind.IsOf,
2897 "IS NOT OF",
2898 (Node)val_peek(6), /* instance */
2899 (Node)val_peek(1), /* type */
2900 Literal.NewBooleanLiteral( false ), /* only */
2901 Literal.NewBooleanLiteral( true ) /* not */
2902 );
2903
2904 SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxIsNotOf);
2905 }
2906 break;
2907 case 136:
2908 //#line 911 "CqlGrammar.y"
2909 {
2910 yyval = new BuiltInExpr( BuiltInKind.IsOf,
2911 "IS OF ONLY",
2912 (Node)val_peek(6), /* instance */
2913 (Node)val_peek(1), /* type */
2914 Literal.NewBooleanLiteral( true ), /* only */
2915 Literal.NewBooleanLiteral( false ) /* not */
2916 );
2917
2918 SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxIsOf);
2919 }
2920 break;
2921 case 137:
2922 //#line 923 "CqlGrammar.y"
2923 {
2924 yyval = new BuiltInExpr( BuiltInKind.IsOf,
2925 "IS NOT OF ONLY",
2926 (Node)val_peek(7), /* instance */
2927 (Node)val_peek(1), /* type */
2928 Literal.NewBooleanLiteral( true ), /* only */
2929 Literal.NewBooleanLiteral( true ) /* not */
2930 );
2931
2932 SetErrCtx(AstNode(yyval), Terminal(val_peek(6)), EntityRes.CtxIsNotOf);
2933 }
2934 break;
2935 case 138:
2936 //#line 938 "CqlGrammar.y"
2937 {
2938 yyval = new BuiltInExpr(BuiltInKind.Like, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
2939 SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxLike);
2940 }
2941 break;
2942 case 139:
2943 //#line 943 "CqlGrammar.y"
2944 {
2945 yyval = new BuiltInExpr(BuiltInKind.Not,
2946 Terminal(val_peek(2)).Token,
2947 new BuiltInExpr(BuiltInKind.Like, Terminal(val_peek(1)).Token, (Node)val_peek(3), (Node)val_peek(0)));
2948 SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxNotLike);
2949 }
2950 break;
2951 case 140:
2952 //#line 950 "CqlGrammar.y"
2953 {
2954 yyval = new BuiltInExpr(BuiltInKind.Like, Terminal(val_peek(3)).Token, (Node)val_peek(4), (Node)val_peek(2), (Node)val_peek(0));
2955 SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxLike);
2956 }
2957 break;
2958 case 141:
2959 //#line 955 "CqlGrammar.y"
2960 {
2961 yyval = new BuiltInExpr(BuiltInKind.Not,
2962 Terminal(val_peek(4)).Token,
2963 new BuiltInExpr(BuiltInKind.Like, Terminal(val_peek(3)).Token, (Node)val_peek(5), (Node)val_peek(2), (Node)val_peek(0)));
2964 SetErrCtx(AstNode(yyval), Terminal(val_peek(4)), EntityRes.CtxNotLike);
2965 }
2966 break;
2967 case 142:
2968 //#line 965 "CqlGrammar.y"
2969 {
2970 NodeList<Node> elist = (NodeList<Node>)val_peek(2);
2971 System.Diagnostics.Debug.Assert(elist.Count==2);
2972 yyval = new BuiltInExpr(BuiltInKind.Between, "between", elist[0], elist[1], (Node)val_peek(0) );
2973 SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxBetween);
2974 }
2975 break;
2976 case 143:
2977 //#line 975 "CqlGrammar.y"
2978 {
2979 NodeList<Node> elist = (NodeList<Node>)val_peek(2);
2980 System.Diagnostics.Debug.Assert(elist.Count==2);
2981 yyval = new BuiltInExpr(BuiltInKind.NotBetween, "notbetween", elist[0], elist[1], (Node)val_peek(0) );
2982 SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxNotBetween);
2983 }
2984 break;
2985 case 144:
2986 //#line 985 "CqlGrammar.y"
2987 {
2988 yyval = new BuiltInExpr(BuiltInKind.Or, "or", (Node)val_peek(2), (Node)val_peek(0));
2989 SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxOr);
2990 }
2991 break;
2992 case 145:
2993 //#line 990 "CqlGrammar.y"
2994 {
2995 yyval = new BuiltInExpr(BuiltInKind.Not, "not", (Node)val_peek(0));
2996 SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxNot);
2997 }
2998 break;
2999 case 146:
3000 //#line 995 "CqlGrammar.y"
3001 {
3002 yyval = new BuiltInExpr(BuiltInKind.And, "and", (Node)val_peek(2), (Node)val_peek(0));
3003 SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxAnd);
3004 }
3005 break;
3006 case 147:
3007 //#line 1000 "CqlGrammar.y"
3008 {
3009 yyval = val_peek(0);
3010 }
3011 break;
3012 case 148:
3013 //#line 1006 "CqlGrammar.y"
3014 {
3015 yyval = val_peek(0);
3016 }
3017 break;
3018 case 149:
3019 //#line 1010 "CqlGrammar.y"
3020 {
3021 yyval = val_peek(0);
3022 }
3023 break;
3024 case 150:
3025 //#line 1016 "CqlGrammar.y"
3026 {
3027 yyval = new BuiltInExpr(BuiltInKind.Equal, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
3028 SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxEquals);
3029 }
3030 break;
3031 case 151:
3032 //#line 1023 "CqlGrammar.y"
3033 {
3034 yyval = new BuiltInExpr(BuiltInKind.Equal, Terminal(val_peek(1)).Token, (Node)val_peek(2), (Node)val_peek(0));
3035 SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxEquals);
3036 }
3037 break;
3038 case 152:
3039 //#line 1030 "CqlGrammar.y"
3040 {
3041 yyval = new AliasedExpr((Node)val_peek(2), (Identifier)val_peek(0));
3042 SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxAlias);
3043 }
3044 break;
3045 case 153:
3046 //#line 1035 "CqlGrammar.y"
3047 {
3048 yyval = new AliasedExpr((Node)val_peek(0));
3049 SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo);
3050 }
3051 break;
3052 case 154:
3053 //#line 1042 "CqlGrammar.y"
3054 {
3055 yyval = new NodeList<AliasedExpr>((AliasedExpr)val_peek(0));
3056 SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo);
3057 }
3058 break;
3059 case 155:
3060 //#line 1047 "CqlGrammar.y"
3061 {
3062 yyval = ToNodeList<AliasedExpr>(val_peek(2)).Add((AliasedExpr)val_peek(0));
3063 SetErrCtx(AstNode(yyval), AstNodePos(yyval), EntityRes.CtxExpressionList);
3064 }
3065 break;
3066 case 156:
3067 //#line 1054 "CqlGrammar.y"
3068 {
3069 yyval = new CaseExpr(ToNodeList<WhenThenExpr>(val_peek(1)));
3070 SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxCase);
3071 }
3072 break;
3073 case 157:
3074 //#line 1059 "CqlGrammar.y"
3075 {
3076 yyval = new CaseExpr(ToNodeList<WhenThenExpr>(val_peek(2)), (Node)val_peek(1));
3077 SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxCase);
3078 }
3079 break;
3080 case 158:
3081 //#line 1066 "CqlGrammar.y"
3082 {
3083 yyval = new NodeList<WhenThenExpr>(new WhenThenExpr((Node)val_peek(2), (Node)val_peek(0)));
3084 SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxCaseWhenThen);
3085 }
3086 break;
3087 case 159:
3088 //#line 1071 "CqlGrammar.y"
3089 {
3090 yyval = ToNodeList<WhenThenExpr>(val_peek(4)).Add(new WhenThenExpr((Node)val_peek(2), (Node)val_peek(0)));
3091 }
3092 break;
3093 case 160:
3094 //#line 1077 "CqlGrammar.y"
3095 {
3096 yyval = (Node)val_peek(0);
3097 SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxCaseElse);
3098 }
3099 break;
3100 case 161:
3101 //#line 1084 "CqlGrammar.y"
3102 {
3103 yyval = new RowConstructorExpr(ToNodeList<AliasedExpr>(val_peek(1)));
3104 SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxRowCtor);
3105 }
3106 break;
3107 case 162:
3108 //#line 1089 "CqlGrammar.y"
3109 {
3110 yyval = new MultisetConstructorExpr(ToNodeList<Node>(val_peek(1)));
3111 SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxMultisetCtor);
3112 }
3113 break;
3114 case 163:
3115 //#line 1094 "CqlGrammar.y"
3116 {
3117 yyval = new MultisetConstructorExpr(ToNodeList<Node>(val_peek(1)));
3118 SetErrCtx(AstNode(yyval), Terminal(val_peek(2)), EntityRes.CtxMultisetCtor);
3119 }
3120 break;
3121 case 164:
3122 //#line 1101 "CqlGrammar.y"
3123 {
3124 yyval = new DotExpr((Node)val_peek(2), (Identifier)val_peek(0));
3125 SetErrCtx(AstNode(yyval), Terminal(val_peek(1)), EntityRes.CtxMemberAccess);
3126 }
3127 break;
3128 case 165:
3129 //#line 1108 "CqlGrammar.y"
3130 {
3131 yyval = new RefExpr((Node)val_peek(1));
3132 SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxRef);
3133 }
3134 break;
3135 case 166:
3136 //#line 1115 "CqlGrammar.y"
3137 {
3138 yyval = new DerefExpr((Node)val_peek(1));
3139 SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxDeref);
3140 }
3141 break;
3142 case 167:
3143 //#line 1122 "CqlGrammar.y"
3144 {
3145 yyval = new CreateRefExpr((Node)val_peek(3), (Node)val_peek(1));
3146 SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxCreateRef);
3147 }
3148 break;
3149 case 168:
3150 //#line 1127 "CqlGrammar.y"
3151 {
3152 yyval = new CreateRefExpr((Node)val_peek(5), (Node)val_peek(3), (Node)val_peek(1));
3153 SetErrCtx(AstNode(yyval), Terminal(val_peek(7)), EntityRes.CtxCreateRef);
3154 }
3155 break;
3156 case 169:
3157 //#line 1134 "CqlGrammar.y"
3158 {
3159 yyval = new KeyExpr((Node)val_peek(1));
3160 SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxKey);
3161 }
3162 break;
3163 case 170:
3164 //#line 1141 "CqlGrammar.y"
3165 {
3166 yyval = new GroupPartitionExpr((DistinctKind)val_peek(2), (Node)val_peek(1));
3167 SetErrCtx(AstNode(yyval), Terminal(val_peek(4)), EntityRes.CtxGroupPartition);
3168 }
3169 break;
3170 case 171:
3171 //#line 1148 "CqlGrammar.y"
3172 {
3173 yyval = new MethodExpr((Node)val_peek(2), DistinctKind.None, null);
3174 SetErrCtx(AstNode(yyval), AstNodePos(((DotExpr)val_peek(2)).Identifier), EntityRes.CtxMethod);
3175 }
3176 break;
3177 case 172:
3178 //#line 1153 "CqlGrammar.y"
3179 {
3180 yyval = new MethodExpr((Node)val_peek(5), (DistinctKind)val_peek(3), ToNodeList<Node>(val_peek(2)), ToNodeList<RelshipNavigationExpr>(val_peek(0)));
3181 SetErrCtx(AstNode(yyval), AstNodePos(((DotExpr)val_peek(5)).Identifier), EntityRes.CtxMethod);
3182 }
3183 break;
3184 case 173:
3185 //#line 1158 "CqlGrammar.y"
3186 {
3187 yyval = new MethodExpr((Node)val_peek(5), (DistinctKind)val_peek(3), new NodeList<Node>((Node)val_peek(2)), ToNodeList<RelshipNavigationExpr>(val_peek(0)));
3188 SetErrCtx(AstNode(yyval), AstNodePos(((DotExpr)val_peek(5)).Identifier), EntityRes.CtxMethod);
3189 }
3190 break;
3191 case 174:
3192 //#line 1163 "CqlGrammar.y"
3193 {
3194 yyval = new MethodExpr((Identifier)val_peek(2), DistinctKind.None, null);
3195 SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxMethod);
3196 }
3197 break;
3198 case 175:
3199 //#line 1168 "CqlGrammar.y"
3200 {
3201 yyval = new MethodExpr((Identifier)val_peek(5), (DistinctKind)val_peek(3), ToNodeList<Node>(val_peek(2)), ToNodeList<RelshipNavigationExpr>(val_peek(0)));
3202 SetErrCtx(AstNode(yyval), AstNodePos(val_peek(5)), EntityRes.CtxMethod);
3203 }
3204 break;
3205 case 176:
3206 //#line 1173 "CqlGrammar.y"
3207 {
3208 yyval = new MethodExpr((Identifier)val_peek(5),(DistinctKind)val_peek(3), new NodeList<Node>((Node)val_peek(2)), ToNodeList<RelshipNavigationExpr>(val_peek(0)));
3209 SetErrCtx(AstNode(yyval), AstNodePos(val_peek(5)), EntityRes.CtxMethod);
3210 }
3211 break;
3212 case 177:
3213 //#line 1183 "CqlGrammar.y"
3214 {
3215 yyval = new RelshipNavigationExpr((Node)val_peek(3), (Node)val_peek(1), null, null);
3216 SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxNavigate);
3217 }
3218 break;
3219 case 178:
3220 //#line 1191 "CqlGrammar.y"
3221 {
3222 yyval = new RelshipNavigationExpr((Node)val_peek(5), (Node)val_peek(3), (Identifier)val_peek(1), null);
3223 SetErrCtx(AstNode(yyval), Terminal(val_peek(7)), EntityRes.CtxNavigate);
3224 }
3225 break;
3226 case 179:
3227 //#line 1199 "CqlGrammar.y"
3228 {
3229 yyval = new RelshipNavigationExpr((Node)val_peek(7), (Node)val_peek(5), (Identifier)val_peek(3), (Identifier)val_peek(1));
3230 SetErrCtx(AstNode(yyval), Terminal(val_peek(9)), EntityRes.CtxNavigate);
3231 }
3232 break;
3233 case 180:
3234 //#line 1206 "CqlGrammar.y"
3235 {
3236 yyval = null;
3237 }
3238 break;
3239 case 181:
3240 //#line 1210 "CqlGrammar.y"
3241 {
3242 yyval = val_peek(0);
3243 }
3244 break;
3245 case 182:
3246 //#line 1216 "CqlGrammar.y"
3247 {
3248 yyval = new NodeList<RelshipNavigationExpr>((RelshipNavigationExpr)val_peek(0));
3249 SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxRelationshipList);
3250 }
3251 break;
3252 case 183:
3253 //#line 1221 "CqlGrammar.y"
3254 {
3255 yyval = ToNodeList<RelshipNavigationExpr>(val_peek(1)).Add((RelshipNavigationExpr)val_peek(0));
3256 SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxRelationshipList);
3257 }
3258 break;
3259 case 184:
3260 //#line 1231 "CqlGrammar.y"
3261 {
3262 yyval = new RelshipNavigationExpr((Node)val_peek(3), (Node)val_peek(1), null, null);
3263 SetErrCtx(AstNode(yyval), Terminal(val_peek(5)), EntityRes.CtxRelationship);
3264 }
3265 break;
3266 case 185:
3267 //#line 1239 "CqlGrammar.y"
3268 {
3269 yyval = new RelshipNavigationExpr((Node)val_peek(5), (Node)val_peek(3), null, (Identifier)val_peek(1));
3270 SetErrCtx(AstNode(yyval), Terminal(val_peek(7)), EntityRes.CtxRelationship);
3271 }
3272 break;
3273 case 186:
3274 //#line 1247 "CqlGrammar.y"
3275 {
3276 yyval = new RelshipNavigationExpr((Node)val_peek(7), (Node)val_peek(5), (Identifier)val_peek(1), (Identifier)val_peek(3));
3277 SetErrCtx(AstNode(yyval), Terminal(val_peek(9)), EntityRes.CtxRelationship);
3278 }
3279 break;
3280 case 187:
3281 //#line 1254 "CqlGrammar.y"
3282 {
3283 yyval = val_peek(0);
3284 SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxTypeName);
3285 }
3286 break;
3287 case 188:
3288 //#line 1259 "CqlGrammar.y"
3289 {
3290 yyval = val_peek(0);
3291 SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxTypeName);
3292 }
3293 break;
3294 case 189:
3295 //#line 1264 "CqlGrammar.y"
3296 {
3297 Identifier identifier = (Identifier)val_peek(1);
3298 Identifier escapedIdentifier = (Identifier)val_peek(0);
3299 if (identifier.IsEscaped || escapedIdentifier.Name.Length > 0)
3300 {
3301 throw EntityUtil.EntitySqlError(identifier.ErrCtx, System.Data.Entity.Strings.InvalidMetadataMemberName);
3302 }
3303 yyval = new Identifier(identifier.Name + "[]", /*isEscaped*/false, _query, AstNodePos(val_peek(1)));
3304 SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxTypeName);
3305 }
3306 break;
3307 case 190:
3308 //#line 1275 "CqlGrammar.y"
3309 {
3310 DotExpr dotExpr = (DotExpr)val_peek(1);
3311 Identifier identifier = dotExpr.Identifier;
3312 Identifier escapedIdentifier = (Identifier)val_peek(0);
3313 if (identifier.IsEscaped || escapedIdentifier.Name.Length > 0)
3314 {
3315 throw EntityUtil.EntitySqlError(identifier.ErrCtx, System.Data.Entity.Strings.InvalidMetadataMemberName);
3316 }
3317 yyval = new DotExpr(dotExpr.Left, new Identifier(identifier.Name + "[]", /*isEscaped*/false, _query, AstNodePos(val_peek(1))));
3318 SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxTypeName);
3319 }
3320 break;
3321 case 191:
3322 //#line 1287 "CqlGrammar.y"
3323 {
3324 yyval = (MethodExpr)val_peek(0);
3325 SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxTypeName);
3326 }
3327 break;
3328 case 192:
3329 //#line 1294 "CqlGrammar.y"
3330 {
3331 yyval = new DotExpr((Node)val_peek(2), (Identifier)val_peek(0));
3332 SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxTypeName);
3333 }
3334 break;
3335 case 193:
3336 //#line 1301 "CqlGrammar.y"
3337 {
3338 yyval = new MethodExpr((Node)val_peek(2), DistinctKind.None, null);
3339 SetErrCtx(AstNode(yyval), AstNodePos(((DotExpr)val_peek(2)).Identifier), EntityRes.CtxTypeNameWithTypeSpec);
3340 }
3341 break;
3342 case 194:
3343 //#line 1306 "CqlGrammar.y"
3344 {
3345 yyval = new MethodExpr((Node)val_peek(3), DistinctKind.None, ToNodeList<Node>(val_peek(1)));
3346 SetErrCtx(AstNode(yyval), AstNodePos(((DotExpr)val_peek(3)).Identifier), EntityRes.CtxTypeNameWithTypeSpec);
3347 }
3348 break;
3349 case 195:
3350 //#line 1311 "CqlGrammar.y"
3351 {
3352 yyval = new MethodExpr((Identifier)val_peek(2), DistinctKind.None, null);
3353 SetErrCtx(AstNode(yyval), AstNodePos(val_peek(2)), EntityRes.CtxTypeNameWithTypeSpec);
3354 }
3355 break;
3356 case 196:
3357 //#line 1316 "CqlGrammar.y"
3358 {
3359 yyval = new MethodExpr((Identifier)val_peek(3), DistinctKind.None, ToNodeList<Node>(val_peek(1)));
3360 SetErrCtx(AstNode(yyval), AstNodePos(val_peek(3)), EntityRes.CtxTypeNameWithTypeSpec);
3361 }
3362 break;
3363 case 197:
3364 //#line 1323 "CqlGrammar.y"
3365 {
3366 yyval = (Identifier)val_peek(0);
3367 SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxEscapedIdentifier);
3368 }
3369 break;
3370 case 198:
3371 //#line 1328 "CqlGrammar.y"
3372 {
3373 yyval = (Identifier)val_peek(0);
3374 SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxSimpleIdentifier);
3375 }
3376 break;
3377 case 199:
3378 //#line 1335 "CqlGrammar.y"
3379 {
3380 yyval = (Identifier)val_peek(0);
3381 }
3382 break;
3383 case 200:
3384 //#line 1341 "CqlGrammar.y"
3385 {
3386 yyval = val_peek(0);
3387 SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), EntityRes.CtxLiteral);
3388 }
3389 break;
3390 case 201:
3391 //#line 1346 "CqlGrammar.y"
3392 {
3393 yyval = new Literal(null, LiteralKind.Null, _query, TerminalPos(val_peek(0)));
3394 SetErrCtx(AstNode(yyval), Terminal(val_peek(0)), EntityRes.CtxNullLiteral);
3395 }
3396 break;
3397 case 202:
3398 //#line 1357 "CqlGrammar.y"
3399 {
3400 yyval = val_peek(0);
3401 }
3402 break;
3403 case 203:
3404 //#line 1361 "CqlGrammar.y"
3405 {
3406 yyval = val_peek(0);
3407 }
3408 break;
3409 case 204:
3410 //#line 1365 "CqlGrammar.y"
3411 {
3412 yyval = val_peek(0);
3413 }
3414 break;
3415 case 205:
3416 //#line 1369 "CqlGrammar.y"
3417 {
3418 yyval = val_peek(0);
3419 }
3420 break;
3421 case 206:
3422 //#line 1375 "CqlGrammar.y"
3423 {
3424 yyval = new CollectionTypeDefinition((Node)val_peek(1));
3425 SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxCollectionTypeDefinition);
3426 }
3427 break;
3428 case 207:
3429 //#line 1382 "CqlGrammar.y"
3430 {
3431 yyval = new RefTypeDefinition((Node)val_peek(1));
3432 SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxRefTypeDefinition);
3433 }
3434 break;
3435 case 208:
3436 //#line 1389 "CqlGrammar.y"
3437 {
3438 yyval = new RowTypeDefinition(ToNodeList<PropDefinition>(val_peek(1)));
3439 SetErrCtx(AstNode(yyval), Terminal(val_peek(3)), EntityRes.CtxRowTypeDefinition);
3440 }
3441 break;
3442 case 209:
3443 //#line 1396 "CqlGrammar.y"
3444 {
3445 yyval = new NodeList<PropDefinition>((PropDefinition)val_peek(0));
3446 SetErrCtx(AstNode(yyval), AstNodePos(val_peek(0)), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo);
3447 }
3448 break;
3449 case 210:
3450 //#line 1401 "CqlGrammar.y"
3451 {
3452 yyval = ToNodeList<PropDefinition>(val_peek(2)).Add((PropDefinition)val_peek(0));
3453 SetErrCtx(AstNode(yyval), AstNodePos(yyval), AstNode(val_peek(0)).ErrCtx.ErrorContextInfo);
3454 }
3455 break;
3456 case 211:
3457 //#line 1408 "CqlGrammar.y"
3458 {
3459 yyval = new PropDefinition((Identifier)val_peek(1), (Node)val_peek(0));
3460 SetErrCtx(AstNode(yyval), AstNodePos(val_peek(1)), EntityRes.CtxRowTypeDefinition);
3461 }
3462 break;
3463
3464 //########## END OF USER-SUPPLIED ACTIONS ##########
3465 }
3466 #if YYDEBUG
3467 debug("reduce");
3468 #endif
3469 state_drop( yym );
3470 yystate = state_peek(0);
3471 val_drop( yym );
3472 yym = yylhs[yyn];
3473 if (yystate == 0 && yym == 0)
3474 {
3475 #if YYDEBUG
3476 debug("After reduction, shifting from state 0 to state "+YYFINAL+"");
3477 #endif
3478 yystate = YYFINAL;
3479 state_push( YYFINAL );
3480 val_push( yyval );
3481 if (yychar < 0)
3482 {
3483 yychar = yylex();
3484 if (yychar < 0) yychar = 0;
3485 #if YYDEBUG
3486 if (yydebug)
3487 yylexdebug(yystate,yychar);
3488 #endif
3489 }
3490 if (yychar == 0) goto yyaccept;
3491 goto yyloop;
3492 }
3493 yyn = yygindex[yym];
3494 if ((yyn!=0) && (yyn += yystate) >= 0 &&
3495 yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
3496 yystate = yytable[yyn];
3497 else
3498 yystate = yydgoto[yym];
3499 if (stateptr < 0)
3500 {
3501 goto yyoverflow;
3502 }
3503 #if YYDEBUG
3504 debug("after reduction, shifting from state "+state_peek(0)+" to state "+yystate+"");
3505 #endif
3506 state_push(yystate);
3507 val_push( yyval );
3508 goto yyloop;
3509 yyoverflow:
3510 yyerror("yacc stack overflow");
3511 yyabort:
3512 return (1);
3513 yyaccept:
3514 return (0);
3515 }
3516
3517 //## end of method parse() ######################################
3518
3519
3520
3521 }
3522 //################### END OF CLASS ######################
3523 }
3524 //################### END OF NAMESPACE ######################
3525