4 #define YY_INT_ALIGNED short int
6 /* A lexical scanner generated by flex */
9 #define YY_FLEX_MAJOR_VERSION 2
10 #define YY_FLEX_MINOR_VERSION 5
11 #define YY_FLEX_SUBMINOR_VERSION 34
12 #if YY_FLEX_SUBMINOR_VERSION > 0
16 /* First, we deal with platform-specific or compiler-specific issues. */
18 /* begin standard C headers. */
24 /* end standard C headers. */
26 /* flex integer type definitions */
31 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
33 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
35 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
36 * if you want the limit (max/min) macros for int types.
38 #ifndef __STDC_LIMIT_MACROS
39 #define __STDC_LIMIT_MACROS 1
43 typedef int8_t flex_int8_t;
44 typedef uint8_t flex_uint8_t;
45 typedef int16_t flex_int16_t;
46 typedef uint16_t flex_uint16_t;
47 typedef int32_t flex_int32_t;
48 typedef uint32_t flex_uint32_t;
50 typedef signed char flex_int8_t;
51 typedef short int flex_int16_t;
52 typedef int flex_int32_t;
53 typedef unsigned char flex_uint8_t;
54 typedef unsigned short int flex_uint16_t;
55 typedef unsigned int flex_uint32_t;
58 /* Limits of integral types. */
60 #define INT8_MIN (-128)
63 #define INT16_MIN (-32767-1)
66 #define INT32_MIN (-2147483647-1)
69 #define INT8_MAX (127)
72 #define INT16_MAX (32767)
75 #define INT32_MAX (2147483647)
78 #define UINT8_MAX (255U)
81 #define UINT16_MAX (65535U)
84 #define UINT32_MAX (4294967295U)
87 #endif /* ! FLEXINT_H */
91 /* The "const" storage-class-modifier is valid. */
94 #else /* ! __cplusplus */
96 /* C99 requires __STDC__ to be defined as 1. */
97 #if defined (__STDC__)
101 #endif /* defined (__STDC__) */
102 #endif /* ! __cplusplus */
105 #define yyconst const
110 /* Returned upon end-of-file. */
113 /* Promotes a possibly negative, possibly signed char to an unsigned
114 * integer for use as an array index. If the signed char is negative,
115 * we want to instead treat it as an 8-bit unsigned char, hence the
118 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
120 /* Enter a start condition. This macro really ought to take a parameter,
121 * but we do it the disgusting crufty way forced on us by the ()-less
122 * definition of BEGIN.
124 #define BEGIN (yy_start) = 1 + 2 *
126 /* Translate the current start state into a value that can be later handed
127 * to BEGIN to return to the state. The YYSTATE alias is for lex
130 #define YY_START (((yy_start) - 1) / 2)
131 #define YYSTATE YY_START
133 /* Action number for EOF rule of a given start state. */
134 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
136 /* Special action meaning "start processing a new file". */
137 #define YY_NEW_FILE yyrestart(yyin )
139 #define YY_END_OF_BUFFER_CHAR 0
141 /* Size of default input buffer. */
143 #define YY_BUF_SIZE 16384
146 /* The state buf must be large enough to hold one state per character in the main buffer.
148 #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
150 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
151 #define YY_TYPEDEF_YY_BUFFER_STATE
152 typedef struct yy_buffer_state *YY_BUFFER_STATE;
157 extern FILE *yyin, *yyout;
159 #define EOB_ACT_CONTINUE_SCAN 0
160 #define EOB_ACT_END_OF_FILE 1
161 #define EOB_ACT_LAST_MATCH 2
163 #define YY_LESS_LINENO(n)
165 /* Return all but the first "n" matched characters back to the input stream. */
169 /* Undo effects of setting up yytext. */ \
170 int yyless_macro_arg = (n); \
171 YY_LESS_LINENO(yyless_macro_arg);\
172 *yy_cp = (yy_hold_char); \
173 YY_RESTORE_YY_MORE_OFFSET \
174 (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
175 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
179 #define unput(c) yyunput( c, (yytext_ptr) )
181 /* The following is because we cannot portably get our hands on size_t
182 * (without autoconf's help, which isn't available because we want
183 * flex-generated scanners to compile on their own).
184 * Given that the standard has decreed that size_t exists since 1989,
185 * I guess we can afford to depend on it. Manoj.
188 #ifndef YY_TYPEDEF_YY_SIZE_T
189 #define YY_TYPEDEF_YY_SIZE_T
190 typedef size_t yy_size_t;
193 #ifndef YY_STRUCT_YY_BUFFER_STATE
194 #define YY_STRUCT_YY_BUFFER_STATE
195 struct yy_buffer_state
199 char *yy_ch_buf; /* input buffer */
200 char *yy_buf_pos; /* current position in input buffer */
202 /* Size of input buffer in bytes, not including room for EOB
205 yy_size_t yy_buf_size;
207 /* Number of characters read into yy_ch_buf, not including EOB
212 /* Whether we "own" the buffer - i.e., we know we created it,
213 * and can realloc() it to grow it, and should free() it to
216 int yy_is_our_buffer;
218 /* Whether this is an "interactive" input source; if so, and
219 * if we're using stdio for input, then we want to use getc()
220 * instead of fread(), to make sure we stop fetching input after
223 int yy_is_interactive;
225 /* Whether we're considered to be at the beginning of a line.
226 * If so, '^' rules will be active on the next match, otherwise
231 int yy_bs_lineno; /**< The line count. */
232 int yy_bs_column; /**< The column count. */
234 /* Whether to try to fill the input buffer when we reach the
239 int yy_buffer_status;
241 #define YY_BUFFER_NEW 0
242 #define YY_BUFFER_NORMAL 1
243 /* When an EOF's been seen but there's still some text to process
244 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
245 * shouldn't try reading from the input source any more. We might
246 * still have a bunch of tokens to match, though, because of
247 * possible backing-up.
249 * When we actually see the EOF, we change the status to "new"
250 * (via yyrestart()), so that the user can continue scanning by
251 * just pointing yyin at a new input file.
253 #define YY_BUFFER_EOF_PENDING 2
256 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
258 /* Stack of input buffers. */
259 static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
260 static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
261 static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
263 /* We provide macros for accessing buffer states in case in the
264 * future we want to put the buffer states in a more general
267 * Returns the top of the stack, or NULL.
269 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
270 ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
273 /* Same as previous macro, but useful when we know that the buffer stack is not
274 * NULL or when we need an lvalue. For internal use only.
276 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
278 /* yy_hold_char holds the character lost when yytext is formed. */
279 static char yy_hold_char;
280 static int yy_n_chars; /* number of characters read into yy_ch_buf */
283 /* Points to current character in buffer. */
284 static char *yy_c_buf_p = (char *) 0;
285 static int yy_init = 0; /* whether we need to initialize */
286 static int yy_start = 0; /* start state number */
288 /* Flag which is used to allow yywrap()'s to do buffer switches
289 * instead of setting up a fresh yyin. A bit of a hack ...
291 static int yy_did_buffer_switch_on_eof;
293 void yyrestart (FILE *input_file );
294 void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer );
295 YY_BUFFER_STATE yy_create_buffer (FILE *file,int size );
296 void yy_delete_buffer (YY_BUFFER_STATE b );
297 void yy_flush_buffer (YY_BUFFER_STATE b );
298 void yypush_buffer_state (YY_BUFFER_STATE new_buffer );
299 void yypop_buffer_state (void );
301 static void yyensure_buffer_stack (void );
302 static void yy_load_buffer_state (void );
303 static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file );
305 #define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER )
307 YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size );
308 YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str );
309 YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len );
311 void *yyalloc (yy_size_t );
312 void *yyrealloc (void *,yy_size_t );
313 void yyfree (void * );
315 #define yy_new_buffer yy_create_buffer
317 #define yy_set_interactive(is_interactive) \
319 if ( ! YY_CURRENT_BUFFER ){ \
320 yyensure_buffer_stack (); \
321 YY_CURRENT_BUFFER_LVALUE = \
322 yy_create_buffer(yyin,YY_BUF_SIZE ); \
324 YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
327 #define yy_set_bol(at_bol) \
329 if ( ! YY_CURRENT_BUFFER ){\
330 yyensure_buffer_stack (); \
331 YY_CURRENT_BUFFER_LVALUE = \
332 yy_create_buffer(yyin,YY_BUF_SIZE ); \
334 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
337 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
339 /* Begin user sect3 */
341 typedef unsigned char YY_CHAR;
343 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
345 typedef int yy_state_type;
352 #define yytext_ptr yytext
354 static yy_state_type yy_get_previous_state (void );
355 static yy_state_type yy_try_NUL_trans (yy_state_type current_state );
356 static int yy_get_next_buffer (void );
357 static void yy_fatal_error (yyconst char msg[] );
359 /* Done after the current pattern has been matched and before the
360 * corresponding action - sets up yytext.
362 #define YY_DO_BEFORE_ACTION \
363 (yytext_ptr) = yy_bp; \
364 yyleng = (size_t) (yy_cp - yy_bp); \
365 (yy_hold_char) = *yy_cp; \
367 (yy_c_buf_p) = yy_cp;
369 #define YY_NUM_RULES 43
370 #define YY_END_OF_BUFFER 44
371 /* This struct is not used in this scanner,
372 but its presence is necessary. */
375 flex_int32_t yy_verify;
378 static yyconst flex_int16_t yy_acclist[623] =
380 44, 42, 43, 42, 43, 42, 43, 41, 42, 43,
381 42, 43, 26, 42, 43, 42, 43, 41, 42, 43,
382 41, 42, 43,16411, 41, 42, 43,16411, 42, 43,
383 41, 42, 43, 41, 42, 43, 41, 42, 43, 41,
384 42, 43, 41, 42, 43, 41, 42, 43, 41, 42,
385 43, 41, 42, 43, 41, 42, 43, 41, 42, 43,
386 41, 42, 43, 42, 43, 41, 42, 43, 41, 42,
387 43, 41, 42, 43, 41, 42, 43, 41, 42, 43,
388 41, 42, 43, 41, 42, 43, 41, 42, 43, 41,
389 42, 43, 41, 42, 43, 41, 42, 43, 41, 42,
391 43, 41, 42, 43, 41, 42, 43, 41, 42, 43,
392 41, 42, 43, 41, 42, 43, 42, 43, 42, 43,
393 41, 42, 43, 41, 42, 43, 41, 42, 43,16411,
394 41, 42, 43,16411, 42, 43, 41, 42, 43, 41,
395 42, 43, 41, 42, 43, 41, 42, 43, 41, 42,
396 43, 41, 42, 43, 41, 42, 43, 41, 42, 43,
397 41, 42, 43, 41, 42, 43, 41, 42, 43, 41,
398 42, 43, 41, 42, 43, 41, 42, 43, 41, 42,
399 43, 41, 42, 43, 41, 42, 43, 41, 42, 43,
400 41, 42, 43, 41, 42, 43, 41, 42, 43, 41,
402 42, 43, 41, 42, 43, 41, 42, 43, 41, 42,
403 43, 41, 42, 43, 41, 42, 43, 41, 42, 43,
404 42, 43, 34, 41, 18, 41, 10, 41, 41, 41,
405 16411, 8219, 41, 36, 41, 41, 41, 41, 41, 41,
406 41, 41, 41, 41, 41, 10, 41, 41, 41, 41,
407 37, 41, 4, 41, 41, 5, 41, 41, 41, 41,
408 41, 41, 10, 41, 41, 41, 35, 41, 41, 10,
409 41, 41, 41,16411, 8219, 41, 41, 41, 41, 41,
410 41, 41, 41, 41, 41, 41, 41, 10, 41, 41,
411 41, 41, 41, 4, 41, 41, 5, 41, 41, 41,
413 41, 41, 41, 10, 41, 41, 41, 16, 10, 41,
414 24, 41, 24, 9, 41, 8219, 23, 41, 23, 25,
415 41, 41, 41, 41, 41, 7, 41, 41, 41, 41,
416 41, 41, 10, 41, 41, 41, 41, 5, 41, 41,
417 4, 4, 41, 4, 41, 4, 41, 5, 6, 41,
418 5, 5, 41, 41, 41, 41, 10, 41, 41, 35,
419 40, 10, 41, 24, 41, 9, 41, 23, 41, 36,
420 41, 41, 41, 41, 41, 7, 41, 41, 41, 41,
421 41, 41, 10, 41, 41, 41, 41, 5, 41, 41,
422 4, 41, 4, 41, 4, 41, 6, 41, 5, 41,
424 41, 41, 41, 10, 41, 41, 39, 39, 39, 38,
425 26, 26, 7, 41, 11, 7, 41, 3, 41, 8,
426 41, 7, 41, 7, 41, 41, 41, 20, 41, 41,
427 17, 41, 41, 41, 41, 41, 37, 4, 41, 4,
428 2, 41, 6, 5, 6, 6, 41, 41, 5, 5,
429 41, 41, 26, 40, 41, 7, 41, 3, 41, 8,
430 41, 41, 41, 41, 41, 20, 41, 41, 17, 41,
431 41, 41, 41, 41, 41, 2, 41, 6, 41, 41,
432 5, 41, 41, 39, 8, 3, 8, 1, 41, 21,
433 41, 41, 20, 41, 41, 41, 41, 41, 41, 31,
435 37, 2, 2, 2, 41, 6, 6, 6, 41, 40,
436 1, 41, 41, 41, 20, 41, 41, 41, 41, 41,
437 41, 2, 41, 6, 41, 28, 39, 1, 24, 24,
438 23, 23, 25, 25, 1, 1, 41, 22, 21, 41,
439 41, 41, 12, 41, 41, 29, 37, 31, 2, 2,
440 28, 35, 40, 40, 1, 41, 41, 41, 41, 12,
441 41, 41, 19, 1, 25, 1, 22, 20, 41, 41,
442 41, 12, 41, 41, 41, 41, 41, 12, 41, 41,
443 13, 41, 41, 41, 41, 13, 41, 41, 15, 41,
444 41, 41, 15, 41, 41, 41, 40, 41, 41, 41,
446 41, 40, 40, 41, 41, 32, 41, 40, 40, 32,
447 41, 14, 32, 33, 33, 36, 40, 40, 32, 40,
451 static yyconst flex_int16_t yy_accept[705] =
453 1, 1, 1, 2, 4, 6, 8, 11, 13, 16,
454 18, 21, 25, 29, 31, 34, 37, 40, 43, 46,
455 49, 52, 55, 58, 61, 64, 66, 69, 72, 75,
456 78, 81, 84, 87, 90, 93, 96, 99, 102, 105,
457 108, 111, 114, 117, 119, 121, 124, 127, 131, 135,
458 137, 140, 143, 146, 149, 152, 155, 158, 161, 164,
459 167, 170, 173, 176, 179, 182, 185, 188, 191, 194,
460 197, 200, 203, 206, 209, 212, 215, 218, 221, 223,
461 223, 224, 225, 225, 225, 225, 225, 226, 226, 226,
462 226, 227, 227, 229, 229, 229, 229, 230, 230, 230,
464 232, 232, 234, 234, 235, 235, 236, 236, 237, 237,
465 238, 238, 239, 240, 241, 242, 243, 244, 245, 246,
466 248, 249, 250, 251, 251, 251, 251, 251, 252, 253,
467 255, 255, 256, 258, 259, 260, 261, 262, 263, 265,
468 266, 267, 267, 267, 267, 268, 268, 269, 269, 270,
469 272, 272, 273, 275, 275, 277, 277, 278, 279, 279,
470 280, 281, 282, 283, 284, 285, 286, 287, 288, 290,
471 291, 292, 293, 294, 296, 296, 297, 299, 300, 301,
472 302, 303, 304, 306, 307, 308, 308, 308, 308, 308,
473 308, 308, 308, 308, 308, 308, 308, 309, 309, 309,
475 309, 309, 309, 311, 313, 314, 316, 317, 317, 317,
476 317, 319, 320, 321, 321, 322, 322, 323, 323, 324,
477 325, 325, 326, 328, 328, 328, 328, 328, 328, 328,
478 328, 329, 330, 331, 332, 333, 335, 336, 337, 338,
479 338, 338, 338, 338, 340, 340, 341, 341, 342, 344,
480 346, 348, 349, 349, 351, 352, 354, 355, 356, 357,
481 359, 360, 361, 361, 361, 361, 361, 362, 364, 366,
482 368, 370, 370, 371, 371, 372, 373, 373, 374, 375,
483 376, 378, 378, 379, 380, 381, 382, 383, 385, 386,
484 387, 388, 390, 391, 391, 393, 395, 397, 399, 401,
486 402, 403, 404, 406, 407, 407, 407, 408, 409, 409,
487 409, 410, 410, 410, 411, 411, 411, 412, 412, 413,
488 413, 414, 414, 414, 414, 415, 415, 415, 415, 415,
489 415, 415, 415, 416, 418, 418, 418, 420, 422, 423,
490 424, 424, 425, 426, 426, 426, 426, 426, 426, 426,
491 427, 428, 430, 430, 431, 433, 434, 435, 436, 437,
492 437, 437, 437, 437, 438, 439, 440, 440, 441, 443,
493 444, 445, 445, 445, 446, 448, 449, 450, 450, 452,
494 453, 453, 454, 454, 454, 454, 454, 455, 455, 456,
495 456, 456, 458, 460, 462, 463, 463, 464, 465, 466,
497 468, 469, 471, 472, 473, 474, 475, 476, 478, 480,
498 481, 483, 484, 484, 484, 484, 484, 485, 485, 485,
499 485, 485, 486, 486, 486, 486, 486, 486, 486, 486,
500 486, 486, 487, 488, 490, 490, 490, 490, 490, 490,
501 491, 492, 493, 493, 495, 495, 496, 497, 498, 499,
502 500, 500, 500, 502, 502, 502, 503, 503, 504, 506,
503 507, 507, 508, 508, 510, 510, 510, 510, 510, 510,
504 510, 510, 511, 511, 511, 513, 514, 515, 517, 518,
505 519, 520, 521, 522, 524, 526, 526, 526, 526, 526,
506 526, 526, 528, 528, 529, 529, 530, 530, 531, 531,
508 532, 532, 533, 533, 534, 534, 535, 535, 535, 535,
509 536, 538, 538, 538, 539, 539, 539, 540, 541, 541,
510 541, 541, 541, 541, 542, 543, 545, 546, 548, 548,
511 549, 550, 551, 551, 551, 553, 553, 553, 554, 555,
512 555, 555, 557, 558, 559, 560, 562, 563, 563, 564,
513 564, 564, 564, 564, 565, 565, 566, 567, 567, 567,
514 568, 568, 568, 569, 569, 569, 569, 569, 570, 571,
515 572, 574, 575, 575, 575, 575, 575, 575, 576, 577,
516 578, 580, 581, 581, 581, 581, 581, 581, 581, 582,
517 582, 582, 582, 582, 583, 584, 584, 584, 584, 584,
519 585, 586, 586, 586, 586, 586, 587, 587, 587, 587,
520 588, 589, 591, 591, 591, 591, 591, 592, 592, 593,
521 595, 595, 595, 595, 595, 596, 597, 597, 597, 597,
522 597, 598, 599, 600, 600, 600, 600, 600, 600, 601,
523 602, 602, 602, 602, 602, 603, 604, 605, 606, 606,
524 606, 606, 606, 606, 608, 608, 608, 608, 608, 609,
525 610, 612, 612, 612, 613, 613, 614, 614, 615, 615,
526 615, 617, 617, 618, 619, 619, 619, 619, 619, 621,
527 621, 621, 621, 621, 621, 621, 621, 621, 621, 621,
528 621, 621, 621, 621, 621, 621, 621, 621, 621, 621,
533 static yyconst flex_int32_t yy_ec[256] =
535 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
536 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
537 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
538 1, 4, 1, 5, 6, 7, 8, 1, 9, 10,
539 11, 12, 13, 1, 14, 15, 16, 17, 18, 19,
540 20, 20, 20, 20, 20, 20, 20, 21, 22, 1,
541 23, 1, 1, 24, 25, 26, 27, 28, 29, 30,
542 31, 32, 33, 33, 34, 35, 36, 37, 38, 39,
543 39, 40, 41, 42, 43, 42, 44, 45, 42, 42,
544 46, 1, 47, 1, 48, 1, 49, 50, 51, 52,
546 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
547 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
548 73, 70, 74, 1, 75, 1, 1, 1, 1, 1,
549 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
550 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
551 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
552 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
553 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
554 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
555 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
557 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
558 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
559 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
560 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
561 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
565 static yyconst flex_int32_t yy_meta[76] =
567 1, 2, 3, 2, 1, 1, 1, 1, 4, 5,
568 6, 1, 7, 8, 1, 1, 9, 9, 9, 9,
569 10, 1, 11, 1, 12, 12, 12, 12, 12, 12,
570 12, 12, 13, 12, 13, 13, 12, 12, 12, 12,
571 13, 13, 13, 12, 14, 1, 1, 1, 15, 15,
572 15, 15, 16, 15, 15, 15, 15, 15, 15, 15,
573 17, 18, 18, 18, 18, 18, 17, 17, 17, 17,
577 static yyconst flex_int16_t yy_base[785] =
579 0, 75, 3642, 4141, 126, 135, 0, 146, 3633, 144,
580 155, 175, 166, 3633, 237, 163, 3579, 3568, 123, 249,
581 245, 261, 253, 283, 300, 356, 418, 256, 259, 272,
582 277, 286, 336, 293, 227, 295, 347, 334, 3584, 159,
583 3569, 3551, 194, 405, 3614, 153, 412, 489, 396, 309,
584 554, 328, 3482, 3471, 124, 430, 423, 562, 434, 566,
585 440, 626, 395, 362, 433, 412, 538, 540, 445, 566,
586 570, 592, 589, 325, 644, 366, 645, 652, 685, 3478,
587 613, 0, 3522, 371, 699, 178, 4141, 3516, 747, 641,
588 471, 3493, 3475, 3311, 509, 708, 3308, 533, 164, 711,
590 3307, 0, 3320, 4141, 0, 771, 0, 823, 0, 883,
591 928, 3233, 3224, 3226, 3231, 3204, 650, 3118, 3147, 3143,
592 3113, 3130, 3120, 3112, 999, 300, 1074, 4141, 1101, 1153,
593 0, 1178, 1230, 672, 677, 716, 3072, 2971, 2967, 2962,
594 2971, 334, 2874, 720, 2942, 2941, 380, 2939, 733, 735,
595 416, 736, 1302, 655, 406, 561, 1367, 1419, 2938, 1479,
596 2892, 2887, 722, 737, 764, 757, 2871, 2900, 770, 2870,
597 738, 2879, 1503, 1555, 2897, 1580, 1632, 889, 896, 966,
598 902, 772, 773, 909, 903, 917, 2821, 587, 607, 626,
599 653, 690, 1007, 1019, 2872, 2807, 4141, 741, 1035, 2877,
601 2815, 2814, 2803, 2797, 2783, 0, 4141, 2782, 2779, 2778,
602 2777, 2773, 940, 792, 797, 929, 1681, 1717, 933, 978,
603 1014, 1032, 1764, 1027, 2719, 2712, 2711, 2724, 2719, 630,
604 1051, 1074, 2700, 989, 2717, 2755, 2711, 2707, 1096, 824,
605 1128, 701, 1836, 1902, 0, 1907, 0, 2756, 2754, 2753,
606 1086, 1124, 1376, 1958, 2753, 2751, 610, 2710, 2709, 2744,
607 2689, 4141, 1491, 766, 2752, 666, 2752, 825, 953, 950,
608 969, 785, 2750, 1323, 1091, 2003, 2749, 1118, 1383, 1380,
609 2050, 2745, 1495, 1708, 1370, 1498, 1497, 1108, 1744, 1770,
610 1785, 2114, 2119, 2744, 956, 2736, 1779, 2170, 970, 1368,
612 1496, 1774, 1304, 1833, 1240, 2693, 4141, 859, 911, 915,
613 1032, 1040, 1077, 4141, 1744, 2734, 2733, 2668, 2667, 1290,
614 1841, 2723, 2722, 2721, 2721, 1091, 2720, 180, 2719, 1421,
615 1849, 710, 4141, 2711, 1852, 1503, 0, 2710, 2709, 2175,
616 1835, 4141, 1523, 2664, 2664, 2662, 2656, 2656, 2660, 2662,
617 2659, 1320, 1118, 1220, 0, 2669, 2647, 2648, 2647, 1152,
618 1154, 922, 1676, 2694, 2687, 1701, 1809, 4141, 1875, 1851,
619 2686, 1333, 1855, 1867, 2685, 1334, 4141, 2631, 0, 2631,
620 1897, 2689, 1905, 2000, 2643, 2628, 2687, 565, 1772, 256,
621 1137, 1858, 1421, 1882, 2187, 2685, 2030, 1961, 2006, 2004,
623 2058, 1558, 2059, 1867, 1897, 2060, 2065, 2111, 1771, 2239,
624 1635, 2241, 1966, 2635, 1108, 2676, 1113, 1231, 1235, 1267,
625 1370, 2663, 1814, 2674, 2608, 2671, 2606, 2669, 2604, 2656,
626 1883, 4141, 4141, 2295, 2622, 2618, 2024, 2618, 2613, 2602,
627 2664, 420, 2209, 2663, 1411, 2634, 2609, 2599, 2596, 2651,
628 1530, 1971, 4141, 2649, 1975, 1996, 2000, 2065, 2638, 2637,
629 1743, 4141, 2583, 0, 2631, 2112, 2620, 2073, 2615, 2566,
630 2559, 1599, 1807, 1719, 2332, 2247, 2246, 2248, 2244, 2249,
631 2255, 2285, 2257, 1996, 2117, 2269, 983, 1424, 2614, 1455,
632 1516, 4141, 2171, 2088, 2613, 2612, 2547, 2546, 2609, 2608,
634 2543, 2541, 2604, 2603, 2537, 2533, 2583, 2577, 2261, 2264,
635 2580, 2527, 2536, 2224, 1783, 2533, 4141, 2532, 2569, 2521,
636 2500, 2539, 2504, 2510, 2480, 1973, 2495, 4141, 2114, 4141,
637 2531, 4141, 2522, 2375, 2528, 2464, 2458, 2510, 1949, 392,
638 271, 2277, 2370, 2272, 2276, 2375, 2376, 2276, 4141, 2455,
639 2464, 1560, 2370, 2463, 2463, 2462, 4141, 2395, 2399, 4141,
640 2392, 2438, 2412, 2319, 2352, 2313, 2282, 2307, 2278, 2264,
641 0, 2247, 2383, 2310, 2244, 1644, 1500, 2389, 2280, 2395,
642 2287, 2396, 2404, 2248, 2290, 1798, 2218, 2195, 2066, 2169,
643 2004, 2151, 2116, 2479, 2112, 2024, 2019, 1757, 842, 2554,
645 2390, 2418, 1974, 1956, 1924, 4141, 1903, 2041, 2081, 2629,
646 2135, 0, 1897, 1839, 2159, 1721, 2704, 2378, 2169, 2290,
647 2421, 1845, 1814, 2389, 1618, 1584, 1583, 1486, 787, 598,
648 2405, 1509, 1440, 2423, 1322, 1282, 2264, 2384, 1285, 1198,
649 1093, 1124, 2040, 1753, 2410, 2474, 1097, 913, 2437, 2381,
650 872, 2398, 2415, 0, 916, 764, 769, 2163, 2473, 2475,
651 0, 2449, 718, 4141, 686, 2400, 618, 4141, 440, 373,
652 4141, 2349, 2485, 2466, 2458, 293, 273, 1809, 2517, 2468,
653 168, 2409, 1309, 2347, 2456, 2504, 2508, 2532, 2535, 2536,
654 2538, 2568, 2581, 2583, 2584, 2589, 2590, 2591, 2603, 2470,
656 165, 4141, 4141, 2776, 2795, 2808, 2822, 2841, 2860, 2876,
657 2895, 2914, 2932, 1933, 2030, 2148, 2950, 2969, 2170, 2988,
658 3007, 3023, 3042, 3061, 3080, 3099, 3118, 3137, 3156, 3168,
659 3187, 3206, 3225, 3244, 3252, 2205, 3267, 3283, 3302, 3318,
660 3337, 3356, 3375, 3394, 3413, 3432, 3451, 3470, 3489, 3508,
661 3520, 3539, 3558, 3577, 3596, 3612, 3627, 3643, 3662, 3678,
662 3697, 3716, 3735, 3754, 3773, 3792, 3811, 3830, 3849, 3868,
663 3887, 3906, 3921, 3940, 3959, 3974, 3988, 4007, 4026, 4045,
664 4064, 4083, 4102, 4121
667 static yyconst flex_int16_t yy_def[785] =
669 703, 703, 703, 703, 703, 703, 704, 705, 703, 706,
670 704, 703, 12, 707, 704, 15, 15, 15, 15, 15,
671 15, 15, 15, 15, 15, 708, 704, 27, 27, 27,
672 27, 27, 27, 27, 27, 27, 27, 27, 704, 704,
673 704, 704, 704, 709, 703, 710, 710, 703, 48, 707,
674 710, 51, 51, 51, 51, 51, 51, 51, 51, 51,
675 51, 710, 62, 62, 62, 62, 62, 62, 62, 62,
676 62, 62, 62, 710, 710, 710, 710, 710, 709, 703,
677 703, 704, 711, 712, 711, 703, 703, 703, 703, 703,
678 704, 703, 704, 703, 713, 713, 704, 713, 703, 12,
680 703, 704, 707, 703, 714, 704, 715, 703, 716, 704,
681 703, 110, 110, 704, 704, 704, 110, 110, 106, 704,
682 110, 704, 110, 717, 708, 717, 718, 703, 704, 703,
683 719, 704, 703, 704, 704, 704, 704, 704, 704, 704,
684 704, 709, 720, 709, 703, 721, 722, 703, 722, 722,
685 703, 722, 703, 703, 722, 723, 722, 703, 716, 157,
686 160, 160, 722, 722, 722, 160, 160, 157, 722, 160,
687 722, 160, 157, 703, 719, 157, 703, 722, 722, 722,
688 722, 722, 722, 722, 722, 709, 703, 724, 725, 725,
689 726, 727, 724, 724, 728, 729, 703, 730, 730, 703,
691 703, 703, 704, 704, 703, 704, 703, 703, 703, 703,
692 704, 703, 703, 703, 704, 703, 704, 703, 704, 704,
693 703, 217, 222, 730, 703, 703, 703, 703, 703, 703,
694 704, 704, 704, 704, 704, 704, 704, 704, 704, 731,
695 732, 733, 734, 704, 735, 704, 736, 735, 704, 246,
696 704, 737, 737, 704, 253, 704, 704, 704, 704, 704,
697 704, 703, 709, 703, 738, 703, 739, 740, 740, 740,
698 740, 741, 738, 742, 740, 740, 218, 740, 740, 276,
699 280, 224, 740, 740, 740, 740, 740, 740, 740, 740,
700 740, 740, 280, 736, 740, 293, 740, 292, 740, 740,
702 740, 740, 740, 740, 709, 703, 703, 743, 744, 745,
703 746, 743, 747, 703, 748, 749, 749, 750, 750, 703,
704 751, 703, 703, 703, 704, 703, 703, 703, 703, 703,
705 703, 703, 703, 704, 751, 703, 704, 704, 703, 704,
706 335, 703, 704, 703, 703, 703, 703, 703, 703, 704,
707 704, 704, 703, 704, 704, 704, 704, 704, 704, 752,
708 752, 753, 754, 755, 703, 704, 703, 703, 756, 757,
709 703, 703, 757, 757, 704, 704, 703, 703, 704, 704,
710 709, 703, 703, 703, 703, 703, 758, 703, 740, 759,
711 759, 740, 740, 740, 293, 341, 740, 740, 740, 740,
713 740, 740, 740, 740, 740, 740, 740, 760, 740, 740,
714 740, 740, 709, 703, 745, 761, 762, 746, 763, 747,
715 748, 703, 703, 764, 765, 766, 767, 768, 769, 703,
716 703, 703, 703, 704, 703, 703, 703, 703, 703, 703,
717 704, 704, 703, 704, 703, 704, 704, 704, 704, 704,
718 770, 771, 703, 772, 703, 773, 773, 773, 704, 703,
719 703, 703, 703, 704, 703, 709, 703, 703, 703, 703,
720 703, 774, 759, 759, 740, 740, 740, 740, 740, 740,
721 740, 740, 740, 740, 740, 709, 703, 762, 775, 746,
722 763, 703, 748, 776, 764, 764, 765, 765, 766, 766,
724 767, 767, 768, 768, 769, 769, 703, 703, 776, 776,
725 704, 703, 703, 703, 703, 703, 703, 704, 777, 703,
726 703, 703, 703, 704, 704, 704, 704, 703, 703, 703,
727 703, 703, 703, 709, 703, 703, 703, 774, 774, 759,
728 759, 740, 740, 740, 740, 740, 740, 709, 703, 703,
729 775, 762, 748, 703, 703, 703, 703, 703, 703, 703,
730 703, 777, 777, 703, 703, 703, 703, 704, 704, 704,
731 704, 704, 709, 703, 703, 759, 759, 740, 740, 740,
732 740, 740, 709, 703, 703, 703, 703, 703, 703, 703,
733 703, 703, 703, 778, 704, 703, 703, 759, 759, 779,
735 740, 709, 703, 703, 703, 703, 703, 780, 780, 778,
736 610, 704, 703, 703, 759, 759, 779, 780, 617, 740,
737 709, 703, 703, 780, 610, 610, 703, 703, 759, 759,
738 781, 617, 617, 709, 703, 703, 780, 780, 610, 610,
739 703, 703, 759, 759, 781, 781, 617, 617, 709, 703,
740 703, 780, 780, 610, 782, 703, 783, 759, 781, 781,
741 617, 709, 703, 703, 703, 780, 782, 703, 703, 783,
742 703, 759, 781, 781, 709, 703, 703, 759, 781, 709,
743 703, 759, 709, 784, 784, 784, 784, 784, 784, 784,
744 784, 784, 784, 784, 784, 784, 784, 784, 784, 784,
746 703, 703, 0, 703, 703, 703, 703, 703, 703, 703,
747 703, 703, 703, 703, 703, 703, 703, 703, 703, 703,
748 703, 703, 703, 703, 703, 703, 703, 703, 703, 703,
749 703, 703, 703, 703, 703, 703, 703, 703, 703, 703,
750 703, 703, 703, 703, 703, 703, 703, 703, 703, 703,
751 703, 703, 703, 703, 703, 703, 703, 703, 703, 703,
752 703, 703, 703, 703, 703, 703, 703, 703, 703, 703,
753 703, 703, 703, 703, 703, 703, 703, 703, 703, 703,
757 static yyconst flex_int16_t yy_nxt[4217] =
759 4, 4, 4, 5, 4, 4, 6, 4, 7, 8,
760 4, 9, 10, 7, 4, 4, 11, 12, 13, 13,
761 4, 14, 4, 4, 15, 16, 17, 18, 15, 15,
762 19, 15, 15, 15, 15, 20, 21, 22, 21, 23,
763 24, 21, 21, 25, 21, 26, 4, 4, 27, 28,
764 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
765 39, 7, 40, 7, 7, 41, 42, 7, 7, 7,
766 43, 7, 7, 44, 4, 4, 4, 4, 5, 4,
767 45, 6, 45, 7, 8, 4, 9, 10, 46, 4,
768 4, 47, 48, 49, 49, 4, 50, 4, 4, 51,
770 52, 53, 54, 51, 51, 55, 51, 51, 51, 51,
771 56, 57, 58, 57, 59, 60, 57, 57, 61, 57,
772 26, 4, 4, 62, 63, 64, 65, 66, 67, 68,
773 69, 70, 71, 72, 73, 74, 46, 75, 46, 46,
774 76, 77, 46, 46, 46, 78, 46, 46, 79, 4,
775 80, 81, 81, 81, 81, 84, 87, 88, 90, 115,
776 164, 82, 85, 85, 85, 85, 111, 702, 91, 95,
777 92, 93, 138, 148, 80, 94, 95, 95, 96, 82,
778 212, 703, 213, 82, 116, 165, 703, 195, 97, 98,
779 99, 100, 100, 100, 100, 101, 212, 111, 213, 102,
781 102, 102, 102, 102, 102, 102, 102, 82, 102, 82,
782 82, 102, 102, 102, 102, 82, 82, 82, 102, 82,
783 655, 139, 112, 102, 102, 102, 102, 102, 102, 102,
784 102, 102, 102, 102, 102, 82, 102, 102, 102, 102,
785 102, 82, 82, 82, 82, 82, 82, 82, 105, 141,
786 106, 196, 107, 108, 108, 108, 108, 109, 104, 111,
787 105, 117, 117, 117, 117, 117, 117, 117, 117, 117,
788 117, 117, 117, 104, 119, 134, 134, 117, 117, 117,
789 117, 106, 133, 133, 133, 110, 110, 110, 110, 110,
790 110, 110, 110, 110, 110, 110, 110, 118, 120, 117,
792 117, 117, 117, 111, 473, 121, 133, 134, 106, 133,
793 133, 104, 156, 240, 136, 135, 117, 117, 117, 117,
794 134, 134, 133, 133, 133, 134, 134, 577, 133, 133,
795 133, 111, 681, 82, 134, 134, 143, 114, 133, 133,
796 133, 134, 134, 134, 134, 148, 128, 133, 133, 133,
797 122, 133, 133, 133, 549, 123, 124, 125, 125, 125,
798 124, 124, 124, 124, 124, 124, 124, 124, 124, 126,
799 124, 124, 115, 181, 82, 671, 124, 124, 124, 124,
800 191, 192, 134, 134, 134, 134, 148, 161, 82, 133,
801 133, 133, 133, 133, 104, 134, 134, 116, 111, 95,
803 148, 124, 128, 124, 133, 133, 133, 143, 145, 147,
804 178, 703, 177, 177, 82, 90, 148, 180, 184, 267,
805 82, 144, 144, 144, 144, 149, 148, 92, 150, 124,
806 124, 129, 151, 205, 130, 130, 130, 130, 131, 166,
807 166, 166, 166, 111, 576, 177, 166, 166, 166, 166,
808 166, 166, 166, 166, 179, 518, 166, 166, 166, 166,
809 178, 178, 132, 177, 177, 177, 133, 133, 134, 134,
810 134, 134, 134, 134, 134, 134, 134, 134, 167, 145,
811 518, 178, 178, 177, 177, 177, 170, 203, 204, 132,
812 95, 95, 96, 178, 178, 172, 677, 82, 163, 177,
814 177, 177, 152, 98, 99, 153, 153, 153, 153, 154,
815 95, 95, 95, 155, 155, 155, 155, 155, 155, 155,
816 155, 147, 155, 147, 147, 155, 155, 155, 155, 147,
817 147, 147, 155, 147, 95, 95, 95, 155, 155, 155,
818 155, 155, 155, 155, 155, 155, 155, 155, 155, 147,
819 155, 155, 155, 155, 155, 147, 147, 147, 147, 147,
820 147, 147, 82, 273, 274, 105, 472, 157, 472, 107,
821 158, 158, 158, 158, 159, 168, 164, 105, 166, 166,
822 166, 166, 166, 166, 166, 166, 178, 178, 178, 178,
823 177, 177, 177, 177, 177, 177, 189, 307, 157, 169,
825 104, 165, 160, 160, 160, 160, 160, 160, 160, 160,
826 160, 160, 160, 160, 178, 178, 191, 308, 178, 178,
827 668, 177, 177, 177, 378, 157, 177, 177, 177, 81,
828 81, 81, 81, 171, 82, 191, 308, 178, 178, 173,
829 178, 178, 174, 174, 174, 174, 175, 177, 177, 177,
830 177, 177, 82, 82, 200, 111, 201, 182, 267, 644,
831 82, 202, 310, 311, 148, 148, 82, 82, 82, 82,
832 176, 212, 148, 379, 177, 177, 178, 178, 178, 178,
833 178, 178, 178, 178, 178, 178, 349, 143, 254, 254,
834 254, 254, 349, 254, 254, 254, 254, 176, 186, 313,
836 314, 144, 144, 144, 144, 363, 183, 185, 189, 95,
837 95, 95, 171, 430, 95, 193, 193, 193, 193, 194,
838 385, 208, 143, 209, 82, 258, 703, 431, 210, 386,
839 82, 703, 254, 254, 254, 254, 144, 144, 144, 144,
840 263, 82, 148, 82, 82, 82, 82, 364, 676, 268,
841 269, 270, 271, 148, 224, 148, 148, 148, 148, 145,
842 109, 224, 107, 198, 198, 198, 198, 109, 259, 664,
843 285, 671, 82, 147, 147, 147, 147, 382, 82, 286,
844 82, 82, 383, 384, 148, 224, 290, 273, 274, 104,
845 148, 109, 148, 148, 145, 199, 199, 199, 199, 199,
847 199, 199, 199, 199, 199, 199, 199, 270, 333, 333,
848 333, 333, 224, 334, 334, 334, 334, 669, 109, 215,
849 215, 215, 215, 215, 215, 215, 215, 215, 215, 215,
850 215, 82, 286, 82, 303, 270, 217, 361, 389, 82,
851 82, 82, 82, 218, 104, 148, 643, 219, 219, 219,
852 219, 219, 219, 219, 219, 219, 219, 219, 82, 82,
853 82, 82, 82, 82, 82, 82, 82, 217, 313, 314,
854 128, 220, 220, 220, 220, 220, 220, 220, 220, 220,
855 220, 220, 220, 82, 82, 82, 82, 82, 82, 82,
856 82, 82, 82, 82, 217, 82, 222, 82, 616, 223,
858 223, 223, 223, 224, 82, 298, 298, 298, 298, 148,
859 82, 82, 298, 298, 298, 298, 148, 82, 668, 143,
860 310, 311, 148, 148, 416, 417, 363, 222, 665, 148,
861 305, 220, 220, 220, 220, 220, 220, 220, 220, 220,
862 220, 220, 220, 331, 301, 335, 335, 335, 335, 337,
863 337, 337, 337, 332, 222, 225, 326, 226, 82, 304,
864 332, 82, 227, 228, 82, 661, 368, 229, 364, 287,
865 148, 230, 330, 148, 82, 289, 148, 82, 82, 225,
866 377, 226, 298, 298, 298, 298, 148, 227, 228, 148,
867 148, 145, 353, 229, 338, 338, 338, 338, 230, 124,
869 125, 125, 125, 124, 124, 124, 124, 124, 124, 124,
870 124, 124, 124, 124, 124, 354, 189, 307, 302, 124,
871 124, 124, 124, 193, 193, 193, 193, 194, 189, 307,
872 339, 339, 339, 339, 549, 315, 315, 315, 315, 354,
873 703, 419, 192, 550, 124, 128, 124, 703, 224, 313,
874 314, 321, 321, 321, 321, 224, 82, 82, 82, 82,
875 82, 82, 82, 82, 82, 82, 82, 338, 338, 338,
876 338, 703, 124, 124, 124, 241, 241, 241, 242, 224,
877 124, 124, 124, 124, 124, 124, 419, 192, 124, 124,
878 338, 338, 338, 338, 124, 124, 368, 124, 703, 82,
880 424, 350, 369, 369, 369, 369, 224, 392, 392, 392,
881 392, 148, 338, 338, 338, 338, 82, 416, 417, 124,
882 128, 403, 489, 490, 351, 661, 82, 656, 148, 241,
883 241, 241, 242, 253, 393, 393, 393, 393, 148, 104,
884 370, 370, 370, 370, 445, 655, 255, 124, 124, 244,
885 244, 244, 244, 244, 244, 244, 244, 244, 244, 244,
886 244, 82, 245, 359, 425, 361, 246, 451, 445, 82,
887 82, 82, 82, 247, 128, 248, 372, 249, 249, 249,
888 249, 249, 249, 249, 249, 249, 249, 249, 249, 249,
889 249, 249, 249, 249, 249, 249, 249, 250, 128, 474,
891 128, 251, 251, 251, 251, 251, 251, 251, 251, 251,
892 251, 251, 251, 249, 249, 249, 249, 249, 249, 249,
893 249, 249, 249, 249, 250, 249, 133, 133, 133, 133,
894 133, 133, 133, 133, 133, 133, 133, 133, 82, 253,
895 419, 192, 143, 82, 489, 490, 254, 254, 254, 254,
896 654, 446, 255, 413, 256, 256, 256, 256, 256, 256,
897 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
898 256, 256, 256, 256, 256, 447, 419, 192, 82, 82,
899 82, 82, 257, 82, 82, 82, 82, 82, 82, 82,
900 82, 82, 82, 82, 82, 82, 82, 82, 82, 82,
902 82, 82, 82, 95, 95, 95, 422, 422, 422, 422,
903 82, 684, 82, 654, 145, 147, 98, 412, 153, 153,
904 153, 153, 148, 443, 148, 104, 155, 155, 155, 155,
905 155, 155, 155, 155, 147, 155, 147, 147, 155, 155,
906 155, 155, 147, 147, 147, 155, 147, 378, 463, 651,
907 155, 155, 155, 155, 155, 155, 155, 155, 155, 155,
908 155, 155, 147, 155, 155, 155, 155, 155, 147, 147,
909 147, 147, 147, 147, 147, 82, 82, 390, 82, 189,
910 492, 444, 378, 145, 493, 703, 391, 148, 148, 650,
911 148, 82, 703, 703, 703, 703, 377, 464, 703, 394,
913 394, 394, 394, 148, 147, 147, 147, 147, 147, 147,
914 147, 147, 147, 147, 147, 275, 275, 275, 275, 275,
915 275, 275, 275, 275, 275, 275, 275, 82, 703, 82,
916 426, 411, 276, 489, 490, 147, 147, 147, 147, 277,
917 400, 148, 522, 278, 278, 278, 278, 278, 278, 278,
918 278, 278, 278, 278, 147, 147, 147, 147, 147, 147,
919 147, 147, 147, 276, 419, 192, 523, 279, 279, 279,
920 279, 279, 279, 279, 279, 279, 279, 279, 279, 147,
921 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
922 276, 147, 280, 143, 427, 281, 281, 281, 281, 282,
924 648, 353, 104, 82, 82, 82, 82, 381, 381, 381,
925 381, 394, 394, 394, 394, 148, 148, 148, 148, 432,
926 432, 432, 432, 280, 401, 489, 490, 279, 279, 279,
927 279, 279, 279, 279, 279, 279, 279, 279, 279, 434,
928 434, 434, 434, 451, 647, 398, 398, 642, 401, 402,
929 280, 292, 292, 292, 292, 292, 292, 292, 292, 292,
930 292, 292, 292, 82, 245, 145, 82, 599, 293, 489,
931 490, 147, 147, 147, 147, 294, 528, 248, 148, 295,
932 295, 295, 295, 295, 295, 295, 295, 295, 295, 295,
933 295, 295, 295, 295, 295, 295, 295, 295, 295, 296,
935 539, 388, 539, 297, 297, 297, 297, 297, 297, 297,
936 297, 297, 297, 297, 297, 295, 295, 295, 295, 295,
937 295, 295, 295, 295, 295, 295, 296, 295, 177, 177,
938 177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
939 82, 253, 641, 82, 640, 147, 104, 598, 298, 298,
940 298, 298, 148, 639, 255, 148, 299, 299, 299, 299,
941 299, 299, 299, 299, 299, 299, 299, 299, 299, 299,
942 299, 299, 299, 299, 299, 299, 299, 452, 452, 452,
943 147, 147, 147, 147, 300, 147, 147, 147, 147, 147,
944 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
946 147, 147, 147, 147, 147, 219, 219, 219, 219, 219,
947 219, 219, 219, 219, 219, 219, 82, 369, 369, 369,
948 369, 104, 453, 104, 394, 394, 394, 394, 148, 220,
949 220, 220, 220, 220, 220, 220, 220, 220, 220, 220,
950 220, 336, 336, 336, 336, 336, 336, 336, 336, 336,
951 336, 336, 82, 189, 307, 104, 658, 463, 399, 104,
952 421, 421, 421, 421, 148, 320, 320, 320, 320, 320,
953 320, 320, 320, 320, 320, 320, 320, 340, 82, 82,
954 82, 462, 82, 630, 341, 541, 342, 82, 270, 368,
955 148, 148, 148, 82, 148, 408, 408, 408, 408, 148,
957 404, 394, 394, 394, 394, 148, 462, 428, 340, 104,
958 615, 104, 343, 343, 343, 343, 343, 343, 343, 343,
959 343, 343, 343, 343, 399, 456, 456, 456, 456, 405,
960 494, 494, 494, 494, 560, 340, 124, 241, 241, 241,
961 242, 82, 124, 124, 124, 124, 124, 124, 703, 517,
962 124, 124, 406, 148, 341, 703, 124, 124, 428, 124,
963 373, 341, 332, 342, 703, 341, 82, 540, 682, 332,
964 636, 429, 341, 374, 703, 82, 373, 703, 148, 703,
965 342, 124, 128, 82, 457, 341, 507, 148, 82, 703,
966 82, 82, 82, 82, 82, 635, 341, 458, 508, 143,
968 406, 628, 148, 461, 433, 82, 703, 703, 90, 124,
969 124, 253, 341, 466, 466, 466, 466, 148, 467, 703,
970 92, 481, 429, 341, 255, 94, 256, 256, 256, 256,
971 256, 256, 256, 256, 256, 256, 256, 256, 256, 256,
972 256, 256, 256, 256, 256, 256, 256, 214, 214, 482,
973 539, 388, 539, 627, 257, 366, 366, 366, 366, 366,
974 366, 366, 366, 366, 366, 366, 366, 373, 143, 82,
975 623, 145, 452, 452, 452, 606, 529, 529, 529, 486,
976 374, 148, 375, 375, 375, 375, 375, 375, 375, 375,
977 375, 375, 375, 375, 375, 375, 375, 375, 375, 375,
979 375, 375, 375, 468, 82, 457, 532, 443, 622, 703,
980 376, 82, 82, 469, 82, 99, 148, 453, 458, 476,
981 101, 530, 703, 148, 148, 570, 148, 278, 278, 278,
982 278, 278, 278, 278, 278, 278, 278, 278, 82, 571,
983 145, 549, 104, 520, 216, 216, 475, 475, 475, 475,
984 148, 279, 279, 279, 279, 279, 279, 279, 279, 279,
985 279, 279, 279, 395, 477, 478, 82, 82, 82, 520,
986 396, 624, 342, 82, 457, 614, 514, 613, 148, 148,
987 148, 408, 408, 408, 408, 148, 208, 703, 209, 479,
988 514, 514, 657, 210, 395, 624, 270, 509, 397, 397,
990 397, 397, 397, 397, 397, 397, 397, 397, 397, 397,
991 510, 624, 483, 480, 143, 529, 529, 529, 605, 82,
992 457, 395, 82, 253, 147, 82, 534, 147, 147, 147,
993 147, 148, 606, 458, 148, 624, 255, 148, 299, 299,
994 299, 299, 299, 299, 299, 299, 299, 299, 299, 299,
995 299, 299, 299, 299, 299, 299, 299, 299, 299, 625,
996 530, 104, 221, 221, 612, 104, 300, 407, 407, 407,
997 407, 407, 407, 407, 407, 407, 407, 407, 407, 373,
998 189, 307, 608, 626, 252, 252, 535, 553, 553, 553,
999 553, 608, 374, 632, 409, 409, 409, 409, 409, 409,
1001 409, 409, 409, 409, 409, 409, 409, 409, 409, 409,
1002 409, 409, 409, 409, 409, 629, 672, 633, 519, 367,
1003 367, 607, 410, 343, 343, 343, 343, 343, 343, 343,
1004 343, 343, 343, 343, 343, 397, 397, 397, 397, 397,
1005 397, 397, 397, 397, 397, 397, 397, 82, 520, 82,
1006 111, 443, 82, 463, 82, 82, 82, 82, 521, 148,
1007 111, 148, 589, 82, 148, 82, 148, 148, 148, 148,
1008 703, 143, 544, 509, 520, 148, 514, 148, 143, 604,
1009 82, 543, 548, 703, 82, 82, 703, 557, 82, 583,
1010 514, 514, 148, 82, 624, 82, 148, 148, 82, 652,
1012 148, 545, 485, 270, 509, 148, 543, 148, 556, 603,
1013 148, 597, 578, 596, 595, 571, 546, 510, 624, 511,
1014 511, 511, 511, 511, 511, 511, 511, 511, 511, 511,
1015 511, 511, 511, 511, 511, 511, 511, 511, 511, 511,
1016 82, 509, 579, 145, 594, 547, 600, 594, 593, 686,
1017 145, 104, 148, 592, 510, 591, 542, 542, 542, 542,
1018 542, 542, 542, 542, 542, 542, 542, 542, 542, 542,
1019 542, 542, 542, 542, 542, 542, 542, 143, 82, 189,
1020 492, 631, 590, 82, 82, 143, 553, 553, 553, 553,
1021 148, 573, 573, 573, 573, 148, 148, 82, 82, 573,
1023 573, 573, 573, 82, 82, 678, 143, 388, 624, 148,
1024 148, 104, 388, 637, 624, 148, 148, 602, 181, 624,
1025 143, 262, 563, 143, 582, 143, 666, 580, 624, 600,
1026 624, 621, 624, 663, 634, 646, 649, 638, 624, 143,
1027 646, 581, 620, 624, 653, 624, 581, 664, 563, 145,
1028 662, 143, 624, 589, 624, 588, 587, 535, 686, 646,
1029 143, 657, 675, 601, 646, 586, 585, 666, 388, 624,
1030 143, 680, 686, 557, 552, 388, 388, 388, 145, 609,
1031 609, 683, 609, 609, 609, 609, 609, 388, 609, 609,
1032 609, 609, 145, 609, 609, 145, 646, 145, 659, 609,
1034 609, 609, 609, 646, 646, 646, 686, 584, 673, 611,
1035 686, 145, 388, 679, 575, 646, 574, 687, 679, 388,
1036 646, 688, 660, 145, 609, 609, 609, 646, 646, 646,
1037 262, 264, 145, 611, 686, 674, 462, 686, 686, 646,
1038 686, 532, 145, 572, 701, 689, 569, 646, 690, 691,
1039 568, 692, 609, 609, 609, 609, 567, 609, 609, 609,
1040 609, 609, 610, 609, 609, 609, 609, 566, 609, 609,
1041 686, 646, 565, 564, 618, 609, 609, 609, 262, 563,
1042 137, 693, 262, 686, 619, 686, 686, 561, 559, 558,
1043 557, 686, 686, 686, 694, 556, 695, 696, 555, 609,
1045 609, 609, 697, 698, 699, 686, 262, 506, 619, 262,
1046 262, 506, 262, 504, 504, 502, 700, 502, 500, 500,
1047 498, 498, 496, 496, 552, 537, 536, 609, 609, 609,
1048 609, 212, 609, 609, 609, 609, 609, 205, 609, 609,
1049 609, 609, 262, 609, 609, 377, 533, 462, 532, 609,
1050 609, 609, 609, 455, 111, 262, 527, 262, 262, 611,
1051 526, 525, 524, 262, 262, 262, 443, 111, 517, 516,
1052 515, 513, 512, 431, 609, 609, 609, 262, 506, 504,
1053 502, 500, 498, 611, 496, 433, 307, 487, 267, 388,
1054 471, 470, 86, 206, 465, 462, 377, 368, 455, 450,
1056 449, 448, 609, 609, 609, 609, 206, 609, 609, 609,
1057 609, 609, 610, 609, 609, 609, 609, 442, 609, 609,
1058 441, 440, 439, 438, 618, 609, 609, 609, 437, 436,
1059 435, 342, 433, 342, 619, 212, 212, 206, 205, 205,
1060 205, 319, 319, 317, 317, 414, 368, 267, 267, 609,
1061 609, 609, 267, 266, 388, 266, 359, 380, 619, 351,
1062 350, 377, 253, 368, 368, 245, 358, 357, 356, 355,
1063 352, 348, 347, 346, 345, 344, 330, 609, 609, 82,
1064 330, 329, 328, 82, 82, 327, 326, 82, 82, 82,
1065 82, 82, 82, 82, 82, 83, 83, 83, 83, 83,
1067 326, 83, 83, 83, 83, 83, 83, 83, 83, 83,
1068 83, 83, 83, 83, 89, 89, 325, 324, 323, 89,
1069 89, 89, 103, 103, 103, 103, 103, 103, 103, 103,
1070 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
1071 103, 127, 127, 127, 127, 127, 127, 127, 127, 127,
1072 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
1073 142, 142, 142, 142, 142, 142, 142, 142, 142, 142,
1074 142, 142, 142, 142, 142, 142, 142, 142, 142, 147,
1075 322, 319, 317, 147, 147, 147, 306, 147, 147, 147,
1076 147, 147, 147, 147, 147, 188, 188, 188, 188, 188,
1078 267, 188, 188, 188, 188, 188, 188, 188, 188, 188,
1079 188, 188, 188, 188, 190, 190, 190, 190, 190, 190,
1080 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
1081 190, 190, 190, 207, 207, 291, 289, 288, 287, 284,
1082 283, 267, 267, 207, 266, 264, 207, 207, 262, 207,
1083 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
1084 124, 124, 124, 124, 124, 124, 124, 124, 124, 243,
1085 243, 243, 243, 243, 243, 243, 243, 243, 243, 243,
1086 243, 243, 243, 243, 243, 243, 243, 243, 143, 143,
1087 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
1089 143, 143, 143, 143, 143, 143, 143, 265, 265, 265,
1090 265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
1091 265, 265, 265, 265, 265, 265, 147, 261, 237, 206,
1092 147, 147, 147, 260, 147, 147, 147, 147, 147, 147,
1093 147, 147, 272, 272, 272, 272, 272, 272, 272, 272,
1094 272, 272, 272, 272, 272, 272, 272, 272, 272, 272,
1095 272, 188, 188, 188, 188, 188, 188, 188, 188, 188,
1096 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
1097 190, 190, 190, 190, 190, 190, 190, 190, 190, 190,
1098 190, 190, 190, 190, 190, 190, 190, 190, 190, 309,
1100 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
1101 309, 309, 309, 309, 309, 309, 309, 309, 312, 312,
1102 312, 312, 312, 312, 312, 312, 312, 312, 312, 312,
1103 312, 312, 312, 312, 312, 312, 312, 316, 316, 235,
1104 316, 316, 316, 316, 316, 316, 316, 316, 316, 316,
1105 316, 316, 316, 316, 316, 316, 318, 318, 128, 318,
1106 318, 318, 318, 318, 318, 318, 318, 318, 318, 318,
1107 318, 318, 318, 318, 318, 320, 239, 320, 238, 237,
1108 206, 320, 320, 320, 236, 235, 320, 360, 360, 360,
1109 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
1111 360, 360, 360, 360, 360, 360, 124, 124, 124, 124,
1112 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
1113 124, 124, 124, 124, 124, 362, 362, 362, 362, 362,
1114 362, 362, 362, 362, 362, 362, 362, 362, 362, 362,
1115 362, 362, 362, 362, 243, 243, 243, 243, 243, 243,
1116 243, 243, 243, 243, 243, 243, 243, 243, 243, 243,
1117 243, 243, 243, 365, 365, 365, 365, 365, 365, 365,
1118 365, 371, 234, 234, 233, 371, 232, 371, 371, 371,
1119 371, 231, 371, 265, 265, 265, 265, 265, 265, 265,
1120 265, 265, 265, 265, 265, 265, 265, 265, 265, 265,
1122 265, 265, 387, 387, 387, 387, 387, 387, 387, 387,
1123 387, 387, 387, 387, 387, 387, 387, 387, 387, 387,
1124 387, 147, 104, 212, 211, 147, 147, 147, 205, 147,
1125 147, 147, 147, 147, 147, 147, 147, 272, 272, 272,
1126 272, 272, 272, 272, 272, 272, 272, 272, 272, 272,
1127 272, 272, 272, 272, 272, 272, 103, 103, 103, 103,
1128 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
1129 103, 103, 103, 103, 103, 312, 312, 312, 312, 312,
1130 312, 312, 312, 312, 312, 312, 312, 312, 312, 312,
1131 312, 312, 312, 312, 309, 309, 309, 309, 309, 309,
1133 309, 309, 309, 309, 309, 309, 309, 309, 309, 309,
1134 309, 309, 309, 415, 415, 415, 415, 415, 415, 415,
1135 415, 415, 415, 415, 415, 415, 415, 415, 415, 415,
1136 415, 415, 418, 418, 418, 418, 418, 418, 418, 418,
1137 418, 418, 418, 418, 418, 418, 418, 418, 418, 418,
1138 418, 420, 420, 420, 420, 420, 420, 420, 420, 420,
1139 420, 420, 420, 420, 420, 420, 420, 420, 420, 420,
1140 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
1141 188, 188, 188, 188, 188, 188, 188, 188, 188, 316,
1142 316, 206, 316, 316, 316, 316, 316, 316, 316, 316,
1144 316, 316, 316, 316, 316, 316, 316, 316, 318, 318,
1145 205, 318, 318, 318, 318, 318, 318, 318, 318, 318,
1146 318, 318, 318, 318, 318, 318, 318, 423, 197, 423,
1147 423, 189, 187, 423, 423, 423, 163, 162, 423, 360,
1148 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
1149 360, 360, 360, 360, 360, 360, 360, 360, 362, 362,
1150 362, 362, 362, 362, 362, 362, 362, 362, 362, 362,
1151 362, 362, 362, 362, 362, 362, 362, 124, 124, 124,
1152 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
1153 124, 124, 124, 124, 124, 124, 454, 454, 454, 454,
1155 454, 454, 454, 454, 454, 454, 454, 454, 454, 454,
1156 454, 454, 454, 454, 454, 459, 459, 146, 122, 459,
1157 459, 140, 459, 459, 459, 459, 459, 459, 459, 459,
1158 459, 460, 137, 114, 113, 104, 86, 460, 460, 460,
1159 460, 703, 460, 387, 387, 387, 387, 387, 387, 387,
1160 387, 387, 387, 387, 387, 387, 387, 387, 387, 387,
1161 387, 387, 103, 103, 103, 103, 103, 103, 103, 103,
1162 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
1163 103, 484, 484, 703, 703, 484, 484, 484, 484, 484,
1164 484, 484, 484, 484, 484, 484, 484, 416, 416, 416,
1166 416, 416, 416, 416, 416, 416, 416, 416, 416, 416,
1167 416, 416, 416, 416, 416, 416, 488, 488, 488, 488,
1168 488, 488, 488, 488, 488, 488, 488, 488, 488, 488,
1169 488, 488, 488, 488, 488, 491, 491, 491, 491, 491,
1170 491, 491, 491, 491, 491, 491, 491, 491, 491, 491,
1171 491, 491, 491, 491, 495, 495, 703, 495, 495, 495,
1172 495, 495, 495, 495, 495, 495, 495, 495, 495, 495,
1173 495, 495, 495, 497, 497, 703, 497, 497, 497, 497,
1174 497, 497, 497, 497, 497, 497, 497, 497, 497, 497,
1175 497, 497, 499, 499, 703, 499, 499, 499, 499, 499,
1177 499, 499, 499, 499, 499, 499, 499, 499, 499, 499,
1178 499, 501, 501, 703, 501, 501, 501, 501, 501, 501,
1179 501, 501, 501, 501, 501, 501, 501, 501, 501, 501,
1180 503, 503, 703, 503, 503, 503, 503, 503, 503, 503,
1181 503, 503, 503, 503, 503, 503, 503, 503, 503, 505,
1182 505, 703, 505, 505, 505, 505, 505, 505, 505, 505,
1183 505, 505, 505, 505, 505, 505, 505, 505, 360, 360,
1184 360, 360, 360, 360, 360, 360, 360, 360, 360, 360,
1185 360, 360, 360, 360, 360, 360, 360, 124, 124, 124,
1186 124, 124, 124, 124, 124, 124, 124, 124, 124, 124,
1188 124, 124, 124, 124, 124, 124, 454, 454, 454, 454,
1189 454, 454, 454, 454, 454, 454, 454, 454, 454, 454,
1190 454, 454, 454, 454, 454, 531, 703, 703, 703, 703,
1191 703, 531, 531, 531, 531, 531, 531, 531, 531, 531,
1192 538, 538, 538, 538, 538, 538, 538, 538, 538, 538,
1193 538, 538, 538, 538, 538, 538, 538, 538, 538, 551,
1194 551, 551, 551, 703, 551, 551, 551, 551, 551, 551,
1195 551, 551, 551, 551, 551, 551, 551, 551, 554, 703,
1196 703, 703, 703, 703, 554, 554, 554, 554, 562, 562,
1197 703, 562, 562, 562, 562, 562, 562, 562, 562, 562,
1199 562, 562, 562, 562, 562, 562, 562, 610, 610, 703,
1200 610, 610, 610, 610, 610, 610, 610, 610, 610, 610,
1201 610, 610, 610, 610, 610, 610, 617, 617, 703, 617,
1202 617, 617, 617, 617, 617, 617, 617, 617, 617, 617,
1203 617, 617, 617, 617, 617, 609, 609, 703, 609, 609,
1204 609, 609, 609, 609, 609, 609, 609, 609, 609, 609,
1205 609, 609, 609, 609, 645, 645, 645, 645, 645, 645,
1206 645, 645, 645, 645, 645, 645, 645, 645, 645, 645,
1207 645, 645, 645, 667, 667, 667, 667, 667, 667, 667,
1208 667, 667, 667, 667, 667, 667, 667, 667, 667, 667,
1210 667, 667, 670, 670, 670, 670, 670, 670, 670, 670,
1211 670, 670, 670, 670, 670, 670, 670, 670, 670, 670,
1212 670, 685, 685, 685, 685, 685, 685, 685, 685, 685,
1213 685, 685, 685, 685, 685, 685, 685, 685, 685, 685,
1214 3, 703, 703, 703, 703, 703, 703, 703, 703, 703,
1215 703, 703, 703, 703, 703, 703, 703, 703, 703, 703,
1216 703, 703, 703, 703, 703, 703, 703, 703, 703, 703,
1217 703, 703, 703, 703, 703, 703, 703, 703, 703, 703,
1218 703, 703, 703, 703, 703, 703, 703, 703, 703, 703,
1219 703, 703, 703, 703, 703, 703, 703, 703, 703, 703,
1221 703, 703, 703, 703, 703, 703, 703, 703, 703, 703,
1222 703, 703, 703, 703, 703, 703
1225 static yyconst flex_int16_t yy_chk[4217] =
1227 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1228 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1229 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1230 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1231 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1232 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1233 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1234 1, 1, 1, 1, 1, 2, 2, 2, 2, 2,
1235 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1236 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1238 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1239 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1240 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1241 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1242 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1243 5, 6, 6, 6, 6, 8, 10, 10, 11, 19,
1244 55, 46, 8, 8, 8, 8, 16, 701, 11, 13,
1245 11, 11, 40, 46, 5, 11, 12, 12, 12, 13,
1246 99, 13, 99, 12, 19, 55, 13, 86, 12, 12,
1247 12, 12, 12, 12, 12, 12, 328, 43, 328, 12,
1249 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
1250 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
1251 681, 40, 16, 12, 12, 12, 12, 12, 12, 12,
1252 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
1253 12, 12, 12, 12, 12, 12, 12, 12, 15, 43,
1254 15, 86, 15, 15, 15, 15, 15, 15, 390, 28,
1255 15, 21, 21, 21, 21, 20, 20, 20, 20, 23,
1256 23, 23, 23, 541, 22, 35, 35, 22, 22, 22,
1257 22, 15, 35, 35, 35, 15, 15, 15, 15, 15,
1258 15, 15, 15, 15, 15, 15, 15, 20, 22, 24,
1260 24, 24, 24, 25, 390, 23, 28, 29, 15, 29,
1261 29, 50, 50, 126, 29, 28, 25, 25, 25, 25,
1262 30, 30, 30, 30, 30, 31, 31, 541, 31, 31,
1263 31, 52, 677, 74, 32, 32, 142, 30, 32, 32,
1264 32, 34, 34, 36, 36, 74, 126, 34, 34, 34,
1265 24, 36, 36, 36, 676, 25, 26, 26, 26, 26,
1266 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
1267 26, 26, 33, 74, 76, 670, 26, 26, 26, 26,
1268 84, 84, 38, 38, 33, 33, 76, 52, 147, 33,
1269 33, 33, 38, 38, 540, 37, 37, 33, 63, 49,
1271 147, 26, 26, 26, 37, 37, 37, 44, 142, 49,
1272 64, 49, 64, 64, 155, 47, 49, 64, 76, 151,
1273 47, 44, 44, 44, 44, 47, 155, 47, 47, 26,
1274 26, 27, 47, 151, 27, 27, 27, 27, 27, 57,
1275 57, 57, 57, 61, 540, 63, 56, 56, 56, 56,
1276 59, 59, 59, 59, 63, 442, 61, 61, 61, 61,
1277 66, 66, 27, 66, 66, 66, 27, 27, 27, 27,
1278 27, 27, 27, 27, 27, 27, 27, 27, 56, 44,
1279 442, 65, 65, 65, 65, 65, 59, 91, 91, 27,
1280 48, 48, 48, 69, 69, 61, 669, 48, 65, 69,
1282 69, 69, 48, 48, 48, 48, 48, 48, 48, 48,
1283 95, 95, 95, 48, 48, 48, 48, 48, 48, 48,
1284 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
1285 48, 48, 48, 48, 98, 98, 98, 48, 48, 48,
1286 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
1287 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
1288 48, 48, 51, 156, 156, 51, 388, 51, 388, 51,
1289 51, 51, 51, 51, 51, 58, 68, 51, 58, 58,
1290 58, 58, 60, 60, 60, 60, 67, 67, 68, 68,
1291 67, 67, 67, 68, 68, 68, 188, 188, 51, 58,
1293 630, 68, 51, 51, 51, 51, 51, 51, 51, 51,
1294 51, 51, 51, 51, 70, 70, 189, 189, 71, 71,
1295 667, 70, 70, 70, 257, 51, 71, 71, 71, 81,
1296 81, 81, 81, 60, 62, 190, 190, 73, 73, 62,
1297 72, 72, 62, 62, 62, 62, 62, 73, 73, 72,
1298 72, 72, 75, 77, 90, 78, 90, 75, 154, 630,
1299 78, 90, 191, 191, 75, 77, 117, 117, 117, 117,
1300 62, 154, 78, 257, 62, 62, 62, 62, 62, 62,
1301 62, 62, 62, 62, 62, 62, 230, 79, 134, 134,
1302 134, 134, 230, 135, 135, 135, 135, 62, 79, 192,
1304 192, 79, 79, 79, 79, 242, 75, 78, 85, 96,
1305 96, 96, 77, 332, 100, 85, 85, 85, 85, 85,
1306 266, 96, 144, 96, 100, 135, 100, 332, 96, 266,
1307 163, 100, 136, 136, 136, 136, 144, 144, 144, 144,
1308 144, 149, 163, 150, 152, 164, 171, 242, 665, 149,
1309 149, 150, 152, 149, 198, 150, 152, 164, 171, 79,
1310 89, 198, 89, 89, 89, 89, 89, 89, 136, 663,
1311 163, 657, 165, 166, 166, 166, 166, 264, 169, 164,
1312 182, 183, 264, 264, 165, 198, 171, 272, 272, 629,
1313 169, 89, 182, 183, 144, 89, 89, 89, 89, 89,
1315 89, 89, 89, 89, 89, 89, 89, 169, 214, 214,
1316 214, 214, 198, 215, 215, 215, 215, 656, 89, 106,
1317 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
1318 106, 108, 165, 268, 182, 183, 108, 240, 268, 108,
1319 108, 108, 108, 108, 599, 268, 629, 108, 108, 108,
1320 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
1321 108, 108, 108, 108, 108, 108, 108, 108, 308, 308,
1322 240, 108, 108, 108, 108, 108, 108, 108, 108, 108,
1323 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
1324 108, 108, 108, 108, 108, 108, 110, 178, 599, 110,
1326 110, 110, 110, 110, 179, 178, 178, 178, 178, 178,
1327 181, 185, 179, 179, 179, 179, 179, 184, 655, 186,
1328 309, 309, 181, 185, 310, 310, 362, 110, 651, 184,
1329 186, 110, 110, 110, 110, 110, 110, 110, 110, 110,
1330 110, 110, 110, 213, 179, 216, 216, 216, 216, 219,
1331 219, 219, 219, 213, 110, 111, 269, 111, 270, 185,
1332 213, 269, 111, 111, 295, 648, 295, 111, 362, 181,
1333 270, 111, 271, 269, 180, 184, 295, 271, 299, 111,
1334 299, 111, 180, 180, 180, 180, 180, 111, 111, 271,
1335 299, 186, 234, 111, 220, 220, 220, 220, 111, 125,
1337 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
1338 125, 125, 125, 125, 125, 234, 193, 193, 180, 125,
1339 125, 125, 125, 193, 193, 193, 193, 193, 194, 194,
1340 221, 221, 221, 221, 487, 194, 194, 194, 194, 234,
1341 224, 311, 311, 487, 125, 125, 125, 224, 199, 312,
1342 312, 199, 199, 199, 199, 199, 222, 222, 222, 222,
1343 222, 222, 222, 222, 222, 222, 222, 231, 231, 231,
1344 231, 224, 125, 125, 127, 127, 127, 127, 127, 199,
1345 127, 127, 127, 127, 127, 127, 313, 313, 127, 127,
1346 232, 232, 232, 232, 127, 127, 251, 127, 224, 275,
1348 326, 231, 251, 251, 251, 251, 199, 275, 275, 275,
1349 275, 275, 239, 239, 239, 239, 288, 415, 415, 127,
1350 127, 288, 417, 417, 232, 647, 278, 642, 288, 241,
1351 241, 241, 241, 252, 278, 278, 278, 278, 278, 391,
1352 252, 252, 252, 252, 353, 641, 252, 127, 127, 129,
1353 129, 129, 129, 129, 129, 129, 129, 129, 129, 129,
1354 129, 130, 130, 239, 326, 360, 130, 361, 353, 130,
1355 130, 130, 130, 130, 241, 130, 252, 130, 130, 130,
1356 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
1357 130, 130, 130, 130, 130, 130, 130, 130, 360, 391,
1359 361, 130, 130, 130, 130, 130, 130, 130, 130, 130,
1360 130, 130, 130, 130, 130, 130, 130, 130, 130, 130,
1361 130, 130, 130, 130, 130, 130, 132, 132, 132, 132,
1362 132, 132, 132, 132, 132, 132, 132, 132, 133, 133,
1363 418, 418, 305, 133, 419, 419, 133, 133, 133, 133,
1364 640, 354, 133, 305, 133, 133, 133, 133, 133, 133,
1365 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
1366 133, 133, 133, 133, 133, 354, 420, 420, 133, 133,
1367 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
1368 133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
1370 133, 133, 133, 153, 153, 153, 320, 320, 320, 320,
1371 153, 683, 303, 639, 305, 153, 153, 303, 153, 153,
1372 153, 153, 153, 352, 303, 274, 153, 153, 153, 153,
1373 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
1374 153, 153, 153, 153, 153, 153, 153, 372, 376, 636,
1375 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
1376 153, 153, 153, 153, 153, 153, 153, 153, 153, 153,
1377 153, 153, 153, 153, 153, 157, 300, 274, 285, 421,
1378 421, 352, 300, 683, 421, 253, 274, 157, 300, 635,
1379 285, 279, 253, 253, 253, 253, 372, 376, 253, 279,
1381 279, 279, 279, 279, 280, 280, 280, 280, 280, 280,
1382 280, 280, 280, 280, 280, 157, 157, 157, 157, 157,
1383 157, 157, 157, 157, 157, 157, 157, 158, 253, 393,
1384 330, 300, 158, 488, 488, 158, 158, 158, 158, 158,
1385 285, 393, 445, 158, 158, 158, 158, 158, 158, 158,
1386 158, 158, 158, 158, 158, 158, 158, 158, 158, 158,
1387 158, 158, 158, 158, 490, 490, 445, 158, 158, 158,
1388 158, 158, 158, 158, 158, 158, 158, 158, 158, 158,
1389 158, 158, 158, 158, 158, 158, 158, 158, 158, 158,
1390 158, 158, 160, 263, 330, 160, 160, 160, 160, 160,
1392 633, 286, 577, 283, 301, 287, 286, 263, 263, 263,
1393 263, 283, 283, 283, 283, 283, 301, 287, 286, 336,
1394 336, 336, 336, 160, 286, 491, 491, 160, 160, 160,
1395 160, 160, 160, 160, 160, 160, 160, 160, 160, 343,
1396 343, 343, 343, 451, 632, 283, 301, 628, 286, 287,
1397 160, 173, 173, 173, 173, 173, 173, 173, 173, 173,
1398 173, 173, 173, 174, 174, 263, 402, 577, 174, 552,
1399 552, 174, 174, 174, 174, 174, 451, 174, 402, 174,
1400 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
1401 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
1403 472, 472, 472, 174, 174, 174, 174, 174, 174, 174,
1404 174, 174, 174, 174, 174, 174, 174, 174, 174, 174,
1405 174, 174, 174, 174, 174, 174, 174, 174, 176, 176,
1406 176, 176, 176, 176, 176, 176, 176, 176, 176, 176,
1407 177, 177, 627, 411, 626, 177, 576, 576, 177, 177,
1408 177, 177, 177, 625, 177, 411, 177, 177, 177, 177,
1409 177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
1410 177, 177, 177, 177, 177, 177, 177, 363, 363, 363,
1411 177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
1412 177, 177, 177, 177, 177, 177, 177, 177, 177, 177,
1414 177, 177, 177, 177, 177, 217, 217, 217, 217, 217,
1415 217, 217, 217, 217, 217, 217, 284, 366, 366, 366,
1416 366, 474, 363, 616, 284, 284, 284, 284, 284, 217,
1417 217, 217, 217, 217, 217, 217, 217, 217, 217, 217,
1418 217, 218, 218, 218, 218, 218, 218, 218, 218, 218,
1419 218, 218, 289, 315, 315, 644, 644, 461, 284, 598,
1420 315, 315, 315, 315, 289, 218, 218, 218, 218, 218,
1421 218, 218, 218, 218, 218, 218, 218, 223, 290, 409,
1422 389, 409, 302, 616, 223, 474, 223, 297, 389, 297,
1423 290, 409, 389, 291, 302, 297, 297, 297, 297, 297,
1425 289, 291, 291, 291, 291, 291, 461, 586, 223, 473,
1426 598, 678, 223, 223, 223, 223, 223, 223, 223, 223,
1427 223, 223, 223, 223, 302, 367, 367, 367, 367, 290,
1428 423, 423, 423, 423, 515, 223, 243, 243, 243, 243,
1429 243, 304, 243, 243, 243, 243, 243, 243, 341, 515,
1430 243, 243, 291, 304, 321, 341, 243, 243, 331, 243,
1431 370, 321, 331, 321, 373, 335, 392, 473, 678, 331,
1432 623, 586, 335, 370, 335, 404, 374, 373, 392, 341,
1433 392, 243, 243, 369, 369, 321, 431, 404, 369, 374,
1434 394, 369, 369, 369, 369, 622, 335, 369, 431, 381,
1436 304, 614, 394, 370, 394, 405, 341, 373, 383, 243,
1437 243, 244, 321, 381, 381, 381, 381, 405, 383, 374,
1438 383, 404, 331, 335, 244, 383, 244, 244, 244, 244,
1439 244, 244, 244, 244, 244, 244, 244, 244, 244, 244,
1440 244, 244, 244, 244, 244, 244, 244, 714, 714, 405,
1441 539, 539, 539, 613, 244, 246, 246, 246, 246, 246,
1442 246, 246, 246, 246, 246, 246, 246, 254, 413, 398,
1443 607, 381, 452, 452, 452, 605, 455, 455, 455, 413,
1444 254, 398, 254, 254, 254, 254, 254, 254, 254, 254,
1445 254, 254, 254, 254, 254, 254, 254, 254, 254, 254,
1447 254, 254, 254, 384, 484, 456, 484, 400, 604, 457,
1448 254, 276, 400, 384, 399, 384, 484, 452, 456, 398,
1449 384, 455, 457, 276, 400, 526, 399, 276, 276, 276,
1450 276, 276, 276, 276, 276, 276, 276, 276, 397, 526,
1451 413, 603, 643, 591, 715, 715, 397, 397, 397, 397,
1452 397, 276, 276, 276, 276, 276, 276, 276, 276, 276,
1453 276, 276, 276, 281, 399, 400, 401, 403, 406, 591,
1454 281, 608, 281, 407, 458, 597, 437, 596, 401, 403,
1455 406, 407, 407, 407, 407, 407, 468, 458, 468, 401,
1456 437, 437, 643, 468, 281, 608, 403, 494, 281, 281,
1458 281, 281, 281, 281, 281, 281, 281, 281, 281, 281,
1459 494, 609, 406, 401, 466, 529, 529, 529, 589, 408,
1460 408, 281, 292, 292, 408, 485, 466, 408, 408, 408,
1461 408, 408, 589, 408, 292, 609, 292, 485, 292, 292,
1462 292, 292, 292, 292, 292, 292, 292, 292, 292, 292,
1463 292, 292, 292, 292, 292, 292, 292, 292, 292, 611,
1464 529, 615, 716, 716, 595, 658, 292, 293, 293, 293,
1465 293, 293, 293, 293, 293, 293, 293, 293, 293, 298,
1466 493, 493, 593, 611, 719, 719, 466, 493, 493, 493,
1467 493, 592, 298, 619, 298, 298, 298, 298, 298, 298,
1469 298, 298, 298, 298, 298, 298, 298, 298, 298, 298,
1470 298, 298, 298, 298, 298, 615, 658, 619, 443, 736,
1471 736, 590, 298, 340, 340, 340, 340, 340, 340, 340,
1472 340, 340, 340, 340, 340, 395, 395, 395, 395, 395,
1473 395, 395, 395, 395, 395, 395, 395, 410, 443, 412,
1474 476, 478, 479, 410, 477, 476, 478, 480, 443, 410,
1475 483, 412, 588, 481, 479, 483, 477, 476, 478, 480,
1476 509, 486, 479, 510, 443, 481, 514, 483, 548, 587,
1477 544, 477, 486, 509, 545, 542, 510, 542, 579, 548,
1478 514, 514, 544, 482, 637, 581, 545, 542, 620, 637,
1480 579, 480, 410, 412, 434, 482, 477, 581, 585, 584,
1481 620, 575, 544, 574, 572, 570, 481, 434, 637, 434,
1482 434, 434, 434, 434, 434, 434, 434, 434, 434, 434,
1483 434, 434, 434, 434, 434, 434, 434, 434, 434, 434,
1484 475, 475, 545, 486, 569, 482, 579, 568, 567, 684,
1485 548, 672, 475, 566, 475, 565, 475, 475, 475, 475,
1486 475, 475, 475, 475, 475, 475, 475, 475, 475, 475,
1487 475, 475, 475, 475, 475, 475, 475, 534, 543, 553,
1488 553, 618, 564, 546, 547, 573, 553, 553, 553, 553,
1489 543, 534, 534, 534, 534, 546, 547, 578, 601, 573,
1491 573, 573, 573, 580, 582, 672, 583, 631, 618, 578,
1492 601, 682, 645, 624, 638, 580, 582, 583, 543, 624,
1493 602, 684, 563, 621, 547, 634, 652, 546, 652, 578,
1494 666, 602, 618, 650, 621, 631, 634, 624, 638, 649,
1495 645, 546, 601, 624, 638, 653, 580, 650, 562, 534,
1496 649, 662, 652, 561, 666, 559, 558, 573, 685, 631,
1497 675, 682, 662, 582, 645, 556, 555, 653, 674, 653,
1498 680, 675, 700, 554, 551, 659, 646, 660, 583, 594,
1499 594, 680, 594, 594, 594, 594, 594, 673, 594, 594,
1500 594, 594, 602, 594, 594, 621, 674, 634, 646, 594,
1502 594, 594, 594, 659, 646, 660, 686, 550, 659, 594,
1503 687, 649, 538, 673, 537, 673, 536, 686, 674, 679,
1504 674, 687, 646, 662, 594, 594, 594, 659, 646, 660,
1505 685, 535, 675, 594, 688, 660, 533, 689, 690, 673,
1506 691, 531, 680, 527, 700, 688, 525, 679, 689, 690,
1507 524, 691, 594, 594, 600, 600, 523, 600, 600, 600,
1508 600, 600, 600, 600, 600, 600, 600, 522, 600, 600,
1509 692, 679, 521, 520, 600, 600, 600, 600, 686, 519,
1510 518, 692, 687, 693, 600, 694, 695, 516, 513, 512,
1511 511, 696, 697, 698, 693, 508, 694, 695, 507, 600,
1513 600, 600, 696, 697, 698, 699, 688, 506, 600, 689,
1514 690, 505, 691, 504, 503, 502, 699, 501, 500, 499,
1515 498, 497, 496, 495, 489, 471, 470, 600, 600, 610,
1516 610, 469, 610, 610, 610, 610, 610, 467, 610, 610,
1517 610, 610, 692, 610, 610, 465, 463, 460, 459, 610,
1518 610, 610, 610, 454, 450, 693, 449, 694, 695, 610,
1519 448, 447, 446, 696, 697, 698, 444, 441, 440, 439,
1520 438, 436, 435, 430, 610, 610, 610, 699, 429, 428,
1521 427, 426, 425, 610, 424, 422, 416, 414, 396, 387,
1522 386, 385, 382, 380, 378, 375, 371, 365, 364, 359,
1524 358, 357, 610, 610, 617, 617, 356, 617, 617, 617,
1525 617, 617, 617, 617, 617, 617, 617, 351, 617, 617,
1526 350, 349, 348, 347, 617, 617, 617, 617, 346, 345,
1527 344, 339, 338, 334, 617, 329, 327, 325, 324, 323,
1528 322, 319, 318, 317, 316, 306, 296, 294, 282, 617,
1529 617, 617, 277, 273, 267, 265, 261, 260, 617, 259,
1530 258, 256, 255, 250, 249, 248, 238, 237, 236, 235,
1531 233, 229, 228, 227, 226, 225, 212, 617, 617, 704,
1532 211, 210, 209, 704, 704, 208, 205, 704, 704, 704,
1533 704, 704, 704, 704, 704, 705, 705, 705, 705, 705,
1535 204, 705, 705, 705, 705, 705, 705, 705, 705, 705,
1536 705, 705, 705, 705, 706, 706, 203, 202, 201, 706,
1537 706, 706, 707, 707, 707, 707, 707, 707, 707, 707,
1538 707, 707, 707, 707, 707, 707, 707, 707, 707, 707,
1539 707, 708, 708, 708, 708, 708, 708, 708, 708, 708,
1540 708, 708, 708, 708, 708, 708, 708, 708, 708, 708,
1541 709, 709, 709, 709, 709, 709, 709, 709, 709, 709,
1542 709, 709, 709, 709, 709, 709, 709, 709, 709, 710,
1543 200, 196, 195, 710, 710, 710, 187, 710, 710, 710,
1544 710, 710, 710, 710, 710, 711, 711, 711, 711, 711,
1546 175, 711, 711, 711, 711, 711, 711, 711, 711, 711,
1547 711, 711, 711, 711, 712, 712, 712, 712, 712, 712,
1548 712, 712, 712, 712, 712, 712, 712, 712, 712, 712,
1549 712, 712, 712, 713, 713, 172, 170, 168, 167, 162,
1550 161, 159, 148, 713, 146, 145, 713, 713, 143, 713,
1551 717, 717, 717, 717, 717, 717, 717, 717, 717, 717,
1552 717, 717, 717, 717, 717, 717, 717, 717, 717, 718,
1553 718, 718, 718, 718, 718, 718, 718, 718, 718, 718,
1554 718, 718, 718, 718, 718, 718, 718, 718, 720, 720,
1555 720, 720, 720, 720, 720, 720, 720, 720, 720, 720,
1557 720, 720, 720, 720, 720, 720, 720, 721, 721, 721,
1558 721, 721, 721, 721, 721, 721, 721, 721, 721, 721,
1559 721, 721, 721, 721, 721, 721, 722, 141, 140, 139,
1560 722, 722, 722, 138, 722, 722, 722, 722, 722, 722,
1561 722, 722, 723, 723, 723, 723, 723, 723, 723, 723,
1562 723, 723, 723, 723, 723, 723, 723, 723, 723, 723,
1563 723, 724, 724, 724, 724, 724, 724, 724, 724, 724,
1564 724, 724, 724, 724, 724, 724, 724, 724, 724, 724,
1565 725, 725, 725, 725, 725, 725, 725, 725, 725, 725,
1566 725, 725, 725, 725, 725, 725, 725, 725, 725, 726,
1568 726, 726, 726, 726, 726, 726, 726, 726, 726, 726,
1569 726, 726, 726, 726, 726, 726, 726, 726, 727, 727,
1570 727, 727, 727, 727, 727, 727, 727, 727, 727, 727,
1571 727, 727, 727, 727, 727, 727, 727, 728, 728, 137,
1572 728, 728, 728, 728, 728, 728, 728, 728, 728, 728,
1573 728, 728, 728, 728, 728, 728, 729, 729, 124, 729,
1574 729, 729, 729, 729, 729, 729, 729, 729, 729, 729,
1575 729, 729, 729, 729, 729, 730, 123, 730, 122, 121,
1576 120, 730, 730, 730, 119, 118, 730, 731, 731, 731,
1577 731, 731, 731, 731, 731, 731, 731, 731, 731, 731,
1579 731, 731, 731, 731, 731, 731, 732, 732, 732, 732,
1580 732, 732, 732, 732, 732, 732, 732, 732, 732, 732,
1581 732, 732, 732, 732, 732, 733, 733, 733, 733, 733,
1582 733, 733, 733, 733, 733, 733, 733, 733, 733, 733,
1583 733, 733, 733, 733, 734, 734, 734, 734, 734, 734,
1584 734, 734, 734, 734, 734, 734, 734, 734, 734, 734,
1585 734, 734, 734, 735, 735, 735, 735, 735, 735, 735,
1586 735, 737, 116, 115, 114, 737, 113, 737, 737, 737,
1587 737, 112, 737, 738, 738, 738, 738, 738, 738, 738,
1588 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
1590 738, 738, 739, 739, 739, 739, 739, 739, 739, 739,
1591 739, 739, 739, 739, 739, 739, 739, 739, 739, 739,
1592 739, 740, 103, 101, 97, 740, 740, 740, 94, 740,
1593 740, 740, 740, 740, 740, 740, 740, 741, 741, 741,
1594 741, 741, 741, 741, 741, 741, 741, 741, 741, 741,
1595 741, 741, 741, 741, 741, 741, 742, 742, 742, 742,
1596 742, 742, 742, 742, 742, 742, 742, 742, 742, 742,
1597 742, 742, 742, 742, 742, 743, 743, 743, 743, 743,
1598 743, 743, 743, 743, 743, 743, 743, 743, 743, 743,
1599 743, 743, 743, 743, 744, 744, 744, 744, 744, 744,
1601 744, 744, 744, 744, 744, 744, 744, 744, 744, 744,
1602 744, 744, 744, 745, 745, 745, 745, 745, 745, 745,
1603 745, 745, 745, 745, 745, 745, 745, 745, 745, 745,
1604 745, 745, 746, 746, 746, 746, 746, 746, 746, 746,
1605 746, 746, 746, 746, 746, 746, 746, 746, 746, 746,
1606 746, 747, 747, 747, 747, 747, 747, 747, 747, 747,
1607 747, 747, 747, 747, 747, 747, 747, 747, 747, 747,
1608 748, 748, 748, 748, 748, 748, 748, 748, 748, 748,
1609 748, 748, 748, 748, 748, 748, 748, 748, 748, 749,
1610 749, 93, 749, 749, 749, 749, 749, 749, 749, 749,
1612 749, 749, 749, 749, 749, 749, 749, 749, 750, 750,
1613 92, 750, 750, 750, 750, 750, 750, 750, 750, 750,
1614 750, 750, 750, 750, 750, 750, 750, 751, 88, 751,
1615 751, 83, 80, 751, 751, 751, 54, 53, 751, 752,
1616 752, 752, 752, 752, 752, 752, 752, 752, 752, 752,
1617 752, 752, 752, 752, 752, 752, 752, 752, 753, 753,
1618 753, 753, 753, 753, 753, 753, 753, 753, 753, 753,
1619 753, 753, 753, 753, 753, 753, 753, 754, 754, 754,
1620 754, 754, 754, 754, 754, 754, 754, 754, 754, 754,
1621 754, 754, 754, 754, 754, 754, 755, 755, 755, 755,
1623 755, 755, 755, 755, 755, 755, 755, 755, 755, 755,
1624 755, 755, 755, 755, 755, 756, 756, 45, 42, 756,
1625 756, 41, 756, 756, 756, 756, 756, 756, 756, 756,
1626 756, 757, 39, 18, 17, 14, 9, 757, 757, 757,
1627 757, 3, 757, 758, 758, 758, 758, 758, 758, 758,
1628 758, 758, 758, 758, 758, 758, 758, 758, 758, 758,
1629 758, 758, 759, 759, 759, 759, 759, 759, 759, 759,
1630 759, 759, 759, 759, 759, 759, 759, 759, 759, 759,
1631 759, 760, 760, 0, 0, 760, 760, 760, 760, 760,
1632 760, 760, 760, 760, 760, 760, 760, 761, 761, 761,
1634 761, 761, 761, 761, 761, 761, 761, 761, 761, 761,
1635 761, 761, 761, 761, 761, 761, 762, 762, 762, 762,
1636 762, 762, 762, 762, 762, 762, 762, 762, 762, 762,
1637 762, 762, 762, 762, 762, 763, 763, 763, 763, 763,
1638 763, 763, 763, 763, 763, 763, 763, 763, 763, 763,
1639 763, 763, 763, 763, 764, 764, 0, 764, 764, 764,
1640 764, 764, 764, 764, 764, 764, 764, 764, 764, 764,
1641 764, 764, 764, 765, 765, 0, 765, 765, 765, 765,
1642 765, 765, 765, 765, 765, 765, 765, 765, 765, 765,
1643 765, 765, 766, 766, 0, 766, 766, 766, 766, 766,
1645 766, 766, 766, 766, 766, 766, 766, 766, 766, 766,
1646 766, 767, 767, 0, 767, 767, 767, 767, 767, 767,
1647 767, 767, 767, 767, 767, 767, 767, 767, 767, 767,
1648 768, 768, 0, 768, 768, 768, 768, 768, 768, 768,
1649 768, 768, 768, 768, 768, 768, 768, 768, 768, 769,
1650 769, 0, 769, 769, 769, 769, 769, 769, 769, 769,
1651 769, 769, 769, 769, 769, 769, 769, 769, 770, 770,
1652 770, 770, 770, 770, 770, 770, 770, 770, 770, 770,
1653 770, 770, 770, 770, 770, 770, 770, 771, 771, 771,
1654 771, 771, 771, 771, 771, 771, 771, 771, 771, 771,
1656 771, 771, 771, 771, 771, 771, 772, 772, 772, 772,
1657 772, 772, 772, 772, 772, 772, 772, 772, 772, 772,
1658 772, 772, 772, 772, 772, 773, 0, 0, 0, 0,
1659 0, 773, 773, 773, 773, 773, 773, 773, 773, 773,
1660 774, 774, 774, 774, 774, 774, 774, 774, 774, 774,
1661 774, 774, 774, 774, 774, 774, 774, 774, 774, 775,
1662 775, 775, 775, 0, 775, 775, 775, 775, 775, 775,
1663 775, 775, 775, 775, 775, 775, 775, 775, 776, 0,
1664 0, 0, 0, 0, 776, 776, 776, 776, 777, 777,
1665 0, 777, 777, 777, 777, 777, 777, 777, 777, 777,
1667 777, 777, 777, 777, 777, 777, 777, 778, 778, 0,
1668 778, 778, 778, 778, 778, 778, 778, 778, 778, 778,
1669 778, 778, 778, 778, 778, 778, 779, 779, 0, 779,
1670 779, 779, 779, 779, 779, 779, 779, 779, 779, 779,
1671 779, 779, 779, 779, 779, 780, 780, 0, 780, 780,
1672 780, 780, 780, 780, 780, 780, 780, 780, 780, 780,
1673 780, 780, 780, 780, 781, 781, 781, 781, 781, 781,
1674 781, 781, 781, 781, 781, 781, 781, 781, 781, 781,
1675 781, 781, 781, 782, 782, 782, 782, 782, 782, 782,
1676 782, 782, 782, 782, 782, 782, 782, 782, 782, 782,
1678 782, 782, 783, 783, 783, 783, 783, 783, 783, 783,
1679 783, 783, 783, 783, 783, 783, 783, 783, 783, 783,
1680 783, 784, 784, 784, 784, 784, 784, 784, 784, 784,
1681 784, 784, 784, 784, 784, 784, 784, 784, 784, 784,
1682 703, 703, 703, 703, 703, 703, 703, 703, 703, 703,
1683 703, 703, 703, 703, 703, 703, 703, 703, 703, 703,
1684 703, 703, 703, 703, 703, 703, 703, 703, 703, 703,
1685 703, 703, 703, 703, 703, 703, 703, 703, 703, 703,
1686 703, 703, 703, 703, 703, 703, 703, 703, 703, 703,
1687 703, 703, 703, 703, 703, 703, 703, 703, 703, 703,
1689 703, 703, 703, 703, 703, 703, 703, 703, 703, 703,
1690 703, 703, 703, 703, 703, 703
1693 extern int yy_flex_debug;
1694 int yy_flex_debug = 0;
1696 static yy_state_type *yy_state_buf=0, *yy_state_ptr=0;
1697 static char *yy_full_match;
1699 static int yy_looking_for_trail_begin = 0;
1700 static int yy_full_lp;
1701 static int *yy_full_state;
1702 #define YY_TRAILING_MASK 0x2000
1703 #define YY_TRAILING_HEAD_MASK 0x4000
1706 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ \
1707 yy_cp = (yy_full_match); /* restore poss. backed-over text */ \
1708 (yy_lp) = (yy_full_lp); /* restore orig. accepting pos. */ \
1709 (yy_state_ptr) = (yy_full_state); /* restore orig. state */ \
1710 yy_current_state = *(yy_state_ptr); /* restore curr. state */ \
1715 #define yymore() yymore_used_but_not_detected
1716 #define YY_MORE_ADJ 0
1717 #define YY_RESTORE_YY_MORE_OFFSET
1722 * parser.l -- lex parser of algebraic chess moves for XBoard
1724 * Copyright 1991 by Digital Equipment Corporation, Maynard,
1727 * Enhancements Copyright 1992-2001, 2002, 2003, 2004, 2005,
1728 * 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
1730 * The following terms apply to Digital Equipment Corporation's copyright
1731 * interest in XBoard:
1732 * ------------------------------------------------------------------------
1733 * All Rights Reserved
1735 * Permission to use, copy, modify, and distribute this software and its
1736 * documentation for any purpose and without fee is hereby granted,
1737 * provided that the above copyright notice appear in all copies and that
1738 * both that copyright notice and this permission notice appear in
1739 * supporting documentation, and that the name of Digital not be
1740 * used in advertising or publicity pertaining to distribution of the
1741 * software without specific, written prior permission.
1743 * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
1744 * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
1745 * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
1746 * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
1747 * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
1748 * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
1750 * ------------------------------------------------------------------------
1752 * The following terms apply to the enhanced version of XBoard
1753 * distributed by the Free Software Foundation:
1754 * ------------------------------------------------------------------------
1756 * GNU XBoard is free software: you can redistribute it and/or modify
1757 * it under the terms of the GNU General Public License as published by
1758 * the Free Software Foundation, either version 3 of the License, or (at
1759 * your option) any later version.
1761 * GNU XBoard is distributed in the hope that it will be useful, but
1762 * WITHOUT ANY WARRANTY; without even the implied warranty of
1763 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
1764 * General Public License for more details.
1766 * You should have received a copy of the GNU General Public License
1767 * along with this program. If not, see http://www.gnu.org/licenses/.
1769 *------------------------------------------------------------------------
1770 ** See the file ChangeLog for a revision history. */
1772 /* This parser handles all forms of promotion.
1773 * The parser resolves ambiguous moves by searching and check-testing.
1774 * It also parses comments of the form [anything] or (anything).
1776 * [HGM] Parser extensively modified for bigger boards, Shogi-like syntax,
1777 * and unknow pieces. All pieces are now mandatory upper case, but can be
1778 * any letter A-Z. Files must be lower case (as before), but can run upto 'l'.
1779 * Ranks can be 0-9. The parser returns 0 for off-board files and ranks.
1780 * For an unknown piece (as mover or promotion piece) it returns
1781 * IllegalMove, like it does when the piece doesn't match.
1782 * Promotions can now also be appended Shogi-style, a bare '=' or '+',
1783 * and this is then returned as promotion character. The piece indicator
1784 * can be prefixed by a '+' to indicate it is a promoted piece.
1789 #define NO_CONSTRAINT -1
1792 #define UNPUT_BUF_SIZE YYLMAX
1795 /* yytext is probably a char*, but could be a char[]. yy_text is set
1796 in YY_DECL below, because if yytext is a char*, its value is not
1799 #else /*!FLEX_SCANNER*/
1800 /* yytext is definitely a char[], so yy_text can be set here, statically. */
1801 char *yy_text = (char *) yytext;
1806 /* [AP] use prototypes in function declarations */
1807 #define YY_USE_PROTOS
1809 #ifdef YY_USE_PROTOS
1810 #define YY_PROTO(proto) proto
1812 #define YY_PROTO(proto) ()
1814 /* end of [AP] fix */
1817 #define YY_INPUT(buf, result, max_size) my_yy_input(buf, &result, max_size)
1820 int _yylex YY_PROTO((void)); \
1821 int yylex YY_PROTO((void)) \
1823 int result = _yylex(); \
1824 yy_text = (char *) yytext; \
1827 int _yylex YY_PROTO((void))
1835 /* The includes must be here, below the #undef input */
1840 # include <stdlib.h>
1841 # include <string.h>
1842 #else /* not STDC_HEADERS */
1844 # include <string.h>
1845 # else /* not HAVE_STRING_H */
1846 # include <strings.h>
1847 # endif /* not HAVE_STRING_H */
1848 #endif /* not STDC_HEADERS */
1851 # include <unistd.h>
1854 #if defined(_amigados)
1857 # include <fcntl.h> /* isatty() prototype */
1858 # endif /* HAVE_FCNTL_H */
1859 #endif /* defined(_amigados) */
1862 #include "backend.h"
1863 #include "frontend.h"
1867 extern int PosFlags P((int));
1869 extern Board boards[MAX_MOVES];
1871 int yyskipmoves = FALSE;
1872 char currentMoveString[YYLMAX];
1873 #ifndef FLEX_SCANNER
1874 char unputBuffer[UNPUT_BUF_SIZE];
1879 void my_yy_input P((char *buf, int *result, int max_size));
1880 #else /*!FLEX_SCANNER*/
1881 static int input P((void));
1882 static void output P((int ch));
1883 static void unput P((int ch));
1884 int yylook P((void));
1885 int yyback P((int *, int));
1888 int yywrap P((void));
1889 extern void CopyBoard P((Board to, Board from));
1891 #line 1892 "parser.c"
1895 #ifndef YY_NO_UNISTD_H
1896 /* Special case for "unistd.h", since it is non-ANSI. We include it way
1897 * down here because we want the user's section 1 to have been scanned first.
1898 * The user has a chance to override it with an option.
1903 #ifndef YY_EXTRA_TYPE
1904 #define YY_EXTRA_TYPE void *
1907 static int yy_init_globals (void );
1909 /* Macros after this point can all be overridden by user definitions in
1913 #ifndef YY_SKIP_YYWRAP
1915 extern "C" int yywrap (void );
1917 extern int yywrap (void );
1921 static void yyunput (int c,char *buf_ptr );
1924 static void yy_flex_strncpy (char *,yyconst char *,int );
1927 #ifdef YY_NEED_STRLEN
1928 static int yy_flex_strlen (yyconst char * );
1934 static int yyinput (void );
1936 static int input (void );
1941 /* Amount of stuff to slurp up with each read. */
1942 #ifndef YY_READ_BUF_SIZE
1943 #define YY_READ_BUF_SIZE 8192
1946 /* Copy whatever the last rule matched to the standard output. */
1948 /* This used to be an fputs(), but since the string might contain NUL's,
1949 * we now use fwrite().
1951 #define ECHO fwrite( yytext, yyleng, 1, yyout )
1954 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
1955 * is returned in "result".
1958 #define YY_INPUT(buf,result,max_size) \
1959 if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
1963 for ( n = 0; n < max_size && \
1964 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1965 buf[n] = (char) c; \
1967 buf[n++] = (char) c; \
1968 if ( c == EOF && ferror( yyin ) ) \
1969 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1975 while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
1977 if( errno != EINTR) \
1979 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1990 /* No semi-colon after return; correct usage is to write "yyterminate();" -
1991 * we don't want an extra ';' after the "return" because that will cause
1992 * some compilers to complain about unreachable statements.
1995 #define yyterminate() return YY_NULL
1998 /* Number of entries by which start-condition stack grows. */
1999 #ifndef YY_START_STACK_INCR
2000 #define YY_START_STACK_INCR 25
2003 /* Report a fatal error. */
2004 #ifndef YY_FATAL_ERROR
2005 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
2008 /* end tables serialization structures and prototypes */
2010 /* Default declaration of generated scanner - a define so the user can
2011 * easily add parameters.
2014 #define YY_DECL_IS_OURS 1
2016 extern int yylex (void);
2018 #define YY_DECL int yylex (void)
2019 #endif /* !YY_DECL */
2021 /* Code executed at the beginning of each rule, after yytext and yyleng
2024 #ifndef YY_USER_ACTION
2025 #define YY_USER_ACTION
2028 /* Code executed at the end of each rule. */
2030 #define YY_BREAK break;
2033 #define YY_RULE_SETUP \
2035 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
2036 (yytext[yyleng - 1] == '\n'); \
2039 /** The main scanner function which does all the work.
2043 register yy_state_type yy_current_state;
2044 register char *yy_cp, *yy_bp;
2045 register int yy_act;
2047 #line 179 "parser.l"
2050 #line 2051 "parser.c"
2060 /* Create the reject buffer large enough to save one state per allowed character. */
2061 if ( ! (yy_state_buf) )
2062 (yy_state_buf) = (yy_state_type *)yyalloc(YY_STATE_BUF_SIZE );
2063 if ( ! (yy_state_buf) )
2064 YY_FATAL_ERROR( "out of dynamic memory in yylex()" );
2067 (yy_start) = 1; /* first start state */
2075 if ( ! YY_CURRENT_BUFFER ) {
2076 yyensure_buffer_stack ();
2077 YY_CURRENT_BUFFER_LVALUE =
2078 yy_create_buffer(yyin,YY_BUF_SIZE );
2081 yy_load_buffer_state( );
2084 while ( 1 ) /* loops until end-of-file is reached */
2086 yy_cp = (yy_c_buf_p);
2088 /* Support of yytext. */
2089 *yy_cp = (yy_hold_char);
2091 /* yy_bp points to the position in yy_ch_buf of the start of
2096 yy_current_state = (yy_start);
2097 yy_current_state += YY_AT_BOL();
2099 (yy_state_ptr) = (yy_state_buf);
2100 *(yy_state_ptr)++ = yy_current_state;
2105 register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
2106 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2108 yy_current_state = (int) yy_def[yy_current_state];
2109 if ( yy_current_state >= 704 )
2110 yy_c = yy_meta[(unsigned int) yy_c];
2112 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2113 *(yy_state_ptr)++ = yy_current_state;
2116 while ( yy_base[yy_current_state] != 4141 );
2119 yy_current_state = *--(yy_state_ptr);
2120 (yy_lp) = yy_accept[yy_current_state];
2121 find_rule: /* we branch to this label when backing up */
2122 for ( ; ; ) /* until we find what rule we matched */
2124 if ( (yy_lp) && (yy_lp) < yy_accept[yy_current_state + 1] )
2126 yy_act = yy_acclist[(yy_lp)];
2127 if ( yy_act & YY_TRAILING_HEAD_MASK ||
2128 (yy_looking_for_trail_begin) )
2130 if ( yy_act == (yy_looking_for_trail_begin) )
2132 (yy_looking_for_trail_begin) = 0;
2133 yy_act &= ~YY_TRAILING_HEAD_MASK;
2137 else if ( yy_act & YY_TRAILING_MASK )
2139 (yy_looking_for_trail_begin) = yy_act & ~YY_TRAILING_MASK;
2140 (yy_looking_for_trail_begin) |= YY_TRAILING_HEAD_MASK;
2144 (yy_full_match) = yy_cp;
2145 (yy_full_state) = (yy_state_ptr);
2146 (yy_full_lp) = (yy_lp);
2153 yy_current_state = *--(yy_state_ptr);
2154 (yy_lp) = yy_accept[yy_current_state];
2157 YY_DO_BEFORE_ACTION;
2159 do_action: /* This label is used only to access EOF actions. */
2162 { /* beginning of action switch */
2165 #line 181 "parser.l"
2168 * Fully-qualified algebraic move, possibly with promotion
2170 int skip1 = 0, skip2 = 0, skip3 = 0, promoted = 0;
2175 if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
2177 if (yytext[0] == '+') skip1 = skip3 = promoted = 1; /* [HGM] Shogi promoted */
2180 if (yytext[1+skip1] == '/') skip1++;
2182 /* remove the [xX:-] */
2183 if ((yytext[3+skip1] == 'x') || (yytext[3+skip1] == 'X') ||
2184 (yytext[3+skip1] == '-') || (yytext[3+skip1] == ':')) skip2 = 1;
2186 currentMoveString[0] = yytext[1+skip1];
2187 currentMoveString[1] = yytext[2+skip1];
2188 currentMoveString[2] = yytext[3+skip1+skip2];
2189 currentMoveString[3] = yytext[4+skip1+skip2];
2190 currentMoveString[4] = NULLCHAR;
2192 if (appData.debugMode) {
2193 fprintf(debugFP, "Parser Qa1b2: yyleng=%d\n",
2197 if (yyleng-skip1-skip2 > 5) { char c;
2198 if (yytext[yyleng-1] == ')') {
2199 c = currentMoveString[4] = ToLower(yytext[yyleng-2]);
2201 c = currentMoveString[4] = ToLower(yytext[yyleng-1]);
2203 currentMoveString[5] = NULLCHAR;
2204 if(c != '=' && c != '+' && CharToPiece(c) == EmptySquare)
2205 return IllegalMove; /* [HGM] promotion to invalid piece */
2208 if (appData.debugMode) {
2209 fprintf(debugFP, "parser: %s\n", currentMoveString);
2211 /* [HGM] do not allow values beyond board size */
2212 if(currentMoveString[1] - ONE >= BOARD_HEIGHT ||
2213 currentMoveString[1] - ONE < 0 ||
2214 currentMoveString[0] - AAA >= BOARD_RGHT ||
2215 currentMoveString[3] - ONE >= BOARD_HEIGHT ||
2216 currentMoveString[3] - ONE < 0 ||
2217 currentMoveString[2] - AAA >= BOARD_RGHT ||
2218 currentMoveString[0] - AAA < BOARD_LEFT ||
2219 currentMoveString[2] - AAA < BOARD_LEFT )
2220 return ImpossibleMove;
2222 piece = boards[yyboardindex]
2223 [currentMoveString[1] - ONE][currentMoveString[0] - AAA];
2224 if(promoted) piece = (ChessSquare) (DEMOTED piece);
2225 c = PieceToChar(piece);
2226 if(c == '~') c = PieceToChar((ChessSquare) (DEMOTED piece));
2227 if (ToLower(yytext[skip3]) != ToLower(c))
2228 return (int) IllegalMove;
2230 result = LegalityTest(boards[yyboardindex],
2231 PosFlags(yyboardindex)&~F_MANDATORY_CAPTURE, // [HGM] losers: might think we can e.p.!
2232 currentMoveString[1] - ONE,
2233 currentMoveString[0] - AAA,
2234 currentMoveString[3] - ONE,
2235 currentMoveString[2] - AAA,
2236 currentMoveString[4]);
2238 if (currentMoveString[4] == NULLCHAR &&
2239 (result == WhitePromotion || result == BlackPromotion)) {
2240 if(gameInfo.variant == VariantCourier || gameInfo.variant == VariantShatranj)
2241 currentMoveString[4] = PieceToChar(BlackFerz);
2242 else if(gameInfo.variant == VariantGreat)
2243 currentMoveString[4] = PieceToChar(BlackMan);
2244 else if(gameInfo.variant == VariantShogi)
2245 currentMoveString[4] = '+';
2247 currentMoveString[4] = PieceToChar(BlackQueen);
2248 currentMoveString[5] = NULLCHAR;
2251 return (int) result;
2256 #line 269 "parser.l"
2259 * Simple algebraic move, possibly with promotion
2260 * [HGM] Engine moves are received in this format, with lower-case promoChar!
2265 if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
2267 /* remove the [xX:-] */
2268 if ((yytext[2] == 'x') || (yytext[2] == 'X') ||
2269 (yytext[2] == '-') || (yytext[2] == ':')) skip = 1;
2271 currentMoveString[0] = yytext[0];
2272 currentMoveString[1] = yytext[1];
2273 currentMoveString[2] = yytext[2+skip];
2274 currentMoveString[3] = yytext[3+skip];
2275 currentMoveString[4] = NULLCHAR;
2277 if (yyleng-skip > 4) { char c;
2278 if (yytext[yyleng-1] == ')') {
2279 c = currentMoveString[4] = ToLower(yytext[yyleng-2]);
2281 c = currentMoveString[4] = ToLower(yytext[yyleng-1]);
2283 currentMoveString[5] = NULLCHAR;
2284 if(c != '=' && c != '+' && CharToPiece(c) == EmptySquare)
2288 /* [HGM] do not allow values beyond board size */
2289 if(currentMoveString[1] - ONE >= BOARD_HEIGHT ||
2290 currentMoveString[1] - ONE < 0 ||
2291 currentMoveString[0] - AAA >= BOARD_RGHT ||
2292 currentMoveString[3] - ONE >= BOARD_HEIGHT ||
2293 currentMoveString[3] - ONE < 0 ||
2294 currentMoveString[2] - AAA >= BOARD_RGHT ||
2295 currentMoveString[0] - AAA < BOARD_LEFT ||
2296 currentMoveString[2] - AAA < BOARD_LEFT )
2297 return ImpossibleMove;
2299 result = LegalityTest(boards[yyboardindex],
2300 PosFlags(yyboardindex)&~F_MANDATORY_CAPTURE, // [HGM] losers: might think we can e.p.!
2301 currentMoveString[1] - ONE,
2302 currentMoveString[0] - AAA,
2303 currentMoveString[3] - ONE,
2304 currentMoveString[2] - AAA,
2305 currentMoveString[4]);
2307 if (currentMoveString[4] == NULLCHAR) {
2308 if(result == WhitePromotion || result == BlackPromotion) {
2309 if(gameInfo.variant == VariantShatranj || gameInfo.variant == VariantCourier || gameInfo.variant == VariantMakruk)
2310 currentMoveString[4] = PieceToChar(BlackFerz);
2311 else if(gameInfo.variant == VariantGreat)
2312 currentMoveString[4] = PieceToChar(BlackMan);
2313 else if(gameInfo.variant == VariantShogi)
2314 currentMoveString[4] = '+'; // Queen might not be defined in mini variants!
2316 currentMoveString[4] = PieceToChar(BlackQueen);
2317 currentMoveString[5] = NULLCHAR;
2319 } else if(appData.testLegality && // strip off unnecessary and false promo characters
2320 !(result == WhitePromotion || result == BlackPromotion ||
2321 result == WhiteNonPromotion || result == BlackNonPromotion)) currentMoveString[4] = NULLCHAR;
2323 return (int) result;
2328 #line 338 "parser.l"
2331 * Simple algebraic move, in capitals
2332 * [HGM] Engine moves are received in this format, with lower-case promoChar!
2337 if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
2339 /* remove the [xX:-] */
2340 if ((yytext[2] == 'x') || (yytext[2] == 'X') ||
2341 (yytext[2] == '-') || (yytext[2] == ':')) skip = 1;
2343 currentMoveString[0] = yytext[0]+32;
2344 currentMoveString[1] = yytext[1];
2345 currentMoveString[2] = yytext[2+skip]+32;
2346 currentMoveString[3] = yytext[3+skip];
2347 currentMoveString[4] = NULLCHAR;
2349 /* [HGM] do not allow values beyond board size */
2350 if(currentMoveString[1] - ONE >= BOARD_HEIGHT ||
2351 currentMoveString[1] - ONE < 0 ||
2352 currentMoveString[0] - AAA >= BOARD_RGHT ||
2353 currentMoveString[3] - ONE >= BOARD_HEIGHT ||
2354 currentMoveString[3] - ONE < 0 ||
2355 currentMoveString[2] - AAA >= BOARD_RGHT ||
2356 currentMoveString[0] - AAA < BOARD_LEFT ||
2357 currentMoveString[2] - AAA < BOARD_LEFT )
2358 return ImpossibleMove;
2360 result = LegalityTest(boards[yyboardindex],
2361 PosFlags(yyboardindex)&~F_MANDATORY_CAPTURE, // [HGM] losers: might think we can e.p.!
2362 currentMoveString[1] - ONE,
2363 currentMoveString[0] - AAA,
2364 currentMoveString[3] - ONE,
2365 currentMoveString[2] - AAA,
2366 currentMoveString[4]);
2368 if (currentMoveString[4] == NULLCHAR &&
2369 (result == WhitePromotion || result == BlackPromotion)) {
2370 if(gameInfo.variant == VariantShatranj || gameInfo.variant == VariantCourier || gameInfo.variant == VariantMakruk)
2371 currentMoveString[4] = PieceToChar(BlackFerz);
2372 else if(gameInfo.variant == VariantGreat)
2373 currentMoveString[4] = PieceToChar(BlackMan);
2375 currentMoveString[4] = PieceToChar(BlackQueen);
2376 currentMoveString[5] = NULLCHAR;
2379 return (int) result;
2384 #line 391 "parser.l"
2387 * Pawn move, possibly with promotion
2389 DisambiguateClosure cl;
2390 int skip = 0; char c;
2392 if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
2394 /* remove the =() */
2395 if (yytext[2] == '=' && yytext[3] != NULLCHAR) skip++;
2396 if (yytext[2+skip] == '(') skip++;
2398 cl.pieceIn = WhiteOnMove(yyboardindex) ? WhitePawn : BlackPawn;
2400 cl.ffIn = yytext[0] - AAA;
2401 cl.rtIn = yytext[1] - ONE;
2402 cl.ftIn = yytext[0] - AAA;
2403 c = cl.promoCharIn = ToLower(yytext[2+skip]);
2405 /* [HGM] do not allow values beyond board size */
2406 if(cl.rtIn >= BOARD_HEIGHT ||
2408 cl.ffIn >= BOARD_RGHT ||
2409 cl.ftIn < BOARD_LEFT )
2410 return ImpossibleMove;
2412 if(c != '=' && c != '+' && c != NULLCHAR && CharToPiece(c) == EmptySquare)
2416 Disambiguate(boards[yyboardindex], PosFlags(yyboardindex), &cl);
2418 currentMoveString[0] = cl.ff + AAA;
2419 currentMoveString[1] = cl.rf + ONE;
2420 currentMoveString[2] = cl.ft + AAA;
2421 currentMoveString[3] = cl.rt + ONE;
2422 currentMoveString[4] = cl.promoChar;
2423 currentMoveString[5] = NULLCHAR;
2425 return (int) cl.kind;
2430 #line 435 "parser.l"
2433 * Pawn capture, possibly with promotion, possibly ambiguous
2435 DisambiguateClosure cl;
2436 int skip1 = 0, skip2 = 0; char c;
2438 if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
2440 /* remove trailing ep or e.p. (nonstandard PGN) */
2441 if (yytext[yyleng-1] == 'p') {
2443 yytext[yyleng] = NULLCHAR;
2444 } else if (yytext[yyleng-1] == '.') {
2446 yytext[yyleng] = NULLCHAR;
2449 /* remove the [xX:-] and =() */
2450 if ((yytext[1] == 'x') || (yytext[1] == 'X')
2451 || (yytext[1] == ':') || (yytext[1] == '-')) skip1 = 1;
2452 if (yytext[2+skip1] == '=' && yytext[3+skip1] != NULLCHAR) skip2++;
2453 if (yytext[2+skip1+skip2] == '(') skip2++;
2455 cl.pieceIn = WhiteOnMove(yyboardindex) ? WhitePawn : BlackPawn;
2457 cl.ffIn = yytext[0] - AAA;
2459 cl.ftIn = yytext[1+skip1] - AAA;
2460 c = cl.promoCharIn = yytext[2+skip1+skip2];
2462 /* [HGM] do not allow values beyond board size */
2463 if(cl.ffIn >= BOARD_RGHT ||
2464 cl.ffIn < BOARD_LEFT ||
2465 cl.ftIn >= BOARD_RGHT ||
2466 cl.ftIn < BOARD_LEFT )
2467 return ImpossibleMove;
2469 if(c != '=' && c != '+' && c != NULLCHAR && CharToPiece(c) == EmptySquare)
2472 Disambiguate(boards[yyboardindex], PosFlags(yyboardindex), &cl);
2474 currentMoveString[0] = cl.ff + AAA;
2475 currentMoveString[1] = cl.rf + ONE;
2476 currentMoveString[2] = cl.ft + AAA;
2477 currentMoveString[3] = cl.rt + ONE;
2478 currentMoveString[4] = cl.promoChar;
2479 currentMoveString[5] = NULLCHAR;
2481 return (int) cl.kind;
2486 #line 488 "parser.l"
2489 * unambiguously abbreviated Pawn capture, possibly with promotion
2492 ChessMove result; char c;
2494 if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
2496 /* remove trailing ep or e.p. (nonstandard PGN) */
2497 if (yytext[yyleng-1] == 'p') {
2499 yytext[yyleng] = NULLCHAR;
2500 } else if (yytext[yyleng-1] == '.') {
2502 yytext[yyleng] = NULLCHAR;
2505 /* remove the [xX:-] */
2506 if ((yytext[1] == 'x') || (yytext[1] == 'X')
2507 || (yytext[1] == ':') || (yytext[1] == '-')) skip = 1;
2509 currentMoveString[0] = yytext[0];
2510 currentMoveString[2] = yytext[1+skip];
2511 currentMoveString[3] = yytext[2+skip];
2513 /* [HGM] do not allow values beyond board size */
2514 if(currentMoveString[0] - AAA >= BOARD_RGHT ||
2515 currentMoveString[3] - ONE >= BOARD_HEIGHT ||
2516 currentMoveString[3] - ONE < 0 ||
2517 currentMoveString[2] - AAA >= BOARD_RGHT ||
2518 currentMoveString[0] - AAA < BOARD_LEFT ||
2519 currentMoveString[2] - AAA < BOARD_LEFT )
2520 return ImpossibleMove;
2522 if (gameInfo.variant == VariantXiangqi && /* [HGM] In Xiangqi rank stays same */
2523 currentMoveString[0] != currentMoveString[2] ) {
2524 currentMoveString[1] = yytext[2+skip];
2526 if (WhiteOnMove(yyboardindex)) {
2527 if (yytext[2+skip] == ONE) return (int) ImpossibleMove;
2528 currentMoveString[1] = yytext[2+skip] - 1;
2529 if(boards[yyboardindex][currentMoveString[1]-ONE][currentMoveString[0]-AAA] != WhitePawn)
2530 return ImpossibleMove;
2532 currentMoveString[1] = currentMoveString[3] + 1;
2533 if (currentMoveString[3] == ONE+BOARD_HEIGHT-1) return (int) ImpossibleMove;
2534 if(boards[yyboardindex][currentMoveString[1]-ONE][currentMoveString[0]-AAA] != BlackPawn)
2535 return ImpossibleMove;
2537 if (yyleng-skip > 3) {
2538 if (yytext[yyleng-1] == ')')
2539 c = currentMoveString[4] = ToLower(yytext[yyleng-2]);
2541 c = currentMoveString[4] = ToLower(yytext[yyleng-1]);
2542 currentMoveString[5] = NULLCHAR;
2543 if(c != '=' && c != '+' && CharToPiece(c) == EmptySquare)
2546 currentMoveString[4] = NULLCHAR;
2549 result = LegalityTest(boards[yyboardindex],
2550 PosFlags(yyboardindex)&~F_MANDATORY_CAPTURE, // [HGM] losers: might think we can e.p.!
2551 currentMoveString[1] - ONE,
2552 currentMoveString[0] - AAA,
2553 currentMoveString[3] - ONE,
2554 currentMoveString[2] - AAA,
2555 currentMoveString[4]);
2557 if (currentMoveString[4] == NULLCHAR &&
2558 (result == WhitePromotion || result == BlackPromotion)) {
2559 currentMoveString[4] = PieceToChar(BlackQueen);
2560 // [HGM] shatranj: take care of variants without Queen
2561 if(gameInfo.variant == VariantShatranj || gameInfo.variant == VariantCourier || gameInfo.variant == VariantMakruk)
2562 currentMoveString[4] = PieceToChar(BlackFerz);
2563 if(gameInfo.variant == VariantGreat)
2564 currentMoveString[4] = PieceToChar(BlackMan);
2565 currentMoveString[5] = NULLCHAR;
2568 if (result != IllegalMove) return (int) result;
2570 /* Special case: improperly written en passant capture */
2571 if (WhiteOnMove(yyboardindex)) {
2572 if (currentMoveString[3] == '5') {
2573 currentMoveString[1] = '5';
2574 currentMoveString[3] = '6';
2576 return (int) IllegalMove;
2579 if (currentMoveString[3] == '4') {
2580 currentMoveString[1] = '4';
2581 currentMoveString[3] = '3';
2583 return (int) IllegalMove;
2587 result = LegalityTest(boards[yyboardindex],
2588 PosFlags(yyboardindex)&~F_MANDATORY_CAPTURE, // [HGM] losers: might think we can e.p.!
2589 currentMoveString[1] - ONE,
2590 currentMoveString[0] - AAA,
2591 currentMoveString[3] - ONE,
2592 currentMoveString[2] - AAA,
2593 currentMoveString[4]);
2595 if (result == WhiteCapturesEnPassant || result == BlackCapturesEnPassant)
2596 return (int) result;
2598 return (int) IllegalMove;
2603 #line 602 "parser.l"
2606 * piece move, possibly ambiguous
2608 DisambiguateClosure cl;
2609 int skip = 0, skip2 = 0, promoted = 0;
2611 if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
2613 if(yytext[0] == '+') promoted = skip = skip2 = 1;
2615 /* remove the [xX:-] */
2616 if ((yytext[1+skip] == 'x') || (yytext[1+skip] == 'X')
2617 || (yytext[1+skip] == ':') || (yytext[1+skip] == '-')) skip++;
2619 if (WhiteOnMove(yyboardindex)) {
2620 cl.pieceIn = CharToPiece(ToUpper(yytext[skip2]));
2622 cl.pieceIn = CharToPiece(ToLower(yytext[skip2]));
2624 if(promoted) cl.pieceIn = (ChessSquare) (PROMOTED cl.pieceIn);
2628 cl.rtIn = yytext[2+skip] - ONE;
2629 cl.ftIn = yytext[1+skip] - AAA;
2630 cl.promoCharIn = NULLCHAR;
2632 if(yyleng-skip > 3) /* [HGM] can have Shogi-style promotion */
2633 cl.promoCharIn = yytext[yyleng-1];
2635 if (appData.debugMode) {
2636 fprintf(debugFP, "Parser Qa1: yyleng=%d, %d(%d,%d)-(%d,%d) = %d (%c)\n",
2638 cl.pieceIn,cl.ffIn,cl.rfIn,cl.ftIn,cl.rtIn,cl.promoCharIn,cl.promoCharIn?cl.promoCharIn:' ');
2641 /* [HGM] but do not allow values beyond board size */
2642 if(cl.rtIn >= BOARD_HEIGHT ||
2644 cl.ftIn >= BOARD_RGHT ||
2645 cl.ftIn < BOARD_LEFT )
2646 return ImpossibleMove;
2648 Disambiguate(boards[yyboardindex], PosFlags(yyboardindex), &cl);
2650 currentMoveString[0] = cl.ff + AAA;
2651 currentMoveString[1] = cl.rf + ONE;
2652 currentMoveString[2] = cl.ft + AAA;
2653 currentMoveString[3] = cl.rt + ONE;
2654 currentMoveString[4] = cl.promoChar;
2655 currentMoveString[5] = NULLCHAR;
2657 return (int) cl.kind;
2662 #line 658 "parser.l"
2665 * piece move with rank or file disambiguator
2667 DisambiguateClosure cl;
2668 int skip = 0, skip2 = 0; int promoted=0;
2670 if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
2672 if(yytext[0]=='+') promoted = skip = skip2 = 1;
2674 /* remove the [xX:-] */
2675 if ((yytext[2+skip] == 'x') || (yytext[2+skip] == 'X')
2676 || (yytext[2+skip] == ':') || (yytext[2+skip] == '-')) skip++;
2678 if (WhiteOnMove(yyboardindex)) {
2679 cl.pieceIn = CharToPiece(ToUpper(yytext[skip2]));
2681 cl.pieceIn = CharToPiece(ToLower(yytext[skip2]));
2683 if(promoted) cl.pieceIn = (ChessSquare) (PROMOTED cl.pieceIn);
2685 if (isalpha(yytext[1+skip2])) {
2687 cl.ffIn = yytext[1+skip2] - AAA;
2689 if(cl.ffIn >= BOARD_RGHT ||
2690 cl.ffIn < BOARD_LEFT ) return 0;
2692 cl.rfIn = yytext[1+skip2] - ONE;
2694 if(cl.rfIn >= BOARD_HEIGHT ||
2695 cl.rfIn < 0) return 0;
2697 cl.rtIn = yytext[3+skip] - ONE;
2698 cl.ftIn = yytext[2+skip] - AAA;
2699 cl.promoCharIn = NULLCHAR;
2701 if(yyleng-skip > 4) /* [HGM] can have Shogi-style promotion */
2702 cl.promoCharIn = yytext[yyleng-1];
2704 /* [HGM] do not allow values beyond board size */
2705 if(cl.rtIn >= BOARD_HEIGHT ||
2707 cl.ftIn >= BOARD_RGHT ||
2708 cl.ftIn < BOARD_LEFT )
2709 return ImpossibleMove;
2711 Disambiguate(boards[yyboardindex], PosFlags(yyboardindex), &cl);
2713 currentMoveString[0] = cl.ff + AAA;
2714 currentMoveString[1] = cl.rf + ONE;
2715 currentMoveString[2] = cl.ft + AAA;
2716 currentMoveString[3] = cl.rt + ONE;
2717 currentMoveString[4] = cl.promoChar;
2718 currentMoveString[5] = NULLCHAR;
2720 return (int) cl.kind;
2725 #line 718 "parser.l"
2729 if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
2731 /* [HGM] all squares referenced to board edges in stead of absolute */
2732 if (WhiteOnMove(yyboardindex)) {
2733 if (boards[yyboardindex][0][(BOARD_WIDTH-1)>>1] == WhiteKing) {
2734 /* ICS wild castling */
2736 ff = (BOARD_WIDTH-1)>>1;
2741 ff = BOARD_WIDTH>>1;
2746 if (boards[yyboardindex][BOARD_HEIGHT-1][(BOARD_WIDTH-1)>>1] == BlackKing) {
2747 /* ICS wild castling */
2748 rf = BOARD_HEIGHT-1;
2749 ff = (BOARD_WIDTH-1)>>1;
2750 rt = BOARD_HEIGHT-1;
2753 rf = BOARD_HEIGHT-1;
2754 ff = BOARD_WIDTH>>1;
2755 rt = BOARD_HEIGHT-1;
2759 if(PosFlags(0) & F_FRC_TYPE_CASTLING) {
2761 if (WhiteOnMove(yyboardindex)) {
2762 ff = initialRights[2];
2763 ft = initialRights[1];
2765 ff = initialRights[5];
2766 ft = initialRights[4];
2768 if (appData.debugMode)
2770 fprintf(debugFP, "Parser FRC long %d %d\n", ff, ft);
2772 if(ff < 0 || ft < 0) return 0;
2774 sprintf(currentMoveString, "%c%c%c%c",ff+AAA,rf+ONE,ft+AAA,rt+ONE);
2775 if (appData.debugMode) {
2776 fprintf(debugFP, "long castling %d %d\n", ff, ft);
2778 return (int) LegalityTest(boards[yyboardindex],
2779 PosFlags(yyboardindex)&~F_MANDATORY_CAPTURE, // [HGM] losers: e.p.!
2780 rf, ff, rt, ft, NULLCHAR);
2785 #line 775 "parser.l"
2789 if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
2791 if (WhiteOnMove(yyboardindex)) {
2792 if (boards[yyboardindex][0][(BOARD_WIDTH-1)>>1] == WhiteKing) {
2793 /* ICS wild castling */
2795 ff = (BOARD_WIDTH-1)>>1;
2800 ff = BOARD_WIDTH>>1;
2805 if (boards[yyboardindex][BOARD_HEIGHT-1][(BOARD_WIDTH-1)>>1] == BlackKing) {
2806 /* ICS wild castling */
2807 rf = BOARD_HEIGHT-1;
2808 ff = (BOARD_WIDTH-1)>>1;
2809 rt = BOARD_HEIGHT-1;
2812 rf = BOARD_HEIGHT-1;
2813 ff = BOARD_WIDTH>>1;
2814 rt = BOARD_HEIGHT-1;
2818 if(PosFlags(0) & F_FRC_TYPE_CASTLING) {
2819 if (WhiteOnMove(yyboardindex)) {
2820 ff = initialRights[2];
2821 ft = initialRights[0];
2823 ff = initialRights[5];
2824 ft = initialRights[3];
2826 if (appData.debugMode) {
2827 fprintf(debugFP, "Parser FRC short %d %d\n", ff, ft);
2829 if(ff < 0 || ft < 0) return 0;
2831 sprintf(currentMoveString, "%c%c%c%c",ff+AAA,rf+ONE,ft+AAA,rt+ONE);
2832 if (appData.debugMode) {
2833 fprintf(debugFP, "short castling %d %d\n", ff, ft);
2836 return (int) LegalityTest(boards[yyboardindex],
2837 PosFlags(yyboardindex)&~F_MANDATORY_CAPTURE, // [HGM] losers: e.p.!
2838 rf, ff, rt, ft, NULLCHAR);
2843 #line 830 "parser.l"
2845 /* Bughouse piece drop. */
2846 currentMoveString[1] = '@';
2847 currentMoveString[2] = yytext[2];
2848 currentMoveString[3] = yytext[3];
2849 currentMoveString[4] = NULLCHAR;
2851 if (appData.debugMode) {
2852 fprintf(debugFP, "Drop: %s\n", currentMoveString);
2854 /* [HGM] do not allow values beyond board size */
2855 if(currentMoveString[3] - ONE >= BOARD_HEIGHT ||
2856 currentMoveString[2] - AAA >= BOARD_WIDTH )
2857 return ImpossibleMove;
2859 if (WhiteOnMove(yyboardindex)) {
2860 currentMoveString[0] = ToUpper(yytext[0]);
2862 currentMoveString[0] = ToLower(yytext[0]);
2864 return LegalityTest(boards[yyboardindex], PosFlags(yyboardindex), DROP_RANK, // [HGM] does drops now too
2865 CharToPiece(currentMoveString[0]), currentMoveString[3] - ONE, currentMoveString[2] - AAA, NULLCHAR);
2870 #line 854 "parser.l"
2872 if (WhiteOnMove(yyboardindex))
2873 return (int) BlackWins;
2875 return (int) WhiteWins;
2880 #line 861 "parser.l"
2882 return (int) (ToUpper(yytext[0]) == 'W' ? BlackWins : WhiteWins);
2887 #line 865 "parser.l"
2889 return (int) GameUnfinished;
2894 #line 869 "parser.l"
2896 return (int) GameIsDrawn;
2901 #line 873 "parser.l"
2903 return (int) GameIsDrawn;
2908 #line 877 "parser.l"
2910 if (WhiteOnMove(yyboardindex))
2911 return (int) BlackWins;
2913 return (int) WhiteWins;
2918 #line 884 "parser.l"
2920 if (WhiteOnMove(yyboardindex))
2921 return (int) BlackWins;
2923 return (int) WhiteWins;
2928 #line 891 "parser.l"
2930 return (int) GameIsDrawn;
2935 #line 895 "parser.l"
2937 return (int) GameIsDrawn;
2942 #line 899 "parser.l"
2944 return (int) (ToUpper(yytext[0]) == 'W' ? WhiteWins : BlackWins);
2949 #line 903 "parser.l"
2951 return (int) (ToUpper(yytext[0]) == 'W' ? BlackWins : WhiteWins);
2956 #line 907 "parser.l"
2958 return (int) WhiteWins;
2963 #line 911 "parser.l"
2965 return (int) BlackWins;
2970 #line 915 "parser.l"
2972 return (int) GameIsDrawn;
2977 #line 919 "parser.l"
2979 return (int) GameUnfinished;
2983 /* rule 27 can match eol */
2985 #line 923 "parser.l"
2988 if ((yyleng == 1) && (yytext[0] == '1'))
2989 return (int) MoveNumberOne;
2994 #line 929 "parser.l"
2996 /* elapsed time indication, e.g. (0:12) or {10:21.071} */
2997 return (int) ElapsedTime;
3001 /* rule 29 can match eol */
3003 #line 934 "parser.l"
3005 /* position diagram enclosed in [-- --] */
3006 return (int) PositionDiagram;
3010 /* rule 30 can match eol */
3011 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
3012 (yy_c_buf_p) = yy_cp -= 1;
3013 YY_DO_BEFORE_ACTION; /* set up yytext again */
3015 #line 939 "parser.l"
3017 /* position diagram enclosed in {-- --} */
3018 return (int) PositionDiagram;
3022 /* rule 31 can match eol */
3024 #line 944 "parser.l"
3026 return (int) PGNTag;
3031 #line 948 "parser.l"
3033 return (int) GNUChessGame;
3037 /* rule 33 can match eol */
3038 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
3039 (yy_c_buf_p) = yy_cp -= 1;
3040 YY_DO_BEFORE_ACTION; /* set up yytext again */
3042 #line 952 "parser.l"
3044 return (int) XBoardGame;
3049 #line 956 "parser.l"
3050 { /* numeric annotation glyph */
3055 /* rule 35 can match eol */
3057 #line 960 "parser.l"
3058 { /* anything in {} */
3059 return (int) Comment;
3063 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
3064 (yy_c_buf_p) = yy_cp -= 1;
3065 YY_DO_BEFORE_ACTION; /* set up yytext again */
3067 #line 964 "parser.l"
3068 { /* ; to end of line */
3069 return (int) Comment;
3073 /* rule 37 can match eol */
3075 #line 968 "parser.l"
3076 { /* anything in [] */
3077 return (int) Comment;
3081 /* rule 38 can match eol */
3083 #line 972 "parser.l"
3084 { /* very nested () */
3085 return (int) Comment;
3089 /* rule 39 can match eol */
3091 #line 976 "parser.l"
3092 { /* >=2 chars in () */
3093 return (int) Comment;
3097 /* rule 40 can match eol */
3099 #line 980 "parser.l"
3101 /* Skip mail headers */
3106 #line 984 "parser.l"
3108 /* Skip random words */
3112 /* rule 42 can match eol */
3114 #line 988 "parser.l"
3116 /* Skip everything else */
3121 #line 992 "parser.l"
3124 #line 3125 "parser.c"
3125 case YY_STATE_EOF(INITIAL):
3128 case YY_END_OF_BUFFER:
3130 /* Amount of text matched not including the EOB char. */
3131 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
3133 /* Undo the effects of YY_DO_BEFORE_ACTION. */
3134 *yy_cp = (yy_hold_char);
3135 YY_RESTORE_YY_MORE_OFFSET
3137 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
3139 /* We're scanning a new file or input source. It's
3140 * possible that this happened because the user
3141 * just pointed yyin at a new source and called
3142 * yylex(). If so, then we have to assure
3143 * consistency between YY_CURRENT_BUFFER and our
3144 * globals. Here is the right place to do so, because
3145 * this is the first action (other than possibly a
3146 * back-up) that will match for the new input source.
3148 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
3149 YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
3150 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
3153 /* Note that here we test for yy_c_buf_p "<=" to the position
3154 * of the first EOB in the buffer, since yy_c_buf_p will
3155 * already have been incremented past the NUL character
3156 * (since all states make transitions on EOB to the
3157 * end-of-buffer state). Contrast this with the test
3160 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
3161 { /* This was really a NUL. */
3162 yy_state_type yy_next_state;
3164 (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
3166 yy_current_state = yy_get_previous_state( );
3168 /* Okay, we're now positioned to make the NUL
3169 * transition. We couldn't have
3170 * yy_get_previous_state() go ahead and do it
3171 * for us because it doesn't know how to deal
3172 * with the possibility of jamming (and we don't
3173 * want to build jamming into it because then it
3174 * will run more slowly).
3177 yy_next_state = yy_try_NUL_trans( yy_current_state );
3179 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
3181 if ( yy_next_state )
3183 /* Consume the NUL. */
3184 yy_cp = ++(yy_c_buf_p);
3185 yy_current_state = yy_next_state;
3191 yy_cp = (yy_c_buf_p);
3192 goto yy_find_action;
3196 else switch ( yy_get_next_buffer( ) )
3198 case EOB_ACT_END_OF_FILE:
3200 (yy_did_buffer_switch_on_eof) = 0;
3204 /* Note: because we've taken care in
3205 * yy_get_next_buffer() to have set up
3206 * yytext, we can now set up
3207 * yy_c_buf_p so that if some total
3208 * hoser (like flex itself) wants to
3209 * call the scanner after we return the
3210 * YY_NULL, it'll still work - another
3211 * YY_NULL will get returned.
3213 (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
3215 yy_act = YY_STATE_EOF(YY_START);
3221 if ( ! (yy_did_buffer_switch_on_eof) )
3227 case EOB_ACT_CONTINUE_SCAN:
3229 (yytext_ptr) + yy_amount_of_matched_text;
3231 yy_current_state = yy_get_previous_state( );
3233 yy_cp = (yy_c_buf_p);
3234 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
3237 case EOB_ACT_LAST_MATCH:
3239 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
3241 yy_current_state = yy_get_previous_state( );
3243 yy_cp = (yy_c_buf_p);
3244 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
3245 goto yy_find_action;
3252 "fatal flex scanner internal error--no action found" );
3253 } /* end of action switch */
3254 } /* end of scanning one token */
3255 } /* end of yylex */
3257 /* yy_get_next_buffer - try to read in a new buffer
3259 * Returns a code representing an action:
3260 * EOB_ACT_LAST_MATCH -
3261 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
3262 * EOB_ACT_END_OF_FILE - end of file
3264 static int yy_get_next_buffer (void)
3266 register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
3267 register char *source = (yytext_ptr);
3268 register int number_to_move, i;
3271 if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
3273 "fatal flex scanner internal error--end of buffer missed" );
3275 if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
3276 { /* Don't try to fill the buffer, so this is an EOF. */
3277 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
3279 /* We matched a single character, the EOB, so
3280 * treat this as a final EOF.
3282 return EOB_ACT_END_OF_FILE;
3287 /* We matched some text prior to the EOB, first
3290 return EOB_ACT_LAST_MATCH;
3294 /* Try to read more data. */
3296 /* First move last chars to start of buffer. */
3297 number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
3299 for ( i = 0; i < number_to_move; ++i )
3300 *(dest++) = *(source++);
3302 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
3303 /* don't do the read, it's not guaranteed to return an EOF,
3306 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
3311 YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
3313 while ( num_to_read <= 0 )
3314 { /* Not enough room in the buffer - grow it. */
3317 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
3321 if ( num_to_read > YY_READ_BUF_SIZE )
3322 num_to_read = YY_READ_BUF_SIZE;
3324 /* Read in more data. */
3325 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
3326 (yy_n_chars), (size_t) num_to_read );
3328 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
3331 if ( (yy_n_chars) == 0 )
3333 if ( number_to_move == YY_MORE_ADJ )
3335 ret_val = EOB_ACT_END_OF_FILE;
3341 ret_val = EOB_ACT_LAST_MATCH;
3342 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
3343 YY_BUFFER_EOF_PENDING;
3348 ret_val = EOB_ACT_CONTINUE_SCAN;
3350 if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
3351 /* Extend the array by 50%, plus the number we really need. */
3352 yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
3353 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size );
3354 if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
3355 YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
3358 (yy_n_chars) += number_to_move;
3359 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
3360 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
3362 (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
3367 /* yy_get_previous_state - get the state just before the EOB char was reached */
3369 static yy_state_type yy_get_previous_state (void)
3371 register yy_state_type yy_current_state;
3372 register char *yy_cp;
3374 yy_current_state = (yy_start);
3375 yy_current_state += YY_AT_BOL();
3377 (yy_state_ptr) = (yy_state_buf);
3378 *(yy_state_ptr)++ = yy_current_state;
3380 for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
3382 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
3383 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3385 yy_current_state = (int) yy_def[yy_current_state];
3386 if ( yy_current_state >= 704 )
3387 yy_c = yy_meta[(unsigned int) yy_c];
3389 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
3390 *(yy_state_ptr)++ = yy_current_state;
3393 return yy_current_state;
3396 /* yy_try_NUL_trans - try to make a transition on the NUL character
3399 * next_state = yy_try_NUL_trans( current_state );
3401 static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
3403 register int yy_is_jam;
3405 register YY_CHAR yy_c = 1;
3406 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3408 yy_current_state = (int) yy_def[yy_current_state];
3409 if ( yy_current_state >= 704 )
3410 yy_c = yy_meta[(unsigned int) yy_c];
3412 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
3413 yy_is_jam = (yy_current_state == 703);
3415 *(yy_state_ptr)++ = yy_current_state;
3417 return yy_is_jam ? 0 : yy_current_state;
3420 static void yyunput (int c, register char * yy_bp )
3422 register char *yy_cp;
3424 yy_cp = (yy_c_buf_p);
3426 /* undo effects of setting up yytext */
3427 *yy_cp = (yy_hold_char);
3429 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
3430 { /* need to shift things up to make room */
3431 /* +2 for EOB chars. */
3432 register int number_to_move = (yy_n_chars) + 2;
3433 register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
3434 YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
3435 register char *source =
3436 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
3438 while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
3439 *--dest = *--source;
3441 yy_cp += (int) (dest - source);
3442 yy_bp += (int) (dest - source);
3443 YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
3444 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
3446 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
3447 YY_FATAL_ERROR( "flex scanner push-back overflow" );
3450 *--yy_cp = (char) c;
3452 (yytext_ptr) = yy_bp;
3453 (yy_hold_char) = *yy_cp;
3454 (yy_c_buf_p) = yy_cp;
3459 static int yyinput (void)
3461 static int input (void)
3467 *(yy_c_buf_p) = (yy_hold_char);
3469 if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
3471 /* yy_c_buf_p now points to the character we want to return.
3472 * If this occurs *before* the EOB characters, then it's a
3473 * valid NUL; if not, then we've hit the end of the buffer.
3475 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
3476 /* This was really a NUL. */
3477 *(yy_c_buf_p) = '\0';
3480 { /* need more input */
3481 int offset = (yy_c_buf_p) - (yytext_ptr);
3484 switch ( yy_get_next_buffer( ) )
3486 case EOB_ACT_LAST_MATCH:
3487 /* This happens because yy_g_n_b()
3488 * sees that we've accumulated a
3489 * token and flags that we need to
3490 * try matching the token before
3491 * proceeding. But for input(),
3492 * there's no matching to consider.
3493 * So convert the EOB_ACT_LAST_MATCH
3494 * to EOB_ACT_END_OF_FILE.
3497 /* Reset buffer status. */
3502 case EOB_ACT_END_OF_FILE:
3507 if ( ! (yy_did_buffer_switch_on_eof) )
3516 case EOB_ACT_CONTINUE_SCAN:
3517 (yy_c_buf_p) = (yytext_ptr) + offset;
3523 c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */
3524 *(yy_c_buf_p) = '\0'; /* preserve yytext */
3525 (yy_hold_char) = *++(yy_c_buf_p);
3527 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n');
3531 #endif /* ifndef YY_NO_INPUT */
3533 /** Immediately switch to a different input stream.
3534 * @param input_file A readable stream.
3536 * @note This function does not reset the start condition to @c INITIAL .
3538 void yyrestart (FILE * input_file )
3541 if ( ! YY_CURRENT_BUFFER ){
3542 yyensure_buffer_stack ();
3543 YY_CURRENT_BUFFER_LVALUE =
3544 yy_create_buffer(yyin,YY_BUF_SIZE );
3547 yy_init_buffer(YY_CURRENT_BUFFER,input_file );
3548 yy_load_buffer_state( );
3551 /** Switch to a different input buffer.
3552 * @param new_buffer The new input buffer.
3555 void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer )
3558 /* TODO. We should be able to replace this entire function body
3560 * yypop_buffer_state();
3561 * yypush_buffer_state(new_buffer);
3563 yyensure_buffer_stack ();
3564 if ( YY_CURRENT_BUFFER == new_buffer )
3567 if ( YY_CURRENT_BUFFER )
3569 /* Flush out information for old buffer. */
3570 *(yy_c_buf_p) = (yy_hold_char);
3571 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
3572 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
3575 YY_CURRENT_BUFFER_LVALUE = new_buffer;
3576 yy_load_buffer_state( );
3578 /* We don't actually know whether we did this switch during
3579 * EOF (yywrap()) processing, but the only time this flag
3580 * is looked at is after yywrap() is called, so it's safe
3581 * to go ahead and always set it.
3583 (yy_did_buffer_switch_on_eof) = 1;
3586 static void yy_load_buffer_state (void)
3588 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
3589 (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
3590 yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
3591 (yy_hold_char) = *(yy_c_buf_p);
3594 /** Allocate and initialize an input buffer state.
3595 * @param file A readable stream.
3596 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
3598 * @return the allocated buffer state.
3600 YY_BUFFER_STATE yy_create_buffer (FILE * file, int size )
3604 b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) );
3606 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
3608 b->yy_buf_size = size;
3610 /* yy_ch_buf has to be 2 characters longer than the size given because
3611 * we need to put in 2 end-of-buffer characters.
3613 b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 );
3614 if ( ! b->yy_ch_buf )
3615 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
3617 b->yy_is_our_buffer = 1;
3619 yy_init_buffer(b,file );
3624 /** Destroy the buffer.
3625 * @param b a buffer created with yy_create_buffer()
3628 void yy_delete_buffer (YY_BUFFER_STATE b )
3634 if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
3635 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
3637 if ( b->yy_is_our_buffer )
3638 yyfree((void *) b->yy_ch_buf );
3640 yyfree((void *) b );
3644 extern int isatty (int );
3645 #endif /* __cplusplus */
3647 /* Initializes or reinitializes a buffer.
3648 * This function is sometimes called more than once on the same buffer,
3649 * such as during a yyrestart() or at EOF.
3651 static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file )
3656 yy_flush_buffer(b );
3658 b->yy_input_file = file;
3659 b->yy_fill_buffer = 1;
3661 /* If b is the current buffer, then yy_init_buffer was _probably_
3662 * called from yyrestart() or through yy_get_next_buffer.
3663 * In that case, we don't want to reset the lineno or column.
3665 if (b != YY_CURRENT_BUFFER){
3666 b->yy_bs_lineno = 1;
3667 b->yy_bs_column = 0;
3670 b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
3675 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
3676 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
3679 void yy_flush_buffer (YY_BUFFER_STATE b )
3686 /* We always need two end-of-buffer characters. The first causes
3687 * a transition to the end-of-buffer state. The second causes
3688 * a jam in that state.
3690 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
3691 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
3693 b->yy_buf_pos = &b->yy_ch_buf[0];
3696 b->yy_buffer_status = YY_BUFFER_NEW;
3698 if ( b == YY_CURRENT_BUFFER )
3699 yy_load_buffer_state( );
3702 /** Pushes the new state onto the stack. The new state becomes
3703 * the current state. This function will allocate the stack
3705 * @param new_buffer The new state.
3708 void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
3710 if (new_buffer == NULL)
3713 yyensure_buffer_stack();
3715 /* This block is copied from yy_switch_to_buffer. */
3716 if ( YY_CURRENT_BUFFER )
3718 /* Flush out information for old buffer. */
3719 *(yy_c_buf_p) = (yy_hold_char);
3720 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
3721 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
3724 /* Only push if top exists. Otherwise, replace top. */
3725 if (YY_CURRENT_BUFFER)
3726 (yy_buffer_stack_top)++;
3727 YY_CURRENT_BUFFER_LVALUE = new_buffer;
3729 /* copied from yy_switch_to_buffer. */
3730 yy_load_buffer_state( );
3731 (yy_did_buffer_switch_on_eof) = 1;
3734 /** Removes and deletes the top of the stack, if present.
3735 * The next element becomes the new top.
3738 void yypop_buffer_state (void)
3740 if (!YY_CURRENT_BUFFER)
3743 yy_delete_buffer(YY_CURRENT_BUFFER );
3744 YY_CURRENT_BUFFER_LVALUE = NULL;
3745 if ((yy_buffer_stack_top) > 0)
3746 --(yy_buffer_stack_top);
3748 if (YY_CURRENT_BUFFER) {
3749 yy_load_buffer_state( );
3750 (yy_did_buffer_switch_on_eof) = 1;
3754 /* Allocates the stack if it does not exist.
3755 * Guarantees space for at least one push.
3757 static void yyensure_buffer_stack (void)
3761 if (!(yy_buffer_stack)) {
3763 /* First allocation is just for 2 elements, since we don't know if this
3764 * scanner will even need a stack. We use 2 instead of 1 to avoid an
3765 * immediate realloc on the next call.
3768 (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
3769 (num_to_alloc * sizeof(struct yy_buffer_state*)
3771 if ( ! (yy_buffer_stack) )
3772 YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
3774 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
3776 (yy_buffer_stack_max) = num_to_alloc;
3777 (yy_buffer_stack_top) = 0;
3781 if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
3783 /* Increase the buffer to prepare for a possible push. */
3784 int grow_size = 8 /* arbitrary grow size */;
3786 num_to_alloc = (yy_buffer_stack_max) + grow_size;
3787 (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
3789 num_to_alloc * sizeof(struct yy_buffer_state*)
3791 if ( ! (yy_buffer_stack) )
3792 YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
3794 /* zero only the new slots.*/
3795 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
3796 (yy_buffer_stack_max) = num_to_alloc;
3800 /** Setup the input buffer state to scan directly from a user-specified character buffer.
3801 * @param base the character buffer
3802 * @param size the size in bytes of the character buffer
3804 * @return the newly allocated buffer state object.
3806 YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size )
3811 base[size-2] != YY_END_OF_BUFFER_CHAR ||
3812 base[size-1] != YY_END_OF_BUFFER_CHAR )
3813 /* They forgot to leave room for the EOB's. */
3816 b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) );
3818 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
3820 b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
3821 b->yy_buf_pos = b->yy_ch_buf = base;
3822 b->yy_is_our_buffer = 0;
3823 b->yy_input_file = 0;
3824 b->yy_n_chars = b->yy_buf_size;
3825 b->yy_is_interactive = 0;
3827 b->yy_fill_buffer = 0;
3828 b->yy_buffer_status = YY_BUFFER_NEW;
3830 yy_switch_to_buffer(b );
3835 /** Setup the input buffer state to scan a string. The next call to yylex() will
3836 * scan from a @e copy of @a str.
3837 * @param yystr a NUL-terminated string to scan
3839 * @return the newly allocated buffer state object.
3840 * @note If you want to scan bytes that may contain NUL values, then use
3841 * yy_scan_bytes() instead.
3843 YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
3846 return yy_scan_bytes(yystr,strlen(yystr) );
3849 /** Setup the input buffer state to scan the given bytes. The next call to yylex() will
3850 * scan from a @e copy of @a bytes.
3851 * @param bytes the byte buffer to scan
3852 * @param len the number of bytes in the buffer pointed to by @a bytes.
3854 * @return the newly allocated buffer state object.
3856 YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len )
3863 /* Get memory for full buffer, including space for trailing EOB's. */
3864 n = _yybytes_len + 2;
3865 buf = (char *) yyalloc(n );
3867 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
3869 for ( i = 0; i < _yybytes_len; ++i )
3870 buf[i] = yybytes[i];
3872 buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
3874 b = yy_scan_buffer(buf,n );
3876 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
3878 /* It's okay to grow etc. this buffer, and we should throw it
3879 * away when we're done.
3881 b->yy_is_our_buffer = 1;
3886 #ifndef YY_EXIT_FAILURE
3887 #define YY_EXIT_FAILURE 2
3890 static void yy_fatal_error (yyconst char* msg )
3892 (void) fprintf( stderr, "%s\n", msg );
3893 exit( YY_EXIT_FAILURE );
3896 /* Redefine yyless() so it works in section 3 code. */
3902 /* Undo effects of setting up yytext. */ \
3903 int yyless_macro_arg = (n); \
3904 YY_LESS_LINENO(yyless_macro_arg);\
3905 yytext[yyleng] = (yy_hold_char); \
3906 (yy_c_buf_p) = yytext + yyless_macro_arg; \
3907 (yy_hold_char) = *(yy_c_buf_p); \
3908 *(yy_c_buf_p) = '\0'; \
3909 yyleng = yyless_macro_arg; \
3913 /* Accessor methods (get/set functions) to struct members. */
3915 /** Get the current line number.
3918 int yyget_lineno (void)
3924 /** Get the input stream.
3927 FILE *yyget_in (void)
3932 /** Get the output stream.
3935 FILE *yyget_out (void)
3940 /** Get the length of the current token.
3943 int yyget_leng (void)
3948 /** Get the current token.
3952 char *yyget_text (void)
3957 /** Set the current line number.
3958 * @param line_number
3961 void yyset_lineno (int line_number )
3964 yylineno = line_number;
3967 /** Set the input stream. This does not discard the current
3969 * @param in_str A readable stream.
3971 * @see yy_switch_to_buffer
3973 void yyset_in (FILE * in_str )
3978 void yyset_out (FILE * out_str )
3983 int yyget_debug (void)
3985 return yy_flex_debug;
3988 void yyset_debug (int bdebug )
3990 yy_flex_debug = bdebug ;
3993 static int yy_init_globals (void)
3995 /* Initialization is the same as for the non-reentrant scanner.
3996 * This function is called from yylex_destroy(), so don't allocate here.
3999 (yy_buffer_stack) = 0;
4000 (yy_buffer_stack_top) = 0;
4001 (yy_buffer_stack_max) = 0;
4002 (yy_c_buf_p) = (char *) 0;
4008 (yy_full_match) = 0;
4011 /* Defined in main.c */
4020 /* For future reference: Set errno on error, since we are called by
4026 /* yylex_destroy is for both reentrant and non-reentrant scanners. */
4027 int yylex_destroy (void)
4030 /* Pop the buffer stack, destroying each element. */
4031 while(YY_CURRENT_BUFFER){
4032 yy_delete_buffer(YY_CURRENT_BUFFER );
4033 YY_CURRENT_BUFFER_LVALUE = NULL;
4034 yypop_buffer_state();
4037 /* Destroy the stack itself. */
4038 yyfree((yy_buffer_stack) );
4039 (yy_buffer_stack) = NULL;
4041 yyfree ( (yy_state_buf) );
4042 (yy_state_buf) = NULL;
4044 /* Reset the globals. This is important in a non-reentrant scanner so the next time
4045 * yylex() is called, initialization will occur. */
4052 * Internal utility routines.
4056 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
4059 for ( i = 0; i < n; ++i )
4064 #ifdef YY_NEED_STRLEN
4065 static int yy_flex_strlen (yyconst char * s )
4068 for ( n = 0; s[n]; ++n )
4075 void *yyalloc (yy_size_t size )
4077 return (void *) malloc( size );
4080 void *yyrealloc (void * ptr, yy_size_t size )
4082 /* The cast to (char *) in the following accommodates both
4083 * implementations that use char* generic pointers, and those
4084 * that use void* generic pointers. It works with the latter
4085 * because both ANSI C and C++ allow castless assignment from
4086 * any pointer type to void*, and deal with argument conversions
4087 * as though doing an assignment.
4089 return (void *) realloc( (char *) ptr, size );
4092 void yyfree (void * ptr )
4094 free( (char *) ptr ); /* see yyrealloc() for (char *) cast */
4097 #define YYTABLES_NAME "yytables"
4099 #line 992 "parser.l"
4104 static char *StringToLex;
4106 #ifndef FLEX_SCANNER
4113 if (StringToLex != NULL) {
4115 if (ret == NULLCHAR)
4119 } else if (unputCount > 0) {
4120 ret = unputBuffer[--unputCount];
4132 * Return offset of next pattern within current file
4136 int offset = ftell(lexFP) - unputCount;
4144 static void output(ch)
4147 if(appData.debugMode) fprintf(debugFP, "PARSER BUG: unmatched character '%c' (0%o)\n",
4151 static void unput(ch)
4154 if (ch == 0) return;
4155 if (StringToLex != NULL) {
4158 if (unputCount >= UNPUT_BUF_SIZE)
4159 if(appData.debugMode) fprintf(debugFP, "PARSER BUG: unput buffer overflow '%c' (0%o)\n",
4161 unputBuffer[unputCount++] = ch;
4165 /* Get ready to lex from a new file. Kludge below sticks
4166 an artificial newline at the front of the file, which the
4167 above grammar ignores, but which makes ^ at start of pattern
4168 match at the real start of the file.
4176 unput('\n'); /* kludge */
4179 /* Get ready to lex from a string. ^ at start of pattern WON'T
4180 match at the start of the string!
4189 #endif /*!FLEX_SCANNER*/
4192 void my_yy_input(buf, result, max_size)
4199 if (StringToLex != NULL) {
4201 while (*StringToLex != NULLCHAR) {
4202 *buf++ = *StringToLex++;
4208 count = fread(buf, 1, max_size, yyin);
4218 static YY_BUFFER_STATE my_file_buffer = NULL;
4221 Return offset of next pattern in the current file.
4225 int pos = yy_c_buf_p - YY_CURRENT_BUFFER->yy_ch_buf;
4227 return(ftell(YY_CURRENT_BUFFER->yy_input_file) -
4235 if (my_file_buffer != NULL)
4236 yy_delete_buffer(my_file_buffer);
4238 my_file_buffer = yy_create_buffer(stdin,YY_BUF_SIZE);
4239 yy_switch_to_buffer(my_file_buffer);
4245 if (my_file_buffer != NULL)
4246 yy_delete_buffer(my_file_buffer);
4248 my_file_buffer = yy_create_buffer(f,YY_BUF_SIZE);
4249 yy_switch_to_buffer(my_file_buffer);
4251 #endif /*FLEX_SCANNER*/
4258 /* Parse a move from the given string s */
4259 /* ^ at start of pattern WON'T work here unless using flex */
4260 ChessMove yylexstr(boardIndex, s, text, len)
4261 int boardIndex, len;
4265 char *oldStringToLex;
4267 YY_BUFFER_STATE buffer, oldBuffer;
4270 yyboardindex = boardIndex;
4271 oldStringToLex = StringToLex;
4274 buffer = yy_create_buffer(stdin,YY_BUF_SIZE);
4275 oldBuffer = YY_CURRENT_BUFFER;
4276 yy_switch_to_buffer(buffer);
4277 #endif /*FLEX_SCANNER*/
4279 ret = (ChessMove) yylex();
4280 strncpy(text, yy_text, len-1); // [HGM] vari: yy_text is not available to caller after buffer switch ?!?
4281 text[len-1] = NULLCHAR;
4284 if (oldBuffer != NULL)
4285 yy_switch_to_buffer(oldBuffer);
4286 yy_delete_buffer(buffer);
4287 #endif /*FLEX_SCANNER*/
4288 StringToLex = oldStringToLex;