1 /* A lexical scanner generated by flex */
3 /* Scanner skeleton version:
4 * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $
8 #define YY_FLEX_MAJOR_VERSION 2
9 #define YY_FLEX_MINOR_VERSION 5
12 // #include <unistd.h>
15 /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
27 /* Use prototypes in function declarations. */
30 /* The "const" storage-class-modifier is valid. */
33 #else /* ! __cplusplus */
41 #endif /* ! __cplusplus */
60 #define YY_PROTO(proto) proto
62 #define YY_PROTO(proto) ()
65 /* Returned upon end-of-file. */
68 /* Promotes a possibly negative, possibly signed char to an unsigned
69 * integer for use as an array index. If the signed char is negative,
70 * we want to instead treat it as an 8-bit unsigned char, hence the
73 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
75 /* Enter a start condition. This macro really ought to take a parameter,
76 * but we do it the disgusting crufty way forced on us by the ()-less
77 * definition of BEGIN.
79 #define BEGIN yy_start = 1 + 2 *
81 /* Translate the current start state into a value that can be later handed
82 * to BEGIN to return to the state. The YYSTATE alias is for lex
85 #define YY_START ((yy_start - 1) / 2)
86 #define YYSTATE YY_START
88 /* Action number for EOF rule of a given start state. */
89 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
91 /* Special action meaning "start processing a new file". */
92 #define YY_NEW_FILE yyrestart( yyin )
94 #define YY_END_OF_BUFFER_CHAR 0
96 /* Size of default input buffer. */
97 #define YY_BUF_SIZE 16384
99 typedef struct yy_buffer_state *YY_BUFFER_STATE;
102 extern FILE *yyin, *yyout;
104 #define EOB_ACT_CONTINUE_SCAN 0
105 #define EOB_ACT_END_OF_FILE 1
106 #define EOB_ACT_LAST_MATCH 2
108 /* The funky do-while in the following #define is used to turn the definition
109 * int a single C statement (which needs a semi-colon terminator). This
110 * avoids problems with code like:
112 * if ( condition_holds )
115 * do_something_else();
117 * Prior to using the do-while the compiler would get upset at the
118 * "else" because it interpreted the "if" statement as being all
119 * done when it reached the ';' after the yyless() call.
122 /* Return all but the first 'n' matched characters back to the input stream. */
127 /* Undo effects of setting up yytext. */ \
128 *yy_cp = yy_hold_char; \
129 YY_RESTORE_YY_MORE_OFFSET \
130 yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
131 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
135 #define unput(c) yyunput( c, yytext_ptr )
137 /* The following is because we cannot portably get our hands on size_t
138 * (without autoconf's help, which isn't available because we want
139 * flex-generated scanners to compile on their own).
141 typedef unsigned int yy_size_t;
144 struct yy_buffer_state
148 char *yy_ch_buf; /* input buffer */
149 char *yy_buf_pos; /* current position in input buffer */
151 /* Size of input buffer in bytes, not including room for EOB
154 yy_size_t yy_buf_size;
156 /* Number of characters read into yy_ch_buf, not including EOB
161 /* Whether we "own" the buffer - i.e., we know we created it,
162 * and can realloc() it to grow it, and should free() it to
165 int yy_is_our_buffer;
167 /* Whether this is an "interactive" input source; if so, and
168 * if we're using stdio for input, then we want to use getc()
169 * instead of fread(), to make sure we stop fetching input after
172 int yy_is_interactive;
174 /* Whether we're considered to be at the beginning of a line.
175 * If so, '^' rules will be active on the next match, otherwise
180 /* Whether to try to fill the input buffer when we reach the
185 int yy_buffer_status;
186 #define YY_BUFFER_NEW 0
187 #define YY_BUFFER_NORMAL 1
188 /* When an EOF's been seen but there's still some text to process
189 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
190 * shouldn't try reading from the input source any more. We might
191 * still have a bunch of tokens to match, though, because of
192 * possible backing-up.
194 * When we actually see the EOF, we change the status to "new"
195 * (via yyrestart()), so that the user can continue scanning by
196 * just pointing yyin at a new input file.
198 #define YY_BUFFER_EOF_PENDING 2
201 static YY_BUFFER_STATE yy_current_buffer = 0;
203 /* We provide macros for accessing buffer states in case in the
204 * future we want to put the buffer states in a more general
207 #define YY_CURRENT_BUFFER yy_current_buffer
210 /* yy_hold_char holds the character lost when yytext is formed. */
211 static char yy_hold_char;
213 static int yy_n_chars; /* number of characters read into yy_ch_buf */
218 /* Points to current character in buffer. */
219 static char *yy_c_buf_p = (char *) 0;
220 static int yy_init = 1; /* whether we need to initialize */
221 static int yy_start = 0; /* start state number */
223 /* Flag which is used to allow yywrap()'s to do buffer switches
224 * instead of setting up a fresh yyin. A bit of a hack ...
226 static int yy_did_buffer_switch_on_eof;
228 void yyrestart YY_PROTO(( FILE *input_file ));
230 void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
231 void yy_load_buffer_state YY_PROTO(( void ));
232 YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
233 void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
234 void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
235 void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
236 #define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
238 YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
239 YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
240 YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
242 static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
243 static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
244 static void yy_flex_free YY_PROTO(( void * ));
246 #define yy_new_buffer yy_create_buffer
248 #define yy_set_interactive(is_interactive) \
250 if ( ! yy_current_buffer ) \
251 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
252 yy_current_buffer->yy_is_interactive = is_interactive; \
255 #define yy_set_bol(at_bol) \
257 if ( ! yy_current_buffer ) \
258 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
259 yy_current_buffer->yy_at_bol = at_bol; \
262 #define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
265 #define YY_USES_REJECT
266 typedef unsigned char YY_CHAR;
267 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
268 typedef int yy_state_type;
270 #define yytext_ptr yytext
272 static yy_state_type yy_get_previous_state YY_PROTO(( void ));
273 static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
274 static int yy_get_next_buffer YY_PROTO(( void ));
275 static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
277 /* Done after the current pattern has been matched and before the
278 * corresponding action - sets up yytext.
280 #define YY_DO_BEFORE_ACTION \
281 yytext_ptr = yy_bp; \
282 yyleng = (int) (yy_cp - yy_bp); \
283 yy_hold_char = *yy_cp; \
287 #define YY_NUM_RULES 42
288 #define YY_END_OF_BUFFER 43
289 static yyconst short int yy_acclist[661] =
291 43, 41, 42, 41, 42, 41, 42, 40, 41, 42,
292 41, 42, 25, 41, 42, 41, 42, 40, 41, 42,
293 40, 41, 42,16410, 40, 41, 42,16410, 41, 42,
294 40, 41, 42, 40, 41, 42, 40, 41, 42, 40,
295 41, 42, 40, 41, 42, 40, 41, 42, 40, 41,
296 42, 40, 41, 42, 40, 41, 42, 40, 41, 42,
297 40, 41, 42, 40, 41, 42, 40, 41, 42, 41,
298 42, 40, 41, 42, 40, 41, 42, 40, 41, 42,
299 40, 41, 42, 40, 41, 42, 40, 41, 42, 40,
300 41, 42, 40, 41, 42, 40, 41, 42, 41, 42,
302 41, 42, 40, 41, 42, 40, 41, 42, 40, 41,
303 42,16410, 40, 41, 42,16410, 41, 42, 40, 41,
304 42, 40, 41, 42, 40, 41, 42, 40, 41, 42,
305 40, 41, 42, 40, 41, 42, 40, 41, 42, 40,
306 41, 42, 40, 41, 42, 40, 41, 42, 40, 41,
307 42, 40, 41, 42, 40, 41, 42, 40, 41, 42,
308 40, 41, 42, 40, 41, 42, 40, 41, 42, 40,
309 41, 42, 40, 41, 42, 40, 41, 42, 40, 41,
310 42, 40, 41, 42, 41, 42, 33, 40, 17, 40,
311 9, 40, 40, 40,16410, 8218, 40, 35, 40, 40,
313 40, 40, 40, 40, 40, 40, 40, 40, 40, 9,
314 40, 40, 40, 40, 40, 40, 36, 40, 3, 40,
315 40, 40, 4, 40, 40, 3, 40, 40, 4, 40,
316 40, 40, 40, 9, 40, 34, 40, 40, 9, 40,
317 40, 40,16410, 8218, 40, 40, 40, 40, 40, 40,
318 40, 40, 40, 40, 40, 40, 9, 40, 40, 40,
319 40, 40, 40, 40, 3, 40, 40, 40, 4, 40,
320 40, 3, 40, 40, 4, 40, 40, 40, 40, 9,
321 40, 15, 9, 40, 23, 40, 23, 8, 40, 8218,
322 22, 40, 22, 24, 40, 40, 40, 6, 40, 40,
324 40, 40, 40, 40, 40, 9, 40, 40, 40, 40,
325 40, 20, 40, 4, 40, 40, 3, 40, 40, 3,
326 40, 4, 5, 40, 4, 40, 40, 4, 40, 40,
327 40, 3, 40, 4, 4, 40, 5, 6, 40, 4,
328 40, 40, 9, 40, 34, 39, 9, 40, 23, 40,
329 8, 40, 22, 40, 35, 40, 40, 40, 6, 40,
330 40, 40, 40, 40, 40, 40, 9, 40, 40, 40,
331 40, 40, 20, 40, 4, 40, 40, 3, 40, 40,
332 3, 40, 5, 40, 4, 40, 40, 4, 40, 40,
333 40, 3, 40, 4, 40, 5, 6, 40, 4, 40,
335 40, 9, 40, 38, 38, 37, 25, 25, 40, 6,
336 40, 7, 40, 6, 10, 40, 40, 40, 40, 19,
337 40, 40, 21, 40, 16, 40, 40, 40, 40, 40,
338 20, 20, 40, 20, 40, 36, 3, 3, 2, 40,
339 5, 4, 5, 40, 40, 4, 4, 40, 2, 7,
340 40, 5, 6, 5, 6, 40, 5, 40, 40, 40,
341 25, 39, 40, 6, 40, 7, 40, 40, 40, 40,
342 40, 19, 40, 40, 21, 40, 16, 40, 40, 40,
343 40, 40, 20, 40, 20, 20, 40, 2, 40, 5,
344 40, 40, 4, 40, 2, 7, 40, 5, 6, 40,
346 5, 40, 40, 40, 7, 1, 40, 40, 40, 19,
347 40, 40, 40, 21, 21, 40, 21, 40, 40, 40,
348 40, 30, 36, 2, 2, 40, 5, 4, 5, 5,
349 40, 2, 7, 39, 1, 40, 40, 40, 19, 40,
350 40, 40, 21, 40, 21, 21, 40, 40, 40, 40,
351 20, 39, 2, 40, 5, 40, 27, 38, 23, 23,
352 22, 22, 24, 24, 20, 21, 1, 1, 40, 40,
353 40, 40, 11, 40, 40, 28, 36, 30, 2, 2,
354 5, 27, 34, 39, 39, 1, 40, 40, 40, 40,
355 21, 39, 11, 40, 40, 20, 39, 18, 24, 20,
357 21, 1, 1, 19, 40, 40, 40, 11, 40, 40,
358 40, 40, 21, 39, 40, 11, 40, 40, 12, 40,
359 40, 40, 40, 12, 40, 40, 14, 40, 40, 40,
360 14, 40, 40, 40, 39, 40, 40, 40, 40, 39,
361 39, 40, 40, 31, 40, 39, 39, 31, 40, 13,
362 31, 32, 32, 35, 39, 39, 31, 39, 34, 29
365 static yyconst short int yy_accept[712] =
367 1, 1, 1, 2, 4, 6, 8, 11, 13, 16,
368 18, 21, 25, 29, 31, 34, 37, 40, 43, 46,
369 49, 52, 55, 58, 61, 64, 67, 70, 72, 75,
370 78, 81, 84, 87, 90, 93, 96, 99, 101, 103,
371 106, 109, 113, 117, 119, 122, 125, 128, 131, 134,
372 137, 140, 143, 146, 149, 152, 155, 158, 161, 164,
373 167, 170, 173, 176, 179, 182, 185, 187, 187, 188,
374 189, 189, 189, 189, 189, 190, 190, 190, 191, 191,
375 193, 193, 193, 193, 194, 194, 194, 196, 196, 198,
376 198, 199, 199, 200, 200, 201, 201, 201, 202, 203,
378 204, 205, 206, 207, 208, 209, 210, 212, 213, 214,
379 215, 216, 217, 217, 217, 217, 217, 218, 219, 221,
380 221, 222, 223, 225, 226, 228, 228, 229, 231, 232,
381 233, 234, 236, 236, 236, 236, 237, 237, 238, 238,
382 239, 241, 241, 242, 244, 244, 246, 246, 247, 248,
383 248, 249, 250, 251, 252, 253, 254, 255, 256, 257,
384 259, 260, 261, 262, 263, 264, 265, 267, 267, 268,
385 269, 271, 272, 274, 274, 275, 277, 278, 279, 280,
386 282, 282, 282, 282, 282, 282, 282, 282, 282, 282,
387 282, 282, 283, 283, 283, 283, 285, 287, 288, 290,
389 291, 291, 291, 291, 293, 294, 295, 295, 295, 295,
390 295, 296, 296, 297, 297, 298, 298, 298, 300, 301,
391 302, 303, 304, 305, 306, 308, 309, 310, 311, 312,
392 314, 314, 314, 314, 314, 316, 316, 317, 317, 317,
393 319, 320, 322, 323, 325, 325, 325, 327, 328, 330,
394 331, 331, 332, 334, 335, 337, 340, 342, 343, 345,
395 346, 346, 346, 346, 346, 347, 349, 351, 353, 355,
396 355, 356, 356, 357, 358, 358, 359, 361, 362, 363,
397 364, 365, 366, 367, 369, 370, 371, 372, 373, 375,
398 377, 378, 378, 380, 381, 383, 385, 387, 388, 390,
400 391, 391, 392, 394, 396, 399, 401, 402, 404, 404,
401 404, 405, 406, 406, 406, 407, 407, 407, 408, 408,
402 409, 409, 409, 409, 410, 410, 410, 410, 410, 410,
403 410, 410, 410, 410, 410, 410, 412, 412, 412, 414,
404 415, 416, 417, 417, 418, 419, 420, 422, 422, 423,
405 425, 427, 428, 429, 430, 431, 432, 434, 436, 436,
406 436, 436, 436, 437, 438, 438, 439, 441, 442, 443,
407 443, 443, 443, 445, 446, 447, 447, 449, 449, 452,
408 454, 457, 459, 460, 461, 461, 462, 462, 462, 462,
409 462, 463, 463, 464, 464, 464, 466, 468, 469, 469,
411 470, 471, 472, 474, 475, 477, 479, 480, 481, 482,
412 483, 485, 486, 488, 490, 492, 493, 495, 498, 501,
413 503, 504, 505, 505, 505, 505, 505, 505, 505, 505,
414 505, 505, 505, 505, 505, 505, 505, 505, 505, 505,
415 506, 508, 509, 510, 510, 512, 512, 513, 514, 515,
416 517, 519, 520, 521, 522, 522, 522, 524, 524, 524,
417 525, 525, 525, 527, 528, 528, 529, 530, 530, 532,
418 532, 534, 534, 534, 534, 534, 534, 534, 535, 535,
419 535, 537, 538, 539, 541, 542, 543, 545, 546, 548,
420 549, 550, 551, 553, 555, 557, 557, 557, 559, 559,
422 559, 560, 560, 561, 561, 562, 562, 563, 563, 564,
423 564, 565, 565, 565, 565, 565, 567, 567, 568, 568,
424 568, 570, 571, 571, 571, 571, 571, 571, 572, 573,
425 575, 576, 578, 578, 579, 580, 581, 582, 582, 582,
426 584, 584, 584, 585, 586, 586, 586, 588, 589, 590,
427 591, 593, 595, 596, 598, 598, 599, 599, 599, 599,
428 600, 600, 600, 600, 602, 602, 603, 604, 604, 605,
429 605, 605, 605, 605, 606, 607, 608, 610, 611, 611,
430 611, 611, 611, 611, 612, 613, 615, 616, 618, 619,
431 619, 619, 619, 619, 619, 619, 620, 620, 620, 620,
433 620, 621, 622, 622, 622, 622, 622, 623, 624, 624,
434 624, 624, 624, 625, 625, 625, 625, 626, 627, 629,
435 629, 629, 629, 629, 630, 630, 631, 633, 633, 633,
436 633, 633, 634, 635, 635, 635, 635, 635, 636, 637,
437 638, 638, 638, 638, 638, 638, 639, 640, 640, 640,
438 640, 640, 641, 642, 643, 644, 644, 644, 644, 644,
439 644, 646, 646, 646, 646, 646, 647, 648, 650, 650,
440 650, 651, 651, 652, 652, 653, 653, 653, 655, 655,
441 656, 657, 657, 657, 657, 657, 659, 659, 659, 659,
442 659, 659, 659, 659, 659, 659, 659, 659, 659, 659,
444 659, 659, 659, 659, 659, 659, 659, 659, 660, 661,
448 static yyconst int yy_ec[256] =
450 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
451 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
452 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
453 1, 4, 1, 5, 6, 7, 8, 1, 9, 10,
454 11, 12, 13, 1, 14, 15, 16, 17, 18, 19,
455 20, 20, 20, 20, 20, 20, 21, 22, 23, 1,
456 24, 1, 1, 25, 26, 27, 28, 29, 30, 31,
457 32, 33, 34, 34, 35, 36, 37, 38, 39, 40,
458 41, 42, 43, 34, 44, 34, 45, 46, 34, 34,
459 47, 1, 48, 1, 49, 1, 50, 51, 52, 53,
461 54, 55, 56, 57, 58, 34, 59, 60, 61, 62,
462 63, 64, 41, 65, 66, 67, 68, 34, 69, 46,
463 70, 34, 71, 1, 72, 1, 1, 1, 1, 1,
464 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
465 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
466 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
467 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
468 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
469 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
470 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
472 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
473 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
474 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
475 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
476 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
480 static yyconst int yy_meta[73] =
482 1, 2, 3, 2, 1, 1, 1, 1, 4, 5,
483 6, 1, 1, 7, 1, 1, 4, 8, 8, 8,
484 4, 9, 1, 10, 1, 4, 11, 4, 4, 4,
485 4, 4, 4, 4, 11, 4, 4, 11, 12, 12,
486 11, 11, 4, 4, 4, 7, 1, 1, 1, 13,
487 14, 13, 13, 15, 13, 13, 13, 4, 11, 4,
488 4, 11, 12, 12, 11, 4, 4, 4, 4, 4,
492 static yyconst short int yy_base[787] =
494 0, 72, 2588, 4394, 119, 129, 0, 141, 2583, 139,
495 150, 171, 238, 2583, 257, 2527, 2518, 117, 159, 2518,
496 2530, 190, 142, 233, 191, 2512, 239, 317, 376, 420,
497 125, 205, 193, 114, 243, 120, 204, 331, 2574, 174,
498 353, 476, 258, 260, 543, 244, 282, 346, 311, 334,
499 256, 312, 365, 595, 331, 351, 354, 644, 688, 242,
500 348, 327, 365, 386, 303, 392, 552, 2521, 432, 0,
501 2566, 258, 557, 282, 4394, 2562, 393, 320, 2556, 2554,
502 2552, 342, 442, 2551, 457, 364, 605, 2550, 0, 2562,
503 4394, 576, 530, 617, 732, 625, 661, 449, 2514, 2509,
505 2512, 2517, 2492, 2493, 2490, 2517, 2515, 463, 572, 2503,
506 2494, 2489, 2502, 789, 372, 861, 4394, 669, 924, 705,
507 713, 468, 980, 765, 1032, 773, 789, 1076, 481, 637,
508 2486, 2485, 390, 2475, 830, 2542, 2541, 383, 2540, 617,
509 593, 546, 858, 874, 406, 579, 432, 865, 1120, 1005,
510 505, 683, 726, 727, 621, 872, 870, 876, 603, 873,
511 905, 665, 891, 884, 882, 973, 1168, 1013, 1049, 936,
512 1225, 1057, 1277, 1093, 1101, 1321, 641, 983, 928, 930,
513 896, 2478, 538, 543, 612, 2531, 622, 1030, 1221, 2528,
514 2466, 4394, 2532, 2531, 2529, 2518, 2527, 2526, 0, 4394,
516 2525, 2524, 2523, 2521, 2520, 443, 2465, 2459, 2471, 2466,
517 668, 709, 594, 1218, 732, 753, 756, 1365, 2467, 2466,
518 2446, 803, 906, 2460, 2498, 0, 2453, 2449, 2441, 1422,
519 689, 1069, 172, 1494, 790, 1251, 1294, 1302, 1415, 2496,
520 838, 976, 1288, 1557, 1413, 1449, 678, 629, 910, 1338,
521 1346, 992, 1105, 1502, 1057, 1609, 1182, 1100, 2492, 4394,
522 1510, 996, 2501, 191, 2501, 1172, 960, 962, 1158, 831,
523 2499, 1132, 1237, 889, 1482, 1300, 1653, 1176, 1228, 1010,
524 1273, 1315, 1175, 1190, 0, 1204, 1531, 1071, 1710, 1774,
525 1550, 1582, 1242, 1443, 1551, 1830, 1272, 1239, 1121, 1493,
527 1590, 1606, 1659, 1141, 1882, 1673, 1721, 1427, 1504, 2447,
528 4394, 843, 1025, 2489, 4394, 1727, 2487, 2485, 2423, 2422,
529 2475, 2474, 2473, 2473, 1010, 2472, 539, 2471, 1290, 1541,
530 610, 2421, 2421, 2414, 2414, 0, 939, 1197, 0, 4394,
531 4394, 1699, 1710, 1344, 2420, 2419, 885, 879, 1130, 1939,
532 0, 2438, 2420, 2421, 2420, 0, 2011, 2083, 733, 949,
533 1131, 1410, 2468, 2461, 1365, 4394, 2146, 1356, 1154, 689,
534 1752, 1796, 1157, 715, 2417, 2406, 0, 1386, 0, 1564,
535 2202, 1802, 1633, 2406, 1857, 2464, 1571, 1672, 2417, 2403,
536 2462, 1187, 1451, 1003, 894, 1295, 1470, 1718, 1855, 1823,
538 1555, 1665, 1782, 1796, 2267, 1574, 1588, 1826, 1647, 1674,
539 2339, 2460, 2411, 2475, 1840, 1858, 1608, 0, 2531, 1905,
540 1956, 1857, 1728, 2409, 2451, 1639, 2450, 2385, 2445, 2383,
541 2443, 2381, 2434, 1281, 2399, 2395, 2395, 2390, 1389, 4394,
542 2587, 2443, 1146, 1916, 2442, 1281, 2415, 2390, 0, 2652,
543 2724, 2378, 2378, 2428, 1322, 1883, 4394, 2426, 1966, 1457,
544 2002, 2076, 2419, 1428, 952, 4394, 2375, 2364, 0, 2410,
545 1544, 1774, 2396, 1877, 2392, 2347, 2341, 1521, 1030, 1255,
546 2787, 1676, 1881, 1788, 1891, 1861, 2852, 2402, 2924, 1963,
547 1841, 1944, 2402, 1691, 1649, 1816, 1235, 4394, 1979, 2393,
549 2392, 2330, 2329, 2389, 2388, 2326, 2325, 2385, 2381, 2319,
550 2318, 2366, 2362, 2315, 2323, 1377, 2320, 1778, 2004, 2102,
551 2355, 2310, 2348, 2304, 2287, 2326, 2288, 2289, 2264, 1524,
552 2279, 4394, 1980, 4394, 2317, 4394, 4394, 2312, 2053, 2319,
553 2268, 2261, 2315, 1999, 1555, 548, 1908, 1982, 1951, 1786,
554 2301, 2043, 2029, 2297, 2054, 4394, 2243, 2158, 2289, 2284,
555 2219, 2205, 2209, 4394, 2198, 2239, 4394, 2235, 2228, 2174,
556 2228, 2182, 2157, 2174, 2105, 2086, 0, 2061, 2130, 2120,
557 2054, 1040, 358, 2032, 2091, 2073, 2093, 1970, 2136, 2120,
558 1988, 2029, 1542, 1985, 1941, 1941, 1923, 884, 1858, 1831,
560 2996, 1815, 1772, 1768, 1617, 651, 3068, 2150, 2149, 1757,
561 1745, 1725, 4394, 1623, 1924, 2045, 3140, 2054, 0, 1631,
562 1594, 1302, 1202, 3212, 2158, 2066, 2040, 2177, 1577, 1531,
563 2110, 1524, 1496, 1455, 1427, 1308, 1895, 2162, 1448, 1422,
564 2179, 1319, 1298, 2163, 2154, 1285, 1115, 1083, 1117, 1726,
565 1576, 2196, 2198, 1062, 984, 2193, 2056, 930, 2153, 2166,
566 0, 902, 804, 803, 1618, 2210, 2238, 0, 2213, 583,
567 4394, 497, 2199, 486, 4394, 426, 460, 4394, 2116, 2203,
568 2254, 2231, 392, 317, 1804, 2255, 2281, 239, 2027, 829,
569 2006, 2117, 2293, 2295, 2298, 2299, 2303, 2317, 2321, 2322,
571 2323, 2365, 2366, 2369, 2370, 2371, 2233, 154, 4394, 4394,
572 3281, 3296, 3311, 3326, 3341, 3353, 3368, 3383, 3397, 3412,
573 3427, 3442, 3457, 3472, 3487, 3502, 3517, 3532, 3547, 3562,
574 3577, 3592, 3607, 3622, 3633, 3648, 3663, 3678, 3693, 3708,
575 3723, 3738, 3753, 3768, 3783, 3792, 3807, 3822, 3837, 3852,
576 3867, 3882, 3897, 3908, 3923, 3938, 3953, 3968, 3983, 3998,
577 4013, 4028, 4043, 4058, 4073, 4088, 4103, 4118, 4133, 4148,
578 4163, 4174, 4188, 4203, 4218, 4233, 4244, 4258, 4273, 4288,
579 4303, 4318, 4333, 4348, 4363, 4378
582 static yyconst short int yy_def[787] =
584 710, 710, 710, 710, 710, 710, 711, 712, 710, 710,
585 711, 710, 12, 713, 711, 711, 711, 711, 15, 711,
586 711, 15, 711, 711, 15, 711, 711, 714, 711, 15,
587 29, 29, 29, 29, 29, 29, 711, 715, 710, 716,
588 716, 710, 42, 713, 716, 716, 716, 716, 45, 716,
589 716, 45, 716, 716, 45, 716, 716, 716, 45, 58,
590 58, 58, 58, 58, 58, 716, 715, 710, 710, 711,
591 717, 718, 717, 710, 710, 710, 710, 711, 710, 711,
592 710, 719, 719, 711, 719, 710, 12, 710, 711, 713,
593 710, 710, 711, 710, 711, 710, 710, 95, 711, 711,
595 711, 711, 711, 711, 711, 711, 711, 711, 95, 711,
596 711, 711, 720, 714, 720, 721, 710, 711, 711, 710,
597 711, 711, 711, 711, 119, 710, 711, 123, 95, 711,
598 711, 711, 715, 722, 715, 710, 723, 716, 710, 716,
599 716, 710, 716, 42, 710, 716, 724, 716, 148, 710,
600 149, 716, 716, 716, 716, 716, 716, 716, 716, 716,
601 716, 149, 716, 716, 716, 148, 148, 710, 148, 716,
602 716, 148, 167, 710, 148, 171, 149, 716, 716, 716,
603 715, 710, 717, 725, 725, 726, 727, 717, 717, 728,
604 729, 710, 710, 710, 710, 711, 711, 710, 711, 710,
606 710, 710, 710, 711, 710, 710, 710, 710, 710, 710,
607 711, 710, 95, 710, 711, 710, 710, 711, 711, 711,
608 711, 711, 711, 711, 711, 218, 711, 711, 711, 730,
609 731, 732, 733, 734, 123, 710, 711, 710, 710, 711,
610 711, 711, 735, 711, 710, 710, 711, 711, 123, 711,
611 710, 711, 711, 735, 123, 244, 711, 711, 711, 710,
612 715, 710, 736, 710, 737, 716, 716, 716, 716, 738,
613 736, 739, 716, 149, 710, 716, 149, 716, 716, 716,
614 716, 716, 716, 716, 277, 716, 716, 716, 740, 716,
615 716, 710, 716, 716, 716, 290, 716, 716, 290, 291,
617 710, 716, 716, 290, 296, 716, 716, 716, 715, 710,
618 710, 741, 741, 742, 710, 743, 744, 744, 745, 745,
619 710, 710, 710, 711, 710, 710, 710, 710, 710, 710,
620 710, 710, 710, 710, 710, 711, 746, 710, 711, 710,
621 710, 711, 710, 711, 711, 711, 711, 710, 711, 747,
622 711, 711, 711, 711, 711, 748, 749, 749, 750, 750,
623 751, 752, 753, 710, 710, 710, 711, 754, 710, 710,
624 710, 710, 711, 711, 710, 710, 711, 710, 367, 754,
625 367, 711, 711, 711, 715, 710, 710, 710, 710, 710,
626 755, 710, 716, 756, 756, 716, 716, 291, 710, 716,
628 716, 716, 716, 716, 757, 716, 716, 716, 716, 716,
629 758, 748, 758, 716, 716, 716, 716, 414, 414, 716,
630 716, 716, 715, 710, 759, 760, 761, 762, 763, 764,
631 765, 766, 710, 710, 710, 710, 710, 710, 710, 710,
632 711, 711, 711, 710, 711, 710, 711, 711, 767, 768,
633 768, 711, 711, 711, 769, 770, 710, 771, 710, 772,
634 710, 710, 711, 710, 710, 710, 710, 710, 711, 710,
635 772, 715, 710, 710, 710, 710, 710, 773, 774, 774,
636 414, 716, 716, 716, 716, 716, 775, 767, 775, 716,
637 716, 716, 776, 716, 716, 715, 710, 710, 760, 761,
639 761, 762, 762, 763, 763, 764, 764, 765, 765, 766,
640 766, 710, 710, 710, 710, 710, 710, 777, 710, 710,
641 711, 711, 778, 710, 710, 710, 710, 711, 711, 711,
642 711, 710, 710, 710, 710, 710, 710, 710, 715, 710,
643 710, 710, 773, 773, 774, 774, 716, 716, 716, 716,
644 779, 716, 716, 776, 715, 710, 710, 760, 710, 710,
645 710, 710, 710, 710, 710, 710, 710, 778, 778, 710,
646 710, 710, 710, 711, 711, 711, 711, 711, 715, 710,
647 710, 774, 774, 716, 716, 779, 716, 716, 716, 715,
648 710, 710, 710, 710, 710, 710, 710, 710, 710, 710,
650 780, 711, 710, 710, 774, 774, 781, 716, 715, 710,
651 710, 710, 710, 710, 782, 782, 780, 617, 711, 710,
652 710, 774, 774, 781, 782, 624, 716, 715, 710, 710,
653 782, 617, 617, 710, 710, 774, 774, 783, 624, 624,
654 715, 710, 710, 782, 782, 617, 617, 710, 710, 774,
655 774, 783, 783, 624, 624, 715, 710, 710, 782, 782,
656 617, 784, 710, 785, 774, 783, 783, 624, 715, 710,
657 710, 710, 782, 784, 710, 710, 785, 710, 774, 783,
658 783, 715, 710, 710, 774, 783, 715, 710, 774, 715,
659 786, 786, 786, 786, 786, 786, 786, 786, 786, 786,
661 786, 786, 786, 786, 786, 786, 786, 710, 710, 0,
662 710, 710, 710, 710, 710, 710, 710, 710, 710, 710,
663 710, 710, 710, 710, 710, 710, 710, 710, 710, 710,
664 710, 710, 710, 710, 710, 710, 710, 710, 710, 710,
665 710, 710, 710, 710, 710, 710, 710, 710, 710, 710,
666 710, 710, 710, 710, 710, 710, 710, 710, 710, 710,
667 710, 710, 710, 710, 710, 710, 710, 710, 710, 710,
668 710, 710, 710, 710, 710, 710, 710, 710, 710, 710,
669 710, 710, 710, 710, 710, 710
672 static yyconst short int yy_nxt[4467] =
674 4, 4, 4, 5, 4, 4, 6, 4, 7, 8,
675 4, 9, 10, 7, 4, 4, 11, 12, 13, 13,
676 13, 4, 14, 4, 4, 7, 15, 16, 17, 7,
677 7, 18, 7, 7, 19, 20, 21, 22, 23, 24,
678 22, 25, 26, 7, 27, 7, 28, 4, 4, 29,
679 30, 31, 32, 33, 34, 35, 36, 7, 19, 20,
680 21, 22, 37, 24, 25, 26, 7, 7, 27, 7,
681 38, 4, 4, 4, 4, 5, 4, 39, 6, 39,
682 7, 8, 4, 9, 10, 40, 4, 4, 41, 42,
683 43, 43, 43, 4, 44, 4, 4, 40, 45, 46,
685 47, 40, 40, 48, 40, 40, 49, 50, 51, 52,
686 53, 54, 52, 55, 56, 40, 57, 40, 28, 4,
687 4, 58, 59, 60, 61, 62, 63, 64, 65, 40,
688 49, 50, 51, 52, 66, 54, 55, 56, 40, 40,
689 57, 40, 67, 4, 68, 69, 69, 69, 69, 69,
690 72, 75, 76, 77, 102, 106, 709, 73, 73, 73,
691 73, 73, 710, 78, 122, 79, 80, 123, 68, 123,
692 122, 81, 82, 82, 83, 123, 362, 123, 103, 70,
693 107, 130, 70, 710, 84, 85, 86, 87, 87, 87,
694 87, 87, 88, 710, 710, 139, 70, 89, 70, 70,
696 70, 70, 70, 70, 70, 89, 70, 70, 89, 89,
697 89, 89, 89, 70, 70, 70, 70, 131, 70, 363,
698 89, 89, 89, 89, 89, 89, 89, 89, 70, 89,
699 70, 70, 89, 89, 89, 89, 70, 70, 70, 70,
700 70, 82, 92, 122, 109, 123, 389, 123, 94, 70,
701 70, 70, 70, 710, 390, 122, 123, 97, 123, 710,
702 92, 82, 91, 147, 70, 139, 132, 186, 187, 101,
703 93, 138, 94, 710, 95, 95, 95, 139, 96, 139,
704 102, 97, 108, 108, 108, 108, 108, 108, 108, 108,
705 70, 190, 662, 122, 171, 111, 112, 123, 178, 123,
707 153, 112, 93, 139, 103, 158, 98, 98, 98, 98,
708 98, 98, 98, 98, 710, 710, 99, 113, 114, 114,
709 114, 113, 113, 113, 113, 113, 113, 113, 113, 113,
710 115, 113, 113, 134, 710, 710, 196, 197, 113, 113,
711 113, 113, 70, 82, 82, 82, 154, 135, 135, 135,
712 135, 135, 191, 170, 70, 139, 77, 92, 171, 70,
713 91, 70, 70, 113, 117, 113, 140, 139, 79, 141,
714 138, 138, 139, 70, 142, 139, 688, 170, 159, 171,
715 205, 171, 206, 155, 162, 231, 139, 113, 113, 118,
716 138, 70, 134, 119, 119, 119, 157, 120, 170, 171,
718 70, 171, 136, 160, 139, 179, 193, 156, 194, 265,
719 164, 165, 154, 139, 195, 170, 165, 163, 171, 117,
720 171, 121, 205, 155, 606, 122, 123, 122, 122, 122,
721 122, 122, 122, 124, 271, 272, 170, 125, 125, 125,
722 171, 126, 171, 82, 82, 82, 330, 156, 69, 69,
723 69, 69, 69, 556, 180, 201, 331, 202, 82, 82,
724 82, 136, 678, 203, 331, 127, 218, 218, 218, 128,
725 129, 128, 129, 129, 129, 129, 129, 82, 82, 83,
726 226, 226, 226, 684, 70, 244, 244, 244, 675, 143,
727 85, 86, 144, 144, 144, 144, 144, 145, 256, 256,
729 256, 138, 146, 138, 138, 138, 138, 138, 138, 138,
730 146, 138, 138, 146, 146, 146, 146, 146, 138, 138,
731 138, 138, 277, 277, 277, 146, 146, 146, 146, 146,
732 146, 146, 146, 138, 146, 138, 138, 146, 146, 146,
733 146, 138, 138, 138, 138, 138, 92, 184, 311, 265,
734 91, 70, 186, 312, 134, 205, 148, 206, 94, 683,
735 149, 149, 149, 198, 150, 181, 184, 97, 135, 135,
736 135, 135, 135, 188, 188, 188, 188, 188, 189, 211,
737 211, 211, 211, 211, 211, 211, 211, 70, 148, 218,
738 218, 218, 151, 151, 151, 151, 151, 151, 151, 151,
740 139, 70, 152, 70, 207, 583, 208, 70, 82, 268,
741 94, 70, 209, 433, 139, 710, 139, 210, 70, 97,
742 710, 186, 312, 136, 139, 70, 710, 434, 207, 70,
743 208, 314, 315, 266, 267, 671, 209, 227, 139, 70,
744 210, 284, 139, 376, 161, 161, 161, 161, 161, 161,
745 161, 161, 70, 91, 244, 244, 244, 166, 305, 305,
746 305, 167, 167, 167, 281, 168, 212, 212, 212, 212,
747 212, 212, 212, 212, 216, 216, 216, 216, 216, 216,
748 216, 216, 277, 277, 277, 336, 336, 336, 375, 169,
749 220, 70, 377, 170, 171, 170, 170, 170, 170, 170,
751 170, 172, 360, 376, 139, 173, 173, 173, 623, 174,
752 217, 217, 217, 217, 217, 217, 217, 217, 235, 235,
753 235, 235, 235, 235, 235, 235, 337, 337, 337, 468,
754 286, 248, 278, 175, 70, 70, 117, 176, 177, 176,
755 177, 177, 177, 177, 177, 213, 360, 139, 139, 339,
756 339, 339, 466, 214, 243, 243, 243, 243, 243, 243,
757 243, 243, 123, 123, 123, 123, 123, 123, 123, 123,
758 340, 340, 340, 341, 341, 341, 280, 213, 469, 279,
759 117, 215, 215, 215, 215, 215, 215, 215, 215, 113,
760 114, 114, 114, 113, 113, 113, 113, 113, 113, 113,
762 113, 113, 113, 113, 113, 678, 348, 70, 70, 70,
763 113, 113, 113, 113, 249, 249, 249, 249, 249, 249,
764 249, 249, 254, 254, 254, 254, 254, 254, 254, 254,
765 349, 691, 134, 271, 272, 113, 117, 113, 255, 255,
766 255, 255, 255, 255, 255, 255, 135, 135, 135, 135,
767 135, 261, 314, 315, 349, 367, 367, 367, 676, 113,
768 113, 113, 232, 232, 232, 233, 70, 113, 113, 113,
769 113, 113, 113, 70, 269, 113, 113, 82, 70, 139,
770 70, 70, 113, 113, 70, 113, 139, 138, 444, 710,
771 70, 139, 70, 139, 139, 139, 91, 139, 134, 70,
773 136, 136, 138, 139, 675, 139, 446, 113, 117, 309,
774 139, 268, 139, 70, 273, 273, 273, 273, 273, 273,
775 273, 273, 285, 285, 285, 524, 139, 336, 336, 336,
776 446, 113, 113, 236, 138, 282, 70, 237, 70, 281,
777 287, 288, 283, 289, 70, 238, 445, 239, 524, 139,
778 240, 139, 343, 296, 296, 296, 480, 139, 240, 350,
779 343, 240, 455, 325, 240, 240, 468, 136, 70, 237,
780 70, 350, 350, 241, 242, 241, 241, 241, 241, 241,
781 241, 139, 240, 139, 343, 240, 366, 672, 240, 245,
782 308, 70, 268, 367, 367, 367, 117, 244, 244, 244,
784 296, 296, 296, 246, 139, 91, 247, 386, 265, 379,
785 379, 379, 387, 388, 247, 537, 265, 247, 70, 427,
786 247, 247, 290, 290, 290, 290, 290, 290, 290, 290,
787 247, 139, 91, 248, 314, 315, 279, 668, 247, 184,
788 311, 247, 91, 605, 247, 250, 188, 188, 188, 188,
789 188, 189, 479, 251, 216, 216, 216, 216, 216, 216,
790 216, 216, 243, 243, 243, 243, 243, 243, 243, 243,
791 232, 232, 232, 233, 381, 381, 381, 250, 403, 70,
792 428, 252, 253, 252, 252, 252, 252, 252, 252, 213,
793 545, 668, 139, 256, 256, 256, 265, 214, 171, 171,
795 171, 171, 171, 171, 171, 171, 299, 299, 299, 299,
796 299, 299, 299, 299, 376, 366, 117, 339, 339, 339,
797 663, 213, 379, 379, 379, 215, 257, 215, 215, 258,
798 215, 215, 215, 274, 91, 362, 662, 410, 396, 396,
799 396, 275, 254, 254, 254, 254, 254, 254, 254, 254,
800 304, 304, 304, 304, 304, 304, 304, 304, 419, 419,
801 419, 329, 447, 377, 375, 274, 70, 467, 661, 276,
802 276, 276, 276, 276, 276, 276, 276, 236, 363, 139,
803 70, 291, 522, 70, 70, 393, 448, 394, 478, 292,
804 478, 239, 375, 139, 293, 395, 139, 139, 70, 339,
806 339, 339, 293, 407, 91, 293, 522, 370, 293, 293,
807 374, 139, 70, 291, 440, 440, 440, 294, 295, 294,
808 294, 294, 294, 294, 294, 139, 293, 401, 406, 293,
809 184, 311, 293, 70, 245, 248, 70, 316, 316, 316,
810 316, 316, 296, 296, 296, 70, 139, 70, 246, 139,
811 70, 297, 366, 376, 396, 396, 396, 91, 139, 297,
812 139, 408, 297, 139, 637, 297, 297, 338, 338, 338,
813 338, 338, 338, 338, 338, 297, 348, 364, 298, 402,
814 70, 70, 375, 297, 512, 364, 297, 556, 364, 297,
815 300, 364, 364, 139, 139, 557, 513, 245, 301, 429,
817 404, 364, 417, 70, 91, 368, 368, 368, 70, 364,
818 91, 246, 364, 526, 661, 364, 139, 397, 397, 397,
819 546, 139, 300, 70, 404, 298, 302, 303, 302, 302,
820 302, 302, 302, 302, 274, 455, 139, 527, 305, 305,
821 305, 370, 275, 241, 241, 241, 241, 241, 241, 241,
822 241, 365, 365, 365, 365, 365, 365, 365, 365, 636,
823 430, 441, 441, 441, 658, 371, 274, 650, 405, 532,
824 276, 306, 276, 276, 307, 276, 276, 276, 342, 372,
825 405, 405, 460, 460, 460, 657, 343, 252, 252, 252,
826 252, 252, 252, 252, 252, 378, 378, 378, 378, 378,
828 378, 378, 378, 471, 471, 471, 518, 518, 518, 465,
829 342, 456, 456, 456, 344, 344, 344, 344, 344, 344,
830 344, 344, 356, 356, 236, 356, 356, 356, 356, 356,
831 563, 356, 356, 356, 356, 70, 356, 356, 467, 369,
832 422, 364, 564, 356, 356, 356, 356, 369, 139, 364,
833 369, 70, 364, 369, 369, 364, 364, 457, 245, 70,
834 414, 414, 414, 369, 139, 364, 461, 268, 356, 356,
835 356, 369, 139, 364, 369, 369, 364, 369, 70, 364,
836 462, 465, 655, 369, 654, 265, 369, 358, 649, 369,
837 369, 139, 356, 356, 113, 232, 232, 232, 233, 369,
839 113, 113, 113, 113, 113, 113, 134, 369, 113, 113,
840 369, 245, 134, 369, 648, 113, 113, 423, 113, 380,
841 380, 380, 544, 392, 544, 246, 385, 385, 385, 385,
842 385, 338, 338, 338, 338, 338, 338, 338, 338, 70,
843 113, 117, 302, 302, 302, 302, 302, 302, 302, 302,
844 431, 431, 139, 461, 331, 370, 647, 91, 70, 70,
845 646, 366, 331, 70, 113, 113, 371, 462, 414, 414,
846 414, 139, 139, 371, 77, 136, 139, 576, 91, 665,
847 372, 136, 70, 373, 473, 265, 79, 372, 643, 577,
848 409, 373, 81, 265, 373, 139, 70, 373, 373, 294,
850 294, 294, 294, 294, 294, 294, 294, 373, 582, 139,
851 374, 432, 432, 482, 70, 373, 70, 465, 373, 91,
852 91, 373, 342, 418, 418, 418, 268, 139, 642, 139,
853 343, 365, 365, 365, 365, 365, 365, 365, 365, 378,
854 378, 378, 378, 378, 378, 378, 378, 468, 184, 498,
855 441, 441, 441, 499, 342, 70, 635, 70, 344, 382,
856 344, 344, 383, 344, 344, 344, 398, 70, 139, 366,
857 139, 622, 679, 70, 399, 474, 418, 418, 418, 92,
858 139, 70, 70, 375, 70, 475, 139, 86, 634, 630,
859 397, 397, 397, 88, 139, 139, 469, 139, 398, 70,
861 491, 536, 400, 400, 400, 400, 400, 400, 400, 400,
862 356, 356, 139, 356, 356, 356, 356, 356, 357, 356,
863 356, 356, 356, 483, 356, 356, 298, 492, 91, 70,
864 134, 412, 356, 356, 356, 376, 184, 311, 397, 397,
865 397, 496, 139, 426, 426, 426, 426, 426, 344, 344,
866 344, 344, 344, 344, 344, 344, 356, 356, 356, 439,
867 439, 439, 439, 439, 439, 439, 439, 400, 400, 400,
868 400, 400, 400, 400, 400, 413, 134, 613, 464, 664,
869 356, 356, 70, 245, 417, 444, 464, 519, 539, 464,
870 70, 444, 464, 464, 70, 139, 70, 246, 629, 136,
872 297, 520, 464, 139, 70, 371, 91, 139, 297, 139,
873 464, 297, 467, 464, 297, 297, 464, 139, 134, 441,
874 441, 441, 464, 556, 297, 621, 620, 298, 485, 555,
875 464, 70, 297, 464, 70, 297, 464, 464, 297, 371,
876 481, 481, 481, 484, 139, 540, 464, 139, 70, 70,
877 467, 585, 486, 372, 464, 374, 415, 464, 265, 134,
878 464, 139, 139, 689, 415, 70, 70, 415, 619, 70,
879 415, 415, 468, 472, 472, 472, 472, 472, 139, 139,
880 415, 490, 139, 416, 456, 456, 456, 136, 415, 70,
881 201, 415, 202, 416, 415, 398, 615, 91, 203, 70,
883 615, 553, 139, 399, 439, 439, 439, 439, 439, 439,
884 439, 439, 139, 70, 550, 467, 70, 548, 567, 268,
885 549, 495, 481, 481, 481, 523, 139, 398, 136, 139,
886 457, 400, 420, 400, 400, 421, 400, 400, 400, 449,
887 449, 548, 449, 449, 449, 449, 449, 92, 449, 449,
888 449, 449, 70, 449, 449, 631, 651, 524, 416, 70,
889 449, 449, 449, 449, 70, 139, 525, 533, 533, 533,
890 468, 70, 139, 481, 481, 481, 614, 139, 70, 631,
891 524, 533, 533, 533, 139, 449, 449, 449, 184, 311,
892 70, 139, 451, 584, 612, 558, 558, 558, 558, 558,
894 544, 392, 544, 139, 451, 451, 613, 596, 693, 449,
895 449, 356, 356, 534, 356, 356, 356, 356, 356, 495,
896 356, 356, 356, 356, 552, 356, 356, 534, 535, 91,
897 566, 158, 356, 356, 356, 356, 535, 70, 566, 535,
898 70, 566, 535, 535, 566, 566, 611, 560, 70, 610,
899 139, 70, 535, 139, 566, 134, 134, 356, 356, 356,
900 535, 139, 566, 535, 139, 566, 535, 590, 566, 579,
901 579, 579, 579, 579, 607, 392, 631, 260, 589, 632,
902 664, 356, 356, 356, 356, 461, 356, 356, 356, 356,
903 356, 639, 356, 356, 356, 356, 587, 356, 356, 70,
905 631, 70, 535, 633, 356, 356, 356, 356, 588, 670,
906 535, 519, 139, 535, 139, 640, 535, 535, 91, 693,
907 604, 671, 134, 603, 136, 136, 535, 602, 566, 356,
908 356, 356, 134, 609, 535, 644, 566, 535, 577, 566,
909 535, 631, 566, 566, 70, 588, 579, 579, 579, 579,
910 579, 134, 566, 356, 356, 461, 607, 139, 70, 645,
911 566, 638, 628, 566, 392, 631, 566, 184, 498, 462,
912 601, 139, 463, 685, 558, 558, 558, 558, 558, 134,
913 463, 134, 673, 463, 631, 631, 463, 463, 260, 631,
914 641, 136, 656, 653, 631, 134, 463, 631, 392, 659,
916 392, 540, 608, 627, 463, 392, 669, 463, 631, 631,
917 463, 371, 392, 631, 660, 134, 601, 653, 631, 673,
918 136, 631, 600, 666, 599, 372, 682, 653, 373, 653,
919 631, 598, 686, 134, 653, 693, 373, 597, 569, 373,
920 392, 653, 373, 373, 687, 569, 680, 667, 136, 567,
921 136, 653, 373, 653, 631, 374, 392, 392, 653, 596,
922 373, 564, 595, 373, 136, 653, 373, 449, 449, 653,
923 449, 449, 449, 449, 449, 450, 449, 449, 449, 449,
924 594, 449, 449, 134, 136, 653, 653, 593, 488, 449,
925 449, 449, 592, 653, 690, 693, 591, 693, 681, 392,
927 693, 693, 136, 392, 708, 693, 694, 686, 695, 653,
928 653, 696, 697, 449, 449, 449, 698, 392, 581, 693,
929 489, 580, 262, 693, 693, 693, 537, 536, 578, 575,
930 699, 574, 489, 489, 700, 701, 702, 449, 449, 356,
931 356, 573, 356, 356, 356, 356, 356, 357, 356, 356,
932 356, 356, 136, 356, 356, 572, 571, 570, 569, 105,
933 412, 356, 356, 356, 260, 567, 260, 693, 693, 260,
934 260, 693, 693, 693, 260, 565, 562, 561, 703, 704,
935 560, 559, 705, 706, 707, 356, 356, 356, 260, 511,
936 511, 509, 260, 260, 260, 509, 507, 507, 505, 505,
938 503, 503, 501, 501, 392, 551, 542, 541, 205, 356,
939 356, 356, 356, 198, 356, 356, 356, 356, 356, 357,
940 356, 356, 356, 356, 466, 356, 356, 538, 465, 536,
941 459, 92, 412, 356, 356, 356, 260, 260, 531, 530,
942 260, 260, 260, 529, 528, 444, 92, 517, 516, 515,
943 514, 434, 511, 509, 507, 505, 503, 356, 356, 356,
944 501, 187, 497, 493, 392, 477, 476, 74, 199, 470,
945 370, 366, 459, 454, 453, 452, 199, 443, 442, 438,
946 437, 356, 356, 70, 461, 436, 435, 205, 205, 199,
947 198, 198, 198, 320, 320, 318, 139, 318, 462, 187,
949 424, 494, 264, 392, 264, 384, 366, 355, 354, 494,
950 353, 352, 494, 351, 347, 494, 494, 346, 345, 335,
951 334, 333, 332, 329, 329, 494, 328, 327, 326, 325,
952 325, 324, 323, 494, 322, 321, 494, 320, 318, 494,
953 371, 311, 310, 265, 264, 262, 260, 199, 259, 117,
954 230, 229, 228, 199, 372, 225, 224, 415, 223, 222,
955 222, 221, 220, 219, 91, 415, 205, 204, 415, 198,
956 199, 415, 415, 198, 192, 184, 182, 137, 110, 105,
957 104, 415, 101, 100, 416, 91, 74, 710, 710, 415,
958 710, 710, 415, 710, 710, 415, 519, 710, 710, 710,
960 710, 710, 710, 710, 710, 710, 710, 710, 710, 710,
961 520, 710, 710, 521, 710, 710, 710, 710, 710, 710,
962 710, 521, 710, 710, 521, 710, 710, 521, 521, 710,
963 710, 710, 710, 710, 710, 710, 710, 521, 710, 710,
964 710, 710, 710, 710, 710, 521, 710, 710, 521, 710,
965 710, 521, 449, 449, 710, 449, 449, 449, 449, 449,
966 710, 449, 449, 449, 449, 710, 449, 449, 710, 710,
967 710, 710, 710, 449, 449, 449, 449, 710, 710, 710,
968 710, 710, 710, 710, 710, 710, 710, 710, 710, 710,
969 710, 710, 710, 710, 710, 710, 710, 710, 449, 449,
971 449, 710, 710, 710, 710, 710, 710, 710, 710, 710,
972 710, 710, 710, 710, 710, 710, 710, 710, 710, 710,
973 710, 710, 449, 449, 449, 449, 710, 449, 449, 449,
974 449, 449, 710, 449, 449, 449, 449, 710, 449, 449,
975 710, 710, 710, 710, 710, 449, 449, 449, 449, 710,
976 710, 710, 710, 710, 710, 710, 710, 710, 710, 710,
977 710, 710, 710, 710, 710, 710, 710, 710, 710, 710,
978 449, 449, 449, 710, 710, 710, 710, 451, 710, 710,
979 710, 710, 710, 710, 710, 710, 710, 710, 710, 451,
980 451, 710, 710, 710, 449, 449, 519, 710, 710, 710,
982 710, 710, 710, 710, 710, 710, 710, 710, 710, 710,
983 520, 710, 710, 547, 710, 710, 710, 710, 710, 710,
984 710, 547, 710, 710, 547, 710, 710, 547, 547, 710,
985 710, 710, 710, 710, 710, 710, 710, 547, 710, 710,
986 710, 710, 710, 710, 710, 547, 710, 710, 547, 710,
987 710, 547, 449, 449, 710, 449, 449, 449, 449, 449,
988 450, 449, 449, 449, 449, 710, 449, 449, 710, 710,
989 710, 710, 710, 488, 449, 449, 449, 710, 710, 710,
990 710, 710, 710, 710, 710, 710, 710, 710, 710, 710,
991 710, 710, 710, 710, 710, 710, 710, 710, 449, 449,
993 449, 710, 710, 710, 710, 710, 710, 710, 710, 710,
994 710, 710, 710, 710, 710, 710, 710, 710, 710, 710,
995 710, 710, 449, 449, 449, 449, 710, 449, 449, 449,
996 449, 449, 450, 449, 449, 449, 449, 710, 449, 449,
997 710, 710, 710, 710, 710, 488, 449, 449, 449, 710,
998 710, 710, 710, 710, 710, 710, 710, 710, 710, 710,
999 710, 710, 710, 710, 710, 710, 710, 710, 710, 710,
1000 449, 449, 449, 710, 710, 710, 710, 489, 710, 710,
1001 710, 710, 710, 710, 710, 710, 710, 710, 710, 489,
1002 489, 710, 710, 710, 449, 449, 616, 616, 710, 616,
1004 616, 616, 616, 616, 710, 616, 616, 616, 616, 710,
1005 616, 616, 710, 710, 710, 710, 710, 616, 616, 616,
1006 616, 710, 710, 710, 710, 710, 710, 618, 710, 710,
1007 710, 710, 710, 710, 710, 710, 710, 710, 710, 710,
1008 710, 710, 616, 616, 616, 710, 710, 710, 710, 710,
1009 710, 618, 710, 710, 710, 710, 710, 710, 710, 710,
1010 710, 710, 710, 710, 710, 710, 616, 616, 616, 616,
1011 710, 616, 616, 616, 616, 616, 617, 616, 616, 616,
1012 616, 710, 616, 616, 710, 710, 710, 710, 710, 625,
1013 616, 616, 616, 710, 710, 710, 710, 710, 710, 626,
1015 710, 710, 710, 710, 710, 710, 710, 710, 710, 710,
1016 710, 710, 710, 710, 616, 616, 616, 710, 710, 710,
1017 710, 710, 710, 626, 710, 710, 710, 710, 710, 710,
1018 710, 710, 710, 710, 710, 710, 710, 710, 616, 616,
1019 616, 616, 710, 616, 616, 616, 616, 616, 710, 616,
1020 616, 616, 616, 710, 616, 616, 710, 710, 710, 710,
1021 710, 616, 616, 616, 616, 710, 710, 710, 710, 710,
1022 710, 618, 710, 710, 710, 710, 710, 710, 710, 710,
1023 710, 710, 710, 710, 710, 710, 616, 616, 616, 710,
1024 710, 710, 710, 710, 710, 618, 710, 710, 710, 710,
1026 710, 710, 710, 710, 710, 710, 710, 710, 710, 710,
1027 616, 616, 616, 616, 710, 616, 616, 616, 616, 616,
1028 617, 616, 616, 616, 616, 710, 616, 616, 710, 710,
1029 710, 710, 710, 625, 616, 616, 616, 710, 710, 710,
1030 710, 710, 710, 626, 710, 710, 710, 710, 710, 710,
1031 710, 710, 710, 710, 710, 710, 710, 710, 616, 616,
1032 616, 710, 710, 710, 710, 710, 710, 626, 710, 710,
1033 710, 710, 710, 710, 710, 710, 710, 710, 710, 710,
1034 710, 710, 616, 616, 70, 710, 710, 70, 70, 710,
1035 710, 70, 70, 70, 70, 70, 71, 71, 71, 71,
1037 71, 710, 71, 71, 71, 71, 71, 71, 71, 71,
1038 71, 90, 90, 90, 90, 90, 90, 90, 90, 90,
1039 90, 90, 90, 90, 90, 90, 116, 116, 116, 116,
1040 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
1041 116, 133, 133, 133, 133, 133, 133, 133, 133, 133,
1042 133, 133, 133, 133, 133, 133, 138, 710, 710, 138,
1043 138, 138, 710, 138, 138, 138, 138, 138, 183, 183,
1044 183, 183, 183, 710, 183, 183, 183, 183, 183, 183,
1045 183, 183, 183, 185, 185, 185, 185, 185, 185, 185,
1046 185, 185, 185, 185, 185, 185, 185, 185, 200, 200,
1048 710, 710, 710, 710, 710, 710, 710, 200, 200, 200,
1049 200, 200, 113, 113, 113, 113, 113, 113, 113, 113,
1050 113, 113, 113, 113, 113, 113, 113, 234, 234, 234,
1051 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
1052 234, 234, 134, 134, 134, 134, 134, 134, 134, 134,
1053 134, 134, 134, 134, 134, 134, 134, 263, 263, 263,
1054 263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
1055 263, 263, 270, 270, 270, 270, 270, 270, 270, 270,
1056 270, 270, 270, 270, 270, 270, 270, 185, 185, 185,
1057 185, 185, 185, 185, 185, 185, 185, 185, 185, 185,
1059 185, 185, 186, 186, 186, 186, 186, 186, 186, 186,
1060 186, 186, 186, 186, 186, 186, 186, 313, 313, 313,
1061 313, 313, 313, 313, 313, 313, 313, 313, 313, 313,
1062 313, 313, 317, 317, 710, 317, 317, 317, 317, 317,
1063 317, 317, 317, 317, 317, 317, 317, 319, 319, 710,
1064 319, 319, 319, 319, 319, 319, 319, 319, 319, 319,
1065 319, 319, 357, 357, 710, 357, 357, 357, 357, 357,
1066 357, 357, 357, 357, 357, 357, 357, 359, 359, 359,
1067 359, 359, 359, 359, 359, 359, 359, 359, 359, 359,
1068 359, 359, 113, 113, 113, 113, 113, 113, 113, 113,
1070 113, 113, 113, 113, 113, 113, 113, 361, 361, 361,
1071 361, 361, 361, 361, 361, 361, 361, 361, 361, 361,
1072 361, 361, 234, 234, 234, 234, 234, 234, 234, 234,
1073 234, 234, 234, 234, 234, 234, 234, 369, 710, 710,
1074 369, 710, 369, 369, 710, 710, 369, 369, 263, 263,
1075 263, 263, 263, 263, 263, 263, 263, 263, 263, 263,
1076 263, 263, 263, 391, 391, 391, 391, 391, 391, 391,
1077 391, 391, 391, 391, 391, 391, 391, 391, 270, 270,
1078 270, 270, 270, 270, 270, 270, 270, 270, 270, 270,
1079 270, 270, 270, 90, 90, 90, 90, 90, 90, 90,
1081 90, 90, 90, 90, 90, 90, 90, 90, 411, 411,
1082 710, 411, 411, 411, 411, 411, 411, 411, 411, 411,
1083 411, 411, 411, 313, 313, 313, 313, 313, 313, 313,
1084 313, 313, 313, 313, 313, 313, 313, 313, 425, 425,
1085 425, 425, 710, 425, 425, 425, 425, 425, 425, 425,
1086 425, 425, 425, 183, 183, 183, 183, 183, 183, 183,
1087 183, 183, 183, 183, 183, 183, 183, 183, 317, 317,
1088 710, 317, 317, 317, 317, 317, 317, 317, 317, 317,
1089 317, 317, 317, 319, 319, 710, 319, 319, 319, 319,
1090 319, 319, 319, 319, 319, 319, 319, 319, 439, 710,
1092 439, 710, 710, 710, 439, 439, 439, 450, 450, 710,
1093 450, 450, 450, 450, 450, 450, 450, 450, 450, 450,
1094 450, 450, 356, 356, 710, 356, 356, 356, 356, 356,
1095 356, 356, 356, 356, 356, 356, 356, 357, 357, 710,
1096 357, 357, 357, 357, 357, 357, 357, 357, 357, 357,
1097 357, 357, 359, 359, 359, 359, 359, 359, 359, 359,
1098 359, 359, 359, 359, 359, 359, 359, 361, 361, 361,
1099 361, 361, 361, 361, 361, 361, 361, 361, 361, 361,
1100 361, 361, 113, 113, 113, 113, 113, 113, 113, 113,
1101 113, 113, 113, 113, 113, 113, 113, 458, 458, 458,
1103 458, 458, 458, 458, 458, 458, 458, 458, 458, 458,
1104 458, 458, 464, 710, 710, 710, 710, 464, 464, 710,
1105 710, 464, 464, 391, 391, 391, 391, 391, 391, 391,
1106 391, 391, 391, 391, 391, 391, 391, 391, 90, 90,
1107 90, 90, 90, 90, 90, 90, 90, 90, 90, 90,
1108 90, 90, 90, 487, 487, 710, 487, 487, 487, 487,
1109 487, 487, 487, 487, 487, 487, 487, 487, 411, 411,
1110 710, 411, 411, 411, 411, 411, 411, 411, 411, 411,
1111 411, 411, 411, 425, 425, 425, 425, 710, 425, 425,
1112 425, 425, 425, 425, 425, 425, 425, 425, 183, 183,
1114 183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
1115 183, 183, 183, 500, 500, 710, 500, 500, 500, 500,
1116 500, 500, 500, 500, 500, 500, 500, 500, 502, 502,
1117 710, 502, 502, 502, 502, 502, 502, 502, 502, 502,
1118 502, 502, 502, 504, 504, 710, 504, 504, 504, 504,
1119 504, 504, 504, 504, 504, 504, 504, 504, 506, 506,
1120 710, 506, 506, 506, 506, 506, 506, 506, 506, 506,
1121 506, 506, 506, 508, 508, 710, 508, 508, 508, 508,
1122 508, 508, 508, 508, 508, 508, 508, 508, 510, 510,
1123 710, 510, 510, 510, 510, 510, 510, 510, 510, 510,
1125 510, 510, 510, 449, 449, 710, 449, 449, 449, 449,
1126 449, 449, 449, 449, 449, 449, 449, 449, 450, 450,
1127 710, 450, 450, 450, 450, 450, 450, 450, 450, 450,
1128 450, 450, 450, 359, 359, 359, 359, 359, 359, 359,
1129 359, 359, 359, 359, 359, 359, 359, 359, 113, 113,
1130 113, 113, 113, 113, 113, 113, 113, 113, 113, 113,
1131 113, 113, 113, 458, 458, 458, 458, 458, 458, 458,
1132 458, 458, 458, 458, 458, 458, 458, 458, 535, 710,
1133 710, 710, 710, 535, 535, 710, 710, 535, 543, 543,
1134 543, 543, 543, 543, 543, 543, 543, 543, 543, 543,
1136 543, 543, 543, 90, 90, 90, 90, 90, 90, 90,
1137 90, 90, 90, 90, 90, 90, 90, 90, 487, 487,
1138 710, 487, 487, 487, 487, 487, 487, 487, 487, 487,
1139 487, 487, 487, 554, 554, 554, 554, 554, 554, 554,
1140 554, 554, 554, 554, 554, 554, 554, 554, 566, 710,
1141 710, 710, 710, 566, 566, 710, 710, 566, 568, 568,
1142 710, 568, 568, 568, 568, 568, 568, 568, 568, 568,
1143 568, 568, 568, 586, 586, 586, 586, 586, 586, 586,
1144 586, 586, 586, 586, 586, 586, 586, 586, 617, 617,
1145 710, 617, 617, 617, 617, 617, 617, 617, 617, 617,
1147 617, 617, 617, 624, 624, 710, 624, 624, 624, 624,
1148 624, 624, 624, 624, 624, 624, 624, 624, 616, 616,
1149 710, 616, 616, 616, 616, 616, 616, 616, 616, 616,
1150 616, 616, 616, 652, 652, 652, 652, 652, 652, 652,
1151 652, 652, 652, 652, 652, 652, 652, 652, 674, 674,
1152 674, 674, 674, 674, 674, 674, 674, 674, 674, 674,
1153 674, 674, 674, 677, 677, 677, 677, 677, 677, 677,
1154 677, 677, 677, 677, 677, 677, 677, 677, 692, 692,
1155 692, 692, 692, 692, 692, 692, 692, 692, 692, 692,
1156 692, 692, 692, 3, 710, 710, 710, 710, 710, 710,
1158 710, 710, 710, 710, 710, 710, 710, 710, 710, 710,
1159 710, 710, 710, 710, 710, 710, 710, 710, 710, 710,
1160 710, 710, 710, 710, 710, 710, 710, 710, 710, 710,
1161 710, 710, 710, 710, 710, 710, 710, 710, 710, 710,
1162 710, 710, 710, 710, 710, 710, 710, 710, 710, 710,
1163 710, 710, 710, 710, 710, 710, 710, 710, 710, 710,
1164 710, 710, 710, 710, 710, 710
1167 static yyconst short int yy_chk[4467] =
1169 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1170 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1171 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1172 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1173 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1174 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1175 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1176 1, 1, 2, 2, 2, 2, 2, 2, 2, 2,
1177 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1178 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1180 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1181 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1182 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1183 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1184 2, 2, 2, 2, 5, 6, 6, 6, 6, 6,
1185 8, 10, 10, 11, 18, 23, 708, 8, 8, 8,
1186 8, 8, 19, 11, 34, 11, 11, 34, 5, 34,
1187 36, 11, 12, 12, 12, 36, 233, 31, 18, 12,
1188 23, 31, 40, 19, 12, 12, 12, 12, 12, 12,
1189 12, 12, 12, 22, 25, 40, 12, 12, 12, 12,
1191 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
1192 12, 12, 12, 12, 12, 12, 12, 37, 19, 233,
1193 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
1194 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
1195 12, 13, 27, 33, 25, 33, 264, 33, 24, 22,
1196 25, 13, 46, 13, 264, 32, 32, 24, 32, 13,
1197 15, 43, 44, 44, 51, 46, 37, 72, 72, 32,
1198 15, 43, 15, 43, 15, 15, 15, 51, 15, 43,
1199 35, 15, 24, 24, 24, 24, 24, 24, 24, 24,
1200 47, 74, 688, 35, 60, 27, 27, 35, 60, 35,
1202 46, 27, 15, 47, 35, 51, 15, 15, 15, 15,
1203 15, 15, 15, 15, 49, 52, 15, 28, 28, 28,
1204 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1205 28, 28, 28, 38, 55, 49, 78, 78, 28, 28,
1206 28, 28, 50, 82, 82, 82, 47, 38, 38, 38,
1207 38, 38, 74, 65, 48, 50, 41, 57, 65, 56,
1208 583, 41, 57, 28, 28, 28, 41, 48, 41, 41,
1209 49, 52, 56, 53, 41, 57, 684, 62, 53, 62,
1210 86, 62, 86, 48, 55, 115, 53, 28, 28, 29,
1211 55, 138, 133, 29, 29, 29, 50, 29, 61, 61,
1213 66, 61, 38, 53, 138, 66, 77, 48, 77, 145,
1214 57, 57, 61, 66, 77, 63, 57, 56, 63, 115,
1215 63, 29, 145, 64, 583, 29, 29, 29, 29, 29,
1216 29, 29, 29, 30, 147, 147, 64, 30, 30, 30,
1217 64, 30, 64, 83, 83, 83, 206, 64, 69, 69,
1218 69, 69, 69, 683, 66, 83, 206, 83, 85, 85,
1219 85, 133, 677, 83, 206, 30, 98, 98, 98, 30,
1220 30, 30, 30, 30, 30, 30, 30, 42, 42, 42,
1221 108, 108, 108, 676, 42, 122, 122, 122, 674, 42,
1222 42, 42, 42, 42, 42, 42, 42, 42, 129, 129,
1224 129, 42, 42, 42, 42, 42, 42, 42, 42, 42,
1225 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
1226 42, 42, 151, 151, 151, 42, 42, 42, 42, 42,
1227 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
1228 42, 42, 42, 42, 42, 42, 45, 183, 183, 142,
1229 546, 45, 184, 184, 67, 327, 45, 327, 45, 672,
1230 45, 45, 45, 142, 45, 67, 73, 45, 67, 67,
1231 67, 67, 67, 73, 73, 73, 73, 73, 73, 93,
1232 93, 93, 93, 93, 93, 93, 93, 146, 45, 109,
1233 109, 109, 45, 45, 45, 45, 45, 45, 45, 45,
1235 146, 141, 45, 54, 92, 546, 92, 213, 87, 141,
1236 54, 159, 92, 331, 141, 213, 54, 92, 87, 54,
1237 87, 185, 185, 67, 159, 140, 87, 331, 92, 155,
1238 92, 187, 187, 140, 140, 670, 92, 109, 140, 213,
1239 92, 159, 155, 248, 54, 54, 54, 54, 54, 54,
1240 54, 54, 58, 606, 130, 130, 130, 58, 177, 177,
1241 177, 58, 58, 58, 155, 58, 94, 94, 94, 94,
1242 94, 94, 94, 94, 96, 96, 96, 96, 96, 96,
1243 96, 96, 162, 162, 162, 211, 211, 211, 247, 58,
1244 130, 152, 248, 58, 58, 58, 58, 58, 58, 58,
1246 58, 59, 231, 370, 152, 59, 59, 59, 606, 59,
1247 97, 97, 97, 97, 97, 97, 97, 97, 118, 118,
1248 118, 118, 118, 118, 118, 118, 212, 212, 212, 374,
1249 162, 247, 152, 59, 153, 154, 231, 59, 59, 59,
1250 59, 59, 59, 59, 59, 95, 359, 153, 154, 215,
1251 215, 215, 370, 95, 120, 120, 120, 120, 120, 120,
1252 120, 120, 121, 121, 121, 121, 121, 121, 121, 121,
1253 216, 216, 216, 217, 217, 217, 154, 95, 374, 153,
1254 359, 95, 95, 95, 95, 95, 95, 95, 95, 114,
1255 114, 114, 114, 114, 114, 114, 114, 114, 114, 114,
1257 114, 114, 114, 114, 114, 664, 222, 235, 235, 235,
1258 114, 114, 114, 114, 124, 124, 124, 124, 124, 124,
1259 124, 124, 126, 126, 126, 126, 126, 126, 126, 126,
1260 222, 690, 135, 270, 270, 114, 114, 114, 127, 127,
1261 127, 127, 127, 127, 127, 127, 135, 135, 135, 135,
1262 135, 135, 312, 312, 222, 241, 241, 241, 663, 114,
1263 114, 116, 116, 116, 116, 116, 143, 116, 116, 116,
1264 116, 116, 116, 148, 143, 116, 116, 144, 157, 143,
1265 156, 160, 116, 116, 158, 116, 148, 144, 347, 144,
1266 165, 157, 164, 156, 160, 144, 395, 158, 181, 163,
1268 690, 135, 274, 165, 662, 164, 348, 116, 116, 181,
1269 274, 160, 163, 161, 148, 148, 148, 148, 148, 148,
1270 148, 148, 161, 161, 161, 598, 161, 249, 249, 249,
1271 348, 116, 116, 119, 274, 157, 179, 119, 180, 156,
1272 163, 164, 158, 165, 170, 119, 347, 119, 598, 179,
1273 119, 180, 337, 170, 170, 170, 395, 170, 119, 223,
1274 337, 119, 360, 267, 119, 119, 465, 181, 267, 119,
1275 268, 223, 223, 119, 119, 119, 119, 119, 119, 119,
1276 119, 267, 119, 268, 337, 119, 242, 658, 119, 123,
1277 179, 178, 180, 242, 242, 242, 360, 123, 123, 123,
1279 178, 178, 178, 123, 178, 394, 123, 262, 150, 252,
1280 252, 252, 262, 262, 123, 465, 168, 123, 280, 325,
1281 123, 123, 166, 166, 166, 166, 166, 166, 166, 166,
1282 123, 280, 479, 123, 313, 313, 178, 655, 123, 188,
1283 188, 123, 582, 582, 123, 125, 188, 188, 188, 188,
1284 188, 188, 394, 125, 150, 150, 150, 150, 150, 150,
1285 150, 150, 168, 168, 168, 168, 168, 168, 168, 168,
1286 232, 232, 232, 232, 255, 255, 255, 125, 280, 288,
1287 325, 125, 125, 125, 125, 125, 125, 125, 125, 128,
1288 479, 654, 288, 128, 128, 128, 174, 128, 169, 169,
1290 169, 169, 169, 169, 169, 169, 172, 172, 172, 172,
1291 172, 172, 172, 172, 258, 253, 232, 258, 258, 258,
1292 649, 128, 253, 253, 253, 128, 128, 128, 128, 128,
1293 128, 128, 128, 149, 272, 361, 648, 288, 299, 299,
1294 299, 149, 174, 174, 174, 174, 174, 174, 174, 174,
1295 175, 175, 175, 175, 175, 175, 175, 175, 304, 304,
1296 304, 269, 349, 258, 369, 149, 269, 373, 647, 149,
1297 149, 149, 149, 149, 149, 149, 149, 167, 361, 269,
1298 266, 167, 443, 283, 278, 266, 349, 272, 392, 167,
1299 392, 167, 257, 266, 167, 272, 283, 278, 284, 257,
1301 257, 257, 167, 284, 623, 167, 443, 369, 167, 167,
1302 373, 284, 286, 167, 338, 338, 338, 167, 167, 167,
1303 167, 167, 167, 167, 167, 286, 167, 278, 283, 167,
1304 189, 189, 167, 171, 171, 257, 279, 189, 189, 189,
1305 189, 189, 171, 171, 171, 273, 171, 298, 171, 279,
1306 293, 171, 293, 298, 273, 273, 273, 480, 273, 171,
1307 298, 286, 171, 293, 623, 171, 171, 214, 214, 214,
1308 214, 214, 214, 214, 214, 171, 281, 236, 171, 279,
1309 297, 281, 297, 171, 434, 236, 171, 497, 236, 171,
1310 173, 236, 236, 297, 281, 497, 434, 243, 173, 329,
1312 281, 236, 298, 396, 622, 243, 243, 243, 276, 236,
1313 636, 243, 236, 446, 646, 236, 396, 276, 276, 276,
1314 480, 276, 173, 282, 281, 297, 173, 173, 173, 173,
1315 173, 173, 173, 173, 176, 455, 282, 446, 176, 176,
1316 176, 243, 176, 237, 237, 237, 237, 237, 237, 237,
1317 237, 238, 238, 238, 238, 238, 238, 238, 238, 622,
1318 329, 344, 344, 344, 643, 368, 176, 636, 282, 455,
1319 176, 176, 176, 176, 176, 176, 176, 176, 218, 368,
1320 282, 282, 365, 365, 365, 642, 218, 250, 250, 250,
1321 250, 250, 250, 250, 250, 251, 251, 251, 251, 251,
1323 251, 251, 251, 378, 378, 378, 439, 439, 439, 368,
1324 218, 362, 362, 362, 218, 218, 218, 218, 218, 218,
1325 218, 218, 230, 230, 239, 230, 230, 230, 230, 230,
1326 516, 230, 230, 230, 230, 308, 230, 230, 464, 245,
1327 308, 239, 516, 230, 230, 230, 230, 245, 308, 239,
1328 245, 294, 239, 245, 245, 239, 239, 362, 246, 393,
1329 294, 294, 294, 245, 294, 239, 460, 393, 230, 230,
1330 230, 245, 393, 239, 245, 246, 239, 245, 397, 239,
1331 460, 464, 640, 246, 639, 275, 246, 230, 635, 246,
1332 246, 397, 230, 230, 234, 234, 234, 234, 234, 246,
1334 234, 234, 234, 234, 234, 234, 309, 246, 234, 234,
1335 246, 254, 261, 246, 634, 234, 234, 309, 234, 254,
1336 254, 254, 478, 478, 478, 254, 261, 261, 261, 261,
1337 261, 275, 275, 275, 275, 275, 275, 275, 275, 287,
1338 234, 234, 300, 300, 300, 300, 300, 300, 300, 300,
1339 330, 593, 287, 471, 330, 254, 633, 545, 291, 295,
1340 632, 295, 330, 401, 234, 234, 244, 471, 295, 295,
1341 295, 291, 295, 380, 387, 309, 401, 530, 651, 651,
1342 244, 261, 406, 244, 387, 292, 387, 380, 630, 530,
1343 287, 244, 387, 301, 244, 406, 407, 244, 244, 291,
1345 291, 291, 291, 291, 291, 291, 291, 244, 545, 407,
1346 244, 330, 593, 401, 302, 244, 417, 380, 244, 605,
1347 665, 244, 256, 302, 302, 302, 407, 302, 629, 417,
1348 256, 292, 292, 292, 292, 292, 292, 292, 292, 301,
1349 301, 301, 301, 301, 301, 301, 301, 383, 426, 426,
1350 383, 383, 383, 426, 256, 409, 621, 495, 256, 256,
1351 256, 256, 256, 256, 256, 256, 277, 303, 409, 303,
1352 495, 605, 665, 402, 277, 388, 303, 303, 303, 482,
1353 303, 306, 410, 306, 482, 388, 402, 388, 620, 614,
1354 306, 306, 306, 388, 306, 410, 383, 482, 277, 494,
1356 409, 494, 277, 277, 277, 277, 277, 277, 277, 277,
1357 289, 289, 494, 289, 289, 289, 289, 289, 289, 289,
1358 289, 289, 289, 402, 289, 289, 306, 410, 650, 307,
1359 423, 289, 289, 289, 289, 307, 316, 316, 307, 307,
1360 307, 423, 307, 316, 316, 316, 316, 316, 342, 342,
1361 342, 342, 342, 342, 342, 342, 289, 289, 289, 343,
1362 343, 343, 343, 343, 343, 343, 343, 398, 398, 398,
1363 398, 398, 398, 398, 398, 289, 472, 612, 371, 650,
1364 289, 289, 290, 290, 307, 403, 371, 518, 472, 371,
1365 403, 484, 371, 371, 550, 290, 484, 290, 611, 423,
1367 290, 518, 371, 403, 404, 372, 685, 550, 290, 484,
1368 371, 290, 382, 371, 290, 290, 371, 404, 496, 382,
1369 382, 382, 372, 610, 290, 604, 603, 290, 404, 496,
1370 372, 400, 290, 372, 408, 290, 372, 372, 290, 296,
1371 400, 400, 400, 403, 400, 472, 372, 408, 415, 491,
1372 415, 550, 404, 296, 372, 382, 296, 372, 399, 385,
1373 372, 415, 491, 685, 296, 422, 416, 296, 602, 486,
1374 296, 296, 416, 385, 385, 385, 385, 385, 422, 416,
1375 296, 408, 486, 296, 456, 456, 456, 496, 296, 483,
1376 474, 296, 474, 415, 296, 305, 600, 637, 474, 485,
1378 599, 491, 483, 305, 399, 399, 399, 399, 399, 399,
1379 399, 399, 485, 420, 486, 420, 547, 483, 547, 422,
1380 485, 416, 420, 420, 420, 444, 420, 305, 385, 547,
1381 456, 305, 305, 305, 305, 305, 305, 305, 305, 350,
1382 350, 483, 350, 350, 350, 350, 350, 492, 350, 350,
1383 350, 350, 492, 350, 350, 615, 637, 444, 420, 549,
1384 350, 350, 350, 350, 421, 492, 444, 459, 459, 459,
1385 421, 490, 549, 421, 421, 421, 597, 421, 588, 615,
1386 444, 533, 533, 533, 490, 350, 350, 350, 499, 499,
1387 548, 588, 350, 549, 596, 499, 499, 499, 499, 499,
1389 544, 544, 544, 548, 350, 350, 596, 595, 691, 350,
1390 350, 357, 357, 459, 357, 357, 357, 357, 357, 421,
1391 357, 357, 357, 357, 490, 357, 357, 533, 461, 689,
1392 519, 548, 357, 357, 357, 357, 461, 553, 519, 461,
1393 584, 519, 461, 461, 519, 519, 594, 592, 627, 591,
1394 553, 552, 461, 584, 519, 539, 555, 357, 357, 357,
1395 461, 627, 519, 461, 552, 519, 461, 555, 519, 539,
1396 539, 539, 539, 539, 584, 586, 616, 691, 553, 618,
1397 689, 357, 357, 358, 358, 462, 358, 358, 358, 358,
1398 358, 626, 358, 358, 358, 358, 552, 358, 358, 585,
1400 616, 587, 462, 618, 358, 358, 358, 358, 552, 657,
1401 462, 520, 585, 462, 587, 626, 462, 462, 679, 692,
1402 581, 657, 590, 580, 539, 555, 462, 578, 520, 358,
1403 358, 358, 579, 590, 462, 631, 520, 462, 576, 520,
1404 462, 631, 520, 520, 589, 587, 579, 579, 579, 579,
1405 579, 609, 520, 358, 358, 367, 585, 589, 608, 631,
1406 520, 625, 609, 520, 638, 631, 520, 558, 558, 367,
1407 575, 608, 367, 679, 558, 558, 558, 558, 558, 628,
1408 367, 641, 659, 367, 659, 645, 367, 367, 692, 625,
1409 628, 590, 641, 638, 644, 656, 367, 660, 652, 644,
1411 653, 579, 589, 608, 367, 680, 656, 367, 659, 645,
1412 367, 381, 666, 625, 645, 669, 574, 638, 644, 660,
1413 609, 660, 573, 653, 572, 381, 669, 652, 381, 653,
1414 673, 571, 680, 682, 680, 707, 381, 570, 569, 381,
1415 667, 666, 381, 381, 682, 568, 666, 653, 628, 566,
1416 641, 652, 381, 653, 673, 381, 681, 686, 680, 565,
1417 381, 563, 562, 381, 656, 666, 381, 405, 405, 667,
1418 405, 405, 405, 405, 405, 405, 405, 405, 405, 405,
1419 561, 405, 405, 687, 669, 681, 686, 560, 405, 405,
1420 405, 405, 559, 667, 687, 693, 557, 694, 667, 554,
1422 695, 696, 682, 551, 707, 697, 693, 681, 694, 681,
1423 686, 695, 696, 405, 405, 405, 697, 543, 542, 698,
1424 405, 541, 540, 699, 700, 701, 538, 535, 531, 529,
1425 698, 528, 405, 405, 699, 700, 701, 405, 405, 411,
1426 411, 527, 411, 411, 411, 411, 411, 411, 411, 411,
1427 411, 411, 687, 411, 411, 526, 525, 524, 523, 522,
1428 411, 411, 411, 411, 693, 521, 694, 702, 703, 695,
1429 696, 704, 705, 706, 697, 517, 515, 514, 702, 703,
1430 513, 512, 704, 705, 706, 411, 411, 411, 698, 511,
1431 510, 509, 699, 700, 701, 508, 507, 506, 505, 504,
1433 503, 502, 501, 500, 493, 488, 477, 476, 475, 411,
1434 411, 413, 413, 473, 413, 413, 413, 413, 413, 413,
1435 413, 413, 413, 413, 470, 413, 413, 468, 467, 463,
1436 458, 454, 413, 413, 413, 413, 702, 703, 453, 452,
1437 704, 705, 706, 448, 447, 445, 442, 438, 437, 436,
1438 435, 433, 432, 431, 430, 429, 428, 413, 413, 413,
1439 427, 425, 424, 412, 391, 390, 389, 386, 384, 376,
1440 375, 364, 363, 355, 354, 353, 352, 346, 345, 335,
1441 334, 413, 413, 414, 414, 333, 332, 328, 326, 324,
1442 323, 322, 321, 320, 319, 318, 414, 317, 414, 314,
1444 310, 414, 271, 265, 263, 259, 240, 229, 228, 414,
1445 227, 225, 414, 224, 221, 414, 414, 220, 219, 210,
1446 209, 208, 207, 205, 204, 414, 203, 202, 201, 198,
1447 197, 196, 195, 414, 194, 193, 414, 191, 190, 414,
1448 419, 186, 182, 139, 137, 136, 134, 132, 131, 113,
1449 112, 111, 110, 107, 419, 106, 105, 419, 104, 103,
1450 102, 101, 100, 99, 90, 419, 88, 84, 419, 81,
1451 80, 419, 419, 79, 76, 71, 68, 39, 26, 21,
1452 20, 419, 17, 16, 419, 14, 9, 3, 0, 419,
1453 0, 0, 419, 0, 0, 419, 441, 0, 0, 0,
1455 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1456 441, 0, 0, 441, 0, 0, 0, 0, 0, 0,
1457 0, 441, 0, 0, 441, 0, 0, 441, 441, 0,
1458 0, 0, 0, 0, 0, 0, 0, 441, 0, 0,
1459 0, 0, 0, 0, 0, 441, 0, 0, 441, 0,
1460 0, 441, 450, 450, 0, 450, 450, 450, 450, 450,
1461 0, 450, 450, 450, 450, 0, 450, 450, 0, 0,
1462 0, 0, 0, 450, 450, 450, 450, 0, 0, 0,
1463 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1464 0, 0, 0, 0, 0, 0, 0, 0, 450, 450,
1466 450, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1467 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1468 0, 0, 450, 450, 451, 451, 0, 451, 451, 451,
1469 451, 451, 0, 451, 451, 451, 451, 0, 451, 451,
1470 0, 0, 0, 0, 0, 451, 451, 451, 451, 0,
1471 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1472 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1473 451, 451, 451, 0, 0, 0, 0, 451, 0, 0,
1474 0, 0, 0, 0, 0, 0, 0, 0, 0, 451,
1475 451, 0, 0, 0, 451, 451, 481, 0, 0, 0,
1477 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1478 481, 0, 0, 481, 0, 0, 0, 0, 0, 0,
1479 0, 481, 0, 0, 481, 0, 0, 481, 481, 0,
1480 0, 0, 0, 0, 0, 0, 0, 481, 0, 0,
1481 0, 0, 0, 0, 0, 481, 0, 0, 481, 0,
1482 0, 481, 487, 487, 0, 487, 487, 487, 487, 487,
1483 487, 487, 487, 487, 487, 0, 487, 487, 0, 0,
1484 0, 0, 0, 487, 487, 487, 487, 0, 0, 0,
1485 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1486 0, 0, 0, 0, 0, 0, 0, 0, 487, 487,
1488 487, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1489 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1490 0, 0, 487, 487, 489, 489, 0, 489, 489, 489,
1491 489, 489, 489, 489, 489, 489, 489, 0, 489, 489,
1492 0, 0, 0, 0, 0, 489, 489, 489, 489, 0,
1493 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1494 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1495 489, 489, 489, 0, 0, 0, 0, 489, 0, 0,
1496 0, 0, 0, 0, 0, 0, 0, 0, 0, 489,
1497 489, 0, 0, 0, 489, 489, 601, 601, 0, 601,
1499 601, 601, 601, 601, 0, 601, 601, 601, 601, 0,
1500 601, 601, 0, 0, 0, 0, 0, 601, 601, 601,
1501 601, 0, 0, 0, 0, 0, 0, 601, 0, 0,
1502 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1503 0, 0, 601, 601, 601, 0, 0, 0, 0, 0,
1504 0, 601, 0, 0, 0, 0, 0, 0, 0, 0,
1505 0, 0, 0, 0, 0, 0, 601, 601, 607, 607,
1506 0, 607, 607, 607, 607, 607, 607, 607, 607, 607,
1507 607, 0, 607, 607, 0, 0, 0, 0, 0, 607,
1508 607, 607, 607, 0, 0, 0, 0, 0, 0, 607,
1510 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1511 0, 0, 0, 0, 607, 607, 607, 0, 0, 0,
1512 0, 0, 0, 607, 0, 0, 0, 0, 0, 0,
1513 0, 0, 0, 0, 0, 0, 0, 0, 607, 607,
1514 617, 617, 0, 617, 617, 617, 617, 617, 0, 617,
1515 617, 617, 617, 0, 617, 617, 0, 0, 0, 0,
1516 0, 617, 617, 617, 617, 0, 0, 0, 0, 0,
1517 0, 617, 0, 0, 0, 0, 0, 0, 0, 0,
1518 0, 0, 0, 0, 0, 0, 617, 617, 617, 0,
1519 0, 0, 0, 0, 0, 617, 0, 0, 0, 0,
1521 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1522 617, 617, 624, 624, 0, 624, 624, 624, 624, 624,
1523 624, 624, 624, 624, 624, 0, 624, 624, 0, 0,
1524 0, 0, 0, 624, 624, 624, 624, 0, 0, 0,
1525 0, 0, 0, 624, 0, 0, 0, 0, 0, 0,
1526 0, 0, 0, 0, 0, 0, 0, 0, 624, 624,
1527 624, 0, 0, 0, 0, 0, 0, 624, 0, 0,
1528 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1529 0, 0, 624, 624, 711, 0, 0, 711, 711, 0,
1530 0, 711, 711, 711, 711, 711, 712, 712, 712, 712,
1532 712, 0, 712, 712, 712, 712, 712, 712, 712, 712,
1533 712, 713, 713, 713, 713, 713, 713, 713, 713, 713,
1534 713, 713, 713, 713, 713, 713, 714, 714, 714, 714,
1535 714, 714, 714, 714, 714, 714, 714, 714, 714, 714,
1536 714, 715, 715, 715, 715, 715, 715, 715, 715, 715,
1537 715, 715, 715, 715, 715, 715, 716, 0, 0, 716,
1538 716, 716, 0, 716, 716, 716, 716, 716, 717, 717,
1539 717, 717, 717, 0, 717, 717, 717, 717, 717, 717,
1540 717, 717, 717, 718, 718, 718, 718, 718, 718, 718,
1541 718, 718, 718, 718, 718, 718, 718, 718, 719, 719,
1543 0, 0, 0, 0, 0, 0, 0, 719, 719, 719,
1544 719, 719, 720, 720, 720, 720, 720, 720, 720, 720,
1545 720, 720, 720, 720, 720, 720, 720, 721, 721, 721,
1546 721, 721, 721, 721, 721, 721, 721, 721, 721, 721,
1547 721, 721, 722, 722, 722, 722, 722, 722, 722, 722,
1548 722, 722, 722, 722, 722, 722, 722, 723, 723, 723,
1549 723, 723, 723, 723, 723, 723, 723, 723, 723, 723,
1550 723, 723, 724, 724, 724, 724, 724, 724, 724, 724,
1551 724, 724, 724, 724, 724, 724, 724, 725, 725, 725,
1552 725, 725, 725, 725, 725, 725, 725, 725, 725, 725,
1554 725, 725, 726, 726, 726, 726, 726, 726, 726, 726,
1555 726, 726, 726, 726, 726, 726, 726, 727, 727, 727,
1556 727, 727, 727, 727, 727, 727, 727, 727, 727, 727,
1557 727, 727, 728, 728, 0, 728, 728, 728, 728, 728,
1558 728, 728, 728, 728, 728, 728, 728, 729, 729, 0,
1559 729, 729, 729, 729, 729, 729, 729, 729, 729, 729,
1560 729, 729, 730, 730, 0, 730, 730, 730, 730, 730,
1561 730, 730, 730, 730, 730, 730, 730, 731, 731, 731,
1562 731, 731, 731, 731, 731, 731, 731, 731, 731, 731,
1563 731, 731, 732, 732, 732, 732, 732, 732, 732, 732,
1565 732, 732, 732, 732, 732, 732, 732, 733, 733, 733,
1566 733, 733, 733, 733, 733, 733, 733, 733, 733, 733,
1567 733, 733, 734, 734, 734, 734, 734, 734, 734, 734,
1568 734, 734, 734, 734, 734, 734, 734, 735, 0, 0,
1569 735, 0, 735, 735, 0, 0, 735, 735, 736, 736,
1570 736, 736, 736, 736, 736, 736, 736, 736, 736, 736,
1571 736, 736, 736, 737, 737, 737, 737, 737, 737, 737,
1572 737, 737, 737, 737, 737, 737, 737, 737, 738, 738,
1573 738, 738, 738, 738, 738, 738, 738, 738, 738, 738,
1574 738, 738, 738, 739, 739, 739, 739, 739, 739, 739,
1576 739, 739, 739, 739, 739, 739, 739, 739, 740, 740,
1577 0, 740, 740, 740, 740, 740, 740, 740, 740, 740,
1578 740, 740, 740, 741, 741, 741, 741, 741, 741, 741,
1579 741, 741, 741, 741, 741, 741, 741, 741, 742, 742,
1580 742, 742, 0, 742, 742, 742, 742, 742, 742, 742,
1581 742, 742, 742, 743, 743, 743, 743, 743, 743, 743,
1582 743, 743, 743, 743, 743, 743, 743, 743, 744, 744,
1583 0, 744, 744, 744, 744, 744, 744, 744, 744, 744,
1584 744, 744, 744, 745, 745, 0, 745, 745, 745, 745,
1585 745, 745, 745, 745, 745, 745, 745, 745, 746, 0,
1587 746, 0, 0, 0, 746, 746, 746, 747, 747, 0,
1588 747, 747, 747, 747, 747, 747, 747, 747, 747, 747,
1589 747, 747, 748, 748, 0, 748, 748, 748, 748, 748,
1590 748, 748, 748, 748, 748, 748, 748, 749, 749, 0,
1591 749, 749, 749, 749, 749, 749, 749, 749, 749, 749,
1592 749, 749, 750, 750, 750, 750, 750, 750, 750, 750,
1593 750, 750, 750, 750, 750, 750, 750, 751, 751, 751,
1594 751, 751, 751, 751, 751, 751, 751, 751, 751, 751,
1595 751, 751, 752, 752, 752, 752, 752, 752, 752, 752,
1596 752, 752, 752, 752, 752, 752, 752, 753, 753, 753,
1598 753, 753, 753, 753, 753, 753, 753, 753, 753, 753,
1599 753, 753, 754, 0, 0, 0, 0, 754, 754, 0,
1600 0, 754, 754, 755, 755, 755, 755, 755, 755, 755,
1601 755, 755, 755, 755, 755, 755, 755, 755, 756, 756,
1602 756, 756, 756, 756, 756, 756, 756, 756, 756, 756,
1603 756, 756, 756, 757, 757, 0, 757, 757, 757, 757,
1604 757, 757, 757, 757, 757, 757, 757, 757, 758, 758,
1605 0, 758, 758, 758, 758, 758, 758, 758, 758, 758,
1606 758, 758, 758, 759, 759, 759, 759, 0, 759, 759,
1607 759, 759, 759, 759, 759, 759, 759, 759, 760, 760,
1609 760, 760, 760, 760, 760, 760, 760, 760, 760, 760,
1610 760, 760, 760, 761, 761, 0, 761, 761, 761, 761,
1611 761, 761, 761, 761, 761, 761, 761, 761, 762, 762,
1612 0, 762, 762, 762, 762, 762, 762, 762, 762, 762,
1613 762, 762, 762, 763, 763, 0, 763, 763, 763, 763,
1614 763, 763, 763, 763, 763, 763, 763, 763, 764, 764,
1615 0, 764, 764, 764, 764, 764, 764, 764, 764, 764,
1616 764, 764, 764, 765, 765, 0, 765, 765, 765, 765,
1617 765, 765, 765, 765, 765, 765, 765, 765, 766, 766,
1618 0, 766, 766, 766, 766, 766, 766, 766, 766, 766,
1620 766, 766, 766, 767, 767, 0, 767, 767, 767, 767,
1621 767, 767, 767, 767, 767, 767, 767, 767, 768, 768,
1622 0, 768, 768, 768, 768, 768, 768, 768, 768, 768,
1623 768, 768, 768, 769, 769, 769, 769, 769, 769, 769,
1624 769, 769, 769, 769, 769, 769, 769, 769, 770, 770,
1625 770, 770, 770, 770, 770, 770, 770, 770, 770, 770,
1626 770, 770, 770, 771, 771, 771, 771, 771, 771, 771,
1627 771, 771, 771, 771, 771, 771, 771, 771, 772, 0,
1628 0, 0, 0, 772, 772, 0, 0, 772, 773, 773,
1629 773, 773, 773, 773, 773, 773, 773, 773, 773, 773,
1631 773, 773, 773, 774, 774, 774, 774, 774, 774, 774,
1632 774, 774, 774, 774, 774, 774, 774, 774, 775, 775,
1633 0, 775, 775, 775, 775, 775, 775, 775, 775, 775,
1634 775, 775, 775, 776, 776, 776, 776, 776, 776, 776,
1635 776, 776, 776, 776, 776, 776, 776, 776, 777, 0,
1636 0, 0, 0, 777, 777, 0, 0, 777, 778, 778,
1637 0, 778, 778, 778, 778, 778, 778, 778, 778, 778,
1638 778, 778, 778, 779, 779, 779, 779, 779, 779, 779,
1639 779, 779, 779, 779, 779, 779, 779, 779, 780, 780,
1640 0, 780, 780, 780, 780, 780, 780, 780, 780, 780,
1642 780, 780, 780, 781, 781, 0, 781, 781, 781, 781,
1643 781, 781, 781, 781, 781, 781, 781, 781, 782, 782,
1644 0, 782, 782, 782, 782, 782, 782, 782, 782, 782,
1645 782, 782, 782, 783, 783, 783, 783, 783, 783, 783,
1646 783, 783, 783, 783, 783, 783, 783, 783, 784, 784,
1647 784, 784, 784, 784, 784, 784, 784, 784, 784, 784,
1648 784, 784, 784, 785, 785, 785, 785, 785, 785, 785,
1649 785, 785, 785, 785, 785, 785, 785, 785, 786, 786,
1650 786, 786, 786, 786, 786, 786, 786, 786, 786, 786,
1651 786, 786, 786, 710, 710, 710, 710, 710, 710, 710,
1653 710, 710, 710, 710, 710, 710, 710, 710, 710, 710,
1654 710, 710, 710, 710, 710, 710, 710, 710, 710, 710,
1655 710, 710, 710, 710, 710, 710, 710, 710, 710, 710,
1656 710, 710, 710, 710, 710, 710, 710, 710, 710, 710,
1657 710, 710, 710, 710, 710, 710, 710, 710, 710, 710,
1658 710, 710, 710, 710, 710, 710, 710, 710, 710, 710,
1659 710, 710, 710, 710, 710, 710
1662 static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr;
1663 static char *yy_full_match;
1665 static int yy_looking_for_trail_begin = 0;
1666 static int yy_full_lp;
1667 static int *yy_full_state;
1668 #define YY_TRAILING_MASK 0x2000
1669 #define YY_TRAILING_HEAD_MASK 0x4000
1672 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \
1673 yy_cp = yy_full_match; /* restore poss. backed-over text */ \
1674 yy_lp = yy_full_lp; /* restore orig. accepting pos. */ \
1675 yy_state_ptr = yy_full_state; /* restore orig. state */ \
1676 yy_current_state = *yy_state_ptr; /* restore curr. state */ \
1680 #define yymore() yymore_used_but_not_detected
1681 #define YY_MORE_ADJ 0
1682 #define YY_RESTORE_YY_MORE_OFFSET
1684 #line 1 "../parser.l"
1686 #line 8 "../parser.l"
1688 * parser.l -- lex parser of algebraic chess moves for XBoard
1689 * $Id: parser.l,v 2.1 2003/10/27 19:21:00 mann Exp $
1691 * Copyright 1991 by Digital Equipment Corporation, Maynard, Massachusetts.
1692 * Enhancements Copyright 1992-95 Free Software Foundation, Inc.
1694 * The following terms apply to Digital Equipment Corporation's copyright
1695 * interest in XBoard:
1696 * ------------------------------------------------------------------------
1697 * All Rights Reserved
1699 * Permission to use, copy, modify, and distribute this software and its
1700 * documentation for any purpose and without fee is hereby granted,
1701 * provided that the above copyright notice appear in all copies and that
1702 * both that copyright notice and this permission notice appear in
1703 * supporting documentation, and that the name of Digital not be
1704 * used in advertising or publicity pertaining to distribution of the
1705 * software without specific, written prior permission.
1707 * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
1708 * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
1709 * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
1710 * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
1711 * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
1712 * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
1714 * ------------------------------------------------------------------------
1716 * The following terms apply to the enhanced version of XBoard distributed
1717 * by the Free Software Foundation:
1718 * ------------------------------------------------------------------------
1719 * This program is free software; you can redistribute it and/or modify
1720 * it under the terms of the GNU General Public License as published by
1721 * the Free Software Foundation; either version 2 of the License, or
1722 * (at your option) any later version.
1724 * This program is distributed in the hope that it will be useful,
1725 * but WITHOUT ANY WARRANTY; without even the implied warranty of
1726 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1727 * GNU General Public License for more details.
1729 * You should have received a copy of the GNU General Public License
1730 * along with this program; if not, write to the Free Software
1731 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
1732 * ------------------------------------------------------------------------
1735 /* This parser handles all forms of promotion.
1736 * The parser resolves ambiguous moves by searching and check-testing.
1737 * It also parses comments of the form [anything] or (anything).
1742 #define NO_CONSTRAINT -1
1745 #define UNPUT_BUF_SIZE YYLMAX
1748 /* yytext is probably a char*, but could be a char[]. yy_text is set
1749 in YY_DECL below, because if yytext is a char*, its value is not
1752 #else /*!FLEX_SCANNER*/
1753 /* yytext is definitely a char[], so yy_text can be set here, statically. */
1754 char *yy_text = (char *) yytext;
1760 #define YY_INPUT(buf, result, max_size) my_yy_input(buf, &result, max_size)
1763 int _yylex YY_PROTO((void)); \
1764 int yylex YY_PROTO((void)) \
1766 int result = _yylex(); \
1767 yy_text = (char *) yytext; \
1770 int _yylex YY_PROTO((void))
1778 /* The includes must be here, below the #undef input */
1783 # include <stdlib.h>
1784 # include <string.h>
1785 #else /* not STDC_HEADERS */
1787 # include <string.h>
1788 # else /* not HAVE_STRING_H */
1789 # include <strings.h>
1790 # endif /* not HAVE_STRING_H */
1791 #endif /* not STDC_HEADERS */
1794 # include <unistd.h>
1797 #if defined(_amigados)
1800 # include <fcntl.h> /* isatty() prototype */
1801 # endif /* HAVE_FCNTL_H */
1802 #endif /* defined(_amigados) */
1805 #include "backend.h"
1806 #include "frontend.h"
1810 extern int PosFlags P((int));
1812 extern Board boards[MAX_MOVES];
1814 int yyskipmoves = FALSE;
1815 char currentMoveString[YYLMAX];
1816 #ifndef FLEX_SCANNER
1817 char unputBuffer[UNPUT_BUF_SIZE];
1822 void my_yy_input P((char *buf, int *result, int max_size));
1823 #else /*!FLEX_SCANNER*/
1824 static int input P((void));
1825 static void output P((int ch));
1826 static void unput P((int ch));
1827 int yylook P((void));
1828 int yyback P((int *, int));
1831 int yywrap P((void));
1832 extern void CopyBoard P((Board to, Board from));
1834 #line 1835 "lex.yy.c"
1836 /* Macros after this point can all be overridden by user definitions in
1840 #ifndef YY_SKIP_YYWRAP
1842 extern "C" int yywrap YY_PROTO(( void ));
1844 extern int yywrap YY_PROTO(( void ));
1849 static void yyunput YY_PROTO(( int c, char *buf_ptr ));
1853 static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
1856 #ifdef YY_NEED_STRLEN
1857 static int yy_flex_strlen YY_PROTO(( yyconst char * ));
1862 static int yyinput YY_PROTO(( void ));
1864 static int input YY_PROTO(( void ));
1869 static int yy_start_stack_ptr = 0;
1870 static int yy_start_stack_depth = 0;
1871 static int *yy_start_stack = 0;
1872 #ifndef YY_NO_PUSH_STATE
1873 static void yy_push_state YY_PROTO(( int new_state ));
1875 #ifndef YY_NO_POP_STATE
1876 static void yy_pop_state YY_PROTO(( void ));
1878 #ifndef YY_NO_TOP_STATE
1879 static int yy_top_state YY_PROTO(( void ));
1883 #define YY_NO_PUSH_STATE 1
1884 #define YY_NO_POP_STATE 1
1885 #define YY_NO_TOP_STATE 1
1888 #ifdef YY_MALLOC_DECL
1896 /* Just try to get by without declaring the routines. This will fail
1897 * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
1898 * or sizeof(void*) != sizeof(int).
1903 /* Amount of stuff to slurp up with each read. */
1904 #ifndef YY_READ_BUF_SIZE
1905 #define YY_READ_BUF_SIZE 8192
1908 /* Copy whatever the last rule matched to the standard output. */
1911 /* This used to be an fputs(), but since the string might contain NUL's,
1912 * we now use fwrite().
1914 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
1917 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
1918 * is returned in "result".
1921 #define YY_INPUT(buf,result,max_size) \
1922 if ( yy_current_buffer->yy_is_interactive ) \
1925 for ( n = 0; n < max_size && \
1926 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1927 buf[n] = (char) c; \
1929 buf[n++] = (char) c; \
1930 if ( c == EOF && ferror( yyin ) ) \
1931 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1934 else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
1935 && ferror( yyin ) ) \
1936 YY_FATAL_ERROR( "input in flex scanner failed" );
1939 /* No semi-colon after return; correct usage is to write "yyterminate();" -
1940 * we don't want an extra ';' after the "return" because that will cause
1941 * some compilers to complain about unreachable statements.
1944 #define yyterminate() return YY_NULL
1947 /* Number of entries by which start-condition stack grows. */
1948 #ifndef YY_START_STACK_INCR
1949 #define YY_START_STACK_INCR 25
1952 /* Report a fatal error. */
1953 #ifndef YY_FATAL_ERROR
1954 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
1957 /* Default declaration of generated scanner - a define so the user can
1958 * easily add parameters.
1961 #define YY_DECL int yylex YY_PROTO(( void ))
1964 /* Code executed at the beginning of each rule, after yytext and yyleng
1967 #ifndef YY_USER_ACTION
1968 #define YY_USER_ACTION
1971 /* Code executed at the end of each rule. */
1973 #define YY_BREAK break;
1976 #define YY_RULE_SETUP \
1978 yy_current_buffer->yy_at_bol = \
1979 (yytext[yyleng - 1] == '\n'); \
1984 register yy_state_type yy_current_state;
1985 register char *yy_cp = NULL, *yy_bp = NULL;
1986 register int yy_act;
1988 #line 156 "../parser.l"
1991 #line 1992 "lex.yy.c"
2002 yy_start = 1; /* first start state */
2010 if ( ! yy_current_buffer )
2012 yy_create_buffer( yyin, YY_BUF_SIZE );
2014 yy_load_buffer_state();
2017 while ( 1 ) /* loops until end-of-file is reached */
2021 /* Support of yytext. */
2022 *yy_cp = yy_hold_char;
2024 /* yy_bp points to the position in yy_ch_buf of the start of
2029 yy_current_state = yy_start;
2030 yy_current_state += YY_AT_BOL();
2031 yy_state_ptr = yy_state_buf;
2032 *yy_state_ptr++ = yy_current_state;
2036 register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
2037 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2039 yy_current_state = (int) yy_def[yy_current_state];
2040 if ( yy_current_state >= 711 )
2041 yy_c = yy_meta[(unsigned int) yy_c];
2043 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2044 *yy_state_ptr++ = yy_current_state;
2047 while ( yy_base[yy_current_state] != 4394 );
2050 yy_current_state = *--yy_state_ptr;
2051 yy_lp = yy_accept[yy_current_state];
2052 find_rule: /* we branch to this label when backing up */
2053 for ( ; ; ) /* until we find what rule we matched */
2055 if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] )
2057 yy_act = yy_acclist[yy_lp];
2058 if ( yy_act & YY_TRAILING_HEAD_MASK ||
2059 yy_looking_for_trail_begin )
2061 if ( yy_act == yy_looking_for_trail_begin )
2063 yy_looking_for_trail_begin = 0;
2064 yy_act &= ~YY_TRAILING_HEAD_MASK;
2068 else if ( yy_act & YY_TRAILING_MASK )
2070 yy_looking_for_trail_begin = yy_act & ~YY_TRAILING_MASK;
2071 yy_looking_for_trail_begin |= YY_TRAILING_HEAD_MASK;
2075 yy_full_match = yy_cp;
2076 yy_full_state = yy_state_ptr;
2084 yy_current_state = *--yy_state_ptr;
2085 yy_lp = yy_accept[yy_current_state];
2088 YY_DO_BEFORE_ACTION;
2091 do_action: /* This label is used only to access EOF actions. */
2095 { /* beginning of action switch */
2098 #line 158 "../parser.l"
2101 * Fully-qualified algebraic move, possibly with promotion
2103 int skip1 = 0, skip2 = 0;
2107 if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
2110 if (yytext[1] == '/') skip1 = 1;
2112 /* remove the [xX:-] */
2113 if ((yytext[3+skip1] == 'x') || (yytext[3+skip1] == 'X') ||
2114 (yytext[3+skip1] == '-') || (yytext[3+skip1] == ':')) skip2 = 1;
2116 currentMoveString[0] = yytext[1+skip1];
2117 currentMoveString[1] = yytext[2+skip1];
2118 currentMoveString[2] = yytext[3+skip1+skip2];
2119 currentMoveString[3] = yytext[4+skip1+skip2];
2120 currentMoveString[4] = NULLCHAR;
2122 if (yyleng-skip1-skip2 > 5) {
2123 if (yytext[yyleng-1] == ')') {
2124 currentMoveString[4] = ToLower(yytext[yyleng-2]);
2126 currentMoveString[4] = ToLower(yytext[yyleng-1]);
2128 currentMoveString[5] = NULLCHAR;
2131 piece = boards[yyboardindex]
2132 [currentMoveString[1] - '1'][currentMoveString[0] - 'a'];
2133 if (ToLower(yytext[0]) != ToLower(PieceToChar(piece)))
2134 return (int) IllegalMove;
2136 result = LegalityTest(boards[yyboardindex],
2137 PosFlags(yyboardindex), EP_UNKNOWN,
2138 currentMoveString[1] - '1',
2139 currentMoveString[0] - 'a',
2140 currentMoveString[3] - '1',
2141 currentMoveString[2] - 'a',
2142 currentMoveString[4]);
2144 if (currentMoveString[4] == NULLCHAR &&
2145 (result == WhitePromotionQueen || result == BlackPromotionQueen)) {
2146 currentMoveString[4] = 'q';
2147 currentMoveString[5] = NULLCHAR;
2150 return (int) result;
2155 #line 212 "../parser.l"
2158 * Simple algebraic move, possibly with promotion
2163 if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
2165 /* remove the [xX:-] */
2166 if ((yytext[2] == 'x') || (yytext[2] == 'X') ||
2167 (yytext[2] == '-') || (yytext[2] == ':')) skip = 1;
2169 currentMoveString[0] = yytext[0];
2170 currentMoveString[1] = yytext[1];
2171 currentMoveString[2] = yytext[2+skip];
2172 currentMoveString[3] = yytext[3+skip];
2173 currentMoveString[4] = NULLCHAR;
2175 if (yyleng-skip > 4) {
2176 if (yytext[yyleng-1] == ')') {
2177 currentMoveString[4] = ToLower(yytext[yyleng-2]);
2179 currentMoveString[4] = ToLower(yytext[yyleng-1]);
2181 currentMoveString[5] = NULLCHAR;
2184 result = LegalityTest(boards[yyboardindex],
2185 PosFlags(yyboardindex), EP_UNKNOWN,
2186 currentMoveString[1] - '1',
2187 currentMoveString[0] - 'a',
2188 currentMoveString[3] - '1',
2189 currentMoveString[2] - 'a',
2190 currentMoveString[4]);
2192 if (currentMoveString[4] == NULLCHAR &&
2193 (result == WhitePromotionQueen || result == BlackPromotionQueen)) {
2194 currentMoveString[4] = 'q';
2195 currentMoveString[5] = NULLCHAR;
2198 return (int) result;
2203 #line 257 "../parser.l"
2206 * Pawn move, possibly with promotion
2208 DisambiguateClosure cl;
2211 if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
2213 /* remove the =() */
2214 if (yytext[2] == '=') skip++;
2215 if (yytext[2+skip] == '(') skip++;
2217 cl.pieceIn = WhiteOnMove(yyboardindex) ? WhitePawn : BlackPawn;
2219 cl.ffIn = yytext[0] - 'a';
2220 cl.rtIn = yytext[1] - '1';
2221 cl.ftIn = yytext[0] - 'a';
2222 cl.promoCharIn = yytext[2+skip];
2223 Disambiguate(boards[yyboardindex],
2224 PosFlags(yyboardindex), EP_UNKNOWN, &cl);
2226 currentMoveString[0] = cl.ff + 'a';
2227 currentMoveString[1] = cl.rf + '1';
2228 currentMoveString[2] = cl.ft + 'a';
2229 currentMoveString[3] = cl.rt + '1';
2230 currentMoveString[4] = cl.promoChar;
2231 currentMoveString[5] = NULLCHAR;
2233 return (int) cl.kind;
2238 #line 290 "../parser.l"
2241 * Pawn capture, possibly with promotion, possibly ambiguous
2243 DisambiguateClosure cl;
2244 int skip1 = 0, skip2 = 0;
2246 if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
2248 /* remove trailing ep or e.p. (nonstandard PGN) */
2249 if (yytext[yyleng-1] == 'p') {
2251 yytext[yyleng] = NULLCHAR;
2252 } else if (yytext[yyleng-1] == '.') {
2254 yytext[yyleng] = NULLCHAR;
2257 /* remove the [xX:-] and =() */
2258 if ((yytext[1] == 'x') || (yytext[1] == 'X')
2259 || (yytext[1] == ':') || (yytext[1] == '-')) skip1 = 1;
2260 if (yytext[2+skip1] == '=') skip2++;
2261 if (yytext[2+skip1+skip2] == '(') skip2++;
2263 cl.pieceIn = WhiteOnMove(yyboardindex) ? WhitePawn : BlackPawn;
2265 cl.ffIn = yytext[0] - 'a';
2267 cl.ftIn = yytext[1+skip1] - 'a';
2268 cl.promoCharIn = yytext[2+skip1+skip2];
2269 Disambiguate(boards[yyboardindex],
2270 PosFlags(yyboardindex), EP_UNKNOWN, &cl);
2272 currentMoveString[0] = cl.ff + 'a';
2273 currentMoveString[1] = cl.rf + '1';
2274 currentMoveString[2] = cl.ft + 'a';
2275 currentMoveString[3] = cl.rt + '1';
2276 currentMoveString[4] = cl.promoChar;
2277 currentMoveString[5] = NULLCHAR;
2279 return (int) cl.kind;
2284 #line 333 "../parser.l"
2287 * unambiguously abbreviated Pawn capture, possibly with promotion
2292 if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
2294 /* remove trailing ep or e.p. (nonstandard PGN) */
2295 if (yytext[yyleng-1] == 'p') {
2297 yytext[yyleng] = NULLCHAR;
2298 } else if (yytext[yyleng-1] == '.') {
2300 yytext[yyleng] = NULLCHAR;
2303 /* remove the [xX:-] */
2304 if ((yytext[1] == 'x') || (yytext[1] == 'X')
2305 || (yytext[1] == ':') || (yytext[1] == '-')) skip = 1;
2307 currentMoveString[0] = yytext[0];
2308 currentMoveString[2] = yytext[1+skip];
2309 currentMoveString[3] = yytext[2+skip];
2310 if (WhiteOnMove(yyboardindex)) {
2311 if (yytext[2+skip] == '1') return (int) ImpossibleMove;
2312 currentMoveString[1] = yytext[2+skip] - 1;
2314 if (yytext[2+skip] == '8') return (int) ImpossibleMove;
2315 currentMoveString[1] = yytext[2+skip] + 1;
2317 if (yyleng-skip > 3) {
2318 if (yytext[yyleng-1] == ')')
2319 currentMoveString[4] = ToLower(yytext[yyleng-2]);
2321 currentMoveString[4] = ToLower(yytext[yyleng-1]);
2322 currentMoveString[5] = NULLCHAR;
2324 currentMoveString[4] = NULLCHAR;
2327 result = LegalityTest(boards[yyboardindex],
2328 PosFlags(yyboardindex), EP_UNKNOWN,
2329 currentMoveString[1] - '1',
2330 currentMoveString[0] - 'a',
2331 currentMoveString[3] - '1',
2332 currentMoveString[2] - 'a',
2333 currentMoveString[4]);
2335 if (currentMoveString[4] == NULLCHAR &&
2336 (result == WhitePromotionQueen || result == BlackPromotionQueen)) {
2337 currentMoveString[4] = 'q';
2338 currentMoveString[5] = NULLCHAR;
2341 if (result != IllegalMove) return (int) result;
2343 /* Special case: improperly written en passant capture */
2344 if (WhiteOnMove(yyboardindex)) {
2345 if (currentMoveString[3] == '5') {
2346 currentMoveString[1] = '5';
2347 currentMoveString[3] = '6';
2349 return (int) IllegalMove;
2352 if (currentMoveString[3] == '4') {
2353 currentMoveString[1] = '4';
2354 currentMoveString[3] = '3';
2356 return (int) IllegalMove;
2360 result = LegalityTest(boards[yyboardindex],
2361 PosFlags(yyboardindex), EP_UNKNOWN,
2362 currentMoveString[1] - '1',
2363 currentMoveString[0] - 'a',
2364 currentMoveString[3] - '1',
2365 currentMoveString[2] - 'a',
2366 currentMoveString[4]);
2368 if (result == WhiteCapturesEnPassant || result == BlackCapturesEnPassant)
2369 return (int) result;
2371 return (int) IllegalMove;
2376 #line 422 "../parser.l"
2379 * piece move, possibly ambiguous
2381 DisambiguateClosure cl;
2384 if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
2386 /* remove the [xX:-] */
2387 if ((yytext[1] == 'x') || (yytext[1] == 'X')
2388 || (yytext[1] == ':') || (yytext[1] == '-')) skip = 1;
2390 if (WhiteOnMove(yyboardindex)) {
2391 cl.pieceIn = CharToPiece(ToUpper(yytext[0]));
2393 cl.pieceIn = CharToPiece(ToLower(yytext[0]));
2397 cl.rtIn = yytext[2+skip] - '1';
2398 cl.ftIn = yytext[1+skip] - 'a';
2399 cl.promoCharIn = NULLCHAR;
2400 Disambiguate(boards[yyboardindex],
2401 PosFlags(yyboardindex), EP_UNKNOWN, &cl);
2403 currentMoveString[0] = cl.ff + 'a';
2404 currentMoveString[1] = cl.rf + '1';
2405 currentMoveString[2] = cl.ft + 'a';
2406 currentMoveString[3] = cl.rt + '1';
2407 currentMoveString[4] = cl.promoChar;
2408 currentMoveString[5] = NULLCHAR;
2410 return (int) cl.kind;
2415 #line 458 "../parser.l"
2418 * piece move with rank or file disambiguator
2420 DisambiguateClosure cl;
2423 if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
2425 /* remove the [xX:-] */
2426 if ((yytext[2] == 'x') || (yytext[2] == 'X')
2427 || (yytext[2] == ':') || (yytext[2] == '-')) skip = 1;
2429 if (WhiteOnMove(yyboardindex)) {
2430 cl.pieceIn = CharToPiece(ToUpper(yytext[0]));
2432 cl.pieceIn = CharToPiece(ToLower(yytext[0]));
2434 if (isalpha(yytext[1])) {
2436 cl.ffIn = yytext[1] - 'a';
2438 cl.rfIn = yytext[1] - '1';
2441 cl.rtIn = yytext[3+skip] - '1';
2442 cl.ftIn = yytext[2+skip] - 'a';
2443 cl.promoCharIn = NULLCHAR;
2444 Disambiguate(boards[yyboardindex],
2445 PosFlags(yyboardindex), EP_UNKNOWN, &cl);
2447 currentMoveString[0] = cl.ff + 'a';
2448 currentMoveString[1] = cl.rf + '1';
2449 currentMoveString[2] = cl.ft + 'a';
2450 currentMoveString[3] = cl.rt + '1';
2451 currentMoveString[4] = cl.promoChar;
2452 currentMoveString[5] = NULLCHAR;
2454 return (int) cl.kind;
2459 #line 499 "../parser.l"
2463 if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
2465 if (WhiteOnMove(yyboardindex)) {
2466 if (boards[yyboardindex][0][3] == WhiteKing) {
2467 /* ICS wild castling */
2468 strcpy(currentMoveString, "d1f1");
2474 strcpy(currentMoveString, "e1c1");
2481 if (boards[yyboardindex][7][3] == BlackKing) {
2482 /* ICS wild castling */
2483 strcpy(currentMoveString, "d8f8");
2489 strcpy(currentMoveString, "e8c8");
2496 return (int) LegalityTest(boards[yyboardindex],
2497 PosFlags(yyboardindex), EP_UNKNOWN,
2498 rf, ff, rt, ft, NULLCHAR);
2503 #line 540 "../parser.l"
2507 if (yyskipmoves) return (int) AmbiguousMove; /* not disambiguated */
2509 if (WhiteOnMove(yyboardindex)) {
2510 if (boards[yyboardindex][0][3] == WhiteKing) {
2511 /* ICS wild castling */
2512 strcpy(currentMoveString, "d1b1");
2518 strcpy(currentMoveString, "e1g1");
2525 if (boards[yyboardindex][7][3] == BlackKing) {
2526 /* ICS wild castling */
2527 strcpy(currentMoveString, "d8b8");
2533 strcpy(currentMoveString, "e8g8");
2540 return (int) LegalityTest(boards[yyboardindex],
2541 PosFlags(yyboardindex), EP_UNKNOWN,
2542 rf, ff, rt, ft, NULLCHAR);
2547 #line 581 "../parser.l"
2549 /* Bughouse piece drop. No legality checking for now. */
2550 currentMoveString[1] = '@';
2551 currentMoveString[2] = yytext[2];
2552 currentMoveString[3] = yytext[3];
2553 currentMoveString[4] = NULLCHAR;
2554 if (WhiteOnMove(yyboardindex)) {
2555 currentMoveString[0] = ToUpper(yytext[0]);
2556 return (int) WhiteDrop;
2558 currentMoveString[0] = ToLower(yytext[0]);
2559 return (int) BlackDrop;
2565 #line 596 "../parser.l"
2567 if (WhiteOnMove(yyboardindex))
2568 return (int) BlackWins;
2570 return (int) WhiteWins;
2575 #line 603 "../parser.l"
2577 return (int) (ToUpper(yytext[0]) == 'W' ? BlackWins : WhiteWins);
2582 #line 607 "../parser.l"
2584 return (int) GameUnfinished;
2589 #line 611 "../parser.l"
2591 return (int) GameIsDrawn;
2596 #line 615 "../parser.l"
2598 return (int) GameIsDrawn;
2603 #line 619 "../parser.l"
2605 if (WhiteOnMove(yyboardindex))
2606 return (int) BlackWins;
2608 return (int) WhiteWins;
2613 #line 626 "../parser.l"
2615 if (WhiteOnMove(yyboardindex))
2616 return (int) BlackWins;
2618 return (int) WhiteWins;
2623 #line 633 "../parser.l"
2625 return (int) GameIsDrawn;
2630 #line 637 "../parser.l"
2632 return (int) GameIsDrawn;
2637 #line 641 "../parser.l"
2639 return (int) (ToUpper(yytext[0]) == 'W' ? WhiteWins : BlackWins);
2644 #line 645 "../parser.l"
2646 return (int) (ToUpper(yytext[0]) == 'W' ? BlackWins : WhiteWins);
2651 #line 649 "../parser.l"
2653 return (int) WhiteWins;
2658 #line 653 "../parser.l"
2660 return (int) BlackWins;
2665 #line 657 "../parser.l"
2667 return (int) GameIsDrawn;
2672 #line 661 "../parser.l"
2674 return (int) GameUnfinished;
2679 #line 665 "../parser.l"
2682 if ((yyleng == 1) && (yytext[0] == '1'))
2683 return (int) MoveNumberOne;
2688 #line 671 "../parser.l"
2690 /* elapsed time indication, e.g. (0:12) or {10:21.071} */
2691 return (int) ElapsedTime;
2696 #line 676 "../parser.l"
2698 /* position diagram enclosed in [-- --] */
2699 return (int) PositionDiagram;
2703 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2704 yy_c_buf_p = yy_cp -= 1;
2705 YY_DO_BEFORE_ACTION; /* set up yytext again */
2707 #line 681 "../parser.l"
2709 /* position diagram enclosed in {-- --} */
2710 return (int) PositionDiagram;
2715 #line 686 "../parser.l"
2717 return (int) PGNTag;
2722 #line 690 "../parser.l"
2724 return (int) GNUChessGame;
2728 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2729 yy_c_buf_p = yy_cp -= 1;
2730 YY_DO_BEFORE_ACTION; /* set up yytext again */
2732 #line 694 "../parser.l"
2734 return (int) XBoardGame;
2739 #line 698 "../parser.l"
2740 { /* numeric annotation glyph */
2746 #line 702 "../parser.l"
2747 { /* anything in {} */
2748 return (int) Comment;
2752 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2753 yy_c_buf_p = yy_cp -= 1;
2754 YY_DO_BEFORE_ACTION; /* set up yytext again */
2756 #line 706 "../parser.l"
2757 { /* ; to end of line */
2758 return (int) Comment;
2763 #line 710 "../parser.l"
2764 { /* anything in [] */
2765 return (int) Comment;
2770 #line 714 "../parser.l"
2772 return (int) Comment;
2777 #line 718 "../parser.l"
2778 { /* >=2 chars in () */
2779 return (int) Comment;
2784 #line 722 "../parser.l"
2786 /* Skip mail headers */
2791 #line 726 "../parser.l"
2793 /* Skip random words */
2798 #line 730 "../parser.l"
2800 /* Skip everything else */
2805 #line 734 "../parser.l"
2808 #line 2809 "lex.yy.c"
2809 case YY_STATE_EOF(INITIAL):
2812 case YY_END_OF_BUFFER:
2814 /* Amount of text matched not including the EOB char. */
2815 int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
2817 /* Undo the effects of YY_DO_BEFORE_ACTION. */
2818 *yy_cp = yy_hold_char;
2819 YY_RESTORE_YY_MORE_OFFSET
2821 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
2823 /* We're scanning a new file or input source. It's
2824 * possible that this happened because the user
2825 * just pointed yyin at a new source and called
2826 * yylex(). If so, then we have to assure
2827 * consistency between yy_current_buffer and our
2828 * globals. Here is the right place to do so, because
2829 * this is the first action (other than possibly a
2830 * back-up) that will match for the new input source.
2832 yy_n_chars = yy_current_buffer->yy_n_chars;
2833 yy_current_buffer->yy_input_file = yyin;
2834 yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
2837 /* Note that here we test for yy_c_buf_p "<=" to the position
2838 * of the first EOB in the buffer, since yy_c_buf_p will
2839 * already have been incremented past the NUL character
2840 * (since all states make transitions on EOB to the
2841 * end-of-buffer state). Contrast this with the test
2844 if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
2845 { /* This was really a NUL. */
2846 yy_state_type yy_next_state;
2848 yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
2850 yy_current_state = yy_get_previous_state();
2852 /* Okay, we're now positioned to make the NUL
2853 * transition. We couldn't have
2854 * yy_get_previous_state() go ahead and do it
2855 * for us because it doesn't know how to deal
2856 * with the possibility of jamming (and we don't
2857 * want to build jamming into it because then it
2858 * will run more slowly).
2861 yy_next_state = yy_try_NUL_trans( yy_current_state );
2863 yy_bp = yytext_ptr + YY_MORE_ADJ;
2865 if ( yy_next_state )
2867 /* Consume the NUL. */
2868 yy_cp = ++yy_c_buf_p;
2869 yy_current_state = yy_next_state;
2876 goto yy_find_action;
2880 else switch ( yy_get_next_buffer() )
2882 case EOB_ACT_END_OF_FILE:
2884 yy_did_buffer_switch_on_eof = 0;
2888 /* Note: because we've taken care in
2889 * yy_get_next_buffer() to have set up
2890 * yytext, we can now set up
2891 * yy_c_buf_p so that if some total
2892 * hoser (like flex itself) wants to
2893 * call the scanner after we return the
2894 * YY_NULL, it'll still work - another
2895 * YY_NULL will get returned.
2897 yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
2899 yy_act = YY_STATE_EOF(YY_START);
2905 if ( ! yy_did_buffer_switch_on_eof )
2911 case EOB_ACT_CONTINUE_SCAN:
2913 yytext_ptr + yy_amount_of_matched_text;
2915 yy_current_state = yy_get_previous_state();
2918 yy_bp = yytext_ptr + YY_MORE_ADJ;
2921 case EOB_ACT_LAST_MATCH:
2923 &yy_current_buffer->yy_ch_buf[yy_n_chars];
2925 yy_current_state = yy_get_previous_state();
2928 yy_bp = yytext_ptr + YY_MORE_ADJ;
2929 goto yy_find_action;
2936 "fatal flex scanner internal error--no action found" );
2937 } /* end of action switch */
2938 } /* end of scanning one token */
2939 } /* end of yylex */
2942 /* yy_get_next_buffer - try to read in a new buffer
2944 * Returns a code representing an action:
2945 * EOB_ACT_LAST_MATCH -
2946 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
2947 * EOB_ACT_END_OF_FILE - end of file
2950 static int yy_get_next_buffer()
2952 register char *dest = yy_current_buffer->yy_ch_buf;
2953 register char *source = yytext_ptr;
2954 register int number_to_move, i;
2957 if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
2959 "fatal flex scanner internal error--end of buffer missed" );
2961 if ( yy_current_buffer->yy_fill_buffer == 0 )
2962 { /* Don't try to fill the buffer, so this is an EOF. */
2963 if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
2965 /* We matched a single character, the EOB, so
2966 * treat this as a final EOF.
2968 return EOB_ACT_END_OF_FILE;
2973 /* We matched some text prior to the EOB, first
2976 return EOB_ACT_LAST_MATCH;
2980 /* Try to read more data. */
2982 /* First move last chars to start of buffer. */
2983 number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
2985 for ( i = 0; i < number_to_move; ++i )
2986 *(dest++) = *(source++);
2988 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
2989 /* don't do the read, it's not guaranteed to return an EOF,
2992 yy_current_buffer->yy_n_chars = yy_n_chars = 0;
2997 yy_current_buffer->yy_buf_size - number_to_move - 1;
2999 while ( num_to_read <= 0 )
3000 { /* Not enough room in the buffer - grow it. */
3001 #ifdef YY_USES_REJECT
3003 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
3006 /* just a shorter name for the current buffer */
3007 YY_BUFFER_STATE b = yy_current_buffer;
3009 int yy_c_buf_p_offset =
3010 (int) (yy_c_buf_p - b->yy_ch_buf);
3012 if ( b->yy_is_our_buffer )
3014 int new_size = b->yy_buf_size * 2;
3016 if ( new_size <= 0 )
3017 b->yy_buf_size += b->yy_buf_size / 8;
3019 b->yy_buf_size *= 2;
3021 b->yy_ch_buf = (char *)
3022 /* Include room in for 2 EOB chars. */
3023 yy_flex_realloc( (void *) b->yy_ch_buf,
3024 b->yy_buf_size + 2 );
3027 /* Can't grow it, we don't own it. */
3030 if ( ! b->yy_ch_buf )
3032 "fatal error - scanner input buffer overflow" );
3034 yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
3036 num_to_read = yy_current_buffer->yy_buf_size -
3041 if ( num_to_read > YY_READ_BUF_SIZE )
3042 num_to_read = YY_READ_BUF_SIZE;
3044 /* Read in more data. */
3045 YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
3046 yy_n_chars, num_to_read );
3048 yy_current_buffer->yy_n_chars = yy_n_chars;
3051 if ( yy_n_chars == 0 )
3053 if ( number_to_move == YY_MORE_ADJ )
3055 ret_val = EOB_ACT_END_OF_FILE;
3061 ret_val = EOB_ACT_LAST_MATCH;
3062 yy_current_buffer->yy_buffer_status =
3063 YY_BUFFER_EOF_PENDING;
3068 ret_val = EOB_ACT_CONTINUE_SCAN;
3070 yy_n_chars += number_to_move;
3071 yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
3072 yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
3074 yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
3080 /* yy_get_previous_state - get the state just before the EOB char was reached */
3082 static yy_state_type yy_get_previous_state()
3084 register yy_state_type yy_current_state;
3085 register char *yy_cp;
3087 yy_current_state = yy_start;
3088 yy_current_state += YY_AT_BOL();
3089 yy_state_ptr = yy_state_buf;
3090 *yy_state_ptr++ = yy_current_state;
3092 for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
3094 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
3095 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3097 yy_current_state = (int) yy_def[yy_current_state];
3098 if ( yy_current_state >= 711 )
3099 yy_c = yy_meta[(unsigned int) yy_c];
3101 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
3102 *yy_state_ptr++ = yy_current_state;
3105 return yy_current_state;
3109 /* yy_try_NUL_trans - try to make a transition on the NUL character
3112 * next_state = yy_try_NUL_trans( current_state );
3115 #ifdef YY_USE_PROTOS
3116 static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
3118 static yy_state_type yy_try_NUL_trans( yy_current_state )
3119 yy_state_type yy_current_state;
3122 register int yy_is_jam;
3124 register YY_CHAR yy_c = 1;
3125 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3127 yy_current_state = (int) yy_def[yy_current_state];
3128 if ( yy_current_state >= 711 )
3129 yy_c = yy_meta[(unsigned int) yy_c];
3131 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
3132 yy_is_jam = (yy_current_state == 710);
3134 *yy_state_ptr++ = yy_current_state;
3136 return yy_is_jam ? 0 : yy_current_state;
3141 #ifdef YY_USE_PROTOS
3142 static void yyunput( int c, register char *yy_bp )
3144 static void yyunput( c, yy_bp )
3146 register char *yy_bp;
3149 register char *yy_cp = yy_c_buf_p;
3151 /* undo effects of setting up yytext */
3152 *yy_cp = yy_hold_char;
3154 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
3155 { /* need to shift things up to make room */
3156 /* +2 for EOB chars. */
3157 register int number_to_move = yy_n_chars + 2;
3158 register char *dest = &yy_current_buffer->yy_ch_buf[
3159 yy_current_buffer->yy_buf_size + 2];
3160 register char *source =
3161 &yy_current_buffer->yy_ch_buf[number_to_move];
3163 while ( source > yy_current_buffer->yy_ch_buf )
3164 *--dest = *--source;
3166 yy_cp += (int) (dest - source);
3167 yy_bp += (int) (dest - source);
3168 yy_current_buffer->yy_n_chars =
3169 yy_n_chars = yy_current_buffer->yy_buf_size;
3171 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
3172 YY_FATAL_ERROR( "flex scanner push-back overflow" );
3175 *--yy_cp = (char) c;
3179 yy_hold_char = *yy_cp;
3182 #endif /* ifndef YY_NO_UNPUT */
3187 static int yyinput()
3194 *yy_c_buf_p = yy_hold_char;
3196 if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
3198 /* yy_c_buf_p now points to the character we want to return.
3199 * If this occurs *before* the EOB characters, then it's a
3200 * valid NUL; if not, then we've hit the end of the buffer.
3202 if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
3203 /* This was really a NUL. */
3207 { /* need more input */
3208 int offset = yy_c_buf_p - yytext_ptr;
3211 switch ( yy_get_next_buffer() )
3213 case EOB_ACT_LAST_MATCH:
3214 /* This happens because yy_g_n_b()
3215 * sees that we've accumulated a
3216 * token and flags that we need to
3217 * try matching the token before
3218 * proceeding. But for input(),
3219 * there's no matching to consider.
3220 * So convert the EOB_ACT_LAST_MATCH
3221 * to EOB_ACT_END_OF_FILE.
3224 /* Reset buffer status. */
3229 case EOB_ACT_END_OF_FILE:
3234 if ( ! yy_did_buffer_switch_on_eof )
3243 case EOB_ACT_CONTINUE_SCAN:
3244 yy_c_buf_p = yytext_ptr + offset;
3250 c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */
3251 *yy_c_buf_p = '\0'; /* preserve yytext */
3252 yy_hold_char = *++yy_c_buf_p;
3254 yy_current_buffer->yy_at_bol = (c == '\n');
3258 #endif /* YY_NO_INPUT */
3260 #ifdef YY_USE_PROTOS
3261 void yyrestart( FILE *input_file )
3263 void yyrestart( input_file )
3267 if ( ! yy_current_buffer )
3268 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
3270 yy_init_buffer( yy_current_buffer, input_file );
3271 yy_load_buffer_state();
3275 #ifdef YY_USE_PROTOS
3276 void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
3278 void yy_switch_to_buffer( new_buffer )
3279 YY_BUFFER_STATE new_buffer;
3282 if ( yy_current_buffer == new_buffer )
3285 if ( yy_current_buffer )
3287 /* Flush out information for old buffer. */
3288 *yy_c_buf_p = yy_hold_char;
3289 yy_current_buffer->yy_buf_pos = yy_c_buf_p;
3290 yy_current_buffer->yy_n_chars = yy_n_chars;
3293 yy_current_buffer = new_buffer;
3294 yy_load_buffer_state();
3296 /* We don't actually know whether we did this switch during
3297 * EOF (yywrap()) processing, but the only time this flag
3298 * is looked at is after yywrap() is called, so it's safe
3299 * to go ahead and always set it.
3301 yy_did_buffer_switch_on_eof = 1;
3305 #ifdef YY_USE_PROTOS
3306 void yy_load_buffer_state( void )
3308 void yy_load_buffer_state()
3311 yy_n_chars = yy_current_buffer->yy_n_chars;
3312 yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
3313 yyin = yy_current_buffer->yy_input_file;
3314 yy_hold_char = *yy_c_buf_p;
3318 #ifdef YY_USE_PROTOS
3319 YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
3321 YY_BUFFER_STATE yy_create_buffer( file, size )
3328 b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
3330 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
3332 b->yy_buf_size = size;
3334 /* yy_ch_buf has to be 2 characters longer than the size given because
3335 * we need to put in 2 end-of-buffer characters.
3337 b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
3338 if ( ! b->yy_ch_buf )
3339 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
3341 b->yy_is_our_buffer = 1;
3343 yy_init_buffer( b, file );
3349 #ifdef YY_USE_PROTOS
3350 void yy_delete_buffer( YY_BUFFER_STATE b )
3352 void yy_delete_buffer( b )
3359 if ( b == yy_current_buffer )
3360 yy_current_buffer = (YY_BUFFER_STATE) 0;
3362 if ( b->yy_is_our_buffer )
3363 yy_flex_free( (void *) b->yy_ch_buf );
3365 yy_flex_free( (void *) b );
3370 #ifdef YY_USE_PROTOS
3371 void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
3373 void yy_init_buffer( b, file )
3380 yy_flush_buffer( b );
3382 b->yy_input_file = file;
3383 b->yy_fill_buffer = 1;
3385 #if YY_ALWAYS_INTERACTIVE
3386 b->yy_is_interactive = 1;
3388 #if YY_NEVER_INTERACTIVE
3389 b->yy_is_interactive = 0;
3391 b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
3397 #ifdef YY_USE_PROTOS
3398 void yy_flush_buffer( YY_BUFFER_STATE b )
3400 void yy_flush_buffer( b )
3410 /* We always need two end-of-buffer characters. The first causes
3411 * a transition to the end-of-buffer state. The second causes
3412 * a jam in that state.
3414 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
3415 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
3417 b->yy_buf_pos = &b->yy_ch_buf[0];
3420 b->yy_buffer_status = YY_BUFFER_NEW;
3422 if ( b == yy_current_buffer )
3423 yy_load_buffer_state();
3427 #ifndef YY_NO_SCAN_BUFFER
3428 #ifdef YY_USE_PROTOS
3429 YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
3431 YY_BUFFER_STATE yy_scan_buffer( base, size )
3439 base[size-2] != YY_END_OF_BUFFER_CHAR ||
3440 base[size-1] != YY_END_OF_BUFFER_CHAR )
3441 /* They forgot to leave room for the EOB's. */
3444 b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
3446 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
3448 b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
3449 b->yy_buf_pos = b->yy_ch_buf = base;
3450 b->yy_is_our_buffer = 0;
3451 b->yy_input_file = 0;
3452 b->yy_n_chars = b->yy_buf_size;
3453 b->yy_is_interactive = 0;
3455 b->yy_fill_buffer = 0;
3456 b->yy_buffer_status = YY_BUFFER_NEW;
3458 yy_switch_to_buffer( b );
3465 #ifndef YY_NO_SCAN_STRING
3466 #ifdef YY_USE_PROTOS
3467 YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
3469 YY_BUFFER_STATE yy_scan_string( yy_str )
3470 yyconst char *yy_str;
3474 for ( len = 0; yy_str[len]; ++len )
3477 return yy_scan_bytes( yy_str, len );
3482 #ifndef YY_NO_SCAN_BYTES
3483 #ifdef YY_USE_PROTOS
3484 YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
3486 YY_BUFFER_STATE yy_scan_bytes( bytes, len )
3487 yyconst char *bytes;
3496 /* Get memory for full buffer, including space for trailing EOB's. */
3498 buf = (char *) yy_flex_alloc( n );
3500 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
3502 for ( i = 0; i < len; ++i )
3505 buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
3507 b = yy_scan_buffer( buf, n );
3509 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
3511 /* It's okay to grow etc. this buffer, and we should throw it
3512 * away when we're done.
3514 b->yy_is_our_buffer = 1;
3521 #ifndef YY_NO_PUSH_STATE
3522 #ifdef YY_USE_PROTOS
3523 static void yy_push_state( int new_state )
3525 static void yy_push_state( new_state )
3529 if ( yy_start_stack_ptr >= yy_start_stack_depth )
3533 yy_start_stack_depth += YY_START_STACK_INCR;
3534 new_size = yy_start_stack_depth * sizeof( int );
3536 if ( ! yy_start_stack )
3537 yy_start_stack = (int *) yy_flex_alloc( new_size );
3540 yy_start_stack = (int *) yy_flex_realloc(
3541 (void *) yy_start_stack, new_size );
3543 if ( ! yy_start_stack )
3545 "out of memory expanding start-condition stack" );
3548 yy_start_stack[yy_start_stack_ptr++] = YY_START;
3555 #ifndef YY_NO_POP_STATE
3556 static void yy_pop_state()
3558 if ( --yy_start_stack_ptr < 0 )
3559 YY_FATAL_ERROR( "start-condition stack underflow" );
3561 BEGIN(yy_start_stack[yy_start_stack_ptr]);
3566 #ifndef YY_NO_TOP_STATE
3567 static int yy_top_state()
3569 return yy_start_stack[yy_start_stack_ptr - 1];
3573 #ifndef YY_EXIT_FAILURE
3574 #define YY_EXIT_FAILURE 2
3577 #ifdef YY_USE_PROTOS
3578 static void yy_fatal_error( yyconst char msg[] )
3580 static void yy_fatal_error( msg )
3584 (void) fprintf( stderr, "%s\n", msg );
3585 exit( YY_EXIT_FAILURE );
3590 /* Redefine yyless() so it works in section 3 code. */
3596 /* Undo effects of setting up yytext. */ \
3597 yytext[yyleng] = yy_hold_char; \
3598 yy_c_buf_p = yytext + n; \
3599 yy_hold_char = *yy_c_buf_p; \
3600 *yy_c_buf_p = '\0'; \
3606 /* Internal utility routines. */
3609 #ifdef YY_USE_PROTOS
3610 static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
3612 static void yy_flex_strncpy( s1, s2, n )
3619 for ( i = 0; i < n; ++i )
3624 #ifdef YY_NEED_STRLEN
3625 #ifdef YY_USE_PROTOS
3626 static int yy_flex_strlen( yyconst char *s )
3628 static int yy_flex_strlen( s )
3633 for ( n = 0; s[n]; ++n )
3641 #ifdef YY_USE_PROTOS
3642 static void *yy_flex_alloc( yy_size_t size )
3644 static void *yy_flex_alloc( size )
3648 return (void *) malloc( size );
3651 #ifdef YY_USE_PROTOS
3652 static void *yy_flex_realloc( void *ptr, yy_size_t size )
3654 static void *yy_flex_realloc( ptr, size )
3659 /* The cast to (char *) in the following accommodates both
3660 * implementations that use char* generic pointers, and those
3661 * that use void* generic pointers. It works with the latter
3662 * because both ANSI C and C++ allow castless assignment from
3663 * any pointer type to void*, and deal with argument conversions
3664 * as though doing an assignment.
3666 return (void *) realloc( (char *) ptr, size );
3669 #ifdef YY_USE_PROTOS
3670 static void yy_flex_free( void *ptr )
3672 static void yy_flex_free( ptr )
3686 #line 734 "../parser.l"
3690 static char *StringToLex;
3692 #ifndef FLEX_SCANNER
3699 if (StringToLex != NULL) {
3701 if (ret == NULLCHAR)
3705 } else if (unputCount > 0) {
3706 ret = unputBuffer[--unputCount];
3718 * Return offset of next pattern within current file
3722 int offset = ftell(lexFP) - unputCount;
3730 static void output(ch)
3733 fprintf(stderr, "PARSER BUG: unmatched character '%c' (0%o)\n",
3737 static void unput(ch)
3740 if (ch == 0) return;
3741 if (StringToLex != NULL) {
3744 if (unputCount >= UNPUT_BUF_SIZE)
3745 fprintf(stderr, "PARSER BUG: unput buffer overflow '%c' (0%o)\n",
3747 unputBuffer[unputCount++] = ch;
3751 /* Get ready to lex from a new file. Kludge below sticks
3752 an artificial newline at the front of the file, which the
3753 above grammar ignores, but which makes ^ at start of pattern
3754 match at the real start of the file.
3762 unput('\n'); /* kludge */
3765 /* Get ready to lex from a string. ^ at start of pattern WON'T
3766 match at the start of the string!
3775 #endif /*!FLEX_SCANNER*/
3778 void my_yy_input(buf, result, max_size)
3785 if (StringToLex != NULL) {
3787 while (*StringToLex != NULLCHAR) {
3788 *buf++ = *StringToLex++;
3794 count = fread(buf, 1, max_size, yyin);
3804 static YY_BUFFER_STATE my_file_buffer = NULL;
3807 Return offset of next pattern in the current file.
3811 int pos = yy_c_buf_p - yy_current_buffer->yy_ch_buf;
3813 return(ftell(yy_current_buffer->yy_input_file) -
3821 if (my_file_buffer != NULL)
3822 yy_delete_buffer(my_file_buffer);
3824 my_file_buffer = yy_create_buffer(stdin, YY_BUF_SIZE);
3825 yy_switch_to_buffer(my_file_buffer);
3831 if (my_file_buffer != NULL)
3832 yy_delete_buffer(my_file_buffer);
3834 my_file_buffer = yy_create_buffer(f, YY_BUF_SIZE);
3835 yy_switch_to_buffer(my_file_buffer);
3837 #endif /*FLEX_SCANNER*/
3844 /* Parse a move from the given string s */
3845 /* ^ at start of pattern WON'T work here unless using flex */
3846 ChessMove yylexstr(boardIndex, s)
3851 char *oldStringToLex;
3853 YY_BUFFER_STATE buffer, oldBuffer;
3856 yyboardindex = boardIndex;
3857 oldStringToLex = StringToLex;
3860 buffer = yy_create_buffer(stdin, YY_BUF_SIZE);
3861 oldBuffer = YY_CURRENT_BUFFER;
3862 yy_switch_to_buffer(buffer);
3863 #endif /*FLEX_SCANNER*/
3865 ret = (ChessMove) yylex();
3868 if (oldBuffer != NULL)
3869 yy_switch_to_buffer(oldBuffer);
3870 yy_delete_buffer(buffer);
3871 #endif /*FLEX_SCANNER*/
3872 StringToLex = oldStringToLex;