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:
23 * $Header: /opt/cvs/Regina/lexsrc.c,v 1.40 2009/06/28 10:41:42 mark Exp $
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 inline 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 inline 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 124
322 #define YY_END_OF_BUFFER 125
323 static yyconst
short int yy_acclist
[1220] =
325 1, 33, 1, 33, 1, 33, 1, 33, 1, 33,
326 1, 33, 1, 33, 1, 33, 1, 33, 1, 33,
327 1, 33, 1, 33, 1, 33, 1, 33, 1, 33,
328 1, 33, 1, 33, 1, 33, 1, 33, 1, 33,
329 1, 33, 1, 33, 1, 33, 1, 33, 1, 33,
330 1, 33, 1, 33, 1, 33, 1, 33, 1, 33,
331 125, 123, 124, 33, 120, 123, 124, 3, 124, 33,
332 120, 123, 124, 89, 123, 124, 121, 123, 124, 97,
333 123, 124, 100, 123, 124, 121, 123, 124, 92, 123,
334 124, 91, 123, 124, 98, 123, 124, 95, 123, 124,
336 93, 123, 124, 94, 123, 124, 34, 88, 123, 124,
337 96, 123, 124, 85, 88, 123, 124, 122, 123, 124,
338 3, 123, 124, 111, 123, 124, 101, 123, 124, 109,
339 123, 124, 89, 123, 124, 89, 123, 124, 89, 123,
340 124, 89, 123, 124, 89, 123, 124, 102, 123, 124,
341 1, 33, 123, 124, 99, 123, 124, 33, 120, 123,
342 124, 33, 120, 123, 124, 89, 123, 124, 121, 123,
343 124, 121, 123, 124, 34, 88, 123, 124, 85, 88,
344 123, 124, 89, 123, 124, 89, 123, 124, 89, 123,
345 124, 89, 123, 124, 89, 123, 124, 89, 123, 124,
347 89, 123, 124, 89, 123, 124, 89, 123, 124, 89,
348 123, 124, 89, 123, 124, 89, 123, 124, 89, 123,
349 124, 89, 123, 124, 89, 123, 124, 89, 123, 124,
350 89, 123, 124, 1, 33, 123, 124, 33, 120, 123,
351 124, 33, 120, 123, 124, 89, 123, 124, 89, 123,
352 124, 1, 33, 123, 124, 89, 123, 124, 89, 123,
353 124, 89, 123, 124, 89, 123, 124, 89, 123, 124,
354 89, 123, 124, 89, 123, 124, 89, 123, 124, 89,
355 123, 124, 89, 123, 124, 89, 123, 124, 89, 123,
356 124, 89, 123, 124, 89, 123, 124, 89, 123, 124,
358 89, 123, 124, 89, 123, 124, 89, 123, 124, 89,
359 123, 124, 34, 88, 123, 124, 89, 123, 124, 89,
360 123, 124, 89, 123, 124, 89, 123, 124, 89, 123,
361 124, 33, 120, 123, 124, 33, 120, 123, 124, 89,
362 123, 124, 1, 33, 123, 124, 33, 120, 123, 124,
363 33, 120, 123, 124, 48, 89, 123, 124, 48, 89,
364 123, 124, 48, 89, 123, 124, 48, 89, 123, 124,
365 48, 89, 123, 124, 48, 89, 123, 124, 48, 89,
366 123, 124, 1, 33, 123, 124, 33, 120, 123, 124,
367 2, 3, 124, 33, 120, 123, 124, 2, 3, 123,
369 124, 1, 33, 123, 124, 89, 123, 124, 89, 123,
370 124, 89, 123, 124, 33, 120, 3, 33, 120, 97,
371 100, 91, 98, 95, 93, 94, 96, 111, 101, 109,
372 33, 120, 99, 3, 89, 89, 84, 97, 100, 117,
373 100, 84, 92, 98, 119, 98, 95, 93, 94, 88,
374 88, 88, 88, 90, 88, 90, 96, 116, 96, 86,
375 87, 88, 85, 88, 88, 111, 104, 112, 113, 111,
376 101, 114, 110, 101, 109, 103, 109, 72, 89, 89,
377 71, 89, 89, 89, 89, 102, 110, 113, 112, 102,
378 33, 120, 33, 120, 1, 33, 99, 99, 118, 33,
380 120, 33, 120, 33, 120, 89, 89, 78, 36, 84,
381 84, 88, 88, 88, 35, 88, 90, 88, 90, 86,
382 87, 88, 85, 88, 78, 86, 87, 35, 86, 87,
383 88, 89, 89, 72, 89, 89, 8, 89, 89, 89,
384 89, 89, 89, 12, 89, 89, 89, 89, 89, 89,
385 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
386 89, 71, 89, 89, 89, 89, 89, 89, 33, 120,
387 33, 120, 1, 33, 33, 120, 33, 120, 33, 120,
388 89, 38, 89, 89, 33, 120, 33, 120, 1, 33,
389 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
391 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
392 89, 89, 89, 77, 88, 90, 88, 90, 72, 89,
393 89, 71, 89, 89, 89, 89, 33, 120, 33, 120,
394 33, 120, 89, 33, 120, 33, 120, 1, 33, 33,
395 120, 33, 120, 48, 48, 48, 33, 120, 48, 48,
396 89, 48, 72, 89, 48, 89, 48, 71, 89, 48,
397 89, 48, 89, 48, 89, 48, 89, 33, 120, 33,
398 120, 1, 33, 33, 120, 2, 3, 33, 120, 33,
399 120, 2, 3, 33, 120, 33, 120, 1, 33, 89,
400 89, 89, 84, 84, 84, 117, 84, 84, 84, 119,
402 87, 88, 90, 116, 88, 88, 104, 108, 104, 112,
403 113, 114, 110, 103, 107, 103, 72, 73, 89, 71,
404 89, 89, 89, 110, 106, 109, 113, 115, 111, 112,
405 105, 118, 78, 36, 84, 84, 84, 84, 84, 84,
406 87, 78, 87, 35, 87, 35, 88, 90, 88, 88,
407 89, 6, 89, 72, 89, 8, 89, 89, 32, 89,
408 89, 73, 89, 12, 89, 89, 89, 17, 89, 89,
409 89, 89, 89, 89, 89, 89, 89, 89, 25, 89,
410 89, 89, 89, 71, 89, 89, 89, 89, 89, 89,
411 39, 89, 38, 89, 89, 89, 89, 89, 89, 89,
413 89, 89, 53, 89, 89, 89, 89, 89, 89, 89,
414 89, 89, 89, 60, 89, 89, 89, 73, 89, 89,
415 76, 88, 90, 72, 73, 89, 71, 89, 89, 89,
416 89, 48, 48, 48, 72, 48, 73, 89, 48, 71,
417 48, 89, 48, 89, 48, 89, 48, 89, 89, 89,
418 89, 80, 82, 83, 82, 81, 83, 81, 88, 90,
419 108, 107, 73, 89, 89, 64, 89, 106, 115, 105,
420 79, 88, 90, 89, 6, 7, 89, 9, 89, 10,
421 89, 32, 11, 89, 73, 89, 89, 89, 17, 89,
422 89, 89, 89, 89, 21, 89, 22, 89, 89, 89,
424 25, 89, 89, 62, 89, 89, 89, 89, 30, 89,
425 89, 64, 89, 39, 89, 89, 89, 42, 89, 89,
426 89, 89, 89, 89, 53, 89, 89, 89, 89, 89,
427 55, 89, 89, 89, 89, 60, 89, 89, 66, 89,
428 69, 89, 88, 90, 73, 89, 89, 89, 64, 89,
429 63, 89, 48, 48, 48, 73, 48, 89, 48, 89,
430 48, 89, 48, 64, 89, 40, 89, 89, 89, 64,
431 83, 88, 90, 75, 89, 74, 89, 64, 62, 79,
432 88, 90, 89, 7, 9, 10, 11, 89, 89, 15,
433 89, 89, 89, 89, 19, 89, 89, 21, 22, 23,
435 89, 89, 89, 89, 62, 28, 89, 75, 89, 29,
436 89, 30, 74, 89, 64, 37, 89, 41, 89, 89,
437 42, 89, 89, 89, 89, 89, 89, 89, 89, 51,
438 89, 89, 55, 89, 50, 89, 61, 89, 89, 89,
439 66, 69, 88, 90, 89, 75, 89, 74, 89, 64,
440 63, 63, 48, 48, 64, 48, 75, 89, 37, 48,
441 89, 48, 74, 89, 48, 64, 40, 89, 89, 4,
442 75, 74, 62, 4, 4, 78, 4, 35, 89, 89,
443 89, 15, 89, 89, 89, 19, 89, 23, 24, 89,
444 26, 89, 27, 89, 28, 75, 29, 74, 37, 37,
446 41, 89, 89, 89, 89, 46, 89, 49, 89, 89,
447 89, 58, 89, 51, 89, 56, 89, 50, 61, 89,
448 65, 89, 4, 4, 76, 89, 75, 74, 37, 48,
449 48, 75, 37, 48, 48, 74, 89, 89, 5, 89,
450 89, 14, 89, 18, 89, 16, 89, 89, 89, 24,
451 26, 27, 45, 89, 89, 89, 43, 89, 46, 49,
452 89, 89, 58, 54, 89, 56, 59, 89, 65, 70,
453 89, 89, 89, 5, 89, 14, 18, 16, 89, 89,
454 45, 89, 44, 89, 43, 52, 89, 57, 89, 54,
455 59, 70, 89, 89, 13, 89, 31, 89, 20, 89,
457 89, 44, 52, 57, 89, 89, 13, 31, 20, 47,
458 89, 89, 67, 89, 47, 68, 89, 67, 68
461 static yyconst
short int yy_accept
[859] =
463 1, 3, 5, 7, 9, 11, 13, 15, 17, 19,
464 21, 23, 25, 27, 29, 31, 33, 35, 37, 39,
465 41, 43, 45, 47, 49, 51, 53, 55, 57, 59,
466 61, 62, 64, 68, 70, 74, 77, 80, 83, 86,
467 89, 92, 95, 98, 101, 104, 107, 111, 114, 118,
468 121, 124, 127, 130, 133, 136, 139, 142, 145, 148,
469 151, 155, 158, 162, 166, 169, 172, 175, 179, 183,
470 186, 189, 192, 195, 198, 201, 204, 207, 210, 213,
471 216, 219, 222, 225, 228, 231, 234, 238, 242, 246,
472 249, 252, 256, 259, 262, 265, 268, 271, 274, 277,
474 280, 283, 286, 289, 292, 295, 298, 301, 304, 307,
475 310, 313, 317, 320, 323, 326, 329, 332, 336, 340,
476 343, 347, 351, 355, 359, 363, 367, 371, 375, 379,
477 383, 387, 391, 394, 398, 402, 406, 409, 412, 415,
478 417, 418, 420, 421, 422, 423, 424, 425, 426, 427,
479 428, 429, 430, 431, 431, 431, 433, 434, 435, 436,
480 437, 437, 438, 438, 438, 439, 440, 441, 442, 442,
481 443, 443, 443, 444, 445, 446, 447, 448, 449, 450,
482 451, 452, 453, 455, 457, 458, 459, 460, 462, 463,
483 465, 466, 467, 468, 469, 470, 471, 472, 473, 474,
485 475, 476, 477, 478, 480, 481, 483, 484, 485, 486,
486 487, 488, 489, 490, 491, 493, 495, 497, 498, 499,
487 500, 502, 504, 504, 506, 506, 507, 508, 509, 510,
488 510, 511, 511, 511, 511, 512, 512, 512, 512, 513,
489 514, 515, 516, 518, 520, 522, 523, 525, 528, 531,
490 532, 533, 534, 536, 537, 539, 540, 541, 542, 543,
491 544, 546, 547, 548, 549, 550, 551, 552, 553, 554,
492 555, 556, 557, 558, 559, 560, 561, 562, 564, 565,
493 566, 567, 568, 569, 571, 573, 575, 577, 579, 579,
494 581, 582, 584, 585, 587, 589, 591, 592, 593, 594,
496 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
497 605, 606, 607, 608, 609, 610, 611, 612, 612, 613,
498 614, 615, 617, 619, 621, 622, 624, 625, 626, 627,
499 629, 631, 631, 633, 634, 636, 638, 640, 642, 644,
500 645, 646, 647, 649, 650, 652, 655, 657, 660, 662,
501 664, 666, 668, 670, 672, 674, 676, 678, 680, 682,
502 684, 686, 688, 690, 691, 692, 693, 693, 693, 694,
503 694, 694, 694, 695, 695, 695, 695, 696, 697, 698,
504 698, 699, 699, 699, 699, 700, 701, 702, 704, 705,
505 706, 706, 707, 708, 709, 710, 711, 712, 713, 714,
507 715, 716, 717, 718, 720, 721, 722, 723, 724, 725,
508 726, 727, 728, 729, 730, 731, 732, 733, 733, 734,
509 735, 736, 736, 737, 737, 737, 737, 738, 739, 739,
510 740, 740, 740, 740, 741, 742, 744, 746, 747, 749,
511 750, 751, 752, 754, 755, 756, 757, 758, 759, 761,
512 762, 764, 765, 766, 767, 768, 770, 771, 772, 773,
513 774, 775, 776, 777, 778, 779, 781, 782, 783, 784,
514 785, 786, 787, 788, 789, 790, 791, 791, 793, 794,
515 795, 796, 797, 798, 799, 800, 801, 802, 803, 805,
516 806, 807, 808, 809, 810, 811, 812, 813, 814, 816,
518 817, 818, 820, 821, 821, 822, 824, 825, 827, 828,
519 829, 830, 831, 831, 832, 833, 834, 836, 839, 841,
520 843, 845, 847, 849, 850, 851, 852, 852, 853, 853,
521 853, 855, 856, 858, 859, 859, 859, 859, 859, 859,
522 859, 859, 859, 861, 861, 862, 863, 864, 865, 866,
523 868, 869, 870, 871, 871, 871, 872, 872, 872, 872,
524 872, 872, 872, 872, 872, 872, 874, 875, 876, 878,
525 880, 882, 883, 885, 886, 887, 888, 889, 890, 891,
526 892, 893, 894, 895, 897, 899, 900, 901, 902, 903,
527 904, 906, 907, 908, 909, 911, 912, 914, 914, 915,
529 916, 917, 918, 920, 921, 922, 923, 924, 925, 926,
530 927, 928, 929, 930, 931, 933, 934, 935, 936, 937,
531 938, 939, 941, 943, 945, 946, 947, 948, 949, 951,
532 951, 953, 954, 955, 957, 959, 961, 963, 966, 968,
533 969, 970, 971, 972, 972, 972, 972, 972, 972, 972,
534 974, 976, 978, 979, 980, 981, 981, 981, 981, 981,
535 981, 981, 983, 984, 985, 986, 987, 988, 989, 990,
536 992, 993, 994, 995, 997, 998, 999, 1000, 1002, 1003,
537 1004, 1005, 1006, 1008, 1010, 1012, 1013, 1015, 1016, 1016,
538 1018, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028,
540 1029, 1030, 1032, 1033, 1034, 1035, 1037, 1039, 1040, 1041,
541 1042, 1043, 1045, 1046, 1048, 1050, 1051, 1052, 1053, 1054,
542 1056, 1059, 1062, 1065, 1067, 1068, 1069, 1070, 1070, 1070,
543 1070, 1070, 1071, 1072, 1073, 1074, 1074, 1074, 1074, 1074,
544 1075, 1077, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086,
545 1087, 1088, 1089, 1091, 1093, 1095, 1096, 1097, 1098, 1099,
546 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1108, 1110, 1111,
547 1112, 1114, 1115, 1116, 1118, 1119, 1120, 1121, 1123, 1124,
548 1126, 1127, 1128, 1129, 1131, 1133, 1135, 1137, 1138, 1139,
549 1139, 1139, 1139, 1139, 1141, 1142, 1144, 1146, 1148, 1149,
551 1150, 1151, 1152, 1153, 1155, 1156, 1157, 1159, 1160, 1161,
552 1162, 1163, 1164, 1166, 1167, 1169, 1170, 1172, 1173, 1174,
553 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1185,
554 1186, 1188, 1190, 1191, 1192, 1193, 1194, 1195, 1197, 1199,
555 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210,
556 1212, 1213, 1215, 1216, 1218, 1219, 1220, 1220
559 static yyconst
int yy_ec
[256] =
561 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
562 4, 4, 5, 1, 1, 1, 1, 1, 1, 1,
563 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
564 1, 2, 6, 7, 8, 8, 9, 10, 11, 12,
565 13, 14, 15, 16, 17, 18, 19, 20, 20, 21,
566 21, 21, 21, 21, 21, 21, 21, 22, 23, 24,
567 25, 26, 27, 8, 28, 29, 30, 31, 32, 33,
568 34, 35, 36, 37, 37, 38, 39, 40, 41, 42,
569 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
570 1, 53, 1, 53, 6, 54, 28, 29, 30, 31,
572 32, 33, 34, 35, 36, 37, 37, 38, 39, 40,
573 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
574 51, 52, 1, 55, 1, 53, 1, 1, 1, 1,
575 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
576 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
577 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
578 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
579 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
580 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
581 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
583 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
584 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
585 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
586 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
587 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
591 static yyconst
int yy_meta
[56] =
593 1, 2, 1, 2, 2, 3, 1, 3, 1, 1,
594 1, 4, 1, 1, 1, 1, 1, 3, 1, 5,
595 5, 6, 1, 1, 7, 1, 8, 8, 8, 8,
596 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
597 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
601 static yyconst
short int yy_base
[876] =
603 0, 0, 55, 0, 109, 113, 87, 91, 1152, 1143,
604 140, 161, 0, 0, 0, 0, 97, 102, 209, 0,
605 138, 144, 264, 0, 318, 322, 1130, 1120, 326, 330,
606 1138, 4589, 383, 151, 0, 144, 432, 335, 347, 455,
607 351, 4589, 365, 361, 416, 420, 408, 438, 492, 4589,
608 546, 550, 554, 558, 153, 392, 427, 438, 550, 585,
609 562, 589, 594, 0, 647, 695, 718, 750, 804, 858,
610 90, 116, 135, 298, 302, 574, 107, 582, 575, 594,
611 150, 329, 614, 436, 593, 346, 626, 651, 0, 641,
612 461, 680, 668, 655, 672, 677, 689, 693, 715, 699,
614 739, 743, 758, 846, 850, 762, 854, 769, 864, 870,
615 901, 907, 954, 118, 145, 343, 537, 927, 0, 889,
616 931, 1007, 0, 1061, 1114, 303, 376, 383, 124, 628,
617 935, 939, 944, 0, 948, 959, 948, 966, 962, 0,
618 1023, 0, 1069, 1082, 4589, 1086, 1091, 1097, 1101, 1105,
619 1123, 1137, 1148, 1101, 1162, 0, 1152, 1174, 970, 976,
620 1122, 724, 1227, 1178, 1188, 1195, 1199, 1207, 1115, 440,
621 1260, 1213, 1218, 1264, 1233, 1241, 1271, 1280, 1292, 983,
622 1093, 1346, 1292, 1296, 1322, 1326, 1331, 4589, 383, 0,
623 1288, 1379, 1373, 1335, 1340, 1386, 1391, 1404, 1408, 1416,
625 1424, 1430, 1420, 1439, 1433, 1434, 1443, 1447, 1451, 1477,
626 1471, 1502, 1507, 1511, 0, 0, 0, 1515, 1519, 1532,
627 0, 0, 1077, 0, 1537, 114, 400, 1541, 1545, 1091,
628 858, 1598, 1570, 1086, 586, 1630, 1574, 1562, 1662, 1715,
629 1769, 1550, 1823, 1058, 1618, 429, 0, 1634, 1640, 950,
630 410, 626, 1669, 754, 1674, 701, 677, 603, 1039, 647,
631 1694, 855, 1099, 1182, 742, 1041, 1150, 916, 1045, 1210,
632 1454, 1208, 1255, 1219, 1183, 1348, 1342, 1699, 1507, 1276,
633 1102, 1557, 1537, 0, 0, 1652, 0, 0, 1050, 0,
634 1588, 1687, 1689, 0, 0, 1710, 1593, 1711, 1724, 1785,
636 1789, 1628, 1745, 1734, 1793, 1800, 1779, 1831, 1738, 1835,
637 1839, 1843, 1849, 1854, 1858, 1863, 1870, 1892, 1017, 1013,
638 4589, 1945, 993, 1901, 151, 1906, 581, 541, 620, 0,
639 0, 983, 0, 1881, 0, 0, 1910, 0, 0, 1914,
640 1926, 1922, 0, 1930, 964, 1934, 156, 1938, 745, 1066,
641 730, 749, 0, 0, 1957, 0, 1969, 0, 0, 1973,
642 0, 0, 1977, 1973, 1980, 1984, 961, 2004, 2003, 983,
643 945, 2051, 2006, 2013, 2083, 2110, 2009, 2020, 1804, 2133,
644 2039, 2077, 2165, 2188, 2121, 2065, 4589, 76, 2071, 452,
645 581, 1410, 2097, 2119, 2124, 2153, 2175, 2179, 2185, 2198,
647 2208, 2220, 2226, 2230, 2236, 2019, 2225, 2229, 2251, 2255,
648 2263, 2267, 2277, 2281, 2293, 2297, 2302, 922, 2306, 2310,
649 2363, 2411, 712, 2308, 2443, 2470, 868, 384, 2493, 848,
650 2351, 2525, 2548, 866, 2320, 2344, 2348, 2353, 852, 683,
651 1649, 1077, 2357, 2401, 1456, 2431, 1127, 1566, 2463, 1680,
652 2484, 2456, 1621, 1164, 1474, 2529, 1690, 1527, 1889, 1795,
653 2017, 1664, 1509, 1646, 2005, 2559, 2033, 2105, 2116, 2545,
654 2104, 1581, 2160, 2128, 1851, 1773, 843, 2392, 2425, 2369,
655 2475, 2431, 2074, 2462, 2394, 2491, 2519, 2554, 2539, 2312,
656 2564, 2568, 2584, 2588, 2594, 2601, 2605, 2609, 2629, 2618,
658 2401, 2638, 2626, 2646, 4589, 821, 2650, 2655, 2660, 887,
659 1796, 514, 770, 2648, 2677, 2689, 2668, 2693, 2697, 963,
660 506, 1918, 869, 2687, 2692, 2700, 734, 4589, 0, 549,
661 4589, 4589, 4589, 4589, 2750, 720, 2722, 0, 2782, 717,
662 2754, 0, 837, 957, 2734, 2744, 2762, 2771, 2776, 2771,
663 2802, 2815, 2819, 654, 2824, 2828, 2832, 2885, 657, 2838,
664 0, 2917, 634, 2846, 0, 563, 2183, 2858, 2866, 2898,
665 2922, 2929, 2953, 2939, 1952, 1959, 2256, 2963, 2047, 2217,
666 2157, 2474, 2566, 2958, 2967, 2709, 2272, 3001, 2347, 2426,
667 3014, 2821, 2282, 2332, 3020, 2844, 3025, 534, 2977, 2875,
669 2957, 3014, 2990, 3018, 3022, 3032, 3039, 3045, 3071, 3060,
670 3064, 3068, 3073, 3079, 3101, 2742, 3089, 3094, 3114, 3109,
671 3114, 3134, 3138, 537, 3142, 299, 2335, 379, 3146, 451,
672 3152, 3157, 3167, 3161, 2357, 655, 863, 3171, 3175, 3163,
673 3169, 3189, 4589, 3203, 3217, 3237, 3231, 3245, 3208, 3278,
674 3251, 3265, 3294, 3304, 3308, 3295, 3309, 3345, 3339, 3353,
675 3385, 3405, 2645, 3341, 3421, 3430, 3440, 2830, 2833, 3349,
676 2791, 2854, 2746, 3435, 2453, 3445, 3449, 3476, 2892, 2969,
677 2504, 3483, 3488, 3496, 3507, 3511, 3524, 3519, 423, 3541,
678 3552, 3196, 3558, 3300, 3546, 3357, 3551, 3379, 3559, 3187,
680 3443, 3579, 3567, 3588, 3576, 3600, 3605, 3593, 3598, 3618,
681 3622, 3676, 968, 3643, 3653, 3659, 3663, 3669, 3701, 3706,
682 3710, 3714, 3720, 3730, 3734, 3617, 3610, 339, 3738, 163,
683 3742, 4589, 3746, 3752, 3765, 157, 3771, 117, 3775, 3785,
684 3792, 3797, 2672, 2563, 2942, 3807, 2960, 2965, 2997, 3811,
685 3151, 3816, 3822, 3838, 3843, 3850, 3855, 3881, 3886, 3891,
686 3896, 3908, 3896, 3632, 3900, 3904, 3925, 3937, 3926, 3931,
687 3951, 3956, 3945, 3965, 3972, 3976, 3810, 3980, 3984, 4589,
688 1223, 3988, 3992, 3996, 4002, 4010, 4016, 4004, 4011, 4045,
689 4051, 4065, 4071, 4085, 3240, 4103, 4107, 4115, 3357, 2580,
691 4119, 4123, 4128, 4056, 4019, 4134, 4138, 4158, 4162, 4023,
692 4031, 4166, 4170, 4174, 4179, 4184, 4189, 4177, 4181, 4201,
693 3155, 4205, 4227, 4232, 3425, 3503, 4213, 4224, 4246, 4256,
694 4260, 4264, 4269, 4273, 4278, 4269, 4273, 4293, 4297, 4302,
695 4295, 4315, 4334, 4340, 4332, 4337, 4357, 4361, 4371, 4366,
696 4369, 4376, 4393, 4397, 4402, 4408, 4589, 4460, 4468, 4476,
697 4482, 4489, 4497, 4505, 4512, 4519, 4525, 4532, 4538, 4545,
698 4552, 4560, 4567, 4574, 4581
701 static yyconst
short int yy_def
[876] =
703 857, 1, 857, 3, 1, 1, 1, 1, 1, 1,
704 1, 1, 1, 1, 1, 1, 1, 1, 857, 19,
705 1, 1, 857, 23, 1, 1, 1, 1, 1, 1,
706 857, 857, 857, 857, 33, 858, 859, 857, 857, 860,
707 857, 857, 857, 857, 857, 857, 861, 857, 857, 857,
708 857, 857, 857, 857, 858, 858, 858, 858, 858, 857,
709 33, 857, 33, 63, 862, 863, 864, 865, 857, 862,
710 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
711 70, 70, 70, 70, 70, 70, 63, 33, 88, 858,
712 858, 88, 858, 858, 858, 858, 858, 858, 858, 858,
714 858, 858, 858, 858, 858, 858, 858, 858, 858, 858,
715 866, 867, 866, 113, 113, 113, 113, 33, 118, 858,
716 118, 857, 122, 868, 868, 125, 125, 125, 125, 125,
717 122, 118, 857, 132, 857, 132, 858, 858, 858, 33,
718 857, 33, 857, 857, 857, 857, 857, 857, 857, 857,
719 857, 857, 857, 857, 857, 33, 857, 857, 858, 858,
720 859, 857, 859, 163, 857, 857, 857, 857, 860, 857,
721 860, 171, 857, 857, 857, 857, 857, 857, 857, 869,
722 869, 49, 861, 861, 857, 857, 857, 857, 182, 49,
723 869, 857, 857, 857, 857, 857, 857, 857, 857, 857,
725 857, 857, 857, 858, 858, 204, 858, 858, 858, 857,
726 857, 857, 857, 857, 33, 33, 61, 857, 857, 857,
727 63, 63, 857, 63, 857, 70, 70, 857, 857, 863,
728 857, 863, 232, 864, 857, 864, 236, 857, 870, 870,
729 240, 857, 865, 243, 857, 241, 69, 857, 857, 240,
730 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
731 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
732 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
733 70, 70, 70, 63, 63, 63, 88, 88, 857, 88,
734 858, 204, 858, 88, 88, 88, 858, 858, 858, 858,
736 858, 858, 858, 858, 858, 858, 858, 858, 858, 858,
737 858, 858, 858, 858, 858, 858, 858, 857, 113, 113,
738 857, 867, 322, 113, 113, 113, 113, 113, 113, 118,
739 118, 857, 118, 858, 118, 118, 118, 122, 122, 871,
740 871, 871, 122, 857, 125, 125, 125, 125, 125, 125,
741 125, 125, 122, 122, 122, 132, 857, 132, 132, 857,
742 132, 132, 132, 858, 858, 858, 857, 857, 857, 872,
743 873, 163, 857, 163, 163, 375, 857, 857, 857, 171,
744 857, 171, 171, 383, 857, 857, 857, 184, 857, 182,
745 857, 182, 857, 857, 857, 857, 857, 857, 857, 857,
747 857, 857, 857, 204, 857, 858, 858, 858, 857, 857,
748 857, 857, 857, 857, 857, 857, 857, 857, 857, 857,
749 857, 232, 421, 232, 232, 425, 421, 421, 236, 428,
750 236, 236, 432, 428, 857, 857, 857, 857, 243, 241,
751 241, 70, 70, 857, 70, 857, 70, 70, 70, 70,
752 70, 857, 70, 70, 70, 70, 70, 70, 70, 70,
753 70, 70, 70, 70, 70, 70, 70, 70, 70, 857,
754 70, 70, 70, 70, 70, 70, 857, 204, 857, 858,
755 858, 858, 858, 858, 858, 858, 858, 858, 204, 858,
756 858, 858, 858, 858, 858, 858, 858, 858, 204, 858,
758 858, 204, 858, 857, 857, 322, 857, 113, 857, 113,
759 113, 113, 857, 858, 871, 871, 857, 125, 857, 125,
760 125, 125, 125, 858, 858, 858, 857, 857, 874, 857,
761 857, 857, 857, 857, 375, 535, 375, 375, 383, 539,
762 383, 383, 184, 875, 857, 857, 857, 858, 858, 204,
763 857, 857, 857, 857, 857, 857, 857, 425, 558, 425,
764 425, 432, 562, 432, 432, 243, 70, 857, 70, 70,
765 70, 857, 70, 857, 70, 70, 70, 857, 70, 70,
766 70, 70, 70, 70, 70, 70, 70, 857, 70, 70,
767 70, 70, 70, 70, 70, 70, 70, 857, 857, 858,
769 858, 858, 204, 858, 858, 858, 858, 858, 857, 858,
770 858, 858, 858, 858, 204, 858, 858, 858, 857, 858,
771 858, 204, 204, 322, 857, 113, 113, 113, 113, 857,
772 204, 871, 871, 857, 125, 125, 125, 125, 204, 858,
773 858, 857, 857, 375, 375, 375, 383, 383, 383, 184,
774 204, 204, 857, 857, 857, 425, 425, 425, 432, 432,
775 432, 243, 70, 857, 857, 857, 857, 70, 70, 70,
776 70, 70, 70, 70, 70, 857, 857, 70, 70, 70,
777 70, 857, 70, 70, 70, 857, 70, 857, 857, 204,
778 204, 858, 857, 858, 858, 858, 858, 858, 858, 858,
780 858, 204, 858, 857, 858, 204, 204, 858, 858, 857,
781 857, 322, 113, 113, 113, 857, 857, 857, 871, 871,
782 125, 125, 125, 857, 857, 858, 858, 535, 375, 539,
783 383, 857, 857, 857, 857, 558, 425, 562, 432, 857,
784 857, 857, 70, 70, 70, 857, 70, 70, 70, 857,
785 70, 857, 70, 70, 70, 857, 857, 857, 857, 857,
786 857, 857, 858, 858, 858, 858, 204, 204, 858, 858,
787 204, 857, 858, 204, 857, 857, 858, 204, 857, 857,
788 113, 857, 857, 871, 857, 857, 857, 858, 858, 163,
789 171, 232, 236, 70, 70, 70, 70, 70, 70, 70,
791 857, 857, 857, 204, 858, 858, 204, 857, 857, 858,
792 858, 857, 204, 857, 204, 857, 113, 858, 858, 857,
793 70, 857, 857, 857, 70, 70, 857, 858, 204, 857,
794 204, 204, 857, 857, 857, 858, 858, 70, 70, 70,
795 858, 857, 857, 857, 858, 858, 857, 857, 857, 204,
796 858, 204, 857, 204, 857, 857, 0, 857, 857, 857,
797 857, 857, 857, 857, 857, 857, 857, 857, 857, 857,
798 857, 857, 857, 857, 857
801 static yyconst
short int yy_nxt
[4645] =
803 32, 33, 34, 33, 35, 36, 37, 36, 38, 39,
804 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
805 49, 50, 51, 52, 53, 54, 36, 36, 55, 36,
806 36, 36, 56, 36, 36, 36, 36, 36, 36, 36,
807 36, 36, 36, 36, 36, 57, 58, 36, 59, 36,
808 36, 36, 60, 61, 62, 32, 63, 34, 63, 64,
809 65, 66, 65, 38, 39, 67, 41, 42, 43, 44,
810 45, 46, 68, 48, 69, 69, 50, 51, 52, 53,
811 54, 65, 70, 71, 72, 73, 74, 75, 65, 65,
812 76, 65, 77, 65, 78, 79, 80, 81, 82, 83,
814 84, 85, 65, 86, 65, 65, 65, 60, 87, 62,
815 88, 183, 88, 89, 88, 543, 88, 89, 93, 94,
816 226, 95, 93, 94, 96, 95, 97, 109, 96, 110,
817 97, 98, 109, 226, 110, 98, 793, 226, 264, 118,
818 253, 118, 119, 254, 226, 118, 226, 118, 119, 90,
819 226, 350, 158, 90, 158, 158, 91, 226, 325, 226,
820 91, 160, 92, 160, 160, 226, 92, 100, 319, 101,
821 160, 102, 160, 160, 345, 255, 792, 103, 256, 104,
822 226, 105, 791, 120, 106, 326, 107, 108, 100, 120,
823 101, 121, 102, 226, 508, 319, 272, 121, 103, 518,
825 104, 319, 105, 204, 158, 106, 345, 107, 108, 32,
826 33, 34, 33, 35, 111, 37, 111, 38, 39, 40,
827 41, 42, 43, 44, 45, 46, 112, 48, 49, 49,
828 50, 51, 52, 53, 54, 111, 111, 113, 111, 111,
829 111, 114, 111, 111, 111, 111, 111, 111, 111, 111,
830 111, 111, 111, 111, 115, 116, 111, 117, 111, 111,
831 111, 60, 61, 62, 32, 122, 34, 122, 123, 36,
832 37, 36, 38, 39, 40, 41, 42, 43, 44, 45,
833 46, 47, 48, 49, 49, 50, 51, 52, 53, 54,
834 124, 124, 125, 124, 124, 124, 126, 124, 124, 124,
836 124, 124, 124, 124, 124, 124, 124, 124, 124, 127,
837 128, 129, 130, 124, 124, 124, 60, 131, 62, 132,
838 133, 132, 134, 132, 133, 132, 134, 88, 226, 88,
839 89, 88, 226, 88, 89, 257, 165, 258, 165, 165,
840 135, 226, 260, 347, 135, 226, 713, 259, 166, 319,
841 166, 166, 173, 345, 173, 173, 167, 138, 790, 226,
842 273, 138, 177, 120, 177, 177, 174, 120, 174, 174,
843 139, 136, 226, 91, 139, 136, 226, 91, 175, 92,
844 282, 283, 327, 92, 140, 141, 140, 142, 165, 226,
845 857, 143, 144, 319, 234, 145, 146, 147, 148, 149,
847 168, 150, 390, 390, 173, 141, 151, 152, 153, 160,
848 715, 160, 160, 180, 177, 180, 348, 178, 176, 178,
849 178, 179, 349, 179, 179, 181, 345, 182, 182, 319,
850 226, 154, 205, 345, 180, 155, 156, 157, 162, 185,
851 442, 185, 185, 226, 160, 184, 160, 160, 440, 440,
852 169, 163, 164, 226, 760, 160, 186, 160, 160, 164,
853 164, 164, 164, 164, 164, 170, 226, 206, 370, 178,
854 277, 390, 390, 179, 171, 172, 278, 207, 160, 279,
855 160, 160, 172, 172, 172, 172, 172, 172, 293, 371,
856 717, 187, 188, 188, 188, 188, 188, 180, 188, 180,
858 188, 188, 188, 188, 188, 188, 188, 188, 188, 189,
859 188, 190, 190, 188, 188, 188, 188, 188, 180, 180,
860 180, 180, 180, 191, 180, 180, 180, 180, 180, 180,
861 180, 180, 180, 180, 180, 180, 180, 180, 180, 180,
862 180, 180, 180, 180, 188, 188, 188, 158, 629, 158,
863 158, 192, 636, 192, 192, 197, 345, 197, 197, 201,
864 528, 201, 201, 215, 319, 215, 216, 160, 712, 160,
865 160, 328, 329, 193, 194, 195, 511, 194, 198, 199,
866 689, 195, 199, 202, 208, 209, 210, 319, 210, 210,
867 218, 319, 218, 218, 662, 221, 234, 221, 222, 158,
869 544, 544, 530, 196, 226, 226, 261, 200, 211, 212,
870 213, 203, 226, 262, 370, 217, 267, 226, 226, 263,
871 268, 269, 265, 226, 226, 226, 510, 284, 266, 284,
872 285, 319, 280, 449, 281, 371, 226, 270, 214, 223,
873 271, 274, 219, 220, 226, 275, 226, 224, 225, 276,
874 225, 225, 287, 660, 287, 288, 226, 226, 160, 443,
875 160, 160, 351, 352, 227, 512, 227, 227, 228, 226,
876 319, 229, 160, 291, 160, 160, 657, 226, 345, 286,
877 292, 294, 298, 294, 295, 160, 722, 160, 160, 160,
878 451, 160, 160, 654, 160, 205, 160, 160, 289, 299,
880 225, 231, 440, 440, 290, 345, 160, 226, 160, 160,
881 160, 297, 160, 160, 232, 233, 160, 300, 160, 160,
882 226, 448, 233, 233, 233, 233, 233, 233, 235, 301,
883 161, 226, 160, 296, 160, 160, 648, 236, 237, 645,
884 370, 447, 304, 302, 226, 237, 237, 237, 237, 237,
885 237, 238, 370, 238, 238, 239, 160, 239, 160, 160,
886 160, 371, 160, 160, 303, 522, 305, 240, 642, 241,
887 241, 228, 226, 371, 242, 160, 239, 160, 160, 160,
888 345, 160, 160, 456, 226, 226, 160, 244, 160, 160,
889 520, 445, 306, 307, 523, 345, 313, 226, 308, 345,
891 314, 630, 311, 238, 188, 245, 188, 245, 245, 239,
892 188, 239, 188, 188, 188, 188, 188, 188, 188, 188,
893 188, 246, 188, 247, 247, 248, 188, 188, 249, 188,
894 239, 239, 239, 239, 239, 250, 239, 239, 239, 239,
895 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
896 239, 239, 239, 239, 239, 239, 188, 245, 188, 225,
897 624, 225, 225, 160, 230, 160, 160, 160, 650, 160,
898 160, 160, 183, 160, 160, 227, 370, 227, 227, 228,
899 598, 160, 229, 160, 160, 226, 370, 160, 251, 160,
900 160, 566, 309, 207, 723, 312, 310, 371, 226, 315,
902 453, 252, 318, 638, 318, 318, 160, 371, 160, 160,
903 316, 225, 180, 345, 180, 371, 317, 371, 320, 345,
904 320, 320, 627, 334, 181, 321, 182, 182, 330, 206,
905 330, 331, 335, 180, 335, 336, 353, 319, 353, 354,
906 356, 357, 356, 358, 323, 360, 226, 360, 360, 360,
907 459, 360, 360, 554, 318, 318, 534, 318, 318, 226,
908 361, 357, 361, 362, 391, 160, 391, 160, 160, 441,
909 441, 320, 332, 320, 320, 364, 544, 544, 321, 160,
910 333, 160, 160, 160, 337, 160, 160, 160, 355, 160,
911 160, 366, 359, 160, 532, 160, 160, 360, 635, 781,
913 181, 360, 181, 181, 324, 365, 527, 318, 338, 141,
914 338, 339, 363, 345, 345, 143, 144, 513, 319, 145,
915 146, 147, 148, 149, 158, 150, 158, 158, 506, 141,
916 151, 152, 153, 340, 340, 340, 340, 340, 340, 340,
917 340, 340, 340, 340, 340, 340, 340, 340, 340, 340,
918 340, 340, 340, 340, 341, 342, 340, 340, 340, 155,
919 343, 157, 344, 319, 344, 344, 159, 319, 159, 226,
920 165, 226, 165, 165, 450, 226, 158, 477, 160, 457,
921 160, 160, 226, 166, 226, 166, 166, 174, 460, 174,
922 174, 167, 177, 439, 177, 177, 428, 421, 178, 175,
924 178, 178, 179, 521, 179, 179, 185, 226, 185, 185,
925 181, 418, 181, 181, 344, 344, 345, 344, 344, 159,
926 567, 159, 165, 186, 192, 379, 192, 192, 369, 226,
927 454, 160, 226, 160, 160, 168, 367, 857, 197, 176,
928 197, 197, 226, 473, 177, 226, 193, 194, 195, 201,
929 178, 201, 201, 218, 179, 218, 218, 226, 187, 137,
930 194, 198, 199, 368, 346, 368, 368, 344, 570, 137,
931 226, 195, 199, 202, 99, 158, 196, 158, 158, 376,
932 226, 376, 376, 99, 377, 211, 212, 213, 857, 165,
933 200, 165, 165, 226, 226, 458, 166, 375, 166, 166,
935 378, 203, 378, 378, 167, 219, 220, 576, 168, 455,
936 168, 168, 226, 226, 384, 857, 384, 384, 857, 173,
937 467, 173, 173, 385, 857, 226, 226, 158, 372, 857,
938 372, 372, 383, 373, 386, 857, 386, 386, 226, 464,
939 226, 165, 176, 857, 176, 176, 374, 375, 168, 226,
940 461, 226, 378, 226, 375, 375, 375, 375, 375, 375,
941 168, 380, 226, 380, 380, 174, 817, 174, 174, 466,
942 381, 173, 177, 319, 177, 177, 857, 175, 857, 382,
943 383, 178, 857, 178, 178, 226, 386, 383, 383, 383,
944 383, 383, 383, 179, 176, 179, 179, 180, 226, 180,
946 465, 180, 391, 180, 391, 181, 226, 392, 392, 181,
947 857, 181, 181, 181, 857, 181, 181, 176, 180, 226,
948 857, 472, 180, 185, 177, 185, 185, 389, 857, 389,
949 389, 388, 187, 178, 187, 187, 396, 857, 396, 396,
950 186, 397, 857, 397, 397, 179, 387, 387, 387, 387,
951 387, 857, 387, 857, 387, 387, 387, 387, 387, 387,
952 387, 387, 387, 181, 387, 182, 182, 387, 387, 387,
953 387, 387, 226, 469, 393, 187, 393, 393, 226, 389,
954 192, 468, 192, 192, 187, 226, 857, 196, 396, 196,
955 196, 226, 197, 397, 197, 197, 857, 394, 387, 387,
957 387, 857, 193, 194, 195, 398, 857, 398, 398, 399,
958 857, 399, 399, 857, 194, 198, 199, 200, 857, 200,
959 200, 203, 857, 203, 203, 201, 395, 201, 201, 392,
960 392, 400, 196, 400, 400, 405, 857, 405, 405, 196,
961 403, 180, 403, 403, 200, 857, 857, 195, 199, 202,
962 160, 857, 160, 160, 401, 857, 160, 398, 160, 160,
963 160, 399, 160, 160, 160, 857, 160, 160, 160, 200,
964 160, 160, 409, 203, 409, 409, 404, 203, 210, 857,
965 210, 210, 407, 402, 226, 857, 226, 405, 406, 857,
966 857, 462, 403, 569, 410, 411, 408, 226, 463, 226,
968 211, 212, 213, 412, 226, 412, 412, 857, 415, 857,
969 415, 415, 214, 857, 214, 214, 218, 226, 218, 218,
970 219, 577, 219, 219, 399, 411, 413, 414, 857, 857,
971 214, 414, 416, 417, 471, 417, 417, 226, 225, 226,
972 225, 225, 419, 585, 419, 419, 420, 857, 420, 420,
973 226, 438, 226, 438, 438, 397, 857, 226, 228, 857,
974 396, 229, 580, 238, 214, 238, 238, 226, 219, 220,
975 226, 426, 219, 426, 426, 433, 427, 433, 433, 857,
976 226, 857, 476, 228, 434, 417, 242, 226, 474, 425,
977 225, 857, 475, 432, 419, 857, 226, 571, 420, 422,
979 226, 422, 422, 438, 423, 160, 857, 160, 160, 226,
980 160, 226, 160, 160, 857, 238, 593, 424, 425, 238,
981 478, 238, 238, 857, 226, 425, 425, 425, 425, 425,
982 425, 429, 857, 429, 429, 419, 481, 419, 419, 228,
983 430, 438, 242, 438, 438, 160, 857, 160, 160, 431,
984 432, 226, 575, 284, 857, 284, 285, 432, 432, 432,
985 432, 432, 432, 238, 226, 238, 238, 487, 441, 441,
986 444, 238, 444, 444, 857, 446, 226, 446, 446, 240,
987 239, 240, 240, 228, 857, 857, 242, 419, 479, 226,
988 479, 479, 586, 438, 226, 452, 857, 452, 452, 226,
990 470, 584, 470, 470, 226, 286, 160, 226, 160, 160,
991 226, 294, 226, 294, 295, 238, 238, 226, 238, 238,
992 226, 579, 444, 226, 226, 573, 480, 446, 160, 226,
993 160, 160, 240, 226, 240, 240, 228, 226, 857, 242,
994 479, 160, 226, 160, 160, 857, 482, 452, 857, 857,
995 857, 160, 470, 160, 160, 160, 857, 160, 160, 857,
996 857, 483, 160, 296, 160, 160, 857, 489, 238, 387,
997 435, 387, 435, 435, 857, 387, 494, 387, 387, 387,
998 387, 387, 387, 387, 387, 387, 488, 387, 241, 241,
999 436, 387, 387, 437, 387, 857, 160, 857, 160, 160,
1001 250, 857, 160, 226, 160, 160, 160, 597, 160, 160,
1002 160, 857, 160, 160, 169, 528, 226, 160, 492, 160,
1003 160, 387, 435, 387, 238, 226, 238, 238, 239, 484,
1004 239, 857, 529, 628, 485, 857, 486, 490, 226, 582,
1005 240, 857, 240, 240, 228, 491, 319, 242, 160, 239,
1006 160, 160, 160, 529, 160, 160, 160, 530, 160, 160,
1007 160, 857, 160, 160, 857, 857, 160, 857, 160, 160,
1008 857, 160, 495, 160, 160, 160, 238, 160, 160, 493,
1009 160, 226, 160, 160, 497, 496, 498, 160, 596, 160,
1010 160, 501, 499, 318, 226, 318, 318, 500, 160, 857,
1012 160, 160, 507, 857, 507, 507, 502, 509, 857, 509,
1013 509, 335, 514, 335, 336, 344, 321, 344, 344, 226,
1014 581, 503, 857, 344, 857, 344, 344, 344, 857, 344,
1015 344, 344, 226, 344, 344, 517, 857, 517, 517, 519,
1016 857, 519, 519, 857, 857, 318, 504, 857, 504, 504,
1017 180, 319, 180, 515, 507, 637, 319, 516, 353, 509,
1018 353, 354, 181, 337, 181, 181, 857, 344, 345, 505,
1019 360, 180, 360, 360, 360, 344, 360, 360, 361, 344,
1020 361, 362, 226, 344, 345, 857, 669, 517, 345, 226,
1021 160, 519, 160, 160, 857, 668, 857, 160, 504, 160,
1023 160, 160, 226, 160, 160, 368, 857, 368, 368, 161,
1024 355, 524, 161, 525, 528, 161, 857, 528, 857, 526,
1025 528, 378, 360, 378, 378, 857, 360, 211, 212, 213,
1026 363, 529, 537, 538, 370, 226, 160, 529, 160, 160,
1027 538, 538, 538, 538, 538, 538, 583, 226, 226, 169,
1028 528, 587, 529, 857, 548, 371, 530, 369, 371, 530,
1029 226, 857, 530, 226, 589, 857, 386, 370, 386, 386,
1030 535, 536, 389, 378, 389, 389, 226, 226, 536, 536,
1031 536, 536, 536, 536, 376, 857, 376, 376, 371, 377,
1032 671, 160, 530, 160, 160, 857, 541, 542, 393, 857,
1034 393, 393, 538, 538, 542, 542, 542, 542, 542, 542,
1035 538, 538, 538, 538, 538, 538, 369, 857, 386, 603,
1036 545, 394, 545, 545, 389, 395, 857, 395, 395, 536,
1037 536, 169, 528, 592, 226, 226, 857, 536, 536, 536,
1038 536, 536, 536, 379, 590, 857, 226, 226, 226, 529,
1039 395, 857, 539, 540, 396, 591, 396, 396, 226, 226,
1040 540, 540, 540, 540, 540, 540, 384, 595, 384, 384,
1041 371, 226, 545, 857, 530, 385, 397, 395, 397, 397,
1042 398, 857, 398, 398, 542, 542, 399, 226, 399, 399,
1043 226, 594, 542, 542, 542, 542, 542, 542, 379, 400,
1045 673, 400, 400, 226, 857, 857, 396, 540, 540, 546,
1046 857, 546, 546, 226, 663, 540, 540, 540, 540, 540,
1047 540, 402, 401, 402, 402, 857, 226, 403, 397, 403,
1048 403, 547, 398, 547, 547, 857, 857, 405, 399, 405,
1049 405, 857, 160, 857, 160, 160, 160, 226, 160, 160,
1050 857, 402, 409, 857, 409, 409, 551, 672, 551, 551,
1051 226, 546, 549, 550, 203, 857, 203, 203, 412, 857,
1052 412, 412, 857, 402, 410, 411, 857, 857, 552, 403,
1053 552, 552, 196, 547, 196, 196, 226, 670, 857, 405,
1054 411, 413, 414, 857, 415, 857, 415, 415, 553, 226,
1056 553, 553, 226, 417, 399, 417, 417, 419, 551, 419,
1057 419, 420, 226, 420, 420, 679, 203, 414, 416, 684,
1058 397, 238, 857, 238, 238, 226, 857, 560, 561, 160,
1059 552, 160, 160, 857, 196, 561, 561, 561, 561, 561,
1060 561, 228, 857, 610, 242, 419, 396, 419, 419, 438,
1061 553, 438, 438, 857, 438, 417, 438, 438, 568, 419,
1062 568, 568, 226, 420, 555, 857, 555, 555, 857, 230,
1063 564, 565, 714, 238, 528, 685, 680, 226, 565, 565,
1064 565, 565, 565, 565, 556, 319, 160, 226, 160, 160,
1065 226, 529, 857, 599, 721, 599, 599, 419, 857, 857,
1067 226, 438, 444, 857, 444, 444, 438, 345, 857, 857,
1068 568, 160, 529, 160, 160, 600, 557, 421, 160, 857,
1069 160, 160, 228, 857, 857, 229, 479, 857, 479, 479,
1070 558, 559, 446, 857, 446, 446, 621, 605, 559, 559,
1071 559, 559, 559, 559, 426, 599, 426, 426, 160, 427,
1072 160, 160, 228, 681, 444, 229, 226, 452, 857, 452,
1073 452, 857, 561, 561, 572, 857, 572, 572, 602, 226,
1074 561, 561, 561, 561, 561, 561, 421, 228, 479, 160,
1075 229, 160, 160, 751, 446, 574, 857, 574, 574, 559,
1076 559, 857, 160, 226, 160, 160, 226, 559, 559, 559,
1078 559, 559, 559, 428, 226, 674, 226, 604, 160, 452,
1079 160, 160, 562, 563, 226, 601, 572, 226, 606, 857,
1080 563, 563, 563, 563, 563, 563, 433, 226, 433, 433,
1081 578, 857, 578, 578, 226, 434, 160, 574, 160, 160,
1082 609, 755, 609, 609, 565, 565, 470, 226, 470, 470,
1083 857, 857, 565, 565, 565, 565, 565, 565, 428, 226,
1084 588, 857, 588, 588, 607, 857, 228, 563, 563, 229,
1085 857, 160, 226, 160, 160, 563, 563, 563, 563, 563,
1086 563, 160, 578, 160, 160, 160, 857, 160, 160, 226,
1087 857, 857, 609, 226, 608, 611, 226, 675, 470, 612,
1089 857, 160, 226, 160, 160, 160, 795, 160, 160, 226,
1090 226, 160, 588, 160, 160, 613, 857, 857, 160, 614,
1091 160, 160, 160, 826, 160, 160, 160, 857, 160, 160,
1092 619, 615, 619, 619, 857, 160, 617, 160, 160, 547,
1093 857, 547, 547, 160, 616, 160, 160, 504, 857, 504,
1094 504, 507, 857, 507, 507, 618, 625, 857, 625, 625,
1095 857, 509, 620, 509, 509, 160, 857, 160, 160, 517,
1096 505, 517, 517, 857, 321, 226, 622, 623, 344, 857,
1097 344, 344, 619, 857, 321, 857, 626, 631, 226, 743,
1098 344, 547, 344, 344, 634, 857, 634, 634, 519, 504,
1100 519, 519, 226, 507, 160, 319, 160, 160, 625, 160,
1101 857, 160, 160, 509, 632, 226, 794, 160, 639, 160,
1102 160, 517, 857, 372, 857, 372, 372, 640, 373, 857,
1103 344, 641, 857, 857, 633, 545, 857, 545, 545, 226,
1104 678, 646, 344, 345, 857, 546, 634, 546, 546, 857,
1105 519, 161, 226, 161, 161, 380, 369, 380, 380, 160,
1106 857, 160, 160, 547, 381, 547, 547, 857, 857, 644,
1107 645, 705, 653, 649, 653, 653, 226, 645, 645, 645,
1108 645, 645, 645, 169, 857, 169, 169, 545, 160, 226,
1109 160, 160, 379, 160, 749, 160, 160, 546, 857, 857,
1111 857, 647, 648, 551, 857, 551, 551, 652, 651, 648,
1112 648, 648, 648, 648, 648, 547, 552, 857, 552, 552,
1113 553, 226, 553, 553, 653, 555, 747, 555, 555, 655,
1114 857, 655, 655, 555, 226, 555, 555, 857, 857, 422,
1115 857, 422, 422, 528, 423, 556, 857, 429, 857, 429,
1116 429, 226, 683, 556, 857, 551, 430, 658, 857, 568,
1117 226, 568, 568, 226, 226, 661, 857, 664, 552, 664,
1118 664, 744, 553, 226, 226, 687, 226, 555, 745, 228,
1119 857, 655, 229, 857, 226, 557, 230, 226, 230, 230,
1120 857, 421, 160, 748, 160, 160, 226, 226, 857, 665,
1122 857, 665, 665, 857, 656, 657, 690, 857, 857, 226,
1123 857, 568, 657, 657, 657, 657, 657, 657, 234, 664,
1124 234, 234, 226, 666, 857, 666, 666, 428, 226, 857,
1125 572, 753, 572, 572, 857, 226, 659, 660, 857, 857,
1126 574, 226, 574, 574, 660, 660, 660, 660, 660, 660,
1127 228, 665, 226, 229, 667, 857, 667, 667, 857, 676,
1128 228, 676, 676, 229, 578, 226, 578, 578, 677, 857,
1129 677, 677, 226, 796, 160, 666, 160, 160, 599, 857,
1130 599, 599, 572, 226, 228, 226, 857, 229, 226, 797,
1131 226, 693, 574, 693, 693, 226, 226, 226, 857, 226,
1133 691, 226, 588, 226, 588, 588, 667, 857, 226, 798,
1134 226, 676, 226, 857, 754, 682, 578, 682, 682, 857,
1135 677, 686, 228, 686, 686, 229, 688, 226, 688, 688,
1136 599, 160, 799, 160, 160, 160, 857, 160, 160, 160,
1137 226, 160, 160, 693, 226, 857, 857, 857, 694, 160,
1138 226, 160, 160, 695, 588, 226, 160, 226, 160, 160,
1139 692, 857, 160, 226, 160, 160, 697, 682, 226, 696,
1140 857, 857, 609, 686, 609, 609, 857, 160, 688, 160,
1141 160, 160, 857, 160, 160, 160, 857, 160, 160, 698,
1142 160, 857, 160, 160, 857, 857, 160, 699, 160, 160,
1144 857, 857, 704, 701, 704, 704, 160, 700, 160, 160,
1145 857, 160, 857, 160, 160, 619, 702, 619, 619, 857,
1146 857, 857, 703, 857, 609, 707, 160, 857, 160, 160,
1147 857, 160, 706, 160, 160, 710, 857, 710, 710, 711,
1148 857, 711, 711, 625, 708, 625, 625, 716, 857, 716,
1149 716, 857, 857, 718, 704, 718, 718, 857, 344, 709,
1150 344, 344, 634, 857, 634, 634, 321, 619, 344, 857,
1151 344, 344, 724, 857, 724, 724, 725, 857, 725, 725,
1152 160, 226, 160, 160, 857, 226, 160, 710, 160, 160,
1153 653, 711, 653, 653, 226, 625, 319, 800, 226, 716,
1155 838, 720, 726, 719, 160, 718, 160, 160, 727, 380,
1156 344, 380, 380, 160, 634, 160, 160, 857, 381, 857,
1157 344, 345, 728, 536, 724, 857, 770, 731, 725, 857,
1158 536, 536, 536, 536, 536, 536, 536, 536, 372, 763,
1159 372, 372, 653, 373, 536, 536, 536, 536, 536, 536,
1160 730, 540, 733, 857, 733, 733, 729, 857, 540, 540,
1161 540, 540, 540, 540, 540, 540, 734, 857, 734, 734,
1162 226, 821, 540, 540, 540, 540, 540, 540, 732, 732,
1163 732, 732, 732, 226, 732, 857, 732, 732, 732, 732,
1164 732, 732, 732, 732, 732, 653, 732, 653, 653, 732,
1166 732, 732, 732, 732, 733, 735, 857, 735, 735, 655,
1167 857, 655, 655, 183, 736, 559, 857, 160, 734, 160,
1168 160, 857, 559, 559, 559, 559, 559, 559, 559, 559,
1169 732, 732, 732, 857, 857, 764, 559, 559, 559, 559,
1170 559, 559, 664, 857, 664, 664, 422, 653, 422, 422,
1171 746, 423, 746, 746, 857, 857, 857, 735, 738, 563,
1172 857, 655, 228, 857, 737, 229, 563, 563, 563, 563,
1173 563, 563, 563, 563, 160, 857, 160, 160, 857, 226,
1174 563, 563, 563, 563, 563, 563, 429, 226, 429, 429,
1175 857, 857, 226, 857, 664, 430, 160, 857, 160, 160,
1177 226, 825, 746, 766, 739, 732, 740, 732, 740, 740,
1178 768, 732, 857, 732, 732, 732, 732, 732, 732, 732,
1179 732, 732, 665, 732, 665, 665, 741, 732, 732, 742,
1180 732, 666, 857, 666, 666, 857, 750, 857, 750, 750,
1181 857, 667, 228, 667, 667, 229, 676, 857, 676, 676,
1182 677, 228, 677, 677, 229, 226, 839, 732, 740, 732,
1183 160, 228, 160, 160, 229, 226, 228, 857, 226, 229,
1184 228, 857, 857, 229, 665, 857, 857, 752, 226, 752,
1185 752, 857, 771, 666, 682, 857, 682, 682, 750, 756,
1186 857, 756, 756, 667, 857, 857, 857, 757, 676, 757,
1188 757, 857, 677, 857, 228, 857, 226, 229, 758, 857,
1189 758, 758, 686, 857, 686, 686, 857, 857, 226, 226,
1190 688, 857, 688, 688, 857, 759, 226, 759, 759, 752,
1191 857, 226, 228, 226, 840, 229, 682, 226, 857, 226,
1192 228, 756, 761, 229, 761, 761, 226, 857, 857, 757,
1193 226, 857, 857, 762, 226, 762, 762, 857, 857, 693,
1194 758, 693, 693, 160, 686, 160, 160, 226, 160, 857,
1195 160, 160, 688, 765, 857, 857, 160, 759, 160, 160,
1196 772, 857, 772, 772, 160, 857, 160, 160, 857, 704,
1197 769, 704, 704, 160, 761, 160, 160, 857, 857, 857,
1199 767, 775, 773, 775, 775, 762, 776, 774, 776, 776,
1200 160, 693, 160, 160, 857, 160, 857, 160, 160, 710,
1201 857, 710, 710, 711, 857, 711, 711, 160, 857, 160,
1202 160, 857, 772, 777, 160, 857, 160, 160, 857, 857,
1203 857, 704, 778, 857, 782, 857, 782, 782, 788, 160,
1204 857, 160, 160, 775, 783, 789, 783, 783, 776, 857,
1205 716, 857, 716, 716, 718, 805, 718, 718, 857, 857,
1206 718, 710, 718, 718, 857, 711, 732, 779, 732, 779,
1207 779, 857, 732, 321, 732, 732, 732, 732, 732, 732,
1208 732, 732, 732, 319, 732, 857, 782, 732, 732, 732,
1210 780, 732, 344, 319, 344, 344, 783, 724, 857, 724,
1211 724, 785, 716, 785, 785, 786, 718, 786, 786, 857,
1212 857, 787, 718, 787, 787, 857, 857, 857, 732, 779,
1213 732, 724, 784, 724, 724, 725, 857, 725, 725, 372,
1214 857, 372, 372, 380, 373, 380, 380, 733, 857, 733,
1215 733, 857, 381, 734, 344, 734, 734, 729, 857, 724,
1216 345, 731, 857, 785, 345, 857, 735, 786, 735, 735,
1217 345, 857, 422, 787, 422, 422, 429, 423, 429, 429,
1218 857, 857, 857, 724, 857, 430, 238, 725, 238, 238,
1219 737, 857, 857, 419, 739, 419, 419, 857, 438, 733,
1221 438, 438, 857, 857, 857, 734, 228, 857, 746, 242,
1222 746, 746, 750, 857, 750, 750, 857, 752, 735, 752,
1223 752, 857, 857, 801, 857, 801, 801, 160, 228, 160,
1224 160, 229, 228, 857, 857, 229, 857, 228, 238, 802,
1225 229, 802, 802, 857, 803, 419, 803, 803, 857, 815,
1226 438, 756, 226, 756, 756, 857, 757, 857, 757, 757,
1227 746, 857, 857, 857, 750, 226, 857, 857, 226, 752,
1228 857, 228, 857, 226, 229, 801, 228, 857, 857, 229,
1229 857, 226, 758, 857, 758, 758, 226, 759, 857, 759,
1230 759, 802, 761, 857, 761, 761, 803, 761, 857, 761,
1232 761, 857, 228, 756, 857, 229, 857, 228, 757, 762,
1233 229, 762, 762, 160, 857, 160, 160, 160, 857, 160,
1234 160, 160, 857, 160, 160, 857, 808, 804, 808, 808,
1235 806, 857, 857, 857, 758, 807, 857, 857, 809, 759,
1236 809, 809, 857, 160, 761, 160, 160, 857, 160, 761,
1237 160, 160, 812, 857, 812, 812, 857, 772, 811, 772,
1238 772, 762, 160, 857, 160, 160, 814, 857, 814, 814,
1239 810, 857, 857, 775, 813, 775, 775, 776, 808, 776,
1240 776, 816, 857, 816, 816, 504, 857, 504, 504, 782,
1241 809, 782, 782, 783, 857, 783, 783, 786, 857, 786,
1243 786, 857, 857, 785, 812, 785, 785, 857, 505, 772,
1244 857, 786, 321, 786, 786, 857, 321, 787, 814, 787,
1245 787, 160, 857, 160, 160, 775, 857, 857, 160, 776,
1246 160, 160, 857, 816, 857, 818, 160, 504, 160, 160,
1247 160, 782, 160, 160, 857, 783, 819, 857, 160, 786,
1248 160, 160, 857, 857, 828, 785, 857, 827, 857, 827,
1249 827, 857, 857, 786, 535, 536, 857, 831, 832, 787,
1250 539, 540, 536, 536, 536, 536, 536, 536, 540, 540,
1251 540, 540, 540, 540, 558, 559, 820, 857, 820, 820,
1252 562, 563, 559, 559, 559, 559, 559, 559, 563, 563,
1254 563, 563, 563, 563, 822, 857, 822, 822, 823, 827,
1255 823, 823, 857, 857, 857, 226, 824, 857, 824, 824,
1256 801, 857, 801, 801, 802, 857, 802, 802, 226, 803,
1257 857, 803, 803, 226, 857, 857, 857, 226, 820, 830,
1258 228, 830, 830, 229, 228, 226, 226, 229, 857, 228,
1259 226, 160, 229, 160, 160, 857, 822, 857, 226, 808,
1260 823, 808, 808, 809, 857, 809, 809, 812, 824, 812,
1261 812, 833, 801, 833, 833, 814, 802, 814, 814, 857,
1262 834, 803, 834, 834, 829, 816, 857, 816, 816, 857,
1263 835, 830, 835, 835, 160, 857, 160, 160, 160, 857,
1265 160, 160, 820, 857, 820, 820, 822, 857, 822, 822,
1266 857, 808, 857, 837, 827, 809, 827, 827, 857, 812,
1267 836, 857, 228, 833, 857, 229, 228, 814, 823, 229,
1268 823, 823, 834, 824, 857, 824, 824, 816, 857, 319,
1269 857, 160, 835, 160, 160, 857, 857, 842, 228, 842,
1270 842, 229, 857, 228, 820, 857, 229, 830, 822, 830,
1271 830, 843, 857, 843, 843, 844, 827, 844, 844, 841,
1272 833, 857, 833, 833, 834, 857, 834, 834, 857, 835,
1273 823, 835, 835, 857, 857, 824, 160, 857, 160, 160,
1274 160, 857, 160, 160, 847, 857, 847, 847, 848, 842,
1276 848, 848, 321, 849, 845, 849, 849, 857, 846, 830,
1277 857, 857, 160, 843, 160, 160, 842, 844, 842, 842,
1278 857, 857, 833, 226, 857, 857, 834, 226, 857, 857,
1279 857, 835, 226, 857, 857, 843, 226, 843, 843, 850,
1280 226, 844, 857, 844, 844, 226, 847, 857, 857, 160,
1281 848, 160, 160, 857, 160, 849, 160, 160, 847, 857,
1282 847, 847, 848, 857, 848, 848, 852, 853, 842, 853,
1283 853, 851, 849, 857, 849, 849, 857, 855, 228, 855,
1284 855, 229, 228, 857, 857, 229, 160, 843, 160, 160,
1285 857, 857, 228, 844, 853, 229, 853, 853, 856, 857,
1287 856, 856, 854, 855, 857, 855, 855, 857, 857, 856,
1288 847, 856, 856, 857, 848, 857, 857, 857, 857, 853,
1289 857, 857, 857, 857, 849, 857, 857, 857, 857, 855,
1290 857, 857, 857, 857, 857, 857, 857, 857, 857, 857,
1291 857, 857, 857, 857, 857, 857, 853, 857, 857, 857,
1292 856, 857, 857, 857, 857, 855, 857, 857, 857, 857,
1293 857, 856, 159, 857, 159, 857, 857, 159, 161, 161,
1294 161, 161, 161, 161, 161, 161, 169, 169, 169, 169,
1295 169, 169, 169, 169, 183, 857, 183, 857, 857, 183,
1296 226, 226, 857, 226, 226, 226, 226, 230, 230, 230,
1298 230, 230, 230, 230, 230, 234, 234, 234, 234, 234,
1299 234, 234, 234, 243, 243, 857, 243, 243, 243, 243,
1300 319, 319, 857, 319, 857, 319, 319, 322, 857, 322,
1301 857, 857, 322, 345, 345, 857, 345, 857, 857, 345,
1302 180, 857, 180, 857, 857, 180, 239, 239, 857, 239,
1303 239, 239, 239, 340, 857, 857, 857, 857, 857, 340,
1304 531, 531, 857, 531, 857, 531, 531, 533, 533, 857,
1305 533, 857, 533, 533, 643, 643, 857, 857, 857, 643,
1306 643, 387, 387, 857, 387, 387, 387, 387, 31, 857,
1307 857, 857, 857, 857, 857, 857, 857, 857, 857, 857,
1309 857, 857, 857, 857, 857, 857, 857, 857, 857, 857,
1310 857, 857, 857, 857, 857, 857, 857, 857, 857, 857,
1311 857, 857, 857, 857, 857, 857, 857, 857, 857, 857,
1312 857, 857, 857, 857, 857, 857, 857, 857, 857, 857,
1316 static yyconst
short int yy_chk
[4645] =
1318 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1319 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1320 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1321 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1322 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1323 1, 1, 1, 1, 1, 3, 3, 3, 3, 3,
1324 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1325 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1326 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1327 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1329 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1330 5, 388, 5, 5, 6, 388, 6, 6, 7, 7,
1331 71, 7, 8, 8, 7, 8, 7, 17, 8, 17,
1332 8, 7, 18, 71, 18, 8, 738, 77, 77, 21,
1333 71, 21, 21, 72, 226, 22, 72, 22, 22, 5,
1334 77, 129, 34, 6, 34, 34, 5, 226, 114, 72,
1335 6, 36, 5, 36, 36, 73, 6, 11, 114, 11,
1336 55, 11, 55, 55, 129, 73, 736, 11, 73, 11,
1337 81, 11, 730, 21, 11, 115, 11, 11, 12, 22,
1338 12, 21, 12, 81, 325, 115, 81, 22, 12, 347,
1340 12, 325, 12, 55, 34, 12, 347, 12, 12, 19,
1341 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1342 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1343 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1344 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1345 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1346 19, 19, 19, 19, 23, 23, 23, 23, 23, 23,
1347 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1348 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1349 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1351 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1352 23, 23, 23, 23, 23, 23, 23, 23, 23, 25,
1353 25, 25, 25, 26, 26, 26, 26, 29, 74, 29,
1354 29, 30, 75, 30, 30, 74, 38, 74, 38, 38,
1355 25, 74, 75, 126, 26, 75, 626, 74, 39, 626,
1356 39, 39, 41, 126, 41, 41, 39, 29, 728, 82,
1357 82, 30, 44, 25, 44, 44, 43, 26, 43, 43,
1358 29, 25, 82, 29, 30, 26, 86, 30, 43, 29,
1359 86, 86, 116, 30, 33, 33, 33, 33, 38, 86,
1360 428, 33, 33, 116, 428, 33, 33, 33, 33, 33,
1362 39, 33, 189, 189, 41, 33, 33, 33, 33, 56,
1363 628, 56, 56, 47, 44, 47, 127, 45, 43, 45,
1364 45, 46, 128, 46, 46, 47, 127, 47, 47, 628,
1365 227, 33, 56, 128, 47, 33, 33, 33, 37, 48,
1366 251, 48, 48, 227, 57, 47, 57, 57, 246, 246,
1367 170, 37, 37, 251, 689, 58, 48, 58, 58, 37,
1368 37, 37, 37, 37, 37, 40, 84, 57, 170, 45,
1369 84, 390, 390, 46, 40, 40, 84, 58, 91, 84,
1370 91, 91, 40, 40, 40, 40, 40, 40, 91, 170,
1371 630, 48, 49, 49, 49, 49, 49, 49, 49, 49,
1373 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
1374 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
1375 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
1376 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
1377 49, 49, 49, 49, 49, 49, 49, 51, 512, 51,
1378 51, 52, 521, 52, 52, 53, 521, 53, 53, 54,
1379 530, 54, 54, 61, 512, 61, 61, 59, 624, 59,
1380 59, 117, 117, 52, 52, 52, 328, 53, 53, 53,
1381 598, 54, 54, 54, 59, 59, 60, 117, 60, 60,
1382 62, 328, 62, 62, 566, 63, 235, 63, 63, 51,
1384 391, 391, 530, 52, 76, 79, 76, 53, 60, 60,
1385 60, 54, 78, 76, 235, 61, 79, 76, 79, 76,
1386 79, 80, 78, 85, 80, 78, 327, 87, 78, 87,
1387 87, 327, 85, 258, 85, 235, 85, 80, 60, 63,
1388 80, 83, 62, 62, 83, 83, 258, 63, 65, 83,
1389 65, 65, 88, 563, 88, 88, 252, 83, 90, 252,
1390 90, 90, 130, 130, 65, 329, 65, 65, 65, 252,
1391 329, 65, 94, 90, 94, 94, 559, 260, 130, 87,
1392 90, 92, 94, 92, 92, 93, 636, 93, 93, 95,
1393 260, 95, 95, 554, 96, 94, 96, 96, 88, 95,
1395 65, 66, 440, 440, 88, 636, 97, 257, 97, 97,
1396 98, 93, 98, 98, 66, 66, 100, 96, 100, 100,
1397 257, 257, 66, 66, 66, 66, 66, 66, 67, 97,
1398 162, 256, 99, 92, 99, 99, 540, 67, 67, 536,
1399 423, 256, 100, 98, 256, 67, 67, 67, 67, 67,
1400 67, 68, 162, 68, 68, 68, 101, 68, 101, 101,
1401 102, 423, 102, 102, 99, 351, 101, 68, 527, 68,
1402 68, 68, 265, 162, 68, 103, 68, 103, 103, 106,
1403 351, 106, 106, 265, 254, 265, 108, 68, 108, 108,
1404 349, 254, 102, 103, 352, 349, 108, 254, 103, 352,
1406 108, 513, 106, 68, 69, 69, 69, 69, 69, 69,
1407 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
1408 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
1409 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
1410 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
1411 69, 69, 69, 69, 69, 69, 69, 69, 69, 70,
1412 506, 70, 70, 104, 231, 104, 104, 105, 543, 105,
1413 105, 107, 543, 107, 107, 70, 430, 70, 70, 70,
1414 477, 109, 70, 109, 109, 262, 231, 110, 70, 110,
1415 110, 439, 104, 107, 637, 107, 105, 430, 262, 109,
1417 262, 70, 111, 523, 111, 111, 120, 231, 120, 120,
1418 110, 70, 112, 637, 112, 434, 110, 427, 111, 523,
1419 111, 111, 510, 120, 112, 111, 112, 112, 118, 120,
1420 118, 118, 121, 112, 121, 121, 131, 510, 131, 131,
1421 132, 132, 132, 132, 112, 133, 268, 133, 133, 135,
1422 268, 135, 135, 418, 111, 113, 371, 113, 113, 268,
1423 136, 132, 136, 136, 250, 137, 250, 137, 137, 250,
1424 250, 113, 118, 113, 113, 137, 544, 544, 113, 139,
1425 118, 139, 139, 138, 121, 138, 138, 159, 131, 159,
1426 159, 139, 132, 160, 370, 160, 160, 133, 520, 713,
1428 180, 135, 180, 180, 113, 138, 367, 113, 122, 122,
1429 122, 122, 136, 520, 345, 122, 122, 332, 713, 122,
1430 122, 122, 122, 122, 141, 122, 141, 141, 323, 122,
1431 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
1432 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
1433 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
1434 122, 122, 124, 320, 124, 124, 124, 319, 124, 259,
1435 143, 266, 143, 143, 259, 269, 141, 289, 124, 266,
1436 124, 124, 259, 144, 266, 144, 144, 146, 269, 146,
1437 146, 144, 147, 244, 147, 147, 234, 230, 148, 146,
1439 148, 148, 149, 350, 149, 149, 150, 442, 150, 150,
1440 181, 223, 181, 181, 124, 125, 350, 125, 125, 125,
1441 442, 125, 143, 150, 151, 169, 151, 151, 161, 263,
1442 263, 125, 281, 125, 125, 144, 154, 31, 152, 146,
1443 152, 152, 263, 281, 147, 281, 151, 151, 151, 153,
1444 148, 153, 153, 157, 149, 157, 157, 447, 150, 28,
1445 152, 152, 152, 155, 125, 155, 155, 125, 447, 27,
1446 447, 153, 153, 153, 10, 158, 151, 158, 158, 164,
1447 267, 164, 164, 9, 164, 155, 155, 155, 0, 165,
1448 152, 165, 165, 267, 454, 267, 166, 164, 166, 166,
1450 167, 153, 167, 167, 166, 157, 157, 454, 168, 264,
1451 168, 168, 264, 275, 172, 0, 172, 172, 0, 173,
1452 275, 173, 173, 172, 0, 264, 275, 158, 163, 0,
1453 163, 163, 172, 163, 175, 0, 175, 175, 272, 272,
1454 270, 165, 176, 0, 176, 176, 163, 163, 166, 274,
1455 270, 272, 167, 270, 163, 163, 163, 163, 163, 163,
1456 168, 171, 274, 171, 171, 174, 781, 174, 174, 274,
1457 171, 173, 177, 781, 177, 177, 0, 174, 0, 171,
1458 171, 178, 0, 178, 178, 273, 175, 171, 171, 171,
1459 171, 171, 171, 179, 176, 179, 179, 183, 273, 183,
1461 273, 184, 191, 184, 191, 191, 280, 191, 191, 183,
1462 0, 183, 183, 184, 0, 184, 184, 174, 183, 280,
1463 0, 280, 184, 185, 177, 185, 185, 186, 0, 186,
1464 186, 184, 187, 178, 187, 187, 194, 0, 194, 194,
1465 185, 195, 0, 195, 195, 179, 182, 182, 182, 182,
1466 182, 0, 182, 0, 182, 182, 182, 182, 182, 182,
1467 182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
1468 182, 182, 277, 277, 193, 185, 193, 193, 276, 186,
1469 192, 276, 192, 192, 187, 277, 0, 196, 194, 196,
1470 196, 276, 197, 195, 197, 197, 0, 193, 182, 182,
1472 182, 0, 192, 192, 192, 198, 0, 198, 198, 199,
1473 0, 199, 199, 0, 197, 197, 197, 200, 0, 200,
1474 200, 203, 0, 203, 203, 201, 193, 201, 201, 392,
1475 392, 202, 192, 202, 202, 206, 0, 206, 206, 196,
1476 204, 392, 204, 204, 197, 0, 0, 201, 201, 201,
1477 205, 0, 205, 205, 202, 0, 204, 198, 204, 204,
1478 207, 199, 207, 207, 208, 0, 208, 208, 209, 200,
1479 209, 209, 211, 203, 211, 211, 205, 201, 210, 0,
1480 210, 210, 208, 202, 271, 0, 445, 206, 207, 0,
1481 0, 271, 204, 445, 211, 211, 209, 271, 271, 445,
1483 210, 210, 210, 212, 455, 212, 212, 0, 213, 0,
1484 213, 213, 214, 0, 214, 214, 218, 455, 218, 218,
1485 219, 455, 219, 219, 211, 212, 212, 212, 0, 0,
1486 210, 213, 213, 220, 279, 220, 220, 279, 225, 463,
1487 225, 225, 228, 463, 228, 228, 229, 0, 229, 229,
1488 279, 242, 463, 242, 242, 212, 0, 458, 225, 0,
1489 213, 225, 458, 238, 214, 238, 238, 283, 218, 218,
1490 458, 233, 219, 233, 233, 237, 233, 237, 237, 0,
1491 283, 0, 283, 238, 237, 220, 238, 282, 282, 233,
1492 225, 0, 282, 237, 228, 0, 448, 448, 229, 232,
1494 282, 232, 232, 242, 232, 291, 0, 291, 291, 448,
1495 297, 472, 297, 297, 0, 238, 472, 232, 232, 245,
1496 291, 245, 245, 0, 472, 232, 232, 232, 232, 232,
1497 232, 236, 0, 236, 236, 248, 297, 248, 248, 245,
1498 236, 249, 245, 249, 249, 302, 0, 302, 302, 236,
1499 236, 453, 453, 286, 0, 286, 286, 236, 236, 236,
1500 236, 236, 236, 239, 453, 239, 239, 302, 441, 441,
1501 253, 245, 253, 253, 0, 255, 464, 255, 255, 239,
1502 441, 239, 239, 239, 0, 0, 239, 248, 292, 464,
1503 292, 292, 464, 249, 462, 261, 0, 261, 261, 253,
1505 278, 462, 278, 278, 255, 286, 293, 462, 293, 293,
1506 450, 296, 253, 296, 296, 239, 240, 255, 240, 240,
1507 457, 457, 253, 450, 261, 450, 293, 255, 298, 278,
1508 298, 298, 240, 457, 240, 240, 240, 261, 0, 240,
1509 292, 299, 278, 299, 299, 0, 298, 261, 0, 0,
1510 0, 304, 278, 304, 304, 309, 0, 309, 309, 0,
1511 0, 299, 303, 296, 303, 303, 0, 304, 240, 241,
1512 241, 241, 241, 241, 0, 241, 309, 241, 241, 241,
1513 241, 241, 241, 241, 241, 241, 303, 241, 241, 241,
1514 241, 241, 241, 241, 241, 0, 307, 0, 307, 307,
1516 241, 0, 300, 476, 300, 300, 301, 476, 301, 301,
1517 305, 0, 305, 305, 379, 379, 476, 306, 307, 306,
1518 306, 241, 241, 241, 243, 460, 243, 243, 243, 300,
1519 243, 0, 379, 511, 301, 0, 301, 305, 460, 460,
1520 243, 0, 243, 243, 243, 306, 511, 243, 308, 243,
1521 308, 308, 310, 379, 310, 310, 311, 379, 311, 311,
1522 312, 0, 312, 312, 0, 0, 313, 0, 313, 313,
1523 0, 314, 310, 314, 314, 315, 243, 315, 315, 308,
1524 316, 475, 316, 316, 312, 311, 313, 317, 475, 317,
1525 317, 315, 313, 318, 475, 318, 318, 314, 334, 0,
1527 334, 334, 324, 0, 324, 324, 316, 326, 0, 326,
1528 326, 337, 334, 337, 337, 340, 318, 340, 340, 459,
1529 459, 317, 0, 342, 0, 342, 342, 341, 0, 341,
1530 341, 344, 459, 344, 344, 346, 0, 346, 346, 348,
1531 0, 348, 348, 0, 0, 318, 322, 0, 322, 322,
1532 322, 324, 322, 341, 324, 522, 326, 342, 355, 326,
1533 355, 355, 322, 337, 322, 322, 0, 340, 522, 322,
1534 357, 322, 357, 357, 360, 342, 360, 360, 363, 341,
1535 363, 363, 575, 344, 346, 0, 576, 346, 348, 576,
1536 364, 348, 364, 364, 0, 575, 0, 365, 322, 365,
1538 365, 366, 576, 366, 366, 368, 0, 368, 368, 369,
1539 355, 364, 373, 365, 369, 377, 0, 373, 0, 366,
1540 377, 378, 357, 378, 378, 0, 360, 368, 368, 368,
1541 363, 369, 374, 374, 373, 465, 406, 377, 406, 406,
1542 374, 374, 374, 374, 374, 374, 461, 461, 465, 381,
1543 381, 465, 369, 0, 406, 373, 369, 372, 377, 373,
1544 461, 0, 377, 467, 467, 0, 386, 381, 386, 386,
1545 372, 372, 389, 378, 389, 389, 467, 579, 372, 372,
1546 372, 372, 372, 372, 375, 0, 375, 375, 381, 375,
1547 579, 483, 381, 483, 483, 0, 382, 382, 393, 0,
1549 393, 393, 375, 375, 382, 382, 382, 382, 382, 382,
1550 375, 375, 375, 375, 375, 375, 376, 0, 386, 483,
1551 394, 393, 394, 394, 389, 395, 0, 395, 395, 376,
1552 376, 385, 385, 471, 471, 468, 0, 376, 376, 376,
1553 376, 376, 376, 380, 468, 0, 469, 471, 468, 385,
1554 393, 0, 380, 380, 396, 469, 396, 396, 474, 469,
1555 380, 380, 380, 380, 380, 380, 383, 474, 383, 383,
1556 385, 474, 394, 0, 385, 383, 397, 395, 397, 397,
1557 398, 0, 398, 398, 383, 383, 399, 581, 399, 399,
1558 473, 473, 383, 383, 383, 383, 383, 383, 384, 400,
1560 581, 400, 400, 473, 0, 0, 396, 384, 384, 401,
1561 0, 401, 401, 567, 567, 384, 384, 384, 384, 384,
1562 384, 402, 400, 402, 402, 0, 567, 403, 397, 403,
1563 403, 404, 398, 404, 404, 0, 0, 405, 399, 405,
1564 405, 0, 407, 0, 407, 407, 408, 580, 408, 408,
1565 0, 400, 409, 0, 409, 409, 410, 580, 410, 410,
1566 580, 401, 407, 408, 411, 0, 411, 411, 412, 0,
1567 412, 412, 0, 402, 409, 409, 0, 0, 413, 403,
1568 413, 413, 414, 404, 414, 414, 577, 577, 0, 405,
1569 412, 412, 412, 0, 415, 0, 415, 415, 416, 577,
1571 416, 416, 587, 417, 409, 417, 417, 419, 410, 419,
1572 419, 420, 593, 420, 420, 587, 411, 415, 415, 593,
1573 412, 435, 0, 435, 435, 593, 0, 424, 424, 490,
1574 413, 490, 490, 0, 414, 424, 424, 424, 424, 424,
1575 424, 435, 0, 490, 435, 436, 415, 436, 436, 437,
1576 416, 437, 437, 0, 438, 417, 438, 438, 443, 419,
1577 443, 443, 594, 420, 421, 0, 421, 421, 0, 421,
1578 431, 431, 627, 435, 421, 594, 589, 589, 431, 431,
1579 431, 431, 431, 431, 421, 627, 480, 443, 480, 480,
1580 589, 421, 0, 478, 635, 478, 478, 436, 0, 0,
1582 443, 437, 444, 0, 444, 444, 438, 635, 0, 0,
1583 443, 485, 421, 485, 485, 480, 421, 422, 501, 0,
1584 501, 501, 444, 0, 0, 444, 479, 0, 479, 479,
1585 422, 422, 446, 0, 446, 446, 501, 485, 422, 422,
1586 422, 422, 422, 422, 425, 478, 425, 425, 482, 425,
1587 482, 482, 446, 590, 444, 446, 590, 452, 0, 452,
1588 452, 0, 425, 425, 449, 0, 449, 449, 482, 590,
1589 425, 425, 425, 425, 425, 425, 426, 452, 479, 484,
1590 452, 484, 484, 675, 446, 451, 0, 451, 451, 426,
1591 426, 0, 481, 449, 481, 481, 675, 426, 426, 426,
1593 426, 426, 426, 429, 582, 582, 449, 484, 486, 452,
1594 486, 486, 429, 429, 451, 481, 449, 582, 486, 0,
1595 429, 429, 429, 429, 429, 429, 432, 451, 432, 432,
1596 456, 0, 456, 456, 681, 432, 487, 451, 487, 487,
1597 489, 681, 489, 489, 432, 432, 470, 681, 470, 470,
1598 0, 0, 432, 432, 432, 432, 432, 432, 433, 456,
1599 466, 0, 466, 466, 487, 0, 470, 433, 433, 470,
1600 0, 488, 456, 488, 488, 433, 433, 433, 433, 433,
1601 433, 491, 456, 491, 491, 492, 0, 492, 492, 466,
1602 0, 0, 489, 744, 488, 491, 583, 583, 470, 492,
1604 0, 493, 466, 493, 493, 494, 744, 494, 494, 583,
1605 800, 495, 466, 495, 495, 493, 0, 0, 496, 494,
1606 496, 496, 497, 800, 497, 497, 498, 0, 498, 498,
1607 499, 495, 499, 499, 0, 500, 497, 500, 500, 502,
1608 0, 502, 502, 503, 496, 503, 503, 504, 0, 504,
1609 504, 507, 0, 507, 507, 498, 508, 0, 508, 508,
1610 0, 509, 500, 509, 509, 514, 0, 514, 514, 517,
1611 504, 517, 517, 0, 507, 663, 502, 503, 515, 0,
1612 515, 515, 499, 0, 509, 0, 508, 514, 663, 663,
1613 516, 502, 516, 516, 518, 0, 518, 518, 519, 504,
1615 519, 519, 743, 507, 524, 508, 524, 524, 508, 525,
1616 0, 525, 525, 509, 515, 743, 743, 526, 524, 526,
1617 526, 517, 0, 537, 0, 537, 537, 525, 537, 0,
1618 515, 526, 0, 0, 516, 545, 0, 545, 545, 586,
1619 586, 537, 516, 518, 0, 546, 518, 546, 546, 0,
1620 519, 535, 586, 535, 535, 541, 535, 541, 541, 616,
1621 0, 616, 616, 547, 541, 547, 547, 0, 0, 535,
1622 535, 616, 550, 541, 550, 550, 673, 535, 535, 535,
1623 535, 535, 535, 539, 0, 539, 539, 545, 548, 673,
1624 548, 548, 539, 549, 673, 549, 549, 546, 0, 0,
1626 0, 539, 539, 551, 0, 551, 551, 549, 548, 539,
1627 539, 539, 539, 539, 539, 547, 552, 0, 552, 552,
1628 553, 671, 553, 553, 550, 555, 671, 555, 555, 556,
1629 0, 556, 556, 557, 671, 557, 557, 0, 0, 560,
1630 0, 560, 560, 557, 560, 555, 0, 564, 0, 564,
1631 564, 592, 592, 557, 0, 551, 564, 560, 0, 568,
1632 668, 568, 568, 669, 592, 564, 0, 569, 552, 569,
1633 569, 668, 553, 668, 596, 596, 669, 555, 669, 568,
1634 0, 556, 568, 0, 672, 557, 558, 596, 558, 558,
1635 0, 558, 600, 672, 600, 600, 569, 672, 0, 570,
1637 0, 570, 570, 0, 558, 558, 600, 0, 0, 569,
1638 0, 568, 558, 558, 558, 558, 558, 558, 562, 569,
1639 562, 562, 679, 571, 0, 571, 571, 562, 570, 0,
1640 572, 679, 572, 572, 0, 679, 562, 562, 0, 0,
1641 574, 570, 574, 574, 562, 562, 562, 562, 562, 562,
1642 572, 570, 571, 572, 573, 0, 573, 573, 0, 584,
1643 574, 584, 584, 574, 578, 571, 578, 578, 585, 0,
1644 585, 585, 745, 745, 601, 571, 601, 601, 599, 0,
1645 599, 599, 572, 573, 578, 745, 0, 578, 584, 747,
1646 747, 603, 574, 603, 603, 748, 573, 585, 0, 680,
1648 601, 584, 588, 747, 588, 588, 573, 0, 748, 748,
1649 585, 584, 680, 0, 680, 591, 578, 591, 591, 0,
1650 585, 595, 588, 595, 595, 588, 597, 749, 597, 597,
1651 599, 602, 749, 602, 602, 604, 0, 604, 604, 605,
1652 749, 605, 605, 603, 591, 0, 0, 0, 604, 606,
1653 595, 606, 606, 605, 588, 597, 607, 591, 607, 607,
1654 602, 0, 608, 595, 608, 608, 607, 591, 597, 606,
1655 0, 0, 609, 595, 609, 609, 0, 610, 597, 610,
1656 610, 611, 0, 611, 611, 612, 0, 612, 612, 608,
1657 613, 0, 613, 613, 0, 0, 614, 610, 614, 614,
1659 0, 0, 615, 612, 615, 615, 617, 611, 617, 617,
1660 0, 618, 0, 618, 618, 619, 613, 619, 619, 0,
1661 0, 0, 614, 0, 609, 618, 620, 0, 620, 620,
1662 0, 621, 617, 621, 621, 622, 0, 622, 622, 623,
1663 0, 623, 623, 625, 620, 625, 625, 629, 0, 629,
1664 629, 0, 0, 631, 615, 631, 631, 0, 632, 621,
1665 632, 632, 634, 0, 634, 634, 625, 619, 633, 0,
1666 633, 633, 638, 0, 638, 638, 639, 0, 639, 639,
1667 640, 751, 640, 640, 0, 821, 641, 622, 641, 641,
1668 642, 623, 642, 642, 751, 625, 629, 751, 821, 629,
1670 821, 633, 640, 632, 700, 631, 700, 700, 641, 649,
1671 632, 649, 649, 692, 634, 692, 692, 0, 649, 0,
1672 633, 638, 644, 644, 638, 0, 700, 649, 639, 0,
1673 644, 644, 644, 644, 644, 644, 645, 645, 646, 692,
1674 646, 646, 642, 646, 645, 645, 645, 645, 645, 645,
1675 647, 647, 651, 0, 651, 651, 646, 0, 647, 647,
1676 647, 647, 647, 647, 648, 648, 652, 0, 652, 652,
1677 795, 795, 648, 648, 648, 648, 648, 648, 650, 650,
1678 650, 650, 650, 795, 650, 0, 650, 650, 650, 650,
1679 650, 650, 650, 650, 650, 653, 650, 653, 653, 650,
1681 650, 650, 650, 650, 651, 654, 0, 654, 654, 655,
1682 0, 655, 655, 650, 656, 656, 0, 694, 652, 694,
1683 694, 0, 656, 656, 656, 656, 656, 656, 657, 657,
1684 650, 650, 650, 0, 0, 694, 657, 657, 657, 657,
1685 657, 657, 664, 0, 664, 664, 658, 653, 658, 658,
1686 670, 658, 670, 670, 0, 0, 0, 654, 659, 659,
1687 0, 655, 664, 0, 658, 664, 659, 659, 659, 659,
1688 659, 659, 660, 660, 696, 0, 696, 696, 0, 670,
1689 660, 660, 660, 660, 660, 660, 661, 799, 661, 661,
1690 0, 0, 670, 0, 664, 661, 698, 0, 698, 698,
1692 799, 799, 670, 696, 661, 662, 662, 662, 662, 662,
1693 698, 662, 0, 662, 662, 662, 662, 662, 662, 662,
1694 662, 662, 665, 662, 665, 665, 662, 662, 662, 662,
1695 662, 666, 0, 666, 666, 0, 674, 0, 674, 674,
1696 0, 667, 665, 667, 667, 665, 676, 0, 676, 676,
1697 677, 666, 677, 677, 666, 825, 825, 662, 662, 662,
1698 701, 667, 701, 701, 667, 674, 676, 0, 825, 676,
1699 677, 0, 0, 677, 665, 0, 0, 678, 674, 678,
1700 678, 0, 701, 666, 682, 0, 682, 682, 674, 683,
1701 0, 683, 683, 667, 0, 0, 0, 684, 676, 684,
1703 684, 0, 677, 0, 682, 0, 678, 682, 685, 0,
1704 685, 685, 686, 0, 686, 686, 0, 0, 683, 678,
1705 688, 0, 688, 688, 0, 687, 684, 687, 687, 678,
1706 0, 683, 686, 826, 826, 686, 682, 685, 0, 684,
1707 688, 683, 690, 688, 690, 690, 826, 0, 0, 684,
1708 685, 0, 0, 691, 687, 691, 691, 0, 0, 693,
1709 685, 693, 693, 695, 686, 695, 695, 687, 697, 0,
1710 697, 697, 688, 695, 0, 0, 699, 687, 699, 699,
1711 702, 0, 702, 702, 703, 0, 703, 703, 0, 704,
1712 699, 704, 704, 705, 690, 705, 705, 0, 0, 0,
1714 697, 706, 703, 706, 706, 691, 707, 705, 707, 707,
1715 708, 693, 708, 708, 0, 709, 0, 709, 709, 710,
1716 0, 710, 710, 711, 0, 711, 711, 727, 0, 727,
1717 727, 0, 702, 708, 726, 0, 726, 726, 0, 0,
1718 0, 704, 709, 0, 714, 0, 714, 714, 726, 764,
1719 0, 764, 764, 706, 715, 727, 715, 715, 707, 0,
1720 716, 0, 716, 716, 717, 764, 717, 717, 0, 0,
1721 718, 710, 718, 718, 0, 711, 712, 712, 712, 712,
1722 712, 0, 712, 716, 712, 712, 712, 712, 712, 712,
1723 712, 712, 712, 714, 712, 0, 714, 712, 712, 712,
1725 712, 712, 719, 715, 719, 719, 715, 720, 0, 720,
1726 720, 721, 716, 721, 721, 722, 717, 722, 722, 0,
1727 0, 723, 718, 723, 723, 0, 0, 0, 712, 712,
1728 712, 724, 719, 724, 724, 725, 0, 725, 725, 729,
1729 0, 729, 729, 731, 729, 731, 731, 733, 0, 733,
1730 733, 0, 731, 734, 719, 734, 734, 729, 0, 720,
1731 721, 731, 0, 721, 722, 0, 735, 722, 735, 735,
1732 723, 0, 737, 723, 737, 737, 739, 737, 739, 739,
1733 0, 0, 0, 724, 0, 739, 740, 725, 740, 740,
1734 737, 0, 0, 741, 739, 741, 741, 0, 742, 733,
1736 742, 742, 0, 0, 0, 734, 740, 0, 746, 740,
1737 746, 746, 750, 0, 750, 750, 0, 752, 735, 752,
1738 752, 0, 0, 753, 0, 753, 753, 777, 746, 777,
1739 777, 746, 750, 0, 0, 750, 0, 752, 740, 754,
1740 752, 754, 754, 0, 755, 741, 755, 755, 0, 777,
1741 742, 756, 753, 756, 756, 0, 757, 0, 757, 757,
1742 746, 0, 0, 0, 750, 753, 0, 0, 754, 752,
1743 0, 756, 0, 755, 756, 753, 757, 0, 0, 757,
1744 0, 754, 758, 0, 758, 758, 755, 759, 0, 759,
1745 759, 754, 760, 0, 760, 760, 755, 761, 0, 761,
1747 761, 0, 758, 756, 0, 758, 0, 759, 757, 762,
1748 759, 762, 762, 763, 0, 763, 763, 765, 0, 765,
1749 765, 766, 0, 766, 766, 0, 767, 763, 767, 767,
1750 765, 0, 0, 0, 758, 766, 0, 0, 768, 759,
1751 768, 768, 0, 769, 760, 769, 769, 0, 770, 761,
1752 770, 770, 771, 0, 771, 771, 0, 772, 770, 772,
1753 772, 762, 773, 0, 773, 773, 774, 0, 774, 774,
1754 769, 0, 0, 775, 773, 775, 775, 776, 767, 776,
1755 776, 778, 0, 778, 778, 779, 0, 779, 779, 782,
1756 768, 782, 782, 783, 0, 783, 783, 784, 0, 784,
1758 784, 0, 0, 785, 771, 785, 785, 0, 779, 772,
1759 0, 786, 782, 786, 786, 0, 783, 787, 774, 787,
1760 787, 788, 0, 788, 788, 775, 0, 0, 789, 776,
1761 789, 789, 0, 778, 0, 788, 805, 779, 805, 805,
1762 810, 782, 810, 810, 0, 783, 789, 0, 811, 784,
1763 811, 811, 0, 0, 805, 785, 0, 804, 0, 804,
1764 804, 0, 0, 786, 790, 790, 0, 810, 811, 787,
1765 791, 791, 790, 790, 790, 790, 790, 790, 791, 791,
1766 791, 791, 791, 791, 792, 792, 794, 0, 794, 794,
1767 793, 793, 792, 792, 792, 792, 792, 792, 793, 793,
1769 793, 793, 793, 793, 796, 0, 796, 796, 797, 804,
1770 797, 797, 0, 0, 0, 794, 798, 0, 798, 798,
1771 801, 0, 801, 801, 802, 0, 802, 802, 794, 803,
1772 0, 803, 803, 796, 0, 0, 0, 797, 794, 807,
1773 801, 807, 807, 801, 802, 798, 796, 802, 0, 803,
1774 797, 806, 803, 806, 806, 0, 796, 0, 798, 808,
1775 797, 808, 808, 809, 0, 809, 809, 812, 798, 812,
1776 812, 813, 801, 813, 813, 814, 802, 814, 814, 0,
1777 815, 803, 815, 815, 806, 816, 0, 816, 816, 0,
1778 817, 807, 817, 817, 818, 0, 818, 818, 819, 0,
1780 819, 819, 820, 0, 820, 820, 822, 0, 822, 822,
1781 0, 808, 0, 819, 827, 809, 827, 827, 0, 812,
1782 818, 0, 820, 813, 0, 820, 822, 814, 823, 822,
1783 823, 823, 815, 824, 0, 824, 824, 816, 0, 817,
1784 0, 828, 817, 828, 828, 0, 0, 829, 823, 829,
1785 829, 823, 0, 824, 820, 0, 824, 830, 822, 830,
1786 830, 831, 0, 831, 831, 832, 827, 832, 832, 828,
1787 833, 0, 833, 833, 834, 0, 834, 834, 0, 835,
1788 823, 835, 835, 0, 0, 824, 836, 0, 836, 836,
1789 837, 0, 837, 837, 838, 0, 838, 838, 839, 829,
1791 839, 839, 835, 840, 836, 840, 840, 0, 837, 830,
1792 0, 0, 841, 831, 841, 841, 842, 832, 842, 842,
1793 0, 0, 833, 838, 0, 0, 834, 839, 0, 0,
1794 0, 835, 840, 0, 0, 843, 838, 843, 843, 841,
1795 839, 844, 0, 844, 844, 840, 838, 0, 0, 845,
1796 839, 845, 845, 0, 846, 840, 846, 846, 847, 0,
1797 847, 847, 848, 0, 848, 848, 846, 850, 842, 850,
1798 850, 845, 849, 0, 849, 849, 0, 852, 847, 852,
1799 852, 847, 848, 0, 0, 848, 851, 843, 851, 851,
1800 0, 0, 849, 844, 853, 849, 853, 853, 854, 0,
1802 854, 854, 851, 855, 0, 855, 855, 0, 0, 856,
1803 847, 856, 856, 0, 848, 0, 0, 0, 0, 850,
1804 0, 0, 0, 0, 849, 0, 0, 0, 0, 852,
1805 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1806 0, 0, 0, 0, 0, 0, 853, 0, 0, 0,
1807 854, 0, 0, 0, 0, 855, 0, 0, 0, 0,
1808 0, 856, 858, 0, 858, 0, 0, 858, 859, 859,
1809 859, 859, 859, 859, 859, 859, 860, 860, 860, 860,
1810 860, 860, 860, 860, 861, 0, 861, 0, 0, 861,
1811 862, 862, 0, 862, 862, 862, 862, 863, 863, 863,
1813 863, 863, 863, 863, 863, 864, 864, 864, 864, 864,
1814 864, 864, 864, 865, 865, 0, 865, 865, 865, 865,
1815 866, 866, 0, 866, 0, 866, 866, 867, 0, 867,
1816 0, 0, 867, 868, 868, 0, 868, 0, 0, 868,
1817 869, 0, 869, 0, 0, 869, 870, 870, 0, 870,
1818 870, 870, 870, 871, 0, 0, 0, 0, 0, 871,
1819 872, 872, 0, 872, 0, 872, 872, 873, 873, 0,
1820 873, 0, 873, 873, 874, 874, 0, 0, 0, 874,
1821 874, 875, 875, 0, 875, 875, 875, 875, 857, 857,
1822 857, 857, 857, 857, 857, 857, 857, 857, 857, 857,
1824 857, 857, 857, 857, 857, 857, 857, 857, 857, 857,
1825 857, 857, 857, 857, 857, 857, 857, 857, 857, 857,
1826 857, 857, 857, 857, 857, 857, 857, 857, 857, 857,
1827 857, 857, 857, 857, 857, 857, 857, 857, 857, 857,
1831 static yy_state_type yy_state_buf
[YY_BUF_SIZE
+ 2], *yy_state_ptr
;
1832 static char *yy_full_match
;
1836 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \
1837 yy_cp = yy_full_match; /* restore poss. backed-over text */ \
1841 #define yymore() yymore_used_but_not_detected
1842 #define YY_MORE_ADJ 0
1843 #define YY_RESTORE_YY_MORE_OFFSET
1845 #line 1 "./lexsrc.l"
1847 #line 2 "./lexsrc.l"
1849 static char *RCSid
= "$Id$";
1853 * The Regina Rexx Interpreter
1854 * Copyright (C) 1992-1994 Anders Christensen <anders@pvv.unit.no>
1856 * This library is free software; you can redistribute it and/or
1857 * modify it under the terms of the GNU Library General Public
1858 * License as published by the Free Software Foundation; either
1859 * version 2 of the License, or (at your option) any later version.
1861 * This library is distributed in the hope that it will be useful,
1862 * but WITHOUT ANY WARRANTY; without even the implied warranty of
1863 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
1864 * Library General Public License for more details.
1866 * You should have received a copy of the GNU Library General Public
1867 * License along with this library; if not, write to the Free
1868 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
1872 #include "yaccsrc.h"
1877 /* Define ASCII_0_TERMINATES_STRING if you want that ASCII-0 terminates
1878 * an input string. Normally this should not happen. Input strings are
1879 * terminated by a length encoding. The string {"", length=1} is invalid for
1880 * the lexer (ASCII-0 is not allowed) while {"", length=0} is allowed (this
1881 * is an empty input).
1882 * ASCII_0_TERMINATES_STRING is only(!) for backward compatibility and
1883 * shouldn't be used under normal circumstances.
1886 #define ASCII_0_TERMINATES_STRING
1891 #define YYLMAX BUFFERSIZE
1895 #define YY_CHAR YY_CHAR_TYPE
1897 #define YY_INPUT(buf,result,max_size) result=fill_buffer(buf,max_size)
1900 /* NOTE: Every comment is replaced by a '`' character in the lower input
1901 * routines. These should check for such (illegal) characters.
1903 #define MY_ISBLANK(c) (((c)==' ')||((c)=='\t')||((c)=='\v')||((c)=='\f')|| \
1904 ((c)=='\r')||((c)=='`'))
1906 PROTECTION_VAR(regina_parser
)
1907 /* externals which are protected by regina_parser */
1908 internal_parser_type parser_data
= {NULL
, };
1910 char retvalue
[BUFFERSIZE
] ;
1911 unsigned SymbolDetect
= 0;
1912 /* end of externals protected by regina_parser */
1914 /* locals, they are protected by regina_parser, too */
1915 static int nextline
= 1;
1916 static int nextstart
= 1;
1917 static int do_level
= 0 ;
1918 static int in_numform
=0, next_numform
=0 ;
1919 static int obs_with
=0, in_do
=0, in_then
=0;
1920 static int in_parse
=0 ;
1921 static int in_trace
=0, itflag
=0 ;
1922 static int in_signal
=0, in_call
=0 ;
1923 static enum { not_in_address
= 0,
1924 in_address_keyword
, /* ADDRESS just seen */
1925 in_address_main
, /* after the first word */
1926 in_address_value
, /* like main but VALUE was seen */
1927 in_address_with
} in_address
= not_in_address
,
1928 last_in_address
= not_in_address
;
1929 static enum {no_seek_with
= 0,
1930 seek_with_from_parse
,
1931 seek_with_from_address
} seek_with
= no_seek_with
;
1933 * expression_ended is set if a typical expression has ended and the next
1934 * token has to be preceeded by a CONCATENATE (abuttal) operator in most
1937 static int expression_ended
=0;
1940 * insert_abuttal is set if the last token was a possible end of an expression.
1941 * The next token may need to be preceeded by an additional CONCATENATE
1942 * operator under some conditions like not being "in_parse".
1944 static int insert_abuttal
=0;
1947 * A symbol may be pending after a CONTATENATE (abuttal) operator has been
1948 * returned. This symbol will be stored here. 0 indicates no pending symbol.
1949 * ASCII 0 will never been returned, there is no need for another indicator.
1951 static int delayed_symbol
=0;
1954 * inhibit_delayed_abuttal can be set only if delayed_symbol has been set,
1955 * but not always. An opening parenthesis must have been detected, too.
1956 * It inhibits the use of a CONCATENATE (abuttal) operator after the staring
1957 * parenthesis. Examples:
1958 * CONCATENATE {var_symbol} <-- needs a CONCATENATE, another {var_symbol}
1960 * CONCATENATE {var_symbol} "(" <-- needs a CONCATENATE, another {var_symbol}
1961 * is an expression's start.
1963 static int inhibit_delayed_abuttal
=0;
1966 static int kill_this_space
=0, kill_next_space
=1 ;
1967 static int extnextline
= -1, extnextstart
; /* for a delayed line increment */
1968 static int linenr
=1 ;
1969 static int contline
= 0;
1970 static int inEOF
=0 ;
1971 static int singlequote
=0, doblequote
=0 ;
1972 static int firstln
=0 ;
1973 static int bufptr
=0 ;
1974 /* Previous bug. 8-bits clean combined with EOF ==> need an int */
1975 static int chbuffer
[LOOKAHEAD
] ;
1976 static int ipretflag
=0, cch
=0 ;
1977 static const char *interptr
=NULL
;
1978 static const char *last_interptr
=NULL
;
1979 static const char *interptrmax
;
1980 static int cchmax
= 0 ;
1982 static YY_CHAR_TYPE
*rmspc( YY_CHAR_TYPE
*instr
) ;
1983 static void set_assignment( void );
1984 static int process_number_or_const( const char *text
, int len
);
1985 static int process_hex_or_bin_string( char *text
, int len
, int base
);
1986 static void compress_string( char *dest
, const char *src
);
1987 static int fill_buffer( char *buf
, int max_size
) ;
1988 #define SET_NEXTSTART() (nextstart += yyleng)
1990 #define YY_FATAL_ERROR(s) exiterror( ERR_PROG_UNREADABLE, 1, s )
2007 #line 159 "./lexsrc.l"
2009 * ANSI 6.2.2 definitions (partially with extensions)
2012 * sigh, we need the reversed classes. flex isn't smart
2013 * enough to provide it.
2014 * Added "0-9" to notGeneral... to fix bug 724390
2017 * A comment is converted to a sequence of ` signs in the
2021 * A number is a little bit different to detect signs in the
2025 * read ANSI 6.2.1.1 carefully. We have to check the chars
2026 * after the exponent for notGeneralDot below.
2029 * The list of keywords.
2031 #line 2032 "./lexsrc.c"
2032 #line 318 "flex.skl"
2034 /* Macros after this point can all be overridden by user definitions in
2038 #ifndef YY_SKIP_YYWRAP
2040 extern "C" int yywrap
YY_PROTO(( void ));
2042 extern int yywrap
YY_PROTO(( void ));
2046 #line 333 "flex.skl"
2048 static void yyunput
YY_PROTO(( int c
, char *buf_ptr
));
2050 #line 338 "flex.skl"
2053 static void yy_flex_strncpy
YY_PROTO(( char *, yyconst
char *, int ));
2056 #ifdef YY_NEED_STRLEN
2057 static int yy_flex_strlen
YY_PROTO(( yyconst
char * ));
2061 #line 350 "flex.skl"
2063 static int yyinput
YY_PROTO(( void ));
2065 static int input
YY_PROTO(( void ));
2068 #line 358 "flex.skl"
2071 static int yy_start_stack_ptr
= 0;
2072 static int yy_start_stack_depth
= 0;
2073 static int *yy_start_stack
= 0;
2074 #ifndef YY_NO_PUSH_STATE
2075 static void yy_push_state
YY_PROTO(( int new_state
));
2077 #ifndef YY_NO_POP_STATE
2078 static void yy_pop_state
YY_PROTO(( void ));
2080 #ifndef YY_NO_TOP_STATE
2081 static int yy_top_state
YY_PROTO(( void ));
2085 #define YY_NO_PUSH_STATE 1
2086 #define YY_NO_POP_STATE 1
2087 #define YY_NO_TOP_STATE 1
2090 #ifdef YY_MALLOC_DECL
2098 /* Just try to get by without declaring the routines.. This will fail
2099 * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
2100 * or sizeof(void*) != sizeof(int).
2105 /* Amount of stuff to slurp up with each read. */
2106 #ifndef YY_READ_BUF_SIZE
2107 #define YY_READ_BUF_SIZE 8192
2110 /* Copy whatever the last rule matched to the standard output. */
2113 #line 404 "flex.skl"
2114 /* This used to be an fputs(), but since the string might contain NUL's,
2115 * we now use fwrite().
2117 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
2119 #line 414 "flex.skl"
2121 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
2122 * is returned in "result".
2125 #define YY_INPUT(buf,result,max_size) \
2126 if ( yy_current_buffer->yy_is_interactive ) \
2129 for ( n = 0; n < max_size && \
2130 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
2131 buf[n] = (char) c; \
2133 buf[n++] = (char) c; \
2134 if ( c == EOF && ferror( yyin ) ) \
2135 YY_FATAL_ERROR( "input in flex scanner failed" ); \
2141 while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
2143 if( errno != EINTR) \
2145 YY_FATAL_ERROR( "input in flex scanner failed" ); \
2152 #line 422 "flex.skl"
2154 #line 429 "flex.skl"
2156 /* No semi-colon after return; correct usage is to write "yyterminate();" -
2157 * we don't want an extra ';' after the "return" because that will cause
2158 * some compilers to complain about unreachable statements.
2161 #define yyterminate() return YY_NULL
2164 /* Number of entries by which start-condition stack grows. */
2165 #ifndef YY_START_STACK_INCR
2166 #define YY_START_STACK_INCR 25
2169 /* Report a fatal error. */
2170 #ifndef YY_FATAL_ERROR
2171 #line 447 "flex.skl"
2172 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
2174 #line 454 "flex.skl"
2176 /* Default declaration of generated scanner - a define so the user can
2177 * easily add parameters.
2180 #line 461 "flex.skl"
2181 #define YY_DECL int yylex YY_PROTO(( void ))
2183 #line 468 "flex.skl"
2185 /* Code executed at the beginning of each rule, after yytext and yyleng
2188 #ifndef YY_USER_ACTION
2189 #define YY_USER_ACTION
2192 /* Code executed at the end of each rule. */
2194 #define YY_BREAK break;
2197 #define YY_RULE_SETUP \
2199 #line 483 "flex.skl"
2203 register yy_state_type yy_current_state
;
2204 register char *yy_cp
, *yy_bp
;
2205 register int yy_act
;
2207 #line 290 "./lexsrc.l"
2209 (void)RCSid
; // Unused
2214 if ( delayed_symbol
)
2217 retval
= delayed_symbol
;
2220 * Pass the meaning of inhibit_delayed_abuttal to the normal algorithm
2221 * for automatic abuttal detection.
2223 expression_ended
= !inhibit_delayed_abuttal
;
2224 inhibit_delayed_abuttal
= 0;
2236 last_in_address
= in_address
; /* just for the "Environment" */
2237 /* there can't be an intermediate SPACE between ADDRESS and the next word*/
2238 if ( in_address
== in_address_keyword
)
2239 in_address
= in_address_main
;
2241 kill_this_space
= kill_next_space
;
2242 kill_next_space
= 0 ;
2248 seek_with
= no_seek_with
;
2250 itflag
= (in_trace
) ;
2252 if (extnextline
!= -1)
2254 parser_data
.tstart
= nextstart
= extnextstart
;
2255 parser_data
.tline
= nextline
= extnextline
;
2260 parser_data
.tstart
= nextstart
;
2261 parser_data
.tline
= nextline
;
2263 insert_abuttal
= expression_ended
;
2264 expression_ended
= 0 ;
2267 #line 2265 "./lexsrc.c"
2268 #line 492 "flex.skl"
2279 yy_start
= 1; /* first start state */
2282 #line 507 "flex.skl"
2284 #line 513 "flex.skl"
2287 #line 517 "flex.skl"
2289 #line 523 "flex.skl"
2291 if ( ! yy_current_buffer
)
2293 yy_create_buffer( yyin
, YY_BUF_SIZE
);
2295 yy_load_buffer_state();
2298 while ( 1 ) /* loops until end-of-file is reached */
2300 #line 535 "flex.skl"
2303 /* Support of yytext. */
2304 *yy_cp
= yy_hold_char
;
2306 /* yy_bp points to the position in yy_ch_buf of the start of
2311 yy_current_state
= yy_start
;
2312 yy_state_ptr
= yy_state_buf
;
2313 *yy_state_ptr
++ = yy_current_state
;
2317 register YY_CHAR yy_c
= yy_ec
[YY_SC_TO_UI(*yy_cp
)];
2318 while ( yy_chk
[yy_base
[yy_current_state
] + yy_c
] != yy_current_state
)
2320 yy_current_state
= (int) yy_def
[yy_current_state
];
2321 if ( yy_current_state
>= 858 )
2322 yy_c
= yy_meta
[(unsigned int) yy_c
];
2324 yy_current_state
= yy_nxt
[yy_base
[yy_current_state
] + (unsigned int) yy_c
];
2325 *yy_state_ptr
++ = yy_current_state
;
2328 while ( yy_base
[yy_current_state
] != 4589 );
2329 #line 547 "flex.skl"
2332 yy_current_state
= *--yy_state_ptr
;
2333 yy_lp
= yy_accept
[yy_current_state
];
2334 find_rule
: /* we branch to this label when backing up */
2335 for ( ; ; ) /* until we find what rule we matched */
2337 if ( yy_lp
&& yy_lp
< yy_accept
[yy_current_state
+ 1] )
2339 yy_act
= yy_acclist
[yy_lp
];
2341 yy_full_match
= yy_cp
;
2346 yy_current_state
= *--yy_state_ptr
;
2347 yy_lp
= yy_accept
[yy_current_state
];
2349 #line 551 "flex.skl"
2351 YY_DO_BEFORE_ACTION
;
2353 #line 556 "flex.skl"
2355 do_action
: /* This label is used only to access EOF actions. */
2357 #line 561 "flex.skl"
2360 { /* beginning of action switch */
2363 #line 346 "./lexsrc.l"
2369 #line 349 "./lexsrc.l"
2372 * Fixes bug 579597, "[;\r?\n]" instead of "{EOL}" causes the bug.
2375 if ((ptr
= strchr(yytext
, '\n')) != NULL
)
2377 nextstart
= yyleng
- (int) (ptr
- (char *) yytext
) ;
2379 if (extnextline
!= -1)
2382 extnextstart
= nextstart
; /* fixes bug 938204 */
2391 #line 368 "./lexsrc.l"
2397 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
2398 exiterror( ERR_INVALID_TEMPLATE
, 1, yytext
) ;
2400 obs_with
= in_do
= 0 ;
2401 in_signal
= in_call
= 0 ;
2402 in_address
= not_in_address
;
2404 if ( seek_with
== seek_with_from_address
)
2405 seek_with
= no_seek_with
;
2406 if ((ptr
= strchr(yytext
, '\n')) != NULL
)
2408 nextstart
= yyleng
- (int) (ptr
- (char *) yytext
) ;
2410 if (extnextline
!= -1)
2413 extnextstart
= nextstart
; /* fixes bug 938204 */
2421 *yy_cp
= yy_hold_char
; /* undo effects of setting up yytext */
2422 yy_c_buf_p
= yy_cp
= yy_bp
+ 5;
2423 YY_DO_BEFORE_ACTION
; /* set up yytext again */
2425 #line 396 "./lexsrc.l"
2430 /* support C-like __LINE__ value */
2431 /* determine current source line, and create a numeric literal */
2433 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
2435 sprintf (work
, "%d", parser_data
.tline
);
2437 /* copy back work, right-to-left */
2439 for (i
= strlen (work
) - 1; i
>= 0; i
--)
2447 #line 415 "./lexsrc.l"
2449 BEGIN value1
; /* Allow a following VALUE keyword */
2450 seek_with
= seek_with_from_address
;
2451 in_address
= in_address_keyword
;
2452 in_call
= 1 ; /* Allow the next words to be given as in CALL. */
2458 #line 423 "./lexsrc.l"
2467 #line 429 "./lexsrc.l"
2476 #line 435 "./lexsrc.l"
2479 assert( do_level
>=0 ) ;
2487 #line 443 "./lexsrc.l"
2496 #line 449 "./lexsrc.l"
2504 #line 454 "./lexsrc.l"
2512 #line 459 "./lexsrc.l"
2516 parser_data
.if_linenr
= linenr
- 1;
2522 #line 466 "./lexsrc.l"
2526 return INTERPRET
; }
2530 #line 471 "./lexsrc.l"
2538 #line 476 "./lexsrc.l"
2546 #line 481 "./lexsrc.l"
2554 #line 486 "./lexsrc.l"
2562 #line 491 "./lexsrc.l"
2570 #line 496 "./lexsrc.l"
2579 #line 502 "./lexsrc.l"
2583 return PROCEDURE
; }
2587 #line 507 "./lexsrc.l"
2596 #line 513 "./lexsrc.l"
2604 #line 518 "./lexsrc.l"
2612 #line 523 "./lexsrc.l"
2620 #line 528 "./lexsrc.l"
2628 #line 533 "./lexsrc.l"
2631 assert( do_level
>= 0 ) ;
2638 #line 540 "./lexsrc.l"
2647 #line 546 "./lexsrc.l"
2656 #line 552 "./lexsrc.l"
2665 #line 558 "./lexsrc.l"
2669 parser_data
.when_linenr
= linenr
- 1;
2675 #line 565 "./lexsrc.l"
2679 return OTHERWISE
; }
2683 #line 570 "./lexsrc.l"
2686 assert( do_level
>= 0 ) ;
2689 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
2690 exiterror( ERR_UNMATCHED_END
, 1 ) ;
2698 #line 582 "./lexsrc.l"
2710 #line 591 "./lexsrc.l"
2715 return PLACEHOLDER
;
2725 #line 603 "./lexsrc.l"
2727 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
2728 if ( yytext
[0] == '.' )
2732 * FIXME, FGC: ANSI 6.2.3.1 forces an error 50.1 if yytext[0]=='.'
2733 * ANSI 6.3.2.8 forces this error 31.3 which is wrong
2737 if ( !KNOWN_RESERVED( retvalue
, retlength
) )
2739 yytext
[retlength
] = '\0';
2740 exiterror( ERR_RESERVED_SYMBOL
, 1, yytext
);
2744 yytext
[retlength
] = '\0';
2745 exiterror( ERR_INVALID_START
, 3, yytext
);
2750 yytext
[retlength
] = '\0';
2751 exiterror( ERR_INVALID_START
, 2, yytext
);
2753 /* known reserved variable */
2755 return ASSIGNMENTVARIABLE
; }
2759 #line 634 "./lexsrc.l"
2766 return ASSIGNMENTVARIABLE
; }
2770 #line 642 "./lexsrc.l"
2774 if ( ( last_in_address
== in_address_keyword
)
2775 && ( in_address
== in_address_main
) )
2777 BEGIN other
; /* the next useful expression will set it to "other"
2778 * in either case. The BEGIN-states aren't very
2779 * handy in most cases; they are not flexible enough.
2781 in_address
= in_address_value
;
2789 if ((!in_trace
)&&(!in_address
)&&(!in_signal
)&&(!in_call
)&&(!in_numform
))
2791 in_trace
= in_signal
= in_call
= 0 ;
2797 #line 666 "./lexsrc.l"
2805 #line 671 "./lexsrc.l"
2813 #line 676 "./lexsrc.l"
2821 #line 681 "./lexsrc.l"
2829 #line 686 "./lexsrc.l"
2837 #line 691 "./lexsrc.l"
2845 #line 696 "./lexsrc.l"
2853 #line 701 "./lexsrc.l"
2861 #line 706 "./lexsrc.l"
2869 #line 711 "./lexsrc.l"
2873 return LOSTDIGITS
; }
2877 #line 716 "./lexsrc.l"
2879 if (!in_trace
) REJECT
;
2880 strcpy(retvalue
,rmspc( yytext
)) ;
2886 #line 722 "./lexsrc.l"
2895 #line 728 "./lexsrc.l"
2902 #line 732 "./lexsrc.l"
2909 #line 736 "./lexsrc.l"
2916 #line 740 "./lexsrc.l"
2924 #line 745 "./lexsrc.l"
2932 #line 750 "./lexsrc.l"
2940 #line 755 "./lexsrc.l"
2948 #line 760 "./lexsrc.l"
2956 #line 765 "./lexsrc.l"
2964 #line 770 "./lexsrc.l"
2972 #line 775 "./lexsrc.l"
2975 in_parse
= 2; /* accept a variable and treat func(a) as func (a) */
2981 #line 781 "./lexsrc.l"
2983 seek_with
= seek_with_from_parse
;
2986 BEGIN with
; /* in fact this works as a "not comm" */
2992 #line 789 "./lexsrc.l"
3000 #line 794 "./lexsrc.l"
3002 if (in_then
!=1) REJECT
;
3010 #line 801 "./lexsrc.l"
3015 if ((in_do
)||(!seek_with
))
3018 if ( seek_with
== seek_with_from_parse
)
3020 seek_with
= no_seek_with
;
3021 if (in_address
) /* any address state */
3022 in_address
= in_address_with
; /* WITH seen */
3028 #line 817 "./lexsrc.l"
3036 #line 822 "./lexsrc.l"
3045 #line 828 "./lexsrc.l"
3048 return SCIENTIFIC
; }
3052 #line 832 "./lexsrc.l"
3055 return ENGINEERING
; }
3059 #line 836 "./lexsrc.l"
3067 #line 841 "./lexsrc.l"
3077 #line 848 "./lexsrc.l"
3085 else if ( in_do
== 1 )
3087 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
3088 exiterror( ERR_INVALID_DO_SYNTAX
, 1, "TO" ) ;
3094 #line 862 "./lexsrc.l"
3102 else if ( in_do
== 1 )
3104 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
3105 exiterror( ERR_INVALID_DO_SYNTAX
, 1, "BY" ) ;
3111 #line 876 "./lexsrc.l"
3119 else if ( in_do
== 1 )
3121 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
3122 exiterror( ERR_INVALID_DO_SYNTAX
, 1, "FOR" ) ;
3128 #line 890 "./lexsrc.l"
3134 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
3135 exiterror( ERR_INVALID_DO_SYNTAX
, 1, "WHILE" ) ;
3146 #line 905 "./lexsrc.l"
3151 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
3152 exiterror( ERR_INVALID_DO_SYNTAX
, 1, "UNTIL" ) ;
3162 *yy_cp
= yy_hold_char
; /* undo effects of setting up yytext */
3163 yy_c_buf_p
= yy_cp
-= 1;
3164 YY_DO_BEFORE_ACTION
; /* set up yytext again */
3166 #line 920 "./lexsrc.l"
3171 if ( !KNOWN_RESERVED( retvalue
, retlength
) )
3172 exiterror( ERR_RESERVED_SYMBOL
, 1, yytext
) ;
3174 return DOVARIABLE
; }
3177 *yy_cp
= yy_hold_char
; /* undo effects of setting up yytext */
3178 yy_c_buf_p
= yy_cp
-= 1;
3179 YY_DO_BEFORE_ACTION
; /* set up yytext again */
3181 #line 929 "./lexsrc.l"
3185 strcpy(retvalue
,rmspc( yytext
)) ;
3187 return DOVARIABLE
; }
3191 #line 936 "./lexsrc.l"
3196 for( i
= 0; ( ch
= yytext
[i
] ) != '\0'; i
++ )
3199 * A blank or ':' can't occur in the normal text. They are terminators.
3203 || ( MY_ISBLANK( ch
) ) )
3205 retvalue
[i
] = (char) rx_toupper( ch
);
3207 retvalue
[i
] = '\0' ;
3213 #line 956 "./lexsrc.l"
3217 compress_string( retvalue
, yytext
);
3224 #line 965 "./lexsrc.l"
3228 compress_string( retvalue
, yytext
);
3230 kill_next_space
= 1 ;
3231 if ( insert_abuttal
) {
3232 inhibit_delayed_abuttal
= 1 ;
3233 delayed_symbol
= EXFUNCNAME
;
3235 return CONCATENATE
; }
3237 expression_ended
= 0 ;
3239 return EXFUNCNAME
; }
3242 *yy_cp
= yy_hold_char
; /* undo effects of setting up yytext */
3243 yy_c_buf_p
= yy_cp
-= 1;
3244 YY_DO_BEFORE_ACTION
; /* set up yytext again */
3246 #line 983 "./lexsrc.l"
3251 return process_hex_or_bin_string( yytext
, yyleng
, 16 ); }
3254 *yy_cp
= yy_hold_char
; /* undo effects of setting up yytext */
3255 yy_c_buf_p
= yy_cp
-= 1;
3256 YY_DO_BEFORE_ACTION
; /* set up yytext again */
3258 #line 991 "./lexsrc.l"
3260 return process_hex_or_bin_string( yytext
, yyleng
, 2 ); }
3263 *yy_cp
= yy_hold_char
; /* undo effects of setting up yytext */
3264 yy_c_buf_p
= yy_cp
-= 1;
3265 YY_DO_BEFORE_ACTION
; /* set up yytext again */
3267 #line 994 "./lexsrc.l"
3270 int i
,base
,charcount
,first
,tuple
;
3272 base
= ( rx_toupper( yytext
[yyleng
- 1] ) == 'X' ) ? 16 : 2;
3273 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
3275 * We are sure to have an invalid string since the above patterns won't
3276 * match. We can either have invalid characters or misplaced spaces.
3278 * Blanks as the first characters are forbidden.
3280 if ( MY_ISBLANK( yytext
[1] ) )
3281 exiterror( ERR_INVALID_HEX_CONST
, ( base
== 16 ) ? 1 : 2, 1 );
3283 tuple
= ( base
== 16 ) ? 2 : 4;
3284 for ( i
= 1, first
= 1, charcount
= 0; i
< yyleng
- 2; i
++ )
3287 if ( MY_ISBLANK( c
) )
3290 * The first tuple may have less than tuple chars
3292 if ( ( ( charcount
% tuple
) == 0 ) || first
)
3298 exiterror( ERR_INVALID_HEX_CONST
, ( base
== 16 ) ? 1 : 2, i
);
3303 if ( ( c
== '0' ) || ( c
== '1' ) )
3308 if ( rx_isxdigit( c
) )
3311 exiterror( ERR_INVALID_HEX_CONST
, ( base
== 16 ) ? 3 : 4, c
);
3314 * We didn't match something like "1 12 34 "X Assume this as the error.
3315 * Look back to the first blank in the last sequence.
3317 for ( i
= yyleng
- 2; i
> 1; i
-- )
3318 if ( !MY_ISBLANK( yytext
[i
- 1] ) )
3320 exiterror( ERR_INVALID_HEX_CONST
, ( base
== 16 ) ? 1 : 2, i
); }
3324 #line 1048 "./lexsrc.l"
3328 compress_string( retvalue
, yytext
);
3330 strcpy( yytext
, retvalue
); /* proper error display */
3334 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
3335 exiterror( ERR_INV_SUBKEYWORD
, 11, "ENGINEERING SCIENTIFIC", retvalue
) ;
3339 if ( insert_abuttal
&& !in_parse
&& !in_signal
&& !in_call
) {
3340 delayed_symbol
= STRING
;
3342 return CONCATENATE
; }
3347 kill_next_space
= 1 ;
3350 expression_ended
= 1 ;
3357 #line 1079 "./lexsrc.l"
3361 strcpy(retvalue
,yytext
) ;
3366 *yy_cp
= yy_hold_char
; /* undo effects of setting up yytext */
3367 yy_c_buf_p
= yy_cp
-= 1;
3368 YY_DO_BEFORE_ACTION
; /* set up yytext again */
3370 #line 1086 "./lexsrc.l"
3373 * This is the same as of the "{digit}+" rule above. flex is very stupid.
3374 * (Or is it a feature?)
3375 * The number below will take precedence instead of a plain "{digit}+",
3376 * even of the fact that the above rule may match the same length of
3377 * characters. flex seems to count the next "expect characters" for the
3378 * comparison which rule shall be used.
3382 strcpy(retvalue
,yytext
) ;
3387 *yy_cp
= yy_hold_char
; /* undo effects of setting up yytext */
3388 yy_c_buf_p
= yy_cp
-= 1;
3389 YY_DO_BEFORE_ACTION
; /* set up yytext again */
3391 #line 1101 "./lexsrc.l"
3394 * must split two rule parts because of the "/" rule-part.
3395 * This fixes bug 602283.
3397 return process_number_or_const( yytext
, yyleng
);
3402 #line 1109 "./lexsrc.l"
3404 return process_number_or_const( yytext
, yyleng
);
3409 #line 1113 "./lexsrc.l"
3413 * this might be a symbol in front of a function, but only if next
3414 * char in input stream is "(".
3417 if (in_trace
) REJECT
;
3419 memcpy( retvalue
, yytext
, yyleng
+ 1 ); /* include terminating '\0' */
3420 mem_upper( retvalue
, yyleng
);
3424 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
3425 exiterror( ERR_INV_SUBKEYWORD
, 11, "ENGINEERING SCIENTIFIC", retvalue
) ;
3428 if ( ( last_in_address
== in_address_keyword
)
3429 && ( in_address
== in_address_main
) )
3431 kill_next_space
= 1 ;
3442 * This has precedence over checking the parenthesis below.
3446 kill_next_space
= 1;
3451 if ( in_parse
== 2 )
3454 * This has precedence over checking the parenthesis below.
3455 * Fixes bug 1109335.
3458 kill_next_space
= 1;
3463 /* We must check if a '(' follows. Remember the number of eaten chars. */
3466 for (; ( i
= yyinput() ) == '`';)
3468 for (; ( i
= input() ) == '`';)
3476 /* input() has destroyed the yytext-terminator re-set it */
3477 yytext
[yyleng
] = '\0';
3483 kill_next_space
= 1 ;
3484 if ( insert_abuttal
)
3486 inhibit_delayed_abuttal
= 1 ;
3487 delayed_symbol
= INFUNCNAME
;
3488 return CONCATENATE
;
3490 expression_ended
= 0 ;
3494 if ( insert_abuttal
&& !in_parse
) {
3495 delayed_symbol
= SIMSYMBOL
;
3496 return CONCATENATE
; }
3498 expression_ended
= 1 ;
3500 if ( in_address
== in_address_with
)
3501 kill_next_space
= 1 ;
3502 if (SymbolDetect
) /* allow a fast breakout */
3504 /* We define a tricky preprocessor directive. This will give us
3505 * maximum performance without the loss of control or errors produced
3508 #define RET_IF(s) if ((SymbolDetect & SD_##s) && \
3509 (yyleng == sizeof(#s) - 1) && \
3510 (strncmp(retvalue, \
3512 sizeof(#s) - 1) == 0)) \
3514 /* e.g. RET_IF(INPUT); is replaced by:
3515 * if ((SymbolDetect & SD_INPUT) &&
3516 * (yyleng == sizeof("INPUT") - 1) &&
3517 * (strncmp(retvalue,
3519 * sizeof("INPUT") - 1) == 0))
3534 return SIMSYMBOL
; }
3538 #line 1239 "./lexsrc.l"
3542 * this is mainly the content of var_symbol but we do a REJECT for all but
3543 * normal variable names.
3546 if ( in_trace
|| in_numform
|| in_call
)
3549 if ( ( last_in_address
== in_address_keyword
)
3550 && ( in_address
== in_address_main
) )
3554 if ( !KNOWN_RESERVED( retvalue
, retlength
) )
3557 /* We must check if a '(' follows. Remember the number of eaten chars. */
3559 for ( j
= 1; ( i
= yyinput() ) == '`'; )
3561 for ( j
= 1; ( i
= input() ) == '`'; )
3569 /* input() has destroyed the yytext-terminator re-set it */
3570 yytext
[yyleng
] = '\0';
3575 REJECT
; /* function name can't start with '.' */
3578 if ( insert_abuttal
&& !in_parse
)
3580 delayed_symbol
= SIMSYMBOL
;
3584 expression_ended
= 1;
3590 #line 1288 "./lexsrc.l"
3592 expression_ended
= 1 ;
3598 #line 1293 "./lexsrc.l"
3601 if ( insert_abuttal
)
3603 inhibit_delayed_abuttal
= 1 ;
3604 delayed_symbol
= '(' ;
3606 return CONCATENATE
;
3613 #line 1305 "./lexsrc.l"
3620 #line 1309 "./lexsrc.l"
3628 #line 1314 "./lexsrc.l"
3636 #line 1319 "./lexsrc.l"
3643 #line 1323 "./lexsrc.l"
3650 #line 1327 "./lexsrc.l"
3657 #line 1331 "./lexsrc.l"
3664 #line 1335 "./lexsrc.l"
3671 #line 1339 "./lexsrc.l"
3678 #line 1343 "./lexsrc.l"
3680 /* why don't I have a {between} in the beginning of this re? bug? */
3687 #line 1349 "./lexsrc.l"
3694 #line 1353 "./lexsrc.l"
3701 #line 1357 "./lexsrc.l"
3708 #line 1361 "./lexsrc.l"
3715 #line 1365 "./lexsrc.l"
3722 #line 1369 "./lexsrc.l"
3729 #line 1373 "./lexsrc.l"
3736 #line 1377 "./lexsrc.l"
3743 #line 1381 "./lexsrc.l"
3750 #line 1385 "./lexsrc.l"
3757 #line 1389 "./lexsrc.l"
3760 return DIFFERENT
; }
3764 #line 1393 "./lexsrc.l"
3767 return EQUALEQUAL
; }
3771 #line 1397 "./lexsrc.l"
3774 return NOTEQUALEQUAL
; }
3778 #line 1401 "./lexsrc.l"
3785 #line 1405 "./lexsrc.l"
3792 #line 1409 "./lexsrc.l"
3795 return CONCATENATE
; }
3799 #line 1413 "./lexsrc.l"
3806 #line 1417 "./lexsrc.l"
3808 if ( in_address
== in_address_value
) /* Always allow spaces in the VALUE */
3809 { /* part of the ADDRESS stmt. */
3813 if (kill_this_space
)
3819 return (((in_parse
)&&(!seek_with
)) ? yylex() : SPACE
) ; }
3823 #line 1431 "./lexsrc.l"
3826 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
3827 exiterror( ERR_UNMATCHED_QUOTE
, 0 ) ; }
3831 #line 1437 "./lexsrc.l"
3834 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
3835 exiterror( ERR_SYMBOL_EXPECTED
, 1, yytext
) ;}
3839 #line 1442 "./lexsrc.l"
3842 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
3843 exiterror( ERR_INVALID_CHAR
, 1, yytext
[0], yytext
[0] ); }
3847 #line 1448 "./lexsrc.l"
3850 #line 3848 "./lexsrc.c"
3851 case YY_STATE_EOF(INITIAL
):
3852 case YY_STATE_EOF(comm
):
3853 case YY_STATE_EOF(signal
):
3854 case YY_STATE_EOF(sgtype
):
3855 case YY_STATE_EOF(procd
):
3856 case YY_STATE_EOF(parse
):
3857 case YY_STATE_EOF(then
):
3858 case YY_STATE_EOF(with
):
3859 case YY_STATE_EOF(numeric
):
3860 case YY_STATE_EOF(do1
):
3861 case YY_STATE_EOF(other
):
3862 case YY_STATE_EOF(value1
):
3863 case YY_STATE_EOF(ifcont
):
3864 case YY_STATE_EOF(signame
):
3865 case YY_STATE_EOF(nmform
):
3867 #line 566 "flex.skl"
3869 case YY_END_OF_BUFFER
:
3871 /* Amount of text matched not including the EOB char. */
3872 int yy_amount_of_matched_text
= (int) (yy_cp
- (char *) yytext_ptr
) - 1;
3874 /* Undo the effects of YY_DO_BEFORE_ACTION. */
3875 *yy_cp
= yy_hold_char
;
3876 YY_RESTORE_YY_MORE_OFFSET
3878 if ( yy_current_buffer
->yy_buffer_status
== YY_BUFFER_NEW
)
3880 /* We're scanning a new file or input source. It's
3881 * possible that this happened because the user
3882 * just pointed yyin at a new source and called
3883 * yylex(). If so, then we have to assure
3884 * consistency between yy_current_buffer and our
3885 * globals. Here is the right place to do so, because
3886 * this is the first action (other than possibly a
3887 * back-up) that will match for the new input source.
3889 yy_n_chars
= yy_current_buffer
->yy_n_chars
;
3890 yy_current_buffer
->yy_input_file
= yyin
;
3891 yy_current_buffer
->yy_buffer_status
= YY_BUFFER_NORMAL
;
3894 /* Note that here we test for yy_c_buf_p "<=" to the position
3895 * of the first EOB in the buffer, since yy_c_buf_p will
3896 * already have been incremented past the NUL character
3897 * (since all states make transitions on EOB to the
3898 * end-of-buffer state). Contrast this with the test
3901 if ( yy_c_buf_p
<= &yy_current_buffer
->yy_ch_buf
[yy_n_chars
] )
3902 { /* This was really a NUL. */
3903 yy_state_type yy_next_state
;
3905 yy_c_buf_p
= yytext_ptr
+ yy_amount_of_matched_text
;
3907 yy_current_state
= yy_get_previous_state();
3909 /* Okay, we're now positioned to make the NUL
3910 * transition. We couldn't have
3911 * yy_get_previous_state() go ahead and do it
3912 * for us because it doesn't know how to deal
3913 * with the possibility of jamming (and we don't
3914 * want to build jamming into it because then it
3915 * will run more slowly).
3918 yy_next_state
= yy_try_NUL_trans( yy_current_state
);
3920 yy_bp
= yytext_ptr
+ YY_MORE_ADJ
;
3922 if ( yy_next_state
)
3924 /* Consume the NUL. */
3925 yy_cp
= ++yy_c_buf_p
;
3926 yy_current_state
= yy_next_state
;
3933 #line 632 "flex.skl"
3934 goto yy_find_action
;
3938 else switch ( yy_get_next_buffer() )
3940 case EOB_ACT_END_OF_FILE
:
3942 yy_did_buffer_switch_on_eof
= 0;
3946 /* Note: because we've taken care in
3947 * yy_get_next_buffer() to have set up
3948 * yytext, we can now set up
3949 * yy_c_buf_p so that if some total
3950 * hoser (like flex itself) wants to
3951 * call the scanner after we return the
3952 * YY_NULL, it'll still work - another
3953 * YY_NULL will get returned.
3955 yy_c_buf_p
= yytext_ptr
+ YY_MORE_ADJ
;
3957 yy_act
= YY_STATE_EOF(YY_START
);
3963 if ( ! yy_did_buffer_switch_on_eof
)
3969 case EOB_ACT_CONTINUE_SCAN
:
3971 yytext_ptr
+ yy_amount_of_matched_text
;
3973 yy_current_state
= yy_get_previous_state();
3976 yy_bp
= yytext_ptr
+ YY_MORE_ADJ
;
3979 case EOB_ACT_LAST_MATCH
:
3981 &yy_current_buffer
->yy_ch_buf
[yy_n_chars
];
3983 yy_current_state
= yy_get_previous_state();
3986 yy_bp
= yytext_ptr
+ YY_MORE_ADJ
;
3987 goto yy_find_action
;
3994 "fatal flex scanner internal error--no action found" );
3995 } /* end of action switch */
3996 } /* end of scanning one token */
3997 } /* end of yylex */
3999 #line 782 "flex.skl"
4001 /* yy_get_next_buffer - try to read in a new buffer
4003 * Returns a code representing an action:
4004 * EOB_ACT_LAST_MATCH -
4005 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
4006 * EOB_ACT_END_OF_FILE - end of file
4009 #line 793 "flex.skl"
4010 static int yy_get_next_buffer()
4011 #line 799 "flex.skl"
4013 register char *dest
= yy_current_buffer
->yy_ch_buf
;
4014 register char *source
= yytext_ptr
;
4015 register int number_to_move
, i
;
4018 if ( yy_c_buf_p
> &yy_current_buffer
->yy_ch_buf
[yy_n_chars
+ 1] )
4020 "fatal flex scanner internal error--end of buffer missed" );
4022 if ( yy_current_buffer
->yy_fill_buffer
== 0 )
4023 { /* Don't try to fill the buffer, so this is an EOF. */
4024 if ( yy_c_buf_p
- (char *) yytext_ptr
- YY_MORE_ADJ
== 1 )
4026 /* We matched a single character, the EOB, so
4027 * treat this as a final EOF.
4029 return EOB_ACT_END_OF_FILE
;
4034 /* We matched some text prior to the EOB, first
4037 return EOB_ACT_LAST_MATCH
;
4041 /* Try to read more data. */
4043 /* First move last chars to start of buffer. */
4044 number_to_move
= (int) (yy_c_buf_p
- (char *) yytext_ptr
) - 1;
4046 for ( i
= 0; i
< number_to_move
; ++i
)
4047 *(dest
++) = *(source
++);
4049 if ( yy_current_buffer
->yy_buffer_status
== YY_BUFFER_EOF_PENDING
)
4050 /* don't do the read, it's not guaranteed to return an EOF,
4053 yy_current_buffer
->yy_n_chars
= yy_n_chars
= 0;
4058 yy_current_buffer
->yy_buf_size
- number_to_move
- 1;
4060 while ( num_to_read
<= 0 )
4061 { /* Not enough room in the buffer - grow it. */
4062 #ifdef YY_USES_REJECT
4064 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
4067 /* just a shorter name for the current buffer */
4068 YY_BUFFER_STATE b
= yy_current_buffer
;
4070 int yy_c_buf_p_offset
=
4071 (int) (yy_c_buf_p
- b
->yy_ch_buf
);
4073 if ( b
->yy_is_our_buffer
)
4075 int new_size
= b
->yy_buf_size
* 2;
4077 if ( new_size
<= 0 )
4078 b
->yy_buf_size
+= b
->yy_buf_size
/ 8;
4080 b
->yy_buf_size
*= 2;
4082 b
->yy_ch_buf
= (char *)
4083 /* Include room in for 2 EOB chars. */
4084 yy_flex_realloc( (void *) b
->yy_ch_buf
,
4085 b
->yy_buf_size
+ 2 );
4088 /* Can't grow it, we don't own it. */
4091 if ( ! b
->yy_ch_buf
)
4093 "fatal error - scanner input buffer overflow" );
4095 yy_c_buf_p
= &b
->yy_ch_buf
[yy_c_buf_p_offset
];
4097 num_to_read
= yy_current_buffer
->yy_buf_size
-
4102 if ( num_to_read
> YY_READ_BUF_SIZE
)
4103 num_to_read
= YY_READ_BUF_SIZE
;
4105 /* Read in more data. */
4106 YY_INPUT( (&yy_current_buffer
->yy_ch_buf
[number_to_move
]),
4107 yy_n_chars
, num_to_read
);
4109 yy_current_buffer
->yy_n_chars
= yy_n_chars
;
4112 if ( yy_n_chars
== 0 )
4114 if ( number_to_move
== YY_MORE_ADJ
)
4116 ret_val
= EOB_ACT_END_OF_FILE
;
4122 ret_val
= EOB_ACT_LAST_MATCH
;
4123 yy_current_buffer
->yy_buffer_status
=
4124 YY_BUFFER_EOF_PENDING
;
4129 ret_val
= EOB_ACT_CONTINUE_SCAN
;
4131 yy_n_chars
+= number_to_move
;
4132 yy_current_buffer
->yy_ch_buf
[yy_n_chars
] = YY_END_OF_BUFFER_CHAR
;
4133 yy_current_buffer
->yy_ch_buf
[yy_n_chars
+ 1] = YY_END_OF_BUFFER_CHAR
;
4135 yytext_ptr
= &yy_current_buffer
->yy_ch_buf
[0];
4141 /* yy_get_previous_state - get the state just before the EOB char was reached */
4143 #line 932 "flex.skl"
4144 static yy_state_type
yy_get_previous_state()
4145 #line 938 "flex.skl"
4147 register yy_state_type yy_current_state
;
4148 register char *yy_cp
;
4150 yy_current_state
= yy_start
;
4151 yy_state_ptr
= yy_state_buf
;
4152 *yy_state_ptr
++ = yy_current_state
;
4153 #line 944 "flex.skl"
4155 for ( yy_cp
= yytext_ptr
+ YY_MORE_ADJ
; yy_cp
< yy_c_buf_p
; ++yy_cp
)
4157 register YY_CHAR yy_c
= (*yy_cp
? yy_ec
[YY_SC_TO_UI(*yy_cp
)] : 1);
4158 while ( yy_chk
[yy_base
[yy_current_state
] + yy_c
] != yy_current_state
)
4160 yy_current_state
= (int) yy_def
[yy_current_state
];
4161 if ( yy_current_state
>= 858 )
4162 yy_c
= yy_meta
[(unsigned int) yy_c
];
4164 yy_current_state
= yy_nxt
[yy_base
[yy_current_state
] + (unsigned int) yy_c
];
4165 *yy_state_ptr
++ = yy_current_state
;
4166 #line 949 "flex.skl"
4169 return yy_current_state
;
4173 /* yy_try_NUL_trans - try to make a transition on the NUL character
4176 * next_state = yy_try_NUL_trans( current_state );
4179 #line 963 "flex.skl"
4180 #ifdef YY_USE_PROTOS
4181 static yy_state_type
yy_try_NUL_trans( yy_state_type yy_current_state
)
4183 static yy_state_type
yy_try_NUL_trans( yy_current_state
)
4184 yy_state_type yy_current_state
;
4186 #line 974 "flex.skl"
4188 register int yy_is_jam
;
4190 register YY_CHAR yy_c
= 1;
4191 while ( yy_chk
[yy_base
[yy_current_state
] + yy_c
] != yy_current_state
)
4193 yy_current_state
= (int) yy_def
[yy_current_state
];
4194 if ( yy_current_state
>= 858 )
4195 yy_c
= yy_meta
[(unsigned int) yy_c
];
4197 yy_current_state
= yy_nxt
[yy_base
[yy_current_state
] + (unsigned int) yy_c
];
4198 yy_is_jam
= (yy_current_state
== 857);
4200 *yy_state_ptr
++ = yy_current_state
;
4201 #line 978 "flex.skl"
4203 return yy_is_jam
? 0 : yy_current_state
;
4207 #line 985 "flex.skl"
4209 #ifdef YY_USE_PROTOS
4210 static void yyunput( int c
, register char *yy_bp
)
4212 static void yyunput( c
, yy_bp
)
4214 register char *yy_bp
;
4216 #line 998 "flex.skl"
4218 register char *yy_cp
= yy_c_buf_p
;
4220 /* undo effects of setting up yytext */
4221 *yy_cp
= yy_hold_char
;
4223 if ( yy_cp
< yy_current_buffer
->yy_ch_buf
+ 2 )
4224 { /* need to shift things up to make room */
4225 /* +2 for EOB chars. */
4226 register int number_to_move
= yy_n_chars
+ 2;
4227 register char *dest
= &yy_current_buffer
->yy_ch_buf
[
4228 yy_current_buffer
->yy_buf_size
+ 2];
4229 register char *source
=
4230 &yy_current_buffer
->yy_ch_buf
[number_to_move
];
4232 while ( source
> yy_current_buffer
->yy_ch_buf
)
4233 *--dest
= *--source
;
4235 yy_cp
+= (int) (dest
- source
);
4236 yy_bp
+= (int) (dest
- source
);
4237 yy_current_buffer
->yy_n_chars
=
4238 yy_n_chars
= yy_current_buffer
->yy_buf_size
;
4240 if ( yy_cp
< yy_current_buffer
->yy_ch_buf
+ 2 )
4241 YY_FATAL_ERROR( "flex scanner push-back overflow" );
4244 *--yy_cp
= (char) c
;
4246 #line 1029 "flex.skl"
4249 yy_hold_char
= *yy_cp
;
4252 #line 1036 "flex.skl"
4253 #endif /* ifndef YY_NO_UNPUT */
4254 #line 1039 "flex.skl"
4257 #line 1043 "flex.skl"
4259 static int yyinput()
4263 #line 1053 "flex.skl"
4267 *yy_c_buf_p
= yy_hold_char
;
4269 if ( *yy_c_buf_p
== YY_END_OF_BUFFER_CHAR
)
4271 /* yy_c_buf_p now points to the character we want to return.
4272 * If this occurs *before* the EOB characters, then it's a
4273 * valid NUL; if not, then we've hit the end of the buffer.
4275 if ( yy_c_buf_p
< &yy_current_buffer
->yy_ch_buf
[yy_n_chars
] )
4276 /* This was really a NUL. */
4280 { /* need more input */
4281 int offset
= yy_c_buf_p
- (char *) yytext_ptr
;
4284 switch ( yy_get_next_buffer() )
4286 case EOB_ACT_LAST_MATCH
:
4287 /* This happens because yy_g_n_b()
4288 * sees that we've accumulated a
4289 * token and flags that we need to
4290 * try matching the token before
4291 * proceeding. But for input(),
4292 * there's no matching to consider.
4293 * So convert the EOB_ACT_LAST_MATCH
4294 * to EOB_ACT_END_OF_FILE.
4297 /* Reset buffer status. */
4302 case EOB_ACT_END_OF_FILE
:
4307 if ( ! yy_did_buffer_switch_on_eof
)
4316 case EOB_ACT_CONTINUE_SCAN
:
4317 yy_c_buf_p
= yytext_ptr
+ offset
;
4323 c
= *(unsigned char *) yy_c_buf_p
; /* cast for 8-bit char's */
4324 *yy_c_buf_p
= '\0'; /* preserve yytext */
4325 yy_hold_char
= *++yy_c_buf_p
;
4327 #line 1118 "flex.skl"
4333 #line 1125 "flex.skl"
4334 #ifdef YY_USE_PROTOS
4335 void yyrestart( FILE *input_file
)
4337 void yyrestart( input_file
)
4340 #line 1136 "flex.skl"
4342 if ( ! yy_current_buffer
)
4343 yy_current_buffer
= yy_create_buffer( yyin
, YY_BUF_SIZE
);
4345 yy_init_buffer( yy_current_buffer
, input_file
);
4346 yy_load_buffer_state();
4350 #line 1147 "flex.skl"
4351 #ifdef YY_USE_PROTOS
4352 void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer
)
4354 void yy_switch_to_buffer( new_buffer
)
4355 YY_BUFFER_STATE new_buffer
;
4357 #line 1158 "flex.skl"
4359 if ( yy_current_buffer
== new_buffer
)
4362 if ( yy_current_buffer
)
4364 /* Flush out information for old buffer. */
4365 *yy_c_buf_p
= yy_hold_char
;
4366 yy_current_buffer
->yy_buf_pos
= yy_c_buf_p
;
4367 yy_current_buffer
->yy_n_chars
= yy_n_chars
;
4370 yy_current_buffer
= new_buffer
;
4371 yy_load_buffer_state();
4373 /* We don't actually know whether we did this switch during
4374 * EOF (yywrap()) processing, but the only time this flag
4375 * is looked at is after yywrap() is called, so it's safe
4376 * to go ahead and always set it.
4378 yy_did_buffer_switch_on_eof
= 1;
4382 #line 1184 "flex.skl"
4383 #ifdef YY_USE_PROTOS
4384 void yy_load_buffer_state( void )
4386 void yy_load_buffer_state()
4388 #line 1194 "flex.skl"
4390 yy_n_chars
= yy_current_buffer
->yy_n_chars
;
4391 yytext_ptr
= yy_c_buf_p
= yy_current_buffer
->yy_buf_pos
;
4392 yyin
= yy_current_buffer
->yy_input_file
;
4393 yy_hold_char
= *yy_c_buf_p
;
4397 #line 1204 "flex.skl"
4398 #ifdef YY_USE_PROTOS
4399 YY_BUFFER_STATE
yy_create_buffer( FILE *file
, int size
)
4401 YY_BUFFER_STATE
yy_create_buffer( file
, size
)
4405 #line 1216 "flex.skl"
4409 b
= (YY_BUFFER_STATE
) yy_flex_alloc( sizeof( struct yy_buffer_state
) );
4411 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
4413 b
->yy_buf_size
= size
;
4415 /* yy_ch_buf has to be 2 characters longer than the size given because
4416 * we need to put in 2 end-of-buffer characters.
4418 b
->yy_ch_buf
= (char *) yy_flex_alloc( b
->yy_buf_size
+ 2 );
4419 if ( ! b
->yy_ch_buf
)
4420 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
4422 b
->yy_is_our_buffer
= 1;
4424 yy_init_buffer( b
, file
);
4430 #line 1242 "flex.skl"
4431 #ifdef YY_USE_PROTOS
4432 void yy_delete_buffer( YY_BUFFER_STATE b
)
4434 void yy_delete_buffer( b
)
4437 #line 1253 "flex.skl"
4442 if ( b
== yy_current_buffer
)
4443 yy_current_buffer
= (YY_BUFFER_STATE
) 0;
4445 if ( b
->yy_is_our_buffer
)
4446 yy_flex_free( (void *) b
->yy_ch_buf
);
4448 yy_flex_free( (void *) b
);
4452 #line 1269 "flex.skl"
4453 #ifndef YY_ALWAYS_INTERACTIVE
4454 #ifndef YY_NEVER_INTERACTIVE
4455 extern int isatty
YY_PROTO(( int ));
4459 #ifdef YY_USE_PROTOS
4460 void yy_init_buffer( YY_BUFFER_STATE b
, FILE *file
)
4462 void yy_init_buffer( b
, file
)
4467 #line 1289 "flex.skl"
4470 #line 1292 "flex.skl"
4471 yy_flush_buffer( b
);
4473 b
->yy_input_file
= file
;
4474 b
->yy_fill_buffer
= 1;
4476 #line 1299 "flex.skl"
4477 #if YY_ALWAYS_INTERACTIVE
4478 b
->yy_is_interactive
= 1;
4480 #if YY_NEVER_INTERACTIVE
4481 b
->yy_is_interactive
= 0;
4483 b
->yy_is_interactive
= file
? (isatty( fileno(file
) ) > 0) : 0;
4486 #line 1313 "flex.skl"
4490 #line 1318 "flex.skl"
4491 #ifdef YY_USE_PROTOS
4492 void yy_flush_buffer( YY_BUFFER_STATE b
)
4494 void yy_flush_buffer( b
)
4498 #line 1330 "flex.skl"
4505 /* We always need two end-of-buffer characters. The first causes
4506 * a transition to the end-of-buffer state. The second causes
4507 * a jam in that state.
4509 b
->yy_ch_buf
[0] = YY_END_OF_BUFFER_CHAR
;
4510 b
->yy_ch_buf
[1] = YY_END_OF_BUFFER_CHAR
;
4512 b
->yy_buf_pos
= &b
->yy_ch_buf
[0];
4515 b
->yy_buffer_status
= YY_BUFFER_NEW
;
4517 if ( b
== yy_current_buffer
)
4518 yy_load_buffer_state();
4520 #line 1353 "flex.skl"
4523 #ifndef YY_NO_SCAN_BUFFER
4524 #line 1358 "flex.skl"
4525 #ifdef YY_USE_PROTOS
4526 YY_BUFFER_STATE
yy_scan_buffer( char *base
, yy_size_t size
)
4528 YY_BUFFER_STATE
yy_scan_buffer( base
, size
)
4536 base
[size
-2] != YY_END_OF_BUFFER_CHAR
||
4537 base
[size
-1] != YY_END_OF_BUFFER_CHAR
)
4538 /* They forgot to leave room for the EOB's. */
4541 b
= (YY_BUFFER_STATE
) yy_flex_alloc( sizeof( struct yy_buffer_state
) );
4543 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
4545 b
->yy_buf_size
= size
- 2; /* "- 2" to take care of EOB's */
4546 b
->yy_buf_pos
= b
->yy_ch_buf
= base
;
4547 b
->yy_is_our_buffer
= 0;
4548 b
->yy_input_file
= 0;
4549 b
->yy_n_chars
= b
->yy_buf_size
;
4550 b
->yy_is_interactive
= 0;
4552 b
->yy_fill_buffer
= 0;
4553 b
->yy_buffer_status
= YY_BUFFER_NEW
;
4555 yy_switch_to_buffer( b
);
4560 #line 1395 "flex.skl"
4563 #ifndef YY_NO_SCAN_STRING
4564 #line 1400 "flex.skl"
4565 #ifdef YY_USE_PROTOS
4566 YY_BUFFER_STATE
yy_scan_string( yyconst
char *yy_str
)
4568 YY_BUFFER_STATE
yy_scan_string( yy_str
)
4569 yyconst
char *yy_str
;
4573 for ( len
= 0; yy_str
[len
]; ++len
)
4576 return yy_scan_bytes( yy_str
, len
);
4579 #line 1416 "flex.skl"
4582 #ifndef YY_NO_SCAN_BYTES
4583 #line 1421 "flex.skl"
4584 #ifdef YY_USE_PROTOS
4585 YY_BUFFER_STATE
yy_scan_bytes( yyconst
char *bytes
, int len
)
4587 YY_BUFFER_STATE
yy_scan_bytes( bytes
, len
)
4588 yyconst
char *bytes
;
4597 /* Get memory for full buffer, including space for trailing EOB's. */
4599 buf
= (char *) yy_flex_alloc( n
);
4601 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
4603 for ( i
= 0; i
< len
; ++i
)
4606 buf
[len
] = buf
[len
+1] = YY_END_OF_BUFFER_CHAR
;
4608 b
= yy_scan_buffer( buf
, n
);
4610 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
4612 /* It's okay to grow etc. this buffer, and we should throw it
4613 * away when we're done.
4615 b
->yy_is_our_buffer
= 1;
4620 #line 1459 "flex.skl"
4623 #ifndef YY_NO_PUSH_STATE
4624 #line 1464 "flex.skl"
4625 #ifdef YY_USE_PROTOS
4626 static void yy_push_state( int new_state
)
4628 static void yy_push_state( new_state
)
4631 #line 1475 "flex.skl"
4633 if ( yy_start_stack_ptr
>= yy_start_stack_depth
)
4637 yy_start_stack_depth
+= YY_START_STACK_INCR
;
4638 new_size
= yy_start_stack_depth
* sizeof( int );
4640 if ( ! yy_start_stack
)
4641 yy_start_stack
= (int *) yy_flex_alloc( new_size
);
4644 yy_start_stack
= (int *) yy_flex_realloc(
4645 (void *) yy_start_stack
, new_size
);
4647 if ( ! yy_start_stack
)
4649 "out of memory expanding start-condition stack" );
4652 yy_start_stack
[yy_start_stack_ptr
++] = YY_START
;
4659 #ifndef YY_NO_POP_STATE
4660 #line 1505 "flex.skl"
4661 static void yy_pop_state()
4662 #line 1511 "flex.skl"
4664 if ( --yy_start_stack_ptr
< 0 )
4665 YY_FATAL_ERROR( "start-condition stack underflow" );
4667 BEGIN(yy_start_stack
[yy_start_stack_ptr
]);
4672 #ifndef YY_NO_TOP_STATE
4673 #line 1523 "flex.skl"
4674 static int yy_top_state()
4675 #line 1529 "flex.skl"
4677 return yy_start_stack
[yy_start_stack_ptr
- 1];
4681 #ifndef YY_EXIT_FAILURE
4682 #define YY_EXIT_FAILURE 2
4685 #line 1540 "flex.skl"
4686 #ifdef YY_USE_PROTOS
4687 static inline void yy_fatal_error( yyconst
char msg
[] )
4689 static inline void yy_fatal_error( msg
)
4693 (void) fprintf( stderr
, "%s\n", msg
);
4694 exit( YY_EXIT_FAILURE
);
4697 #line 1561 "flex.skl"
4700 /* Redefine yyless() so it works in section 3 code. */
4706 /* Undo effects of setting up yytext. */ \
4707 yytext[yyleng] = yy_hold_char; \
4708 yy_c_buf_p = yytext + n; \
4709 yy_hold_char = *yy_c_buf_p; \
4710 *yy_c_buf_p = '\0'; \
4716 /* Internal utility routines. */
4719 #ifdef YY_USE_PROTOS
4720 static void yy_flex_strncpy( char *s1
, yyconst
char *s2
, int n
)
4722 static void yy_flex_strncpy( s1
, s2
, n
)
4729 for ( i
= 0; i
< n
; ++i
)
4734 #ifdef YY_NEED_STRLEN
4735 #ifdef YY_USE_PROTOS
4736 static int yy_flex_strlen( yyconst
char *s
)
4738 static int yy_flex_strlen( s
)
4743 for ( n
= 0; s
[n
]; ++n
)
4751 #ifdef YY_USE_PROTOS
4752 static void *yy_flex_alloc( yy_size_t size
)
4754 static void *yy_flex_alloc( size
)
4758 return (void *) malloc( size
);
4761 #ifdef YY_USE_PROTOS
4762 static inline void *yy_flex_realloc( void *ptr
, yy_size_t size
)
4764 static inline void *yy_flex_realloc( ptr
, size
)
4769 /* The cast to (char *) in the following accommodates both
4770 * implementations that use char* generic pointers, and those
4771 * that use void* generic pointers. It works with the latter
4772 * because both ANSI C and C++ allow castless assignment from
4773 * any pointer type to void*, and deal with argument conversions
4774 * as though doing an assignment.
4776 return (void *) realloc( (char *) ptr
, size
);
4779 #ifdef YY_USE_PROTOS
4780 static void yy_flex_free( void *ptr
)
4782 static void yy_flex_free( ptr
)
4796 #line 1448 "./lexsrc.l"
4799 #define NORMALSTAT 0
4800 #define COMMENTSTAT 1
4801 #define SINGLEQUOTE 2
4802 #define DOUBLEQUOTE 3
4805 * set_assignment sets an assignment variable in retvalue from yytext with
4806 * a trailing {between}[={between}] stripped.
4807 * retlength is set, too.
4809 static void set_assignment( void )
4813 for( retlength
= 0; ( ch
= yytext
[retlength
] ) != 0; retlength
++ )
4816 * A blank or '=' can't occur in the normal text. They are terminators.
4820 || ( MY_ISBLANK( ch
) ) )
4822 retvalue
[retlength
] = (char) rx_toupper( ch
);
4824 retvalue
[retlength
] = '\0' ;
4827 /* rmspc uppercases all characters and removes blanks from a string.
4828 * Returns the input string.
4830 static YY_CHAR_TYPE
*rmspc( YY_CHAR_TYPE
*instr
)
4832 YY_CHAR_TYPE
*retval
=instr
,
4836 while ((c
= *instr
++) != '\0')
4838 c
= (YY_CHAR_TYPE
) rx_toupper(c
);
4839 /* These characters are treated as blanks: */
4840 if ((c
!='`') && (c
!=' ') && (c
!=',') && (c
!='\t') && (c
!='\n'))
4849 * process_number_or_const does the processing of a decimal number or a const.
4850 * The detection was to complicated to put it into one routine.
4851 * We have to read some more characters to decide whether or not we have
4853 * Returns a lexical code.
4855 static int process_number_or_const( const char *text
, int len
)
4860 * Copy and uppercase the return value.
4862 memcpy( retvalue
, text
, len
+ 1 ); /* include terminating '\0' */
4863 mem_upper( retvalue
, len
);
4867 parser_data
.tline
= linenr
- 1; /* set tline for exiterror */
4868 exiterror( ERR_INV_SUBKEYWORD
, 11, "ENGINEERING SCIENTIFIC", retvalue
);
4875 * Plain number or const_symbol.
4877 if ( KNOWN_RESERVED( retvalue
, len
) )
4885 * This has precedence over checking the parenthesis below.
4889 kill_next_space
= 1;
4895 * We must check if a '(' follows. Remember the number of eaten chars.
4899 while ( ( c
= yyinput() ) == '`' )
4901 while ( ( c
= input() ) == '`' )
4912 * input() has destroyed the yytext-terminator re-set it
4914 yytext
[yyleng
] = '\0';
4918 kill_next_space
= 1;
4919 if ( insert_abuttal
)
4921 inhibit_delayed_abuttal
= 1;
4922 delayed_symbol
= INFUNCNAME
;
4925 expression_ended
= 0;
4929 if ( insert_abuttal
&& !in_parse
)
4931 delayed_symbol
= symbol
;
4935 expression_ended
= 1;
4940 * compress_string removes quotes or double quotes from the src and changes
4941 * double delimiter to one. The delimiter should be either ' or ".
4943 static void compress_string( char *dest
, const char *src
)
4945 char c
, delim
= *src
++;
4949 if ( ( c
= *src
++ ) == delim
)
4964 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
4965 exiterror( ERR_UNMATCHED_QUOTE
, 0 ) ;
4974 * process_hex_or_bin_string convert the string in text which is given as
4975 * a hexstring or a binstring to a "normal" string. base must be either 2 or
4977 * We rely on having a well-formed string. This must be ensured. It is
4978 * something of the form "content"x or 'content'b or similar.
4979 * Returns a lexical code. retvalue and retlength will be filled.
4981 static int process_hex_or_bin_string( char *text
, int len
, int base
)
4985 unsigned char *dest
,sum
;
4994 * First, count the number of valid chars to determine the missed leading
4995 * zeros of the first final character.
4997 for ( i
= 0, left
= 0 ; i
< len
; i
++ )
5000 if ( !MY_ISBLANK( c
) )
5005 * left shall be the count of input char left to process one dest char.
5006 * Accessing one character after the content's end is allowed.
5008 left
%= ( base
== 2 ) ? 8 : 2;
5010 dest
= (unsigned char *) retvalue
;
5017 while ( len
&& MY_ISBLANK( c
) )
5030 sum
|= (unsigned char) ( c
- '0' );
5044 dest
[retlength
++] = sum
;
5048 dest
[retlength
] = '\0';
5050 /* We must check if a '(' follows. Remember the number of eaten chars. */
5053 for (; ( i
= yyinput() ) == '`';)
5055 for (; ( i
= input() ) == '`';)
5063 /* input() has destroyed the yytext-terminator re-set it */
5070 kill_next_space
= 1;
5073 inhibit_delayed_abuttal
= 1;
5074 delayed_symbol
= INFUNCNAME
;
5077 expression_ended
= 0;
5081 if ( insert_abuttal
&& !in_parse
&& !in_call
)
5083 delayed_symbol
= STRING
;
5090 kill_next_space
= 1;
5093 expression_ended
= 1;
5095 return ( base
== 2 ) ? BINSTRING
: HEXSTRING
;
5098 /* get_next_line: Lower level input fetcher.
5099 * Reads exactly one line from the input stream (file or string).
5100 * All EOL characters are removed and the result is stored in
5101 * last_source_line. A check for line overflow occurred here.
5102 * A special check is done for CP/M ^Z (DOS and friends use this for
5103 * "backward" compatibility, too).
5104 * line is filled with valid values on success.
5105 * max must reflect size of line and should be at least BUFFERSIZE + 2;
5106 * Returns -1 (no input) or the number of valid chars in line.
5108 static int get_next_line( char *line
, int max
, FILE *stream
)
5110 lineboxptr newline
;
5111 offsrcline
*incore_newline
;
5115 if (inEOF
) /* You can't use myunputc if EOF is reached! */
5118 while (pos
<= max
- 2)
5122 c
= chbuffer
[--bufptr
] ;
5125 if (interptr
>=interptrmax
)
5128 #ifdef ASCII_0_TERMINATES_STRING
5129 if ((c
= *interptr
++) == '\0')
5139 if ( parser_data
.TSD
->HaltRaised
)
5140 halt_raised( parser_data
.TSD
);
5143 if ((c
=='\r') || (c
=='\n') || (c
==EOF
))
5145 line
[pos
++] = (char) (unsigned char) c
;
5148 /* first, check for overflow */
5149 if ((c
!='\r') && (c
!='\n') && (c
!=EOF
))
5151 parser_data
.tline
= linenr
; /* set tline for exiterror */
5152 exiterror( ERR_TOO_LONG_LINE
, 0 ) ;
5155 /* We have either a (first) line terminator or EOF */
5158 if ((pos
==1) && (line
[0]=='\x1A')) /* CP/M ^Z EOF? */
5165 chbuffer
[bufptr
++] = EOF
; /* push back EOF for reuse */
5169 /* Maybe we have CRLF or LFCR. Check for the pair character. */
5170 char pairChar
= (c
== '\r') ? '\n' : '\r';
5173 /* get one more char and consume it if it is the pair of the EOL */
5176 if (chbuffer
[bufptr
- 1] == (int) pairChar
)
5181 if ((interptr
< interptrmax
) && (*interptr
== pairChar
))
5186 int next
= getc(stream
);
5187 if (next
!= pairChar
)
5189 /* ungetc may break some runtime stuff. Use the internal lookahead*/
5190 chbuffer
[bufptr
++] = next
;
5192 if ( parser_data
.TSD
->HaltRaised
)
5193 halt_raised( parser_data
.TSD
);
5198 cch
= 0 ; /* not needed ? */
5201 if (parser_data
.incore_source
)
5204 * We can use the incore string to describe a source line, but we
5205 * MUST incement linenr otherwise .LINE doesn't work in instore macros.
5206 * This will probably also allow errors to be reported for the correct line number.
5209 incore_newline
= FreshLine() ;
5210 incore_newline
->length
= pos
- 1 ;
5211 incore_newline
->offset
= last_interptr
- parser_data
.incore_source
;
5212 last_interptr
= interptr
;
5216 newline
= (lineboxptr
)Malloc(sizeof(linebox
)) ;
5217 newline
->line
= Str_make_TSD( parser_data
.TSD
, pos
- 1 ) ;
5218 newline
->line
->len
= pos
- 1 ;
5219 memcpy(newline
->line
->value
, line
, pos
- 1 ) ;
5220 newline
->prev
= parser_data
.last_source_line
;
5221 newline
->next
= NULL
;
5222 newline
->lineno
= linenr
++ ;
5224 if (parser_data
.first_source_line
==NULL
)
5225 parser_data
.first_source_line
= newline
;
5227 parser_data
.last_source_line
->next
= newline
;
5228 parser_data
.last_source_line
= newline
;
5233 /* fill_buffer: Higher level input fetcher.
5234 * (To allow the C-file to compile, all Rexx comments in this comment
5235 * are written as "{*" "*}" instead of the normal, C-like manner.)
5236 * Reads lines from the input stream (yyin or string) with get_next_line.
5237 * Only one line is returned to allow the saving of the line number.
5238 * This routine replaces all comments by '`' signs. This allows
5239 * the detection of a "pseudo" blank: The fragment "say x{* *}y" uses two
5240 * variables, not one called "xy". The parsing of comments must be done
5241 * here to check for the actual numbers of open and closes ("{*" and "*}").
5242 * While doing this we must always check for strings since "'{*'" is not part
5244 * Here is a problem: Is this a nested valid comment: "{* '{*' *} *}"?
5245 * I think so although you cannot remove the outer comment signs without an
5246 * error. Everything within a comment is a comment (per def.). Counting
5247 * opens and closes of comment signs is an ugly trick to help the user.
5248 * He/she must know what he/she is doing if nesting comments!
5250 * max_size gives the maximum size of buf. This is filled up with input.
5251 * We never return less than one character until EOF is reached. Thus, we
5252 * read more than one true input line if a comment spans over more than one
5254 * A line will either be terminated by a single '\n' or by a blank. The
5255 * later one replaces a line continuation (',' [spaces] EOL).
5256 * Errors in this low
5258 * Conclusion: We have to fight very hard to set the expected line number.
5259 * * Comments spanning over lines set them on getting the
5261 * * Concatenated lines set
5263 static int fill_buffer( char *buf
, int max_size
)
5265 /* statics protected by regina_parser */
5266 static char line
[BUFFERSIZE
+2] ; /* special buffer to allow max_size */
5267 static int pos
= 0, max
= 0 ; /* being smaller than BUFFERSIZE+1 */
5268 static int nesting
= 0; /* nesting level of comments */
5269 int nesting_start_line
= 0; /* start line of comment for errortext() */
5271 int i
, squote
, dquote
;
5280 max
= get_next_line( line
, sizeof(line
), yyin
) ;
5281 if (max
< 0) /* empty input file */
5283 /* test for both #! - fixes bug 1230639 */
5287 { /* Ignore first line beginning this way for unix compat */
5289 memcpy( line
, "/**/\n", 5 );
5292 else if (pos
< max
) /* Are there still characters to transmit? */
5294 /* Buffer already checked for correctness */
5295 if (max_size
> max
- pos
)
5296 max_size
= max
- pos
;
5297 memcpy(buf
, line
+ pos
, max_size
);
5301 else /* Need next line */
5303 if (contline
&& !nesting
)
5305 extnextline
= ++nextline
;
5310 max
= get_next_line( line
, sizeof(line
), yyin
) ;
5311 if (max
< 0) /* empty input file */
5315 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
5316 exiterror( ERR_UNMATCHED_QUOTE
, 1 ) ;
5322 /* A new line is available, check first for an ending comment */
5323 dest
= line
; /* we change comments in line */
5324 if (nesting
) /* This may lead to more line reading */
5327 * The first time extnextline is non-zero, we have the comment
5328 * starting sequence line. This is saved for use if no matching
5329 * ending comment sequence is found, so that the error message
5330 * reflects the start of the comment.
5331 * Regina feature request: #508788
5333 if ( extnextline
< 0 )
5334 nesting_start_line
= nextline
+1;
5335 extnextline
= ++nextline
;
5336 extnextstart
= 1; /* See Reference (*) below */
5341 if (c
== '*') /* start of comment end? */
5343 if (line
[pos
+1] == '/')
5344 { /* pos+1 always exists, at least '\n' or '\0' */
5356 else if (c
== '/') /* start of new begin? */
5358 if (line
[pos
+1] == '*')
5371 max
= get_next_line( line
, sizeof(line
), yyin
) ;
5372 if (max
< 0) /* empty input file */
5374 if ( nesting_start_line
)
5375 parser_data
.tline
= nesting_start_line
; /* set tline for exiterror */
5377 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
5378 exiterror( ERR_UNMATCHED_QUOTE
, 1 ) ;
5381 /* This is a comment continuation. If the lexer will return
5382 * something it already has a valid tline/tstart pair.
5383 * The lexer will return the current token and on the NEXT
5384 * call it expects a valid nextline/nextstart pair.
5386 extnextline
= ++nextline
; extnextstart
= 1;
5387 dest
= line
; /* we change comments in line */
5388 goto repeated_nesting
;
5390 extnextstart
= pos
+ 1;
5392 { /* Exception! Have a look at: "x='y',{*\n\n*}\n'z'". This should
5393 * result in "x = 'y' 'z'".
5394 * We must parse until EOL and check for whitespaces and comments...
5403 if (line
[pos
+1] == '*')
5407 goto repeated_nesting
;
5410 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
5411 exiterror( ERR_YACC_SYNTAX
, 1, parser_data
.tline
) ; /* standard error */
5415 /* All done, it was a continuation line. */
5416 /* contline will be resetted by: */
5417 return fill_buffer( buf
, max_size
) ;
5420 /* We have something to play with. Run through the input and check for
5421 * strings including comments.
5423 squote
= dquote
= 0;
5427 /* We use selective loops to reduce comparisons */
5432 if (c
== '*') /* start of comment end? */
5434 if (line
[pos
+1] == '/')
5435 { /* pos+1 always exists, at least '\n' or '\0' */
5446 else if (c
== '/') /* start of new begin? */
5448 if (line
[pos
+1] == '*')
5457 } while (pos
< max
);
5460 while ((c
= line
[pos
]) != '\'')
5465 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
5466 exiterror( ERR_UNMATCHED_QUOTE
, 2 ) ;
5475 while ((c
= line
[pos
]) != '\"')
5480 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
5481 exiterror( ERR_UNMATCHED_QUOTE
, 3 ) ;
5488 else if (line_comment
)
5490 while ((c
= line
[pos
]) >= ' ') /* not at end of line yet */
5495 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
5496 exiterror( ERR_UNMATCHED_QUOTE
, 3 ) ;
5499 *dest
++ = c
; /* line terminator */
5505 switch (c
= line
[pos
])
5520 if (line
[pos
+ 1] == '*')
5535 case '-': /* line "--" comments */
5536 if (line
[pos
+ 1] == '-')
5552 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
5553 exiterror( ERR_INVALID_CHAR
, 1, c
, c
) ;
5563 max
= (int) (dest
- line
);
5565 /* Now we can replace a ',' [spaces|comments] '\n' with the line
5566 * continuation, but check for nesting first
5569 { /* Don't leave ANY spaces at EOL. That would confuse the lexer. */
5571 while ((i
>= 0) && rx_isspace(line
[i
]))
5574 /* Of course, there is one exception: line continuation */
5575 while ((i
>= 0) && (line
[i
] == '`'))
5577 if ((i
>= 0) && (line
[i
] == ','))
5584 * At this point the lexer can't determine the nextline since we eat up
5585 * the \n. This leads to an incorrect count. But either the '`'-signs
5586 * are ignored or they are follows of a "token", a valid word.
5587 * Look at "say x;say y ``". This will cause the lexer to
5588 * return at least 4 tokens (SAY "x" ";" SAY) before "y" will be
5589 * returned. We can only set nextline/nextstart at "y".
5590 * Result: We set this pair at the start of the next call to
5591 * fill_buffer such that the next call to yylex will set the correct
5597 i
= max
- 1; /* on last valid char */
5600 if (!MY_ISBLANK(line
[i
]) && (line
[i
] != '\n'))
5604 /* i now -1 or on last nonblank */
5605 if ((i
>= 0) && (line
[i
] == ','))
5606 { /* FIXME: What shall be do with "," followed by EOF? */
5615 memcpy(buf
, line
, max_size
);
5621 /* yywrap MAY be called by the lexer is EOF encounters, see (f)lex docu */
5624 assert( do_level
>= 0 ) ;
5627 parser_data
.tline
= linenr
- 1 ; /* set tline for exiterror */
5628 exiterror( ERR_INCOMPLETE_STRUCT
, 0 ) ;
5633 /******************************************************************************
5634 ******************************************************************************
5635 * global interface ***********************************************************
5636 ******************************************************************************
5637 *****************************************************************************/
5639 /* initalize all local and global values */
5640 static void init_it_all( tsd_t
*TSD
)
5642 #if defined(FLEX_SCANNER) && defined(FLEX_DEBUG)
5651 expression_ended
= 0 ;
5652 insert_abuttal
= 0 ;
5656 inhibit_delayed_abuttal
= 0 ;
5663 in_address
= not_in_address
;
5664 seek_with
= no_seek_with
;
5665 kill_this_space
= 0 ;
5678 interptrmax
= NULL
;
5679 /* non-zero values */
5683 kill_next_space
= 1 ;
5687 memset(&parser_data
, 0, sizeof(internal_parser_type
));
5688 parser_data
.TSD
= TSD
;
5691 /* fetch may only be called by fetch_protected. The parser and lexer are
5692 * already protected by regina_parser by fetch_protected.
5693 * This function prepares the lexer and parser and call them. The
5694 * result and all generated values are stored in result. The parser
5695 * tree isn't executed here.
5696 * Exactly fptr xor str must be non-null.
5698 static void fetch(tsd_t
*TSD
, FILE *fptr
, const streng
*str
,
5699 internal_parser_type
*result
)
5701 init_it_all( TSD
) ;
5705 yy_delete_buffer(YY_CURRENT_BUFFER
) ;
5716 interptr
= str
->value
;
5717 last_interptr
= interptr
;
5718 interptrmax
= interptr
+ cchmax
;
5719 parser_data
.incore_source
= str
->value
; /* fixes bug 972796 */
5720 result
->incore_source
= str
->value
;
5725 parser_data
.result
= __reginaparse();
5728 yy_delete_buffer(YY_CURRENT_BUFFER
) ;
5734 *result
= parser_data
;
5735 /* Some functions assume null values if parsing isn't running: */
5736 memset(&parser_data
, 0, sizeof(internal_parser_type
));
5739 /* This function serializes the parser/lexer requests of the process and
5740 * call fetch which will make the work. Look there.
5742 static void fetch_protected( tsd_t
* volatile TSD
, FILE *fptr
,
5743 const streng
*str
, internal_parser_type
*result
)
5745 volatile int panicked
= 0;
5746 tsd_t
* volatile saved_TSD
;
5748 THREAD_PROTECT( regina_parser
)
5749 TSD
->in_protected
= 1;
5750 memset(&parser_data
, 0, sizeof(internal_parser_type
));
5752 saved_TSD
= TSD
; /* vars used until here */
5753 if ( setjmp( TSD
->protect_return
) )
5755 TSD
= saved_TSD
; /* prevents bugs like 592393 */
5759 fetch( TSD
, fptr
, str
, result
);
5761 TSD
->in_protected
= 0;
5762 THREAD_UNPROTECT( regina_parser
)
5768 * We got a fatal condition while fetching the input.
5770 memset(result
, 0, sizeof(internal_parser_type
));
5773 * FIXME: Currently no time to investigate it, but we have to do
5774 * a cleanup of the node and source lines of parser_data
5775 * here. Test this with
5778 * interpret 'nop;"a='
5780 if ( TSD
->delayed_error_type
== PROTECTED_DelayedInterpreterExit
)
5781 jump_interpreter_exit( TSD
, TSD
->expected_exit_error
);
5782 if ( TSD
->delayed_error_type
== PROTECTED_DelayedRexxSignal
)
5783 jump_rexx_signal( TSD
);
5784 jump_script_exit( TSD
, TSD
->systeminfo
->result
);
5787 /* fetch_file reads in a REXX file from disk (or a pipe). It returns without
5788 * executing the program. The parsed tree with all needed values including
5789 * the result of the parsing is copied to result.
5790 * fptr remains open after this call.
5791 * type is either PARSE_ONLY or PARSE_AND_TIN. In the later case a tinned variant of the
5792 * parsing tree is created, too.
5794 void fetch_file(tsd_t
*TSD
, FILE *fptr
, internal_parser_type
*result
)
5796 fetch_protected(TSD
, fptr
, NULL
, result
);
5799 /* fetch_string reads in a REXX macro from a streng. It returns without
5800 * executing the program. The parsed tree with all needed values including
5801 * the result of the parsing is copied to result.
5802 * type is either PARSE_ONLY or PARSE_AND_TIN. In the later case a tinned variant of the
5803 * parsing tree is created, too.
5804 * The function is typically called by an "INTERPRET" instruction.
5806 void fetch_string(tsd_t
*TSD
, const streng
*str
, internal_parser_type
*result
)
5808 fetch_protected(TSD
, NULL
, str
, result
);