1 /* A lexical scanner generated by flex */
3 /* Scanner skeleton version:
4 * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $
8 #define YY_FLEX_MAJOR_VERSION 2
9 #define YY_FLEX_MINOR_VERSION 5
14 /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
29 /* Use prototypes in function declarations. */
32 /* The "const" storage-class-modifier is valid. */
35 #else /* ! __cplusplus */
43 #endif /* ! __cplusplus */
62 #define YY_PROTO(proto) proto
64 #define YY_PROTO(proto) ()
68 /* Returned upon end-of-file. */
71 /* Promotes a possibly negative, possibly signed char to an unsigned
72 * integer for use as an array index. If the signed char is negative,
73 * we want to instead treat it as an 8-bit unsigned char, hence the
76 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
78 /* Enter a start condition. This macro really ought to take a parameter,
79 * but we do it the disgusting crufty way forced on us by the ()-less
80 * definition of BEGIN.
82 #define BEGIN yy_start = 1 + 2 *
84 /* Translate the current start state into a value that can be later handed
85 * to BEGIN to return to the state. The YYSTATE alias is for lex
88 #define YY_START ((yy_start - 1) / 2)
89 #define YYSTATE YY_START
91 /* Action number for EOF rule of a given start state. */
92 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
94 /* Special action meaning "start processing a new file". */
95 #define YY_NEW_FILE yyrestart( yyin )
97 #define YY_END_OF_BUFFER_CHAR 0
99 /* Size of default input buffer. */
100 #define YY_BUF_SIZE 16384
102 typedef struct yy_buffer_state *YY_BUFFER_STATE;
105 extern FILE *yyin, *yyout;
107 #define EOB_ACT_CONTINUE_SCAN 0
108 #define EOB_ACT_END_OF_FILE 1
109 #define EOB_ACT_LAST_MATCH 2
111 /* The funky do-while in the following #define is used to turn the definition
112 * int a single C statement (which needs a semi-colon terminator). This
113 * avoids problems with code like:
115 * if ( condition_holds )
118 * do_something_else();
120 * Prior to using the do-while the compiler would get upset at the
121 * "else" because it interpreted the "if" statement as being all
122 * done when it reached the ';' after the yyless() call.
125 /* Return all but the first 'n' matched characters back to the input stream. */
130 /* Undo effects of setting up yytext. */ \
131 *yy_cp = yy_hold_char; \
132 YY_RESTORE_YY_MORE_OFFSET \
133 yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
134 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
138 #define unput(c) yyunput( c, yytext_ptr )
140 /* The following is because we cannot portably get our hands on size_t
141 * (without autoconf's help, which isn't available because we want
142 * flex-generated scanners to compile on their own).
144 typedef unsigned int yy_size_t;
147 struct yy_buffer_state
151 char *yy_ch_buf; /* input buffer */
152 char *yy_buf_pos; /* current position in input buffer */
154 /* Size of input buffer in bytes, not including room for EOB
157 yy_size_t yy_buf_size;
159 /* Number of characters read into yy_ch_buf, not including EOB
164 /* Whether we "own" the buffer - i.e., we know we created it,
165 * and can realloc() it to grow it, and should free() it to
168 int yy_is_our_buffer;
170 /* Whether this is an "interactive" input source; if so, and
171 * if we're using stdio for input, then we want to use getc()
172 * instead of fread(), to make sure we stop fetching input after
175 int yy_is_interactive;
177 /* Whether we're considered to be at the beginning of a line.
178 * If so, '^' rules will be active on the next match, otherwise
183 /* Whether to try to fill the input buffer when we reach the
188 int yy_buffer_status;
189 #define YY_BUFFER_NEW 0
190 #define YY_BUFFER_NORMAL 1
191 /* When an EOF's been seen but there's still some text to process
192 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
193 * shouldn't try reading from the input source any more. We might
194 * still have a bunch of tokens to match, though, because of
195 * possible backing-up.
197 * When we actually see the EOF, we change the status to "new"
198 * (via yyrestart()), so that the user can continue scanning by
199 * just pointing yyin at a new input file.
201 #define YY_BUFFER_EOF_PENDING 2
204 static YY_BUFFER_STATE yy_current_buffer = 0;
206 /* We provide macros for accessing buffer states in case in the
207 * future we want to put the buffer states in a more general
210 #define YY_CURRENT_BUFFER yy_current_buffer
213 /* yy_hold_char holds the character lost when yytext is formed. */
214 static char yy_hold_char;
216 static int yy_n_chars; /* number of characters read into yy_ch_buf */
221 /* Points to current character in buffer. */
222 static char *yy_c_buf_p = (char *) 0;
223 static int yy_init = 1; /* whether we need to initialize */
224 static int yy_start = 0; /* start state number */
226 /* Flag which is used to allow yywrap()'s to do buffer switches
227 * instead of setting up a fresh yyin. A bit of a hack ...
229 static int yy_did_buffer_switch_on_eof;
231 void yyrestart YY_PROTO(( FILE *input_file ));
233 void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
234 void yy_load_buffer_state YY_PROTO(( void ));
235 YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
236 void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
237 void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
238 void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
239 #define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
241 YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
242 YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
243 YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
245 static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
246 static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
247 static void yy_flex_free YY_PROTO(( void * ));
249 #define yy_new_buffer yy_create_buffer
251 #define yy_set_interactive(is_interactive) \
253 if ( ! yy_current_buffer ) \
254 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
255 yy_current_buffer->yy_is_interactive = is_interactive; \
258 #define yy_set_bol(at_bol) \
260 if ( ! yy_current_buffer ) \
261 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
262 yy_current_buffer->yy_at_bol = at_bol; \
265 #define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
268 #define YY_USES_REJECT
269 typedef unsigned char YY_CHAR;
270 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
271 typedef int yy_state_type;
273 #define yytext_ptr yytext
275 static yy_state_type yy_get_previous_state YY_PROTO(( void ));
276 static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
277 static int yy_get_next_buffer YY_PROTO(( void ));
278 static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
280 /* Done after the current pattern has been matched and before the
281 * corresponding action - sets up yytext.
283 #define YY_DO_BEFORE_ACTION \
284 yytext_ptr = yy_bp; \
285 yyleng = (int) (yy_cp - yy_bp); \
286 yy_hold_char = *yy_cp; \
290 #define YY_NUM_RULES 42
291 #define YY_END_OF_BUFFER 43
292 static yyconst short int yy_acclist[650] =
294 43, 41, 42, 41, 42, 41, 42, 40, 41, 42,
295 41, 42, 25, 41, 42, 41, 42, 40, 41, 42,
296 40, 41, 42,16410, 40, 41, 42,16410, 41, 42,
297 40, 41, 42, 40, 41, 42, 40, 41, 42, 40,
298 41, 42, 40, 41, 42, 40, 41, 42, 40, 41,
299 42, 40, 41, 42, 40, 41, 42, 40, 41, 42,
300 40, 41, 42, 41, 42, 40, 41, 42, 40, 41,
301 42, 40, 41, 42, 40, 41, 42, 40, 41, 42,
302 40, 41, 42, 40, 41, 42, 40, 41, 42, 40,
303 41, 42, 40, 41, 42, 40, 41, 42, 40, 41,
305 42, 40, 41, 42, 40, 41, 42, 40, 41, 42,
306 40, 41, 42, 40, 41, 42, 41, 42, 41, 42,
307 40, 41, 42, 40, 41, 42, 40, 41, 42,16410,
308 40, 41, 42,16410, 41, 42, 40, 41, 42, 40,
309 41, 42, 40, 41, 42, 40, 41, 42, 40, 41,
310 42, 40, 41, 42, 40, 41, 42, 40, 41, 42,
311 40, 41, 42, 40, 41, 42, 40, 41, 42, 40,
312 41, 42, 40, 41, 42, 40, 41, 42, 40, 41,
313 42, 40, 41, 42, 40, 41, 42, 40, 41, 42,
314 40, 41, 42, 40, 41, 42, 40, 41, 42, 40,
316 41, 42, 40, 41, 42, 40, 41, 42, 40, 41,
317 42, 40, 41, 42, 40, 41, 42, 40, 41, 42,
318 41, 42, 33, 40, 17, 40, 9, 40, 40, 40,
319 16410, 8218, 40, 35, 40, 40, 40, 40, 40, 40,
320 40, 40, 40, 40, 40, 9, 40, 40, 40, 40,
321 40, 40, 36, 40, 3, 40, 40, 4, 40, 40,
322 40, 40, 40, 40, 9, 40, 40, 40, 34, 40,
323 40, 9, 40, 40, 40,16410, 8218, 40, 40, 40,
324 40, 40, 40, 40, 40, 40, 40, 40, 40, 9,
325 40, 40, 40, 40, 40, 40, 40, 3, 40, 40,
327 4, 40, 40, 40, 40, 40, 40, 9, 40, 40,
328 40, 15, 9, 40, 23, 40, 23, 8, 40, 8218,
329 22, 40, 22, 24, 40, 40, 40, 6, 40, 40,
330 40, 40, 40, 40, 40, 9, 40, 40, 40, 40,
331 20, 40, 4, 40, 40, 3, 3, 40, 3, 40,
332 40, 4, 5, 40, 4, 4, 40, 40, 40, 40,
333 9, 40, 40, 34, 39, 9, 40, 23, 40, 8,
334 40, 22, 40, 35, 40, 40, 40, 6, 40, 40,
335 40, 40, 40, 40, 40, 9, 40, 40, 40, 40,
336 20, 40, 4, 40, 40, 3, 40, 3, 40, 40,
338 5, 40, 4, 40, 40, 40, 40, 9, 40, 40,
339 38, 38, 37, 25, 25, 6, 40, 10, 6, 40,
340 7, 40, 6, 40, 6, 40, 40, 40, 19, 40,
341 40, 21, 40, 16, 40, 40, 40, 40, 40, 20,
342 20, 40, 20, 40, 36, 3, 3, 2, 40, 5,
343 4, 5, 5, 40, 40, 4, 4, 40, 40, 25,
344 39, 40, 6, 40, 7, 40, 40, 40, 40, 40,
345 19, 40, 40, 21, 40, 16, 40, 40, 40, 40,
346 40, 20, 40, 20, 20, 40, 2, 40, 5, 40,
347 40, 4, 40, 40, 7, 7, 1, 40, 40, 40,
349 19, 40, 40, 40, 21, 21, 40, 21, 40, 40,
350 40, 40, 30, 36, 2, 2, 2, 40, 5, 5,
351 5, 40, 39, 1, 40, 40, 40, 19, 40, 40,
352 40, 21, 40, 21, 21, 40, 40, 40, 40, 20,
353 39, 2, 40, 5, 40, 27, 38, 1, 23, 23,
354 22, 22, 24, 24, 1, 1, 40, 20, 21, 40,
355 40, 40, 11, 40, 40, 28, 36, 30, 2, 2,
356 27, 34, 39, 39, 1, 40, 40, 40, 40, 21,
357 39, 11, 40, 40, 20, 39, 18, 1, 24, 1,
358 20, 21, 19, 40, 40, 40, 11, 40, 40, 40,
360 40, 21, 39, 40, 11, 40, 40, 12, 40, 40,
361 40, 40, 12, 40, 40, 14, 40, 40, 40, 14,
362 40, 40, 40, 39, 40, 40, 40, 40, 39, 39,
363 40, 40, 31, 40, 39, 39, 31, 40, 13, 31,
364 32, 32, 35, 39, 39, 31, 39, 34, 29
367 static yyconst short int yy_accept[698] =
369 1, 1, 1, 2, 4, 6, 8, 11, 13, 16,
370 18, 21, 25, 29, 31, 34, 37, 40, 43, 46,
371 49, 52, 55, 58, 61, 64, 66, 69, 72, 75,
372 78, 81, 84, 87, 90, 93, 96, 99, 102, 105,
373 108, 111, 114, 117, 119, 121, 124, 127, 131, 135,
374 137, 140, 143, 146, 149, 152, 155, 158, 161, 164,
375 167, 170, 173, 176, 179, 182, 185, 188, 191, 194,
376 197, 200, 203, 206, 209, 212, 215, 218, 221, 223,
377 223, 224, 225, 225, 225, 225, 225, 226, 226, 226,
378 226, 227, 227, 229, 229, 229, 229, 230, 230, 230,
380 232, 232, 234, 234, 235, 235, 236, 236, 237, 237,
381 238, 238, 239, 240, 241, 242, 243, 244, 245, 246,
382 248, 249, 250, 251, 252, 253, 253, 253, 253, 253,
383 254, 255, 257, 257, 258, 260, 261, 262, 263, 264,
384 265, 267, 268, 269, 269, 269, 269, 270, 270, 271,
385 271, 272, 274, 274, 275, 277, 277, 279, 279, 280,
386 281, 281, 282, 283, 284, 285, 286, 287, 288, 289,
387 290, 292, 293, 294, 295, 296, 297, 298, 300, 300,
388 301, 303, 304, 305, 306, 307, 308, 310, 311, 312,
389 312, 312, 312, 312, 312, 312, 312, 312, 312, 312,
391 312, 313, 313, 313, 313, 313, 313, 315, 317, 318,
392 320, 321, 321, 321, 321, 323, 324, 325, 325, 326,
393 326, 327, 327, 328, 328, 330, 330, 330, 330, 330,
394 331, 332, 333, 334, 335, 336, 338, 339, 340, 341,
395 343, 343, 343, 343, 343, 345, 345, 346, 346, 347,
396 349, 351, 352, 353, 353, 355, 356, 358, 359, 360,
397 361, 363, 364, 365, 365, 365, 365, 365, 366, 368,
398 370, 372, 374, 374, 375, 375, 376, 377, 377, 378,
399 380, 381, 382, 383, 384, 385, 386, 388, 389, 390,
400 391, 393, 395, 396, 396, 398, 400, 401, 403, 405,
402 406, 407, 408, 410, 411, 411, 411, 412, 413, 413,
403 413, 414, 414, 414, 415, 415, 416, 416, 417, 417,
404 417, 417, 418, 418, 418, 418, 418, 418, 418, 418,
405 419, 421, 421, 423, 424, 425, 425, 426, 427, 427,
406 427, 427, 427, 428, 429, 431, 431, 432, 434, 436,
407 437, 438, 439, 440, 441, 443, 445, 445, 445, 445,
408 445, 446, 447, 447, 448, 450, 451, 452, 452, 452,
409 453, 455, 456, 457, 457, 459, 460, 460, 461, 461,
410 461, 461, 461, 462, 462, 463, 463, 463, 465, 467,
411 468, 468, 469, 470, 471, 473, 474, 476, 478, 479,
413 480, 481, 482, 484, 485, 487, 489, 491, 492, 494,
414 495, 495, 495, 495, 495, 496, 496, 496, 496, 496,
415 496, 496, 496, 496, 496, 497, 499, 499, 499, 499,
416 499, 500, 501, 501, 503, 503, 504, 505, 506, 508,
417 510, 511, 512, 513, 513, 513, 515, 515, 515, 516,
418 516, 517, 519, 520, 520, 521, 521, 523, 523, 523,
419 523, 523, 523, 523, 523, 524, 524, 524, 526, 527,
420 528, 530, 531, 532, 534, 535, 537, 538, 539, 540,
421 542, 544, 546, 546, 546, 548, 548, 549, 549, 550,
422 550, 551, 551, 552, 552, 553, 553, 554, 554, 555,
424 555, 555, 555, 556, 558, 558, 558, 560, 560, 561,
425 561, 561, 561, 561, 561, 562, 563, 565, 566, 568,
426 568, 569, 570, 571, 571, 571, 573, 573, 573, 574,
427 575, 575, 575, 577, 578, 579, 580, 582, 584, 585,
428 587, 587, 588, 588, 588, 589, 589, 590, 591, 591,
429 591, 591, 593, 593, 593, 594, 594, 594, 594, 594,
430 595, 596, 597, 599, 600, 600, 600, 600, 600, 600,
431 601, 602, 604, 605, 607, 608, 608, 608, 608, 608,
432 608, 608, 609, 609, 609, 609, 609, 610, 611, 611,
433 611, 611, 611, 612, 613, 613, 613, 613, 613, 614,
435 614, 614, 614, 615, 616, 618, 618, 618, 618, 618,
436 619, 619, 620, 622, 622, 622, 622, 622, 623, 624,
437 624, 624, 624, 624, 625, 626, 627, 627, 627, 627,
438 627, 627, 628, 629, 629, 629, 629, 629, 630, 631,
439 632, 633, 633, 633, 633, 633, 633, 635, 635, 635,
440 635, 635, 636, 637, 639, 639, 639, 640, 640, 641,
441 641, 642, 642, 642, 644, 644, 645, 646, 646, 646,
442 646, 646, 648, 648, 648, 648, 648, 648, 648, 648,
443 648, 648, 648, 648, 648, 648, 648, 648, 648, 648,
444 648, 648, 648, 648, 649, 650, 650
448 static yyconst int yy_ec[256] =
450 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
451 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
452 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
453 1, 4, 1, 5, 6, 7, 8, 1, 9, 10,
454 11, 12, 13, 1, 14, 15, 16, 17, 18, 19,
455 20, 20, 20, 20, 20, 20, 20, 21, 22, 1,
456 23, 1, 1, 24, 25, 26, 27, 28, 29, 30,
457 31, 32, 33, 33, 34, 35, 36, 37, 38, 34,
458 34, 39, 40, 33, 41, 33, 42, 43, 33, 33,
459 44, 1, 45, 1, 46, 1, 47, 48, 49, 50,
461 51, 52, 53, 54, 55, 56, 57, 58, 59, 60,
462 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
463 71, 68, 72, 1, 73, 1, 1, 1, 1, 1,
464 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
465 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
466 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
467 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
468 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
469 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
470 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
472 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
473 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
474 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
475 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
476 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
480 static yyconst int yy_meta[74] =
482 1, 2, 3, 2, 1, 1, 1, 1, 4, 5,
483 6, 1, 7, 8, 1, 1, 9, 9, 9, 9,
484 10, 1, 11, 1, 12, 12, 12, 12, 12, 12,
485 12, 12, 13, 12, 13, 13, 12, 12, 12, 13,
486 13, 12, 14, 1, 1, 1, 15, 15, 15, 15,
487 16, 15, 15, 15, 15, 15, 15, 15, 17, 18,
488 18, 18, 18, 18, 17, 17, 17, 17, 17, 19,
492 static yyconst short int yy_base[784] =
494 0, 73, 2729, 4517, 122, 131, 0, 142, 2724, 140,
495 151, 171, 162, 2724, 231, 159, 2672, 2661, 119, 2660,
496 2673, 143, 2668, 2652, 211, 301, 361, 212, 209, 279,
497 243, 284, 301, 286, 221, 303, 309, 329, 2670, 239,
498 2665, 2649, 338, 403, 2710, 149, 380, 475, 348, 190,
499 538, 240, 2659, 2648, 236, 2650, 2663, 157, 2658, 2642,
500 379, 600, 314, 353, 377, 395, 401, 413, 382, 408,
501 513, 424, 516, 423, 562, 448, 544, 607, 612, 2654,
502 468, 0, 2696, 309, 617, 174, 4517, 2692, 672, 246,
503 353, 2686, 2686, 2680, 517, 661, 2680, 576, 280, 655,
505 2679, 0, 2692, 4517, 0, 696, 0, 741, 0, 580,
506 644, 586, 622, 2645, 2640, 2592, 2592, 692, 2617, 2616,
507 714, 2606, 680, 720, 2592, 2606, 811, 537, 884, 4517,
508 911, 961, 0, 986, 1035, 687, 753, 757, 2584, 2588,
509 2587, 2582, 2591, 318, 2568, 825, 2636, 2635, 430, 2634,
510 747, 820, 253, 830, 1085, 160, 563, 455, 1148, 1193,
511 2633, 784, 843, 850, 760, 603, 692, 844, 854, 2596,
512 657, 858, 893, 862, 893, 658, 1217, 1267, 2629, 1292,
513 1342, 913, 926, 1157, 831, 894, 915, 918, 895, 845,
514 2568, 464, 487, 538, 2620, 556, 1162, 1073, 2619, 2556,
516 4517, 1146, 1209, 2624, 2623, 2622, 2611, 2620, 2619, 0,
517 4517, 2618, 2616, 2615, 2614, 2613, 384, 1029, 1062, 1078,
518 1367, 1147, 1145, 1167, 1412, 2558, 2551, 2564, 2559, 1240,
519 1422, 2540, 756, 651, 2557, 2593, 2551, 2547, 1214, 1482,
520 722, 1208, 761, 1555, 1619, 0, 1624, 0, 2594, 2592,
521 2591, 1174, 1426, 1490, 1673, 2591, 2589, 560, 2550, 2549,
522 2583, 2530, 4517, 1499, 1039, 2591, 725, 2587, 928, 845,
523 592, 917, 642, 2585, 1156, 1503, 1716, 2584, 1516, 1761,
524 1531, 1564, 1470, 1565, 1464, 1429, 1580, 1490, 1566, 1598,
525 1831, 1896, 1901, 2583, 1582, 2573, 1613, 1950, 1587, 1676,
527 1588, 1614, 1581, 1149, 1539, 2528, 4517, 775, 799, 2562,
528 4517, 1709, 2557, 2556, 2493, 2492, 1202, 1709, 2546, 2545,
529 2544, 2544, 615, 2543, 744, 2542, 1099, 1674, 832, 4517,
530 2535, 1719, 2534, 2533, 1955, 1622, 4517, 1410, 2490, 2490,
531 2487, 2487, 2494, 2493, 778, 892, 920, 2013, 0, 2511,
532 2495, 2496, 2495, 0, 2086, 2159, 940, 1210, 1233, 1309,
533 2540, 2533, 1434, 4517, 1776, 1424, 2529, 910, 1615, 1616,
534 2528, 1173, 4517, 2476, 0, 2476, 1842, 2532, 1727, 1735,
535 2488, 2473, 2530, 1003, 1736, 904, 599, 1216, 1523, 2186,
536 2528, 1847, 1726, 1767, 1880, 1771, 2244, 1522, 1813, 1849,
538 1848, 1862, 2317, 2527, 2390, 2029, 1869, 1879, 1713, 2021,
539 1747, 2479, 2517, 1595, 2500, 1809, 2511, 2443, 2504, 2441,
540 2500, 2433, 2460, 1869, 4517, 2454, 2427, 2423, 2423, 2418,
541 2468, 1049, 2006, 2467, 1075, 2440, 2410, 0, 2497, 2570,
542 2400, 2394, 2448, 1341, 1756, 4517, 2446, 1803, 1343, 1491,
543 1768, 2439, 2438, 1416, 4517, 2386, 0, 2425, 1871, 2421,
544 1240, 2416, 2373, 2366, 1454, 1718, 1473, 2635, 1888, 2044,
545 1889, 2042, 2023, 2678, 2425, 1990, 1886, 2052, 2063, 2425,
546 1870, 1899, 1958, 1000, 4517, 2095, 1777, 2416, 2415, 2351,
547 2350, 2411, 2410, 2347, 2346, 2407, 2406, 2343, 2342, 2393,
549 2388, 1840, 2017, 2382, 2320, 2326, 2011, 2298, 2303, 2338,
550 2296, 2275, 2316, 2293, 2302, 2270, 2018, 2264, 4517, 2117,
551 4517, 2296, 4517, 2290, 2119, 2300, 2251, 2231, 2282, 1960,
552 1445, 289, 2107, 2108, 2114, 2068, 2281, 2125, 2131, 2280,
553 2139, 4517, 2227, 2176, 2262, 2267, 2258, 4517, 2187, 2173,
554 2177, 4517, 2166, 2214, 2211, 2157, 2198, 2148, 2103, 2111,
555 2085, 2098, 0, 2077, 2196, 2071, 2002, 827, 1575, 2168,
556 2135, 2063, 2170, 2136, 2164, 2203, 2000, 2014, 1683, 1939,
557 1931, 2030, 1944, 1630, 1954, 1906, 2751, 1919, 1917, 1913,
558 1385, 1565, 2824, 2249, 2204, 1850, 1863, 1832, 4517, 1806,
560 1637, 1912, 2897, 1920, 0, 1775, 1762, 1585, 945, 2970,
561 2096, 1949, 2188, 2207, 1772, 1743, 2250, 1745, 1677, 1563,
562 1551, 1686, 681, 2260, 1568, 1502, 2258, 1408, 1406, 2243,
563 2170, 1358, 1313, 1240, 1258, 1751, 1127, 2261, 2312, 1072,
564 926, 2279, 2133, 809, 1969, 2073, 0, 855, 705, 711,
565 1429, 2317, 2305, 0, 2284, 631, 4517, 546, 2094, 480,
566 4517, 413, 392, 4517, 1794, 2351, 2357, 2298, 325, 206,
567 1884, 2303, 2352, 203, 1915, 365, 2138, 2221, 2364, 2365,
568 2369, 2370, 2371, 2372, 2373, 2427, 2444, 2451, 2452, 2453,
569 2454, 2456, 2296, 179, 4517, 4517, 3040, 3059, 3072, 3086,
571 3105, 3124, 3140, 3159, 3178, 3196, 1267, 1342, 1671, 3214,
572 3233, 1702, 3252, 3271, 3290, 3309, 3328, 3347, 3366, 3385,
573 3404, 3416, 3435, 3454, 3473, 3492, 3511, 3519, 1896, 3529,
574 3545, 3564, 3580, 3599, 3618, 3637, 3656, 3675, 3694, 3713,
575 3732, 3744, 3763, 3782, 3801, 3820, 3839, 3858, 3877, 3893,
576 3908, 3924, 3943, 3962, 3981, 3997, 4016, 4035, 4054, 4073,
577 4092, 4111, 4130, 4149, 4168, 4187, 4206, 4225, 4244, 4259,
578 4278, 4297, 4316, 4331, 4345, 4364, 4383, 4402, 4421, 4440,
582 static yyconst short int yy_def[784] =
584 696, 696, 696, 696, 696, 696, 697, 698, 696, 699,
585 697, 696, 12, 700, 697, 15, 15, 15, 15, 15,
586 15, 15, 15, 15, 15, 701, 697, 27, 27, 27,
587 27, 27, 27, 27, 27, 27, 27, 27, 697, 697,
588 697, 697, 697, 702, 696, 703, 703, 696, 48, 700,
589 703, 51, 51, 51, 51, 51, 51, 51, 51, 51,
590 51, 703, 62, 62, 62, 62, 62, 62, 62, 62,
591 62, 62, 62, 703, 703, 703, 703, 703, 702, 696,
592 696, 697, 704, 705, 704, 696, 696, 696, 696, 696,
593 697, 696, 697, 696, 706, 706, 697, 706, 696, 12,
595 696, 697, 700, 696, 707, 697, 708, 697, 709, 108,
596 696, 108, 108, 697, 697, 697, 697, 108, 106, 697,
597 108, 697, 108, 108, 697, 710, 701, 710, 711, 696,
598 697, 696, 712, 697, 697, 697, 697, 697, 697, 697,
599 697, 697, 697, 702, 713, 702, 696, 714, 703, 696,
600 703, 703, 696, 703, 696, 696, 703, 715, 703, 159,
601 709, 160, 160, 160, 703, 703, 703, 703, 160, 159,
602 703, 160, 703, 160, 160, 703, 159, 696, 712, 159,
603 696, 703, 703, 703, 703, 703, 703, 703, 703, 702,
604 696, 716, 717, 717, 718, 719, 716, 716, 720, 721,
606 696, 722, 722, 696, 696, 696, 697, 697, 696, 697,
607 696, 696, 696, 696, 697, 696, 696, 696, 697, 696,
608 697, 722, 697, 696, 697, 696, 696, 696, 696, 697,
609 697, 697, 697, 697, 697, 697, 697, 697, 697, 723,
610 724, 725, 726, 727, 697, 728, 697, 729, 728, 697,
611 247, 697, 730, 730, 697, 254, 697, 697, 697, 697,
612 697, 697, 696, 702, 696, 731, 696, 732, 733, 733,
613 733, 733, 734, 731, 735, 733, 733, 222, 733, 277,
614 733, 733, 733, 733, 733, 733, 733, 733, 733, 733,
615 736, 733, 277, 729, 733, 293, 733, 292, 733, 733,
617 733, 733, 733, 733, 702, 696, 696, 737, 737, 738,
618 696, 739, 740, 740, 741, 741, 696, 742, 696, 696,
619 696, 697, 696, 696, 696, 696, 696, 696, 696, 696,
620 697, 742, 697, 696, 697, 332, 696, 697, 696, 696,
621 696, 696, 697, 697, 697, 696, 697, 743, 697, 697,
622 697, 697, 697, 744, 745, 745, 746, 746, 747, 748,
623 749, 696, 696, 696, 750, 751, 696, 696, 751, 751,
624 697, 697, 696, 696, 697, 697, 702, 696, 696, 696,
625 696, 696, 752, 696, 733, 753, 753, 733, 733, 293,
626 336, 733, 733, 733, 733, 733, 754, 733, 733, 733,
628 733, 733, 755, 744, 755, 756, 733, 733, 733, 733,
629 702, 696, 757, 758, 696, 696, 759, 760, 761, 762,
630 763, 764, 696, 696, 696, 697, 696, 696, 696, 696,
631 697, 697, 696, 697, 696, 697, 697, 765, 766, 766,
632 697, 697, 697, 767, 768, 696, 769, 696, 770, 770,
633 770, 697, 696, 696, 696, 696, 697, 696, 702, 696,
634 696, 696, 696, 696, 771, 772, 772, 733, 733, 733,
635 733, 733, 733, 754, 765, 474, 733, 733, 733, 773,
636 733, 733, 702, 696, 696, 758, 774, 759, 759, 760,
637 760, 761, 761, 762, 762, 763, 763, 764, 764, 696,
639 696, 774, 774, 697, 696, 696, 696, 696, 697, 775,
640 696, 696, 696, 696, 697, 697, 697, 697, 696, 696,
641 696, 696, 696, 696, 702, 696, 696, 696, 771, 771,
642 772, 772, 733, 733, 733, 733, 776, 733, 733, 773,
643 702, 696, 696, 758, 696, 696, 696, 696, 696, 696,
644 696, 696, 696, 775, 775, 696, 696, 696, 696, 697,
645 697, 697, 697, 697, 702, 696, 696, 772, 772, 733,
646 733, 776, 733, 733, 733, 702, 696, 696, 696, 696,
647 696, 696, 696, 696, 696, 696, 777, 697, 696, 696,
648 772, 772, 778, 733, 702, 696, 696, 696, 696, 696,
650 779, 779, 777, 603, 697, 696, 696, 772, 772, 778,
651 779, 610, 733, 702, 696, 696, 779, 603, 603, 696,
652 696, 772, 772, 780, 610, 610, 702, 696, 696, 779,
653 779, 603, 603, 696, 696, 772, 772, 780, 780, 610,
654 610, 702, 696, 696, 779, 779, 603, 781, 696, 782,
655 772, 780, 780, 610, 702, 696, 696, 696, 779, 781,
656 696, 696, 782, 696, 772, 780, 780, 702, 696, 696,
657 772, 780, 702, 696, 772, 702, 783, 783, 783, 783,
658 783, 783, 783, 783, 783, 783, 783, 783, 783, 783,
659 783, 783, 783, 696, 696, 0, 696, 696, 696, 696,
661 696, 696, 696, 696, 696, 696, 696, 696, 696, 696,
662 696, 696, 696, 696, 696, 696, 696, 696, 696, 696,
663 696, 696, 696, 696, 696, 696, 696, 696, 696, 696,
664 696, 696, 696, 696, 696, 696, 696, 696, 696, 696,
665 696, 696, 696, 696, 696, 696, 696, 696, 696, 696,
666 696, 696, 696, 696, 696, 696, 696, 696, 696, 696,
667 696, 696, 696, 696, 696, 696, 696, 696, 696, 696,
668 696, 696, 696, 696, 696, 696, 696, 696, 696, 696,
672 static yyconst short int yy_nxt[4591] =
674 4, 4, 4, 5, 4, 4, 6, 4, 7, 8,
675 4, 9, 10, 7, 4, 4, 11, 12, 13, 13,
676 4, 14, 4, 4, 15, 16, 17, 18, 15, 15,
677 19, 15, 15, 15, 20, 21, 15, 22, 23, 24,
678 15, 25, 15, 26, 4, 4, 27, 28, 29, 30,
679 31, 32, 33, 34, 35, 36, 37, 38, 39, 7,
680 40, 7, 7, 41, 42, 7, 7, 7, 43, 7,
681 7, 44, 4, 4, 4, 4, 5, 4, 45, 6,
682 45, 7, 8, 4, 9, 10, 46, 4, 4, 47,
683 48, 49, 49, 4, 50, 4, 4, 51, 52, 53,
685 54, 51, 51, 55, 51, 51, 51, 56, 57, 51,
686 58, 59, 60, 51, 61, 51, 26, 4, 4, 62,
687 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
688 73, 74, 46, 75, 46, 46, 76, 77, 46, 46,
689 46, 78, 46, 46, 79, 4, 80, 81, 81, 81,
690 81, 84, 87, 88, 90, 115, 119, 82, 85, 85,
691 85, 85, 111, 268, 91, 95, 92, 93, 80, 150,
692 170, 94, 95, 95, 96, 82, 216, 696, 116, 82,
693 120, 695, 696, 199, 97, 98, 99, 100, 100, 100,
694 100, 101, 104, 158, 171, 102, 102, 102, 102, 102,
696 102, 102, 102, 82, 102, 82, 82, 102, 102, 102,
697 82, 82, 102, 82, 111, 111, 112, 102, 102, 102,
698 102, 102, 102, 102, 102, 102, 102, 102, 102, 82,
699 102, 102, 102, 102, 102, 82, 82, 82, 82, 82,
700 82, 82, 105, 111, 106, 200, 107, 108, 108, 108,
701 108, 109, 140, 648, 105, 136, 268, 135, 135, 204,
702 135, 205, 138, 674, 123, 124, 206, 136, 136, 137,
703 209, 125, 166, 106, 135, 135, 135, 110, 110, 110,
704 110, 110, 110, 110, 110, 110, 110, 110, 110, 136,
705 136, 104, 135, 135, 135, 167, 216, 163, 217, 141,
707 106, 126, 127, 127, 127, 126, 126, 126, 126, 126,
708 126, 126, 126, 126, 128, 126, 126, 111, 195, 196,
709 145, 126, 126, 126, 126, 136, 136, 135, 135, 135,
710 136, 136, 136, 136, 135, 135, 135, 115, 135, 135,
711 135, 111, 114, 569, 126, 130, 126, 136, 136, 136,
712 136, 95, 135, 135, 135, 136, 136, 135, 135, 135,
713 116, 149, 181, 696, 135, 135, 135, 677, 150, 207,
714 208, 183, 126, 126, 131, 136, 136, 132, 132, 132,
715 132, 133, 111, 90, 542, 135, 135, 328, 82, 117,
716 147, 143, 125, 151, 664, 92, 152, 329, 125, 182,
718 153, 181, 181, 134, 329, 145, 184, 135, 135, 136,
719 136, 136, 136, 136, 136, 136, 136, 136, 136, 146,
720 146, 146, 146, 182, 182, 181, 181, 181, 182, 182,
721 134, 82, 174, 175, 181, 181, 181, 147, 82, 176,
722 165, 182, 182, 150, 181, 181, 181, 182, 182, 166,
723 150, 181, 181, 181, 182, 182, 82, 274, 275, 182,
724 182, 181, 181, 181, 181, 181, 181, 670, 150, 185,
725 182, 182, 167, 193, 307, 147, 95, 95, 96, 181,
726 181, 181, 661, 82, 81, 81, 81, 81, 154, 98,
727 99, 155, 155, 155, 155, 156, 195, 308, 188, 157,
729 157, 157, 157, 157, 157, 157, 157, 149, 157, 149,
730 149, 157, 157, 157, 149, 149, 157, 149, 95, 95,
731 95, 157, 157, 157, 157, 157, 157, 157, 157, 157,
732 157, 157, 157, 149, 157, 157, 157, 157, 157, 149,
733 149, 149, 149, 149, 149, 149, 82, 195, 308, 105,
734 241, 159, 82, 107, 160, 160, 160, 160, 161, 182,
735 182, 105, 182, 182, 150, 310, 311, 181, 181, 181,
736 82, 82, 181, 181, 374, 186, 168, 95, 95, 95,
737 159, 130, 150, 150, 162, 162, 162, 162, 162, 162,
738 162, 162, 162, 162, 162, 162, 225, 225, 225, 225,
740 82, 104, 225, 225, 225, 225, 669, 159, 82, 173,
741 111, 82, 150, 177, 145, 82, 178, 178, 178, 178,
742 179, 375, 187, 150, 417, 190, 193, 150, 146, 146,
743 146, 146, 230, 197, 197, 197, 197, 198, 225, 225,
744 225, 225, 180, 284, 274, 275, 181, 181, 182, 182,
745 182, 182, 182, 182, 182, 182, 182, 182, 95, 467,
746 189, 176, 95, 95, 95, 82, 82, 176, 82, 180,
747 696, 226, 231, 227, 212, 696, 213, 150, 150, 228,
748 657, 214, 229, 104, 147, 109, 418, 107, 202, 202,
749 202, 202, 109, 226, 271, 227, 225, 225, 225, 225,
751 82, 348, 228, 255, 255, 255, 255, 229, 225, 225,
752 225, 225, 150, 664, 109, 348, 348, 291, 203, 203,
753 203, 203, 203, 203, 203, 203, 203, 203, 203, 203,
754 225, 225, 225, 225, 239, 358, 225, 225, 225, 225,
755 637, 109, 219, 219, 219, 219, 219, 219, 219, 219,
756 219, 219, 219, 219, 221, 82, 662, 235, 284, 346,
757 216, 222, 217, 269, 270, 360, 130, 150, 82, 255,
758 255, 255, 255, 255, 255, 255, 255, 381, 237, 240,
759 150, 433, 347, 221, 310, 311, 382, 223, 223, 223,
760 223, 223, 223, 223, 223, 223, 223, 223, 223, 259,
762 280, 280, 280, 280, 347, 361, 283, 260, 310, 311,
763 221, 126, 127, 127, 127, 126, 126, 126, 126, 126,
764 126, 126, 126, 126, 126, 126, 126, 145, 82, 104,
765 591, 126, 126, 126, 126, 423, 271, 434, 82, 82,
766 150, 146, 146, 146, 146, 264, 272, 145, 323, 424,
767 150, 150, 82, 82, 126, 130, 126, 661, 305, 280,
768 280, 280, 280, 658, 150, 150, 280, 280, 280, 280,
769 280, 280, 280, 280, 280, 280, 280, 280, 280, 280,
770 280, 280, 126, 126, 126, 242, 242, 242, 243, 281,
771 126, 126, 126, 126, 126, 126, 286, 147, 126, 126,
773 282, 82, 82, 82, 126, 126, 104, 126, 285, 280,
774 280, 280, 280, 150, 150, 150, 290, 147, 435, 286,
775 327, 82, 288, 82, 374, 82, 82, 126, 130, 298,
776 298, 298, 298, 150, 82, 150, 82, 150, 150, 289,
777 435, 385, 298, 298, 298, 298, 150, 104, 150, 304,
778 466, 436, 291, 358, 303, 126, 126, 245, 245, 245,
779 245, 245, 245, 245, 245, 245, 245, 245, 245, 82,
780 246, 373, 301, 437, 247, 271, 654, 82, 82, 82,
781 82, 248, 288, 249, 130, 250, 250, 250, 250, 250,
782 250, 250, 250, 250, 250, 250, 250, 250, 250, 250,
784 250, 250, 250, 251, 465, 623, 465, 252, 252, 252,
785 252, 252, 252, 252, 252, 252, 252, 252, 252, 82,
786 82, 82, 82, 82, 82, 82, 82, 82, 82, 82,
787 247, 82, 135, 135, 135, 135, 135, 135, 135, 135,
788 135, 135, 135, 135, 254, 330, 330, 330, 330, 542,
789 378, 255, 255, 255, 255, 379, 380, 256, 543, 257,
790 257, 257, 257, 257, 257, 257, 257, 257, 257, 257,
791 257, 257, 257, 257, 257, 257, 257, 257, 331, 331,
792 331, 331, 193, 307, 509, 258, 95, 95, 95, 312,
793 312, 312, 312, 82, 332, 332, 332, 332, 149, 98,
795 654, 155, 155, 155, 155, 150, 513, 509, 419, 157,
796 157, 157, 157, 157, 157, 157, 157, 149, 157, 149,
797 149, 157, 157, 157, 149, 149, 157, 149, 514, 104,
798 651, 157, 157, 157, 157, 157, 157, 157, 157, 157,
799 157, 157, 157, 149, 157, 157, 157, 157, 157, 149,
800 149, 149, 149, 149, 149, 149, 82, 82, 104, 222,
801 696, 333, 333, 333, 333, 82, 222, 696, 150, 150,
802 420, 193, 307, 298, 298, 298, 298, 150, 197, 197,
803 197, 197, 198, 334, 334, 334, 334, 456, 222, 696,
804 365, 365, 365, 365, 276, 276, 276, 276, 276, 276,
806 276, 276, 276, 276, 276, 276, 277, 302, 386, 242,
807 242, 242, 243, 278, 402, 222, 696, 387, 415, 415,
808 415, 415, 222, 444, 82, 318, 318, 318, 318, 222,
809 333, 333, 333, 333, 457, 277, 150, 360, 337, 279,
810 279, 279, 279, 279, 279, 279, 279, 279, 279, 279,
811 279, 222, 130, 212, 130, 213, 333, 333, 333, 333,
812 214, 649, 277, 292, 292, 292, 292, 292, 292, 292,
813 292, 292, 292, 292, 292, 82, 246, 361, 222, 353,
814 293, 218, 218, 149, 149, 149, 149, 294, 343, 249,
815 648, 295, 295, 295, 295, 295, 295, 295, 295, 295,
817 295, 295, 295, 295, 295, 295, 295, 295, 295, 296,
818 445, 445, 445, 297, 297, 297, 297, 297, 297, 297,
819 297, 297, 297, 297, 297, 149, 149, 149, 149, 149,
820 149, 149, 149, 149, 149, 149, 293, 149, 181, 181,
821 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
822 82, 254, 450, 446, 444, 149, 220, 220, 298, 298,
823 298, 298, 150, 647, 256, 451, 299, 299, 299, 299,
824 299, 299, 299, 299, 299, 299, 299, 299, 299, 299,
825 299, 299, 299, 299, 299, 519, 647, 104, 149, 149,
826 149, 149, 300, 149, 149, 149, 149, 149, 149, 149,
828 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
829 149, 149, 149, 223, 223, 223, 223, 223, 223, 223,
830 223, 223, 223, 223, 223, 335, 426, 426, 426, 426,
831 456, 104, 336, 369, 337, 254, 608, 82, 333, 333,
832 333, 333, 366, 366, 366, 366, 370, 104, 256, 150,
833 449, 449, 449, 449, 335, 530, 384, 530, 338, 338,
834 338, 338, 338, 338, 338, 338, 338, 338, 338, 338,
835 344, 644, 82, 643, 454, 104, 368, 455, 82, 398,
836 665, 335, 354, 354, 150, 354, 354, 354, 354, 354,
837 150, 354, 354, 354, 354, 568, 354, 354, 82, 696,
839 696, 145, 354, 354, 354, 354, 696, 696, 696, 696,
840 150, 82, 696, 696, 397, 377, 377, 377, 377, 388,
841 388, 388, 388, 150, 82, 354, 354, 354, 397, 397,
842 82, 82, 389, 389, 389, 389, 150, 532, 395, 82,
843 696, 145, 150, 150, 400, 425, 356, 389, 389, 389,
844 389, 150, 411, 354, 354, 126, 242, 242, 242, 243,
845 641, 126, 126, 126, 126, 126, 126, 104, 346, 126,
846 126, 147, 82, 82, 82, 126, 126, 104, 126, 393,
847 389, 389, 389, 389, 150, 150, 150, 104, 82, 82,
848 82, 396, 364, 399, 410, 82, 82, 373, 126, 130,
850 150, 150, 150, 640, 193, 485, 82, 150, 150, 486,
851 635, 147, 394, 396, 389, 389, 389, 389, 150, 609,
852 634, 82, 82, 401, 696, 369, 126, 126, 254, 406,
853 406, 406, 406, 150, 150, 696, 393, 696, 696, 622,
854 592, 256, 696, 257, 257, 257, 257, 257, 257, 257,
855 257, 257, 257, 257, 257, 257, 257, 257, 257, 257,
856 257, 257, 394, 402, 696, 696, 696, 617, 511, 258,
857 252, 252, 252, 252, 252, 252, 252, 252, 252, 252,
858 252, 252, 369, 421, 82, 224, 224, 329, 104, 617,
859 374, 696, 421, 511, 329, 370, 150, 371, 371, 371,
861 371, 371, 371, 371, 371, 371, 371, 371, 371, 371,
862 371, 371, 371, 371, 371, 371, 253, 253, 193, 307,
863 104, 82, 336, 372, 82, 414, 414, 414, 414, 336,
864 90, 337, 336, 150, 82, 633, 150, 409, 461, 336,
865 460, 696, 92, 636, 82, 422, 150, 94, 462, 145,
866 99, 336, 271, 104, 422, 101, 150, 445, 445, 445,
867 483, 336, 279, 279, 279, 279, 279, 279, 279, 279,
868 279, 279, 279, 279, 390, 82, 531, 450, 336, 82,
869 632, 391, 469, 337, 82, 450, 502, 150, 336, 82,
870 696, 150, 82, 82, 82, 82, 104, 629, 451, 503,
872 446, 650, 472, 390, 520, 520, 520, 392, 392, 392,
873 392, 392, 392, 392, 392, 392, 392, 392, 392, 147,
874 628, 82, 621, 470, 473, 487, 487, 487, 487, 620,
875 390, 354, 354, 150, 354, 354, 354, 354, 354, 355,
876 354, 354, 354, 354, 145, 354, 354, 521, 671, 696,
877 271, 404, 354, 354, 354, 82, 82, 82, 459, 459,
878 459, 459, 696, 468, 468, 468, 468, 150, 150, 150,
879 82, 616, 500, 145, 354, 354, 354, 82, 82, 455,
880 523, 599, 150, 433, 501, 525, 104, 82, 82, 150,
881 150, 111, 433, 456, 82, 405, 82, 82, 478, 150,
883 150, 477, 354, 354, 82, 254, 150, 82, 150, 150,
884 363, 363, 479, 615, 147, 542, 150, 104, 256, 150,
885 299, 299, 299, 299, 299, 299, 299, 299, 299, 299,
886 299, 299, 299, 299, 299, 299, 299, 299, 299, 471,
887 482, 675, 617, 526, 618, 538, 300, 297, 297, 297,
888 297, 297, 297, 297, 297, 297, 297, 297, 297, 369,
889 145, 530, 384, 530, 617, 650, 619, 607, 606, 605,
890 601, 541, 370, 625, 407, 407, 407, 407, 407, 407,
891 407, 407, 407, 407, 407, 407, 407, 407, 407, 407,
892 407, 407, 407, 601, 600, 626, 582, 659, 597, 617,
894 408, 338, 338, 338, 338, 338, 338, 338, 338, 338,
895 338, 338, 338, 438, 438, 510, 438, 438, 438, 438,
896 438, 617, 438, 438, 438, 438, 502, 438, 438, 82,
897 147, 82, 547, 438, 438, 438, 438, 82, 450, 696,
898 476, 150, 149, 150, 511, 149, 149, 149, 149, 150,
899 82, 451, 82, 512, 476, 476, 438, 438, 438, 596,
900 82, 551, 150, 440, 150, 384, 111, 590, 562, 511,
901 535, 82, 150, 536, 589, 552, 82, 440, 440, 534,
902 598, 271, 563, 150, 438, 438, 354, 354, 150, 354,
903 354, 354, 354, 354, 599, 354, 354, 354, 354, 624,
905 354, 354, 534, 617, 193, 307, 354, 354, 354, 354,
906 539, 544, 544, 544, 544, 82, 82, 548, 520, 520,
907 520, 145, 82, 659, 617, 617, 617, 150, 150, 354,
908 354, 354, 571, 82, 150, 565, 565, 565, 565, 82,
909 679, 145, 588, 82, 82, 150, 617, 563, 617, 587,
910 587, 150, 576, 570, 185, 150, 150, 354, 354, 354,
911 354, 521, 354, 354, 354, 354, 354, 586, 354, 354,
912 354, 354, 82, 354, 354, 573, 82, 575, 82, 354,
913 354, 354, 354, 656, 150, 193, 485, 585, 150, 574,
914 150, 147, 544, 544, 544, 544, 82, 657, 145, 593,
916 617, 584, 354, 354, 354, 145, 145, 593, 150, 145,
917 263, 147, 565, 565, 565, 565, 595, 614, 583, 574,
918 627, 555, 617, 679, 555, 582, 552, 581, 646, 594,
919 354, 354, 392, 392, 392, 392, 392, 392, 392, 392,
920 392, 392, 392, 392, 438, 438, 580, 438, 438, 438,
921 438, 438, 439, 438, 438, 438, 438, 82, 438, 438,
922 145, 579, 384, 384, 475, 438, 438, 438, 526, 150,
923 578, 642, 548, 617, 630, 147, 147, 577, 645, 147,
924 617, 145, 384, 384, 384, 567, 145, 438, 438, 438,
925 639, 639, 655, 263, 476, 617, 631, 668, 679, 613,
927 145, 566, 617, 265, 455, 384, 523, 384, 476, 476,
928 564, 673, 639, 639, 384, 438, 438, 354, 354, 384,
929 354, 354, 354, 354, 354, 355, 354, 354, 354, 354,
930 147, 354, 354, 639, 561, 639, 652, 404, 354, 354,
931 354, 560, 639, 559, 558, 557, 556, 639, 555, 139,
932 553, 147, 666, 384, 145, 639, 147, 639, 653, 384,
933 354, 354, 354, 667, 639, 676, 679, 679, 694, 639,
934 147, 679, 679, 679, 679, 679, 550, 680, 681, 672,
935 549, 639, 682, 683, 684, 685, 686, 639, 354, 354,
936 354, 354, 548, 354, 354, 354, 354, 354, 355, 354,
938 354, 354, 354, 639, 354, 354, 547, 672, 546, 639,
939 404, 354, 354, 354, 499, 499, 497, 497, 495, 495,
940 493, 493, 491, 491, 147, 489, 489, 384, 537, 679,
941 528, 527, 216, 354, 354, 354, 263, 263, 209, 373,
942 687, 263, 263, 263, 263, 263, 679, 524, 455, 523,
943 448, 111, 518, 679, 679, 679, 679, 688, 679, 517,
944 516, 354, 354, 502, 689, 690, 691, 692, 515, 693,
945 433, 111, 508, 507, 506, 505, 503, 424, 504, 504,
946 504, 504, 504, 504, 504, 504, 504, 504, 504, 504,
947 504, 504, 504, 504, 504, 504, 504, 438, 438, 263,
949 438, 438, 438, 438, 438, 499, 438, 438, 438, 438,
950 497, 438, 438, 495, 493, 491, 263, 438, 438, 438,
951 438, 489, 425, 263, 263, 263, 263, 196, 263, 484,
952 480, 268, 384, 464, 463, 86, 210, 458, 455, 373,
953 438, 438, 438, 364, 448, 443, 442, 441, 210, 432,
954 431, 430, 429, 428, 427, 337, 425, 337, 216, 216,
955 210, 209, 209, 209, 316, 316, 314, 314, 438, 438,
956 438, 438, 196, 438, 438, 438, 438, 438, 412, 438,
957 438, 438, 438, 364, 438, 438, 268, 268, 267, 384,
958 438, 438, 438, 438, 267, 353, 376, 344, 343, 373,
960 254, 364, 364, 246, 352, 351, 350, 349, 345, 342,
961 341, 340, 339, 438, 438, 438, 327, 327, 326, 325,
962 440, 324, 323, 323, 322, 321, 320, 319, 316, 314,
963 307, 306, 268, 287, 440, 440, 268, 268, 267, 265,
964 263, 438, 438, 82, 502, 262, 237, 210, 261, 235,
965 130, 240, 238, 210, 236, 150, 234, 503, 233, 533,
966 533, 533, 533, 533, 533, 533, 533, 533, 533, 533,
967 533, 533, 533, 533, 533, 533, 533, 533, 438, 438,
968 233, 438, 438, 438, 438, 438, 439, 438, 438, 438,
969 438, 232, 438, 438, 104, 216, 215, 209, 475, 438,
971 438, 438, 210, 209, 201, 193, 191, 173, 172, 169,
972 168, 165, 164, 148, 122, 142, 139, 122, 121, 118,
973 117, 438, 438, 438, 114, 113, 104, 86, 696, 696,
974 696, 696, 696, 696, 696, 696, 696, 696, 696, 696,
975 696, 696, 696, 696, 696, 696, 696, 696, 696, 438,
976 438, 602, 602, 696, 602, 602, 602, 602, 602, 696,
977 602, 602, 602, 602, 696, 602, 602, 696, 696, 696,
978 696, 602, 602, 602, 602, 696, 696, 696, 696, 696,
979 696, 604, 696, 696, 696, 696, 696, 696, 696, 696,
980 696, 696, 696, 696, 602, 602, 602, 696, 696, 696,
982 696, 696, 696, 604, 696, 696, 696, 696, 696, 696,
983 696, 696, 696, 696, 696, 696, 696, 696, 696, 696,
984 696, 696, 602, 602, 602, 602, 696, 602, 602, 602,
985 602, 602, 603, 602, 602, 602, 602, 696, 602, 602,
986 696, 696, 696, 696, 611, 602, 602, 602, 696, 696,
987 696, 696, 696, 696, 612, 696, 696, 696, 696, 696,
988 696, 696, 696, 696, 696, 696, 696, 602, 602, 602,
989 696, 696, 696, 696, 696, 696, 612, 696, 696, 696,
990 696, 696, 696, 696, 696, 696, 696, 696, 696, 696,
991 696, 696, 696, 696, 696, 602, 602, 602, 602, 696,
993 602, 602, 602, 602, 602, 696, 602, 602, 602, 602,
994 696, 602, 602, 696, 696, 696, 696, 602, 602, 602,
995 602, 696, 696, 696, 696, 696, 696, 604, 696, 696,
996 696, 696, 696, 696, 696, 696, 696, 696, 696, 696,
997 602, 602, 602, 696, 696, 696, 696, 696, 696, 604,
998 696, 696, 696, 696, 696, 696, 696, 696, 696, 696,
999 696, 696, 696, 696, 696, 696, 696, 696, 602, 602,
1000 602, 602, 696, 602, 602, 602, 602, 602, 603, 602,
1001 602, 602, 602, 696, 602, 602, 696, 696, 696, 696,
1002 611, 602, 602, 602, 696, 696, 696, 696, 696, 696,
1004 612, 696, 696, 696, 696, 696, 696, 696, 696, 696,
1005 696, 696, 696, 602, 602, 602, 696, 696, 696, 696,
1006 696, 696, 612, 696, 696, 696, 696, 696, 696, 696,
1007 696, 696, 696, 696, 696, 696, 696, 696, 696, 696,
1008 696, 602, 602, 82, 696, 696, 696, 82, 82, 696,
1009 696, 82, 82, 82, 82, 82, 82, 82, 82, 83,
1010 83, 83, 83, 83, 696, 83, 83, 83, 83, 83,
1011 83, 83, 83, 83, 83, 83, 83, 83, 89, 89,
1012 696, 696, 696, 89, 89, 89, 103, 103, 103, 103,
1013 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
1015 103, 103, 103, 103, 103, 129, 129, 129, 129, 129,
1016 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
1017 129, 129, 129, 129, 144, 144, 144, 144, 144, 144,
1018 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1019 144, 144, 144, 149, 696, 696, 696, 149, 149, 149,
1020 696, 149, 149, 149, 149, 149, 149, 149, 149, 192,
1021 192, 192, 192, 192, 696, 192, 192, 192, 192, 192,
1022 192, 192, 192, 192, 192, 192, 192, 192, 194, 194,
1023 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
1024 194, 194, 194, 194, 194, 194, 194, 211, 211, 696,
1026 696, 696, 696, 696, 696, 696, 696, 211, 696, 696,
1027 211, 211, 696, 211, 126, 126, 126, 126, 126, 126,
1028 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
1029 126, 126, 126, 244, 244, 244, 244, 244, 244, 244,
1030 244, 244, 244, 244, 244, 244, 244, 244, 244, 244,
1031 244, 244, 145, 145, 145, 145, 145, 145, 145, 145,
1032 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1033 145, 266, 266, 266, 266, 266, 266, 266, 266, 266,
1034 266, 266, 266, 266, 266, 266, 266, 266, 266, 266,
1035 273, 273, 273, 273, 273, 273, 273, 273, 273, 273,
1037 273, 273, 273, 273, 273, 273, 273, 273, 273, 192,
1038 192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
1039 192, 192, 192, 192, 192, 192, 192, 192, 194, 194,
1040 194, 194, 194, 194, 194, 194, 194, 194, 194, 194,
1041 194, 194, 194, 194, 194, 194, 194, 195, 195, 195,
1042 195, 195, 195, 195, 195, 195, 195, 195, 195, 195,
1043 195, 195, 195, 195, 195, 195, 309, 309, 309, 309,
1044 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
1045 309, 309, 309, 309, 309, 313, 313, 696, 313, 313,
1046 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
1048 313, 313, 313, 313, 315, 315, 696, 315, 315, 315,
1049 315, 315, 315, 315, 315, 315, 315, 315, 315, 315,
1050 315, 315, 315, 317, 696, 317, 696, 696, 696, 317,
1051 317, 317, 696, 696, 317, 355, 355, 696, 355, 355,
1052 355, 355, 355, 355, 355, 355, 355, 355, 355, 355,
1053 355, 355, 355, 355, 357, 357, 357, 357, 357, 357,
1054 357, 357, 357, 357, 357, 357, 357, 357, 357, 357,
1055 357, 357, 357, 126, 126, 126, 126, 126, 126, 126,
1056 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
1057 126, 126, 359, 359, 359, 359, 359, 359, 359, 359,
1059 359, 359, 359, 359, 359, 359, 359, 359, 359, 359,
1060 359, 244, 244, 244, 244, 244, 244, 244, 244, 244,
1061 244, 244, 244, 244, 244, 244, 244, 244, 244, 244,
1062 362, 362, 362, 367, 696, 696, 696, 367, 696, 367,
1063 367, 367, 367, 696, 367, 266, 266, 266, 266, 266,
1064 266, 266, 266, 266, 266, 266, 266, 266, 266, 266,
1065 266, 266, 266, 266, 383, 383, 383, 383, 383, 383,
1066 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
1067 383, 383, 383, 149, 696, 696, 696, 149, 149, 149,
1068 696, 149, 149, 149, 149, 149, 149, 149, 149, 273,
1070 273, 273, 273, 273, 273, 273, 273, 273, 273, 273,
1071 273, 273, 273, 273, 273, 273, 273, 273, 103, 103,
1072 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
1073 103, 103, 103, 103, 103, 103, 103, 403, 403, 696,
1074 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
1075 403, 403, 403, 403, 403, 403, 309, 309, 309, 309,
1076 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
1077 309, 309, 309, 309, 309, 413, 413, 413, 413, 696,
1078 413, 413, 413, 413, 413, 413, 413, 413, 413, 413,
1079 413, 413, 413, 413, 192, 192, 192, 192, 192, 192,
1081 192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
1082 192, 192, 192, 313, 313, 696, 313, 313, 313, 313,
1083 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
1084 313, 313, 315, 315, 696, 315, 315, 315, 315, 315,
1085 315, 315, 315, 315, 315, 315, 315, 315, 315, 315,
1086 315, 416, 696, 416, 416, 696, 696, 416, 416, 416,
1087 696, 696, 416, 439, 439, 696, 439, 439, 439, 439,
1088 439, 439, 439, 439, 439, 439, 439, 439, 439, 439,
1089 439, 439, 354, 354, 696, 354, 354, 354, 354, 354,
1090 354, 354, 354, 354, 354, 354, 354, 354, 354, 354,
1092 354, 355, 355, 696, 355, 355, 355, 355, 355, 355,
1093 355, 355, 355, 355, 355, 355, 355, 355, 355, 355,
1094 357, 357, 357, 357, 357, 357, 357, 357, 357, 357,
1095 357, 357, 357, 357, 357, 357, 357, 357, 357, 359,
1096 359, 359, 359, 359, 359, 359, 359, 359, 359, 359,
1097 359, 359, 359, 359, 359, 359, 359, 359, 126, 126,
1098 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
1099 126, 126, 126, 126, 126, 126, 126, 447, 447, 447,
1100 447, 447, 447, 447, 447, 447, 447, 447, 447, 447,
1101 447, 447, 447, 447, 447, 447, 452, 452, 696, 696,
1103 452, 452, 696, 452, 452, 452, 452, 452, 452, 452,
1104 452, 452, 453, 696, 696, 696, 696, 696, 453, 453,
1105 453, 453, 696, 453, 383, 383, 383, 383, 383, 383,
1106 383, 383, 383, 383, 383, 383, 383, 383, 383, 383,
1107 383, 383, 383, 103, 103, 103, 103, 103, 103, 103,
1108 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
1109 103, 103, 474, 474, 696, 474, 474, 474, 474, 474,
1110 474, 474, 474, 474, 474, 474, 474, 474, 474, 474,
1111 474, 403, 403, 696, 403, 403, 403, 403, 403, 403,
1112 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
1114 481, 481, 696, 696, 481, 481, 481, 481, 481, 481,
1115 481, 481, 481, 481, 481, 481, 413, 413, 413, 413,
1116 696, 413, 413, 413, 413, 413, 413, 413, 413, 413,
1117 413, 413, 413, 413, 413, 192, 192, 192, 192, 192,
1118 192, 192, 192, 192, 192, 192, 192, 192, 192, 192,
1119 192, 192, 192, 192, 488, 488, 696, 488, 488, 488,
1120 488, 488, 488, 488, 488, 488, 488, 488, 488, 488,
1121 488, 488, 488, 490, 490, 696, 490, 490, 490, 490,
1122 490, 490, 490, 490, 490, 490, 490, 490, 490, 490,
1123 490, 490, 492, 492, 696, 492, 492, 492, 492, 492,
1125 492, 492, 492, 492, 492, 492, 492, 492, 492, 492,
1126 492, 494, 494, 696, 494, 494, 494, 494, 494, 494,
1127 494, 494, 494, 494, 494, 494, 494, 494, 494, 494,
1128 496, 496, 696, 496, 496, 496, 496, 496, 496, 496,
1129 496, 496, 496, 496, 496, 496, 496, 496, 496, 498,
1130 498, 696, 498, 498, 498, 498, 498, 498, 498, 498,
1131 498, 498, 498, 498, 498, 498, 498, 498, 438, 438,
1132 696, 438, 438, 438, 438, 438, 438, 438, 438, 438,
1133 438, 438, 438, 438, 438, 438, 438, 439, 439, 696,
1134 439, 439, 439, 439, 439, 439, 439, 439, 439, 439,
1136 439, 439, 439, 439, 439, 439, 357, 357, 357, 357,
1137 357, 357, 357, 357, 357, 357, 357, 357, 357, 357,
1138 357, 357, 357, 357, 357, 126, 126, 126, 126, 126,
1139 126, 126, 126, 126, 126, 126, 126, 126, 126, 126,
1140 126, 126, 126, 126, 447, 447, 447, 447, 447, 447,
1141 447, 447, 447, 447, 447, 447, 447, 447, 447, 447,
1142 447, 447, 447, 522, 696, 696, 696, 696, 696, 522,
1143 522, 522, 522, 522, 522, 522, 522, 522, 529, 529,
1144 529, 529, 529, 529, 529, 529, 529, 529, 529, 529,
1145 529, 529, 529, 529, 529, 529, 529, 103, 103, 103,
1147 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
1148 103, 103, 103, 103, 103, 103, 540, 540, 540, 540,
1149 540, 540, 540, 540, 540, 540, 540, 540, 540, 540,
1150 540, 540, 540, 540, 540, 545, 696, 696, 696, 696,
1151 696, 545, 545, 545, 545, 554, 554, 696, 554, 554,
1152 554, 554, 554, 554, 554, 554, 554, 554, 554, 554,
1153 554, 554, 554, 554, 572, 572, 572, 572, 572, 572,
1154 572, 572, 572, 572, 572, 572, 572, 572, 572, 572,
1155 572, 572, 572, 603, 603, 696, 603, 603, 603, 603,
1156 603, 603, 603, 603, 603, 603, 603, 603, 603, 603,
1158 603, 603, 610, 610, 696, 610, 610, 610, 610, 610,
1159 610, 610, 610, 610, 610, 610, 610, 610, 610, 610,
1160 610, 602, 602, 696, 602, 602, 602, 602, 602, 602,
1161 602, 602, 602, 602, 602, 602, 602, 602, 602, 602,
1162 638, 638, 638, 638, 638, 638, 638, 638, 638, 638,
1163 638, 638, 638, 638, 638, 638, 638, 638, 638, 660,
1164 660, 660, 660, 660, 660, 660, 660, 660, 660, 660,
1165 660, 660, 660, 660, 660, 660, 660, 660, 663, 663,
1166 663, 663, 663, 663, 663, 663, 663, 663, 663, 663,
1167 663, 663, 663, 663, 663, 663, 663, 678, 678, 678,
1169 678, 678, 678, 678, 678, 678, 678, 678, 678, 678,
1170 678, 678, 678, 678, 678, 678, 3, 696, 696, 696,
1171 696, 696, 696, 696, 696, 696, 696, 696, 696, 696,
1172 696, 696, 696, 696, 696, 696, 696, 696, 696, 696,
1173 696, 696, 696, 696, 696, 696, 696, 696, 696, 696,
1174 696, 696, 696, 696, 696, 696, 696, 696, 696, 696,
1175 696, 696, 696, 696, 696, 696, 696, 696, 696, 696,
1176 696, 696, 696, 696, 696, 696, 696, 696, 696, 696,
1177 696, 696, 696, 696, 696, 696, 696, 696, 696, 696
1180 static yyconst short int yy_chk[4591] =
1182 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1183 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1184 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1185 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1186 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1187 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1188 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1189 1, 1, 1, 2, 2, 2, 2, 2, 2, 2,
1190 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1191 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1193 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1194 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1195 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1196 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1197 2, 2, 2, 2, 2, 2, 5, 6, 6, 6,
1198 6, 8, 10, 10, 11, 19, 22, 46, 8, 8,
1199 8, 8, 16, 156, 11, 13, 11, 11, 5, 46,
1200 58, 11, 12, 12, 12, 13, 156, 13, 19, 12,
1201 22, 694, 13, 86, 12, 12, 12, 12, 12, 12,
1202 12, 12, 50, 50, 58, 12, 12, 12, 12, 12,
1204 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
1205 12, 12, 12, 12, 25, 28, 16, 12, 12, 12,
1206 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
1207 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
1208 12, 12, 15, 52, 15, 86, 15, 15, 15, 15,
1209 15, 15, 40, 674, 15, 29, 153, 29, 29, 90,
1210 28, 90, 29, 670, 25, 25, 90, 35, 35, 28,
1211 153, 25, 55, 15, 35, 35, 35, 15, 15, 15,
1212 15, 15, 15, 15, 15, 15, 15, 15, 15, 31,
1213 31, 532, 31, 31, 31, 55, 99, 52, 99, 40,
1215 15, 26, 26, 26, 26, 26, 26, 26, 26, 26,
1216 26, 26, 26, 26, 26, 26, 26, 63, 84, 84,
1217 144, 26, 26, 26, 26, 30, 30, 30, 30, 30,
1218 32, 32, 34, 34, 32, 32, 32, 33, 34, 34,
1219 34, 43, 30, 532, 26, 26, 26, 33, 33, 36,
1220 36, 49, 33, 33, 33, 37, 37, 36, 36, 36,
1221 33, 49, 63, 49, 37, 37, 37, 676, 49, 91,
1222 91, 63, 26, 26, 27, 38, 38, 27, 27, 27,
1223 27, 27, 61, 47, 669, 38, 38, 217, 47, 38,
1224 144, 43, 43, 47, 663, 47, 47, 217, 43, 64,
1226 47, 64, 64, 27, 217, 44, 64, 27, 27, 27,
1227 27, 27, 27, 27, 27, 27, 27, 27, 27, 44,
1228 44, 44, 44, 65, 65, 65, 65, 65, 69, 69,
1229 27, 74, 61, 61, 69, 69, 69, 676, 149, 61,
1230 65, 66, 66, 74, 66, 66, 66, 67, 67, 68,
1231 149, 67, 67, 67, 70, 70, 76, 158, 158, 68,
1232 68, 70, 70, 70, 68, 68, 68, 662, 76, 74,
1233 72, 72, 68, 192, 192, 44, 48, 48, 48, 72,
1234 72, 72, 660, 48, 81, 81, 81, 81, 48, 48,
1235 48, 48, 48, 48, 48, 48, 193, 193, 76, 48,
1237 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
1238 48, 48, 48, 48, 48, 48, 48, 48, 95, 95,
1239 95, 48, 48, 48, 48, 48, 48, 48, 48, 48,
1240 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
1241 48, 48, 48, 48, 48, 48, 51, 194, 194, 51,
1242 128, 51, 77, 51, 51, 51, 51, 51, 51, 71,
1243 71, 51, 73, 73, 77, 196, 196, 71, 71, 71,
1244 75, 157, 73, 73, 258, 75, 73, 98, 98, 98,
1245 51, 128, 75, 157, 51, 51, 51, 51, 51, 51,
1246 51, 51, 51, 51, 51, 51, 110, 110, 110, 110,
1248 271, 387, 112, 112, 112, 112, 658, 51, 62, 77,
1249 78, 166, 271, 62, 79, 78, 62, 62, 62, 62,
1250 62, 258, 75, 166, 323, 79, 85, 78, 79, 79,
1251 79, 79, 112, 85, 85, 85, 85, 85, 113, 113,
1252 113, 113, 62, 166, 273, 273, 62, 62, 62, 62,
1253 62, 62, 62, 62, 62, 62, 62, 62, 100, 387,
1254 78, 78, 96, 96, 96, 171, 176, 78, 100, 62,
1255 100, 111, 113, 111, 96, 100, 96, 171, 176, 111,
1256 656, 96, 111, 623, 79, 89, 323, 89, 89, 89,
1257 89, 89, 89, 111, 171, 111, 123, 123, 123, 123,
1259 167, 234, 111, 136, 136, 136, 136, 111, 118, 118,
1260 118, 118, 167, 650, 89, 234, 234, 176, 89, 89,
1261 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
1262 121, 121, 121, 121, 123, 241, 124, 124, 124, 124,
1263 623, 89, 106, 106, 106, 106, 106, 106, 106, 106,
1264 106, 106, 106, 106, 108, 151, 649, 118, 167, 233,
1265 325, 108, 325, 151, 151, 243, 241, 151, 165, 137,
1266 137, 137, 137, 138, 138, 138, 138, 267, 121, 124,
1267 165, 345, 233, 108, 308, 308, 267, 108, 108, 108,
1268 108, 108, 108, 108, 108, 108, 108, 108, 108, 137,
1270 162, 162, 162, 162, 233, 243, 165, 138, 309, 309,
1271 108, 127, 127, 127, 127, 127, 127, 127, 127, 127,
1272 127, 127, 127, 127, 127, 127, 127, 146, 152, 568,
1273 568, 127, 127, 127, 127, 329, 152, 345, 154, 185,
1274 152, 146, 146, 146, 146, 146, 154, 190, 270, 329,
1275 154, 185, 168, 270, 127, 127, 127, 648, 190, 163,
1276 163, 163, 163, 644, 168, 270, 164, 164, 164, 164,
1277 169, 169, 169, 169, 172, 172, 172, 172, 174, 174,
1278 174, 174, 127, 127, 129, 129, 129, 129, 129, 163,
1279 129, 129, 129, 129, 129, 129, 185, 146, 129, 129,
1281 164, 173, 186, 189, 129, 129, 386, 129, 168, 175,
1282 175, 175, 175, 173, 186, 189, 174, 190, 346, 169,
1283 272, 182, 172, 187, 368, 272, 188, 129, 129, 182,
1284 182, 182, 182, 182, 183, 187, 269, 272, 188, 173,
1285 346, 269, 183, 183, 183, 183, 183, 609, 269, 189,
1286 386, 347, 175, 357, 186, 129, 129, 131, 131, 131,
1287 131, 131, 131, 131, 131, 131, 131, 131, 131, 132,
1288 132, 368, 183, 347, 132, 187, 641, 132, 132, 132,
1289 132, 132, 188, 132, 357, 132, 132, 132, 132, 132,
1290 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
1292 132, 132, 132, 132, 384, 609, 384, 132, 132, 132,
1293 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
1294 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
1295 132, 132, 134, 134, 134, 134, 134, 134, 134, 134,
1296 134, 134, 134, 134, 135, 218, 218, 218, 218, 484,
1297 265, 135, 135, 135, 135, 265, 265, 135, 484, 135,
1298 135, 135, 135, 135, 135, 135, 135, 135, 135, 135,
1299 135, 135, 135, 135, 135, 135, 135, 135, 219, 219,
1300 219, 219, 198, 198, 432, 135, 155, 155, 155, 198,
1301 198, 198, 198, 155, 220, 220, 220, 220, 155, 155,
1303 640, 155, 155, 155, 155, 155, 435, 432, 327, 155,
1304 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
1305 155, 155, 155, 155, 155, 155, 155, 155, 435, 637,
1306 637, 155, 155, 155, 155, 155, 155, 155, 155, 155,
1307 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
1308 155, 155, 155, 155, 155, 155, 159, 304, 275, 202,
1309 222, 223, 223, 223, 223, 184, 202, 222, 159, 304,
1310 327, 197, 197, 184, 184, 184, 184, 184, 197, 197,
1311 197, 197, 197, 224, 224, 224, 224, 372, 202, 222,
1312 252, 252, 252, 252, 159, 159, 159, 159, 159, 159,
1314 159, 159, 159, 159, 159, 159, 160, 184, 275, 242,
1315 242, 242, 242, 160, 304, 202, 222, 275, 317, 317,
1316 317, 317, 203, 358, 388, 203, 203, 203, 203, 203,
1317 239, 239, 239, 239, 372, 160, 388, 359, 388, 160,
1318 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
1319 160, 203, 242, 461, 358, 461, 230, 230, 230, 230,
1320 461, 635, 160, 177, 177, 177, 177, 177, 177, 177,
1321 177, 177, 177, 177, 177, 178, 178, 359, 203, 239,
1322 178, 707, 707, 178, 178, 178, 178, 178, 230, 178,
1323 634, 178, 178, 178, 178, 178, 178, 178, 178, 178,
1325 178, 178, 178, 178, 178, 178, 178, 178, 178, 178,
1326 360, 360, 360, 178, 178, 178, 178, 178, 178, 178,
1327 178, 178, 178, 178, 178, 178, 178, 178, 178, 178,
1328 178, 178, 178, 178, 178, 178, 178, 178, 180, 180,
1329 180, 180, 180, 180, 180, 180, 180, 180, 180, 180,
1330 181, 181, 449, 360, 444, 181, 708, 708, 181, 181,
1331 181, 181, 181, 633, 181, 449, 181, 181, 181, 181,
1332 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
1333 181, 181, 181, 181, 181, 444, 632, 591, 181, 181,
1334 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
1336 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
1337 181, 181, 181, 221, 221, 221, 221, 221, 221, 221,
1338 221, 221, 221, 221, 221, 225, 338, 338, 338, 338,
1339 454, 651, 225, 366, 225, 253, 591, 286, 231, 231,
1340 231, 231, 253, 253, 253, 253, 366, 531, 253, 286,
1341 363, 363, 363, 363, 225, 465, 465, 465, 225, 225,
1342 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
1343 231, 629, 285, 628, 366, 467, 253, 454, 283, 286,
1344 651, 225, 240, 240, 285, 240, 240, 240, 240, 240,
1345 283, 240, 240, 240, 240, 531, 240, 240, 288, 254,
1347 450, 264, 240, 240, 240, 240, 254, 254, 254, 254,
1348 288, 276, 254, 450, 285, 264, 264, 264, 264, 276,
1349 276, 276, 276, 276, 279, 240, 240, 240, 285, 285,
1350 398, 389, 279, 279, 279, 279, 279, 467, 283, 281,
1351 254, 305, 398, 389, 288, 389, 240, 281, 281, 281,
1352 281, 281, 305, 240, 240, 244, 244, 244, 244, 244,
1353 626, 244, 244, 244, 244, 244, 244, 592, 284, 244,
1354 244, 264, 282, 284, 289, 244, 244, 569, 244, 281,
1355 282, 282, 282, 282, 282, 284, 289, 608, 287, 303,
1356 295, 284, 295, 287, 303, 299, 301, 299, 244, 244,
1358 287, 303, 295, 625, 414, 414, 290, 299, 301, 414,
1359 621, 305, 282, 284, 290, 290, 290, 290, 290, 592,
1360 620, 297, 302, 289, 369, 370, 244, 244, 245, 297,
1361 297, 297, 297, 297, 302, 336, 301, 369, 370, 608,
1362 569, 245, 336, 245, 245, 245, 245, 245, 245, 245,
1363 245, 245, 245, 245, 245, 245, 245, 245, 245, 245,
1364 245, 245, 302, 290, 336, 369, 370, 601, 584, 245,
1365 247, 247, 247, 247, 247, 247, 247, 247, 247, 247,
1366 247, 247, 255, 328, 300, 709, 709, 328, 622, 601,
1367 300, 336, 579, 584, 328, 255, 300, 255, 255, 255,
1369 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
1370 255, 255, 255, 255, 255, 255, 712, 712, 312, 312,
1371 466, 409, 318, 255, 277, 312, 312, 312, 312, 318,
1372 379, 318, 332, 409, 393, 619, 277, 300, 380, 332,
1373 379, 332, 379, 622, 385, 328, 393, 379, 380, 411,
1374 380, 318, 385, 636, 579, 380, 385, 445, 445, 445,
1375 411, 332, 277, 277, 277, 277, 277, 277, 277, 277,
1376 277, 277, 277, 277, 280, 394, 466, 451, 318, 396,
1377 618, 280, 393, 280, 365, 365, 487, 394, 332, 365,
1378 451, 396, 365, 365, 365, 365, 665, 616, 365, 487,
1380 445, 636, 396, 280, 448, 448, 448, 280, 280, 280,
1381 280, 280, 280, 280, 280, 280, 280, 280, 280, 411,
1382 615, 399, 607, 394, 396, 416, 416, 416, 416, 606,
1383 280, 291, 291, 399, 291, 291, 291, 291, 291, 291,
1384 291, 291, 291, 291, 377, 291, 291, 448, 665, 502,
1385 399, 291, 291, 291, 291, 392, 401, 400, 377, 377,
1386 377, 377, 502, 392, 392, 392, 392, 392, 401, 400,
1387 402, 600, 424, 459, 291, 291, 291, 407, 481, 407,
1388 481, 598, 402, 395, 424, 459, 671, 408, 395, 407,
1389 481, 469, 471, 408, 477, 291, 469, 471, 401, 408,
1391 395, 400, 291, 291, 292, 292, 477, 482, 469, 471,
1392 729, 729, 402, 597, 377, 596, 292, 675, 292, 482,
1393 292, 292, 292, 292, 292, 292, 292, 292, 292, 292,
1394 292, 292, 292, 292, 292, 292, 292, 292, 292, 395,
1395 408, 671, 602, 459, 604, 477, 292, 293, 293, 293,
1396 293, 293, 293, 293, 293, 293, 293, 293, 293, 298,
1397 483, 530, 530, 530, 602, 675, 604, 590, 589, 588,
1398 586, 483, 298, 612, 298, 298, 298, 298, 298, 298,
1399 298, 298, 298, 298, 298, 298, 298, 298, 298, 298,
1400 298, 298, 298, 585, 583, 612, 581, 645, 580, 645,
1402 298, 335, 335, 335, 335, 335, 335, 335, 335, 335,
1403 335, 335, 335, 348, 348, 433, 348, 348, 348, 348,
1404 348, 645, 348, 348, 348, 348, 503, 348, 348, 410,
1405 483, 473, 578, 348, 348, 348, 348, 406, 406, 503,
1406 476, 410, 406, 473, 433, 406, 406, 406, 406, 406,
1407 472, 406, 470, 433, 476, 476, 348, 348, 348, 577,
1408 478, 507, 472, 348, 470, 572, 479, 567, 517, 433,
1409 472, 479, 478, 473, 566, 507, 536, 348, 348, 470,
1410 582, 410, 517, 479, 348, 348, 355, 355, 536, 355,
1411 355, 355, 355, 355, 582, 355, 355, 355, 355, 611,
1413 355, 355, 470, 646, 486, 486, 355, 355, 355, 355,
1414 478, 486, 486, 486, 486, 533, 534, 533, 520, 520,
1415 520, 525, 535, 646, 659, 646, 611, 533, 534, 355,
1416 355, 355, 536, 538, 535, 525, 525, 525, 525, 539,
1417 677, 541, 564, 571, 574, 538, 659, 562, 611, 561,
1418 560, 539, 541, 535, 534, 571, 574, 355, 355, 356,
1419 356, 520, 356, 356, 356, 356, 356, 559, 356, 356,
1420 356, 356, 575, 356, 356, 538, 570, 539, 573, 356,
1421 356, 356, 356, 643, 575, 544, 544, 558, 570, 538,
1422 573, 525, 544, 544, 544, 544, 613, 643, 565, 571,
1424 631, 557, 356, 356, 356, 576, 595, 570, 613, 614,
1425 677, 541, 565, 565, 565, 565, 576, 595, 556, 573,
1426 614, 555, 631, 678, 554, 553, 551, 550, 631, 575,
1427 356, 356, 390, 390, 390, 390, 390, 390, 390, 390,
1428 390, 390, 390, 390, 397, 397, 549, 397, 397, 397,
1429 397, 397, 397, 397, 397, 397, 397, 594, 397, 397,
1430 627, 547, 624, 638, 397, 397, 397, 397, 565, 594,
1431 546, 627, 545, 630, 617, 576, 595, 543, 630, 614,
1432 617, 642, 540, 537, 529, 528, 655, 397, 397, 397,
1433 624, 638, 642, 678, 397, 630, 617, 655, 693, 594,
1435 668, 527, 617, 526, 524, 672, 522, 653, 397, 397,
1436 518, 668, 624, 638, 639, 397, 397, 403, 403, 652,
1437 403, 403, 403, 403, 403, 403, 403, 403, 403, 403,
1438 627, 403, 403, 672, 516, 653, 639, 403, 403, 403,
1439 403, 515, 639, 514, 513, 512, 511, 652, 510, 509,
1440 508, 642, 652, 666, 673, 672, 655, 653, 639, 667,
1441 403, 403, 403, 653, 639, 673, 679, 680, 693, 652,
1442 668, 681, 682, 683, 684, 685, 506, 679, 680, 666,
1443 505, 666, 681, 682, 683, 684, 685, 667, 403, 403,
1444 405, 405, 504, 405, 405, 405, 405, 405, 405, 405,
1446 405, 405, 405, 666, 405, 405, 501, 667, 500, 667,
1447 405, 405, 405, 405, 499, 498, 497, 496, 495, 494,
1448 493, 492, 491, 490, 673, 489, 488, 480, 475, 686,
1449 464, 463, 462, 405, 405, 405, 679, 680, 460, 458,
1450 686, 681, 682, 683, 684, 685, 687, 456, 453, 452,
1451 447, 443, 442, 688, 689, 690, 691, 687, 692, 441,
1452 437, 405, 405, 426, 688, 689, 690, 691, 436, 692,
1453 434, 431, 430, 429, 428, 427, 426, 423, 426, 426,
1454 426, 426, 426, 426, 426, 426, 426, 426, 426, 426,
1455 426, 426, 426, 426, 426, 426, 426, 439, 439, 686,
1457 439, 439, 439, 439, 439, 422, 439, 439, 439, 439,
1458 421, 439, 439, 420, 419, 418, 687, 439, 439, 439,
1459 439, 417, 415, 688, 689, 690, 691, 413, 692, 412,
1460 404, 391, 383, 382, 381, 378, 376, 374, 371, 367,
1461 439, 439, 439, 362, 361, 353, 352, 351, 350, 344,
1462 343, 342, 341, 340, 339, 334, 333, 331, 326, 324,
1463 322, 321, 320, 319, 316, 315, 314, 313, 439, 439,
1464 440, 440, 310, 440, 440, 440, 440, 440, 306, 440,
1465 440, 440, 440, 296, 440, 440, 294, 278, 274, 268,
1466 440, 440, 440, 440, 266, 262, 261, 260, 259, 257,
1468 256, 251, 250, 249, 238, 237, 236, 235, 232, 229,
1469 228, 227, 226, 440, 440, 440, 216, 215, 214, 213,
1470 440, 212, 209, 208, 207, 206, 205, 204, 200, 199,
1471 195, 191, 179, 170, 440, 440, 161, 150, 148, 147,
1472 145, 440, 440, 468, 468, 143, 142, 141, 140, 139,
1473 126, 125, 122, 120, 119, 468, 117, 468, 116, 468,
1474 468, 468, 468, 468, 468, 468, 468, 468, 468, 468,
1475 468, 468, 468, 468, 468, 468, 468, 468, 474, 474,
1476 115, 474, 474, 474, 474, 474, 474, 474, 474, 474,
1477 474, 114, 474, 474, 103, 101, 97, 94, 474, 474,
1479 474, 474, 93, 92, 88, 83, 80, 60, 59, 57,
1480 56, 54, 53, 45, 42, 41, 39, 24, 23, 21,
1481 20, 474, 474, 474, 18, 17, 14, 9, 3, 0,
1482 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1483 0, 0, 0, 0, 0, 0, 0, 0, 0, 474,
1484 474, 587, 587, 0, 587, 587, 587, 587, 587, 0,
1485 587, 587, 587, 587, 0, 587, 587, 0, 0, 0,
1486 0, 587, 587, 587, 587, 0, 0, 0, 0, 0,
1487 0, 587, 0, 0, 0, 0, 0, 0, 0, 0,
1488 0, 0, 0, 0, 587, 587, 587, 0, 0, 0,
1490 0, 0, 0, 587, 0, 0, 0, 0, 0, 0,
1491 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1492 0, 0, 587, 587, 593, 593, 0, 593, 593, 593,
1493 593, 593, 593, 593, 593, 593, 593, 0, 593, 593,
1494 0, 0, 0, 0, 593, 593, 593, 593, 0, 0,
1495 0, 0, 0, 0, 593, 0, 0, 0, 0, 0,
1496 0, 0, 0, 0, 0, 0, 0, 593, 593, 593,
1497 0, 0, 0, 0, 0, 0, 593, 0, 0, 0,
1498 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1499 0, 0, 0, 0, 0, 593, 593, 603, 603, 0,
1501 603, 603, 603, 603, 603, 0, 603, 603, 603, 603,
1502 0, 603, 603, 0, 0, 0, 0, 603, 603, 603,
1503 603, 0, 0, 0, 0, 0, 0, 603, 0, 0,
1504 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1505 603, 603, 603, 0, 0, 0, 0, 0, 0, 603,
1506 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1507 0, 0, 0, 0, 0, 0, 0, 0, 603, 603,
1508 610, 610, 0, 610, 610, 610, 610, 610, 610, 610,
1509 610, 610, 610, 0, 610, 610, 0, 0, 0, 0,
1510 610, 610, 610, 610, 0, 0, 0, 0, 0, 0,
1512 610, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1513 0, 0, 0, 610, 610, 610, 0, 0, 0, 0,
1514 0, 0, 610, 0, 0, 0, 0, 0, 0, 0,
1515 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1516 0, 610, 610, 697, 0, 0, 0, 697, 697, 0,
1517 0, 697, 697, 697, 697, 697, 697, 697, 697, 698,
1518 698, 698, 698, 698, 0, 698, 698, 698, 698, 698,
1519 698, 698, 698, 698, 698, 698, 698, 698, 699, 699,
1520 0, 0, 0, 699, 699, 699, 700, 700, 700, 700,
1521 700, 700, 700, 700, 700, 700, 700, 700, 700, 700,
1523 700, 700, 700, 700, 700, 701, 701, 701, 701, 701,
1524 701, 701, 701, 701, 701, 701, 701, 701, 701, 701,
1525 701, 701, 701, 701, 702, 702, 702, 702, 702, 702,
1526 702, 702, 702, 702, 702, 702, 702, 702, 702, 702,
1527 702, 702, 702, 703, 0, 0, 0, 703, 703, 703,
1528 0, 703, 703, 703, 703, 703, 703, 703, 703, 704,
1529 704, 704, 704, 704, 0, 704, 704, 704, 704, 704,
1530 704, 704, 704, 704, 704, 704, 704, 704, 705, 705,
1531 705, 705, 705, 705, 705, 705, 705, 705, 705, 705,
1532 705, 705, 705, 705, 705, 705, 705, 706, 706, 0,
1534 0, 0, 0, 0, 0, 0, 0, 706, 0, 0,
1535 706, 706, 0, 706, 710, 710, 710, 710, 710, 710,
1536 710, 710, 710, 710, 710, 710, 710, 710, 710, 710,
1537 710, 710, 710, 711, 711, 711, 711, 711, 711, 711,
1538 711, 711, 711, 711, 711, 711, 711, 711, 711, 711,
1539 711, 711, 713, 713, 713, 713, 713, 713, 713, 713,
1540 713, 713, 713, 713, 713, 713, 713, 713, 713, 713,
1541 713, 714, 714, 714, 714, 714, 714, 714, 714, 714,
1542 714, 714, 714, 714, 714, 714, 714, 714, 714, 714,
1543 715, 715, 715, 715, 715, 715, 715, 715, 715, 715,
1545 715, 715, 715, 715, 715, 715, 715, 715, 715, 716,
1546 716, 716, 716, 716, 716, 716, 716, 716, 716, 716,
1547 716, 716, 716, 716, 716, 716, 716, 716, 717, 717,
1548 717, 717, 717, 717, 717, 717, 717, 717, 717, 717,
1549 717, 717, 717, 717, 717, 717, 717, 718, 718, 718,
1550 718, 718, 718, 718, 718, 718, 718, 718, 718, 718,
1551 718, 718, 718, 718, 718, 718, 719, 719, 719, 719,
1552 719, 719, 719, 719, 719, 719, 719, 719, 719, 719,
1553 719, 719, 719, 719, 719, 720, 720, 0, 720, 720,
1554 720, 720, 720, 720, 720, 720, 720, 720, 720, 720,
1556 720, 720, 720, 720, 721, 721, 0, 721, 721, 721,
1557 721, 721, 721, 721, 721, 721, 721, 721, 721, 721,
1558 721, 721, 721, 722, 0, 722, 0, 0, 0, 722,
1559 722, 722, 0, 0, 722, 723, 723, 0, 723, 723,
1560 723, 723, 723, 723, 723, 723, 723, 723, 723, 723,
1561 723, 723, 723, 723, 724, 724, 724, 724, 724, 724,
1562 724, 724, 724, 724, 724, 724, 724, 724, 724, 724,
1563 724, 724, 724, 725, 725, 725, 725, 725, 725, 725,
1564 725, 725, 725, 725, 725, 725, 725, 725, 725, 725,
1565 725, 725, 726, 726, 726, 726, 726, 726, 726, 726,
1567 726, 726, 726, 726, 726, 726, 726, 726, 726, 726,
1568 726, 727, 727, 727, 727, 727, 727, 727, 727, 727,
1569 727, 727, 727, 727, 727, 727, 727, 727, 727, 727,
1570 728, 728, 728, 730, 0, 0, 0, 730, 0, 730,
1571 730, 730, 730, 0, 730, 731, 731, 731, 731, 731,
1572 731, 731, 731, 731, 731, 731, 731, 731, 731, 731,
1573 731, 731, 731, 731, 732, 732, 732, 732, 732, 732,
1574 732, 732, 732, 732, 732, 732, 732, 732, 732, 732,
1575 732, 732, 732, 733, 0, 0, 0, 733, 733, 733,
1576 0, 733, 733, 733, 733, 733, 733, 733, 733, 734,
1578 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
1579 734, 734, 734, 734, 734, 734, 734, 734, 735, 735,
1580 735, 735, 735, 735, 735, 735, 735, 735, 735, 735,
1581 735, 735, 735, 735, 735, 735, 735, 736, 736, 0,
1582 736, 736, 736, 736, 736, 736, 736, 736, 736, 736,
1583 736, 736, 736, 736, 736, 736, 737, 737, 737, 737,
1584 737, 737, 737, 737, 737, 737, 737, 737, 737, 737,
1585 737, 737, 737, 737, 737, 738, 738, 738, 738, 0,
1586 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
1587 738, 738, 738, 738, 739, 739, 739, 739, 739, 739,
1589 739, 739, 739, 739, 739, 739, 739, 739, 739, 739,
1590 739, 739, 739, 740, 740, 0, 740, 740, 740, 740,
1591 740, 740, 740, 740, 740, 740, 740, 740, 740, 740,
1592 740, 740, 741, 741, 0, 741, 741, 741, 741, 741,
1593 741, 741, 741, 741, 741, 741, 741, 741, 741, 741,
1594 741, 742, 0, 742, 742, 0, 0, 742, 742, 742,
1595 0, 0, 742, 743, 743, 0, 743, 743, 743, 743,
1596 743, 743, 743, 743, 743, 743, 743, 743, 743, 743,
1597 743, 743, 744, 744, 0, 744, 744, 744, 744, 744,
1598 744, 744, 744, 744, 744, 744, 744, 744, 744, 744,
1600 744, 745, 745, 0, 745, 745, 745, 745, 745, 745,
1601 745, 745, 745, 745, 745, 745, 745, 745, 745, 745,
1602 746, 746, 746, 746, 746, 746, 746, 746, 746, 746,
1603 746, 746, 746, 746, 746, 746, 746, 746, 746, 747,
1604 747, 747, 747, 747, 747, 747, 747, 747, 747, 747,
1605 747, 747, 747, 747, 747, 747, 747, 747, 748, 748,
1606 748, 748, 748, 748, 748, 748, 748, 748, 748, 748,
1607 748, 748, 748, 748, 748, 748, 748, 749, 749, 749,
1608 749, 749, 749, 749, 749, 749, 749, 749, 749, 749,
1609 749, 749, 749, 749, 749, 749, 750, 750, 0, 0,
1611 750, 750, 0, 750, 750, 750, 750, 750, 750, 750,
1612 750, 750, 751, 0, 0, 0, 0, 0, 751, 751,
1613 751, 751, 0, 751, 752, 752, 752, 752, 752, 752,
1614 752, 752, 752, 752, 752, 752, 752, 752, 752, 752,
1615 752, 752, 752, 753, 753, 753, 753, 753, 753, 753,
1616 753, 753, 753, 753, 753, 753, 753, 753, 753, 753,
1617 753, 753, 754, 754, 0, 754, 754, 754, 754, 754,
1618 754, 754, 754, 754, 754, 754, 754, 754, 754, 754,
1619 754, 755, 755, 0, 755, 755, 755, 755, 755, 755,
1620 755, 755, 755, 755, 755, 755, 755, 755, 755, 755,
1622 756, 756, 0, 0, 756, 756, 756, 756, 756, 756,
1623 756, 756, 756, 756, 756, 756, 757, 757, 757, 757,
1624 0, 757, 757, 757, 757, 757, 757, 757, 757, 757,
1625 757, 757, 757, 757, 757, 758, 758, 758, 758, 758,
1626 758, 758, 758, 758, 758, 758, 758, 758, 758, 758,
1627 758, 758, 758, 758, 759, 759, 0, 759, 759, 759,
1628 759, 759, 759, 759, 759, 759, 759, 759, 759, 759,
1629 759, 759, 759, 760, 760, 0, 760, 760, 760, 760,
1630 760, 760, 760, 760, 760, 760, 760, 760, 760, 760,
1631 760, 760, 761, 761, 0, 761, 761, 761, 761, 761,
1633 761, 761, 761, 761, 761, 761, 761, 761, 761, 761,
1634 761, 762, 762, 0, 762, 762, 762, 762, 762, 762,
1635 762, 762, 762, 762, 762, 762, 762, 762, 762, 762,
1636 763, 763, 0, 763, 763, 763, 763, 763, 763, 763,
1637 763, 763, 763, 763, 763, 763, 763, 763, 763, 764,
1638 764, 0, 764, 764, 764, 764, 764, 764, 764, 764,
1639 764, 764, 764, 764, 764, 764, 764, 764, 765, 765,
1640 0, 765, 765, 765, 765, 765, 765, 765, 765, 765,
1641 765, 765, 765, 765, 765, 765, 765, 766, 766, 0,
1642 766, 766, 766, 766, 766, 766, 766, 766, 766, 766,
1644 766, 766, 766, 766, 766, 766, 767, 767, 767, 767,
1645 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,
1646 767, 767, 767, 767, 767, 768, 768, 768, 768, 768,
1647 768, 768, 768, 768, 768, 768, 768, 768, 768, 768,
1648 768, 768, 768, 768, 769, 769, 769, 769, 769, 769,
1649 769, 769, 769, 769, 769, 769, 769, 769, 769, 769,
1650 769, 769, 769, 770, 0, 0, 0, 0, 0, 770,
1651 770, 770, 770, 770, 770, 770, 770, 770, 771, 771,
1652 771, 771, 771, 771, 771, 771, 771, 771, 771, 771,
1653 771, 771, 771, 771, 771, 771, 771, 772, 772, 772,
1655 772, 772, 772, 772, 772, 772, 772, 772, 772, 772,
1656 772, 772, 772, 772, 772, 772, 773, 773, 773, 773,
1657 773, 773, 773, 773, 773, 773, 773, 773, 773, 773,
1658 773, 773, 773, 773, 773, 774, 0, 0, 0, 0,
1659 0, 774, 774, 774, 774, 775, 775, 0, 775, 775,
1660 775, 775, 775, 775, 775, 775, 775, 775, 775, 775,
1661 775, 775, 775, 775, 776, 776, 776, 776, 776, 776,
1662 776, 776, 776, 776, 776, 776, 776, 776, 776, 776,
1663 776, 776, 776, 777, 777, 0, 777, 777, 777, 777,
1664 777, 777, 777, 777, 777, 777, 777, 777, 777, 777,
1666 777, 777, 778, 778, 0, 778, 778, 778, 778, 778,
1667 778, 778, 778, 778, 778, 778, 778, 778, 778, 778,
1668 778, 779, 779, 0, 779, 779, 779, 779, 779, 779,
1669 779, 779, 779, 779, 779, 779, 779, 779, 779, 779,
1670 780, 780, 780, 780, 780, 780, 780, 780, 780, 780,
1671 780, 780, 780, 780, 780, 780, 780, 780, 780, 781,
1672 781, 781, 781, 781, 781, 781, 781, 781, 781, 781,
1673 781, 781, 781, 781, 781, 781, 781, 781, 782, 782,
1674 782, 782, 782, 782, 782, 782, 782, 782, 782, 782,
1675 782, 782, 782, 782, 782, 782, 782, 783, 783, 783,
1677 783, 783, 783, 783, 783, 783, 783, 783, 783, 783,
1678 783, 783, 783, 783, 783, 783, 696, 696, 696, 696,
1679 696, 696, 696, 696, 696, 696, 696, 696, 696, 696,
1680 696, 696, 696, 696, 696, 696, 696, 696, 696, 696,
1681 696, 696, 696, 696, 696, 696, 696, 696, 696, 696,
1682 696, 696, 696, 696, 696, 696, 696, 696, 696, 696,
1683 696, 696, 696, 696, 696, 696, 696, 696, 696, 696,
1684 696, 696, 696, 696, 696, 696, 696, 696, 696, 696,
1685 696, 696, 696, 696, 696, 696, 696, 696, 696, 696
1688 static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr;
1689 static char *yy_full_match;
1691 static int yy_looking_for_trail_begin = 0;
1692 static int yy_full_lp;
1693 static int *yy_full_state;
1694 #define YY_TRAILING_MASK 0x2000
1695 #define YY_TRAILING_HEAD_MASK 0x4000
1698 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \
1699 yy_cp = yy_full_match; /* restore poss. backed-over text */ \
1700 yy_lp = yy_full_lp; /* restore orig. accepting pos. */ \
1701 yy_state_ptr = yy_full_state; /* restore orig. state */ \
1702 yy_current_state = *yy_state_ptr; /* restore curr. state */ \
1706 #define yymore() yymore_used_but_not_detected
1707 #define YY_MORE_ADJ 0
1708 #define YY_RESTORE_YY_MORE_OFFSET
1712 * parser.l -- lex parser of algebraic chess moves for XBoard
1713 * $Id: parser.l,v 2.1 2003/10/27 19:21:00 mann Exp $
1715 * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts.
1716 * Enhancements Copyright 1992-95 Free Software Foundation, Inc.
1718 * The following terms apply to Digital Equipment Corporation's copyright
1719 * interest in XBoard:
1720 * ------------------------------------------------------------------------
1721 * All Rights Reserved
1723 * Permission to use, copy, modify, and distribute this software and its
1724 * documentation for any purpose and without fee is hereby granted,
1725 * provided that the above copyright notice appear in all copies and that
1726 * both that copyright notice and this permission notice appear in
1727 * supporting documentation, and that the name of Digital not be
1728 * used in advertising or publicity pertaining to distribution of the
1729 * software without specific, written prior permission.
1731 * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
1732 * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
1733 * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
1734 * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
1735 * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
1736 * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
1738 * ------------------------------------------------------------------------
1740 * The following terms apply to the enhanced version of XBoard distributed
1741 * by the Free Software Foundation:
1742 * ------------------------------------------------------------------------
1743 * This program is free software; you can redistribute it and/or modify
1744 * it under the terms of the GNU General Public License as published by
1745 * the Free Software Foundation; either version 2 of the License, or
1746 * (at your option) any later version.
1748 * This program is distributed in the hope that it will be useful,
1749 * but WITHOUT ANY WARRANTY; without even the implied warranty of
1750 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1751 * GNU General Public License for more details.
1753 * You should have received a copy of the GNU General Public License
1754 * along with this program; if not, write to the Free Software
1755 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
1756 * ------------------------------------------------------------------------
1759 /* This parser handles all forms of promotion.
1760 * The parser resolves ambiguous moves by searching and check-testing.
1761 * It also parses comments of the form [anything] or (anything).
1763 * [HGM] Parser extensively modified for bigger boards, Shogi-like syntax,
1764 * and unknow pieces. All pieces are now mandatory upper case, but can be
1765 * any letter A-Z. Files must be lower case (as before), but can run upto 'l'.
1766 * Ranks can be 0-9. The parser returns 0 for off-board files and ranks.
1767 * For an unknown piece (as mover or promotion piece) it returns
1768 * IllegalMove, like it does when the piece doesn't match.
1769 * Promotions can now also be appended Shogi-style, a bare '=' or '+',
1770 * and this is then returned as promotion character. The piece indicator
1771 * can be prefixed by a '+' to indicate it is a promoted piece.
1776 #define NO_CONSTRAINT -1
1779 #define UNPUT_BUF_SIZE YYLMAX
1782 /* yytext is probably a char*, but could be a char[]. yy_text is set
1783 in YY_DECL below, because if yytext is a char*, its value is not
1786 #else /*!FLEX_SCANNER*/
1787 /* yytext is definitely a char[], so yy_text can be set here, statically. */
1788 char *yy_text = (char *) yytext;
1794 #define YY_INPUT(buf, result, max_size) my_yy_input(buf, &result, max_size)
1797 int _yylex YY_PROTO((void)); \
1798 int yylex YY_PROTO((void)) \
1800 int result = _yylex(); \
1801 yy_text = (char *) yytext; \
1804 int _yylex YY_PROTO((void))
1812 /* The includes must be here, below the #undef input */
1817 # include <stdlib.h>
1818 # include <string.h>
1819 #else /* not STDC_HEADERS */
1821 # include <string.h>
1822 # else /* not HAVE_STRING_H */
1823 # include <strings.h>
1824 # endif /* not HAVE_STRING_H */
1825 #endif /* not STDC_HEADERS */
1828 # include <unistd.h>
1831 #if defined(_amigados)
1834 # include <fcntl.h> /* isatty() prototype */
1835 # endif /* HAVE_FCNTL_H */
1836 #endif /* defined(_amigados) */
1839 #include "backend.h"
1840 #include "frontend.h"
1844 extern int PosFlags P((int));
1846 extern Board boards[MAX_MOVES];
1848 int yyskipmoves = FALSE;
1849 char currentMoveString[YYLMAX];
1850 #ifndef FLEX_SCANNER
1851 char unputBuffer[UNPUT_BUF_SIZE];
1856 void my_yy_input P((char *buf, int *result, int max_size));
1857 #else /*!FLEX_SCANNER*/
1858 static int input P((void));
1859 static void output P((int ch));
1860 static void unput P((int ch));
1861 int yylook P((void));
1862 int yyback P((int *, int));
1865 int yywrap P((void));
1866 extern void CopyBoard P((Board to, Board from));
1869 /* Macros after this point can all be overridden by user definitions in
1873 #ifndef YY_SKIP_YYWRAP
1875 extern "C" int yywrap YY_PROTO(( void ));
1877 extern int yywrap YY_PROTO(( void ));
1882 static void yyunput YY_PROTO(( int c, char *buf_ptr ));
1886 static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
1889 #ifdef YY_NEED_STRLEN
1890 static int yy_flex_strlen YY_PROTO(( yyconst char * ));
1895 static int yyinput YY_PROTO(( void ));
1897 static int input YY_PROTO(( void ));
1902 static int yy_start_stack_ptr = 0;
1903 static int yy_start_stack_depth = 0;
1904 static int *yy_start_stack = 0;
1905 #ifndef YY_NO_PUSH_STATE
1906 static void yy_push_state YY_PROTO(( int new_state ));
1908 #ifndef YY_NO_POP_STATE
1909 static void yy_pop_state YY_PROTO(( void ));
1911 #ifndef YY_NO_TOP_STATE
1912 static int yy_top_state YY_PROTO(( void ));
1916 #define YY_NO_PUSH_STATE 1
1917 #define YY_NO_POP_STATE 1
1918 #define YY_NO_TOP_STATE 1
1921 #ifdef YY_MALLOC_DECL
1929 /* Just try to get by without declaring the routines. This will fail
1930 * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
1931 * or sizeof(void*) != sizeof(int).
1936 /* Amount of stuff to slurp up with each read. */
1937 #ifndef YY_READ_BUF_SIZE
1938 #define YY_READ_BUF_SIZE 8192
1941 /* Copy whatever the last rule matched to the standard output. */
1944 /* This used to be an fputs(), but since the string might contain NUL's,
1945 * we now use fwrite().
1947 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
1950 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
1951 * is returned in "result".
1954 #define YY_INPUT(buf,result,max_size) \
1955 if ( yy_current_buffer->yy_is_interactive ) \
1958 for ( n = 0; n < max_size && \
1959 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1960 buf[n] = (char) c; \
1962 buf[n++] = (char) c; \
1963 if ( c == EOF && ferror( yyin ) ) \
1964 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1970 while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
1972 if( errno != EINTR) \
1974 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1983 /* No semi-colon after return; correct usage is to write "yyterminate();" -
1984 * we don't want an extra ';' after the "return" because that will cause
1985 * some compilers to complain about unreachable statements.
1988 #define yyterminate() return YY_NULL
1991 /* Number of entries by which start-condition stack grows. */
1992 #ifndef YY_START_STACK_INCR
1993 #define YY_START_STACK_INCR 25
1996 /* Report a fatal error. */
1997 #ifndef YY_FATAL_ERROR
1998 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
2001 /* Default declaration of generated scanner - a define so the user can
2002 * easily add parameters.
2005 #define YY_DECL int yylex YY_PROTO(( void ))
2008 /* Code executed at the beginning of each rule, after yytext and yyleng
2011 #ifndef YY_USER_ACTION
2012 #define YY_USER_ACTION
2015 /* Code executed at the end of each rule. */
2017 #define YY_BREAK break;
2020 #define YY_RULE_SETUP \
2022 yy_current_buffer->yy_at_bol = \
2023 (yytext[yyleng - 1] == '\n'); \
2028 register yy_state_type yy_current_state;
2029 register char *yy_cp, *yy_bp;
2030 register int yy_act;
2044 yy_start = 1; /* first start state */
2052 if ( ! yy_current_buffer )
2054 yy_create_buffer( yyin, YY_BUF_SIZE );
2056 yy_load_buffer_state();
2059 while ( 1 ) /* loops until end-of-file is reached */
2063 /* Support of yytext. */
2064 *yy_cp = yy_hold_char;
2066 /* yy_bp points to the position in yy_ch_buf of the start of
2071 yy_current_state = yy_start;
2072 yy_current_state += YY_AT_BOL();
2073 yy_state_ptr = yy_state_buf;
2074 *yy_state_ptr++ = yy_current_state;
2078 register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
2079 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2081 yy_current_state = (int) yy_def[yy_current_state];
2082 if ( yy_current_state >= 697 )
2083 yy_c = yy_meta[(unsigned int) yy_c];
2085 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2086 *yy_state_ptr++ = yy_current_state;
2089 while ( yy_base[yy_current_state] != 4517 );
2092 yy_current_state = *--yy_state_ptr;
2093 yy_lp = yy_accept[yy_current_state];
2094 find_rule: /* we branch to this label when backing up */
2095 for ( ; ; ) /* until we find what rule we matched */
2097 if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] )
2099 yy_act = yy_acclist[yy_lp];
2100 if ( yy_act & YY_TRAILING_HEAD_MASK ||
2101 yy_looking_for_trail_begin )
2103 if ( yy_act == yy_looking_for_trail_begin )
2105 yy_looking_for_trail_begin = 0;
2106 yy_act &= ~YY_TRAILING_HEAD_MASK;
2110 else if ( yy_act & YY_TRAILING_MASK )
2112 yy_looking_for_trail_begin = yy_act & ~YY_TRAILING_MASK;
2113 yy_looking_for_trail_begin |= YY_TRAILING_HEAD_MASK;
2117 yy_full_match = yy_cp;
2118 yy_full_state = yy_state_ptr;
2126 yy_current_state = *--yy_state_ptr;
2127 yy_lp = yy_accept[yy_current_state];
2130 YY_DO_BEFORE_ACTION;
2133 do_action: /* This label is used only to access EOF actions. */
2137 { /* beginning of action switch */
2142 * Fully-qualified algebraic move, possibly with promotion
2144 int skip1 = 0, skip2 = 0, skip3 = 0, promoted = 0;
2149 if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
2151 if (yytext[0] == '+') skip1 = skip3 = promoted = 1; /* [HGM] Shogi promoted */
2154 if (yytext[1+skip1] == '/') skip1++;
2156 /* remove the [xX:-] */
2157 if ((yytext[3+skip1] == 'x') || (yytext[3+skip1] == 'X') ||
2158 (yytext[3+skip1] == '-') || (yytext[3+skip1] == ':')) skip2 = 1;
2160 currentMoveString[0] = yytext[1+skip1];
2161 currentMoveString[1] = yytext[2+skip1];
2162 currentMoveString[2] = yytext[3+skip1+skip2];
2163 currentMoveString[3] = yytext[4+skip1+skip2];
2164 currentMoveString[4] = NULLCHAR;
2166 if (appData.debugMode) {
2167 fprintf(debugFP, "Parser Qa1b2: yyleng=%d\n",
2171 if (yyleng-skip1-skip2 > 5) { char c;
2172 if (yytext[yyleng-1] == ')') {
2173 c = currentMoveString[4] = ToLower(yytext[yyleng-2]);
2175 c = currentMoveString[4] = ToLower(yytext[yyleng-1]);
2177 currentMoveString[5] = NULLCHAR;
2178 if(c != '=' && c != '+' && CharToPiece(c) == EmptySquare)
2179 return IllegalMove; /* [HGM] promotion to invalid piece */
2182 if (appData.debugMode) {
2183 fprintf(debugFP, "parser: %s\n", currentMoveString);
2185 /* [HGM] do not allow values beyond board size */
2186 if(currentMoveString[1] - ONE >= BOARD_HEIGHT ||
2187 currentMoveString[1] - ONE < 0 ||
2188 currentMoveString[0] - AAA >= BOARD_RGHT ||
2189 currentMoveString[3] - ONE >= BOARD_HEIGHT ||
2190 currentMoveString[3] - ONE < 0 ||
2191 currentMoveString[2] - AAA >= BOARD_RGHT ||
2192 currentMoveString[0] - AAA < BOARD_LEFT ||
2193 currentMoveString[2] - AAA < BOARD_LEFT )
2196 piece = boards[yyboardindex]
2197 [currentMoveString[1] - ONE][currentMoveString[0] - AAA];
2198 if(promoted) piece = (ChessSquare) (DEMOTED piece);
2199 c = PieceToChar(piece);
2200 if(c == '~') c = PieceToChar((ChessSquare) (DEMOTED piece));
2201 if (ToLower(yytext[skip3]) != ToLower(c))
2202 return (int) IllegalMove;
2204 result = LegalityTest(boards[yyboardindex],
2205 PosFlags(yyboardindex), EP_UNKNOWN,
2206 initialRights, /* [HGM] assume all castlings allowed */
2207 currentMoveString[1] - ONE,
2208 currentMoveString[0] - AAA,
2209 currentMoveString[3] - ONE,
2210 currentMoveString[2] - AAA,
2211 currentMoveString[4]);
2213 if (currentMoveString[4] == NULLCHAR &&
2214 (result == WhitePromotionKnight || result == BlackPromotionKnight ||
2215 result == WhitePromotionQueen || result == BlackPromotionQueen)) {
2216 currentMoveString[4] = PieceToChar(BlackQueen);
2217 currentMoveString[5] = NULLCHAR;
2220 return (int) result;
2227 * Simple algebraic move, possibly with promotion
2228 * [HGM] Engine moves are received in this format, with lower-case promoChar!
2233 if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
2235 /* remove the [xX:-] */
2236 if ((yytext[2] == 'x') || (yytext[2] == 'X') ||
2237 (yytext[2] == '-') || (yytext[2] == ':')) skip = 1;
2239 currentMoveString[0] = yytext[0];
2240 currentMoveString[1] = yytext[1];
2241 currentMoveString[2] = yytext[2+skip];
2242 currentMoveString[3] = yytext[3+skip];
2243 currentMoveString[4] = NULLCHAR;
2245 if (yyleng-skip > 4) { char c;
2246 if (yytext[yyleng-1] == ')') {
2247 c = currentMoveString[4] = ToLower(yytext[yyleng-2]);
2249 c = currentMoveString[4] = ToLower(yytext[yyleng-1]);
2251 currentMoveString[5] = NULLCHAR;
2252 if(c != '=' && c != '+' && CharToPiece(c) == EmptySquare)
2256 /* [HGM] do not allow values beyond board size */
2257 if(currentMoveString[1] - ONE >= BOARD_HEIGHT ||
2258 currentMoveString[1] - ONE < 0 ||
2259 currentMoveString[0] - AAA >= BOARD_RGHT ||
2260 currentMoveString[3] - ONE >= BOARD_HEIGHT ||
2261 currentMoveString[3] - ONE < 0 ||
2262 currentMoveString[2] - AAA >= BOARD_RGHT ||
2263 currentMoveString[0] - AAA < BOARD_LEFT ||
2264 currentMoveString[2] - AAA < BOARD_LEFT )
2267 result = LegalityTest(boards[yyboardindex],
2268 PosFlags(yyboardindex), EP_UNKNOWN,
2269 initialRights, /* [HGM] assume all castlings allowed */
2270 currentMoveString[1] - ONE,
2271 currentMoveString[0] - AAA,
2272 currentMoveString[3] - ONE,
2273 currentMoveString[2] - AAA,
2274 currentMoveString[4]);
2276 if (currentMoveString[4] == NULLCHAR &&
2277 (result == WhitePromotionKnight || result == BlackPromotionKnight ||
2278 result == WhitePromotionQueen || result == BlackPromotionQueen)) {
2279 if(gameInfo.variant == VariantShatranj || gameInfo.variant == VariantCourier)
2280 currentMoveString[4] = PieceToChar(BlackFerz);
2281 else if(gameInfo.variant == VariantGreat)
2282 currentMoveString[4] = PieceToChar(BlackMan);
2284 currentMoveString[4] = PieceToChar(BlackQueen);
2285 currentMoveString[5] = NULLCHAR;
2288 return (int) result;
2295 * Pawn move, possibly with promotion
2297 DisambiguateClosure cl;
2298 int skip = 0; char c;
2300 if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
2302 /* remove the =() */
2303 if (yytext[2] == '=' && yytext[3] != NULLCHAR) skip++;
2304 if (yytext[2+skip] == '(') skip++;
2306 cl.pieceIn = WhiteOnMove(yyboardindex) ? WhitePawn : BlackPawn;
2308 cl.ffIn = yytext[0] - AAA;
2309 cl.rtIn = yytext[1] - ONE;
2310 cl.ftIn = yytext[0] - AAA;
2311 c = cl.promoCharIn = yytext[2+skip];
2313 /* [HGM] do not allow values beyond board size */
2314 if(cl.rtIn >= BOARD_HEIGHT ||
2316 cl.ffIn >= BOARD_RGHT ||
2317 cl.ftIn < BOARD_LEFT )
2320 if(c != '=' && c != '+' && c != NULLCHAR && CharToPiece(c) == EmptySquare)
2324 Disambiguate(boards[yyboardindex],
2325 PosFlags(yyboardindex), EP_UNKNOWN, &cl);
2327 currentMoveString[0] = cl.ff + AAA;
2328 currentMoveString[1] = cl.rf + ONE;
2329 currentMoveString[2] = cl.ft + AAA;
2330 currentMoveString[3] = cl.rt + ONE;
2331 currentMoveString[4] = cl.promoChar;
2332 currentMoveString[5] = NULLCHAR;
2334 return (int) cl.kind;
2341 * Pawn capture, possibly with promotion, possibly ambiguous
2343 DisambiguateClosure cl;
2344 int skip1 = 0, skip2 = 0; char c;
2346 if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
2348 /* remove trailing ep or e.p. (nonstandard PGN) */
2349 if (yytext[yyleng-1] == 'p') {
2351 yytext[yyleng] = NULLCHAR;
2352 } else if (yytext[yyleng-1] == '.') {
2354 yytext[yyleng] = NULLCHAR;
2357 /* remove the [xX:-] and =() */
2358 if ((yytext[1] == 'x') || (yytext[1] == 'X')
2359 || (yytext[1] == ':') || (yytext[1] == '-')) skip1 = 1;
2360 if (yytext[2+skip1] == '=' && yytext[3+skip1] != NULLCHAR) skip2++;
2361 if (yytext[2+skip1+skip2] == '(') skip2++;
2363 cl.pieceIn = WhiteOnMove(yyboardindex) ? WhitePawn : BlackPawn;
2365 cl.ffIn = yytext[0] - AAA;
2367 cl.ftIn = yytext[1+skip1] - AAA;
2368 c = cl.promoCharIn = yytext[2+skip1+skip2];
2370 /* [HGM] do not allow values beyond board size */
2371 if(cl.ffIn >= BOARD_RGHT ||
2372 cl.ffIn < BOARD_LEFT ||
2373 cl.ftIn >= BOARD_RGHT ||
2374 cl.ftIn < BOARD_LEFT )
2377 if(c != '=' && c != '+' && c != NULLCHAR && CharToPiece(c) == EmptySquare)
2380 Disambiguate(boards[yyboardindex],
2381 PosFlags(yyboardindex), EP_UNKNOWN, &cl);
2383 currentMoveString[0] = cl.ff + AAA;
2384 currentMoveString[1] = cl.rf + ONE;
2385 currentMoveString[2] = cl.ft + AAA;
2386 currentMoveString[3] = cl.rt + ONE;
2387 currentMoveString[4] = cl.promoChar;
2388 currentMoveString[5] = NULLCHAR;
2390 return (int) cl.kind;
2397 * unambiguously abbreviated Pawn capture, possibly with promotion
2400 ChessMove result; char c;
2402 if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
2404 /* remove trailing ep or e.p. (nonstandard PGN) */
2405 if (yytext[yyleng-1] == 'p') {
2407 yytext[yyleng] = NULLCHAR;
2408 } else if (yytext[yyleng-1] == '.') {
2410 yytext[yyleng] = NULLCHAR;
2413 /* remove the [xX:-] */
2414 if ((yytext[1] == 'x') || (yytext[1] == 'X')
2415 || (yytext[1] == ':') || (yytext[1] == '-')) skip = 1;
2417 currentMoveString[0] = yytext[0];
2418 currentMoveString[2] = yytext[1+skip];
2419 currentMoveString[3] = yytext[2+skip];
2421 /* [HGM] do not allow values beyond board size */
2422 if(currentMoveString[0] - AAA >= BOARD_RGHT ||
2423 currentMoveString[3] - ONE >= BOARD_HEIGHT ||
2424 currentMoveString[3] - ONE < 0 ||
2425 currentMoveString[2] - AAA >= BOARD_RGHT ||
2426 currentMoveString[0] - AAA < BOARD_LEFT ||
2427 currentMoveString[2] - AAA < BOARD_LEFT )
2430 if (gameInfo.variant == VariantXiangqi && /* [HGM] In Xiangqi rank stays same */
2431 currentMoveString[0] != currentMoveString[2] ) {
2432 currentMoveString[1] = yytext[2+skip];
2434 if (WhiteOnMove(yyboardindex)) {
2435 if (yytext[2+skip] == ONE) return (int) ImpossibleMove;
2436 currentMoveString[1] = yytext[2+skip] - 1;
2438 currentMoveString[1] = currentMoveString[3] + 1;
2439 if (currentMoveString[3] == ONE+BOARD_HEIGHT-1) return (int) ImpossibleMove;
2441 if (yyleng-skip > 3) {
2442 if (yytext[yyleng-1] == ')')
2443 c = currentMoveString[4] = ToLower(yytext[yyleng-2]);
2445 c = currentMoveString[4] = ToLower(yytext[yyleng-1]);
2446 currentMoveString[5] = NULLCHAR;
2447 if(c != '=' && c != '+' && CharToPiece(c) == EmptySquare)
2450 currentMoveString[4] = NULLCHAR;
2453 result = LegalityTest(boards[yyboardindex],
2454 PosFlags(yyboardindex), EP_UNKNOWN,
2455 initialRights, /* [HGM] assume all castlings allowed */
2456 currentMoveString[1] - ONE,
2457 currentMoveString[0] - AAA,
2458 currentMoveString[3] - ONE,
2459 currentMoveString[2] - AAA,
2460 currentMoveString[4]);
2462 if (currentMoveString[4] == NULLCHAR &&
2463 (result == WhitePromotionQueen || result == BlackPromotionQueen ||
2464 result == WhitePromotionKnight || result == BlackPromotionKnight)) {
2465 currentMoveString[4] = PieceToChar(BlackQueen);
2466 // [HGM] shatranj: take care of variants without Queen
2467 if(gameInfo.variant == VariantShatranj || gameInfo.variant == VariantCourier)
2468 currentMoveString[4] = PieceToChar(BlackFerz);
2469 if(gameInfo.variant == VariantGreat)
2470 currentMoveString[4] = PieceToChar(BlackMan);
2471 currentMoveString[5] = NULLCHAR;
2474 if (result != IllegalMove) return (int) result;
2476 /* Special case: improperly written en passant capture */
2477 if (WhiteOnMove(yyboardindex)) {
2478 if (currentMoveString[3] == '5') {
2479 currentMoveString[1] = '5';
2480 currentMoveString[3] = '6';
2482 return (int) IllegalMove;
2485 if (currentMoveString[3] == '4') {
2486 currentMoveString[1] = '4';
2487 currentMoveString[3] = '3';
2489 return (int) IllegalMove;
2493 result = LegalityTest(boards[yyboardindex],
2494 PosFlags(yyboardindex), EP_UNKNOWN,
2495 initialRights, /* [HGM] assume all castlings allowed */
2496 currentMoveString[1] - ONE,
2497 currentMoveString[0] - AAA,
2498 currentMoveString[3] - ONE,
2499 currentMoveString[2] - AAA,
2500 currentMoveString[4]);
2502 if (result == WhiteCapturesEnPassant || result == BlackCapturesEnPassant)
2503 return (int) result;
2505 return (int) IllegalMove;
2512 * piece move, possibly ambiguous
2514 DisambiguateClosure cl;
2515 int skip = 0, skip2 = 0, promoted = 0;
2517 if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
2519 if(yytext[0] == '+') promoted = skip = skip2 = 1;
2521 /* remove the [xX:-] */
2522 if ((yytext[1+skip] == 'x') || (yytext[1+skip] == 'X')
2523 || (yytext[1+skip] == ':') || (yytext[1+skip] == '-')) skip++;
2525 if (WhiteOnMove(yyboardindex)) {
2526 cl.pieceIn = CharToPiece(ToUpper(yytext[skip2]));
2528 cl.pieceIn = CharToPiece(ToLower(yytext[skip2]));
2530 if(promoted) cl.pieceIn = (ChessSquare) (PROMOTED cl.pieceIn);
2534 cl.rtIn = yytext[2+skip] - ONE;
2535 cl.ftIn = yytext[1+skip] - AAA;
2536 cl.promoCharIn = NULLCHAR;
2538 if(yyleng-skip > 3) /* [HGM] can have Shogi-style promotion */
2539 cl.promoCharIn = yytext[yyleng-1];
2541 if (appData.debugMode) {
2542 fprintf(debugFP, "Parser Qa1: yyleng=%d, %d(%d,%d)-(%d,%d) = %d (%c)\n",
2544 cl.pieceIn,cl.ffIn,cl.rfIn,cl.ftIn,cl.rtIn,cl.promoCharIn,cl.promoCharIn?cl.promoCharIn:' ');
2547 /* [HGM] but do not allow values beyond board size */
2548 if(cl.rtIn >= BOARD_HEIGHT ||
2550 cl.ftIn >= BOARD_RGHT ||
2551 cl.ftIn < BOARD_LEFT )
2554 Disambiguate(boards[yyboardindex],
2555 PosFlags(yyboardindex), EP_UNKNOWN, &cl);
2557 currentMoveString[0] = cl.ff + AAA;
2558 currentMoveString[1] = cl.rf + ONE;
2559 currentMoveString[2] = cl.ft + AAA;
2560 currentMoveString[3] = cl.rt + ONE;
2561 currentMoveString[4] = cl.promoChar;
2562 currentMoveString[5] = NULLCHAR;
2564 return (int) cl.kind;
2571 * piece move with rank or file disambiguator
2573 DisambiguateClosure cl;
2574 int skip = 0, skip2 = 0; int promoted=0;
2576 if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
2578 if(yytext[0]=='+') promoted = skip = skip2 = 1;
2580 /* remove the [xX:-] */
2581 if ((yytext[2+skip] == 'x') || (yytext[2+skip] == 'X')
2582 || (yytext[2+skip] == ':') || (yytext[2+skip] == '-')) skip++;
2584 if (WhiteOnMove(yyboardindex)) {
2585 cl.pieceIn = CharToPiece(ToUpper(yytext[skip2]));
2587 cl.pieceIn = CharToPiece(ToLower(yytext[skip2]));
2589 if(promoted) cl.pieceIn = (ChessSquare) (PROMOTED cl.pieceIn);
2591 if (isalpha(yytext[1+skip2])) {
2593 cl.ffIn = yytext[1+skip2] - AAA;
2595 if(cl.ffIn >= BOARD_RGHT ||
2596 cl.ffIn < BOARD_LEFT ) return 0;
2598 cl.rfIn = yytext[1+skip2] - ONE;
2600 if(cl.rfIn >= BOARD_HEIGHT ||
2601 cl.rfIn < 0) return 0;
2603 cl.rtIn = yytext[3+skip] - ONE;
2604 cl.ftIn = yytext[2+skip] - AAA;
2605 cl.promoCharIn = NULLCHAR;
2607 if(yyleng-skip > 4) /* [HGM] can have Shogi-style promotion */
2608 cl.promoCharIn = yytext[yyleng-1];
2610 /* [HGM] do not allow values beyond board size */
2611 if(cl.rtIn >= BOARD_HEIGHT ||
2613 cl.ftIn >= BOARD_RGHT ||
2614 cl.ftIn < BOARD_LEFT )
2617 Disambiguate(boards[yyboardindex],
2618 PosFlags(yyboardindex), EP_UNKNOWN, &cl);
2620 currentMoveString[0] = cl.ff + AAA;
2621 currentMoveString[1] = cl.rf + ONE;
2622 currentMoveString[2] = cl.ft + AAA;
2623 currentMoveString[3] = cl.rt + ONE;
2624 currentMoveString[4] = cl.promoChar;
2625 currentMoveString[5] = NULLCHAR;
2627 return (int) cl.kind;
2635 if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
2637 /* [HGM] all squares referenced to board edges in stead of absolute */
2638 if (WhiteOnMove(yyboardindex)) {
2639 if (boards[yyboardindex][0][(BOARD_WIDTH-1)>>1] == WhiteKing) {
2640 /* ICS wild castling */
2642 ff = (BOARD_WIDTH-1)>>1;
2647 ff = BOARD_WIDTH>>1;
2652 if (boards[yyboardindex][BOARD_HEIGHT-1][(BOARD_WIDTH-1)>>1] == BlackKing) {
2653 /* ICS wild castling */
2654 rf = BOARD_HEIGHT-1;
2655 ff = (BOARD_WIDTH-1)>>1;
2656 rt = BOARD_HEIGHT-1;
2659 rf = BOARD_HEIGHT-1;
2660 ff = BOARD_WIDTH>>1;
2661 rt = BOARD_HEIGHT-1;
2665 if(gameInfo.variant == VariantFischeRandom) {
2666 if (WhiteOnMove(yyboardindex)) {
2667 ff = initialRights[2];
2668 ft = initialRights[1];
2670 ff = initialRights[5];
2671 ft = initialRights[4];
2673 fprintf(debugFP, "Parser FRC long %d %d\n", ff, ft);
2674 if(ff < 0 || ft < 0) return 0;
2676 sprintf(currentMoveString, "%c%c%c%c",ff+AAA,rf+ONE,ft+AAA,rt+ONE);
2677 if (appData.debugMode) {
2678 fprintf(debugFP, "long castling %d %d\n", ff, ft);
2680 return (int) LegalityTest(boards[yyboardindex],
2681 PosFlags(yyboardindex), EP_UNKNOWN,
2682 castlingRights[yyboardindex], /* [HGM] use true castling rights */
2683 rf, ff, rt, ft, NULLCHAR);
2691 if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
2693 if (WhiteOnMove(yyboardindex)) {
2694 if (boards[yyboardindex][0][(BOARD_WIDTH-1)>>1] == WhiteKing) {
2695 /* ICS wild castling */
2697 ff = (BOARD_WIDTH-1)>>1;
2702 ff = BOARD_WIDTH>>1;
2707 if (boards[yyboardindex][BOARD_HEIGHT-1][(BOARD_WIDTH-1)>>1] == BlackKing) {
2708 /* ICS wild castling */
2709 rf = BOARD_HEIGHT-1;
2710 ff = (BOARD_WIDTH-1)>>1;
2711 rt = BOARD_HEIGHT-1;
2714 rf = BOARD_HEIGHT-1;
2715 ff = BOARD_WIDTH>>1;
2716 rt = BOARD_HEIGHT-1;
2720 if(gameInfo.variant == VariantFischeRandom) {
2721 if (WhiteOnMove(yyboardindex)) {
2722 ff = initialRights[2];
2723 ft = initialRights[0];
2725 ff = initialRights[5];
2726 ft = initialRights[3];
2728 if (appData.debugMode) {
2729 fprintf(debugFP, "Parser FRC short %d %d\n", ff, ft);
2731 if(ff < 0 || ft < 0) return 0;
2733 sprintf(currentMoveString, "%c%c%c%c",ff+AAA,rf+ONE,ft+AAA,rt+ONE);
2734 if (appData.debugMode) {
2735 fprintf(debugFP, "short castling %d %d\n", ff, ft);
2738 return (int) LegalityTest(boards[yyboardindex],
2739 PosFlags(yyboardindex), EP_UNKNOWN,
2740 castlingRights[yyboardindex], /* [HGM] use true castling rights */
2741 rf, ff, rt, ft, NULLCHAR);
2747 /* Bughouse piece drop. No legality checking for now. */
2748 currentMoveString[1] = '@';
2749 currentMoveString[2] = yytext[2];
2750 currentMoveString[3] = yytext[3];
2751 currentMoveString[4] = NULLCHAR;
2753 if (appData.debugMode) {
2754 fprintf(debugFP, "Drop: %s\n", currentMoveString);
2756 /* [HGM] do not allow values beyond board size */
2757 if(currentMoveString[3] - ONE >= BOARD_HEIGHT ||
2758 currentMoveString[2] - AAA >= BOARD_WIDTH )
2761 if (WhiteOnMove(yyboardindex)) {
2762 currentMoveString[0] = ToUpper(yytext[0]);
2763 return (int) WhiteDrop;
2765 currentMoveString[0] = ToLower(yytext[0]);
2766 return (int) BlackDrop;
2773 if (WhiteOnMove(yyboardindex))
2774 return (int) BlackWins;
2776 return (int) WhiteWins;
2782 return (int) (ToUpper(yytext[0]) == 'W' ? BlackWins : WhiteWins);
2788 return (int) GameUnfinished;
2794 return (int) GameIsDrawn;
2800 return (int) GameIsDrawn;
2806 if (WhiteOnMove(yyboardindex))
2807 return (int) BlackWins;
2809 return (int) WhiteWins;
2815 if (WhiteOnMove(yyboardindex))
2816 return (int) BlackWins;
2818 return (int) WhiteWins;
2824 return (int) GameIsDrawn;
2830 return (int) GameIsDrawn;
2836 return (int) (ToUpper(yytext[0]) == 'W' ? WhiteWins : BlackWins);
2842 return (int) (ToUpper(yytext[0]) == 'W' ? BlackWins : WhiteWins);
2848 return (int) WhiteWins;
2854 return (int) BlackWins;
2860 return (int) GameIsDrawn;
2866 return (int) GameUnfinished;
2873 if ((yyleng == 1) && (yytext[0] == '1'))
2874 return (int) MoveNumberOne;
2880 /* elapsed time indication, e.g. (0:12) or {10:21.071} */
2881 return (int) ElapsedTime;
2887 /* position diagram enclosed in [-- --] */
2888 return (int) PositionDiagram;
2892 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2893 yy_c_buf_p = yy_cp -= 1;
2894 YY_DO_BEFORE_ACTION; /* set up yytext again */
2897 /* position diagram enclosed in {-- --} */
2898 return (int) PositionDiagram;
2904 return (int) PGNTag;
2910 return (int) GNUChessGame;
2914 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2915 yy_c_buf_p = yy_cp -= 1;
2916 YY_DO_BEFORE_ACTION; /* set up yytext again */
2919 return (int) XBoardGame;
2924 { /* numeric annotation glyph */
2930 { /* anything in {} */
2931 return (int) Comment;
2935 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2936 yy_c_buf_p = yy_cp -= 1;
2937 YY_DO_BEFORE_ACTION; /* set up yytext again */
2939 { /* ; to end of line */
2940 return (int) Comment;
2945 { /* anything in [] */
2946 return (int) Comment;
2952 return (int) Comment;
2957 { /* >=2 chars in () */
2958 return (int) Comment;
2964 /* Skip mail headers */
2970 /* Skip random words */
2976 /* Skip everything else */
2983 case YY_STATE_EOF(INITIAL):
2986 case YY_END_OF_BUFFER:
2988 /* Amount of text matched not including the EOB char. */
2989 int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
2991 /* Undo the effects of YY_DO_BEFORE_ACTION. */
2992 *yy_cp = yy_hold_char;
2993 YY_RESTORE_YY_MORE_OFFSET
2995 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
2997 /* We're scanning a new file or input source. It's
2998 * possible that this happened because the user
2999 * just pointed yyin at a new source and called
3000 * yylex(). If so, then we have to assure
3001 * consistency between yy_current_buffer and our
3002 * globals. Here is the right place to do so, because
3003 * this is the first action (other than possibly a
3004 * back-up) that will match for the new input source.
3006 yy_n_chars = yy_current_buffer->yy_n_chars;
3007 yy_current_buffer->yy_input_file = yyin;
3008 yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
3011 /* Note that here we test for yy_c_buf_p "<=" to the position
3012 * of the first EOB in the buffer, since yy_c_buf_p will
3013 * already have been incremented past the NUL character
3014 * (since all states make transitions on EOB to the
3015 * end-of-buffer state). Contrast this with the test
3018 if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
3019 { /* This was really a NUL. */
3020 yy_state_type yy_next_state;
3022 yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
3024 yy_current_state = yy_get_previous_state();
3026 /* Okay, we're now positioned to make the NUL
3027 * transition. We couldn't have
3028 * yy_get_previous_state() go ahead and do it
3029 * for us because it doesn't know how to deal
3030 * with the possibility of jamming (and we don't
3031 * want to build jamming into it because then it
3032 * will run more slowly).
3035 yy_next_state = yy_try_NUL_trans( yy_current_state );
3037 yy_bp = yytext_ptr + YY_MORE_ADJ;
3039 if ( yy_next_state )
3041 /* Consume the NUL. */
3042 yy_cp = ++yy_c_buf_p;
3043 yy_current_state = yy_next_state;
3050 goto yy_find_action;
3054 else switch ( yy_get_next_buffer() )
3056 case EOB_ACT_END_OF_FILE:
3058 yy_did_buffer_switch_on_eof = 0;
3062 /* Note: because we've taken care in
3063 * yy_get_next_buffer() to have set up
3064 * yytext, we can now set up
3065 * yy_c_buf_p so that if some total
3066 * hoser (like flex itself) wants to
3067 * call the scanner after we return the
3068 * YY_NULL, it'll still work - another
3069 * YY_NULL will get returned.
3071 yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
3073 yy_act = YY_STATE_EOF(YY_START);
3079 if ( ! yy_did_buffer_switch_on_eof )
3085 case EOB_ACT_CONTINUE_SCAN:
3087 yytext_ptr + yy_amount_of_matched_text;
3089 yy_current_state = yy_get_previous_state();
3092 yy_bp = yytext_ptr + YY_MORE_ADJ;
3095 case EOB_ACT_LAST_MATCH:
3097 &yy_current_buffer->yy_ch_buf[yy_n_chars];
3099 yy_current_state = yy_get_previous_state();
3102 yy_bp = yytext_ptr + YY_MORE_ADJ;
3103 goto yy_find_action;
3110 "fatal flex scanner internal error--no action found" );
3111 } /* end of action switch */
3112 } /* end of scanning one token */
3113 } /* end of yylex */
3116 /* yy_get_next_buffer - try to read in a new buffer
3118 * Returns a code representing an action:
3119 * EOB_ACT_LAST_MATCH -
3120 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
3121 * EOB_ACT_END_OF_FILE - end of file
3124 static int yy_get_next_buffer()
3126 register char *dest = yy_current_buffer->yy_ch_buf;
3127 register char *source = yytext_ptr;
3128 register int number_to_move, i;
3131 if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
3133 "fatal flex scanner internal error--end of buffer missed" );
3135 if ( yy_current_buffer->yy_fill_buffer == 0 )
3136 { /* Don't try to fill the buffer, so this is an EOF. */
3137 if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
3139 /* We matched a single character, the EOB, so
3140 * treat this as a final EOF.
3142 return EOB_ACT_END_OF_FILE;
3147 /* We matched some text prior to the EOB, first
3150 return EOB_ACT_LAST_MATCH;
3154 /* Try to read more data. */
3156 /* First move last chars to start of buffer. */
3157 number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
3159 for ( i = 0; i < number_to_move; ++i )
3160 *(dest++) = *(source++);
3162 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
3163 /* don't do the read, it's not guaranteed to return an EOF,
3166 yy_current_buffer->yy_n_chars = yy_n_chars = 0;
3171 yy_current_buffer->yy_buf_size - number_to_move - 1;
3173 while ( num_to_read <= 0 )
3174 { /* Not enough room in the buffer - grow it. */
3175 #ifdef YY_USES_REJECT
3177 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
3180 /* just a shorter name for the current buffer */
3181 YY_BUFFER_STATE b = yy_current_buffer;
3183 int yy_c_buf_p_offset =
3184 (int) (yy_c_buf_p - b->yy_ch_buf);
3186 if ( b->yy_is_our_buffer )
3188 int new_size = b->yy_buf_size * 2;
3190 if ( new_size <= 0 )
3191 b->yy_buf_size += b->yy_buf_size / 8;
3193 b->yy_buf_size *= 2;
3195 b->yy_ch_buf = (char *)
3196 /* Include room in for 2 EOB chars. */
3197 yy_flex_realloc( (void *) b->yy_ch_buf,
3198 b->yy_buf_size + 2 );
3201 /* Can't grow it, we don't own it. */
3204 if ( ! b->yy_ch_buf )
3206 "fatal error - scanner input buffer overflow" );
3208 yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
3210 num_to_read = yy_current_buffer->yy_buf_size -
3215 if ( num_to_read > YY_READ_BUF_SIZE )
3216 num_to_read = YY_READ_BUF_SIZE;
3218 /* Read in more data. */
3219 YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
3220 yy_n_chars, num_to_read );
3222 yy_current_buffer->yy_n_chars = yy_n_chars;
3225 if ( yy_n_chars == 0 )
3227 if ( number_to_move == YY_MORE_ADJ )
3229 ret_val = EOB_ACT_END_OF_FILE;
3235 ret_val = EOB_ACT_LAST_MATCH;
3236 yy_current_buffer->yy_buffer_status =
3237 YY_BUFFER_EOF_PENDING;
3242 ret_val = EOB_ACT_CONTINUE_SCAN;
3244 yy_n_chars += number_to_move;
3245 yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
3246 yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
3248 yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
3254 /* yy_get_previous_state - get the state just before the EOB char was reached */
3256 static yy_state_type yy_get_previous_state()
3258 register yy_state_type yy_current_state;
3259 register char *yy_cp;
3261 yy_current_state = yy_start;
3262 yy_current_state += YY_AT_BOL();
3263 yy_state_ptr = yy_state_buf;
3264 *yy_state_ptr++ = yy_current_state;
3266 for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
3268 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
3269 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3271 yy_current_state = (int) yy_def[yy_current_state];
3272 if ( yy_current_state >= 697 )
3273 yy_c = yy_meta[(unsigned int) yy_c];
3275 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
3276 *yy_state_ptr++ = yy_current_state;
3279 return yy_current_state;
3283 /* yy_try_NUL_trans - try to make a transition on the NUL character
3286 * next_state = yy_try_NUL_trans( current_state );
3289 #ifdef YY_USE_PROTOS
3290 static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
3292 static yy_state_type yy_try_NUL_trans( yy_current_state )
3293 yy_state_type yy_current_state;
3296 register int yy_is_jam;
3298 register YY_CHAR yy_c = 1;
3299 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3301 yy_current_state = (int) yy_def[yy_current_state];
3302 if ( yy_current_state >= 697 )
3303 yy_c = yy_meta[(unsigned int) yy_c];
3305 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
3306 yy_is_jam = (yy_current_state == 696);
3308 *yy_state_ptr++ = yy_current_state;
3310 return yy_is_jam ? 0 : yy_current_state;
3315 #ifdef YY_USE_PROTOS
3316 static void yyunput( int c, register char *yy_bp )
3318 static void yyunput( c, yy_bp )
3320 register char *yy_bp;
3323 register char *yy_cp = yy_c_buf_p;
3325 /* undo effects of setting up yytext */
3326 *yy_cp = yy_hold_char;
3328 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
3329 { /* need to shift things up to make room */
3330 /* +2 for EOB chars. */
3331 register int number_to_move = yy_n_chars + 2;
3332 register char *dest = &yy_current_buffer->yy_ch_buf[
3333 yy_current_buffer->yy_buf_size + 2];
3334 register char *source =
3335 &yy_current_buffer->yy_ch_buf[number_to_move];
3337 while ( source > yy_current_buffer->yy_ch_buf )
3338 *--dest = *--source;
3340 yy_cp += (int) (dest - source);
3341 yy_bp += (int) (dest - source);
3342 yy_current_buffer->yy_n_chars =
3343 yy_n_chars = yy_current_buffer->yy_buf_size;
3345 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
3346 YY_FATAL_ERROR( "flex scanner push-back overflow" );
3349 *--yy_cp = (char) c;
3353 yy_hold_char = *yy_cp;
3356 #endif /* ifndef YY_NO_UNPUT */
3360 static int yyinput()
3367 *yy_c_buf_p = yy_hold_char;
3369 if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
3371 /* yy_c_buf_p now points to the character we want to return.
3372 * If this occurs *before* the EOB characters, then it's a
3373 * valid NUL; if not, then we've hit the end of the buffer.
3375 if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
3376 /* This was really a NUL. */
3380 { /* need more input */
3381 int offset = yy_c_buf_p - yytext_ptr;
3384 switch ( yy_get_next_buffer() )
3386 case EOB_ACT_LAST_MATCH:
3387 /* This happens because yy_g_n_b()
3388 * sees that we've accumulated a
3389 * token and flags that we need to
3390 * try matching the token before
3391 * proceeding. But for input(),
3392 * there's no matching to consider.
3393 * So convert the EOB_ACT_LAST_MATCH
3394 * to EOB_ACT_END_OF_FILE.
3397 /* Reset buffer status. */
3402 case EOB_ACT_END_OF_FILE:
3407 if ( ! yy_did_buffer_switch_on_eof )
3416 case EOB_ACT_CONTINUE_SCAN:
3417 yy_c_buf_p = yytext_ptr + offset;
3423 c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */
3424 *yy_c_buf_p = '\0'; /* preserve yytext */
3425 yy_hold_char = *++yy_c_buf_p;
3427 yy_current_buffer->yy_at_bol = (c == '\n');
3433 #ifdef YY_USE_PROTOS
3434 void yyrestart( FILE *input_file )
3436 void yyrestart( input_file )
3440 if ( ! yy_current_buffer )
3441 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
3443 yy_init_buffer( yy_current_buffer, input_file );
3444 yy_load_buffer_state();
3448 #ifdef YY_USE_PROTOS
3449 void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
3451 void yy_switch_to_buffer( new_buffer )
3452 YY_BUFFER_STATE new_buffer;
3455 if ( yy_current_buffer == new_buffer )
3458 if ( yy_current_buffer )
3460 /* Flush out information for old buffer. */
3461 *yy_c_buf_p = yy_hold_char;
3462 yy_current_buffer->yy_buf_pos = yy_c_buf_p;
3463 yy_current_buffer->yy_n_chars = yy_n_chars;
3466 yy_current_buffer = new_buffer;
3467 yy_load_buffer_state();
3469 /* We don't actually know whether we did this switch during
3470 * EOF (yywrap()) processing, but the only time this flag
3471 * is looked at is after yywrap() is called, so it's safe
3472 * to go ahead and always set it.
3474 yy_did_buffer_switch_on_eof = 1;
3478 #ifdef YY_USE_PROTOS
3479 void yy_load_buffer_state( void )
3481 void yy_load_buffer_state()
3484 yy_n_chars = yy_current_buffer->yy_n_chars;
3485 yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
3486 yyin = yy_current_buffer->yy_input_file;
3487 yy_hold_char = *yy_c_buf_p;
3491 #ifdef YY_USE_PROTOS
3492 YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
3494 YY_BUFFER_STATE yy_create_buffer( file, size )
3501 b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
3503 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
3505 b->yy_buf_size = size;
3507 /* yy_ch_buf has to be 2 characters longer than the size given because
3508 * we need to put in 2 end-of-buffer characters.
3510 b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
3511 if ( ! b->yy_ch_buf )
3512 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
3514 b->yy_is_our_buffer = 1;
3516 yy_init_buffer( b, file );
3522 #ifdef YY_USE_PROTOS
3523 void yy_delete_buffer( YY_BUFFER_STATE b )
3525 void yy_delete_buffer( b )
3532 if ( b == yy_current_buffer )
3533 yy_current_buffer = (YY_BUFFER_STATE) 0;
3535 if ( b->yy_is_our_buffer )
3536 yy_flex_free( (void *) b->yy_ch_buf );
3538 yy_flex_free( (void *) b );
3545 #ifndef YY_ALWAYS_INTERACTIVE
3546 #ifndef YY_NEVER_INTERACTIVE
3547 extern int isatty YY_PROTO(( int ));
3552 #ifdef YY_USE_PROTOS
3553 void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
3555 void yy_init_buffer( b, file )
3562 yy_flush_buffer( b );
3564 b->yy_input_file = file;
3565 b->yy_fill_buffer = 1;
3567 #if YY_ALWAYS_INTERACTIVE
3568 b->yy_is_interactive = 1;
3570 #if YY_NEVER_INTERACTIVE
3571 b->yy_is_interactive = 0;
3573 b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
3579 #ifdef YY_USE_PROTOS
3580 void yy_flush_buffer( YY_BUFFER_STATE b )
3582 void yy_flush_buffer( b )
3592 /* We always need two end-of-buffer characters. The first causes
3593 * a transition to the end-of-buffer state. The second causes
3594 * a jam in that state.
3596 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
3597 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
3599 b->yy_buf_pos = &b->yy_ch_buf[0];
3602 b->yy_buffer_status = YY_BUFFER_NEW;
3604 if ( b == yy_current_buffer )
3605 yy_load_buffer_state();
3609 #ifndef YY_NO_SCAN_BUFFER
3610 #ifdef YY_USE_PROTOS
3611 YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
3613 YY_BUFFER_STATE yy_scan_buffer( base, size )
3621 base[size-2] != YY_END_OF_BUFFER_CHAR ||
3622 base[size-1] != YY_END_OF_BUFFER_CHAR )
3623 /* They forgot to leave room for the EOB's. */
3626 b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
3628 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
3630 b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
3631 b->yy_buf_pos = b->yy_ch_buf = base;
3632 b->yy_is_our_buffer = 0;
3633 b->yy_input_file = 0;
3634 b->yy_n_chars = b->yy_buf_size;
3635 b->yy_is_interactive = 0;
3637 b->yy_fill_buffer = 0;
3638 b->yy_buffer_status = YY_BUFFER_NEW;
3640 yy_switch_to_buffer( b );
3647 #ifndef YY_NO_SCAN_STRING
3648 #ifdef YY_USE_PROTOS
3649 YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
3651 YY_BUFFER_STATE yy_scan_string( yy_str )
3652 yyconst char *yy_str;
3656 for ( len = 0; yy_str[len]; ++len )
3659 return yy_scan_bytes( yy_str, len );
3664 #ifndef YY_NO_SCAN_BYTES
3665 #ifdef YY_USE_PROTOS
3666 YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
3668 YY_BUFFER_STATE yy_scan_bytes( bytes, len )
3669 yyconst char *bytes;
3678 /* Get memory for full buffer, including space for trailing EOB's. */
3680 buf = (char *) yy_flex_alloc( n );
3682 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
3684 for ( i = 0; i < len; ++i )
3687 buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
3689 b = yy_scan_buffer( buf, n );
3691 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
3693 /* It's okay to grow etc. this buffer, and we should throw it
3694 * away when we're done.
3696 b->yy_is_our_buffer = 1;
3703 #ifndef YY_NO_PUSH_STATE
3704 #ifdef YY_USE_PROTOS
3705 static void yy_push_state( int new_state )
3707 static void yy_push_state( new_state )
3711 if ( yy_start_stack_ptr >= yy_start_stack_depth )
3715 yy_start_stack_depth += YY_START_STACK_INCR;
3716 new_size = yy_start_stack_depth * sizeof( int );
3718 if ( ! yy_start_stack )
3719 yy_start_stack = (int *) yy_flex_alloc( new_size );
3722 yy_start_stack = (int *) yy_flex_realloc(
3723 (void *) yy_start_stack, new_size );
3725 if ( ! yy_start_stack )
3727 "out of memory expanding start-condition stack" );
3730 yy_start_stack[yy_start_stack_ptr++] = YY_START;
3737 #ifndef YY_NO_POP_STATE
3738 static void yy_pop_state()
3740 if ( --yy_start_stack_ptr < 0 )
3741 YY_FATAL_ERROR( "start-condition stack underflow" );
3743 BEGIN(yy_start_stack[yy_start_stack_ptr]);
3748 #ifndef YY_NO_TOP_STATE
3749 static int yy_top_state()
3751 return yy_start_stack[yy_start_stack_ptr - 1];
3755 #ifndef YY_EXIT_FAILURE
3756 #define YY_EXIT_FAILURE 2
3759 #ifdef YY_USE_PROTOS
3760 static void yy_fatal_error( yyconst char msg[] )
3762 static void yy_fatal_error( msg )
3766 (void) fprintf( stderr, "%s\n", msg );
3767 exit( YY_EXIT_FAILURE );
3772 /* Redefine yyless() so it works in section 3 code. */
3778 /* Undo effects of setting up yytext. */ \
3779 yytext[yyleng] = yy_hold_char; \
3780 yy_c_buf_p = yytext + n; \
3781 yy_hold_char = *yy_c_buf_p; \
3782 *yy_c_buf_p = '\0'; \
3788 /* Internal utility routines. */
3791 #ifdef YY_USE_PROTOS
3792 static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
3794 static void yy_flex_strncpy( s1, s2, n )
3801 for ( i = 0; i < n; ++i )
3806 #ifdef YY_NEED_STRLEN
3807 #ifdef YY_USE_PROTOS
3808 static int yy_flex_strlen( yyconst char *s )
3810 static int yy_flex_strlen( s )
3815 for ( n = 0; s[n]; ++n )
3823 #ifdef YY_USE_PROTOS
3824 static void *yy_flex_alloc( yy_size_t size )
3826 static void *yy_flex_alloc( size )
3830 return (void *) malloc( size );
3833 #ifdef YY_USE_PROTOS
3834 static void *yy_flex_realloc( void *ptr, yy_size_t size )
3836 static void *yy_flex_realloc( ptr, size )
3841 /* The cast to (char *) in the following accommodates both
3842 * implementations that use char* generic pointers, and those
3843 * that use void* generic pointers. It works with the latter
3844 * because both ANSI C and C++ allow castless assignment from
3845 * any pointer type to void*, and deal with argument conversions
3846 * as though doing an assignment.
3848 return (void *) realloc( (char *) ptr, size );
3851 #ifdef YY_USE_PROTOS
3852 static void yy_flex_free( void *ptr )
3854 static void yy_flex_free( ptr )
3871 static char *StringToLex;
3873 #ifndef FLEX_SCANNER
3880 if (StringToLex != NULL) {
3882 if (ret == NULLCHAR)
3886 } else if (unputCount > 0) {
3887 ret = unputBuffer[--unputCount];
3899 * Return offset of next pattern within current file
3903 int offset = ftell(lexFP) - unputCount;
3911 static void output(ch)
3914 fprintf(stderr, "PARSER BUG: unmatched character '%c' (0%o)\n",
3918 static void unput(ch)
3921 if (ch == 0) return;
3922 if (StringToLex != NULL) {
3925 if (unputCount >= UNPUT_BUF_SIZE)
3926 fprintf(stderr, "PARSER BUG: unput buffer overflow '%c' (0%o)\n",
3928 unputBuffer[unputCount++] = ch;
3932 /* Get ready to lex from a new file. Kludge below sticks
3933 an artificial newline at the front of the file, which the
3934 above grammar ignores, but which makes ^ at start of pattern
3935 match at the real start of the file.
3943 unput('\n'); /* kludge */
3946 /* Get ready to lex from a string. ^ at start of pattern WON'T
3947 match at the start of the string!
3956 #endif /*!FLEX_SCANNER*/
3959 void my_yy_input(buf, result, max_size)
3966 if (StringToLex != NULL) {
3968 while (*StringToLex != NULLCHAR) {
3969 *buf++ = *StringToLex++;
3975 count = fread(buf, 1, max_size, yyin);
3985 static YY_BUFFER_STATE my_file_buffer = NULL;
3988 Return offset of next pattern in the current file.
3992 int pos = yy_c_buf_p - yy_current_buffer->yy_ch_buf;
3994 return(ftell(yy_current_buffer->yy_input_file) -
4002 if (my_file_buffer != NULL)
4003 yy_delete_buffer(my_file_buffer);
4005 my_file_buffer = yy_create_buffer(stdin, YY_BUF_SIZE);
4006 yy_switch_to_buffer(my_file_buffer);
4012 if (my_file_buffer != NULL)
4013 yy_delete_buffer(my_file_buffer);
4015 my_file_buffer = yy_create_buffer(f, YY_BUF_SIZE);
4016 yy_switch_to_buffer(my_file_buffer);
4018 #endif /*FLEX_SCANNER*/
4025 /* Parse a move from the given string s */
4026 /* ^ at start of pattern WON'T work here unless using flex */
4027 ChessMove yylexstr(boardIndex, s)
4032 char *oldStringToLex;
4034 YY_BUFFER_STATE buffer, oldBuffer;
4037 yyboardindex = boardIndex;
4038 oldStringToLex = StringToLex;
4041 buffer = yy_create_buffer(stdin, YY_BUF_SIZE);
4042 oldBuffer = YY_CURRENT_BUFFER;
4043 yy_switch_to_buffer(buffer);
4044 #endif /*FLEX_SCANNER*/
4046 ret = (ChessMove) yylex();
4049 if (oldBuffer != NULL)
4050 yy_switch_to_buffer(oldBuffer);
4051 yy_delete_buffer(buffer);
4052 #endif /*FLEX_SCANNER*/
4053 StringToLex = oldStringToLex;