1 #define yy_create_buffer __regina_create_buffer
2 #define yy_delete_buffer __regina_delete_buffer
3 #define yy_scan_buffer __regina_scan_buffer
4 #define yy_scan_string __regina_scan_string
5 #define yy_scan_bytes __regina_scan_bytes
6 #define yy_flex_debug __regina_flex_debug
7 #define yy_init_buffer __regina_init_buffer
8 #define yy_flush_buffer __regina_flush_buffer
9 #define yy_load_buffer_state __regina_load_buffer_state
10 #define yy_switch_to_buffer __regina_switch_to_buffer
11 #define yyin __reginain
12 #define yyleng __reginaleng
13 #define yylex __reginalex
14 #define yyout __reginaout
15 #define yyrestart __reginarestart
16 #define yytext __reginatext
17 #define yywrap __reginawrap
20 /* A lexical scanner generated by flex */
22 /* Scanner skeleton version:
27 #define YY_FLEX_MAJOR_VERSION 2
28 #define YY_FLEX_MINOR_VERSION 5
34 /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
48 /* Use prototypes in function declarations. */
51 /* The "const" storage-class-modifier is valid. */
54 #else /* ! __cplusplus */
62 #endif /* ! __cplusplus */
81 #define YY_PROTO(proto) proto
83 #define YY_PROTO(proto) ()
86 /* Returned upon end-of-file. */
89 /* Promotes a possibly negative, possibly signed char to an unsigned
90 * integer for use as an array index. If the signed char is negative,
91 * we want to instead treat it as an 8-bit unsigned char, hence the
94 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
96 /* Enter a start condition. This macro really ought to take a parameter,
97 * but we do it the disgusting crufty way forced on us by the ()-less
98 * definition of BEGIN.
100 #define BEGIN yy_start = 1 + 2 *
102 /* Translate the current start state into a value that can be later handed
103 * to BEGIN to return to the state. The YYSTATE alias is for lex
106 #define YY_START ((yy_start - 1) / 2)
107 #define YYSTATE YY_START
109 /* Action number for EOF rule of a given start state. */
110 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
112 /* Special action meaning "start processing a new file". */
113 #define YY_NEW_FILE yyrestart( yyin )
115 #define YY_END_OF_BUFFER_CHAR 0
117 /* Size of default input buffer. */
118 #define YY_BUF_SIZE 16384
120 typedef struct yy_buffer_state
*YY_BUFFER_STATE
;
124 extern FILE *yyin
, *yyout
;
127 #define EOB_ACT_CONTINUE_SCAN 0
128 #define EOB_ACT_END_OF_FILE 1
129 #define EOB_ACT_LAST_MATCH 2
131 /* The funky do-while in the following #define is used to turn the definition
132 * int a single C statement (which needs a semi-colon terminator). This
133 * avoids problems with code like:
135 * if ( condition_holds )
138 * do_something_else();
140 * Prior to using the do-while the compiler would get upset at the
141 * "else" because it interpreted the "if" statement as being all
142 * done when it reached the ';' after the yyless() call.
145 /* Return all but the first 'n' matched characters back to the input stream. */
150 /* Undo effects of setting up yytext. */ \
151 *yy_cp = yy_hold_char; \
152 YY_RESTORE_YY_MORE_OFFSET \
153 yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
154 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
158 #define unput(c) yyunput( c, yytext_ptr )
160 /* The following is because we cannot portably get our hands on size_t
161 * (without autoconf's help, which isn't available because we want
162 * flex-generated scanners to compile on their own).
164 typedef unsigned int yy_size_t
;
167 struct yy_buffer_state
173 char *yy_ch_buf
; /* input buffer */
174 char *yy_buf_pos
; /* current position in input buffer */
176 /* Size of input buffer in bytes, not including room for EOB
179 yy_size_t yy_buf_size
;
181 /* Number of characters read into yy_ch_buf, not including EOB
186 /* Whether we "own" the buffer - i.e., we know we created it,
187 * and can realloc() it to grow it, and should free() it to
190 int yy_is_our_buffer
;
192 /* Whether this is an "interactive" input source; if so, and
193 * if we're using stdio for input, then we want to use getc()
194 * instead of fread(), to make sure we stop fetching input after
197 int yy_is_interactive
;
199 /* Whether we're considered to be at the beginning of a line.
200 * If so, '^' rules will be active on the next match, otherwise
205 /* Whether to try to fill the input buffer when we reach the
210 int yy_buffer_status
;
211 #define YY_BUFFER_NEW 0
212 #define YY_BUFFER_NORMAL 1
213 /* When an EOF's been seen but there's still some text to process
214 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
215 * shouldn't try reading from the input source any more. We might
216 * still have a bunch of tokens to match, though, because of
217 * possible backing-up.
219 * When we actually see the EOF, we change the status to "new"
220 * (via yyrestart()), so that the user can continue scanning by
221 * just pointing yyin at a new input file.
223 #define YY_BUFFER_EOF_PENDING 2
227 static YY_BUFFER_STATE yy_current_buffer
= 0;
230 /* We provide macros for accessing buffer states in case in the
231 * future we want to put the buffer states in a more general
234 #define YY_CURRENT_BUFFER yy_current_buffer
238 /* yy_hold_char holds the character lost when yytext is formed. */
239 static char yy_hold_char
;
241 static int yy_n_chars
; /* number of characters read into yy_ch_buf */
246 /* Points to current character in buffer. */
247 static char *yy_c_buf_p
= (char *) 0;
248 static int yy_init
= 1; /* whether we need to initialize */
249 static int yy_start
= 0; /* start state number */
251 /* Flag which is used to allow yywrap()'s to do buffer switches
252 * instead of setting up a fresh yyin. A bit of a hack ...
254 static int yy_did_buffer_switch_on_eof
;
256 void yyrestart
YY_PROTO(( FILE *input_file
));
258 void yy_switch_to_buffer
YY_PROTO(( YY_BUFFER_STATE new_buffer
));
259 void yy_load_buffer_state
YY_PROTO(( void ));
260 YY_BUFFER_STATE yy_create_buffer
YY_PROTO(( FILE *file
, int size
));
261 void yy_delete_buffer
YY_PROTO(( YY_BUFFER_STATE b
));
262 void yy_init_buffer
YY_PROTO(( YY_BUFFER_STATE b
, FILE *file
));
263 void yy_flush_buffer
YY_PROTO(( YY_BUFFER_STATE b
));
264 #define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
266 YY_BUFFER_STATE yy_scan_buffer
YY_PROTO(( char *base
, yy_size_t size
));
267 YY_BUFFER_STATE yy_scan_string
YY_PROTO(( yyconst
char *yy_str
));
268 YY_BUFFER_STATE yy_scan_bytes
YY_PROTO(( yyconst
char *bytes
, int len
));
271 static void *yy_flex_alloc
YY_PROTO(( yy_size_t
));
272 static void *yy_flex_realloc
YY_PROTO(( void *, yy_size_t
));
273 static void yy_flex_free
YY_PROTO(( void * ));
275 #define yy_new_buffer yy_create_buffer
277 #define yy_set_interactive(is_interactive) \
279 if ( ! yy_current_buffer ) \
280 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
281 yy_current_buffer->yy_is_interactive = is_interactive; \
284 #define yy_set_bol(at_bol) \
286 if ( ! yy_current_buffer ) \
287 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
288 yy_current_buffer->yy_at_bol = at_bol; \
291 #define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
294 #define YY_USES_REJECT
295 typedef unsigned char YY_CHAR
;
296 FILE *yyin
= (FILE *) 0, *yyout
= (FILE *) 0;
297 typedef int yy_state_type
;
299 #define yytext_ptr yytext
303 static yy_state_type yy_get_previous_state
YY_PROTO(( void ));
304 static yy_state_type yy_try_NUL_trans
YY_PROTO(( yy_state_type current_state
));
305 static int yy_get_next_buffer
YY_PROTO(( void ));
306 static void yy_fatal_error
YY_PROTO(( yyconst
char msg
[] ));
309 /* Done after the current pattern has been matched and before the
310 * corresponding action - sets up yytext.
312 #define YY_DO_BEFORE_ACTION \
313 yytext_ptr = yy_bp; \
314 yyleng = (int) (yy_cp - yy_bp); \
315 yy_hold_char = *yy_cp; \
321 #define YY_NUM_RULES 118
322 #define YY_END_OF_BUFFER 119
323 static yyconst
short int yy_acclist
[1113] =
325 1, 32, 1, 32, 1, 32, 1, 32, 1, 32,
326 1, 32, 1, 32, 1, 32, 1, 32, 1, 32,
327 1, 32, 1, 32, 1, 32, 1, 32, 1, 32,
328 1, 32, 1, 32, 1, 32, 1, 32, 1, 32,
329 1, 32, 1, 32, 1, 32, 1, 32, 1, 32,
330 1, 32, 1, 32, 1, 32, 1, 32, 1, 32,
331 119, 115, 117, 118, 32, 113, 117, 118, 3, 118,
332 115, 117, 118, 83, 117, 118, 114, 117, 118, 90,
333 117, 118, 93, 117, 118, 114, 117, 118, 85, 117,
334 118, 84, 117, 118, 91, 117, 118, 88, 117, 118,
336 86, 117, 118, 87, 117, 118, 33, 82, 117, 118,
337 89, 117, 118, 80, 82, 117, 118, 116, 117, 118,
338 3, 117, 118, 104, 117, 118, 94, 117, 118, 102,
339 117, 118, 83, 117, 118, 83, 117, 118, 83, 117,
340 118, 83, 117, 118, 83, 117, 118, 95, 117, 118,
341 1, 32, 115, 117, 118, 92, 117, 118, 95, 115,
342 117, 118, 32, 113, 117, 118, 83, 117, 118, 33,
343 82, 117, 118, 80, 82, 117, 118, 83, 117, 118,
344 83, 117, 118, 83, 117, 118, 83, 117, 118, 83,
345 117, 118, 83, 117, 118, 83, 117, 118, 83, 117,
347 118, 83, 117, 118, 83, 117, 118, 83, 117, 118,
348 83, 117, 118, 83, 117, 118, 83, 117, 118, 83,
349 117, 118, 83, 117, 118, 83, 117, 118, 1, 32,
350 115, 117, 118, 32, 113, 117, 118, 83, 117, 118,
351 83, 117, 118, 1, 32, 115, 117, 118, 83, 117,
352 118, 83, 117, 118, 83, 117, 118, 83, 117, 118,
353 83, 117, 118, 83, 117, 118, 83, 117, 118, 83,
354 117, 118, 83, 117, 118, 83, 117, 118, 83, 117,
355 118, 83, 117, 118, 83, 117, 118, 83, 117, 118,
356 83, 117, 118, 83, 117, 118, 83, 117, 118, 83,
358 117, 118, 83, 117, 118, 83, 117, 118, 83, 117,
359 118, 83, 117, 118, 83, 117, 118, 32, 113, 117,
360 118, 83, 117, 118, 1, 32, 115, 117, 118, 32,
361 113, 117, 118, 47, 83, 117, 118, 47, 83, 117,
362 118, 47, 83, 117, 118, 47, 83, 117, 118, 47,
363 83, 117, 118, 47, 83, 117, 118, 47, 83, 117,
364 118, 1, 32, 115, 117, 118, 32, 113, 117, 118,
365 2, 3, 118, 2, 115, 117, 118, 2, 3, 117,
366 118, 2, 83, 117, 118, 1, 32, 115, 117, 118,
367 83, 117, 118, 83, 117, 118, 83, 117, 118, 32,
369 113, 3, 90, 93, 84, 91, 88, 86, 87, 89,
370 104, 94, 102, 32, 113, 92, 3, 83, 79, 90,
371 93, 110, 79, 85, 91, 112, 88, 86, 87, 82,
372 81, 82, 89, 109, 80, 82, 82, 104, 97, 105,
373 106, 94, 107, 103, 102, 96, 69, 83, 83, 68,
374 83, 83, 83, 83, 95, 103, 106, 105, 32, 113,
375 1, 32, 92, 111, 32, 113, 32, 113, 83, 74,
376 35, 82, 82, 34, 80, 82, 82, 83, 83, 69,
377 83, 83, 7, 83, 83, 83, 83, 83, 83, 11,
378 83, 83, 83, 83, 83, 83, 83, 83, 83, 83,
380 83, 83, 83, 83, 83, 83, 83, 68, 83, 83,
381 83, 83, 83, 83, 32, 113, 1, 32, 32, 113,
382 32, 113, 83, 37, 83, 83, 32, 113, 1, 32,
383 83, 83, 83, 83, 83, 83, 83, 83, 83, 83,
384 83, 83, 83, 83, 83, 83, 83, 83, 83, 83,
385 73, 69, 83, 83, 68, 83, 83, 83, 83, 32,
386 113, 32, 113, 83, 32, 113, 1, 32, 32, 113,
387 47, 47, 47, 47, 47, 47, 47, 32, 113, 47,
388 47, 83, 47, 69, 83, 47, 83, 47, 68, 83,
389 47, 83, 47, 83, 47, 83, 47, 83, 32, 113,
391 1, 32, 32, 113, 2, 3, 2, 2, 32, 113,
392 2, 3, 2, 32, 113, 1, 32, 83, 83, 83,
393 69, 68, 79, 79, 79, 110, 79, 79, 79, 112,
394 82, 109, 97, 101, 105, 106, 107, 103, 96, 100,
395 69, 70, 83, 68, 83, 83, 83, 103, 99, 102,
396 106, 108, 104, 105, 98, 111, 74, 35, 82, 34,
397 83, 5, 83, 69, 83, 7, 83, 83, 31, 83,
398 83, 70, 83, 11, 83, 83, 83, 16, 83, 83,
399 83, 83, 83, 83, 83, 83, 83, 83, 24, 83,
400 83, 83, 83, 68, 83, 83, 83, 83, 83, 83,
402 38, 83, 37, 83, 83, 83, 83, 83, 83, 83,
403 83, 83, 50, 83, 83, 83, 83, 83, 83, 83,
404 83, 57, 83, 83, 83, 70, 83, 83, 69, 70,
405 83, 68, 83, 83, 83, 83, 47, 69, 47, 47,
406 68, 47, 47, 47, 47, 47, 69, 47, 70, 83,
407 47, 68, 47, 83, 47, 83, 47, 83, 47, 83,
408 83, 83, 83, 70, 75, 79, 77, 78, 76, 78,
409 82, 101, 100, 70, 83, 83, 61, 83, 99, 102,
410 108, 104, 98, 83, 5, 6, 83, 8, 83, 9,
411 83, 31, 10, 83, 70, 83, 83, 83, 16, 83,
413 83, 83, 83, 83, 20, 83, 21, 83, 83, 83,
414 24, 83, 83, 59, 83, 83, 83, 83, 29, 83,
415 83, 61, 83, 38, 83, 83, 83, 41, 83, 83,
416 83, 83, 83, 83, 50, 83, 83, 83, 52, 83,
417 83, 83, 83, 57, 83, 83, 63, 83, 66, 83,
418 70, 83, 83, 83, 61, 83, 60, 83, 47, 70,
419 47, 47, 47, 47, 47, 70, 47, 83, 47, 83,
420 47, 83, 47, 61, 83, 39, 83, 83, 83, 61,
421 78, 72, 83, 71, 83, 61, 59, 83, 6, 8,
422 9, 10, 83, 83, 14, 83, 83, 83, 83, 18,
424 83, 83, 20, 21, 22, 83, 83, 83, 83, 59,
425 27, 83, 72, 83, 28, 83, 29, 71, 83, 61,
426 36, 83, 40, 83, 83, 41, 83, 83, 83, 83,
427 83, 83, 83, 83, 52, 83, 49, 83, 58, 83,
428 83, 83, 63, 66, 83, 72, 83, 71, 83, 61,
429 60, 60, 47, 47, 47, 47, 61, 47, 72, 83,
430 36, 47, 83, 47, 71, 83, 47, 61, 39, 83,
431 83, 72, 71, 72, 71, 59, 83, 83, 83, 14,
432 83, 83, 83, 18, 83, 22, 23, 83, 25, 83,
433 26, 83, 27, 72, 28, 71, 36, 36, 40, 83,
435 83, 83, 83, 45, 83, 48, 83, 83, 55, 83,
436 83, 53, 83, 49, 58, 83, 62, 83, 83, 72,
437 71, 47, 72, 36, 47, 47, 71, 47, 72, 36,
438 47, 47, 71, 83, 83, 4, 83, 83, 13, 83,
439 17, 83, 15, 83, 83, 83, 23, 25, 26, 44,
440 83, 83, 83, 42, 83, 45, 48, 83, 55, 51,
441 83, 53, 56, 83, 62, 67, 83, 83, 83, 4,
442 83, 13, 17, 15, 83, 83, 44, 83, 43, 83,
443 42, 54, 83, 51, 56, 67, 83, 83, 12, 83,
444 30, 83, 19, 83, 83, 43, 54, 83, 83, 12,
446 30, 19, 46, 83, 83, 64, 83, 46, 65, 83,
450 static yyconst
short int yy_accept
[849] =
452 1, 3, 5, 7, 9, 11, 13, 15, 17, 19,
453 21, 23, 25, 27, 29, 31, 33, 35, 37, 39,
454 41, 43, 45, 47, 49, 51, 53, 55, 57, 59,
455 61, 62, 65, 69, 71, 74, 77, 80, 83, 86,
456 89, 92, 95, 98, 101, 104, 107, 111, 114, 118,
457 121, 124, 127, 130, 133, 136, 139, 142, 145, 148,
458 151, 156, 159, 163, 167, 170, 174, 178, 181, 184,
459 187, 190, 193, 196, 199, 202, 205, 208, 211, 214,
460 217, 220, 223, 226, 229, 234, 238, 241, 244, 249,
461 252, 255, 258, 261, 264, 267, 270, 273, 276, 279,
463 282, 285, 288, 291, 294, 297, 300, 303, 306, 309,
464 312, 315, 318, 322, 325, 330, 334, 338, 342, 346,
465 350, 354, 358, 362, 367, 371, 374, 378, 382, 386,
466 391, 394, 397, 400, 402, 403, 403, 404, 405, 406,
467 407, 408, 409, 410, 411, 412, 413, 414, 414, 414,
468 414, 414, 414, 414, 416, 417, 418, 419, 419, 419,
469 420, 420, 420, 420, 421, 422, 423, 423, 423, 424,
470 424, 424, 424, 425, 426, 427, 428, 429, 430, 431,
471 432, 433, 433, 434, 435, 437, 438, 439, 440, 441,
472 442, 443, 444, 445, 446, 447, 449, 450, 452, 453,
474 454, 455, 456, 457, 458, 459, 461, 463, 464, 465,
475 467, 467, 469, 469, 470, 471, 472, 472, 473, 474,
476 475, 475, 477, 478, 479, 480, 482, 483, 485, 486,
477 487, 488, 489, 490, 492, 493, 494, 495, 496, 497,
478 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
479 508, 510, 511, 512, 513, 514, 515, 517, 519, 521,
480 521, 523, 524, 526, 527, 529, 531, 532, 533, 534,
481 535, 536, 537, 538, 539, 540, 541, 542, 543, 544,
482 545, 546, 547, 548, 549, 550, 550, 551, 552, 554,
483 555, 557, 558, 559, 560, 562, 562, 564, 565, 567,
485 569, 571, 572, 573, 574, 575, 576, 577, 578, 580,
486 581, 583, 586, 588, 591, 593, 595, 597, 599, 601,
487 603, 605, 607, 608, 609, 611, 613, 614, 616, 618,
488 619, 620, 621, 622, 622, 623, 623, 623, 623, 623,
489 624, 624, 625, 625, 625, 625, 625, 625, 625, 625,
490 625, 626, 626, 627, 628, 628, 629, 629, 629, 629,
491 629, 629, 630, 630, 631, 632, 633, 633, 634, 635,
492 636, 637, 638, 639, 640, 641, 642, 644, 645, 646,
493 647, 648, 649, 650, 651, 652, 653, 654, 655, 656,
494 657, 657, 658, 659, 660, 661, 662, 664, 665, 666,
496 667, 668, 669, 671, 672, 674, 675, 676, 677, 678,
497 680, 681, 682, 683, 684, 685, 686, 687, 688, 689,
498 691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
499 701, 701, 703, 704, 705, 706, 707, 708, 709, 710,
500 711, 712, 713, 715, 716, 717, 718, 719, 720, 721,
501 722, 724, 725, 726, 728, 729, 730, 732, 733, 734,
502 735, 736, 736, 737, 739, 740, 742, 743, 744, 745,
503 746, 748, 751, 753, 755, 757, 759, 761, 762, 763,
504 764, 765, 765, 765, 765, 766, 766, 766, 766, 766,
505 766, 767, 769, 771, 771, 771, 771, 771, 771, 771,
507 771, 771, 771, 771, 771, 772, 773, 774, 775, 776,
508 777, 779, 780, 781, 782, 783, 784, 784, 785, 786,
509 788, 790, 792, 793, 795, 796, 797, 798, 799, 800,
510 801, 802, 803, 804, 805, 807, 809, 810, 811, 812,
511 813, 814, 816, 817, 818, 819, 821, 822, 824, 824,
512 825, 826, 827, 828, 830, 831, 832, 833, 834, 835,
513 836, 837, 838, 839, 841, 842, 843, 844, 845, 846,
514 847, 849, 851, 852, 853, 854, 855, 857, 857, 859,
515 861, 862, 863, 864, 865, 867, 869, 871, 873, 876,
516 878, 879, 880, 880, 880, 881, 882, 882, 882, 882,
518 882, 882, 882, 882, 882, 882, 882, 882, 882, 882,
519 882, 882, 882, 882, 882, 884, 886, 887, 888, 889,
520 890, 891, 892, 893, 894, 895, 897, 898, 899, 900,
521 902, 903, 904, 905, 907, 908, 909, 910, 911, 913,
522 915, 917, 918, 920, 921, 921, 923, 925, 926, 927,
523 928, 929, 930, 931, 932, 933, 934, 935, 936, 937,
524 939, 941, 942, 943, 944, 945, 946, 948, 950, 951,
525 952, 953, 954, 955, 956, 958, 961, 964, 967, 969,
526 970, 971, 972, 973, 974, 974, 974, 974, 974, 974,
527 974, 974, 974, 974, 974, 974, 974, 975, 976, 977,
529 978, 979, 980, 981, 982, 983, 984, 985, 986, 987,
530 989, 991, 993, 994, 995, 996, 997, 998, 999, 1000,
531 1001, 1002, 1003, 1004, 1006, 1008, 1009, 1011, 1012, 1014,
532 1015, 1016, 1017, 1019, 1020, 1021, 1022, 1024, 1026, 1028,
533 1030, 1032, 1034, 1035, 1036, 1036, 1036, 1036, 1036, 1036,
534 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
535 1036, 1036, 1036, 1038, 1039, 1041, 1043, 1045, 1046, 1047,
536 1048, 1049, 1050, 1052, 1053, 1054, 1056, 1057, 1058, 1059,
537 1060, 1062, 1063, 1065, 1066, 1068, 1069, 1070, 1070, 1070,
538 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
540 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1081,
541 1082, 1084, 1085, 1086, 1087, 1088, 1089, 1089, 1089, 1089,
542 1089, 1089, 1089, 1089, 1089, 1091, 1093, 1095, 1096, 1097,
543 1098, 1099, 1100, 1100, 1100, 1100, 1100, 1101, 1102, 1103,
544 1105, 1106, 1108, 1109, 1111, 1112, 1113, 1113
547 static yyconst
int yy_ec
[256] =
549 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
550 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
551 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
552 1, 5, 6, 7, 6, 6, 8, 9, 10, 11,
553 12, 13, 14, 15, 16, 17, 18, 19, 19, 20,
554 20, 20, 20, 20, 20, 20, 20, 21, 22, 23,
555 24, 25, 26, 6, 27, 28, 29, 30, 31, 32,
556 33, 34, 35, 36, 36, 37, 38, 39, 40, 41,
557 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
558 1, 52, 1, 52, 6, 53, 27, 28, 29, 30,
560 31, 32, 33, 34, 35, 36, 36, 37, 38, 39,
561 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
562 50, 51, 1, 54, 1, 55, 1, 1, 1, 1,
563 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
564 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
565 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
566 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
567 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
568 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
569 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
571 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
572 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
573 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
574 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
575 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
579 static yyconst
int yy_meta
[56] =
581 1, 2, 1, 1, 2, 3, 1, 1, 1, 1,
582 4, 1, 1, 1, 1, 1, 3, 1, 3, 3,
583 5, 1, 1, 6, 1, 7, 7, 7, 7, 7,
584 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
585 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
589 static yyconst
short int yy_base
[861] =
591 0, 0, 55, 0, 109, 110, 85, 89, 2036, 2013,
592 100, 127, 0, 0, 0, 0, 100, 104, 169, 0,
593 133, 138, 220, 0, 274, 279, 1993, 1978, 284, 286,
594 2014, 3224, 338, 140, 2002, 0, 392, 285, 302, 444,
595 292, 3224, 316, 304, 311, 318, 141, 363, 356, 3224,
596 372, 377, 383, 408, 1952, 1956, 1955, 1933, 135, 432,
597 412, 413, 445, 433, 438, 482, 534, 475, 129, 265,
598 137, 451, 282, 477, 305, 449, 474, 481, 146, 396,
599 499, 503, 482, 514, 536, 545, 86, 1939, 554, 1922,
600 253, 1937, 1916, 1915, 1897, 1883, 1886, 1873, 1873, 1841,
602 1836, 1841, 112, 154, 1841, 142, 508, 558, 562, 564,
603 566, 575, 568, 150, 573, 627, 681, 686, 115, 294,
604 260, 276, 394, 574, 692, 591, 705, 595, 632, 688,
605 1846, 1811, 1818, 0, 697, 1843, 707, 711, 3224, 717,
606 719, 721, 723, 730, 738, 742, 754, 1792, 1782, 1773,
607 1764, 324, 779, 0, 744, 752, 0, 1789, 831, 567,
608 766, 787, 883, 788, 811, 794, 1760, 914, 575, 812,
609 816, 966, 820, 826, 822, 840, 841, 847, 430, 3224,
610 837, 541, 865, 869, 878, 885, 902, 927, 875, 903,
611 934, 935, 947, 958, 948, 959, 1723, 960, 1719, 1725,
613 1713, 997, 1001, 1003, 1005, 0, 964, 987, 1013, 1014,
614 338, 1029, 1031, 255, 1030, 1037, 1041, 792, 603, 1042,
615 1067, 0, 959, 582, 848, 1043, 674, 1055, 712, 603,
616 708, 745, 739, 1059, 1008, 823, 1049, 1063, 1067, 1070,
617 887, 743, 1071, 1079, 1087, 1089, 1094, 1038, 1095, 1096,
618 1131, 1113, 1105, 1111, 1116, 1112, 1158, 1160, 1162, 1727,
619 1167, 1716, 1166, 1709, 1171, 1175, 1693, 1696, 1692, 1681,
620 351, 1685, 1657, 1654, 1635, 1616, 1597, 1587, 1570, 1573,
621 352, 1569, 1573, 1562, 1531, 1173, 1177, 3224, 1183, 1184,
622 1188, 1193, 1197, 1229, 1238, 408, 1240, 1541, 1242, 1247,
624 0, 1246, 1252, 1254, 1256, 1258, 1262, 1279, 0, 1263,
625 1517, 1267, 408, 1268, 639, 750, 556, 765, 0, 1273,
626 0, 1274, 1301, 1275, 0, 1296, 1317, 0, 1328, 1507,
627 1510, 1504, 1329, 1492, 1333, 1488, 1493, 1473, 1334, 1138,
628 972, 1318, 1342, 1343, 1503, 0, 0, 1350, 1402, 1358,
629 1357, 1371, 1335, 1364, 1378, 1388, 1389, 1433, 1400, 1485,
630 1444, 1416, 1454, 1407, 1447, 1418, 384, 1423, 1443, 1470,
631 1472, 1477, 1478, 1479, 1483, 1487, 1489, 1493, 1466, 1456,
632 1434, 1497, 1504, 1506, 1524, 1517, 1522, 1539, 1532, 1549,
633 1430, 1550, 1551, 1541, 1560, 905, 1564, 1566, 1186, 1574,
635 1140, 1543, 1578, 1548, 1579, 1594, 1558, 1280, 1371, 1595,
636 1580, 1427, 1598, 1590, 1313, 1600, 1606, 1596, 1614, 1648,
637 1615, 1622, 1624, 1664, 1641, 1621, 1643, 1629, 1646, 1647,
638 1414, 1677, 1690, 1404, 1400, 1402, 1391, 1370, 1357, 1366,
639 1344, 1344, 1691, 1348, 1341, 1320, 1304, 1281, 1281, 1262,
640 1692, 1246, 1253, 1697, 1235, 1698, 1702, 1703, 1704, 1710,
641 1708, 1240, 1227, 1709, 1716, 1714, 1735, 1736, 1718, 1747,
642 1763, 1770, 1772, 794, 681, 1316, 751, 1231, 1220, 1208,
643 1774, 1200, 1196, 1191, 3224, 0, 561, 1776, 1780, 1782,
644 823, 3224, 3224, 1834, 1865, 1788, 1896, 1789, 1807, 1826,
646 1948, 1979, 1800, 2010, 1795, 1781, 1816, 1827, 1173, 1175,
647 1835, 1836, 1847, 1853, 1854, 1866, 1165, 1767, 1881, 1908,
648 1909, 1916, 1939, 1940, 1980, 1632, 1847, 1900, 1992, 1774,
649 1869, 1781, 1905, 1943, 2016, 2017, 1957, 1800, 2029, 1928,
650 1848, 2021, 1960, 1814, 1874, 2022, 2005, 2053, 1154, 2023,
651 1165, 1151, 1146, 2052, 1128, 1122, 1094, 1102, 1077, 2066,
652 1064, 1068, 1056, 2075, 1058, 1037, 1046, 2076, 1036, 1025,
653 2082, 2083, 2084, 2092, 2088, 2090, 2096, 1024, 2097, 2098,
654 2105, 2113, 2125, 2121, 2129, 1883, 856, 973, 2142, 2151,
655 1010, 998, 977, 978, 2152, 3224, 1935, 2158, 2162, 2166,
657 2167, 0, 2182, 2189, 0, 2174, 2178, 2197, 2204, 2198,
658 0, 2208, 2219, 0, 2220, 2228, 2232, 2234, 2202, 2238,
659 2239, 2246, 2247, 2081, 2103, 2253, 2074, 2122, 2013, 2264,
660 2019, 2274, 2284, 2272, 2245, 2145, 2036, 2288, 2299, 2308,
661 2314, 2309, 2316, 2326, 953, 2318, 2330, 927, 2334, 919,
662 920, 877, 871, 861, 847, 843, 837, 2338, 824, 2343,
663 2351, 797, 764, 2353, 2358, 2368, 2370, 2376, 2383, 2363,
664 2372, 2393, 2384, 2388, 2400, 2407, 2408, 2412, 2422, 2426,
665 722, 688, 2430, 2437, 2445, 2449, 2454, 2461, 2465, 2467,
666 2472, 2476, 2483, 2487, 2491, 2492, 2498, 2499, 2503, 2390,
668 2177, 2483, 2507, 2235, 2477, 2487, 2513, 2486, 2522, 2531,
669 2533, 2537, 2548, 2557, 2568, 2583, 2542, 2543, 2552, 698,
670 682, 608, 553, 2553, 2563, 556, 2577, 533, 2589, 2595,
671 2597, 501, 2606, 2610, 2615, 2617, 2621, 2622, 2623, 2627,
672 2633, 2635, 500, 479, 2642, 2650, 2660, 2680, 2687, 2691,
673 2695, 2702, 0, 2706, 2710, 2717, 2732, 2733, 2748, 2752,
674 2759, 0, 2744, 2615, 2763, 2770, 2774, 2634, 2354, 2775,
675 2786, 2787, 2679, 447, 410, 2779, 2793, 2813, 416, 2817,
676 2819, 2824, 2828, 2829, 2833, 409, 373, 2840, 2846, 2856,
677 2866, 2882, 2726, 2850, 2878, 2902, 2903, 2913, 2909, 2874,
679 2588, 2915, 2924, 2928, 2687, 2806, 2839, 335, 2889, 2932,
680 2936, 2938, 2942, 2948, 314, 279, 2952, 2956, 2960, 2965,
681 2978, 2988, 2994, 2998, 3006, 3010, 3014, 258, 2971, 3016,
682 148, 119, 3018, 3020, 3024, 3028, 3030, 3040, 3050, 3060,
683 80, 3068, 3070, 3074, 3075, 3076, 3224, 3127, 3134, 3142,
684 3148, 3155, 3162, 3169, 3176, 3183, 3191, 3199, 3207, 3215
687 static yyconst
short int yy_def
[861] =
689 847, 1, 847, 3, 1, 1, 1, 1, 1, 1,
690 1, 1, 1, 1, 1, 1, 1, 1, 1, 19,
691 1, 1, 847, 23, 1, 1, 1, 1, 1, 1,
692 847, 847, 847, 847, 847, 848, 849, 847, 847, 850,
693 847, 847, 847, 847, 847, 847, 851, 847, 851, 847,
694 847, 847, 847, 847, 848, 848, 848, 848, 848, 847,
695 33, 847, 847, 33, 852, 853, 853, 852, 68, 68,
696 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
697 68, 68, 68, 68, 33, 33, 848, 848, 33, 848,
698 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
700 848, 848, 848, 848, 848, 848, 854, 854, 854, 854,
701 854, 854, 33, 848, 33, 847, 855, 855, 118, 118,
702 118, 118, 118, 116, 33, 847, 847, 847, 848, 125,
703 848, 848, 848, 33, 847, 847, 847, 847, 847, 847,
704 847, 847, 847, 847, 847, 847, 847, 847, 847, 847,
705 847, 847, 847, 33, 847, 847, 848, 849, 849, 847,
706 159, 159, 159, 847, 847, 847, 850, 850, 847, 168,
707 168, 168, 847, 847, 847, 847, 847, 847, 851, 847,
708 851, 847, 847, 847, 851, 851, 847, 847, 847, 847,
709 847, 847, 847, 847, 847, 848, 848, 848, 848, 848,
711 848, 847, 847, 847, 847, 33, 33, 847, 847, 33,
712 847, 33, 847, 68, 847, 847, 847, 67, 67, 847,
713 847, 67, 67, 68, 68, 68, 68, 68, 68, 68,
714 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
715 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
716 68, 68, 68, 68, 68, 68, 33, 33, 33, 847,
717 33, 848, 848, 848, 33, 33, 848, 848, 848, 848,
718 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
719 848, 848, 848, 848, 848, 847, 854, 847, 854, 854,
720 854, 854, 854, 854, 33, 847, 33, 848, 33, 33,
722 116, 856, 856, 856, 856, 856, 856, 856, 116, 847,
723 118, 118, 118, 118, 118, 118, 118, 118, 116, 116,
724 125, 847, 847, 847, 125, 847, 847, 125, 125, 848,
725 848, 848, 847, 847, 847, 847, 847, 847, 847, 847,
726 159, 847, 159, 159, 857, 858, 859, 159, 159, 159,
727 847, 349, 847, 847, 168, 847, 168, 168, 168, 168,
728 168, 847, 360, 847, 851, 847, 847, 847, 847, 847,
729 847, 847, 847, 847, 847, 847, 848, 847, 848, 848,
730 848, 847, 847, 847, 847, 847, 847, 847, 847, 847,
731 847, 847, 847, 67, 847, 68, 68, 847, 68, 847,
733 68, 68, 68, 68, 68, 847, 68, 68, 68, 68,
734 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
735 68, 68, 68, 847, 68, 68, 68, 68, 68, 68,
736 847, 848, 847, 848, 848, 848, 848, 848, 848, 848,
737 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
738 848, 848, 848, 848, 848, 847, 854, 847, 854, 854,
739 854, 847, 848, 856, 856, 856, 856, 856, 856, 856,
740 847, 118, 847, 118, 118, 118, 118, 848, 848, 848,
741 847, 847, 847, 847, 847, 860, 847, 159, 159, 159,
742 847, 847, 847, 349, 849, 495, 495, 168, 168, 168,
744 360, 850, 502, 502, 847, 847, 847, 847, 848, 848,
745 848, 847, 847, 847, 847, 847, 847, 68, 847, 68,
746 68, 68, 847, 68, 847, 68, 68, 68, 847, 68,
747 68, 68, 68, 68, 68, 68, 68, 68, 847, 68,
748 68, 68, 68, 68, 68, 68, 68, 68, 847, 847,
749 848, 848, 848, 848, 848, 848, 848, 848, 848, 847,
750 848, 848, 848, 848, 848, 848, 848, 847, 848, 848,
751 848, 848, 847, 854, 854, 854, 854, 847, 848, 856,
752 856, 856, 856, 856, 847, 118, 118, 118, 118, 848,
753 848, 848, 847, 847, 847, 847, 159, 159, 159, 497,
755 497, 497, 349, 349, 497, 168, 168, 168, 504, 504,
756 504, 360, 360, 504, 848, 848, 847, 847, 68, 847,
757 847, 847, 847, 68, 68, 68, 68, 68, 68, 68,
758 68, 847, 847, 68, 68, 68, 68, 847, 68, 68,
759 68, 847, 68, 847, 847, 848, 848, 848, 847, 848,
760 848, 848, 848, 848, 848, 848, 848, 847, 848, 848,
761 848, 848, 848, 847, 847, 854, 854, 854, 847, 847,
762 847, 856, 856, 856, 856, 118, 118, 118, 847, 847,
763 848, 848, 847, 847, 497, 497, 497, 497, 497, 495,
764 504, 504, 504, 504, 504, 502, 847, 847, 847, 68,
766 68, 68, 847, 68, 68, 68, 847, 68, 847, 68,
767 68, 68, 847, 847, 847, 847, 847, 847, 847, 848,
768 848, 848, 848, 848, 848, 848, 848, 848, 848, 847,
769 847, 848, 848, 854, 847, 847, 856, 856, 856, 847,
770 847, 847, 848, 848, 497, 497, 497, 497, 497, 497,
771 497, 497, 349, 504, 504, 504, 504, 504, 504, 504,
772 504, 360, 68, 68, 68, 68, 68, 68, 68, 847,
773 847, 847, 848, 848, 848, 848, 847, 847, 848, 847,
774 848, 847, 848, 847, 854, 848, 848, 497, 497, 497,
775 497, 497, 497, 504, 504, 504, 504, 504, 504, 847,
777 68, 847, 847, 847, 68, 68, 847, 848, 848, 847,
778 848, 847, 847, 847, 848, 848, 497, 497, 497, 497,
779 504, 504, 504, 504, 68, 68, 68, 848, 847, 847,
780 848, 848, 497, 497, 504, 504, 847, 847, 847, 848,
781 848, 848, 847, 848, 847, 847, 0, 847, 847, 847,
782 847, 847, 847, 847, 847, 847, 847, 847, 847, 847
785 static yyconst
short int yy_nxt
[3280] =
787 32, 33, 34, 35, 33, 36, 37, 38, 39, 40,
788 41, 42, 43, 44, 45, 46, 47, 48, 49, 49,
789 50, 51, 52, 53, 54, 36, 36, 55, 36, 36,
790 36, 56, 36, 36, 36, 36, 36, 36, 36, 36,
791 36, 36, 36, 36, 57, 58, 36, 59, 36, 36,
792 36, 60, 61, 62, 63, 32, 64, 34, 35, 64,
793 65, 37, 38, 39, 40, 41, 42, 43, 44, 45,
794 46, 66, 48, 67, 67, 50, 51, 52, 53, 54,
795 65, 68, 69, 70, 71, 72, 73, 65, 65, 74,
796 65, 75, 65, 76, 77, 78, 79, 80, 81, 82,
798 83, 65, 84, 65, 65, 65, 60, 85, 62, 63,
799 86, 86, 844, 86, 86, 90, 91, 262, 92, 90,
800 91, 93, 92, 94, 263, 93, 97, 94, 95, 105,
801 98, 106, 95, 105, 113, 106, 99, 113, 100, 113,
802 101, 156, 113, 102, 156, 103, 104, 842, 87, 87,
803 199, 180, 280, 97, 313, 88, 88, 98, 214, 181,
804 181, 89, 89, 99, 311, 100, 214, 101, 200, 201,
805 102, 214, 103, 104, 107, 214, 228, 114, 226, 229,
806 281, 284, 114, 298, 282, 115, 841, 285, 214, 198,
807 115, 245, 156, 182, 107, 107, 108, 107, 107, 107,
809 109, 107, 107, 107, 107, 107, 107, 107, 107, 107,
810 107, 107, 107, 110, 111, 107, 112, 107, 107, 107,
811 32, 116, 34, 35, 116, 36, 37, 38, 39, 40,
812 41, 42, 43, 44, 45, 46, 47, 48, 49, 49,
813 50, 51, 52, 53, 54, 117, 117, 118, 117, 117,
814 117, 119, 117, 117, 117, 117, 117, 117, 117, 117,
815 117, 117, 117, 117, 120, 121, 122, 123, 117, 117,
816 117, 60, 124, 62, 63, 125, 126, 127, 125, 268,
817 125, 126, 127, 125, 214, 86, 164, 86, 86, 164,
818 86, 227, 197, 173, 214, 128, 173, 214, 315, 129,
820 128, 840, 316, 165, 129, 176, 165, 214, 176, 311,
821 166, 214, 177, 832, 132, 177, 132, 174, 114, 178,
822 174, 233, 178, 114, 214, 311, 130, 133, 175, 133,
823 88, 130, 88, 314, 214, 237, 89, 164, 89, 134,
824 135, 136, 134, 311, 173, 137, 138, 214, 831, 139,
825 140, 141, 142, 143, 165, 144, 176, 337, 338, 135,
826 145, 146, 147, 177, 183, 148, 180, 183, 174, 149,
827 178, 391, 181, 156, 185, 185, 156, 335, 187, 828,
828 184, 187, 150, 151, 191, 152, 186, 191, 450, 153,
829 154, 155, 153, 159, 451, 439, 159, 440, 160, 188,
831 189, 190, 505, 505, 816, 189, 192, 193, 182, 194,
832 161, 162, 194, 206, 208, 183, 206, 208, 162, 162,
833 162, 162, 162, 162, 156, 214, 246, 317, 318, 187,
834 190, 193, 195, 202, 210, 191, 202, 210, 214, 213,
835 180, 462, 213, 311, 163, 168, 202, 335, 168, 202,
836 472, 815, 811, 169, 203, 204, 205, 311, 215, 809,
837 194, 216, 170, 171, 207, 208, 209, 203, 204, 205,
838 171, 171, 171, 171, 171, 171, 213, 211, 214, 213,
839 214, 808, 182, 217, 202, 212, 217, 230, 238, 231,
840 213, 214, 180, 214, 239, 215, 172, 202, 216, 232,
842 219, 219, 215, 214, 224, 220, 214, 242, 234, 286,
843 214, 214, 286, 787, 240, 235, 214, 225, 241, 214,
844 253, 236, 254, 243, 214, 247, 244, 213, 214, 248,
845 786, 288, 214, 249, 221, 217, 250, 257, 217, 783,
846 257, 214, 251, 214, 180, 252, 259, 255, 256, 259,
847 219, 180, 222, 222, 215, 265, 214, 220, 265, 286,
848 286, 781, 286, 286, 223, 286, 286, 286, 286, 295,
849 286, 485, 295, 345, 299, 319, 286, 299, 319, 286,
850 211, 288, 779, 776, 167, 288, 221, 288, 258, 288,
851 476, 260, 326, 182, 346, 326, 326, 261, 288, 326,
853 260, 290, 346, 291, 292, 311, 266, 289, 293, 294,
854 286, 396, 296, 487, 286, 347, 286, 296, 286, 218,
855 297, 394, 394, 347, 214, 300, 320, 286, 301, 135,
856 136, 301, 214, 327, 137, 138, 327, 775, 139, 140,
857 141, 142, 143, 326, 144, 214, 402, 326, 135, 145,
858 146, 147, 302, 302, 303, 302, 302, 302, 304, 302,
859 302, 302, 302, 302, 302, 302, 302, 302, 302, 302,
860 302, 305, 306, 307, 308, 302, 302, 302, 153, 309,
861 155, 153, 310, 474, 327, 310, 157, 310, 311, 328,
862 310, 157, 328, 321, 322, 323, 321, 157, 156, 157,
864 157, 156, 157, 214, 157, 157, 327, 135, 164, 327,
865 399, 164, 165, 322, 774, 165, 214, 324, 174, 166,
866 176, 174, 177, 176, 178, 177, 587, 178, 773, 175,
867 311, 183, 744, 310, 183, 312, 296, 403, 310, 187,
868 329, 214, 187, 191, 325, 208, 191, 184, 208, 156,
869 214, 401, 743, 156, 214, 194, 156, 327, 194, 164,
870 188, 189, 190, 165, 189, 192, 193, 348, 214, 174,
871 348, 176, 214, 177, 214, 178, 190, 193, 195, 404,
872 339, 405, 183, 339, 589, 414, 475, 214, 350, 164,
873 187, 350, 164, 351, 191, 353, 208, 209, 353, 311,
875 311, 203, 204, 205, 156, 344, 194, 733, 218, 477,
876 218, 218, 165, 359, 311, 165, 359, 361, 349, 166,
877 361, 173, 218, 364, 173, 362, 364, 174, 586, 345,
878 174, 339, 341, 485, 358, 341, 732, 342, 175, 352,
879 164, 176, 177, 311, 176, 177, 353, 180, 178, 343,
880 344, 178, 214, 408, 729, 365, 365, 344, 344, 344,
881 344, 344, 344, 165, 360, 214, 183, 186, 363, 183,
882 366, 728, 173, 366, 364, 487, 370, 214, 174, 370,
883 397, 727, 184, 163, 159, 726, 677, 159, 180, 182,
884 214, 725, 176, 177, 181, 180, 185, 185, 367, 178,
886 367, 161, 162, 187, 371, 311, 187, 371, 186, 162,
887 162, 162, 162, 162, 162, 355, 214, 183, 355, 724,
888 413, 366, 723, 356, 188, 189, 190, 370, 368, 214,
889 182, 368, 357, 358, 214, 191, 372, 182, 191, 372,
890 358, 358, 358, 358, 358, 358, 722, 518, 373, 374,
891 369, 373, 374, 721, 187, 371, 189, 192, 193, 194,
892 376, 378, 194, 376, 378, 206, 172, 168, 206, 720,
893 168, 375, 367, 488, 367, 218, 488, 218, 218, 368,
894 190, 193, 195, 717, 170, 171, 191, 372, 208, 218,
895 489, 208, 171, 171, 171, 171, 171, 171, 202, 373,
897 374, 202, 382, 678, 385, 382, 388, 385, 684, 388,
898 194, 376, 378, 683, 390, 210, 207, 390, 210, 203,
899 204, 205, 311, 383, 384, 384, 386, 387, 387, 389,
900 210, 392, 213, 210, 392, 213, 682, 214, 393, 208,
901 209, 393, 217, 395, 398, 217, 395, 398, 681, 202,
902 214, 215, 407, 382, 216, 385, 400, 388, 211, 400,
903 406, 215, 670, 406, 220, 390, 212, 214, 217, 663,
904 662, 217, 214, 211, 421, 409, 661, 180, 214, 660,
905 214, 212, 392, 213, 214, 214, 659, 215, 214, 393,
906 220, 214, 214, 217, 395, 398, 214, 214, 657, 214,
908 214, 214, 656, 410, 411, 214, 655, 400, 214, 214,
909 415, 406, 214, 214, 412, 416, 214, 418, 214, 221,
910 654, 214, 417, 214, 214, 214, 423, 422, 653, 214,
911 652, 214, 424, 419, 214, 424, 214, 214, 214, 425,
912 214, 214, 214, 420, 345, 214, 428, 214, 485, 426,
913 429, 427, 651, 214, 214, 214, 430, 650, 214, 210,
914 214, 257, 210, 259, 257, 486, 259, 433, 259, 214,
915 433, 259, 259, 214, 286, 259, 265, 286, 286, 265,
916 521, 286, 214, 424, 456, 286, 486, 456, 286, 458,
917 487, 648, 458, 647, 286, 646, 288, 286, 286, 645,
919 288, 286, 211, 618, 211, 616, 288, 288, 260, 615,
920 212, 288, 258, 260, 261, 214, 288, 260, 433, 261,
921 288, 260, 520, 261, 595, 286, 457, 266, 214, 286,
922 286, 460, 594, 286, 593, 456, 286, 459, 592, 295,
923 458, 295, 295, 295, 295, 286, 295, 310, 299, 286,
924 310, 299, 288, 310, 591, 310, 310, 310, 310, 310,
925 310, 590, 310, 310, 310, 579, 310, 310, 471, 473,
926 578, 471, 473, 461, 319, 326, 327, 319, 326, 327,
927 310, 286, 296, 310, 296, 572, 296, 570, 468, 569,
928 297, 296, 297, 465, 297, 466, 467, 326, 310, 300,
930 326, 464, 327, 135, 310, 327, 310, 567, 310, 214,
931 310, 566, 469, 470, 310, 310, 311, 311, 327, 471,
932 473, 327, 527, 565, 345, 320, 326, 327, 485, 328,
933 376, 310, 328, 376, 378, 339, 353, 378, 339, 353,
934 564, 534, 214, 490, 350, 346, 490, 350, 326, 351,
935 563, 490, 588, 327, 490, 214, 203, 204, 205, 350,
936 489, 344, 350, 345, 351, 311, 347, 485, 489, 327,
937 487, 562, 497, 167, 485, 497, 344, 351, 561, 498,
938 329, 376, 498, 559, 486, 378, 339, 353, 558, 496,
939 500, 486, 557, 500, 349, 352, 499, 167, 485, 556,
941 214, 500, 349, 494, 500, 347, 494, 499, 364, 487,
942 352, 364, 486, 214, 555, 346, 487, 528, 499, 366,
943 495, 496, 366, 352, 368, 167, 485, 368, 496, 496,
944 496, 496, 496, 496, 361, 554, 347, 361, 553, 552,
945 487, 360, 362, 486, 506, 361, 369, 506, 361, 551,
946 549, 358, 360, 362, 349, 504, 214, 180, 504, 364,
947 517, 531, 358, 362, 347, 365, 365, 511, 487, 214,
948 366, 370, 503, 371, 370, 368, 371, 186, 372, 373,
949 374, 372, 373, 374, 507, 363, 501, 507, 376, 501,
950 508, 376, 510, 508, 378, 506, 363, 378, 382, 182,
952 509, 382, 375, 502, 503, 512, 363, 513, 512, 491,
953 513, 503, 503, 503, 503, 503, 503, 484, 514, 383,
954 384, 514, 370, 515, 371, 385, 515, 483, 385, 372,
955 373, 374, 482, 516, 481, 507, 516, 360, 480, 376,
956 388, 508, 479, 388, 478, 378, 384, 386, 387, 382,
957 390, 392, 393, 390, 392, 393, 512, 218, 513, 394,
958 394, 395, 387, 389, 395, 519, 311, 398, 519, 514,
959 398, 463, 214, 522, 515, 400, 385, 214, 400, 523,
960 525, 455, 523, 525, 516, 214, 215, 214, 526, 216,
961 214, 388, 524, 214, 215, 406, 529, 216, 406, 529,
963 214, 390, 392, 393, 454, 453, 214, 214, 214, 214,
964 530, 452, 395, 449, 215, 448, 519, 216, 398, 214,
965 214, 214, 214, 447, 214, 214, 400, 214, 532, 214,
966 523, 525, 214, 533, 446, 214, 535, 214, 214, 536,
967 214, 537, 214, 214, 214, 540, 406, 529, 214, 539,
968 214, 214, 539, 214, 445, 544, 214, 214, 214, 538,
969 541, 214, 542, 214, 214, 424, 214, 546, 424, 543,
970 214, 214, 214, 545, 624, 214, 214, 214, 550, 444,
971 548, 550, 547, 214, 215, 214, 443, 216, 214, 214,
972 214, 433, 560, 568, 433, 560, 568, 442, 508, 456,
974 539, 508, 456, 573, 458, 286, 573, 458, 286, 286,
975 471, 286, 286, 471, 286, 473, 424, 310, 473, 310,
976 310, 288, 310, 441, 438, 288, 288, 288, 437, 550,
977 436, 288, 574, 288, 571, 435, 310, 310, 575, 310,
978 310, 577, 433, 560, 568, 434, 576, 432, 310, 508,
979 456, 310, 583, 431, 573, 458, 286, 381, 580, 380,
980 286, 471, 286, 379, 471, 377, 473, 471, 310, 354,
981 310, 585, 582, 473, 585, 508, 473, 597, 508, 581,
982 597, 599, 506, 599, 599, 506, 599, 310, 310, 604,
983 606, 584, 604, 606, 598, 340, 214, 619, 598, 310,
985 598, 613, 336, 214, 613, 180, 604, 607, 608, 214,
986 214, 608, 335, 505, 505, 471, 627, 507, 613, 311,
987 507, 334, 585, 629, 473, 607, 508, 608, 508, 214,
988 608, 508, 349, 506, 349, 600, 617, 512, 600, 617,
989 512, 333, 635, 214, 607, 135, 332, 182, 513, 331,
990 640, 513, 601, 602, 514, 515, 214, 514, 515, 360,
991 602, 602, 602, 602, 602, 602, 603, 516, 507, 603,
992 516, 340, 330, 625, 637, 283, 214, 214, 360, 508,
993 279, 278, 519, 603, 604, 519, 277, 617, 512, 214,
994 214, 604, 604, 604, 604, 604, 604, 605, 214, 513,
996 605, 215, 351, 214, 216, 514, 515, 276, 628, 620,
997 621, 214, 620, 621, 602, 602, 641, 622, 516, 676,
998 622, 275, 602, 602, 602, 602, 602, 602, 274, 214,
999 626, 273, 311, 519, 214, 630, 597, 214, 214, 597,
1000 523, 623, 214, 523, 623, 214, 272, 214, 352, 609,
1001 214, 214, 609, 598, 271, 270, 636, 214, 214, 215,
1002 620, 621, 216, 269, 267, 264, 610, 611, 622, 214,
1003 214, 199, 214, 631, 611, 611, 611, 611, 611, 611,
1004 612, 525, 214, 612, 525, 214, 214, 634, 354, 214,
1005 639, 523, 623, 529, 198, 197, 529, 612, 613, 214,
1007 215, 196, 214, 216, 135, 613, 613, 613, 613, 613,
1008 613, 614, 215, 847, 614, 216, 131, 632, 633, 362,
1009 632, 633, 638, 642, 550, 638, 642, 550, 611, 611,
1010 539, 131, 525, 539, 214, 643, 611, 611, 611, 611,
1011 611, 611, 214, 96, 529, 214, 214, 214, 708, 215,
1012 214, 214, 216, 649, 644, 214, 649, 644, 214, 214,
1013 706, 214, 363, 214, 214, 214, 96, 560, 632, 633,
1014 560, 847, 712, 638, 642, 550, 658, 568, 214, 658,
1015 568, 539, 214, 664, 665, 573, 664, 665, 573, 286,
1016 847, 286, 286, 286, 286, 214, 286, 669, 671, 585,
1018 669, 671, 585, 214, 649, 644, 310, 288, 704, 310,
1019 214, 288, 847, 288, 310, 288, 214, 310, 560, 288,
1020 668, 701, 310, 214, 667, 310, 310, 658, 568, 310,
1021 585, 847, 214, 585, 664, 665, 573, 847, 666, 672,
1022 286, 847, 286, 679, 286, 214, 679, 702, 669, 671,
1023 585, 214, 680, 617, 675, 680, 617, 310, 673, 599,
1024 705, 674, 599, 599, 214, 310, 599, 685, 687, 847,
1025 685, 687, 342, 310, 214, 606, 598, 310, 606, 608,
1026 598, 585, 608, 689, 686, 688, 689, 214, 351, 711,
1027 497, 311, 607, 497, 679, 351, 607, 847, 608, 693,
1029 690, 608, 693, 680, 617, 691, 214, 496, 691, 695,
1030 349, 847, 695, 356, 349, 607, 694, 362, 349, 764,
1031 504, 697, 692, 504, 697, 847, 696, 847, 362, 698,
1032 360, 214, 698, 617, 352, 699, 617, 503, 699, 620,
1033 621, 352, 620, 621, 214, 700, 847, 622, 623, 360,
1034 622, 623, 847, 847, 703, 847, 360, 703, 215, 215,
1035 363, 216, 216, 766, 214, 707, 215, 215, 707, 216,
1036 216, 363, 697, 709, 214, 632, 709, 214, 632, 847,
1037 698, 847, 214, 710, 617, 633, 699, 214, 633, 638,
1038 620, 621, 638, 214, 215, 214, 847, 216, 622, 623,
1040 713, 214, 847, 713, 215, 703, 214, 216, 215, 714,
1041 642, 216, 714, 642, 214, 715, 707, 716, 715, 718,
1042 716, 847, 718, 847, 709, 847, 632, 644, 214, 215,
1043 644, 719, 216, 847, 719, 649, 633, 214, 649, 658,
1044 638, 214, 658, 214, 730, 214, 215, 730, 847, 216,
1045 214, 713, 731, 847, 664, 731, 214, 664, 214, 665,
1046 714, 642, 665, 847, 671, 847, 715, 671, 716, 286,
1047 718, 735, 286, 671, 735, 847, 671, 736, 644, 847,
1048 736, 847, 719, 214, 669, 310, 649, 669, 310, 310,
1049 658, 288, 310, 288, 310, 730, 806, 310, 734, 288,
1051 847, 679, 847, 731, 679, 664, 288, 847, 740, 741,
1052 665, 740, 741, 742, 738, 671, 742, 847, 739, 214,
1053 286, 847, 735, 679, 671, 847, 679, 680, 736, 737,
1054 680, 697, 214, 763, 697, 669, 310, 847, 698, 847,
1055 310, 698, 847, 847, 847, 310, 745, 847, 847, 745,
1056 747, 342, 679, 747, 847, 749, 311, 311, 749, 740,
1057 741, 311, 749, 746, 742, 749, 751, 748, 753, 751,
1058 847, 753, 750, 754, 679, 847, 754, 756, 680, 750,
1059 756, 356, 697, 752, 758, 753, 847, 758, 758, 698,
1060 755, 758, 760, 762, 757, 760, 762, 349, 847, 697,
1062 698, 759, 697, 698, 699, 759, 214, 699, 703, 761,
1063 762, 703, 214, 765, 707, 214, 214, 707, 847, 214,
1064 767, 768, 847, 709, 360, 214, 709, 215, 214, 214,
1065 216, 769, 770, 215, 771, 770, 216, 771, 772, 847,
1066 847, 772, 215, 718, 718, 216, 718, 718, 847, 713,
1067 697, 698, 713, 719, 777, 699, 719, 777, 714, 703,
1068 214, 714, 214, 847, 778, 707, 214, 778, 215, 715,
1069 847, 216, 715, 214, 709, 214, 847, 215, 780, 214,
1070 216, 780, 847, 770, 716, 771, 847, 716, 215, 772,
1071 782, 216, 847, 782, 718, 718, 730, 847, 731, 730,
1073 713, 731, 847, 215, 719, 777, 216, 784, 847, 714,
1074 784, 286, 847, 847, 286, 778, 735, 214, 736, 735,
1075 715, 736, 740, 741, 742, 740, 741, 742, 740, 780,
1076 214, 740, 825, 288, 741, 716, 742, 741, 288, 742,
1077 288, 782, 847, 745, 214, 801, 745, 730, 342, 731,
1078 847, 745, 785, 847, 745, 847, 342, 214, 784, 847,
1079 746, 788, 286, 214, 788, 847, 342, 735, 746, 736,
1080 847, 847, 847, 740, 741, 742, 214, 805, 789, 740,
1081 807, 788, 847, 807, 788, 741, 342, 742, 790, 847,
1082 847, 790, 790, 342, 349, 790, 792, 342, 789, 792,
1084 847, 342, 349, 792, 847, 791, 792, 754, 342, 791,
1085 754, 754, 349, 793, 754, 356, 214, 826, 794, 356,
1086 793, 794, 847, 847, 755, 847, 356, 819, 755, 214,
1087 819, 807, 349, 794, 796, 795, 794, 796, 847, 349,
1088 847, 356, 356, 349, 820, 800, 847, 349, 800, 796,
1089 795, 797, 796, 798, 349, 847, 798, 356, 360, 847,
1090 798, 356, 360, 798, 802, 847, 797, 802, 356, 360,
1091 799, 803, 847, 214, 803, 804, 770, 799, 804, 770,
1092 810, 847, 847, 810, 360, 360, 214, 771, 772, 847,
1093 771, 772, 214, 847, 777, 215, 800, 777, 216, 214,
1095 360, 847, 847, 214, 360, 214, 215, 215, 847, 216,
1096 216, 360, 214, 847, 778, 802, 214, 778, 780, 847,
1097 812, 780, 803, 812, 847, 782, 804, 770, 782, 813,
1098 784, 810, 813, 784, 814, 214, 827, 814, 771, 772,
1099 807, 817, 847, 807, 817, 777, 342, 817, 214, 847,
1100 817, 821, 342, 847, 821, 847, 288, 600, 818, 356,
1101 600, 847, 342, 847, 818, 778, 847, 600, 822, 780,
1102 600, 812, 342, 847, 601, 800, 782, 847, 800, 821,
1103 813, 784, 821, 600, 601, 814, 600, 356, 342, 847,
1104 829, 807, 349, 829, 215, 847, 822, 216, 349, 847,
1106 601, 847, 360, 609, 609, 847, 609, 609, 349, 847,
1107 823, 356, 356, 823, 609, 847, 802, 609, 349, 802,
1108 610, 610, 356, 847, 847, 803, 800, 824, 803, 804,
1109 360, 610, 804, 810, 349, 215, 810, 830, 216, 812,
1110 830, 829, 812, 813, 215, 847, 813, 216, 215, 814,
1111 847, 216, 814, 685, 360, 360, 685, 685, 342, 847,
1112 685, 833, 342, 847, 833, 360, 833, 802, 847, 833,
1113 686, 288, 829, 847, 686, 829, 803, 847, 834, 691,
1114 804, 847, 691, 834, 810, 847, 847, 356, 830, 691,
1115 812, 847, 691, 847, 813, 835, 692, 356, 835, 835,
1117 814, 847, 835, 847, 349, 847, 692, 837, 349, 847,
1118 837, 838, 836, 847, 838, 839, 836, 830, 839, 751,
1119 830, 751, 751, 829, 751, 760, 847, 847, 760, 760,
1120 360, 837, 760, 847, 837, 214, 752, 847, 752, 214,
1121 360, 838, 761, 214, 838, 847, 761, 847, 214, 847,
1122 215, 839, 214, 216, 839, 847, 214, 847, 837, 847,
1123 215, 843, 838, 216, 843, 847, 839, 847, 830, 845,
1124 215, 843, 845, 216, 843, 846, 845, 846, 846, 845,
1125 846, 847, 837, 847, 847, 847, 847, 847, 847, 847,
1126 847, 847, 838, 847, 847, 847, 847, 847, 847, 847,
1128 847, 847, 839, 847, 847, 847, 847, 847, 847, 847,
1129 847, 847, 843, 847, 847, 847, 847, 847, 847, 847,
1130 845, 847, 843, 847, 847, 847, 846, 845, 846, 157,
1131 847, 847, 847, 157, 158, 158, 158, 158, 158, 158,
1132 158, 158, 167, 167, 167, 167, 167, 167, 167, 167,
1133 179, 179, 847, 847, 179, 179, 214, 214, 847, 214,
1134 214, 214, 214, 218, 218, 218, 218, 218, 218, 218,
1135 287, 287, 847, 847, 287, 287, 287, 311, 311, 847,
1136 847, 847, 311, 311, 302, 847, 847, 847, 847, 302,
1137 302, 345, 345, 345, 345, 345, 345, 345, 345, 492,
1139 492, 847, 847, 492, 492, 847, 492, 493, 493, 847,
1140 847, 493, 493, 847, 493, 596, 596, 847, 847, 596,
1141 596, 847, 596, 31, 847, 847, 847, 847, 847, 847,
1142 847, 847, 847, 847, 847, 847, 847, 847, 847, 847,
1143 847, 847, 847, 847, 847, 847, 847, 847, 847, 847,
1144 847, 847, 847, 847, 847, 847, 847, 847, 847, 847,
1145 847, 847, 847, 847, 847, 847, 847, 847, 847, 847,
1146 847, 847, 847, 847, 847, 847, 847, 847, 847
1149 static yyconst
short int yy_chk
[3280] =
1151 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1152 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1153 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1154 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1155 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1156 1, 1, 1, 1, 1, 3, 3, 3, 3, 3,
1157 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1158 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1159 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1160 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1162 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1163 5, 6, 841, 5, 6, 7, 7, 87, 7, 8,
1164 8, 7, 8, 7, 87, 8, 11, 8, 7, 17,
1165 11, 17, 8, 18, 21, 18, 11, 21, 11, 22,
1166 11, 34, 22, 11, 34, 11, 11, 832, 5, 6,
1167 103, 47, 103, 12, 119, 5, 6, 12, 69, 47,
1168 47, 5, 6, 12, 119, 12, 71, 12, 59, 59,
1169 12, 69, 12, 12, 19, 79, 71, 21, 69, 71,
1170 104, 106, 22, 114, 104, 21, 831, 106, 79, 114,
1171 22, 79, 34, 47, 19, 19, 19, 19, 19, 19,
1173 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1174 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1175 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1176 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1177 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1178 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1179 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1180 23, 23, 23, 23, 23, 25, 25, 25, 25, 91,
1181 26, 26, 26, 26, 214, 29, 38, 30, 29, 38,
1182 30, 70, 91, 41, 70, 25, 41, 214, 121, 25,
1184 26, 828, 122, 39, 26, 44, 39, 70, 44, 121,
1185 39, 73, 45, 816, 29, 45, 30, 43, 25, 46,
1186 43, 73, 46, 26, 73, 122, 25, 29, 43, 30,
1187 29, 26, 30, 120, 75, 75, 29, 38, 30, 33,
1188 33, 33, 33, 120, 41, 33, 33, 75, 815, 33,
1189 33, 33, 33, 33, 39, 33, 44, 152, 152, 33,
1190 33, 33, 33, 45, 48, 33, 49, 48, 43, 33,
1191 46, 211, 49, 51, 49, 49, 51, 211, 52, 808,
1192 48, 52, 33, 33, 53, 33, 49, 53, 281, 33,
1193 33, 33, 33, 37, 281, 271, 37, 271, 37, 52,
1195 52, 52, 367, 367, 787, 53, 53, 53, 49, 54,
1196 37, 37, 54, 61, 62, 48, 61, 62, 37, 37,
1197 37, 37, 37, 37, 51, 80, 80, 123, 123, 52,
1198 54, 54, 54, 60, 64, 53, 60, 64, 80, 65,
1199 179, 296, 65, 123, 37, 40, 63, 296, 40, 63,
1200 313, 786, 779, 40, 60, 60, 60, 313, 65, 775,
1201 54, 65, 40, 40, 61, 62, 62, 63, 63, 63,
1202 40, 40, 40, 40, 40, 40, 68, 64, 76, 68,
1203 72, 774, 179, 66, 60, 64, 66, 72, 76, 72,
1204 65, 76, 66, 72, 76, 68, 40, 63, 68, 72,
1206 66, 66, 66, 77, 68, 66, 74, 78, 74, 107,
1207 78, 83, 107, 744, 77, 74, 77, 68, 77, 74,
1208 83, 74, 83, 78, 83, 81, 78, 68, 81, 81,
1209 743, 107, 82, 81, 66, 67, 82, 85, 67, 732,
1210 85, 81, 82, 84, 67, 82, 86, 84, 84, 86,
1211 67, 182, 67, 67, 67, 89, 84, 67, 89, 108,
1212 107, 728, 108, 109, 67, 110, 109, 111, 110, 113,
1213 111, 487, 113, 160, 115, 124, 112, 115, 124, 112,
1214 85, 108, 726, 723, 169, 109, 67, 110, 85, 111,
1215 317, 86, 126, 182, 160, 126, 128, 86, 112, 128,
1217 89, 109, 169, 110, 111, 317, 89, 108, 112, 112,
1218 108, 224, 113, 487, 109, 160, 110, 115, 111, 219,
1219 113, 219, 219, 169, 224, 115, 124, 112, 116, 116,
1220 116, 116, 230, 129, 116, 116, 129, 722, 116, 116,
1221 116, 116, 116, 126, 116, 230, 230, 128, 116, 116,
1222 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
1223 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
1224 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
1225 116, 116, 117, 315, 129, 117, 117, 118, 315, 130,
1226 118, 118, 130, 125, 125, 125, 125, 117, 135, 117,
1228 117, 135, 118, 227, 118, 118, 127, 127, 137, 127,
1229 227, 137, 138, 125, 721, 138, 227, 125, 140, 138,
1230 141, 140, 142, 141, 143, 142, 475, 143, 720, 140,
1231 475, 144, 682, 117, 144, 118, 125, 231, 118, 145,
1232 130, 229, 145, 146, 125, 155, 146, 144, 155, 135,
1233 231, 229, 681, 156, 229, 147, 156, 127, 147, 137,
1234 145, 145, 145, 138, 146, 146, 146, 161, 233, 140,
1235 161, 141, 242, 142, 232, 143, 147, 147, 147, 232,
1236 153, 233, 144, 153, 477, 242, 316, 232, 162, 164,
1237 145, 162, 164, 162, 146, 166, 155, 155, 166, 316,
1239 477, 153, 153, 153, 156, 162, 147, 663, 218, 318,
1240 218, 218, 165, 170, 318, 165, 170, 171, 161, 165,
1241 171, 173, 218, 175, 173, 171, 175, 174, 474, 491,
1242 174, 153, 159, 491, 171, 159, 662, 159, 174, 162,
1243 164, 176, 177, 474, 176, 177, 166, 181, 178, 159,
1244 159, 178, 236, 236, 659, 181, 181, 159, 159, 159,
1245 159, 159, 159, 165, 170, 236, 183, 181, 171, 183,
1246 184, 657, 173, 184, 175, 491, 189, 225, 174, 189,
1247 225, 656, 183, 159, 163, 655, 587, 163, 185, 181,
1248 225, 654, 176, 177, 185, 186, 185, 185, 186, 178,
1250 186, 163, 163, 187, 190, 587, 187, 190, 185, 163,
1251 163, 163, 163, 163, 163, 168, 241, 183, 168, 653,
1252 241, 184, 652, 168, 187, 187, 187, 189, 188, 241,
1253 185, 188, 168, 168, 396, 191, 192, 186, 191, 192,
1254 168, 168, 168, 168, 168, 168, 651, 396, 193, 195,
1255 188, 193, 195, 650, 187, 190, 191, 191, 191, 194,
1256 196, 198, 194, 196, 198, 207, 168, 172, 207, 648,
1257 172, 195, 223, 341, 223, 223, 341, 223, 223, 188,
1258 194, 194, 194, 645, 172, 172, 191, 192, 208, 223,
1259 341, 208, 172, 172, 172, 172, 172, 172, 202, 193,
1261 195, 202, 203, 588, 204, 203, 205, 204, 594, 205,
1262 194, 196, 198, 593, 209, 210, 207, 209, 210, 202,
1263 202, 202, 588, 203, 203, 204, 204, 204, 205, 205,
1264 212, 215, 213, 212, 215, 213, 592, 235, 216, 208,
1265 208, 216, 217, 220, 226, 217, 220, 226, 591, 202,
1266 235, 213, 235, 203, 213, 204, 228, 205, 210, 228,
1267 234, 217, 578, 234, 217, 209, 210, 248, 221, 570,
1268 569, 221, 226, 212, 248, 237, 567, 221, 237, 566,
1269 248, 212, 215, 213, 228, 226, 565, 221, 234, 216,
1270 221, 237, 238, 217, 220, 226, 239, 228, 563, 240,
1272 243, 234, 562, 238, 239, 238, 561, 228, 244, 239,
1273 243, 234, 240, 243, 240, 244, 245, 245, 246, 221,
1274 559, 244, 244, 247, 249, 250, 250, 249, 558, 245,
1275 557, 246, 251, 246, 253, 251, 247, 249, 250, 252,
1276 254, 256, 252, 247, 340, 255, 255, 253, 340, 253,
1277 255, 254, 556, 254, 256, 252, 256, 555, 255, 257,
1278 251, 258, 257, 259, 258, 340, 259, 263, 261, 401,
1279 263, 261, 265, 251, 286, 265, 266, 286, 287, 266,
1280 401, 287, 401, 251, 289, 290, 340, 289, 290, 291,
1281 340, 553, 291, 552, 292, 551, 286, 292, 293, 549,
1283 287, 293, 257, 517, 258, 510, 289, 290, 259, 509,
1284 257, 291, 258, 261, 259, 399, 292, 265, 263, 261,
1285 293, 266, 399, 265, 484, 286, 290, 266, 399, 287,
1286 294, 293, 483, 294, 482, 289, 290, 292, 480, 295,
1287 291, 297, 295, 299, 297, 292, 299, 302, 300, 293,
1288 302, 300, 294, 303, 479, 304, 303, 305, 304, 306,
1289 305, 478, 306, 307, 310, 463, 307, 310, 312, 314,
1290 462, 312, 314, 294, 320, 322, 324, 320, 322, 324,
1291 308, 294, 295, 308, 297, 455, 299, 453, 307, 452,
1292 295, 300, 297, 304, 299, 305, 306, 326, 302, 300,
1294 326, 303, 323, 323, 303, 323, 304, 450, 305, 408,
1295 306, 449, 308, 308, 307, 310, 312, 314, 327, 312,
1296 314, 327, 408, 448, 342, 320, 322, 324, 342, 329,
1297 333, 308, 329, 333, 335, 339, 353, 335, 339, 353,
1298 447, 415, 415, 343, 344, 342, 343, 344, 326, 344,
1299 446, 348, 476, 323, 348, 415, 339, 339, 339, 350,
1300 343, 344, 350, 351, 350, 476, 342, 351, 348, 327,
1301 342, 445, 352, 354, 354, 352, 350, 352, 444, 355,
1302 329, 333, 355, 442, 351, 335, 339, 353, 441, 352,
1303 357, 354, 440, 357, 343, 344, 355, 356, 356, 439,
1305 409, 359, 348, 349, 359, 351, 349, 357, 364, 351,
1306 350, 364, 354, 409, 438, 356, 354, 409, 359, 366,
1307 349, 349, 366, 352, 368, 362, 362, 368, 349, 349,
1308 349, 349, 349, 349, 358, 437, 356, 358, 436, 435,
1309 356, 357, 358, 362, 369, 361, 368, 369, 361, 434,
1310 431, 358, 359, 361, 349, 363, 412, 365, 363, 364,
1311 391, 412, 361, 363, 362, 365, 365, 381, 362, 412,
1312 366, 370, 363, 371, 370, 368, 371, 365, 372, 373,
1313 374, 372, 373, 374, 375, 358, 360, 375, 376, 360,
1314 377, 376, 380, 377, 378, 369, 361, 378, 382, 365,
1316 379, 382, 374, 360, 360, 383, 363, 384, 383, 345,
1317 384, 360, 360, 360, 360, 360, 360, 338, 386, 382,
1318 382, 386, 370, 387, 371, 385, 387, 337, 385, 372,
1319 373, 374, 336, 389, 334, 375, 389, 360, 332, 376,
1320 388, 377, 331, 388, 330, 378, 385, 385, 385, 382,
1321 390, 392, 393, 390, 392, 393, 383, 394, 384, 394,
1322 394, 395, 388, 388, 395, 397, 311, 398, 397, 386,
1323 398, 298, 402, 402, 387, 400, 385, 404, 400, 403,
1324 405, 285, 403, 405, 389, 402, 398, 407, 407, 398,
1325 404, 388, 404, 397, 400, 406, 410, 400, 406, 410,
1327 407, 390, 392, 393, 284, 283, 397, 403, 405, 411,
1328 411, 282, 395, 280, 406, 279, 397, 406, 398, 414,
1329 403, 405, 411, 278, 410, 418, 400, 413, 413, 416,
1330 403, 405, 414, 414, 277, 417, 416, 410, 418, 417,
1331 413, 418, 416, 419, 421, 421, 406, 410, 417, 420,
1332 426, 422, 420, 423, 276, 426, 419, 421, 428, 419,
1333 422, 526, 423, 426, 422, 424, 423, 428, 424, 425,
1334 425, 428, 427, 427, 526, 429, 430, 420, 432, 275,
1335 430, 432, 429, 425, 424, 427, 274, 424, 429, 430,
1336 420, 433, 443, 451, 433, 443, 451, 273, 454, 456,
1338 420, 454, 456, 457, 458, 459, 457, 458, 459, 461,
1339 464, 460, 461, 464, 460, 466, 424, 465, 466, 469,
1340 465, 456, 469, 272, 270, 457, 458, 459, 269, 432,
1341 268, 461, 457, 460, 454, 267, 467, 468, 459, 467,
1342 468, 461, 433, 443, 451, 264, 460, 262, 470, 454,
1343 456, 470, 469, 260, 457, 458, 459, 201, 465, 200,
1344 461, 464, 460, 199, 471, 197, 466, 471, 465, 167,
1345 469, 472, 468, 473, 472, 481, 473, 488, 481, 467,
1346 488, 489, 506, 490, 489, 506, 490, 467, 468, 496,
1347 498, 470, 496, 498, 488, 158, 518, 518, 489, 470,
1349 490, 503, 151, 530, 503, 505, 496, 498, 499, 518,
1350 532, 499, 150, 505, 505, 471, 530, 507, 503, 472,
1351 507, 149, 472, 532, 473, 499, 481, 500, 508, 538,
1352 500, 508, 489, 506, 490, 494, 511, 512, 494, 511,
1353 512, 148, 538, 544, 500, 136, 133, 505, 513, 132,
1354 544, 513, 494, 494, 514, 515, 544, 514, 515, 499,
1355 494, 494, 494, 494, 494, 494, 495, 516, 507, 495,
1356 516, 495, 131, 527, 541, 105, 527, 541, 500, 508,
1357 102, 101, 519, 495, 495, 519, 100, 511, 512, 527,
1358 541, 495, 495, 495, 495, 495, 495, 497, 531, 513,
1360 497, 519, 497, 545, 519, 514, 515, 99, 531, 520,
1361 521, 531, 520, 521, 497, 497, 545, 522, 516, 586,
1362 522, 98, 497, 497, 497, 497, 497, 497, 97, 528,
1363 528, 96, 586, 519, 533, 533, 597, 520, 521, 597,
1364 523, 524, 528, 523, 524, 522, 95, 533, 497, 501,
1365 520, 521, 501, 597, 94, 93, 540, 540, 522, 523,
1366 520, 521, 523, 92, 90, 88, 501, 501, 522, 524,
1367 540, 58, 534, 534, 501, 501, 501, 501, 501, 501,
1368 502, 525, 524, 502, 525, 534, 537, 537, 502, 543,
1369 543, 523, 524, 529, 57, 56, 529, 502, 502, 537,
1371 525, 55, 543, 525, 35, 502, 502, 502, 502, 502,
1372 502, 504, 529, 31, 504, 529, 28, 535, 536, 504,
1373 535, 536, 542, 546, 550, 542, 546, 550, 504, 504,
1374 539, 27, 525, 539, 547, 547, 504, 504, 504, 504,
1375 504, 504, 629, 10, 529, 535, 536, 547, 631, 539,
1376 542, 546, 539, 554, 548, 629, 554, 548, 535, 536,
1377 629, 631, 504, 542, 546, 637, 9, 560, 535, 536,
1378 560, 0, 637, 542, 546, 550, 564, 568, 637, 564,
1379 568, 539, 548, 571, 572, 573, 571, 572, 573, 575,
1380 0, 576, 575, 574, 576, 548, 574, 577, 579, 580,
1382 577, 579, 580, 627, 554, 548, 581, 573, 627, 581,
1383 624, 575, 0, 576, 582, 574, 627, 582, 560, 577,
1384 576, 624, 584, 624, 575, 584, 583, 564, 568, 583,
1385 585, 0, 625, 585, 571, 572, 573, 0, 574, 581,
1386 575, 0, 576, 589, 574, 625, 589, 625, 577, 579,
1387 580, 628, 590, 595, 584, 590, 595, 581, 582, 598,
1388 628, 583, 598, 599, 628, 582, 599, 600, 601, 0,
1389 600, 601, 600, 584, 636, 606, 598, 583, 606, 607,
1390 599, 585, 607, 603, 600, 601, 603, 636, 603, 636,
1391 604, 589, 606, 604, 589, 604, 607, 0, 608, 610,
1393 603, 608, 610, 590, 595, 609, 701, 604, 609, 612,
1394 598, 0, 612, 609, 599, 608, 610, 612, 600, 701,
1395 613, 615, 609, 613, 615, 0, 612, 0, 613, 616,
1396 607, 619, 616, 617, 603, 618, 617, 613, 618, 620,
1397 621, 604, 620, 621, 619, 619, 0, 622, 623, 608,
1398 622, 623, 0, 0, 626, 0, 609, 626, 620, 621,
1399 612, 620, 621, 704, 704, 630, 622, 623, 630, 622,
1400 623, 613, 615, 634, 635, 632, 634, 704, 632, 0,
1401 616, 0, 626, 635, 617, 633, 618, 635, 633, 638,
1402 620, 621, 638, 630, 632, 626, 0, 632, 622, 623,
1404 639, 634, 0, 639, 633, 626, 630, 633, 638, 640,
1405 642, 638, 640, 642, 634, 641, 630, 643, 641, 646,
1406 643, 0, 646, 0, 634, 0, 632, 644, 639, 642,
1407 644, 647, 642, 0, 647, 649, 633, 640, 649, 658,
1408 638, 639, 658, 641, 660, 643, 644, 660, 0, 644,
1409 640, 639, 661, 0, 664, 661, 641, 664, 643, 665,
1410 640, 642, 665, 0, 670, 0, 641, 670, 643, 666,
1411 646, 667, 666, 671, 667, 0, 671, 668, 644, 0,
1412 668, 0, 647, 769, 669, 673, 649, 669, 673, 674,
1413 658, 666, 674, 667, 672, 660, 769, 672, 666, 668,
1415 0, 675, 0, 661, 675, 664, 669, 0, 676, 677,
1416 665, 676, 677, 678, 673, 670, 678, 0, 674, 700,
1417 666, 0, 667, 679, 671, 0, 679, 680, 668, 672,
1418 680, 683, 700, 700, 683, 669, 673, 0, 684, 0,
1419 674, 684, 0, 0, 0, 672, 685, 0, 0, 685,
1420 686, 685, 675, 686, 0, 687, 676, 677, 687, 676,
1421 677, 678, 688, 685, 678, 688, 689, 686, 690, 689,
1422 0, 690, 687, 691, 679, 0, 691, 692, 680, 688,
1423 692, 691, 683, 689, 693, 690, 0, 693, 694, 684,
1424 691, 694, 695, 696, 692, 695, 696, 685, 0, 697,
1426 698, 693, 697, 698, 699, 694, 705, 699, 703, 695,
1427 696, 703, 702, 702, 707, 708, 706, 707, 0, 705,
1428 705, 706, 0, 709, 691, 702, 709, 703, 708, 706,
1429 703, 708, 710, 707, 711, 710, 707, 711, 712, 0,
1430 0, 712, 709, 717, 718, 709, 717, 718, 0, 713,
1431 697, 698, 713, 719, 724, 699, 719, 724, 714, 703,
1432 710, 714, 711, 0, 725, 707, 712, 725, 713, 715,
1433 0, 713, 715, 710, 709, 711, 0, 714, 727, 712,
1434 714, 727, 0, 710, 716, 711, 0, 716, 715, 712,
1435 729, 715, 0, 729, 717, 718, 730, 0, 731, 730,
1437 713, 731, 0, 716, 719, 724, 716, 733, 0, 714,
1438 733, 734, 0, 0, 734, 725, 735, 801, 736, 735,
1439 715, 736, 737, 738, 739, 737, 738, 739, 740, 727,
1440 801, 740, 801, 734, 741, 716, 742, 741, 735, 742,
1441 736, 729, 0, 745, 764, 764, 745, 730, 745, 731,
1442 0, 746, 734, 0, 746, 0, 746, 764, 733, 0,
1443 745, 747, 734, 768, 747, 0, 747, 735, 746, 736,
1444 0, 0, 0, 737, 738, 739, 768, 768, 747, 740,
1445 773, 748, 0, 773, 748, 741, 748, 742, 749, 0,
1446 0, 749, 750, 749, 745, 750, 751, 750, 748, 751,
1448 0, 751, 746, 752, 0, 749, 752, 754, 752, 750,
1449 754, 755, 747, 751, 755, 754, 805, 805, 756, 755,
1450 752, 756, 0, 0, 754, 0, 756, 793, 755, 805,
1451 793, 773, 748, 757, 758, 756, 757, 758, 0, 749,
1452 0, 757, 758, 750, 793, 763, 0, 751, 763, 759,
1453 757, 758, 759, 760, 752, 0, 760, 759, 754, 0,
1454 761, 760, 755, 761, 765, 0, 759, 765, 761, 756,
1455 760, 766, 0, 763, 766, 767, 770, 761, 767, 770,
1456 776, 0, 0, 776, 757, 758, 763, 771, 772, 0,
1457 771, 772, 765, 0, 777, 770, 763, 777, 770, 766,
1459 759, 0, 0, 767, 760, 765, 771, 772, 0, 771,
1460 772, 761, 766, 0, 778, 765, 767, 778, 780, 0,
1461 781, 780, 766, 781, 0, 782, 767, 770, 782, 783,
1462 784, 776, 783, 784, 785, 806, 806, 785, 771, 772,
1463 807, 788, 0, 807, 788, 777, 788, 789, 806, 0,
1464 789, 794, 789, 0, 794, 0, 785, 790, 788, 794,
1465 790, 0, 790, 0, 789, 778, 0, 791, 794, 780,
1466 791, 781, 791, 0, 790, 800, 782, 0, 800, 795,
1467 783, 784, 795, 792, 791, 785, 792, 795, 792, 0,
1468 809, 807, 788, 809, 800, 0, 795, 800, 789, 0,
1470 792, 0, 794, 796, 797, 0, 796, 797, 790, 0,
1471 799, 796, 797, 799, 798, 0, 802, 798, 791, 802,
1472 796, 797, 798, 0, 0, 803, 800, 799, 803, 804,
1473 795, 798, 804, 810, 792, 802, 810, 811, 802, 812,
1474 811, 809, 812, 813, 803, 0, 813, 803, 804, 814,
1475 0, 804, 814, 817, 796, 797, 817, 818, 817, 0,
1476 818, 819, 818, 0, 819, 798, 820, 802, 0, 820,
1477 817, 814, 829, 0, 818, 829, 803, 0, 819, 821,
1478 804, 0, 821, 820, 810, 0, 0, 821, 811, 822,
1479 812, 0, 822, 0, 813, 823, 821, 822, 823, 824,
1481 814, 0, 824, 0, 817, 0, 822, 825, 818, 0,
1482 825, 826, 823, 0, 826, 827, 824, 830, 827, 833,
1483 830, 834, 833, 829, 834, 835, 0, 0, 835, 836,
1484 821, 837, 836, 0, 837, 825, 833, 0, 834, 826,
1485 822, 838, 835, 827, 838, 0, 836, 0, 825, 0,
1486 837, 839, 826, 837, 839, 0, 827, 0, 825, 0,
1487 838, 840, 826, 838, 840, 0, 827, 0, 830, 842,
1488 839, 843, 842, 839, 843, 844, 845, 846, 844, 845,
1489 846, 0, 837, 0, 0, 0, 0, 0, 0, 0,
1490 0, 0, 838, 0, 0, 0, 0, 0, 0, 0,
1492 0, 0, 839, 0, 0, 0, 0, 0, 0, 0,
1493 0, 0, 840, 0, 0, 0, 0, 0, 0, 0,
1494 842, 0, 843, 0, 0, 0, 844, 845, 846, 848,
1495 0, 0, 0, 848, 849, 849, 849, 849, 849, 849,
1496 849, 849, 850, 850, 850, 850, 850, 850, 850, 850,
1497 851, 851, 0, 0, 851, 851, 852, 852, 0, 852,
1498 852, 852, 852, 853, 853, 853, 853, 853, 853, 853,
1499 854, 854, 0, 0, 854, 854, 854, 855, 855, 0,
1500 0, 0, 855, 855, 856, 0, 0, 0, 0, 856,
1501 856, 857, 857, 857, 857, 857, 857, 857, 857, 858,
1503 858, 0, 0, 858, 858, 0, 858, 859, 859, 0,
1504 0, 859, 859, 0, 859, 860, 860, 0, 0, 860,
1505 860, 0, 860, 847, 847, 847, 847, 847, 847, 847,
1506 847, 847, 847, 847, 847, 847, 847, 847, 847, 847,
1507 847, 847, 847, 847, 847, 847, 847, 847, 847, 847,
1508 847, 847, 847, 847, 847, 847, 847, 847, 847, 847,
1509 847, 847, 847, 847, 847, 847, 847, 847, 847, 847,
1510 847, 847, 847, 847, 847, 847, 847, 847, 847
1513 static yy_state_type yy_state_buf
[YY_BUF_SIZE
+ 2], *yy_state_ptr
;
1514 static char *yy_full_match
;
1518 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \
1519 yy_cp = yy_full_match; /* restore poss. backed-over text */ \
1523 #define yymore() yymore_used_but_not_detected
1524 #define YY_MORE_ADJ 0
1525 #define YY_RESTORE_YY_MORE_OFFSET
1527 #line 1 "./lexsrc.l"
1529 #line 2 "./lexsrc.l"
1531 static char *RCSid
= "$Id$";
1535 * The Regina Rexx Interpreter
1536 * Copyright (C) 1992-1994 Anders Christensen <anders@pvv.unit.no>
1538 * This library is free software; you can redistribute it and/or
1539 * modify it under the terms of the GNU Library General Public
1540 * License as published by the Free Software Foundation; either
1541 * version 2 of the License, or (at your option) any later version.
1543 * This library is distributed in the hope that it will be useful,
1544 * but WITHOUT ANY WARRANTY; without even the implied warranty of
1545 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
1546 * Library General Public License for more details.
1548 * You should have received a copy of the GNU Library General Public
1549 * License along with this library; if not, write to the Free
1550 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
1554 #include "yaccsrc.h"
1559 /* Define ASCII_0_TERMINATES_STRING if you want that ASCII-0 terminates
1560 * an input string. Normally this should not happen. Input strings are
1561 * terminated by a length encoding. The string {"", length=1} is invalid for
1562 * the lexer (ASCII-0 is not allowed) while {"", length=0} is allowed (this
1563 * is an empty input).
1564 * ASCII_0_TERMINATES_STRING is only(!) for backward compatibility and
1565 * shouldn't be used under normal circumstances.
1568 #define ASCII_0_TERMINATES_STRING
1573 #define YYLMAX BUFFERSIZE
1577 #define YY_CHAR YY_CHAR_TYPE
1579 #define YY_INPUT(buf,result,max_size) result=fill_buffer(buf,max_size)
1582 /* NOTE: Every comment is replaced by a '`' character in the lower input
1583 * routines. These should check for such (illegal) characters.
1585 #define MY_ISBLANK(c) (((c)==' ')||((c)=='\t')||((c)=='`'))
1587 PROTECTION_VAR(regina_parser
)
1588 /* externals which are protected by regina_parser */
1589 internal_parser_type parser_data
= {NULL
, };
1591 char retvalue
[BUFFERSIZE
] ;
1592 unsigned SymbolDetect
= 0;
1593 /* end of externals protected by regina_parser */
1595 /* locals, they are protected by regina_parser, too */
1596 static int nextline
= 1;
1597 static int nextstart
= 1;
1598 static int do_level
= 0 ;
1599 static int in_numform
=0, next_numform
=0 ;
1600 static int obs_with
=0, in_do
=0, in_then
=0, dontlast
=0 ;
1602 static int code
=0, nexta
=0, in_parse
=0, in_trace
=0, itflag
=0 ;
1603 static int in_signal
=0, in_call
=0 ;
1604 static enum { not_in_address
= 0,
1605 in_address_keyword
, /* ADDRESS just seen */
1606 in_address_main
, /* after the first word */
1607 in_address_value
, /* like main but VALUE was seen */
1608 in_address_with
} in_address
= not_in_address
,
1609 last_in_address
= not_in_address
;
1610 static enum {no_seek_with
= 0,
1611 seek_with_from_parse
,
1612 seek_with_from_address
} seek_with
= no_seek_with
;
1613 static int preva
=0, lasta
=0 ;
1614 static char ch
, ech
;
1615 static int kill_this_space
=0, kill_next_space
=1 ;
1616 static int extnextline
= -1, extnextstart
; /* for a delayed line increment */
1617 static int linenr
=1 ;
1618 static int contline
= 0;
1619 static int inEOF
=0 ;
1620 static int singlequote
=0, doblequote
=0 ;
1621 static int firstln
=0 ;
1622 static int bufptr
=0 ;
1623 /* Previous bug. 8-bits clean combined with EOF ==> need at least short */
1624 static short chbuffer
[LOOKAHEAD
] ;
1625 static int ipretflag
=0, cch
=0 ;
1626 static const char *interptr
=NULL
;
1627 static const char *interptrmax
;
1628 static int cchmax
= 0 ;
1630 static YY_CHAR_TYPE
*rmspc( YY_CHAR_TYPE
*instr
) ;
1631 static int fill_buffer( char *buf
, int max_size
) ;
1632 #define SET_NEXTSTART() (nextstart += yyleng)
1634 #define YY_FATAL_ERROR(s) exiterror( ERR_PROG_UNREADABLE, 1, s )
1651 #line 121 "./lexsrc.l"
1652 /* int yy_startcond=comm ; FGC: Needless? */
1653 #line 1654 "./lexsrc.c"
1654 #line 318 "flex.skl"
1656 /* Macros after this point can all be overridden by user definitions in
1660 #ifndef YY_SKIP_YYWRAP
1662 extern "C" int yywrap
YY_PROTO(( void ));
1664 extern int yywrap
YY_PROTO(( void ));
1668 #line 333 "flex.skl"
1670 static void yyunput
YY_PROTO(( int c
, char *buf_ptr
));
1672 #line 338 "flex.skl"
1675 static void yy_flex_strncpy
YY_PROTO(( char *, yyconst
char *, int ));
1678 #ifdef YY_NEED_STRLEN
1679 static int yy_flex_strlen
YY_PROTO(( yyconst
char * ));
1683 #line 350 "flex.skl"
1685 static int yyinput
YY_PROTO(( void ));
1687 static int input
YY_PROTO(( void ));
1690 #line 358 "flex.skl"
1693 static int yy_start_stack_ptr
= 0;
1694 static int yy_start_stack_depth
= 0;
1695 static int *yy_start_stack
= 0;
1696 #ifndef YY_NO_PUSH_STATE
1697 static void yy_push_state
YY_PROTO(( int new_state
));
1699 #ifndef YY_NO_POP_STATE
1700 static void yy_pop_state
YY_PROTO(( void ));
1702 #ifndef YY_NO_TOP_STATE
1703 static int yy_top_state
YY_PROTO(( void ));
1707 #define YY_NO_PUSH_STATE 1
1708 #define YY_NO_POP_STATE 1
1709 #define YY_NO_TOP_STATE 1
1712 #ifdef YY_MALLOC_DECL
1720 /* Just try to get by without declaring the routines.. This will fail
1721 * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
1722 * or sizeof(void*) != sizeof(int).
1727 /* Amount of stuff to slurp up with each read. */
1728 #ifndef YY_READ_BUF_SIZE
1729 #define YY_READ_BUF_SIZE 8192
1732 /* Copy whatever the last rule matched to the standard output. */
1735 #line 404 "flex.skl"
1736 /* This used to be an fputs(), but since the string might contain NUL's,
1737 * we now use fwrite().
1739 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
1741 #line 414 "flex.skl"
1743 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
1744 * is returned in "result".
1747 #define YY_INPUT(buf,result,max_size) \
1748 if ( yy_current_buffer->yy_is_interactive ) \
1751 for ( n = 0; n < max_size && \
1752 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1753 buf[n] = (char) c; \
1755 buf[n++] = (char) c; \
1756 if ( c == EOF && ferror( yyin ) ) \
1757 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1760 else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
1761 && ferror( yyin ) ) \
1762 YY_FATAL_ERROR( "input in flex scanner failed" );
1763 #line 422 "flex.skl"
1765 #line 429 "flex.skl"
1767 /* No semi-colon after return; correct usage is to write "yyterminate();" -
1768 * we don't want an extra ';' after the "return" because that will cause
1769 * some compilers to complain about unreachable statements.
1772 #define yyterminate() return YY_NULL
1775 /* Number of entries by which start-condition stack grows. */
1776 #ifndef YY_START_STACK_INCR
1777 #define YY_START_STACK_INCR 25
1780 /* Report a fatal error. */
1781 #ifndef YY_FATAL_ERROR
1782 #line 447 "flex.skl"
1783 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
1785 #line 454 "flex.skl"
1787 /* Default declaration of generated scanner - a define so the user can
1788 * easily add parameters.
1791 #line 461 "flex.skl"
1792 #define YY_DECL int yylex YY_PROTO(( void ))
1794 #line 468 "flex.skl"
1796 /* Code executed at the beginning of each rule, after yytext and yyleng
1799 #ifndef YY_USER_ACTION
1800 #define YY_USER_ACTION
1803 /* Code executed at the end of each rule. */
1805 #define YY_BREAK break;
1808 #define YY_RULE_SETUP \
1810 #line 483 "flex.skl"
1814 register yy_state_type yy_current_state
;
1815 register char *yy_cp
, *yy_bp
;
1816 register int yy_act
;
1818 #line 171 "./lexsrc.l"
1823 lasta
= (dontlast
==0) ;
1835 last_in_address
= in_address
; /* just for the "Environment" */
1836 /* there can't be an intermediate SPACE between ADDRESS and the next word*/
1837 if (in_address
== in_address_keyword
)
1838 in_address
= in_address_main
;
1840 kill_this_space
= kill_next_space
;
1841 kill_next_space
= 0 ;
1845 in_trace
= seek_with
= 0 ;
1846 itflag
= (in_trace
) ;
1848 if (extnextline
!= -1)
1850 parser_data
.tstart
= nextstart
= extnextstart
;
1851 parser_data
.tline
= nextline
= extnextline
;
1856 parser_data
.tstart
= nextstart
;
1857 parser_data
.tline
= nextline
;
1863 #line 1864 "./lexsrc.c"
1864 #line 492 "flex.skl"
1875 yy_start
= 1; /* first start state */
1878 #line 507 "flex.skl"
1880 #line 513 "flex.skl"
1883 #line 517 "flex.skl"
1885 #line 523 "flex.skl"
1887 if ( ! yy_current_buffer
)
1889 yy_create_buffer( yyin
, YY_BUF_SIZE
);
1891 yy_load_buffer_state();
1894 while ( 1 ) /* loops until end-of-file is reached */
1896 #line 535 "flex.skl"
1899 /* Support of yytext. */
1900 *yy_cp
= yy_hold_char
;
1902 /* yy_bp points to the position in yy_ch_buf of the start of
1907 yy_current_state
= yy_start
;
1908 yy_state_ptr
= yy_state_buf
;
1909 *yy_state_ptr
++ = yy_current_state
;
1913 register YY_CHAR yy_c
= yy_ec
[YY_SC_TO_UI(*yy_cp
)];
1914 while ( yy_chk
[yy_base
[yy_current_state
] + yy_c
] != yy_current_state
)
1916 yy_current_state
= (int) yy_def
[yy_current_state
];
1917 if ( yy_current_state
>= 848 )
1918 yy_c
= yy_meta
[(unsigned int) yy_c
];
1920 yy_current_state
= yy_nxt
[yy_base
[yy_current_state
] + (unsigned int) yy_c
];
1921 *yy_state_ptr
++ = yy_current_state
;
1924 while ( yy_base
[yy_current_state
] != 3224 );
1925 #line 547 "flex.skl"
1928 yy_current_state
= *--yy_state_ptr
;
1929 yy_lp
= yy_accept
[yy_current_state
];
1930 find_rule
: /* we branch to this label when backing up */
1931 for ( ; ; ) /* until we find what rule we matched */
1933 if ( yy_lp
&& yy_lp
< yy_accept
[yy_current_state
+ 1] )
1935 yy_act
= yy_acclist
[yy_lp
];
1937 yy_full_match
= yy_cp
;
1942 yy_current_state
= *--yy_state_ptr
;
1943 yy_lp
= yy_accept
[yy_current_state
];
1945 #line 551 "flex.skl"
1947 YY_DO_BEFORE_ACTION
;
1949 #line 556 "flex.skl"
1951 do_action
: /* This label is used only to access EOF actions. */
1953 #line 561 "flex.skl"
1956 { /* beginning of action switch */
1959 #line 215 "./lexsrc.l"
1964 #line 217 "./lexsrc.l"
1967 if ((ptr
= strchr(yytext
, '\n')) != NULL
)
1969 nextstart
= yyleng
- (int) (ptr
- (char *) yytext
) ;
1971 if (extnextline
!= -1)
1980 #line 230 "./lexsrc.l"
1986 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
1987 exiterror( ERR_INVALID_TEMPLATE
, 1, yytext
) ;
1989 obs_with
= in_do
= 0 ;
1990 in_signal
= in_address
= in_call
= 0 ;
1992 if (seek_with
== seek_with_from_address
)
1993 seek_with
= no_seek_with
;
1994 if ((ptr
= strchr(yytext
, '\n')) != NULL
)
1996 nextstart
= yyleng
- (int) (ptr
- (char *) yytext
) ;
1998 if (extnextline
!= -1)
2007 #line 254 "./lexsrc.l"
2009 BEGIN value1
; /* Allow a following VALUE keyword */
2010 seek_with
= seek_with_from_address
;
2011 in_address
= in_address_keyword
;
2012 in_call
= 1 ; /* Allow the next words to be given as in CALL. */
2018 #line 262 "./lexsrc.l"
2027 #line 268 "./lexsrc.l"
2036 #line 274 "./lexsrc.l"
2039 assert( do_level
>=0 ) ;
2047 #line 282 "./lexsrc.l"
2056 #line 288 "./lexsrc.l"
2064 #line 293 "./lexsrc.l"
2072 #line 298 "./lexsrc.l"
2076 parser_data
.if_linenr
= linenr
- 1;
2082 #line 305 "./lexsrc.l"
2086 return INTERPRET
; }
2090 #line 310 "./lexsrc.l"
2098 #line 315 "./lexsrc.l"
2106 #line 320 "./lexsrc.l"
2114 #line 325 "./lexsrc.l"
2122 #line 330 "./lexsrc.l"
2130 #line 335 "./lexsrc.l"
2139 #line 341 "./lexsrc.l"
2143 return PROCEDURE
; }
2147 #line 346 "./lexsrc.l"
2156 #line 352 "./lexsrc.l"
2164 #line 357 "./lexsrc.l"
2172 #line 362 "./lexsrc.l"
2180 #line 367 "./lexsrc.l"
2188 #line 372 "./lexsrc.l"
2191 assert( do_level
>= 0 ) ;
2198 #line 379 "./lexsrc.l"
2207 #line 385 "./lexsrc.l"
2216 #line 391 "./lexsrc.l"
2225 #line 397 "./lexsrc.l"
2229 parser_data
.when_linenr
= linenr
- 1;
2235 #line 404 "./lexsrc.l"
2239 return OTHERWISE
; }
2243 #line 409 "./lexsrc.l"
2246 assert( do_level
>= 0 ) ;
2249 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
2250 exiterror( ERR_UNMATCHED_END
, 1 ) ;
2258 #line 421 "./lexsrc.l"
2270 #line 430 "./lexsrc.l"
2275 return PLACEHOLDER
;
2281 /* FGC: What should the following mean after a REJECT? */
2283 retvalue
[1] = '\0' ;
2291 #line 448 "./lexsrc.l"
2293 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
2294 if (yytext
[0] == '.')
2295 exiterror( ERR_INVALID_START
, 3, yytext
) ;
2297 exiterror( ERR_INVALID_START
, 2, yytext
) ;
2302 #line 456 "./lexsrc.l"
2308 for (i
=0;yytext
[i
];i
++)
2309 if ('a' <= yytext
[i
] && yytext
[i
] <= 'z')
2310 retvalue
[j
++] = (char) (yytext
[i
] & 0xDF) ; /* ASCII only */
2311 else if (yytext
[i
]!='=' && yytext
[i
]!='\n' && !MY_ISBLANK(yytext
[i
]))
2312 retvalue
[j
++] = yytext
[i
] ;
2313 retvalue
[j
] = '\0' ;
2316 return ASSIGNMENTVARIABLE
; }
2320 #line 471 "./lexsrc.l"
2324 if ((last_in_address
== in_address_keyword
) &&
2325 (in_address
== in_address_main
))
2327 BEGIN other
; /* the next useful expression will set it to "other"
2328 * in either case. The BEGIN-states aren't very
2329 * handy in most cases; they are not flexible enough.
2331 in_address
= in_address_value
;
2338 if ((!in_trace
)&&(!in_address
)&&(!in_signal
)&&(!in_call
)&&(!in_numform
))
2340 in_trace
= in_signal
= in_call
= 0 ;
2346 #line 494 "./lexsrc.l"
2354 #line 499 "./lexsrc.l"
2362 #line 504 "./lexsrc.l"
2370 #line 509 "./lexsrc.l"
2378 #line 514 "./lexsrc.l"
2386 #line 519 "./lexsrc.l"
2394 #line 524 "./lexsrc.l"
2402 #line 529 "./lexsrc.l"
2410 #line 534 "./lexsrc.l"
2418 #line 539 "./lexsrc.l"
2422 return LOSTDIGITS
; }
2426 #line 544 "./lexsrc.l"
2428 if (!in_trace
) REJECT
;
2429 strcpy(retvalue
,rmspc( yytext
)) ;
2435 #line 550 "./lexsrc.l"
2444 #line 556 "./lexsrc.l"
2451 #line 560 "./lexsrc.l"
2459 #line 565 "./lexsrc.l"
2467 #line 570 "./lexsrc.l"
2475 #line 575 "./lexsrc.l"
2483 #line 580 "./lexsrc.l"
2491 #line 585 "./lexsrc.l"
2499 #line 590 "./lexsrc.l"
2507 #line 595 "./lexsrc.l"
2515 #line 600 "./lexsrc.l"
2517 seek_with
= seek_with_from_parse
;
2520 BEGIN with
; /* in fact this works as a "not comm" */
2526 #line 608 "./lexsrc.l"
2534 #line 613 "./lexsrc.l"
2536 if (in_then
!=1) REJECT
;
2544 #line 620 "./lexsrc.l"
2547 if ((in_do
)||(!seek_with
))
2549 if (seek_with
== seek_with_from_parse
)
2552 if (in_address
) /* any address state */
2553 in_address
= in_address_with
; /* WITH seen */
2559 #line 633 "./lexsrc.l"
2567 #line 638 "./lexsrc.l"
2576 #line 644 "./lexsrc.l"
2579 return SCIENTIFIC
; }
2583 #line 648 "./lexsrc.l"
2586 return ENGINEERING
; }
2590 #line 652 "./lexsrc.l"
2598 #line 657 "./lexsrc.l"
2608 #line 664 "./lexsrc.l"
2618 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
2619 exiterror( ERR_INVALID_DO_SYNTAX
, 1, "TO" ) ;
2625 #line 678 "./lexsrc.l"
2635 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
2636 exiterror( ERR_INVALID_DO_SYNTAX
, 1, "BY" ) ;
2642 #line 692 "./lexsrc.l"
2652 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
2653 exiterror( ERR_INVALID_DO_SYNTAX
, 1, "FOR" ) ;
2659 #line 706 "./lexsrc.l"
2665 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
2666 exiterror( ERR_INVALID_DO_SYNTAX
, 1, "WHILE" ) ;
2677 #line 721 "./lexsrc.l"
2682 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
2683 exiterror( ERR_INVALID_DO_SYNTAX
, 1, "UNTIL" ) ;
2693 *yy_cp
= yy_hold_char
; /* undo effects of setting up yytext */
2694 yy_c_buf_p
= yy_cp
-= 1;
2695 YY_DO_BEFORE_ACTION
; /* set up yytext again */
2697 #line 736 "./lexsrc.l"
2701 strcpy(retvalue
,rmspc( yytext
)) ;
2703 return DOVARIABLE
; }
2707 #line 743 "./lexsrc.l"
2708 { /* set labl to sym for other kind or vice versa*/
2712 for (i
=j
=0;(ch
=yytext
[i
])!=0;i
++) {
2713 if ('a' <= ch
&& ch
<= 'z')
2714 retvalue
[j
++] = (char) (ch
& 0xDF) ; /* ASCII only */
2715 /* FIXME: the following is WRONG, must first cut off {bl}:{bl} and
2716 * then fixup strings, FGC */
2717 else if ((ch
!=',')&&(ch
!='\n')&&(ch
!=':')&&!MY_ISBLANK(ch
))
2718 retvalue
[j
++] = ch
; }
2719 retvalue
[j
] = '\0' ;
2725 #line 759 "./lexsrc.l"
2730 strcpy(retvalue
,&yytext
[1]) ;
2731 for (i
=3; i
<=yyleng
&& retvalue
[yyleng
-i
]=='`'; i
++) ;
2732 retvalue
[yyleng
-i
] = '\0' ;
2734 kill_next_space
= 1 ;
2736 nexta
= dontlast
= 1 ;
2739 return CONCATENATE
; }
2743 return EXFUNCNAME
; }
2746 *yy_cp
= yy_hold_char
; /* undo effects of setting up yytext */
2747 yy_c_buf_p
= yy_cp
-= 1;
2748 YY_DO_BEFORE_ACTION
; /* set up yytext again */
2750 #line 780 "./lexsrc.l"
2756 /* first group can be large and odd-numbered; find # of zeros to pad */
2757 for (i
=1; (yytext
[i
]!=ech
) && isxdigit(yytext
[i
]); i
++) ;
2759 /* j is the number of digits processed */
2763 for (i
=1;(ech
!=(ch
=yytext
[i
]));i
++)
2767 if ((i
==1)||(j
)) /* leading space or space within a byte */
2769 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
2770 exiterror( ERR_INVALID_HEX_CONST
, 1, i
) ;
2773 else if (isxdigit(ch
))
2775 sum
= sum
*16 + (HEXVAL(ch
)) ;
2778 retvalue
[k
++] = (char) sum
;
2784 if ((i
>1) && isspace(yytext
[i
-1]))
2786 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
2787 exiterror( ERR_INVALID_HEX_CONST
, 1, i
) ;
2790 retvalue
[k
] = '\0' ;
2793 if ((preva
==1)&&(!in_parse
)&&(!in_call
))
2798 return CONCATENATE
;
2804 kill_next_space
= 1 ;
2814 *yy_cp
= yy_hold_char
; /* undo effects of setting up yytext */
2815 yy_c_buf_p
= yy_cp
-= 1;
2816 YY_DO_BEFORE_ACTION
; /* set up yytext again */
2818 #line 844 "./lexsrc.l"
2824 /* first group can be large and odd-numbered; find # of zeros to pad */
2825 for (i
=1; (yytext
[i
]!=ech
) && isdigit(yytext
[i
]); i
++) ;
2827 /* j is the number of digits processed */
2831 for (i
=1;(ech
!=(ch
=yytext
[i
]));i
++)
2835 if ((i
==1)||(j
)) /* leading space or space within a byte */
2837 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
2838 exiterror( ERR_INVALID_HEX_CONST
, 2, i
) ;
2841 else if ((ch
=='0')||(ch
=='1'))
2843 sum
= sum
*2 + (ch
-'0') ;
2846 retvalue
[k
++] = (char) sum
;
2852 if ((i
>1) && isspace(yytext
[i
-1]))
2854 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
2855 exiterror( ERR_INVALID_HEX_CONST
, 2, i
) ;
2859 /* then pack the nibbles */
2860 for (i
=j
=(k
%2); i
<=k
; i
++)
2863 retvalue
[i
/2] = (char)((retvalue
[i
/2]&0xf0) + retvalue
[i
-j
]) ;
2865 retvalue
[i
/2] = (char)((retvalue
[i
-j
]&0x0f)<<4) ;
2868 retvalue
[retlength
=i
/2] = '\0' ;
2870 if ((preva
==1)&&(!in_parse
)&&(!in_call
))
2875 return CONCATENATE
;
2881 kill_next_space
= 1 ;
2891 *yy_cp
= yy_hold_char
; /* undo effects of setting up yytext */
2892 yy_c_buf_p
= yy_cp
-= 1;
2893 YY_DO_BEFORE_ACTION
; /* set up yytext again */
2895 #line 915 "./lexsrc.l"
2900 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
2901 for (i
=0;yytext
[i
]; i
++)
2903 if ( !isxdigit(yytext
[i
]) && !(yytext
[i
] == '\"' && yytext
[0] == '\"') && !(yytext
[i
] == '\'' && yytext
[0] == '\'') && yytext
[i
] != ' ' )
2909 exiterror( ERR_INVALID_HEX_CONST
, 3, bad
) ;
2915 #line 932 "./lexsrc.l"
2919 for (i
=1; yytext
[i
+1]; i
++)
2921 if (yytext
[i
]=='\n')
2923 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
2924 exiterror( ERR_UNMATCHED_QUOTE
, 0 ) ;
2927 if (yytext
[i
]==yytext
[0] && yytext
[i
+1]==yytext
[0])
2928 for (j
=i
+1; yytext
[j
]; j
++)
2929 yytext
[j
] = yytext
[j
+1] ;
2932 yytext
[strlen(yytext
)-1] = '\0' ;
2933 strcpy(retvalue
,&yytext
[1]) ;
2937 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
2938 exiterror( ERR_INV_SUBKEYWORD
, 11, "ENGINEERING SCIENTIFIC", retvalue
) ;
2941 if ((preva
==1)&&(!in_parse
)&&(!in_call
)) {
2945 return CONCATENATE
; }
2950 kill_next_space
= 1 ;
2960 #line 975 "./lexsrc.l"
2964 strcpy(retvalue
,yytext
) ;
2970 #line 982 "./lexsrc.l"
2974 for (i
=0; i
<yyleng
-1 && yytext
[i
]!='`'; i
++) /* Copy value only */
2975 retvalue
[i
] = (char) toupper(yytext
[i
]) ;
2976 retvalue
[i
] = '\0' ;
2980 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
2981 exiterror( ERR_INV_SUBKEYWORD
, 11, "ENGINEERING SCIENTIFIC", retvalue
) ;
2985 kill_next_space
= 1 ;
2988 nexta
= dontlast
= 1 ;
2991 return CONCATENATE
;
2995 return INFUNCNAME
; }
2999 #line 1008 "./lexsrc.l"
3003 for (i
=0; i
<=yyleng
; i
++) /* Copy '\0', too */
3004 retvalue
[i
] = (char) toupper(yytext
[i
]) ;
3008 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
3009 exiterror( ERR_INV_SUBKEYWORD
, 11, "ENGINEERING SCIENTIFIC", retvalue
) ;
3016 kill_next_space
= 1 ;
3022 if ((preva
==1)&&(!in_parse
)) {
3026 return CONCATENATE
; }
3030 return CONSYMBOL
; }
3034 #line 1040 "./lexsrc.l"
3038 * this might be a symbol in front of a function, but only if next
3039 * char in input stream is "(".
3042 if (in_trace
) REJECT
;
3044 for (i
=0; i
<=yyleng
; i
++) /* include terminating '\0' */
3045 retvalue
[i
] = (char) toupper(yytext
[i
]) ;
3049 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
3050 exiterror( ERR_INV_SUBKEYWORD
, 11, "ENGINEERING SCIENTIFIC", retvalue
) ;
3053 if ((last_in_address
== in_address_keyword
) &&
3054 (in_address
== in_address_main
))
3056 kill_next_space
= 1 ;
3062 /* We must check if a '(' follows. Remember the number of eaten chars. */
3064 for (;(i
=input())=='`';)
3071 /* input() has destroyed the yytext-terminator re-set it */
3072 yytext
[yyleng
] = '\0';
3079 kill_next_space
= 1 ;
3082 nexta
= dontlast
= 1 ;
3084 return CONCATENATE
;
3092 kill_next_space
= 1 ;
3100 if ((preva
==1)&&(!in_parse
)) {
3103 return CONCATENATE
; }
3107 if (in_address
== in_address_with
)
3108 kill_next_space
= 1 ;
3109 if (SymbolDetect
) /* allow a fast breakout */
3111 /* We define a tricky preprocessor directive. This will give us
3112 * maximum performance without the loss of control or errors produced
3115 #define RET_IF(s) if ((SymbolDetect & SD_##s) && \
3116 (yyleng == sizeof(#s) - 1) && \
3117 (strncmp(retvalue, \
3119 sizeof(#s) - 1) == 0)) \
3121 /* e.g. RET_IF(INPUT); is replaced by:
3122 * if ((SymbolDetect & SD_INPUT) &&
3123 * (yyleng == sizeof("INPUT") - 1) &&
3124 * (strncmp(retvalue,
3126 * sizeof("INPUT") - 1) == 0))
3141 return SIMSYMBOL
; }
3145 #line 1148 "./lexsrc.l"
3153 #line 1153 "./lexsrc.l"
3158 nexta
= dontlast
= 1 ;
3161 return CONCATENATE
;
3168 #line 1165 "./lexsrc.l"
3175 #line 1169 "./lexsrc.l"
3183 #line 1174 "./lexsrc.l"
3191 #line 1179 "./lexsrc.l"
3198 #line 1183 "./lexsrc.l"
3205 #line 1187 "./lexsrc.l"
3212 #line 1191 "./lexsrc.l"
3219 #line 1195 "./lexsrc.l"
3226 #line 1199 "./lexsrc.l"
3233 #line 1203 "./lexsrc.l"
3235 /* why don't I have a {bl} in the beginning of this re? bug? */
3242 #line 1209 "./lexsrc.l"
3249 #line 1213 "./lexsrc.l"
3256 #line 1217 "./lexsrc.l"
3263 #line 1221 "./lexsrc.l"
3270 #line 1225 "./lexsrc.l"
3277 #line 1229 "./lexsrc.l"
3284 #line 1233 "./lexsrc.l"
3291 #line 1237 "./lexsrc.l"
3298 #line 1241 "./lexsrc.l"
3305 #line 1245 "./lexsrc.l"
3312 #line 1249 "./lexsrc.l"
3315 return DIFFERENT
; }
3319 #line 1253 "./lexsrc.l"
3322 return EQUALEQUAL
; }
3326 #line 1257 "./lexsrc.l"
3329 return NOTEQUALEQUAL
; }
3333 #line 1261 "./lexsrc.l"
3340 #line 1265 "./lexsrc.l"
3347 #line 1269 "./lexsrc.l"
3350 return CONCATENATE
; }
3354 #line 1273 "./lexsrc.l"
3361 #line 1277 "./lexsrc.l"
3363 if (in_address
== in_address_value
) /* Always allow spaces in the VALUE */
3364 { /* part of the ADDRESS stmt. */
3368 if (kill_this_space
)
3374 return (((in_parse
)&&(!seek_with
)) ? yylex() : SPACE
) ; }
3378 #line 1291 "./lexsrc.l"
3381 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
3382 exiterror( ERR_UNMATCHED_QUOTE
, 0 ) ; }
3386 #line 1297 "./lexsrc.l"
3389 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
3390 exiterror( ERR_INVALID_CHAR
, 1, yytext
[0], yytext
[0] ) ; }
3394 #line 1302 "./lexsrc.l"
3397 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
3398 exiterror( ERR_SYMBOL_EXPECTED
, 1, yytext
) ;}
3402 #line 1307 "./lexsrc.l"
3405 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
3406 exiterror( ERR_INTERPRETER_FAILURE
, 1, __FILE__
, __LINE__
, "" ) ;}
3410 #line 1313 "./lexsrc.l"
3413 #line 3414 "./lexsrc.c"
3414 case YY_STATE_EOF(INITIAL
):
3415 case YY_STATE_EOF(comm
):
3416 case YY_STATE_EOF(signal
):
3417 case YY_STATE_EOF(sgtype
):
3418 case YY_STATE_EOF(procd
):
3419 case YY_STATE_EOF(parse
):
3420 case YY_STATE_EOF(then
):
3421 case YY_STATE_EOF(with
):
3422 case YY_STATE_EOF(numeric
):
3423 case YY_STATE_EOF(do1
):
3424 case YY_STATE_EOF(other
):
3425 case YY_STATE_EOF(value1
):
3426 case YY_STATE_EOF(ifcont
):
3427 case YY_STATE_EOF(signame
):
3428 case YY_STATE_EOF(nmform
):
3430 #line 566 "flex.skl"
3432 case YY_END_OF_BUFFER
:
3434 /* Amount of text matched not including the EOB char. */
3435 int yy_amount_of_matched_text
= (int) (yy_cp
- (char *) yytext_ptr
) - 1;
3437 /* Undo the effects of YY_DO_BEFORE_ACTION. */
3438 *yy_cp
= yy_hold_char
;
3439 YY_RESTORE_YY_MORE_OFFSET
3441 if ( yy_current_buffer
->yy_buffer_status
== YY_BUFFER_NEW
)
3443 /* We're scanning a new file or input source. It's
3444 * possible that this happened because the user
3445 * just pointed yyin at a new source and called
3446 * yylex(). If so, then we have to assure
3447 * consistency between yy_current_buffer and our
3448 * globals. Here is the right place to do so, because
3449 * this is the first action (other than possibly a
3450 * back-up) that will match for the new input source.
3452 yy_n_chars
= yy_current_buffer
->yy_n_chars
;
3453 yy_current_buffer
->yy_input_file
= yyin
;
3454 yy_current_buffer
->yy_buffer_status
= YY_BUFFER_NORMAL
;
3457 /* Note that here we test for yy_c_buf_p "<=" to the position
3458 * of the first EOB in the buffer, since yy_c_buf_p will
3459 * already have been incremented past the NUL character
3460 * (since all states make transitions on EOB to the
3461 * end-of-buffer state). Contrast this with the test
3464 if ( yy_c_buf_p
<= &yy_current_buffer
->yy_ch_buf
[yy_n_chars
] )
3465 { /* This was really a NUL. */
3466 yy_state_type yy_next_state
;
3468 yy_c_buf_p
= yytext_ptr
+ yy_amount_of_matched_text
;
3470 yy_current_state
= yy_get_previous_state();
3472 /* Okay, we're now positioned to make the NUL
3473 * transition. We couldn't have
3474 * yy_get_previous_state() go ahead and do it
3475 * for us because it doesn't know how to deal
3476 * with the possibility of jamming (and we don't
3477 * want to build jamming into it because then it
3478 * will run more slowly).
3481 yy_next_state
= yy_try_NUL_trans( yy_current_state
);
3483 yy_bp
= yytext_ptr
+ YY_MORE_ADJ
;
3485 if ( yy_next_state
)
3487 /* Consume the NUL. */
3488 yy_cp
= ++yy_c_buf_p
;
3489 yy_current_state
= yy_next_state
;
3496 #line 632 "flex.skl"
3497 goto yy_find_action
;
3501 else switch ( yy_get_next_buffer() )
3503 case EOB_ACT_END_OF_FILE
:
3505 yy_did_buffer_switch_on_eof
= 0;
3509 /* Note: because we've taken care in
3510 * yy_get_next_buffer() to have set up
3511 * yytext, we can now set up
3512 * yy_c_buf_p so that if some total
3513 * hoser (like flex itself) wants to
3514 * call the scanner after we return the
3515 * YY_NULL, it'll still work - another
3516 * YY_NULL will get returned.
3518 yy_c_buf_p
= yytext_ptr
+ YY_MORE_ADJ
;
3520 yy_act
= YY_STATE_EOF(YY_START
);
3526 if ( ! yy_did_buffer_switch_on_eof
)
3532 case EOB_ACT_CONTINUE_SCAN
:
3534 yytext_ptr
+ yy_amount_of_matched_text
;
3536 yy_current_state
= yy_get_previous_state();
3539 yy_bp
= yytext_ptr
+ YY_MORE_ADJ
;
3542 case EOB_ACT_LAST_MATCH
:
3544 &yy_current_buffer
->yy_ch_buf
[yy_n_chars
];
3546 yy_current_state
= yy_get_previous_state();
3549 yy_bp
= yytext_ptr
+ YY_MORE_ADJ
;
3550 goto yy_find_action
;
3557 "fatal flex scanner internal error--no action found" );
3558 } /* end of action switch */
3559 } /* end of scanning one token */
3560 } /* end of yylex */
3562 #line 782 "flex.skl"
3564 /* yy_get_next_buffer - try to read in a new buffer
3566 * Returns a code representing an action:
3567 * EOB_ACT_LAST_MATCH -
3568 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
3569 * EOB_ACT_END_OF_FILE - end of file
3572 #line 793 "flex.skl"
3573 static int yy_get_next_buffer()
3574 #line 799 "flex.skl"
3576 register char *dest
= yy_current_buffer
->yy_ch_buf
;
3577 register char *source
= yytext_ptr
;
3578 register int number_to_move
, i
;
3581 if ( yy_c_buf_p
> &yy_current_buffer
->yy_ch_buf
[yy_n_chars
+ 1] )
3583 "fatal flex scanner internal error--end of buffer missed" );
3585 if ( yy_current_buffer
->yy_fill_buffer
== 0 )
3586 { /* Don't try to fill the buffer, so this is an EOF. */
3587 if ( yy_c_buf_p
- (char *) yytext_ptr
- YY_MORE_ADJ
== 1 )
3589 /* We matched a single character, the EOB, so
3590 * treat this as a final EOF.
3592 return EOB_ACT_END_OF_FILE
;
3597 /* We matched some text prior to the EOB, first
3600 return EOB_ACT_LAST_MATCH
;
3604 /* Try to read more data. */
3606 /* First move last chars to start of buffer. */
3607 number_to_move
= (int) (yy_c_buf_p
- (char *) yytext_ptr
) - 1;
3609 for ( i
= 0; i
< number_to_move
; ++i
)
3610 *(dest
++) = *(source
++);
3612 if ( yy_current_buffer
->yy_buffer_status
== YY_BUFFER_EOF_PENDING
)
3613 /* don't do the read, it's not guaranteed to return an EOF,
3616 yy_current_buffer
->yy_n_chars
= yy_n_chars
= 0;
3621 yy_current_buffer
->yy_buf_size
- number_to_move
- 1;
3623 while ( num_to_read
<= 0 )
3624 { /* Not enough room in the buffer - grow it. */
3625 #ifdef YY_USES_REJECT
3627 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
3630 /* just a shorter name for the current buffer */
3631 YY_BUFFER_STATE b
= yy_current_buffer
;
3633 int yy_c_buf_p_offset
=
3634 (int) (yy_c_buf_p
- b
->yy_ch_buf
);
3636 if ( b
->yy_is_our_buffer
)
3638 int new_size
= b
->yy_buf_size
* 2;
3640 if ( new_size
<= 0 )
3641 b
->yy_buf_size
+= b
->yy_buf_size
/ 8;
3643 b
->yy_buf_size
*= 2;
3645 b
->yy_ch_buf
= (char *)
3646 /* Include room in for 2 EOB chars. */
3647 yy_flex_realloc( (void *) b
->yy_ch_buf
,
3648 b
->yy_buf_size
+ 2 );
3651 /* Can't grow it, we don't own it. */
3654 if ( ! b
->yy_ch_buf
)
3656 "fatal error - scanner input buffer overflow" );
3658 yy_c_buf_p
= &b
->yy_ch_buf
[yy_c_buf_p_offset
];
3660 num_to_read
= yy_current_buffer
->yy_buf_size
-
3665 if ( num_to_read
> YY_READ_BUF_SIZE
)
3666 num_to_read
= YY_READ_BUF_SIZE
;
3668 /* Read in more data. */
3669 YY_INPUT( (&yy_current_buffer
->yy_ch_buf
[number_to_move
]),
3670 yy_n_chars
, num_to_read
);
3672 yy_current_buffer
->yy_n_chars
= yy_n_chars
;
3675 if ( yy_n_chars
== 0 )
3677 if ( number_to_move
== YY_MORE_ADJ
)
3679 ret_val
= EOB_ACT_END_OF_FILE
;
3685 ret_val
= EOB_ACT_LAST_MATCH
;
3686 yy_current_buffer
->yy_buffer_status
=
3687 YY_BUFFER_EOF_PENDING
;
3692 ret_val
= EOB_ACT_CONTINUE_SCAN
;
3694 yy_n_chars
+= number_to_move
;
3695 yy_current_buffer
->yy_ch_buf
[yy_n_chars
] = YY_END_OF_BUFFER_CHAR
;
3696 yy_current_buffer
->yy_ch_buf
[yy_n_chars
+ 1] = YY_END_OF_BUFFER_CHAR
;
3698 yytext_ptr
= &yy_current_buffer
->yy_ch_buf
[0];
3704 /* yy_get_previous_state - get the state just before the EOB char was reached */
3706 #line 932 "flex.skl"
3707 static yy_state_type
yy_get_previous_state()
3708 #line 938 "flex.skl"
3710 register yy_state_type yy_current_state
;
3711 register char *yy_cp
;
3713 yy_current_state
= yy_start
;
3714 yy_state_ptr
= yy_state_buf
;
3715 *yy_state_ptr
++ = yy_current_state
;
3716 #line 944 "flex.skl"
3718 for ( yy_cp
= yytext_ptr
+ YY_MORE_ADJ
; yy_cp
< yy_c_buf_p
; ++yy_cp
)
3720 register YY_CHAR yy_c
= (*yy_cp
? yy_ec
[YY_SC_TO_UI(*yy_cp
)] : 1);
3721 while ( yy_chk
[yy_base
[yy_current_state
] + yy_c
] != yy_current_state
)
3723 yy_current_state
= (int) yy_def
[yy_current_state
];
3724 if ( yy_current_state
>= 848 )
3725 yy_c
= yy_meta
[(unsigned int) yy_c
];
3727 yy_current_state
= yy_nxt
[yy_base
[yy_current_state
] + (unsigned int) yy_c
];
3728 *yy_state_ptr
++ = yy_current_state
;
3729 #line 949 "flex.skl"
3732 return yy_current_state
;
3736 /* yy_try_NUL_trans - try to make a transition on the NUL character
3739 * next_state = yy_try_NUL_trans( current_state );
3742 #line 963 "flex.skl"
3743 #ifdef YY_USE_PROTOS
3744 static yy_state_type
yy_try_NUL_trans( yy_state_type yy_current_state
)
3746 static yy_state_type
yy_try_NUL_trans( yy_current_state
)
3747 yy_state_type yy_current_state
;
3749 #line 974 "flex.skl"
3751 register int yy_is_jam
;
3753 register YY_CHAR yy_c
= 1;
3754 while ( yy_chk
[yy_base
[yy_current_state
] + yy_c
] != yy_current_state
)
3756 yy_current_state
= (int) yy_def
[yy_current_state
];
3757 if ( yy_current_state
>= 848 )
3758 yy_c
= yy_meta
[(unsigned int) yy_c
];
3760 yy_current_state
= yy_nxt
[yy_base
[yy_current_state
] + (unsigned int) yy_c
];
3761 yy_is_jam
= (yy_current_state
== 847);
3763 *yy_state_ptr
++ = yy_current_state
;
3764 #line 978 "flex.skl"
3766 return yy_is_jam
? 0 : yy_current_state
;
3770 #line 985 "flex.skl"
3772 #ifdef YY_USE_PROTOS
3773 static void yyunput( int c
, register char *yy_bp
)
3775 static void yyunput( c
, yy_bp
)
3777 register char *yy_bp
;
3779 #line 998 "flex.skl"
3781 register char *yy_cp
= yy_c_buf_p
;
3783 /* undo effects of setting up yytext */
3784 *yy_cp
= yy_hold_char
;
3786 if ( yy_cp
< yy_current_buffer
->yy_ch_buf
+ 2 )
3787 { /* need to shift things up to make room */
3788 /* +2 for EOB chars. */
3789 register int number_to_move
= yy_n_chars
+ 2;
3790 register char *dest
= &yy_current_buffer
->yy_ch_buf
[
3791 yy_current_buffer
->yy_buf_size
+ 2];
3792 register char *source
=
3793 &yy_current_buffer
->yy_ch_buf
[number_to_move
];
3795 while ( source
> yy_current_buffer
->yy_ch_buf
)
3796 *--dest
= *--source
;
3798 yy_cp
+= (int) (dest
- source
);
3799 yy_bp
+= (int) (dest
- source
);
3800 yy_current_buffer
->yy_n_chars
=
3801 yy_n_chars
= yy_current_buffer
->yy_buf_size
;
3803 if ( yy_cp
< yy_current_buffer
->yy_ch_buf
+ 2 )
3804 YY_FATAL_ERROR( "flex scanner push-back overflow" );
3807 *--yy_cp
= (char) c
;
3809 #line 1029 "flex.skl"
3812 yy_hold_char
= *yy_cp
;
3815 #line 1036 "flex.skl"
3816 #endif /* ifndef YY_NO_UNPUT */
3817 #line 1039 "flex.skl"
3820 #line 1043 "flex.skl"
3822 static int yyinput()
3826 #line 1053 "flex.skl"
3830 *yy_c_buf_p
= yy_hold_char
;
3832 if ( *yy_c_buf_p
== YY_END_OF_BUFFER_CHAR
)
3834 /* yy_c_buf_p now points to the character we want to return.
3835 * If this occurs *before* the EOB characters, then it's a
3836 * valid NUL; if not, then we've hit the end of the buffer.
3838 if ( yy_c_buf_p
< &yy_current_buffer
->yy_ch_buf
[yy_n_chars
] )
3839 /* This was really a NUL. */
3843 { /* need more input */
3844 int offset
= yy_c_buf_p
- (char *) yytext_ptr
;
3847 switch ( yy_get_next_buffer() )
3849 case EOB_ACT_LAST_MATCH
:
3850 /* This happens because yy_g_n_b()
3851 * sees that we've accumulated a
3852 * token and flags that we need to
3853 * try matching the token before
3854 * proceeding. But for input(),
3855 * there's no matching to consider.
3856 * So convert the EOB_ACT_LAST_MATCH
3857 * to EOB_ACT_END_OF_FILE.
3860 /* Reset buffer status. */
3865 case EOB_ACT_END_OF_FILE
:
3870 if ( ! yy_did_buffer_switch_on_eof
)
3879 case EOB_ACT_CONTINUE_SCAN
:
3880 yy_c_buf_p
= yytext_ptr
+ offset
;
3886 c
= *(unsigned char *) yy_c_buf_p
; /* cast for 8-bit char's */
3887 *yy_c_buf_p
= '\0'; /* preserve yytext */
3888 yy_hold_char
= *++yy_c_buf_p
;
3890 #line 1118 "flex.skl"
3896 #line 1125 "flex.skl"
3897 #ifdef YY_USE_PROTOS
3898 void yyrestart( FILE *input_file
)
3900 void yyrestart( input_file
)
3903 #line 1136 "flex.skl"
3905 if ( ! yy_current_buffer
)
3906 yy_current_buffer
= yy_create_buffer( yyin
, YY_BUF_SIZE
);
3908 yy_init_buffer( yy_current_buffer
, input_file
);
3909 yy_load_buffer_state();
3913 #line 1147 "flex.skl"
3914 #ifdef YY_USE_PROTOS
3915 void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer
)
3917 void yy_switch_to_buffer( new_buffer
)
3918 YY_BUFFER_STATE new_buffer
;
3920 #line 1158 "flex.skl"
3922 if ( yy_current_buffer
== new_buffer
)
3925 if ( yy_current_buffer
)
3927 /* Flush out information for old buffer. */
3928 *yy_c_buf_p
= yy_hold_char
;
3929 yy_current_buffer
->yy_buf_pos
= yy_c_buf_p
;
3930 yy_current_buffer
->yy_n_chars
= yy_n_chars
;
3933 yy_current_buffer
= new_buffer
;
3934 yy_load_buffer_state();
3936 /* We don't actually know whether we did this switch during
3937 * EOF (yywrap()) processing, but the only time this flag
3938 * is looked at is after yywrap() is called, so it's safe
3939 * to go ahead and always set it.
3941 yy_did_buffer_switch_on_eof
= 1;
3945 #line 1184 "flex.skl"
3946 #ifdef YY_USE_PROTOS
3947 void yy_load_buffer_state( void )
3949 void yy_load_buffer_state()
3951 #line 1194 "flex.skl"
3953 yy_n_chars
= yy_current_buffer
->yy_n_chars
;
3954 yytext_ptr
= yy_c_buf_p
= yy_current_buffer
->yy_buf_pos
;
3955 yyin
= yy_current_buffer
->yy_input_file
;
3956 yy_hold_char
= *yy_c_buf_p
;
3960 #line 1204 "flex.skl"
3961 #ifdef YY_USE_PROTOS
3962 YY_BUFFER_STATE
yy_create_buffer( FILE *file
, int size
)
3964 YY_BUFFER_STATE
yy_create_buffer( file
, size
)
3968 #line 1216 "flex.skl"
3972 b
= (YY_BUFFER_STATE
) yy_flex_alloc( sizeof( struct yy_buffer_state
) );
3974 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
3976 b
->yy_buf_size
= size
;
3978 /* yy_ch_buf has to be 2 characters longer than the size given because
3979 * we need to put in 2 end-of-buffer characters.
3981 b
->yy_ch_buf
= (char *) yy_flex_alloc( b
->yy_buf_size
+ 2 );
3982 if ( ! b
->yy_ch_buf
)
3983 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
3985 b
->yy_is_our_buffer
= 1;
3987 yy_init_buffer( b
, file
);
3993 #line 1242 "flex.skl"
3994 #ifdef YY_USE_PROTOS
3995 void yy_delete_buffer( YY_BUFFER_STATE b
)
3997 void yy_delete_buffer( b
)
4000 #line 1253 "flex.skl"
4005 if ( b
== yy_current_buffer
)
4006 yy_current_buffer
= (YY_BUFFER_STATE
) 0;
4008 if ( b
->yy_is_our_buffer
)
4009 yy_flex_free( (void *) b
->yy_ch_buf
);
4011 yy_flex_free( (void *) b
);
4015 #line 1269 "flex.skl"
4016 #ifndef YY_ALWAYS_INTERACTIVE
4017 #ifndef YY_NEVER_INTERACTIVE
4018 extern int isatty
YY_PROTO(( int ));
4022 #ifdef YY_USE_PROTOS
4023 void yy_init_buffer( YY_BUFFER_STATE b
, FILE *file
)
4025 void yy_init_buffer( b
, file
)
4030 #line 1289 "flex.skl"
4033 #line 1292 "flex.skl"
4034 yy_flush_buffer( b
);
4036 b
->yy_input_file
= file
;
4037 b
->yy_fill_buffer
= 1;
4039 #line 1299 "flex.skl"
4040 #if YY_ALWAYS_INTERACTIVE
4041 b
->yy_is_interactive
= 1;
4043 #if YY_NEVER_INTERACTIVE
4044 b
->yy_is_interactive
= 0;
4046 b
->yy_is_interactive
= file
? (isatty( fileno(file
) ) > 0) : 0;
4049 #line 1313 "flex.skl"
4053 #line 1318 "flex.skl"
4054 #ifdef YY_USE_PROTOS
4055 void yy_flush_buffer( YY_BUFFER_STATE b
)
4057 void yy_flush_buffer( b
)
4061 #line 1330 "flex.skl"
4068 /* We always need two end-of-buffer characters. The first causes
4069 * a transition to the end-of-buffer state. The second causes
4070 * a jam in that state.
4072 b
->yy_ch_buf
[0] = YY_END_OF_BUFFER_CHAR
;
4073 b
->yy_ch_buf
[1] = YY_END_OF_BUFFER_CHAR
;
4075 b
->yy_buf_pos
= &b
->yy_ch_buf
[0];
4078 b
->yy_buffer_status
= YY_BUFFER_NEW
;
4080 if ( b
== yy_current_buffer
)
4081 yy_load_buffer_state();
4083 #line 1353 "flex.skl"
4086 #ifndef YY_NO_SCAN_BUFFER
4087 #line 1358 "flex.skl"
4088 #ifdef YY_USE_PROTOS
4089 YY_BUFFER_STATE
yy_scan_buffer( char *base
, yy_size_t size
)
4091 YY_BUFFER_STATE
yy_scan_buffer( base
, size
)
4099 base
[size
-2] != YY_END_OF_BUFFER_CHAR
||
4100 base
[size
-1] != YY_END_OF_BUFFER_CHAR
)
4101 /* They forgot to leave room for the EOB's. */
4104 b
= (YY_BUFFER_STATE
) yy_flex_alloc( sizeof( struct yy_buffer_state
) );
4106 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
4108 b
->yy_buf_size
= size
- 2; /* "- 2" to take care of EOB's */
4109 b
->yy_buf_pos
= b
->yy_ch_buf
= base
;
4110 b
->yy_is_our_buffer
= 0;
4111 b
->yy_input_file
= 0;
4112 b
->yy_n_chars
= b
->yy_buf_size
;
4113 b
->yy_is_interactive
= 0;
4115 b
->yy_fill_buffer
= 0;
4116 b
->yy_buffer_status
= YY_BUFFER_NEW
;
4118 yy_switch_to_buffer( b
);
4123 #line 1395 "flex.skl"
4126 #ifndef YY_NO_SCAN_STRING
4127 #line 1400 "flex.skl"
4128 #ifdef YY_USE_PROTOS
4129 YY_BUFFER_STATE
yy_scan_string( yyconst
char *yy_str
)
4131 YY_BUFFER_STATE
yy_scan_string( yy_str
)
4132 yyconst
char *yy_str
;
4136 for ( len
= 0; yy_str
[len
]; ++len
)
4139 return yy_scan_bytes( yy_str
, len
);
4142 #line 1416 "flex.skl"
4145 #ifndef YY_NO_SCAN_BYTES
4146 #line 1421 "flex.skl"
4147 #ifdef YY_USE_PROTOS
4148 YY_BUFFER_STATE
yy_scan_bytes( yyconst
char *bytes
, int len
)
4150 YY_BUFFER_STATE
yy_scan_bytes( bytes
, len
)
4151 yyconst
char *bytes
;
4160 /* Get memory for full buffer, including space for trailing EOB's. */
4162 buf
= (char *) yy_flex_alloc( n
);
4164 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
4166 for ( i
= 0; i
< len
; ++i
)
4169 buf
[len
] = buf
[len
+1] = YY_END_OF_BUFFER_CHAR
;
4171 b
= yy_scan_buffer( buf
, n
);
4173 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
4175 /* It's okay to grow etc. this buffer, and we should throw it
4176 * away when we're done.
4178 b
->yy_is_our_buffer
= 1;
4183 #line 1459 "flex.skl"
4186 #ifndef YY_NO_PUSH_STATE
4187 #line 1464 "flex.skl"
4188 #ifdef YY_USE_PROTOS
4189 static void yy_push_state( int new_state
)
4191 static void yy_push_state( new_state
)
4194 #line 1475 "flex.skl"
4196 if ( yy_start_stack_ptr
>= yy_start_stack_depth
)
4200 yy_start_stack_depth
+= YY_START_STACK_INCR
;
4201 new_size
= yy_start_stack_depth
* sizeof( int );
4203 if ( ! yy_start_stack
)
4204 yy_start_stack
= (int *) yy_flex_alloc( new_size
);
4207 yy_start_stack
= (int *) yy_flex_realloc(
4208 (void *) yy_start_stack
, new_size
);
4210 if ( ! yy_start_stack
)
4212 "out of memory expanding start-condition stack" );
4215 yy_start_stack
[yy_start_stack_ptr
++] = YY_START
;
4222 #ifndef YY_NO_POP_STATE
4223 #line 1505 "flex.skl"
4224 static void yy_pop_state()
4225 #line 1511 "flex.skl"
4227 if ( --yy_start_stack_ptr
< 0 )
4228 YY_FATAL_ERROR( "start-condition stack underflow" );
4230 BEGIN(yy_start_stack
[yy_start_stack_ptr
]);
4235 #ifndef YY_NO_TOP_STATE
4236 #line 1523 "flex.skl"
4237 static int yy_top_state()
4238 #line 1529 "flex.skl"
4240 return yy_start_stack
[yy_start_stack_ptr
- 1];
4244 #ifndef YY_EXIT_FAILURE
4245 #define YY_EXIT_FAILURE 2
4248 #line 1540 "flex.skl"
4249 #ifdef YY_USE_PROTOS
4250 static void yy_fatal_error( yyconst
char msg
[] )
4252 static void yy_fatal_error( msg
)
4256 (void) fprintf( stderr
, "%s\n", msg
);
4257 exit( YY_EXIT_FAILURE
);
4260 #line 1561 "flex.skl"
4263 /* Redefine yyless() so it works in section 3 code. */
4269 /* Undo effects of setting up yytext. */ \
4270 yytext[yyleng] = yy_hold_char; \
4271 yy_c_buf_p = yytext + n; \
4272 yy_hold_char = *yy_c_buf_p; \
4273 *yy_c_buf_p = '\0'; \
4279 /* Internal utility routines. */
4282 #ifdef YY_USE_PROTOS
4283 static void yy_flex_strncpy( char *s1
, yyconst
char *s2
, int n
)
4285 static void yy_flex_strncpy( s1
, s2
, n
)
4292 for ( i
= 0; i
< n
; ++i
)
4297 #ifdef YY_NEED_STRLEN
4298 #ifdef YY_USE_PROTOS
4299 static int yy_flex_strlen( yyconst
char *s
)
4301 static int yy_flex_strlen( s
)
4306 for ( n
= 0; s
[n
]; ++n
)
4314 #ifdef YY_USE_PROTOS
4315 static void *yy_flex_alloc( yy_size_t size
)
4317 static void *yy_flex_alloc( size
)
4321 return (void *) malloc( size
);
4324 #ifdef YY_USE_PROTOS
4325 static void *yy_flex_realloc( void *ptr
, yy_size_t size
)
4327 static void *yy_flex_realloc( ptr
, size
)
4332 /* The cast to (char *) in the following accommodates both
4333 * implementations that use char* generic pointers, and those
4334 * that use void* generic pointers. It works with the latter
4335 * because both ANSI C and C++ allow castless assignment from
4336 * any pointer type to void*, and deal with argument conversions
4337 * as though doing an assignment.
4339 return (void *) realloc( (char *) ptr
, size
);
4342 #ifdef YY_USE_PROTOS
4343 static void yy_flex_free( void *ptr
)
4345 static void yy_flex_free( ptr
)
4359 #line 1313 "./lexsrc.l"
4362 #define NORMALSTAT 0
4363 #define COMMENTSTAT 1
4364 #define SINGLEQUOTE 2
4365 #define DOUBLEQUOTE 3
4368 /* rmspc uppercases all characters and removes blanks from a string.
4369 * Returns the input string.
4371 static YY_CHAR_TYPE
*rmspc( YY_CHAR_TYPE
*instr
)
4373 YY_CHAR_TYPE
*retval
=instr
,
4377 while ((c
= *instr
++) != '\0')
4379 c
= (YY_CHAR_TYPE
) toupper(c
);
4380 /* These characters are treated as blanks: */
4381 if ((c
!='`') && (c
!=' ') && (c
!=',') && (c
!='\t') && (c
!='\n'))
4390 /* get_next_line: Lower level input fetcher.
4391 * Reads exactly one line from the input stream (file or string).
4392 * All EOL characters are removed and the result is stored in
4393 * last_source_line. A check for line overflow occurred here.
4394 * A special check is done for CP/M ^Z (DOS and friends use this for
4395 * "backward" compatibility, too).
4396 * line is filled with valid values on success.
4397 * max must reflect size of line and should be at least BUFFERSIZE + 2;
4398 * Returns -1 (no input) or the number of valid chars in line.
4400 static int get_next_line( char *line
, int max
, FILE *stream
)
4402 lineboxptr newline
;
4403 offsrcline
*incore_newline
;
4405 int c
= 0, nextEOL
;
4407 if (inEOF
) /* You can't use myunputc if EOF is reached! */
4410 while (pos
<= max
- 2)
4414 c
= chbuffer
[--bufptr
] ;
4417 if (interptr
>=interptrmax
)
4420 #ifdef ASCII_0_TERMINATES_STRING
4421 if ((c
= *interptr
++) == '\0')
4430 if ((c
=='\r') || (c
=='\n') || (c
==EOF
))
4432 line
[pos
++] = (char) (unsigned char) c
;
4435 /* first, check for overflow */
4436 if ((c
!='\r') && (c
!='\n') && (c
!=EOF
))
4438 parser_data
.tline
= linenr
; /* set tline for exiterror */
4439 exiterror( ERR_TOO_LONG_LINE
, 0 ) ;
4442 /* We have either a (first) line terminator or EOF */
4445 if ((pos
==1) && (line
[0]=='\x1A')) /* CP/M ^Z EOF? */
4456 /* get one more char */
4458 nextEOL
= chbuffer
[--bufptr
] ;
4461 if (interptr
>=interptrmax
)
4464 #ifdef ASCII_0_TERMINATES_STRING
4465 if ((nextEOL
= *interptr
++) == '\0')
4468 nextEOL
= *interptr
++ ;
4472 nextEOL
= getc(stream
) ;
4475 /* Decide if the next character is the last char of a EOL pair.
4476 * Valid pairs are CR/LF or LF/CR. Put nextEOL back if there is no pair.
4478 if (((c
!='\n') || (nextEOL
!='\r')) &&
4479 ((c
!='\r') || (nextEOL
!='\n')))
4480 chbuffer
[bufptr
++] = (short) nextEOL
;
4482 cch
= 0 ; /* not needed ? */
4485 if (parser_data
.incore_source
)
4486 { /* We can use the incore string to describe a source line. */
4487 incore_newline
= FreshLine() ;
4488 incore_newline
->length
= pos
- 1 ;
4489 /* FIXME: What happens on the second attempt to read EOF or with CRLF? */
4490 incore_newline
->offset
= interptr
- parser_data
.incore_source
;
4494 newline
= (lineboxptr
)Malloc(sizeof(linebox
)) ;
4495 newline
->line
= Str_make_TSD( parser_data
.TSD
, pos
- 1 ) ;
4496 newline
->line
->len
= pos
- 1 ;
4497 memcpy(newline
->line
->value
, line
, pos
- 1 ) ;
4498 newline
->prev
= parser_data
.last_source_line
;
4499 newline
->next
= NULL
;
4500 newline
->lineno
= linenr
++ ;
4502 if (parser_data
.first_source_line
==NULL
)
4503 parser_data
.first_source_line
= newline
;
4505 parser_data
.last_source_line
->next
= newline
;
4506 parser_data
.last_source_line
= newline
;
4511 /* fill_buffer: Higher level input fetcher.
4512 * (To allow the C-file to compile, all Rexx comments in this comment
4513 * are written as "{*" "*}" instead of the normal, C-like manner.)
4514 * Reads lines from the input stream (yyin or string) with get_next_line.
4515 * Only one line is returned to allow the saving of the line number.
4516 * This routine replaces all comments by '`' signs. This allows
4517 * the detection of a "pseudo" blank: The fragment "say x{* *}y" uses two
4518 * variables, not one called "xy". The parsing of comments must be done
4519 * here to check for the actual numbers of open and closes ("{*" and "*}").
4520 * While doing this we must always check for strings since "'{*'" is not part
4522 * Here is a problem: Is this a nested valid comment: "{* '{*' *} *}"?
4523 * I think so although you cannot remove the outer comment signs without an
4524 * error. Everything within a comment is a comment (per def.). Counting
4525 * opens and closes of comment signs is an ugly trick to help the user.
4526 * He/she must know what he/she is doing if nesting comments!
4528 * max_size gives the maximum size of buf. This is filled up with input.
4529 * We never return less than one character until EOF is reached. Thus, we
4530 * read more than one true input line if a comment spans over more than one
4532 * A line will either be terminated by a single '\n' or by a blank. The
4533 * later one replaces a line continuation (',' [spaces] EOL).
4534 * Errors in this low
4536 * Conclusion: We have to fight very hard to set the expected line number.
4537 * * Comments spanning over lines set them on getting the
4539 * * Concatenated lines set
4541 static int fill_buffer( char *buf
, int max_size
)
4543 /* statics protected by regina_parser */
4544 static char line
[BUFFERSIZE
+2] ; /* special buffer to allow max_size */
4545 static int pos
= 0, max
= 0 ; /* being smaller than BUFFERSIZE+1 */
4546 static int nesting
= 0; /* nesting level of comments */
4547 int nesting_start_line
= 0; /* start line of comment for errortext() */
4549 int i
, squote
, dquote
;
4557 max
= get_next_line( line
, sizeof(line
), yyin
) ;
4558 if (max
< 0) /* empty input file */
4562 { /* Ignore first line beginning this way for unix compat */
4564 return fill_buffer( buf
, max_size
) ;
4568 { /* Ignore first line beginning this way for unix compat */
4570 memcpy( line
, "/**/\n", 5 );
4574 else if (pos
< max
) /* Are there still characters to transmit? */
4576 /* Buffer already checked for correctness */
4577 if (max_size
> max
- pos
)
4578 max_size
= max
- pos
;
4579 memcpy(buf
, line
+ pos
, max_size
);
4583 else /* Need next line */
4585 if (contline
&& !nesting
)
4587 extnextline
= ++nextline
;
4592 max
= get_next_line( line
, sizeof(line
), yyin
) ;
4593 if (max
< 0) /* empty input file */
4597 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
4598 exiterror( ERR_UNMATCHED_QUOTE
, 1 ) ;
4604 /* A new line is available, check first for an ending comment */
4605 dest
= line
; /* we change comments in line */
4606 if (nesting
) /* This may lead to more line reading */
4609 * The first time extnextline is non-zero, we have the comment
4610 * starting sequence line. This is saved for use if no matching
4611 * ending comment sequence is found, so that the error message
4612 * reflects the start of the comment.
4613 * Regina feature request: #508788
4615 if ( extnextline
< 0 )
4616 nesting_start_line
= nextline
+1;
4617 extnextline
= ++nextline
;
4618 extnextstart
= 1; /* See Reference (*) below */
4623 if (c
== '*') /* start of comment end? */
4625 if (line
[pos
+1] == '/')
4626 { /* pos+1 always exists, at least '\n' or '\0' */
4638 else if (c
== '/') /* start of new begin? */
4640 if (line
[pos
+1] == '*')
4653 max
= get_next_line( line
, sizeof(line
), yyin
) ;
4654 if (max
< 0) /* empty input file */
4656 if ( nesting_start_line
)
4657 parser_data
.tline
= nesting_start_line
; /* set tline for exiterror */
4659 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
4660 exiterror( ERR_UNMATCHED_QUOTE
, 1 ) ;
4663 /* This is a comment continuation. If the lexer will return
4664 * something it already has a valid tline/tstart pair.
4665 * The lexer will return the current token and on the NEXT
4666 * call it expects a valid nextline/nextstart pair.
4668 extnextline
= ++nextline
; extnextstart
= 1;
4669 dest
= line
; /* we change comments in line */
4670 goto repeated_nesting
;
4672 extnextstart
= pos
+ 1;
4674 { /* Exception! Have a look at: "x='y',{*\n\n*}\n'z'". This should
4675 * result in "x = 'y' 'z'".
4676 * We must parse until EOL and check for whitespaces and comments...
4685 if (line
[pos
+1] == '*')
4689 goto repeated_nesting
;
4692 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
4693 exiterror( ERR_YACC_SYNTAX
, 1, parser_data
.tline
) ; /* standard error */
4697 /* All done, it was a continuation line. */
4698 /* contline will be resetted by: */
4699 return fill_buffer( buf
, max_size
) ;
4702 /* We have something to play with. Run through the input and check for
4703 * strings including comments.
4705 squote
= dquote
= 0;
4708 /* We use selective loops to reduce comparisons */
4713 if (c
== '*') /* start of comment end? */
4715 if (line
[pos
+1] == '/')
4716 { /* pos+1 always exists, at least '\n' or '\0' */
4727 else if (c
== '/') /* start of new begin? */
4729 if (line
[pos
+1] == '*')
4738 } while (pos
< max
);
4741 while ((c
= line
[pos
]) != '\'')
4746 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
4747 exiterror( ERR_UNMATCHED_QUOTE
, 2 ) ;
4756 while ((c
= line
[pos
]) != '\"')
4761 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
4762 exiterror( ERR_UNMATCHED_QUOTE
, 3 ) ;
4771 switch (c
= line
[pos
])
4786 if (line
[pos
+ 1] == '*')
4802 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
4803 exiterror( ERR_INVALID_CHAR
, 1, c
, c
) ;
4813 max
= (int) (dest
- line
);
4815 /* Now we can replace a ',' [spaces|comments] '\n' with the line
4816 * continuation, but check for nesting first
4819 { /* Don't leave ANY spaces at EOL. That would confuse the lexer. */
4821 while ((i
>= 0) && isspace(line
[i
]))
4824 /* Of course, there is one exception: line continuation */
4825 while ((i
>= 0) && (line
[i
] == '`'))
4827 if ((i
>= 0) && (line
[i
] == ','))
4834 * At this point the lexer can't determine the nextline since we eat up
4835 * the \n. This leads to an incorrect count. But either the '`'-signs
4836 * are ignored or they are follows of a "token", a valid word.
4837 * Look at "say x;say y ``". This will cause the lexer to
4838 * return at least 4 tokens (SAY "x" ";" SAY) before "y" will be
4839 * returned. We can only set nextline/nextstart at "y".
4840 * Result: We set this pair at the start of the next call to
4841 * fill_buffer such that the next call to yylex will set the correct
4847 i
= max
- 1; /* on last valid char */
4850 if (!MY_ISBLANK(line
[i
]) && (line
[i
] != '\n'))
4854 /* i now -1 or on last nonblank */
4855 if ((i
>= 0) && (line
[i
] == ','))
4856 { /* FIXME: What shall be do with "," followed by EOF? */
4865 memcpy(buf
, line
, max_size
);
4871 /* yywrap MAY be called by the lexer is EOF encounters, see (f)lex docu */
4874 assert( do_level
>= 0 ) ;
4877 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
4878 exiterror( ERR_INCOMPLETE_STRUCT
, 0 ) ;
4883 /******************************************************************************
4884 ******************************************************************************
4885 * global interface ***********************************************************
4886 ******************************************************************************
4887 *****************************************************************************/
4889 /* initalize all local and global values */
4890 static void init_it_all( tsd_t
*TSD
)
4892 #if defined(FLEX_SCANNER) && defined(FLEX_DEBUG)
4917 kill_this_space
= 0 ;
4931 interptrmax
= NULL
;
4932 /* non-zero values */
4936 kill_next_space
= 1 ;
4940 memset(&parser_data
, 0, sizeof(internal_parser_type
));
4941 parser_data
.TSD
= TSD
;
4944 /* fetch may only be called by fetch_protected. The parser and lexer are
4945 * already protected by regina_parser by fetch_protected.
4946 * This function prepares the lexer and parser and call them. The
4947 * result and all generated values are stored in result. The parser
4948 * tree isn't executed here.
4949 * Exactly fptr xor str must be non-null.
4951 static void fetch(tsd_t
*TSD
, FILE *fptr
, const streng
*str
,
4952 internal_parser_type
*result
)
4954 init_it_all( TSD
) ;
4958 yy_delete_buffer(YY_CURRENT_BUFFER
) ;
4969 interptr
= str
->value
;
4970 interptrmax
= interptr
+ cchmax
;
4971 result
->incore_source
= str
->value
;
4976 parser_data
.result
= __reginaparse();
4979 yy_delete_buffer(YY_CURRENT_BUFFER
) ;
4985 *result
= parser_data
;
4986 /* Some functions assume null values if parsing isn't running: */
4987 memset(&parser_data
, 0, sizeof(internal_parser_type
));
4990 /* This function serializes the parser/lexer requests of the process and
4991 * call fetch which will make the work. Look there.
4993 static void fetch_protected(tsd_t
*TSD
, FILE *fptr
, const streng
*str
,
4994 internal_parser_type
*result
)
4996 volatile int panicked
= 0;
4998 THREAD_PROTECT(regina_parser
)
4999 TSD
->in_protected
= 1;
5001 if ( setjmp( TSD
->protect_return
) )
5004 fetch(TSD
, fptr
, str
, result
);
5006 TSD
->in_protected
= 0;
5007 THREAD_UNPROTECT(regina_parser
)
5012 /* We got a fatal condition while fetching the input. */
5013 if (TSD
->delayed_error_type
== PROTECTED_DelayedExit
)
5014 TSD
->MTExit(TSD
->expected_exit_error
);
5015 if (TSD
->delayed_error_type
== PROTECTED_DelayedSetjmpBuf
)
5016 longjmp( *(TSD
->currlevel
->buf
), 1 ) ;
5017 longjmp( *(TSD
->systeminfo
->panic
), 1 ) ;
5020 /* fetch_file reads in a REXX file from disk (or a pipe). It returns without
5021 * executing the program. The parsed tree with all needed values including
5022 * the result of the parsing is copied to result.
5023 * fptr remains open after this call.
5024 * type is either PARSE_ONLY or PARSE_AND_TIN. In the later case a tinned variant of the
5025 * parsing tree is created, too.
5027 void fetch_file(tsd_t
*TSD
, FILE *fptr
, internal_parser_type
*result
)
5029 fetch_protected(TSD
, fptr
, NULL
, result
);
5032 /* fetch_string reads in a REXX macro from a streng. It returns without
5033 * executing the program. The parsed tree with all needed values including
5034 * the result of the parsing is copied to result.
5035 * type is either PARSE_ONLY or PARSE_AND_TIN. In the later case a tinned variant of the
5036 * parsing tree is created, too.
5037 * The function is typically called by an "INTERPRET" instruction.
5039 void fetch_string(tsd_t
*TSD
, const streng
*str
, internal_parser_type
*result
)
5041 fetch_protected(TSD
, NULL
, str
, result
);