bringing SDL 1.2.14 from vendor into the main branch
[AROS-Contrib.git] / regina / lexsrc.c
blobec542e2ce60275fc7c4d102282086b1a828db6a8
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
19 #line 20 "./lexsrc.c"
20 /* A lexical scanner generated by flex */
22 /* Scanner skeleton version:
23 * $Header$
26 #define FLEX_SCANNER
27 #define YY_FLEX_MAJOR_VERSION 2
28 #define YY_FLEX_MINOR_VERSION 5
30 #include <stdio.h>
31 #line 15 "flex.skl"
34 /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
35 #ifdef c_plusplus
36 #ifndef __cplusplus
37 #define __cplusplus
38 #endif
39 #endif
42 #ifdef __cplusplus
44 #include <stdlib.h>
45 #line 33 "flex.skl"
46 #include <unistd.h>
48 /* Use prototypes in function declarations. */
49 #define YY_USE_PROTOS
51 /* The "const" storage-class-modifier is valid. */
52 #define YY_USE_CONST
54 #else /* ! __cplusplus */
56 #if __STDC__
58 #define YY_USE_PROTOS
59 #define YY_USE_CONST
61 #endif /* __STDC__ */
62 #endif /* ! __cplusplus */
64 #ifdef __TURBOC__
65 #pragma warn -rch
66 #pragma warn -use
67 #include <io.h>
68 #include <stdlib.h>
69 #define YY_USE_CONST
70 #define YY_USE_PROTOS
71 #endif
73 #ifdef YY_USE_CONST
74 #define yyconst const
75 #else
76 #define yyconst
77 #endif
80 #ifdef YY_USE_PROTOS
81 #define YY_PROTO(proto) proto
82 #else
83 #define YY_PROTO(proto) ()
84 #endif
86 /* Returned upon end-of-file. */
87 #define YY_NULL 0
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
92 * double cast.
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
104 * compatibility.
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;
122 extern int yyleng;
123 #line 112 "flex.skl"
124 extern FILE *yyin, *yyout;
125 #line 115 "flex.skl"
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 )
136 * yyless( 5 );
137 * else
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. */
147 #define yyless(n) \
148 do \
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 */ \
156 while ( 0 )
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
169 #line 160 "flex.skl"
170 FILE *yy_input_file;
171 #line 166 "flex.skl"
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
177 * characters.
179 yy_size_t yy_buf_size;
181 /* Number of characters read into yy_ch_buf, not including EOB
182 * characters.
184 int yy_n_chars;
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
188 * delete it.
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
195 * each newline.
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
201 * not.
203 int yy_at_bol;
205 /* Whether to try to fill the input buffer when we reach the
206 * end of it.
208 int yy_fill_buffer;
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
226 #line 222 "flex.skl"
227 static YY_BUFFER_STATE yy_current_buffer = 0;
228 #line 225 "flex.skl"
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
232 * "scanner state".
234 #define YY_CURRENT_BUFFER yy_current_buffer
237 #line 235 "flex.skl"
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 */
244 int yyleng;
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 ));
269 #line 268 "flex.skl"
271 static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
272 static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
273 static void yy_flex_free YY_PROTO(( void * ));
275 #define yy_new_buffer yy_create_buffer
277 #define yy_set_interactive(is_interactive) \
279 if ( ! yy_current_buffer ) \
280 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
281 yy_current_buffer->yy_is_interactive = is_interactive; \
284 #define yy_set_bol(at_bol) \
286 if ( ! yy_current_buffer ) \
287 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
288 yy_current_buffer->yy_at_bol = at_bol; \
291 #define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
294 #define YY_USES_REJECT
295 typedef unsigned char YY_CHAR;
296 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
297 typedef int yy_state_type;
298 extern char *yytext;
299 #define yytext_ptr yytext
300 #line 293 "flex.skl"
302 #line 296 "flex.skl"
303 static yy_state_type yy_get_previous_state YY_PROTO(( void ));
304 static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
305 static int yy_get_next_buffer YY_PROTO(( void ));
306 static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
307 #line 302 "flex.skl"
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; \
316 *yy_cp = '\0'; \
317 yy_c_buf_p = yy_cp;
318 #line 314 "flex.skl"
319 #line 315 "flex.skl"
321 #define YY_NUM_RULES 118
322 #define YY_END_OF_BUFFER 119
323 static yyconst short int yy_acclist[1113] =
324 { 0,
325 1, 32, 1, 32, 1, 32, 1, 32, 1, 32,
326 1, 32, 1, 32, 1, 32, 1, 32, 1, 32,
327 1, 32, 1, 32, 1, 32, 1, 32, 1, 32,
328 1, 32, 1, 32, 1, 32, 1, 32, 1, 32,
329 1, 32, 1, 32, 1, 32, 1, 32, 1, 32,
330 1, 32, 1, 32, 1, 32, 1, 32, 1, 32,
331 119, 115, 117, 118, 32, 113, 117, 118, 3, 118,
332 115, 117, 118, 83, 117, 118, 114, 117, 118, 90,
333 117, 118, 93, 117, 118, 114, 117, 118, 85, 117,
334 118, 84, 117, 118, 91, 117, 118, 88, 117, 118,
336 86, 117, 118, 87, 117, 118, 33, 82, 117, 118,
337 89, 117, 118, 80, 82, 117, 118, 116, 117, 118,
338 3, 117, 118, 104, 117, 118, 94, 117, 118, 102,
339 117, 118, 83, 117, 118, 83, 117, 118, 83, 117,
340 118, 83, 117, 118, 83, 117, 118, 95, 117, 118,
341 1, 32, 115, 117, 118, 92, 117, 118, 95, 115,
342 117, 118, 32, 113, 117, 118, 83, 117, 118, 33,
343 82, 117, 118, 80, 82, 117, 118, 83, 117, 118,
344 83, 117, 118, 83, 117, 118, 83, 117, 118, 83,
345 117, 118, 83, 117, 118, 83, 117, 118, 83, 117,
347 118, 83, 117, 118, 83, 117, 118, 83, 117, 118,
348 83, 117, 118, 83, 117, 118, 83, 117, 118, 83,
349 117, 118, 83, 117, 118, 83, 117, 118, 1, 32,
350 115, 117, 118, 32, 113, 117, 118, 83, 117, 118,
351 83, 117, 118, 1, 32, 115, 117, 118, 83, 117,
352 118, 83, 117, 118, 83, 117, 118, 83, 117, 118,
353 83, 117, 118, 83, 117, 118, 83, 117, 118, 83,
354 117, 118, 83, 117, 118, 83, 117, 118, 83, 117,
355 118, 83, 117, 118, 83, 117, 118, 83, 117, 118,
356 83, 117, 118, 83, 117, 118, 83, 117, 118, 83,
358 117, 118, 83, 117, 118, 83, 117, 118, 83, 117,
359 118, 83, 117, 118, 83, 117, 118, 32, 113, 117,
360 118, 83, 117, 118, 1, 32, 115, 117, 118, 32,
361 113, 117, 118, 47, 83, 117, 118, 47, 83, 117,
362 118, 47, 83, 117, 118, 47, 83, 117, 118, 47,
363 83, 117, 118, 47, 83, 117, 118, 47, 83, 117,
364 118, 1, 32, 115, 117, 118, 32, 113, 117, 118,
365 2, 3, 118, 2, 115, 117, 118, 2, 3, 117,
366 118, 2, 83, 117, 118, 1, 32, 115, 117, 118,
367 83, 117, 118, 83, 117, 118, 83, 117, 118, 32,
369 113, 3, 90, 93, 84, 91, 88, 86, 87, 89,
370 104, 94, 102, 32, 113, 92, 3, 83, 79, 90,
371 93, 110, 79, 85, 91, 112, 88, 86, 87, 82,
372 81, 82, 89, 109, 80, 82, 82, 104, 97, 105,
373 106, 94, 107, 103, 102, 96, 69, 83, 83, 68,
374 83, 83, 83, 83, 95, 103, 106, 105, 32, 113,
375 1, 32, 92, 111, 32, 113, 32, 113, 83, 74,
376 35, 82, 82, 34, 80, 82, 82, 83, 83, 69,
377 83, 83, 7, 83, 83, 83, 83, 83, 83, 11,
378 83, 83, 83, 83, 83, 83, 83, 83, 83, 83,
380 83, 83, 83, 83, 83, 83, 83, 68, 83, 83,
381 83, 83, 83, 83, 32, 113, 1, 32, 32, 113,
382 32, 113, 83, 37, 83, 83, 32, 113, 1, 32,
383 83, 83, 83, 83, 83, 83, 83, 83, 83, 83,
384 83, 83, 83, 83, 83, 83, 83, 83, 83, 83,
385 73, 69, 83, 83, 68, 83, 83, 83, 83, 32,
386 113, 32, 113, 83, 32, 113, 1, 32, 32, 113,
387 47, 47, 47, 47, 47, 47, 47, 32, 113, 47,
388 47, 83, 47, 69, 83, 47, 83, 47, 68, 83,
389 47, 83, 47, 83, 47, 83, 47, 83, 32, 113,
391 1, 32, 32, 113, 2, 3, 2, 2, 32, 113,
392 2, 3, 2, 32, 113, 1, 32, 83, 83, 83,
393 69, 68, 79, 79, 79, 110, 79, 79, 79, 112,
394 82, 109, 97, 101, 105, 106, 107, 103, 96, 100,
395 69, 70, 83, 68, 83, 83, 83, 103, 99, 102,
396 106, 108, 104, 105, 98, 111, 74, 35, 82, 34,
397 83, 5, 83, 69, 83, 7, 83, 83, 31, 83,
398 83, 70, 83, 11, 83, 83, 83, 16, 83, 83,
399 83, 83, 83, 83, 83, 83, 83, 83, 24, 83,
400 83, 83, 83, 68, 83, 83, 83, 83, 83, 83,
402 38, 83, 37, 83, 83, 83, 83, 83, 83, 83,
403 83, 83, 50, 83, 83, 83, 83, 83, 83, 83,
404 83, 57, 83, 83, 83, 70, 83, 83, 69, 70,
405 83, 68, 83, 83, 83, 83, 47, 69, 47, 47,
406 68, 47, 47, 47, 47, 47, 69, 47, 70, 83,
407 47, 68, 47, 83, 47, 83, 47, 83, 47, 83,
408 83, 83, 83, 70, 75, 79, 77, 78, 76, 78,
409 82, 101, 100, 70, 83, 83, 61, 83, 99, 102,
410 108, 104, 98, 83, 5, 6, 83, 8, 83, 9,
411 83, 31, 10, 83, 70, 83, 83, 83, 16, 83,
413 83, 83, 83, 83, 20, 83, 21, 83, 83, 83,
414 24, 83, 83, 59, 83, 83, 83, 83, 29, 83,
415 83, 61, 83, 38, 83, 83, 83, 41, 83, 83,
416 83, 83, 83, 83, 50, 83, 83, 83, 52, 83,
417 83, 83, 83, 57, 83, 83, 63, 83, 66, 83,
418 70, 83, 83, 83, 61, 83, 60, 83, 47, 70,
419 47, 47, 47, 47, 47, 70, 47, 83, 47, 83,
420 47, 83, 47, 61, 83, 39, 83, 83, 83, 61,
421 78, 72, 83, 71, 83, 61, 59, 83, 6, 8,
422 9, 10, 83, 83, 14, 83, 83, 83, 83, 18,
424 83, 83, 20, 21, 22, 83, 83, 83, 83, 59,
425 27, 83, 72, 83, 28, 83, 29, 71, 83, 61,
426 36, 83, 40, 83, 83, 41, 83, 83, 83, 83,
427 83, 83, 83, 83, 52, 83, 49, 83, 58, 83,
428 83, 83, 63, 66, 83, 72, 83, 71, 83, 61,
429 60, 60, 47, 47, 47, 47, 61, 47, 72, 83,
430 36, 47, 83, 47, 71, 83, 47, 61, 39, 83,
431 83, 72, 71, 72, 71, 59, 83, 83, 83, 14,
432 83, 83, 83, 18, 83, 22, 23, 83, 25, 83,
433 26, 83, 27, 72, 28, 71, 36, 36, 40, 83,
435 83, 83, 83, 45, 83, 48, 83, 83, 55, 83,
436 83, 53, 83, 49, 58, 83, 62, 83, 83, 72,
437 71, 47, 72, 36, 47, 47, 71, 47, 72, 36,
438 47, 47, 71, 83, 83, 4, 83, 83, 13, 83,
439 17, 83, 15, 83, 83, 83, 23, 25, 26, 44,
440 83, 83, 83, 42, 83, 45, 48, 83, 55, 51,
441 83, 53, 56, 83, 62, 67, 83, 83, 83, 4,
442 83, 13, 17, 15, 83, 83, 44, 83, 43, 83,
443 42, 54, 83, 51, 56, 67, 83, 83, 12, 83,
444 30, 83, 19, 83, 83, 43, 54, 83, 83, 12,
446 30, 19, 46, 83, 83, 64, 83, 46, 65, 83,
447 64, 65
450 static yyconst short int yy_accept[849] =
451 { 0,
452 1, 3, 5, 7, 9, 11, 13, 15, 17, 19,
453 21, 23, 25, 27, 29, 31, 33, 35, 37, 39,
454 41, 43, 45, 47, 49, 51, 53, 55, 57, 59,
455 61, 62, 65, 69, 71, 74, 77, 80, 83, 86,
456 89, 92, 95, 98, 101, 104, 107, 111, 114, 118,
457 121, 124, 127, 130, 133, 136, 139, 142, 145, 148,
458 151, 156, 159, 163, 167, 170, 174, 178, 181, 184,
459 187, 190, 193, 196, 199, 202, 205, 208, 211, 214,
460 217, 220, 223, 226, 229, 234, 238, 241, 244, 249,
461 252, 255, 258, 261, 264, 267, 270, 273, 276, 279,
463 282, 285, 288, 291, 294, 297, 300, 303, 306, 309,
464 312, 315, 318, 322, 325, 330, 334, 338, 342, 346,
465 350, 354, 358, 362, 367, 371, 374, 378, 382, 386,
466 391, 394, 397, 400, 402, 403, 403, 404, 405, 406,
467 407, 408, 409, 410, 411, 412, 413, 414, 414, 414,
468 414, 414, 414, 414, 416, 417, 418, 419, 419, 419,
469 420, 420, 420, 420, 421, 422, 423, 423, 423, 424,
470 424, 424, 424, 425, 426, 427, 428, 429, 430, 431,
471 432, 433, 433, 434, 435, 437, 438, 439, 440, 441,
472 442, 443, 444, 445, 446, 447, 449, 450, 452, 453,
474 454, 455, 456, 457, 458, 459, 461, 463, 464, 465,
475 467, 467, 469, 469, 470, 471, 472, 472, 473, 474,
476 475, 475, 477, 478, 479, 480, 482, 483, 485, 486,
477 487, 488, 489, 490, 492, 493, 494, 495, 496, 497,
478 498, 499, 500, 501, 502, 503, 504, 505, 506, 507,
479 508, 510, 511, 512, 513, 514, 515, 517, 519, 521,
480 521, 523, 524, 526, 527, 529, 531, 532, 533, 534,
481 535, 536, 537, 538, 539, 540, 541, 542, 543, 544,
482 545, 546, 547, 548, 549, 550, 550, 551, 552, 554,
483 555, 557, 558, 559, 560, 562, 562, 564, 565, 567,
485 569, 571, 572, 573, 574, 575, 576, 577, 578, 580,
486 581, 583, 586, 588, 591, 593, 595, 597, 599, 601,
487 603, 605, 607, 608, 609, 611, 613, 614, 616, 618,
488 619, 620, 621, 622, 622, 623, 623, 623, 623, 623,
489 624, 624, 625, 625, 625, 625, 625, 625, 625, 625,
490 625, 626, 626, 627, 628, 628, 629, 629, 629, 629,
491 629, 629, 630, 630, 631, 632, 633, 633, 634, 635,
492 636, 637, 638, 639, 640, 641, 642, 644, 645, 646,
493 647, 648, 649, 650, 651, 652, 653, 654, 655, 656,
494 657, 657, 658, 659, 660, 661, 662, 664, 665, 666,
496 667, 668, 669, 671, 672, 674, 675, 676, 677, 678,
497 680, 681, 682, 683, 684, 685, 686, 687, 688, 689,
498 691, 692, 693, 694, 695, 696, 697, 698, 699, 700,
499 701, 701, 703, 704, 705, 706, 707, 708, 709, 710,
500 711, 712, 713, 715, 716, 717, 718, 719, 720, 721,
501 722, 724, 725, 726, 728, 729, 730, 732, 733, 734,
502 735, 736, 736, 737, 739, 740, 742, 743, 744, 745,
503 746, 748, 751, 753, 755, 757, 759, 761, 762, 763,
504 764, 765, 765, 765, 765, 766, 766, 766, 766, 766,
505 766, 767, 769, 771, 771, 771, 771, 771, 771, 771,
507 771, 771, 771, 771, 771, 772, 773, 774, 775, 776,
508 777, 779, 780, 781, 782, 783, 784, 784, 785, 786,
509 788, 790, 792, 793, 795, 796, 797, 798, 799, 800,
510 801, 802, 803, 804, 805, 807, 809, 810, 811, 812,
511 813, 814, 816, 817, 818, 819, 821, 822, 824, 824,
512 825, 826, 827, 828, 830, 831, 832, 833, 834, 835,
513 836, 837, 838, 839, 841, 842, 843, 844, 845, 846,
514 847, 849, 851, 852, 853, 854, 855, 857, 857, 859,
515 861, 862, 863, 864, 865, 867, 869, 871, 873, 876,
516 878, 879, 880, 880, 880, 881, 882, 882, 882, 882,
518 882, 882, 882, 882, 882, 882, 882, 882, 882, 882,
519 882, 882, 882, 882, 882, 884, 886, 887, 888, 889,
520 890, 891, 892, 893, 894, 895, 897, 898, 899, 900,
521 902, 903, 904, 905, 907, 908, 909, 910, 911, 913,
522 915, 917, 918, 920, 921, 921, 923, 925, 926, 927,
523 928, 929, 930, 931, 932, 933, 934, 935, 936, 937,
524 939, 941, 942, 943, 944, 945, 946, 948, 950, 951,
525 952, 953, 954, 955, 956, 958, 961, 964, 967, 969,
526 970, 971, 972, 973, 974, 974, 974, 974, 974, 974,
527 974, 974, 974, 974, 974, 974, 974, 975, 976, 977,
529 978, 979, 980, 981, 982, 983, 984, 985, 986, 987,
530 989, 991, 993, 994, 995, 996, 997, 998, 999, 1000,
531 1001, 1002, 1003, 1004, 1006, 1008, 1009, 1011, 1012, 1014,
532 1015, 1016, 1017, 1019, 1020, 1021, 1022, 1024, 1026, 1028,
533 1030, 1032, 1034, 1035, 1036, 1036, 1036, 1036, 1036, 1036,
534 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036, 1036,
535 1036, 1036, 1036, 1038, 1039, 1041, 1043, 1045, 1046, 1047,
536 1048, 1049, 1050, 1052, 1053, 1054, 1056, 1057, 1058, 1059,
537 1060, 1062, 1063, 1065, 1066, 1068, 1069, 1070, 1070, 1070,
538 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070, 1070,
540 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1081,
541 1082, 1084, 1085, 1086, 1087, 1088, 1089, 1089, 1089, 1089,
542 1089, 1089, 1089, 1089, 1089, 1091, 1093, 1095, 1096, 1097,
543 1098, 1099, 1100, 1100, 1100, 1100, 1100, 1101, 1102, 1103,
544 1105, 1106, 1108, 1109, 1111, 1112, 1113, 1113
547 static yyconst int yy_ec[256] =
548 { 0,
549 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
550 1, 1, 4, 1, 1, 1, 1, 1, 1, 1,
551 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
552 1, 5, 6, 7, 6, 6, 8, 9, 10, 11,
553 12, 13, 14, 15, 16, 17, 18, 19, 19, 20,
554 20, 20, 20, 20, 20, 20, 20, 21, 22, 23,
555 24, 25, 26, 6, 27, 28, 29, 30, 31, 32,
556 33, 34, 35, 36, 36, 37, 38, 39, 40, 41,
557 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
558 1, 52, 1, 52, 6, 53, 27, 28, 29, 30,
560 31, 32, 33, 34, 35, 36, 36, 37, 38, 39,
561 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
562 50, 51, 1, 54, 1, 55, 1, 1, 1, 1,
563 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
564 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
565 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
566 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
567 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
568 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
569 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
571 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
572 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
573 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
574 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
575 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
576 1, 1, 1, 1, 1
579 static yyconst int yy_meta[56] =
580 { 0,
581 1, 2, 1, 1, 2, 3, 1, 1, 1, 1,
582 4, 1, 1, 1, 1, 1, 3, 1, 3, 3,
583 5, 1, 1, 6, 1, 7, 7, 7, 7, 7,
584 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
585 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,
586 7, 1, 8, 1, 1
589 static yyconst short int yy_base[861] =
590 { 0,
591 0, 0, 55, 0, 109, 110, 85, 89, 2036, 2013,
592 100, 127, 0, 0, 0, 0, 100, 104, 169, 0,
593 133, 138, 220, 0, 274, 279, 1993, 1978, 284, 286,
594 2014, 3224, 338, 140, 2002, 0, 392, 285, 302, 444,
595 292, 3224, 316, 304, 311, 318, 141, 363, 356, 3224,
596 372, 377, 383, 408, 1952, 1956, 1955, 1933, 135, 432,
597 412, 413, 445, 433, 438, 482, 534, 475, 129, 265,
598 137, 451, 282, 477, 305, 449, 474, 481, 146, 396,
599 499, 503, 482, 514, 536, 545, 86, 1939, 554, 1922,
600 253, 1937, 1916, 1915, 1897, 1883, 1886, 1873, 1873, 1841,
602 1836, 1841, 112, 154, 1841, 142, 508, 558, 562, 564,
603 566, 575, 568, 150, 573, 627, 681, 686, 115, 294,
604 260, 276, 394, 574, 692, 591, 705, 595, 632, 688,
605 1846, 1811, 1818, 0, 697, 1843, 707, 711, 3224, 717,
606 719, 721, 723, 730, 738, 742, 754, 1792, 1782, 1773,
607 1764, 324, 779, 0, 744, 752, 0, 1789, 831, 567,
608 766, 787, 883, 788, 811, 794, 1760, 914, 575, 812,
609 816, 966, 820, 826, 822, 840, 841, 847, 430, 3224,
610 837, 541, 865, 869, 878, 885, 902, 927, 875, 903,
611 934, 935, 947, 958, 948, 959, 1723, 960, 1719, 1725,
613 1713, 997, 1001, 1003, 1005, 0, 964, 987, 1013, 1014,
614 338, 1029, 1031, 255, 1030, 1037, 1041, 792, 603, 1042,
615 1067, 0, 959, 582, 848, 1043, 674, 1055, 712, 603,
616 708, 745, 739, 1059, 1008, 823, 1049, 1063, 1067, 1070,
617 887, 743, 1071, 1079, 1087, 1089, 1094, 1038, 1095, 1096,
618 1131, 1113, 1105, 1111, 1116, 1112, 1158, 1160, 1162, 1727,
619 1167, 1716, 1166, 1709, 1171, 1175, 1693, 1696, 1692, 1681,
620 351, 1685, 1657, 1654, 1635, 1616, 1597, 1587, 1570, 1573,
621 352, 1569, 1573, 1562, 1531, 1173, 1177, 3224, 1183, 1184,
622 1188, 1193, 1197, 1229, 1238, 408, 1240, 1541, 1242, 1247,
624 0, 1246, 1252, 1254, 1256, 1258, 1262, 1279, 0, 1263,
625 1517, 1267, 408, 1268, 639, 750, 556, 765, 0, 1273,
626 0, 1274, 1301, 1275, 0, 1296, 1317, 0, 1328, 1507,
627 1510, 1504, 1329, 1492, 1333, 1488, 1493, 1473, 1334, 1138,
628 972, 1318, 1342, 1343, 1503, 0, 0, 1350, 1402, 1358,
629 1357, 1371, 1335, 1364, 1378, 1388, 1389, 1433, 1400, 1485,
630 1444, 1416, 1454, 1407, 1447, 1418, 384, 1423, 1443, 1470,
631 1472, 1477, 1478, 1479, 1483, 1487, 1489, 1493, 1466, 1456,
632 1434, 1497, 1504, 1506, 1524, 1517, 1522, 1539, 1532, 1549,
633 1430, 1550, 1551, 1541, 1560, 905, 1564, 1566, 1186, 1574,
635 1140, 1543, 1578, 1548, 1579, 1594, 1558, 1280, 1371, 1595,
636 1580, 1427, 1598, 1590, 1313, 1600, 1606, 1596, 1614, 1648,
637 1615, 1622, 1624, 1664, 1641, 1621, 1643, 1629, 1646, 1647,
638 1414, 1677, 1690, 1404, 1400, 1402, 1391, 1370, 1357, 1366,
639 1344, 1344, 1691, 1348, 1341, 1320, 1304, 1281, 1281, 1262,
640 1692, 1246, 1253, 1697, 1235, 1698, 1702, 1703, 1704, 1710,
641 1708, 1240, 1227, 1709, 1716, 1714, 1735, 1736, 1718, 1747,
642 1763, 1770, 1772, 794, 681, 1316, 751, 1231, 1220, 1208,
643 1774, 1200, 1196, 1191, 3224, 0, 561, 1776, 1780, 1782,
644 823, 3224, 3224, 1834, 1865, 1788, 1896, 1789, 1807, 1826,
646 1948, 1979, 1800, 2010, 1795, 1781, 1816, 1827, 1173, 1175,
647 1835, 1836, 1847, 1853, 1854, 1866, 1165, 1767, 1881, 1908,
648 1909, 1916, 1939, 1940, 1980, 1632, 1847, 1900, 1992, 1774,
649 1869, 1781, 1905, 1943, 2016, 2017, 1957, 1800, 2029, 1928,
650 1848, 2021, 1960, 1814, 1874, 2022, 2005, 2053, 1154, 2023,
651 1165, 1151, 1146, 2052, 1128, 1122, 1094, 1102, 1077, 2066,
652 1064, 1068, 1056, 2075, 1058, 1037, 1046, 2076, 1036, 1025,
653 2082, 2083, 2084, 2092, 2088, 2090, 2096, 1024, 2097, 2098,
654 2105, 2113, 2125, 2121, 2129, 1883, 856, 973, 2142, 2151,
655 1010, 998, 977, 978, 2152, 3224, 1935, 2158, 2162, 2166,
657 2167, 0, 2182, 2189, 0, 2174, 2178, 2197, 2204, 2198,
658 0, 2208, 2219, 0, 2220, 2228, 2232, 2234, 2202, 2238,
659 2239, 2246, 2247, 2081, 2103, 2253, 2074, 2122, 2013, 2264,
660 2019, 2274, 2284, 2272, 2245, 2145, 2036, 2288, 2299, 2308,
661 2314, 2309, 2316, 2326, 953, 2318, 2330, 927, 2334, 919,
662 920, 877, 871, 861, 847, 843, 837, 2338, 824, 2343,
663 2351, 797, 764, 2353, 2358, 2368, 2370, 2376, 2383, 2363,
664 2372, 2393, 2384, 2388, 2400, 2407, 2408, 2412, 2422, 2426,
665 722, 688, 2430, 2437, 2445, 2449, 2454, 2461, 2465, 2467,
666 2472, 2476, 2483, 2487, 2491, 2492, 2498, 2499, 2503, 2390,
668 2177, 2483, 2507, 2235, 2477, 2487, 2513, 2486, 2522, 2531,
669 2533, 2537, 2548, 2557, 2568, 2583, 2542, 2543, 2552, 698,
670 682, 608, 553, 2553, 2563, 556, 2577, 533, 2589, 2595,
671 2597, 501, 2606, 2610, 2615, 2617, 2621, 2622, 2623, 2627,
672 2633, 2635, 500, 479, 2642, 2650, 2660, 2680, 2687, 2691,
673 2695, 2702, 0, 2706, 2710, 2717, 2732, 2733, 2748, 2752,
674 2759, 0, 2744, 2615, 2763, 2770, 2774, 2634, 2354, 2775,
675 2786, 2787, 2679, 447, 410, 2779, 2793, 2813, 416, 2817,
676 2819, 2824, 2828, 2829, 2833, 409, 373, 2840, 2846, 2856,
677 2866, 2882, 2726, 2850, 2878, 2902, 2903, 2913, 2909, 2874,
679 2588, 2915, 2924, 2928, 2687, 2806, 2839, 335, 2889, 2932,
680 2936, 2938, 2942, 2948, 314, 279, 2952, 2956, 2960, 2965,
681 2978, 2988, 2994, 2998, 3006, 3010, 3014, 258, 2971, 3016,
682 148, 119, 3018, 3020, 3024, 3028, 3030, 3040, 3050, 3060,
683 80, 3068, 3070, 3074, 3075, 3076, 3224, 3127, 3134, 3142,
684 3148, 3155, 3162, 3169, 3176, 3183, 3191, 3199, 3207, 3215
687 static yyconst short int yy_def[861] =
688 { 0,
689 847, 1, 847, 3, 1, 1, 1, 1, 1, 1,
690 1, 1, 1, 1, 1, 1, 1, 1, 1, 19,
691 1, 1, 847, 23, 1, 1, 1, 1, 1, 1,
692 847, 847, 847, 847, 847, 848, 849, 847, 847, 850,
693 847, 847, 847, 847, 847, 847, 851, 847, 851, 847,
694 847, 847, 847, 847, 848, 848, 848, 848, 848, 847,
695 33, 847, 847, 33, 852, 853, 853, 852, 68, 68,
696 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
697 68, 68, 68, 68, 33, 33, 848, 848, 33, 848,
698 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
700 848, 848, 848, 848, 848, 848, 854, 854, 854, 854,
701 854, 854, 33, 848, 33, 847, 855, 855, 118, 118,
702 118, 118, 118, 116, 33, 847, 847, 847, 848, 125,
703 848, 848, 848, 33, 847, 847, 847, 847, 847, 847,
704 847, 847, 847, 847, 847, 847, 847, 847, 847, 847,
705 847, 847, 847, 33, 847, 847, 848, 849, 849, 847,
706 159, 159, 159, 847, 847, 847, 850, 850, 847, 168,
707 168, 168, 847, 847, 847, 847, 847, 847, 851, 847,
708 851, 847, 847, 847, 851, 851, 847, 847, 847, 847,
709 847, 847, 847, 847, 847, 848, 848, 848, 848, 848,
711 848, 847, 847, 847, 847, 33, 33, 847, 847, 33,
712 847, 33, 847, 68, 847, 847, 847, 67, 67, 847,
713 847, 67, 67, 68, 68, 68, 68, 68, 68, 68,
714 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
715 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
716 68, 68, 68, 68, 68, 68, 33, 33, 33, 847,
717 33, 848, 848, 848, 33, 33, 848, 848, 848, 848,
718 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
719 848, 848, 848, 848, 848, 847, 854, 847, 854, 854,
720 854, 854, 854, 854, 33, 847, 33, 848, 33, 33,
722 116, 856, 856, 856, 856, 856, 856, 856, 116, 847,
723 118, 118, 118, 118, 118, 118, 118, 118, 116, 116,
724 125, 847, 847, 847, 125, 847, 847, 125, 125, 848,
725 848, 848, 847, 847, 847, 847, 847, 847, 847, 847,
726 159, 847, 159, 159, 857, 858, 859, 159, 159, 159,
727 847, 349, 847, 847, 168, 847, 168, 168, 168, 168,
728 168, 847, 360, 847, 851, 847, 847, 847, 847, 847,
729 847, 847, 847, 847, 847, 847, 848, 847, 848, 848,
730 848, 847, 847, 847, 847, 847, 847, 847, 847, 847,
731 847, 847, 847, 67, 847, 68, 68, 847, 68, 847,
733 68, 68, 68, 68, 68, 847, 68, 68, 68, 68,
734 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
735 68, 68, 68, 847, 68, 68, 68, 68, 68, 68,
736 847, 848, 847, 848, 848, 848, 848, 848, 848, 848,
737 848, 848, 848, 848, 848, 848, 848, 848, 848, 848,
738 848, 848, 848, 848, 848, 847, 854, 847, 854, 854,
739 854, 847, 848, 856, 856, 856, 856, 856, 856, 856,
740 847, 118, 847, 118, 118, 118, 118, 848, 848, 848,
741 847, 847, 847, 847, 847, 860, 847, 159, 159, 159,
742 847, 847, 847, 349, 849, 495, 495, 168, 168, 168,
744 360, 850, 502, 502, 847, 847, 847, 847, 848, 848,
745 848, 847, 847, 847, 847, 847, 847, 68, 847, 68,
746 68, 68, 847, 68, 847, 68, 68, 68, 847, 68,
747 68, 68, 68, 68, 68, 68, 68, 68, 847, 68,
748 68, 68, 68, 68, 68, 68, 68, 68, 847, 847,
749 848, 848, 848, 848, 848, 848, 848, 848, 848, 847,
750 848, 848, 848, 848, 848, 848, 848, 847, 848, 848,
751 848, 848, 847, 854, 854, 854, 854, 847, 848, 856,
752 856, 856, 856, 856, 847, 118, 118, 118, 118, 848,
753 848, 848, 847, 847, 847, 847, 159, 159, 159, 497,
755 497, 497, 349, 349, 497, 168, 168, 168, 504, 504,
756 504, 360, 360, 504, 848, 848, 847, 847, 68, 847,
757 847, 847, 847, 68, 68, 68, 68, 68, 68, 68,
758 68, 847, 847, 68, 68, 68, 68, 847, 68, 68,
759 68, 847, 68, 847, 847, 848, 848, 848, 847, 848,
760 848, 848, 848, 848, 848, 848, 848, 847, 848, 848,
761 848, 848, 848, 847, 847, 854, 854, 854, 847, 847,
762 847, 856, 856, 856, 856, 118, 118, 118, 847, 847,
763 848, 848, 847, 847, 497, 497, 497, 497, 497, 495,
764 504, 504, 504, 504, 504, 502, 847, 847, 847, 68,
766 68, 68, 847, 68, 68, 68, 847, 68, 847, 68,
767 68, 68, 847, 847, 847, 847, 847, 847, 847, 848,
768 848, 848, 848, 848, 848, 848, 848, 848, 848, 847,
769 847, 848, 848, 854, 847, 847, 856, 856, 856, 847,
770 847, 847, 848, 848, 497, 497, 497, 497, 497, 497,
771 497, 497, 349, 504, 504, 504, 504, 504, 504, 504,
772 504, 360, 68, 68, 68, 68, 68, 68, 68, 847,
773 847, 847, 848, 848, 848, 848, 847, 847, 848, 847,
774 848, 847, 848, 847, 854, 848, 848, 497, 497, 497,
775 497, 497, 497, 504, 504, 504, 504, 504, 504, 847,
777 68, 847, 847, 847, 68, 68, 847, 848, 848, 847,
778 848, 847, 847, 847, 848, 848, 497, 497, 497, 497,
779 504, 504, 504, 504, 68, 68, 68, 848, 847, 847,
780 848, 848, 497, 497, 504, 504, 847, 847, 847, 848,
781 848, 848, 847, 848, 847, 847, 0, 847, 847, 847,
782 847, 847, 847, 847, 847, 847, 847, 847, 847, 847
785 static yyconst short int yy_nxt[3280] =
786 { 0,
787 32, 33, 34, 35, 33, 36, 37, 38, 39, 40,
788 41, 42, 43, 44, 45, 46, 47, 48, 49, 49,
789 50, 51, 52, 53, 54, 36, 36, 55, 36, 36,
790 36, 56, 36, 36, 36, 36, 36, 36, 36, 36,
791 36, 36, 36, 36, 57, 58, 36, 59, 36, 36,
792 36, 60, 61, 62, 63, 32, 64, 34, 35, 64,
793 65, 37, 38, 39, 40, 41, 42, 43, 44, 45,
794 46, 66, 48, 67, 67, 50, 51, 52, 53, 54,
795 65, 68, 69, 70, 71, 72, 73, 65, 65, 74,
796 65, 75, 65, 76, 77, 78, 79, 80, 81, 82,
798 83, 65, 84, 65, 65, 65, 60, 85, 62, 63,
799 86, 86, 844, 86, 86, 90, 91, 262, 92, 90,
800 91, 93, 92, 94, 263, 93, 97, 94, 95, 105,
801 98, 106, 95, 105, 113, 106, 99, 113, 100, 113,
802 101, 156, 113, 102, 156, 103, 104, 842, 87, 87,
803 199, 180, 280, 97, 313, 88, 88, 98, 214, 181,
804 181, 89, 89, 99, 311, 100, 214, 101, 200, 201,
805 102, 214, 103, 104, 107, 214, 228, 114, 226, 229,
806 281, 284, 114, 298, 282, 115, 841, 285, 214, 198,
807 115, 245, 156, 182, 107, 107, 108, 107, 107, 107,
809 109, 107, 107, 107, 107, 107, 107, 107, 107, 107,
810 107, 107, 107, 110, 111, 107, 112, 107, 107, 107,
811 32, 116, 34, 35, 116, 36, 37, 38, 39, 40,
812 41, 42, 43, 44, 45, 46, 47, 48, 49, 49,
813 50, 51, 52, 53, 54, 117, 117, 118, 117, 117,
814 117, 119, 117, 117, 117, 117, 117, 117, 117, 117,
815 117, 117, 117, 117, 120, 121, 122, 123, 117, 117,
816 117, 60, 124, 62, 63, 125, 126, 127, 125, 268,
817 125, 126, 127, 125, 214, 86, 164, 86, 86, 164,
818 86, 227, 197, 173, 214, 128, 173, 214, 315, 129,
820 128, 840, 316, 165, 129, 176, 165, 214, 176, 311,
821 166, 214, 177, 832, 132, 177, 132, 174, 114, 178,
822 174, 233, 178, 114, 214, 311, 130, 133, 175, 133,
823 88, 130, 88, 314, 214, 237, 89, 164, 89, 134,
824 135, 136, 134, 311, 173, 137, 138, 214, 831, 139,
825 140, 141, 142, 143, 165, 144, 176, 337, 338, 135,
826 145, 146, 147, 177, 183, 148, 180, 183, 174, 149,
827 178, 391, 181, 156, 185, 185, 156, 335, 187, 828,
828 184, 187, 150, 151, 191, 152, 186, 191, 450, 153,
829 154, 155, 153, 159, 451, 439, 159, 440, 160, 188,
831 189, 190, 505, 505, 816, 189, 192, 193, 182, 194,
832 161, 162, 194, 206, 208, 183, 206, 208, 162, 162,
833 162, 162, 162, 162, 156, 214, 246, 317, 318, 187,
834 190, 193, 195, 202, 210, 191, 202, 210, 214, 213,
835 180, 462, 213, 311, 163, 168, 202, 335, 168, 202,
836 472, 815, 811, 169, 203, 204, 205, 311, 215, 809,
837 194, 216, 170, 171, 207, 208, 209, 203, 204, 205,
838 171, 171, 171, 171, 171, 171, 213, 211, 214, 213,
839 214, 808, 182, 217, 202, 212, 217, 230, 238, 231,
840 213, 214, 180, 214, 239, 215, 172, 202, 216, 232,
842 219, 219, 215, 214, 224, 220, 214, 242, 234, 286,
843 214, 214, 286, 787, 240, 235, 214, 225, 241, 214,
844 253, 236, 254, 243, 214, 247, 244, 213, 214, 248,
845 786, 288, 214, 249, 221, 217, 250, 257, 217, 783,
846 257, 214, 251, 214, 180, 252, 259, 255, 256, 259,
847 219, 180, 222, 222, 215, 265, 214, 220, 265, 286,
848 286, 781, 286, 286, 223, 286, 286, 286, 286, 295,
849 286, 485, 295, 345, 299, 319, 286, 299, 319, 286,
850 211, 288, 779, 776, 167, 288, 221, 288, 258, 288,
851 476, 260, 326, 182, 346, 326, 326, 261, 288, 326,
853 260, 290, 346, 291, 292, 311, 266, 289, 293, 294,
854 286, 396, 296, 487, 286, 347, 286, 296, 286, 218,
855 297, 394, 394, 347, 214, 300, 320, 286, 301, 135,
856 136, 301, 214, 327, 137, 138, 327, 775, 139, 140,
857 141, 142, 143, 326, 144, 214, 402, 326, 135, 145,
858 146, 147, 302, 302, 303, 302, 302, 302, 304, 302,
859 302, 302, 302, 302, 302, 302, 302, 302, 302, 302,
860 302, 305, 306, 307, 308, 302, 302, 302, 153, 309,
861 155, 153, 310, 474, 327, 310, 157, 310, 311, 328,
862 310, 157, 328, 321, 322, 323, 321, 157, 156, 157,
864 157, 156, 157, 214, 157, 157, 327, 135, 164, 327,
865 399, 164, 165, 322, 774, 165, 214, 324, 174, 166,
866 176, 174, 177, 176, 178, 177, 587, 178, 773, 175,
867 311, 183, 744, 310, 183, 312, 296, 403, 310, 187,
868 329, 214, 187, 191, 325, 208, 191, 184, 208, 156,
869 214, 401, 743, 156, 214, 194, 156, 327, 194, 164,
870 188, 189, 190, 165, 189, 192, 193, 348, 214, 174,
871 348, 176, 214, 177, 214, 178, 190, 193, 195, 404,
872 339, 405, 183, 339, 589, 414, 475, 214, 350, 164,
873 187, 350, 164, 351, 191, 353, 208, 209, 353, 311,
875 311, 203, 204, 205, 156, 344, 194, 733, 218, 477,
876 218, 218, 165, 359, 311, 165, 359, 361, 349, 166,
877 361, 173, 218, 364, 173, 362, 364, 174, 586, 345,
878 174, 339, 341, 485, 358, 341, 732, 342, 175, 352,
879 164, 176, 177, 311, 176, 177, 353, 180, 178, 343,
880 344, 178, 214, 408, 729, 365, 365, 344, 344, 344,
881 344, 344, 344, 165, 360, 214, 183, 186, 363, 183,
882 366, 728, 173, 366, 364, 487, 370, 214, 174, 370,
883 397, 727, 184, 163, 159, 726, 677, 159, 180, 182,
884 214, 725, 176, 177, 181, 180, 185, 185, 367, 178,
886 367, 161, 162, 187, 371, 311, 187, 371, 186, 162,
887 162, 162, 162, 162, 162, 355, 214, 183, 355, 724,
888 413, 366, 723, 356, 188, 189, 190, 370, 368, 214,
889 182, 368, 357, 358, 214, 191, 372, 182, 191, 372,
890 358, 358, 358, 358, 358, 358, 722, 518, 373, 374,
891 369, 373, 374, 721, 187, 371, 189, 192, 193, 194,
892 376, 378, 194, 376, 378, 206, 172, 168, 206, 720,
893 168, 375, 367, 488, 367, 218, 488, 218, 218, 368,
894 190, 193, 195, 717, 170, 171, 191, 372, 208, 218,
895 489, 208, 171, 171, 171, 171, 171, 171, 202, 373,
897 374, 202, 382, 678, 385, 382, 388, 385, 684, 388,
898 194, 376, 378, 683, 390, 210, 207, 390, 210, 203,
899 204, 205, 311, 383, 384, 384, 386, 387, 387, 389,
900 210, 392, 213, 210, 392, 213, 682, 214, 393, 208,
901 209, 393, 217, 395, 398, 217, 395, 398, 681, 202,
902 214, 215, 407, 382, 216, 385, 400, 388, 211, 400,
903 406, 215, 670, 406, 220, 390, 212, 214, 217, 663,
904 662, 217, 214, 211, 421, 409, 661, 180, 214, 660,
905 214, 212, 392, 213, 214, 214, 659, 215, 214, 393,
906 220, 214, 214, 217, 395, 398, 214, 214, 657, 214,
908 214, 214, 656, 410, 411, 214, 655, 400, 214, 214,
909 415, 406, 214, 214, 412, 416, 214, 418, 214, 221,
910 654, 214, 417, 214, 214, 214, 423, 422, 653, 214,
911 652, 214, 424, 419, 214, 424, 214, 214, 214, 425,
912 214, 214, 214, 420, 345, 214, 428, 214, 485, 426,
913 429, 427, 651, 214, 214, 214, 430, 650, 214, 210,
914 214, 257, 210, 259, 257, 486, 259, 433, 259, 214,
915 433, 259, 259, 214, 286, 259, 265, 286, 286, 265,
916 521, 286, 214, 424, 456, 286, 486, 456, 286, 458,
917 487, 648, 458, 647, 286, 646, 288, 286, 286, 645,
919 288, 286, 211, 618, 211, 616, 288, 288, 260, 615,
920 212, 288, 258, 260, 261, 214, 288, 260, 433, 261,
921 288, 260, 520, 261, 595, 286, 457, 266, 214, 286,
922 286, 460, 594, 286, 593, 456, 286, 459, 592, 295,
923 458, 295, 295, 295, 295, 286, 295, 310, 299, 286,
924 310, 299, 288, 310, 591, 310, 310, 310, 310, 310,
925 310, 590, 310, 310, 310, 579, 310, 310, 471, 473,
926 578, 471, 473, 461, 319, 326, 327, 319, 326, 327,
927 310, 286, 296, 310, 296, 572, 296, 570, 468, 569,
928 297, 296, 297, 465, 297, 466, 467, 326, 310, 300,
930 326, 464, 327, 135, 310, 327, 310, 567, 310, 214,
931 310, 566, 469, 470, 310, 310, 311, 311, 327, 471,
932 473, 327, 527, 565, 345, 320, 326, 327, 485, 328,
933 376, 310, 328, 376, 378, 339, 353, 378, 339, 353,
934 564, 534, 214, 490, 350, 346, 490, 350, 326, 351,
935 563, 490, 588, 327, 490, 214, 203, 204, 205, 350,
936 489, 344, 350, 345, 351, 311, 347, 485, 489, 327,
937 487, 562, 497, 167, 485, 497, 344, 351, 561, 498,
938 329, 376, 498, 559, 486, 378, 339, 353, 558, 496,
939 500, 486, 557, 500, 349, 352, 499, 167, 485, 556,
941 214, 500, 349, 494, 500, 347, 494, 499, 364, 487,
942 352, 364, 486, 214, 555, 346, 487, 528, 499, 366,
943 495, 496, 366, 352, 368, 167, 485, 368, 496, 496,
944 496, 496, 496, 496, 361, 554, 347, 361, 553, 552,
945 487, 360, 362, 486, 506, 361, 369, 506, 361, 551,
946 549, 358, 360, 362, 349, 504, 214, 180, 504, 364,
947 517, 531, 358, 362, 347, 365, 365, 511, 487, 214,
948 366, 370, 503, 371, 370, 368, 371, 186, 372, 373,
949 374, 372, 373, 374, 507, 363, 501, 507, 376, 501,
950 508, 376, 510, 508, 378, 506, 363, 378, 382, 182,
952 509, 382, 375, 502, 503, 512, 363, 513, 512, 491,
953 513, 503, 503, 503, 503, 503, 503, 484, 514, 383,
954 384, 514, 370, 515, 371, 385, 515, 483, 385, 372,
955 373, 374, 482, 516, 481, 507, 516, 360, 480, 376,
956 388, 508, 479, 388, 478, 378, 384, 386, 387, 382,
957 390, 392, 393, 390, 392, 393, 512, 218, 513, 394,
958 394, 395, 387, 389, 395, 519, 311, 398, 519, 514,
959 398, 463, 214, 522, 515, 400, 385, 214, 400, 523,
960 525, 455, 523, 525, 516, 214, 215, 214, 526, 216,
961 214, 388, 524, 214, 215, 406, 529, 216, 406, 529,
963 214, 390, 392, 393, 454, 453, 214, 214, 214, 214,
964 530, 452, 395, 449, 215, 448, 519, 216, 398, 214,
965 214, 214, 214, 447, 214, 214, 400, 214, 532, 214,
966 523, 525, 214, 533, 446, 214, 535, 214, 214, 536,
967 214, 537, 214, 214, 214, 540, 406, 529, 214, 539,
968 214, 214, 539, 214, 445, 544, 214, 214, 214, 538,
969 541, 214, 542, 214, 214, 424, 214, 546, 424, 543,
970 214, 214, 214, 545, 624, 214, 214, 214, 550, 444,
971 548, 550, 547, 214, 215, 214, 443, 216, 214, 214,
972 214, 433, 560, 568, 433, 560, 568, 442, 508, 456,
974 539, 508, 456, 573, 458, 286, 573, 458, 286, 286,
975 471, 286, 286, 471, 286, 473, 424, 310, 473, 310,
976 310, 288, 310, 441, 438, 288, 288, 288, 437, 550,
977 436, 288, 574, 288, 571, 435, 310, 310, 575, 310,
978 310, 577, 433, 560, 568, 434, 576, 432, 310, 508,
979 456, 310, 583, 431, 573, 458, 286, 381, 580, 380,
980 286, 471, 286, 379, 471, 377, 473, 471, 310, 354,
981 310, 585, 582, 473, 585, 508, 473, 597, 508, 581,
982 597, 599, 506, 599, 599, 506, 599, 310, 310, 604,
983 606, 584, 604, 606, 598, 340, 214, 619, 598, 310,
985 598, 613, 336, 214, 613, 180, 604, 607, 608, 214,
986 214, 608, 335, 505, 505, 471, 627, 507, 613, 311,
987 507, 334, 585, 629, 473, 607, 508, 608, 508, 214,
988 608, 508, 349, 506, 349, 600, 617, 512, 600, 617,
989 512, 333, 635, 214, 607, 135, 332, 182, 513, 331,
990 640, 513, 601, 602, 514, 515, 214, 514, 515, 360,
991 602, 602, 602, 602, 602, 602, 603, 516, 507, 603,
992 516, 340, 330, 625, 637, 283, 214, 214, 360, 508,
993 279, 278, 519, 603, 604, 519, 277, 617, 512, 214,
994 214, 604, 604, 604, 604, 604, 604, 605, 214, 513,
996 605, 215, 351, 214, 216, 514, 515, 276, 628, 620,
997 621, 214, 620, 621, 602, 602, 641, 622, 516, 676,
998 622, 275, 602, 602, 602, 602, 602, 602, 274, 214,
999 626, 273, 311, 519, 214, 630, 597, 214, 214, 597,
1000 523, 623, 214, 523, 623, 214, 272, 214, 352, 609,
1001 214, 214, 609, 598, 271, 270, 636, 214, 214, 215,
1002 620, 621, 216, 269, 267, 264, 610, 611, 622, 214,
1003 214, 199, 214, 631, 611, 611, 611, 611, 611, 611,
1004 612, 525, 214, 612, 525, 214, 214, 634, 354, 214,
1005 639, 523, 623, 529, 198, 197, 529, 612, 613, 214,
1007 215, 196, 214, 216, 135, 613, 613, 613, 613, 613,
1008 613, 614, 215, 847, 614, 216, 131, 632, 633, 362,
1009 632, 633, 638, 642, 550, 638, 642, 550, 611, 611,
1010 539, 131, 525, 539, 214, 643, 611, 611, 611, 611,
1011 611, 611, 214, 96, 529, 214, 214, 214, 708, 215,
1012 214, 214, 216, 649, 644, 214, 649, 644, 214, 214,
1013 706, 214, 363, 214, 214, 214, 96, 560, 632, 633,
1014 560, 847, 712, 638, 642, 550, 658, 568, 214, 658,
1015 568, 539, 214, 664, 665, 573, 664, 665, 573, 286,
1016 847, 286, 286, 286, 286, 214, 286, 669, 671, 585,
1018 669, 671, 585, 214, 649, 644, 310, 288, 704, 310,
1019 214, 288, 847, 288, 310, 288, 214, 310, 560, 288,
1020 668, 701, 310, 214, 667, 310, 310, 658, 568, 310,
1021 585, 847, 214, 585, 664, 665, 573, 847, 666, 672,
1022 286, 847, 286, 679, 286, 214, 679, 702, 669, 671,
1023 585, 214, 680, 617, 675, 680, 617, 310, 673, 599,
1024 705, 674, 599, 599, 214, 310, 599, 685, 687, 847,
1025 685, 687, 342, 310, 214, 606, 598, 310, 606, 608,
1026 598, 585, 608, 689, 686, 688, 689, 214, 351, 711,
1027 497, 311, 607, 497, 679, 351, 607, 847, 608, 693,
1029 690, 608, 693, 680, 617, 691, 214, 496, 691, 695,
1030 349, 847, 695, 356, 349, 607, 694, 362, 349, 764,
1031 504, 697, 692, 504, 697, 847, 696, 847, 362, 698,
1032 360, 214, 698, 617, 352, 699, 617, 503, 699, 620,
1033 621, 352, 620, 621, 214, 700, 847, 622, 623, 360,
1034 622, 623, 847, 847, 703, 847, 360, 703, 215, 215,
1035 363, 216, 216, 766, 214, 707, 215, 215, 707, 216,
1036 216, 363, 697, 709, 214, 632, 709, 214, 632, 847,
1037 698, 847, 214, 710, 617, 633, 699, 214, 633, 638,
1038 620, 621, 638, 214, 215, 214, 847, 216, 622, 623,
1040 713, 214, 847, 713, 215, 703, 214, 216, 215, 714,
1041 642, 216, 714, 642, 214, 715, 707, 716, 715, 718,
1042 716, 847, 718, 847, 709, 847, 632, 644, 214, 215,
1043 644, 719, 216, 847, 719, 649, 633, 214, 649, 658,
1044 638, 214, 658, 214, 730, 214, 215, 730, 847, 216,
1045 214, 713, 731, 847, 664, 731, 214, 664, 214, 665,
1046 714, 642, 665, 847, 671, 847, 715, 671, 716, 286,
1047 718, 735, 286, 671, 735, 847, 671, 736, 644, 847,
1048 736, 847, 719, 214, 669, 310, 649, 669, 310, 310,
1049 658, 288, 310, 288, 310, 730, 806, 310, 734, 288,
1051 847, 679, 847, 731, 679, 664, 288, 847, 740, 741,
1052 665, 740, 741, 742, 738, 671, 742, 847, 739, 214,
1053 286, 847, 735, 679, 671, 847, 679, 680, 736, 737,
1054 680, 697, 214, 763, 697, 669, 310, 847, 698, 847,
1055 310, 698, 847, 847, 847, 310, 745, 847, 847, 745,
1056 747, 342, 679, 747, 847, 749, 311, 311, 749, 740,
1057 741, 311, 749, 746, 742, 749, 751, 748, 753, 751,
1058 847, 753, 750, 754, 679, 847, 754, 756, 680, 750,
1059 756, 356, 697, 752, 758, 753, 847, 758, 758, 698,
1060 755, 758, 760, 762, 757, 760, 762, 349, 847, 697,
1062 698, 759, 697, 698, 699, 759, 214, 699, 703, 761,
1063 762, 703, 214, 765, 707, 214, 214, 707, 847, 214,
1064 767, 768, 847, 709, 360, 214, 709, 215, 214, 214,
1065 216, 769, 770, 215, 771, 770, 216, 771, 772, 847,
1066 847, 772, 215, 718, 718, 216, 718, 718, 847, 713,
1067 697, 698, 713, 719, 777, 699, 719, 777, 714, 703,
1068 214, 714, 214, 847, 778, 707, 214, 778, 215, 715,
1069 847, 216, 715, 214, 709, 214, 847, 215, 780, 214,
1070 216, 780, 847, 770, 716, 771, 847, 716, 215, 772,
1071 782, 216, 847, 782, 718, 718, 730, 847, 731, 730,
1073 713, 731, 847, 215, 719, 777, 216, 784, 847, 714,
1074 784, 286, 847, 847, 286, 778, 735, 214, 736, 735,
1075 715, 736, 740, 741, 742, 740, 741, 742, 740, 780,
1076 214, 740, 825, 288, 741, 716, 742, 741, 288, 742,
1077 288, 782, 847, 745, 214, 801, 745, 730, 342, 731,
1078 847, 745, 785, 847, 745, 847, 342, 214, 784, 847,
1079 746, 788, 286, 214, 788, 847, 342, 735, 746, 736,
1080 847, 847, 847, 740, 741, 742, 214, 805, 789, 740,
1081 807, 788, 847, 807, 788, 741, 342, 742, 790, 847,
1082 847, 790, 790, 342, 349, 790, 792, 342, 789, 792,
1084 847, 342, 349, 792, 847, 791, 792, 754, 342, 791,
1085 754, 754, 349, 793, 754, 356, 214, 826, 794, 356,
1086 793, 794, 847, 847, 755, 847, 356, 819, 755, 214,
1087 819, 807, 349, 794, 796, 795, 794, 796, 847, 349,
1088 847, 356, 356, 349, 820, 800, 847, 349, 800, 796,
1089 795, 797, 796, 798, 349, 847, 798, 356, 360, 847,
1090 798, 356, 360, 798, 802, 847, 797, 802, 356, 360,
1091 799, 803, 847, 214, 803, 804, 770, 799, 804, 770,
1092 810, 847, 847, 810, 360, 360, 214, 771, 772, 847,
1093 771, 772, 214, 847, 777, 215, 800, 777, 216, 214,
1095 360, 847, 847, 214, 360, 214, 215, 215, 847, 216,
1096 216, 360, 214, 847, 778, 802, 214, 778, 780, 847,
1097 812, 780, 803, 812, 847, 782, 804, 770, 782, 813,
1098 784, 810, 813, 784, 814, 214, 827, 814, 771, 772,
1099 807, 817, 847, 807, 817, 777, 342, 817, 214, 847,
1100 817, 821, 342, 847, 821, 847, 288, 600, 818, 356,
1101 600, 847, 342, 847, 818, 778, 847, 600, 822, 780,
1102 600, 812, 342, 847, 601, 800, 782, 847, 800, 821,
1103 813, 784, 821, 600, 601, 814, 600, 356, 342, 847,
1104 829, 807, 349, 829, 215, 847, 822, 216, 349, 847,
1106 601, 847, 360, 609, 609, 847, 609, 609, 349, 847,
1107 823, 356, 356, 823, 609, 847, 802, 609, 349, 802,
1108 610, 610, 356, 847, 847, 803, 800, 824, 803, 804,
1109 360, 610, 804, 810, 349, 215, 810, 830, 216, 812,
1110 830, 829, 812, 813, 215, 847, 813, 216, 215, 814,
1111 847, 216, 814, 685, 360, 360, 685, 685, 342, 847,
1112 685, 833, 342, 847, 833, 360, 833, 802, 847, 833,
1113 686, 288, 829, 847, 686, 829, 803, 847, 834, 691,
1114 804, 847, 691, 834, 810, 847, 847, 356, 830, 691,
1115 812, 847, 691, 847, 813, 835, 692, 356, 835, 835,
1117 814, 847, 835, 847, 349, 847, 692, 837, 349, 847,
1118 837, 838, 836, 847, 838, 839, 836, 830, 839, 751,
1119 830, 751, 751, 829, 751, 760, 847, 847, 760, 760,
1120 360, 837, 760, 847, 837, 214, 752, 847, 752, 214,
1121 360, 838, 761, 214, 838, 847, 761, 847, 214, 847,
1122 215, 839, 214, 216, 839, 847, 214, 847, 837, 847,
1123 215, 843, 838, 216, 843, 847, 839, 847, 830, 845,
1124 215, 843, 845, 216, 843, 846, 845, 846, 846, 845,
1125 846, 847, 837, 847, 847, 847, 847, 847, 847, 847,
1126 847, 847, 838, 847, 847, 847, 847, 847, 847, 847,
1128 847, 847, 839, 847, 847, 847, 847, 847, 847, 847,
1129 847, 847, 843, 847, 847, 847, 847, 847, 847, 847,
1130 845, 847, 843, 847, 847, 847, 846, 845, 846, 157,
1131 847, 847, 847, 157, 158, 158, 158, 158, 158, 158,
1132 158, 158, 167, 167, 167, 167, 167, 167, 167, 167,
1133 179, 179, 847, 847, 179, 179, 214, 214, 847, 214,
1134 214, 214, 214, 218, 218, 218, 218, 218, 218, 218,
1135 287, 287, 847, 847, 287, 287, 287, 311, 311, 847,
1136 847, 847, 311, 311, 302, 847, 847, 847, 847, 302,
1137 302, 345, 345, 345, 345, 345, 345, 345, 345, 492,
1139 492, 847, 847, 492, 492, 847, 492, 493, 493, 847,
1140 847, 493, 493, 847, 493, 596, 596, 847, 847, 596,
1141 596, 847, 596, 31, 847, 847, 847, 847, 847, 847,
1142 847, 847, 847, 847, 847, 847, 847, 847, 847, 847,
1143 847, 847, 847, 847, 847, 847, 847, 847, 847, 847,
1144 847, 847, 847, 847, 847, 847, 847, 847, 847, 847,
1145 847, 847, 847, 847, 847, 847, 847, 847, 847, 847,
1146 847, 847, 847, 847, 847, 847, 847, 847, 847
1149 static yyconst short int yy_chk[3280] =
1150 { 0,
1151 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1152 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1153 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1154 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1155 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1156 1, 1, 1, 1, 1, 3, 3, 3, 3, 3,
1157 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1158 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1159 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1160 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1162 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1163 5, 6, 841, 5, 6, 7, 7, 87, 7, 8,
1164 8, 7, 8, 7, 87, 8, 11, 8, 7, 17,
1165 11, 17, 8, 18, 21, 18, 11, 21, 11, 22,
1166 11, 34, 22, 11, 34, 11, 11, 832, 5, 6,
1167 103, 47, 103, 12, 119, 5, 6, 12, 69, 47,
1168 47, 5, 6, 12, 119, 12, 71, 12, 59, 59,
1169 12, 69, 12, 12, 19, 79, 71, 21, 69, 71,
1170 104, 106, 22, 114, 104, 21, 831, 106, 79, 114,
1171 22, 79, 34, 47, 19, 19, 19, 19, 19, 19,
1173 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1174 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1175 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1176 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1177 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1178 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1179 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1180 23, 23, 23, 23, 23, 25, 25, 25, 25, 91,
1181 26, 26, 26, 26, 214, 29, 38, 30, 29, 38,
1182 30, 70, 91, 41, 70, 25, 41, 214, 121, 25,
1184 26, 828, 122, 39, 26, 44, 39, 70, 44, 121,
1185 39, 73, 45, 816, 29, 45, 30, 43, 25, 46,
1186 43, 73, 46, 26, 73, 122, 25, 29, 43, 30,
1187 29, 26, 30, 120, 75, 75, 29, 38, 30, 33,
1188 33, 33, 33, 120, 41, 33, 33, 75, 815, 33,
1189 33, 33, 33, 33, 39, 33, 44, 152, 152, 33,
1190 33, 33, 33, 45, 48, 33, 49, 48, 43, 33,
1191 46, 211, 49, 51, 49, 49, 51, 211, 52, 808,
1192 48, 52, 33, 33, 53, 33, 49, 53, 281, 33,
1193 33, 33, 33, 37, 281, 271, 37, 271, 37, 52,
1195 52, 52, 367, 367, 787, 53, 53, 53, 49, 54,
1196 37, 37, 54, 61, 62, 48, 61, 62, 37, 37,
1197 37, 37, 37, 37, 51, 80, 80, 123, 123, 52,
1198 54, 54, 54, 60, 64, 53, 60, 64, 80, 65,
1199 179, 296, 65, 123, 37, 40, 63, 296, 40, 63,
1200 313, 786, 779, 40, 60, 60, 60, 313, 65, 775,
1201 54, 65, 40, 40, 61, 62, 62, 63, 63, 63,
1202 40, 40, 40, 40, 40, 40, 68, 64, 76, 68,
1203 72, 774, 179, 66, 60, 64, 66, 72, 76, 72,
1204 65, 76, 66, 72, 76, 68, 40, 63, 68, 72,
1206 66, 66, 66, 77, 68, 66, 74, 78, 74, 107,
1207 78, 83, 107, 744, 77, 74, 77, 68, 77, 74,
1208 83, 74, 83, 78, 83, 81, 78, 68, 81, 81,
1209 743, 107, 82, 81, 66, 67, 82, 85, 67, 732,
1210 85, 81, 82, 84, 67, 82, 86, 84, 84, 86,
1211 67, 182, 67, 67, 67, 89, 84, 67, 89, 108,
1212 107, 728, 108, 109, 67, 110, 109, 111, 110, 113,
1213 111, 487, 113, 160, 115, 124, 112, 115, 124, 112,
1214 85, 108, 726, 723, 169, 109, 67, 110, 85, 111,
1215 317, 86, 126, 182, 160, 126, 128, 86, 112, 128,
1217 89, 109, 169, 110, 111, 317, 89, 108, 112, 112,
1218 108, 224, 113, 487, 109, 160, 110, 115, 111, 219,
1219 113, 219, 219, 169, 224, 115, 124, 112, 116, 116,
1220 116, 116, 230, 129, 116, 116, 129, 722, 116, 116,
1221 116, 116, 116, 126, 116, 230, 230, 128, 116, 116,
1222 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
1223 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
1224 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
1225 116, 116, 117, 315, 129, 117, 117, 118, 315, 130,
1226 118, 118, 130, 125, 125, 125, 125, 117, 135, 117,
1228 117, 135, 118, 227, 118, 118, 127, 127, 137, 127,
1229 227, 137, 138, 125, 721, 138, 227, 125, 140, 138,
1230 141, 140, 142, 141, 143, 142, 475, 143, 720, 140,
1231 475, 144, 682, 117, 144, 118, 125, 231, 118, 145,
1232 130, 229, 145, 146, 125, 155, 146, 144, 155, 135,
1233 231, 229, 681, 156, 229, 147, 156, 127, 147, 137,
1234 145, 145, 145, 138, 146, 146, 146, 161, 233, 140,
1235 161, 141, 242, 142, 232, 143, 147, 147, 147, 232,
1236 153, 233, 144, 153, 477, 242, 316, 232, 162, 164,
1237 145, 162, 164, 162, 146, 166, 155, 155, 166, 316,
1239 477, 153, 153, 153, 156, 162, 147, 663, 218, 318,
1240 218, 218, 165, 170, 318, 165, 170, 171, 161, 165,
1241 171, 173, 218, 175, 173, 171, 175, 174, 474, 491,
1242 174, 153, 159, 491, 171, 159, 662, 159, 174, 162,
1243 164, 176, 177, 474, 176, 177, 166, 181, 178, 159,
1244 159, 178, 236, 236, 659, 181, 181, 159, 159, 159,
1245 159, 159, 159, 165, 170, 236, 183, 181, 171, 183,
1246 184, 657, 173, 184, 175, 491, 189, 225, 174, 189,
1247 225, 656, 183, 159, 163, 655, 587, 163, 185, 181,
1248 225, 654, 176, 177, 185, 186, 185, 185, 186, 178,
1250 186, 163, 163, 187, 190, 587, 187, 190, 185, 163,
1251 163, 163, 163, 163, 163, 168, 241, 183, 168, 653,
1252 241, 184, 652, 168, 187, 187, 187, 189, 188, 241,
1253 185, 188, 168, 168, 396, 191, 192, 186, 191, 192,
1254 168, 168, 168, 168, 168, 168, 651, 396, 193, 195,
1255 188, 193, 195, 650, 187, 190, 191, 191, 191, 194,
1256 196, 198, 194, 196, 198, 207, 168, 172, 207, 648,
1257 172, 195, 223, 341, 223, 223, 341, 223, 223, 188,
1258 194, 194, 194, 645, 172, 172, 191, 192, 208, 223,
1259 341, 208, 172, 172, 172, 172, 172, 172, 202, 193,
1261 195, 202, 203, 588, 204, 203, 205, 204, 594, 205,
1262 194, 196, 198, 593, 209, 210, 207, 209, 210, 202,
1263 202, 202, 588, 203, 203, 204, 204, 204, 205, 205,
1264 212, 215, 213, 212, 215, 213, 592, 235, 216, 208,
1265 208, 216, 217, 220, 226, 217, 220, 226, 591, 202,
1266 235, 213, 235, 203, 213, 204, 228, 205, 210, 228,
1267 234, 217, 578, 234, 217, 209, 210, 248, 221, 570,
1268 569, 221, 226, 212, 248, 237, 567, 221, 237, 566,
1269 248, 212, 215, 213, 228, 226, 565, 221, 234, 216,
1270 221, 237, 238, 217, 220, 226, 239, 228, 563, 240,
1272 243, 234, 562, 238, 239, 238, 561, 228, 244, 239,
1273 243, 234, 240, 243, 240, 244, 245, 245, 246, 221,
1274 559, 244, 244, 247, 249, 250, 250, 249, 558, 245,
1275 557, 246, 251, 246, 253, 251, 247, 249, 250, 252,
1276 254, 256, 252, 247, 340, 255, 255, 253, 340, 253,
1277 255, 254, 556, 254, 256, 252, 256, 555, 255, 257,
1278 251, 258, 257, 259, 258, 340, 259, 263, 261, 401,
1279 263, 261, 265, 251, 286, 265, 266, 286, 287, 266,
1280 401, 287, 401, 251, 289, 290, 340, 289, 290, 291,
1281 340, 553, 291, 552, 292, 551, 286, 292, 293, 549,
1283 287, 293, 257, 517, 258, 510, 289, 290, 259, 509,
1284 257, 291, 258, 261, 259, 399, 292, 265, 263, 261,
1285 293, 266, 399, 265, 484, 286, 290, 266, 399, 287,
1286 294, 293, 483, 294, 482, 289, 290, 292, 480, 295,
1287 291, 297, 295, 299, 297, 292, 299, 302, 300, 293,
1288 302, 300, 294, 303, 479, 304, 303, 305, 304, 306,
1289 305, 478, 306, 307, 310, 463, 307, 310, 312, 314,
1290 462, 312, 314, 294, 320, 322, 324, 320, 322, 324,
1291 308, 294, 295, 308, 297, 455, 299, 453, 307, 452,
1292 295, 300, 297, 304, 299, 305, 306, 326, 302, 300,
1294 326, 303, 323, 323, 303, 323, 304, 450, 305, 408,
1295 306, 449, 308, 308, 307, 310, 312, 314, 327, 312,
1296 314, 327, 408, 448, 342, 320, 322, 324, 342, 329,
1297 333, 308, 329, 333, 335, 339, 353, 335, 339, 353,
1298 447, 415, 415, 343, 344, 342, 343, 344, 326, 344,
1299 446, 348, 476, 323, 348, 415, 339, 339, 339, 350,
1300 343, 344, 350, 351, 350, 476, 342, 351, 348, 327,
1301 342, 445, 352, 354, 354, 352, 350, 352, 444, 355,
1302 329, 333, 355, 442, 351, 335, 339, 353, 441, 352,
1303 357, 354, 440, 357, 343, 344, 355, 356, 356, 439,
1305 409, 359, 348, 349, 359, 351, 349, 357, 364, 351,
1306 350, 364, 354, 409, 438, 356, 354, 409, 359, 366,
1307 349, 349, 366, 352, 368, 362, 362, 368, 349, 349,
1308 349, 349, 349, 349, 358, 437, 356, 358, 436, 435,
1309 356, 357, 358, 362, 369, 361, 368, 369, 361, 434,
1310 431, 358, 359, 361, 349, 363, 412, 365, 363, 364,
1311 391, 412, 361, 363, 362, 365, 365, 381, 362, 412,
1312 366, 370, 363, 371, 370, 368, 371, 365, 372, 373,
1313 374, 372, 373, 374, 375, 358, 360, 375, 376, 360,
1314 377, 376, 380, 377, 378, 369, 361, 378, 382, 365,
1316 379, 382, 374, 360, 360, 383, 363, 384, 383, 345,
1317 384, 360, 360, 360, 360, 360, 360, 338, 386, 382,
1318 382, 386, 370, 387, 371, 385, 387, 337, 385, 372,
1319 373, 374, 336, 389, 334, 375, 389, 360, 332, 376,
1320 388, 377, 331, 388, 330, 378, 385, 385, 385, 382,
1321 390, 392, 393, 390, 392, 393, 383, 394, 384, 394,
1322 394, 395, 388, 388, 395, 397, 311, 398, 397, 386,
1323 398, 298, 402, 402, 387, 400, 385, 404, 400, 403,
1324 405, 285, 403, 405, 389, 402, 398, 407, 407, 398,
1325 404, 388, 404, 397, 400, 406, 410, 400, 406, 410,
1327 407, 390, 392, 393, 284, 283, 397, 403, 405, 411,
1328 411, 282, 395, 280, 406, 279, 397, 406, 398, 414,
1329 403, 405, 411, 278, 410, 418, 400, 413, 413, 416,
1330 403, 405, 414, 414, 277, 417, 416, 410, 418, 417,
1331 413, 418, 416, 419, 421, 421, 406, 410, 417, 420,
1332 426, 422, 420, 423, 276, 426, 419, 421, 428, 419,
1333 422, 526, 423, 426, 422, 424, 423, 428, 424, 425,
1334 425, 428, 427, 427, 526, 429, 430, 420, 432, 275,
1335 430, 432, 429, 425, 424, 427, 274, 424, 429, 430,
1336 420, 433, 443, 451, 433, 443, 451, 273, 454, 456,
1338 420, 454, 456, 457, 458, 459, 457, 458, 459, 461,
1339 464, 460, 461, 464, 460, 466, 424, 465, 466, 469,
1340 465, 456, 469, 272, 270, 457, 458, 459, 269, 432,
1341 268, 461, 457, 460, 454, 267, 467, 468, 459, 467,
1342 468, 461, 433, 443, 451, 264, 460, 262, 470, 454,
1343 456, 470, 469, 260, 457, 458, 459, 201, 465, 200,
1344 461, 464, 460, 199, 471, 197, 466, 471, 465, 167,
1345 469, 472, 468, 473, 472, 481, 473, 488, 481, 467,
1346 488, 489, 506, 490, 489, 506, 490, 467, 468, 496,
1347 498, 470, 496, 498, 488, 158, 518, 518, 489, 470,
1349 490, 503, 151, 530, 503, 505, 496, 498, 499, 518,
1350 532, 499, 150, 505, 505, 471, 530, 507, 503, 472,
1351 507, 149, 472, 532, 473, 499, 481, 500, 508, 538,
1352 500, 508, 489, 506, 490, 494, 511, 512, 494, 511,
1353 512, 148, 538, 544, 500, 136, 133, 505, 513, 132,
1354 544, 513, 494, 494, 514, 515, 544, 514, 515, 499,
1355 494, 494, 494, 494, 494, 494, 495, 516, 507, 495,
1356 516, 495, 131, 527, 541, 105, 527, 541, 500, 508,
1357 102, 101, 519, 495, 495, 519, 100, 511, 512, 527,
1358 541, 495, 495, 495, 495, 495, 495, 497, 531, 513,
1360 497, 519, 497, 545, 519, 514, 515, 99, 531, 520,
1361 521, 531, 520, 521, 497, 497, 545, 522, 516, 586,
1362 522, 98, 497, 497, 497, 497, 497, 497, 97, 528,
1363 528, 96, 586, 519, 533, 533, 597, 520, 521, 597,
1364 523, 524, 528, 523, 524, 522, 95, 533, 497, 501,
1365 520, 521, 501, 597, 94, 93, 540, 540, 522, 523,
1366 520, 521, 523, 92, 90, 88, 501, 501, 522, 524,
1367 540, 58, 534, 534, 501, 501, 501, 501, 501, 501,
1368 502, 525, 524, 502, 525, 534, 537, 537, 502, 543,
1369 543, 523, 524, 529, 57, 56, 529, 502, 502, 537,
1371 525, 55, 543, 525, 35, 502, 502, 502, 502, 502,
1372 502, 504, 529, 31, 504, 529, 28, 535, 536, 504,
1373 535, 536, 542, 546, 550, 542, 546, 550, 504, 504,
1374 539, 27, 525, 539, 547, 547, 504, 504, 504, 504,
1375 504, 504, 629, 10, 529, 535, 536, 547, 631, 539,
1376 542, 546, 539, 554, 548, 629, 554, 548, 535, 536,
1377 629, 631, 504, 542, 546, 637, 9, 560, 535, 536,
1378 560, 0, 637, 542, 546, 550, 564, 568, 637, 564,
1379 568, 539, 548, 571, 572, 573, 571, 572, 573, 575,
1380 0, 576, 575, 574, 576, 548, 574, 577, 579, 580,
1382 577, 579, 580, 627, 554, 548, 581, 573, 627, 581,
1383 624, 575, 0, 576, 582, 574, 627, 582, 560, 577,
1384 576, 624, 584, 624, 575, 584, 583, 564, 568, 583,
1385 585, 0, 625, 585, 571, 572, 573, 0, 574, 581,
1386 575, 0, 576, 589, 574, 625, 589, 625, 577, 579,
1387 580, 628, 590, 595, 584, 590, 595, 581, 582, 598,
1388 628, 583, 598, 599, 628, 582, 599, 600, 601, 0,
1389 600, 601, 600, 584, 636, 606, 598, 583, 606, 607,
1390 599, 585, 607, 603, 600, 601, 603, 636, 603, 636,
1391 604, 589, 606, 604, 589, 604, 607, 0, 608, 610,
1393 603, 608, 610, 590, 595, 609, 701, 604, 609, 612,
1394 598, 0, 612, 609, 599, 608, 610, 612, 600, 701,
1395 613, 615, 609, 613, 615, 0, 612, 0, 613, 616,
1396 607, 619, 616, 617, 603, 618, 617, 613, 618, 620,
1397 621, 604, 620, 621, 619, 619, 0, 622, 623, 608,
1398 622, 623, 0, 0, 626, 0, 609, 626, 620, 621,
1399 612, 620, 621, 704, 704, 630, 622, 623, 630, 622,
1400 623, 613, 615, 634, 635, 632, 634, 704, 632, 0,
1401 616, 0, 626, 635, 617, 633, 618, 635, 633, 638,
1402 620, 621, 638, 630, 632, 626, 0, 632, 622, 623,
1404 639, 634, 0, 639, 633, 626, 630, 633, 638, 640,
1405 642, 638, 640, 642, 634, 641, 630, 643, 641, 646,
1406 643, 0, 646, 0, 634, 0, 632, 644, 639, 642,
1407 644, 647, 642, 0, 647, 649, 633, 640, 649, 658,
1408 638, 639, 658, 641, 660, 643, 644, 660, 0, 644,
1409 640, 639, 661, 0, 664, 661, 641, 664, 643, 665,
1410 640, 642, 665, 0, 670, 0, 641, 670, 643, 666,
1411 646, 667, 666, 671, 667, 0, 671, 668, 644, 0,
1412 668, 0, 647, 769, 669, 673, 649, 669, 673, 674,
1413 658, 666, 674, 667, 672, 660, 769, 672, 666, 668,
1415 0, 675, 0, 661, 675, 664, 669, 0, 676, 677,
1416 665, 676, 677, 678, 673, 670, 678, 0, 674, 700,
1417 666, 0, 667, 679, 671, 0, 679, 680, 668, 672,
1418 680, 683, 700, 700, 683, 669, 673, 0, 684, 0,
1419 674, 684, 0, 0, 0, 672, 685, 0, 0, 685,
1420 686, 685, 675, 686, 0, 687, 676, 677, 687, 676,
1421 677, 678, 688, 685, 678, 688, 689, 686, 690, 689,
1422 0, 690, 687, 691, 679, 0, 691, 692, 680, 688,
1423 692, 691, 683, 689, 693, 690, 0, 693, 694, 684,
1424 691, 694, 695, 696, 692, 695, 696, 685, 0, 697,
1426 698, 693, 697, 698, 699, 694, 705, 699, 703, 695,
1427 696, 703, 702, 702, 707, 708, 706, 707, 0, 705,
1428 705, 706, 0, 709, 691, 702, 709, 703, 708, 706,
1429 703, 708, 710, 707, 711, 710, 707, 711, 712, 0,
1430 0, 712, 709, 717, 718, 709, 717, 718, 0, 713,
1431 697, 698, 713, 719, 724, 699, 719, 724, 714, 703,
1432 710, 714, 711, 0, 725, 707, 712, 725, 713, 715,
1433 0, 713, 715, 710, 709, 711, 0, 714, 727, 712,
1434 714, 727, 0, 710, 716, 711, 0, 716, 715, 712,
1435 729, 715, 0, 729, 717, 718, 730, 0, 731, 730,
1437 713, 731, 0, 716, 719, 724, 716, 733, 0, 714,
1438 733, 734, 0, 0, 734, 725, 735, 801, 736, 735,
1439 715, 736, 737, 738, 739, 737, 738, 739, 740, 727,
1440 801, 740, 801, 734, 741, 716, 742, 741, 735, 742,
1441 736, 729, 0, 745, 764, 764, 745, 730, 745, 731,
1442 0, 746, 734, 0, 746, 0, 746, 764, 733, 0,
1443 745, 747, 734, 768, 747, 0, 747, 735, 746, 736,
1444 0, 0, 0, 737, 738, 739, 768, 768, 747, 740,
1445 773, 748, 0, 773, 748, 741, 748, 742, 749, 0,
1446 0, 749, 750, 749, 745, 750, 751, 750, 748, 751,
1448 0, 751, 746, 752, 0, 749, 752, 754, 752, 750,
1449 754, 755, 747, 751, 755, 754, 805, 805, 756, 755,
1450 752, 756, 0, 0, 754, 0, 756, 793, 755, 805,
1451 793, 773, 748, 757, 758, 756, 757, 758, 0, 749,
1452 0, 757, 758, 750, 793, 763, 0, 751, 763, 759,
1453 757, 758, 759, 760, 752, 0, 760, 759, 754, 0,
1454 761, 760, 755, 761, 765, 0, 759, 765, 761, 756,
1455 760, 766, 0, 763, 766, 767, 770, 761, 767, 770,
1456 776, 0, 0, 776, 757, 758, 763, 771, 772, 0,
1457 771, 772, 765, 0, 777, 770, 763, 777, 770, 766,
1459 759, 0, 0, 767, 760, 765, 771, 772, 0, 771,
1460 772, 761, 766, 0, 778, 765, 767, 778, 780, 0,
1461 781, 780, 766, 781, 0, 782, 767, 770, 782, 783,
1462 784, 776, 783, 784, 785, 806, 806, 785, 771, 772,
1463 807, 788, 0, 807, 788, 777, 788, 789, 806, 0,
1464 789, 794, 789, 0, 794, 0, 785, 790, 788, 794,
1465 790, 0, 790, 0, 789, 778, 0, 791, 794, 780,
1466 791, 781, 791, 0, 790, 800, 782, 0, 800, 795,
1467 783, 784, 795, 792, 791, 785, 792, 795, 792, 0,
1468 809, 807, 788, 809, 800, 0, 795, 800, 789, 0,
1470 792, 0, 794, 796, 797, 0, 796, 797, 790, 0,
1471 799, 796, 797, 799, 798, 0, 802, 798, 791, 802,
1472 796, 797, 798, 0, 0, 803, 800, 799, 803, 804,
1473 795, 798, 804, 810, 792, 802, 810, 811, 802, 812,
1474 811, 809, 812, 813, 803, 0, 813, 803, 804, 814,
1475 0, 804, 814, 817, 796, 797, 817, 818, 817, 0,
1476 818, 819, 818, 0, 819, 798, 820, 802, 0, 820,
1477 817, 814, 829, 0, 818, 829, 803, 0, 819, 821,
1478 804, 0, 821, 820, 810, 0, 0, 821, 811, 822,
1479 812, 0, 822, 0, 813, 823, 821, 822, 823, 824,
1481 814, 0, 824, 0, 817, 0, 822, 825, 818, 0,
1482 825, 826, 823, 0, 826, 827, 824, 830, 827, 833,
1483 830, 834, 833, 829, 834, 835, 0, 0, 835, 836,
1484 821, 837, 836, 0, 837, 825, 833, 0, 834, 826,
1485 822, 838, 835, 827, 838, 0, 836, 0, 825, 0,
1486 837, 839, 826, 837, 839, 0, 827, 0, 825, 0,
1487 838, 840, 826, 838, 840, 0, 827, 0, 830, 842,
1488 839, 843, 842, 839, 843, 844, 845, 846, 844, 845,
1489 846, 0, 837, 0, 0, 0, 0, 0, 0, 0,
1490 0, 0, 838, 0, 0, 0, 0, 0, 0, 0,
1492 0, 0, 839, 0, 0, 0, 0, 0, 0, 0,
1493 0, 0, 840, 0, 0, 0, 0, 0, 0, 0,
1494 842, 0, 843, 0, 0, 0, 844, 845, 846, 848,
1495 0, 0, 0, 848, 849, 849, 849, 849, 849, 849,
1496 849, 849, 850, 850, 850, 850, 850, 850, 850, 850,
1497 851, 851, 0, 0, 851, 851, 852, 852, 0, 852,
1498 852, 852, 852, 853, 853, 853, 853, 853, 853, 853,
1499 854, 854, 0, 0, 854, 854, 854, 855, 855, 0,
1500 0, 0, 855, 855, 856, 0, 0, 0, 0, 856,
1501 856, 857, 857, 857, 857, 857, 857, 857, 857, 858,
1503 858, 0, 0, 858, 858, 0, 858, 859, 859, 0,
1504 0, 859, 859, 0, 859, 860, 860, 0, 0, 860,
1505 860, 0, 860, 847, 847, 847, 847, 847, 847, 847,
1506 847, 847, 847, 847, 847, 847, 847, 847, 847, 847,
1507 847, 847, 847, 847, 847, 847, 847, 847, 847, 847,
1508 847, 847, 847, 847, 847, 847, 847, 847, 847, 847,
1509 847, 847, 847, 847, 847, 847, 847, 847, 847, 847,
1510 847, 847, 847, 847, 847, 847, 847, 847, 847
1513 static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr;
1514 static char *yy_full_match;
1515 static int yy_lp;
1516 #define REJECT \
1518 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \
1519 yy_cp = yy_full_match; /* restore poss. backed-over text */ \
1520 ++yy_lp; \
1521 goto find_rule; \
1523 #define yymore() yymore_used_but_not_detected
1524 #define YY_MORE_ADJ 0
1525 #define YY_RESTORE_YY_MORE_OFFSET
1526 char *yytext;
1527 #line 1 "./lexsrc.l"
1528 #define INITIAL 0
1529 #line 2 "./lexsrc.l"
1530 #ifndef lint
1531 static char *RCSid = "$Id$";
1532 #endif
1535 * The Regina Rexx Interpreter
1536 * Copyright (C) 1992-1994 Anders Christensen <anders@pvv.unit.no>
1538 * This library is free software; you can redistribute it and/or
1539 * modify it under the terms of the GNU Library General Public
1540 * License as published by the Free Software Foundation; either
1541 * version 2 of the License, or (at your option) any later version.
1543 * This library is distributed in the hope that it will be useful,
1544 * but WITHOUT ANY WARRANTY; without even the implied warranty of
1545 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
1546 * Library General Public License for more details.
1548 * You should have received a copy of the GNU Library General Public
1549 * License along with this library; if not, write to the Free
1550 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
1553 #include "rexx.h"
1554 #include "yaccsrc.h"
1555 #include <ctype.h>
1556 #include <string.h>
1557 #include <assert.h>
1559 /* Define ASCII_0_TERMINATES_STRING if you want that ASCII-0 terminates
1560 * an input string. Normally this should not happen. Input strings are
1561 * terminated by a length encoding. The string {"", length=1} is invalid for
1562 * the lexer (ASCII-0 is not allowed) while {"", length=0} is allowed (this
1563 * is an empty input).
1564 * ASCII_0_TERMINATES_STRING is only(!) for backward compatibility and
1565 * shouldn't be used under normal circumstances.
1566 * FGC
1568 #define ASCII_0_TERMINATES_STRING
1570 #ifdef YYLMAX
1571 # undef YYLMAX
1572 #endif
1573 #define YYLMAX BUFFERSIZE
1575 #ifdef FLEX_SCANNER
1576 #undef YY_CHAR
1577 #define YY_CHAR YY_CHAR_TYPE
1578 #undef YY_INPUT
1579 #define YY_INPUT(buf,result,max_size) result=fill_buffer(buf,max_size)
1580 #endif
1582 /* NOTE: Every comment is replaced by a '`' character in the lower input
1583 * routines. These should check for such (illegal) characters.
1585 #define MY_ISBLANK(c) (((c)==' ')||((c)=='\t')||((c)=='`'))
1587 PROTECTION_VAR(regina_parser)
1588 /* externals which are protected by regina_parser */
1589 internal_parser_type parser_data = {NULL, };
1590 int retlength=0 ;
1591 char retvalue[BUFFERSIZE] ;
1592 unsigned SymbolDetect = 0;
1593 /* end of externals protected by regina_parser */
1595 /* locals, they are protected by regina_parser, too */
1596 static int nextline = 1;
1597 static int nextstart = 1;
1598 static int do_level = 0 ;
1599 static int in_numform=0, next_numform=0 ;
1600 static int obs_with=0, in_do=0, in_then=0, dontlast=0 ;
1601 static int sum=0 ;
1602 static int code=0, nexta=0, in_parse=0, in_trace=0, itflag=0 ;
1603 static int in_signal=0, in_call=0 ;
1604 static enum { not_in_address = 0,
1605 in_address_keyword, /* ADDRESS just seen */
1606 in_address_main, /* after the first word */
1607 in_address_value, /* like main but VALUE was seen */
1608 in_address_with} in_address = not_in_address,
1609 last_in_address = not_in_address ;
1610 static enum {no_seek_with = 0,
1611 seek_with_from_parse,
1612 seek_with_from_address} seek_with = no_seek_with ;
1613 static int preva=0, lasta=0 ;
1614 static char ch, ech ;
1615 static int kill_this_space=0, kill_next_space=1 ;
1616 static int extnextline = -1, extnextstart; /* for a delayed line increment */
1617 static int linenr=1 ;
1618 static int contline = 0;
1619 static int inEOF=0 ;
1620 static int singlequote=0, doblequote=0 ;
1621 static int firstln=0 ;
1622 static int bufptr=0 ;
1623 /* Previous bug. 8-bits clean combined with EOF ==> need at least short */
1624 static short chbuffer[LOOKAHEAD] ;
1625 static int ipretflag=0, cch=0 ;
1626 static const char *interptr=NULL ;
1627 static const char *interptrmax ;
1628 static int cchmax = 0 ;
1630 static YY_CHAR_TYPE *rmspc( YY_CHAR_TYPE *instr ) ;
1631 static int fill_buffer( char *buf, int max_size ) ;
1632 #define SET_NEXTSTART() (nextstart += yyleng)
1634 #define YY_FATAL_ERROR(s) exiterror( ERR_PROG_UNREADABLE, 1, s )
1635 #define comm 1
1636 #define signal 2
1637 #define sgtype 3
1638 #define procd 4
1639 #define parse 5
1640 #define then 6
1641 #define with 7
1643 #define numeric 8
1644 #define do1 9
1645 #define other 10
1646 #define value1 11
1647 #define ifcont 12
1648 #define signame 13
1649 #define nmform 14
1651 #line 121 "./lexsrc.l"
1652 /* int yy_startcond=comm ; FGC: Needless? */
1653 #line 1654 "./lexsrc.c"
1654 #line 318 "flex.skl"
1656 /* Macros after this point can all be overridden by user definitions in
1657 * section 1.
1660 #ifndef YY_SKIP_YYWRAP
1661 #ifdef __cplusplus
1662 extern "C" int yywrap YY_PROTO(( void ));
1663 #else
1664 extern int yywrap YY_PROTO(( void ));
1665 #endif
1666 #endif
1668 #line 333 "flex.skl"
1669 #ifndef YY_NO_UNPUT
1670 static void yyunput YY_PROTO(( int c, char *buf_ptr ));
1671 #endif
1672 #line 338 "flex.skl"
1674 #ifndef yytext_ptr
1675 static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
1676 #endif
1678 #ifdef YY_NEED_STRLEN
1679 static int yy_flex_strlen YY_PROTO(( yyconst char * ));
1680 #endif
1682 #ifndef YY_NO_INPUT
1683 #line 350 "flex.skl"
1684 #ifdef __cplusplus
1685 static int yyinput YY_PROTO(( void ));
1686 #else
1687 static int input YY_PROTO(( void ));
1688 #endif
1689 #endif
1690 #line 358 "flex.skl"
1692 #if YY_STACK_USED
1693 static int yy_start_stack_ptr = 0;
1694 static int yy_start_stack_depth = 0;
1695 static int *yy_start_stack = 0;
1696 #ifndef YY_NO_PUSH_STATE
1697 static void yy_push_state YY_PROTO(( int new_state ));
1698 #endif
1699 #ifndef YY_NO_POP_STATE
1700 static void yy_pop_state YY_PROTO(( void ));
1701 #endif
1702 #ifndef YY_NO_TOP_STATE
1703 static int yy_top_state YY_PROTO(( void ));
1704 #endif
1706 #else
1707 #define YY_NO_PUSH_STATE 1
1708 #define YY_NO_POP_STATE 1
1709 #define YY_NO_TOP_STATE 1
1710 #endif
1712 #ifdef YY_MALLOC_DECL
1713 YY_MALLOC_DECL
1714 #else
1715 #if __STDC__
1716 #ifndef __cplusplus
1717 #include <stdlib.h>
1718 #endif
1719 #else
1720 /* Just try to get by without declaring the routines.. This will fail
1721 * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
1722 * or sizeof(void*) != sizeof(int).
1724 #endif
1725 #endif
1727 /* Amount of stuff to slurp up with each read. */
1728 #ifndef YY_READ_BUF_SIZE
1729 #define YY_READ_BUF_SIZE 8192
1730 #endif
1732 /* Copy whatever the last rule matched to the standard output. */
1734 #ifndef ECHO
1735 #line 404 "flex.skl"
1736 /* This used to be an fputs(), but since the string might contain NUL's,
1737 * we now use fwrite().
1739 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
1740 #endif
1741 #line 414 "flex.skl"
1743 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
1744 * is returned in "result".
1746 #ifndef YY_INPUT
1747 #define YY_INPUT(buf,result,max_size) \
1748 if ( yy_current_buffer->yy_is_interactive ) \
1750 int c = '*', n; \
1751 for ( n = 0; n < max_size && \
1752 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1753 buf[n] = (char) c; \
1754 if ( c == '\n' ) \
1755 buf[n++] = (char) c; \
1756 if ( c == EOF && ferror( yyin ) ) \
1757 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1758 result = n; \
1760 else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
1761 && ferror( yyin ) ) \
1762 YY_FATAL_ERROR( "input in flex scanner failed" );
1763 #line 422 "flex.skl"
1764 #endif
1765 #line 429 "flex.skl"
1767 /* No semi-colon after return; correct usage is to write "yyterminate();" -
1768 * we don't want an extra ';' after the "return" because that will cause
1769 * some compilers to complain about unreachable statements.
1771 #ifndef yyterminate
1772 #define yyterminate() return YY_NULL
1773 #endif
1775 /* Number of entries by which start-condition stack grows. */
1776 #ifndef YY_START_STACK_INCR
1777 #define YY_START_STACK_INCR 25
1778 #endif
1780 /* Report a fatal error. */
1781 #ifndef YY_FATAL_ERROR
1782 #line 447 "flex.skl"
1783 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
1784 #endif
1785 #line 454 "flex.skl"
1787 /* Default declaration of generated scanner - a define so the user can
1788 * easily add parameters.
1790 #ifndef YY_DECL
1791 #line 461 "flex.skl"
1792 #define YY_DECL int yylex YY_PROTO(( void ))
1793 #endif
1794 #line 468 "flex.skl"
1796 /* Code executed at the beginning of each rule, after yytext and yyleng
1797 * have been set up.
1799 #ifndef YY_USER_ACTION
1800 #define YY_USER_ACTION
1801 #endif
1803 /* Code executed at the end of each rule. */
1804 #ifndef YY_BREAK
1805 #define YY_BREAK break;
1806 #endif
1808 #define YY_RULE_SETUP \
1809 YY_USER_ACTION
1810 #line 483 "flex.skl"
1812 YY_DECL
1814 register yy_state_type yy_current_state;
1815 register char *yy_cp, *yy_bp;
1816 register int yy_act;
1818 #line 171 "./lexsrc.l"
1821 { if (nexta==1) {
1822 nexta = 0 ;
1823 lasta = (dontlast==0) ;
1824 dontlast = 0 ;
1825 return code ; }
1827 if (next_numform)
1829 in_numform = 1 ;
1830 next_numform = 0 ;
1832 else
1833 in_numform = 0 ;
1835 last_in_address = in_address ; /* just for the "Environment" */
1836 /* there can't be an intermediate SPACE between ADDRESS and the next word*/
1837 if (in_address == in_address_keyword)
1838 in_address = in_address_main ;
1840 kill_this_space = kill_next_space ;
1841 kill_next_space = 0 ;
1844 if (itflag)
1845 in_trace = seek_with = 0 ;
1846 itflag = (in_trace) ;
1848 if (extnextline != -1)
1850 parser_data.tstart = nextstart = extnextstart;
1851 parser_data.tline = nextline = extnextline;
1852 extnextline = -1;
1854 else
1856 parser_data.tstart = nextstart ;
1857 parser_data.tline = nextline ;
1859 preva = lasta ;
1860 lasta = 0 ;
1863 #line 1864 "./lexsrc.c"
1864 #line 492 "flex.skl"
1866 if ( yy_init )
1868 yy_init = 0;
1870 #ifdef YY_USER_INIT
1871 YY_USER_INIT;
1872 #endif
1874 if ( ! yy_start )
1875 yy_start = 1; /* first start state */
1877 if ( ! yyin )
1878 #line 507 "flex.skl"
1879 yyin = stdin;
1880 #line 513 "flex.skl"
1882 if ( ! yyout )
1883 #line 517 "flex.skl"
1884 yyout = stdout;
1885 #line 523 "flex.skl"
1887 if ( ! yy_current_buffer )
1888 yy_current_buffer =
1889 yy_create_buffer( yyin, YY_BUF_SIZE );
1891 yy_load_buffer_state();
1894 while ( 1 ) /* loops until end-of-file is reached */
1896 #line 535 "flex.skl"
1897 yy_cp = yy_c_buf_p;
1899 /* Support of yytext. */
1900 *yy_cp = yy_hold_char;
1902 /* yy_bp points to the position in yy_ch_buf of the start of
1903 * the current run.
1905 yy_bp = yy_cp;
1907 yy_current_state = yy_start;
1908 yy_state_ptr = yy_state_buf;
1909 *yy_state_ptr++ = yy_current_state;
1910 yy_match:
1913 register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
1914 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1916 yy_current_state = (int) yy_def[yy_current_state];
1917 if ( yy_current_state >= 848 )
1918 yy_c = yy_meta[(unsigned int) yy_c];
1920 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1921 *yy_state_ptr++ = yy_current_state;
1922 ++yy_cp;
1924 while ( yy_base[yy_current_state] != 3224 );
1925 #line 547 "flex.skl"
1927 yy_find_action:
1928 yy_current_state = *--yy_state_ptr;
1929 yy_lp = yy_accept[yy_current_state];
1930 find_rule: /* we branch to this label when backing up */
1931 for ( ; ; ) /* until we find what rule we matched */
1933 if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] )
1935 yy_act = yy_acclist[yy_lp];
1937 yy_full_match = yy_cp;
1938 break;
1941 --yy_cp;
1942 yy_current_state = *--yy_state_ptr;
1943 yy_lp = yy_accept[yy_current_state];
1945 #line 551 "flex.skl"
1947 YY_DO_BEFORE_ACTION;
1949 #line 556 "flex.skl"
1951 do_action: /* This label is used only to access EOF actions. */
1953 #line 561 "flex.skl"
1955 switch ( yy_act )
1956 { /* beginning of action switch */
1957 case 1:
1958 YY_RULE_SETUP
1959 #line 215 "./lexsrc.l"
1960 SET_NEXTSTART() ;
1961 YY_BREAK
1962 case 2:
1963 YY_RULE_SETUP
1964 #line 217 "./lexsrc.l"
1966 char *ptr;
1967 if ((ptr = strchr(yytext, '\n')) != NULL)
1969 nextstart = yyleng - (int) (ptr - (char *) yytext) ;
1970 nextline++ ;
1971 if (extnextline != -1)
1972 extnextline++;
1974 else
1975 SET_NEXTSTART() ;
1976 return STATSEP ; }
1977 YY_BREAK
1978 case 3:
1979 YY_RULE_SETUP
1980 #line 230 "./lexsrc.l"
1982 char *ptr;
1983 BEGIN comm ;
1984 if (obs_with==1)
1986 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
1987 exiterror( ERR_INVALID_TEMPLATE, 1, yytext ) ;
1989 obs_with = in_do = 0 ;
1990 in_signal = in_address = in_call = 0 ;
1991 in_parse = 0 ;
1992 if (seek_with == seek_with_from_address)
1993 seek_with = no_seek_with ;
1994 if ((ptr = strchr(yytext, '\n')) != NULL)
1996 nextstart = yyleng - (int) (ptr - (char *) yytext) ;
1997 nextline++ ;
1998 if (extnextline != -1)
1999 extnextline++;
2001 else
2002 SET_NEXTSTART() ;
2003 return STATSEP ; }
2004 YY_BREAK
2005 case 4:
2006 YY_RULE_SETUP
2007 #line 254 "./lexsrc.l"
2009 BEGIN value1 ; /* Allow a following VALUE keyword */
2010 seek_with = seek_with_from_address ;
2011 in_address = in_address_keyword ;
2012 in_call = 1 ; /* Allow the next words to be given as in CALL. */
2013 SET_NEXTSTART() ;
2014 return ADDRESS ; }
2015 YY_BREAK
2016 case 5:
2017 YY_RULE_SETUP
2018 #line 262 "./lexsrc.l"
2020 BEGIN other ;
2021 in_parse = 1 ;
2022 SET_NEXTSTART() ;
2023 return ARG ; }
2024 YY_BREAK
2025 case 6:
2026 YY_RULE_SETUP
2027 #line 268 "./lexsrc.l"
2029 BEGIN signal ;
2030 in_call = 1 ;
2031 SET_NEXTSTART() ;
2032 return CALL ; }
2033 YY_BREAK
2034 case 7:
2035 YY_RULE_SETUP
2036 #line 274 "./lexsrc.l"
2038 BEGIN do1 ;
2039 assert( do_level >=0 ) ;
2040 do_level++ ;
2041 in_do = 1 ;
2042 SET_NEXTSTART() ;
2043 return DO ; }
2044 YY_BREAK
2045 case 8:
2046 YY_RULE_SETUP
2047 #line 282 "./lexsrc.l"
2049 BEGIN other ;
2050 in_parse = 1 ;
2051 SET_NEXTSTART() ;
2052 return DROP ; }
2053 YY_BREAK
2054 case 9:
2055 YY_RULE_SETUP
2056 #line 288 "./lexsrc.l"
2058 BEGIN comm ;
2059 SET_NEXTSTART() ;
2060 return ELSE ; }
2061 YY_BREAK
2062 case 10:
2063 YY_RULE_SETUP
2064 #line 293 "./lexsrc.l"
2066 BEGIN other ;
2067 SET_NEXTSTART() ;
2068 return EXIT ; }
2069 YY_BREAK
2070 case 11:
2071 YY_RULE_SETUP
2072 #line 298 "./lexsrc.l"
2074 BEGIN ifcont ;
2075 in_then = 1 ;
2076 parser_data.if_linenr = linenr - 1;
2077 SET_NEXTSTART() ;
2078 return IF ; }
2079 YY_BREAK
2080 case 12:
2081 YY_RULE_SETUP
2082 #line 305 "./lexsrc.l"
2084 BEGIN other ;
2085 SET_NEXTSTART() ;
2086 return INTERPRET ; }
2087 YY_BREAK
2088 case 13:
2089 YY_RULE_SETUP
2090 #line 310 "./lexsrc.l"
2092 BEGIN other ;
2093 SET_NEXTSTART() ;
2094 return ITERATE ; }
2095 YY_BREAK
2096 case 14:
2097 YY_RULE_SETUP
2098 #line 315 "./lexsrc.l"
2100 BEGIN other ;
2101 SET_NEXTSTART() ;
2102 return LEAVE ; }
2103 YY_BREAK
2104 case 15:
2105 YY_RULE_SETUP
2106 #line 320 "./lexsrc.l"
2108 BEGIN other ;
2109 SET_NEXTSTART() ;
2110 return OPTIONS ; }
2111 YY_BREAK
2112 case 16:
2113 YY_RULE_SETUP
2114 #line 325 "./lexsrc.l"
2116 BEGIN other ;
2117 SET_NEXTSTART() ;
2118 return NOP ; }
2119 YY_BREAK
2120 case 17:
2121 YY_RULE_SETUP
2122 #line 330 "./lexsrc.l"
2124 BEGIN numeric ;
2125 SET_NEXTSTART() ;
2126 return NUMERIC ; }
2127 YY_BREAK
2128 case 18:
2129 YY_RULE_SETUP
2130 #line 335 "./lexsrc.l"
2132 BEGIN parse ;
2133 in_parse = 1 ;
2134 SET_NEXTSTART() ;
2135 return PARSE ; }
2136 YY_BREAK
2137 case 19:
2138 YY_RULE_SETUP
2139 #line 341 "./lexsrc.l"
2141 BEGIN procd ;
2142 SET_NEXTSTART() ;
2143 return PROCEDURE ; }
2144 YY_BREAK
2145 case 20:
2146 YY_RULE_SETUP
2147 #line 346 "./lexsrc.l"
2149 BEGIN other ;
2150 in_parse = 1 ;
2151 SET_NEXTSTART() ;
2152 return PULL ; }
2153 YY_BREAK
2154 case 21:
2155 YY_RULE_SETUP
2156 #line 352 "./lexsrc.l"
2158 BEGIN other ;
2159 SET_NEXTSTART() ;
2160 return PUSH ; }
2161 YY_BREAK
2162 case 22:
2163 YY_RULE_SETUP
2164 #line 357 "./lexsrc.l"
2166 BEGIN other ;
2167 SET_NEXTSTART() ;
2168 return QUEUE ; }
2169 YY_BREAK
2170 case 23:
2171 YY_RULE_SETUP
2172 #line 362 "./lexsrc.l"
2174 BEGIN other ;
2175 SET_NEXTSTART() ;
2176 return RETURN ; }
2177 YY_BREAK
2178 case 24:
2179 YY_RULE_SETUP
2180 #line 367 "./lexsrc.l"
2182 BEGIN other ;
2183 SET_NEXTSTART() ;
2184 return SAY ; }
2185 YY_BREAK
2186 case 25:
2187 YY_RULE_SETUP
2188 #line 372 "./lexsrc.l"
2190 BEGIN other ;
2191 assert( do_level >= 0 ) ;
2192 do_level++ ;
2193 SET_NEXTSTART() ;
2194 return SELECT ; }
2195 YY_BREAK
2196 case 26:
2197 YY_RULE_SETUP
2198 #line 379 "./lexsrc.l"
2200 BEGIN signal ;
2201 in_signal = 1 ;
2202 SET_NEXTSTART() ;
2203 return SIGNAL ; }
2204 YY_BREAK
2205 case 27:
2206 YY_RULE_SETUP
2207 #line 385 "./lexsrc.l"
2209 BEGIN value1 ;
2210 in_trace = 1 ;
2211 SET_NEXTSTART() ;
2212 return TRACE ; }
2213 YY_BREAK
2214 case 28:
2215 YY_RULE_SETUP
2216 #line 391 "./lexsrc.l"
2218 BEGIN other ;
2219 in_parse = 1 ;
2220 SET_NEXTSTART() ;
2221 return UPPER ; }
2222 YY_BREAK
2223 case 29:
2224 YY_RULE_SETUP
2225 #line 397 "./lexsrc.l"
2227 BEGIN ifcont ;
2228 in_then = 1 ;
2229 parser_data.when_linenr = linenr - 1;
2230 SET_NEXTSTART() ;
2231 return WHEN ; }
2232 YY_BREAK
2233 case 30:
2234 YY_RULE_SETUP
2235 #line 404 "./lexsrc.l"
2237 BEGIN comm ;
2238 SET_NEXTSTART() ;
2239 return OTHERWISE ; }
2240 YY_BREAK
2241 case 31:
2242 YY_RULE_SETUP
2243 #line 409 "./lexsrc.l"
2245 BEGIN other ;
2246 assert( do_level >= 0 ) ;
2247 if (do_level==0)
2249 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
2250 exiterror( ERR_UNMATCHED_END, 1 ) ;
2252 do_level-- ;
2253 SET_NEXTSTART() ;
2254 return END ; }
2255 YY_BREAK
2256 case 32:
2257 YY_RULE_SETUP
2258 #line 421 "./lexsrc.l"
2260 if (in_parse)
2262 SET_NEXTSTART() ;
2263 return yylex() ;
2265 else
2266 REJECT ; }
2267 YY_BREAK
2268 case 33:
2269 YY_RULE_SETUP
2270 #line 430 "./lexsrc.l"
2272 if (in_parse)
2274 SET_NEXTSTART() ;
2275 return PLACEHOLDER ;
2277 else
2279 REJECT ;
2280 #if 0
2281 /* FGC: What should the following mean after a REJECT? */
2282 retvalue[0] = '.' ;
2283 retvalue[1] = '\0' ;
2284 return CONSYMBOL ;
2285 #endif
2288 YY_BREAK
2289 case 34:
2290 YY_RULE_SETUP
2291 #line 448 "./lexsrc.l"
2293 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
2294 if (yytext[0] == '.')
2295 exiterror( ERR_INVALID_START, 3, yytext ) ;
2296 else
2297 exiterror( ERR_INVALID_START, 2, yytext ) ;
2298 SET_NEXTSTART() ; }
2299 YY_BREAK
2300 case 35:
2301 YY_RULE_SETUP
2302 #line 456 "./lexsrc.l"
2304 unsigned i,j;
2305 BEGIN other ;
2307 j = 0 ;
2308 for (i=0;yytext[i];i++)
2309 if ('a' <= yytext[i] && yytext[i] <= 'z')
2310 retvalue[j++] = (char) (yytext[i] & 0xDF) ; /* ASCII only */
2311 else if (yytext[i]!='=' && yytext[i]!='\n' && !MY_ISBLANK(yytext[i]))
2312 retvalue[j++] = yytext[i] ;
2313 retvalue[j] = '\0' ;
2315 SET_NEXTSTART() ;
2316 return ASSIGNMENTVARIABLE ; }
2317 YY_BREAK
2318 case 36:
2319 YY_RULE_SETUP
2320 #line 471 "./lexsrc.l"
2322 if (in_call)
2324 if ((last_in_address == in_address_keyword) &&
2325 (in_address == in_address_main))
2327 BEGIN other ; /* the next useful expression will set it to "other"
2328 * in either case. The BEGIN-states aren't very
2329 * handy in most cases; they are not flexible enough.
2331 in_address = in_address_value ;
2332 SET_NEXTSTART() ;
2333 return VALUE ;
2335 REJECT ;
2337 BEGIN other ;
2338 if ((!in_trace)&&(!in_address)&&(!in_signal)&&(!in_call)&&(!in_numform))
2339 obs_with = 1 ;
2340 in_trace = in_signal = in_call = 0 ;
2341 SET_NEXTSTART() ;
2342 return VALUE ; }
2343 YY_BREAK
2344 case 37:
2345 YY_RULE_SETUP
2346 #line 494 "./lexsrc.l"
2348 BEGIN sgtype ;
2349 SET_NEXTSTART() ;
2350 return ON ; }
2351 YY_BREAK
2352 case 38:
2353 YY_RULE_SETUP
2354 #line 499 "./lexsrc.l"
2356 BEGIN sgtype ;
2357 SET_NEXTSTART() ;
2358 return OFF ; }
2359 YY_BREAK
2360 case 39:
2361 YY_RULE_SETUP
2362 #line 504 "./lexsrc.l"
2364 BEGIN other ;
2365 SET_NEXTSTART() ;
2366 return NAME ; }
2367 YY_BREAK
2368 case 40:
2369 YY_RULE_SETUP
2370 #line 509 "./lexsrc.l"
2372 BEGIN signame ;
2373 SET_NEXTSTART() ;
2374 return ERROR ; }
2375 YY_BREAK
2376 case 41:
2377 YY_RULE_SETUP
2378 #line 514 "./lexsrc.l"
2380 BEGIN signame ;
2381 SET_NEXTSTART() ;
2382 return HALT ; }
2383 YY_BREAK
2384 case 42:
2385 YY_RULE_SETUP
2386 #line 519 "./lexsrc.l"
2388 BEGIN signame ;
2389 SET_NEXTSTART() ;
2390 return NOVALUE ; }
2391 YY_BREAK
2392 case 43:
2393 YY_RULE_SETUP
2394 #line 524 "./lexsrc.l"
2396 BEGIN signame ;
2397 SET_NEXTSTART() ;
2398 return NOTREADY ; }
2399 YY_BREAK
2400 case 44:
2401 YY_RULE_SETUP
2402 #line 529 "./lexsrc.l"
2404 BEGIN signame ;
2405 SET_NEXTSTART() ;
2406 return FAILURE ; }
2407 YY_BREAK
2408 case 45:
2409 YY_RULE_SETUP
2410 #line 534 "./lexsrc.l"
2412 BEGIN signame ;
2413 SET_NEXTSTART() ;
2414 return SYNTAX ; }
2415 YY_BREAK
2416 case 46:
2417 YY_RULE_SETUP
2418 #line 539 "./lexsrc.l"
2420 BEGIN signame ;
2421 SET_NEXTSTART() ;
2422 return LOSTDIGITS ; }
2423 YY_BREAK
2424 case 47:
2425 YY_RULE_SETUP
2426 #line 544 "./lexsrc.l"
2428 if (!in_trace) REJECT ;
2429 strcpy(retvalue,rmspc( yytext )) ;
2430 SET_NEXTSTART() ;
2431 return WHATEVER ; }
2432 YY_BREAK
2433 case 48:
2434 YY_RULE_SETUP
2435 #line 550 "./lexsrc.l"
2437 BEGIN other ;
2438 in_parse = 1 ;
2439 SET_NEXTSTART() ;
2440 return EXPOSE ; }
2441 YY_BREAK
2442 case 49:
2443 YY_RULE_SETUP
2444 #line 556 "./lexsrc.l"
2446 SET_NEXTSTART() ;
2447 return UPPER ; }
2448 YY_BREAK
2449 case 50:
2450 YY_RULE_SETUP
2451 #line 560 "./lexsrc.l"
2453 BEGIN other ;
2454 SET_NEXTSTART() ;
2455 return ARG ; }
2456 YY_BREAK
2457 case 51:
2458 YY_RULE_SETUP
2459 #line 565 "./lexsrc.l"
2461 BEGIN other ;
2462 SET_NEXTSTART() ;
2463 return NUMERIC ; }
2464 YY_BREAK
2465 case 52:
2466 YY_RULE_SETUP
2467 #line 570 "./lexsrc.l"
2469 BEGIN other ;
2470 SET_NEXTSTART() ;
2471 return PULL ; }
2472 YY_BREAK
2473 case 53:
2474 YY_RULE_SETUP
2475 #line 575 "./lexsrc.l"
2477 BEGIN other ;
2478 SET_NEXTSTART() ;
2479 return SOURCE ; }
2480 YY_BREAK
2481 case 54:
2482 YY_RULE_SETUP
2483 #line 580 "./lexsrc.l"
2485 BEGIN other ;
2486 SET_NEXTSTART() ;
2487 return EXTERNAL ; }
2488 YY_BREAK
2489 case 55:
2490 YY_RULE_SETUP
2491 #line 585 "./lexsrc.l"
2493 BEGIN other ;
2494 SET_NEXTSTART() ;
2495 return LINEIN ; }
2496 YY_BREAK
2497 case 56:
2498 YY_RULE_SETUP
2499 #line 590 "./lexsrc.l"
2501 BEGIN other ;
2502 SET_NEXTSTART() ;
2503 return VERSION ; }
2504 YY_BREAK
2505 case 57:
2506 YY_RULE_SETUP
2507 #line 595 "./lexsrc.l"
2509 BEGIN other ;
2510 SET_NEXTSTART() ;
2511 return VAR ; }
2512 YY_BREAK
2513 case 58:
2514 YY_RULE_SETUP
2515 #line 600 "./lexsrc.l"
2517 seek_with = seek_with_from_parse ;
2518 in_trace = 0 ;
2519 in_parse = 0 ;
2520 BEGIN with ; /* in fact this works as a "not comm" */
2521 SET_NEXTSTART() ;
2522 return VALUE ; }
2523 YY_BREAK
2524 case 59:
2525 YY_RULE_SETUP
2526 #line 608 "./lexsrc.l"
2528 in_then = 0 ;
2529 SET_NEXTSTART() ;
2530 return THEN ; }
2531 YY_BREAK
2532 case 60:
2533 YY_RULE_SETUP
2534 #line 613 "./lexsrc.l"
2536 if (in_then!=1) REJECT ;
2537 BEGIN comm ;
2538 in_then = 0 ;
2539 SET_NEXTSTART() ;
2540 return THEN ; }
2541 YY_BREAK
2542 case 61:
2543 YY_RULE_SETUP
2544 #line 620 "./lexsrc.l"
2546 BEGIN other ;
2547 if ((in_do)||(!seek_with))
2548 REJECT ;
2549 if (seek_with == seek_with_from_parse)
2550 in_parse = 1 ;
2551 seek_with = 0 ;
2552 if (in_address) /* any address state */
2553 in_address = in_address_with ; /* WITH seen */
2554 SET_NEXTSTART() ;
2555 return WITH ; }
2556 YY_BREAK
2557 case 62:
2558 YY_RULE_SETUP
2559 #line 633 "./lexsrc.l"
2561 BEGIN other ;
2562 SET_NEXTSTART() ;
2563 return DIGITS ; }
2564 YY_BREAK
2565 case 63:
2566 YY_RULE_SETUP
2567 #line 638 "./lexsrc.l"
2569 BEGIN nmform ;
2570 next_numform = 1 ;
2571 SET_NEXTSTART() ;
2572 return FORM ; }
2573 YY_BREAK
2574 case 64:
2575 YY_RULE_SETUP
2576 #line 644 "./lexsrc.l"
2578 SET_NEXTSTART() ;
2579 return SCIENTIFIC ; }
2580 YY_BREAK
2581 case 65:
2582 YY_RULE_SETUP
2583 #line 648 "./lexsrc.l"
2585 SET_NEXTSTART() ;
2586 return ENGINEERING ; }
2587 YY_BREAK
2588 case 66:
2589 YY_RULE_SETUP
2590 #line 652 "./lexsrc.l"
2592 BEGIN other ;
2593 SET_NEXTSTART() ;
2594 return FUZZ ; }
2595 YY_BREAK
2596 case 67:
2597 YY_RULE_SETUP
2598 #line 657 "./lexsrc.l"
2600 BEGIN other ;
2601 assert(in_do) ;
2602 in_do = 2 ;
2603 SET_NEXTSTART() ;
2604 return FOREVER ; }
2605 YY_BREAK
2606 case 68:
2607 YY_RULE_SETUP
2608 #line 664 "./lexsrc.l"
2610 if (in_do==2)
2612 BEGIN other ;
2613 SET_NEXTSTART() ;
2614 return TO ;
2616 else if (in_do==1)
2618 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
2619 exiterror( ERR_INVALID_DO_SYNTAX, 1, "TO" ) ;
2621 REJECT ; }
2622 YY_BREAK
2623 case 69:
2624 YY_RULE_SETUP
2625 #line 678 "./lexsrc.l"
2627 if (in_do==2)
2629 BEGIN other ;
2630 SET_NEXTSTART() ;
2631 return BY ;
2633 else if (in_do==1)
2635 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
2636 exiterror( ERR_INVALID_DO_SYNTAX, 1, "BY" ) ;
2638 REJECT ; }
2639 YY_BREAK
2640 case 70:
2641 YY_RULE_SETUP
2642 #line 692 "./lexsrc.l"
2644 if (in_do==2)
2646 BEGIN other ;
2647 SET_NEXTSTART() ;
2648 return FOR ;
2650 else if (in_do==1)
2652 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
2653 exiterror( ERR_INVALID_DO_SYNTAX, 1, "FOR" ) ;
2655 REJECT ; }
2656 YY_BREAK
2657 case 71:
2658 YY_RULE_SETUP
2659 #line 706 "./lexsrc.l"
2661 if (in_do)
2663 if (in_do==3)
2665 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
2666 exiterror( ERR_INVALID_DO_SYNTAX, 1, "WHILE" ) ;
2668 in_do=3 ;
2669 BEGIN other ;
2670 SET_NEXTSTART() ;
2671 return WHILE ;
2673 REJECT ; }
2674 YY_BREAK
2675 case 72:
2676 YY_RULE_SETUP
2677 #line 721 "./lexsrc.l"
2679 if (in_do) {
2680 if (in_do==3)
2682 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
2683 exiterror( ERR_INVALID_DO_SYNTAX, 1, "UNTIL" ) ;
2686 in_do=3 ;
2687 BEGIN other ;
2688 SET_NEXTSTART() ;
2689 return UNTIL ; }
2690 REJECT ; }
2691 YY_BREAK
2692 case 73:
2693 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2694 yy_c_buf_p = yy_cp -= 1;
2695 YY_DO_BEFORE_ACTION; /* set up yytext again */
2696 YY_RULE_SETUP
2697 #line 736 "./lexsrc.l"
2699 BEGIN other ;
2700 in_do = 2 ;
2701 strcpy(retvalue,rmspc( yytext )) ;
2702 SET_NEXTSTART() ;
2703 return DOVARIABLE ; }
2704 YY_BREAK
2705 case 74:
2706 YY_RULE_SETUP
2707 #line 743 "./lexsrc.l"
2708 { /* set labl to sym for other kind or vice versa*/
2709 unsigned i,j;
2710 BEGIN comm ;
2712 for (i=j=0;(ch=yytext[i])!=0;i++) {
2713 if ('a' <= ch && ch <= 'z')
2714 retvalue[j++] = (char) (ch & 0xDF) ; /* ASCII only */
2715 /* FIXME: the following is WRONG, must first cut off {bl}:{bl} and
2716 * then fixup strings, FGC */
2717 else if ((ch!=',')&&(ch!='\n')&&(ch!=':')&&!MY_ISBLANK(ch))
2718 retvalue[j++] = ch ; }
2719 retvalue[j] = '\0' ;
2720 SET_NEXTSTART() ;
2721 return LABEL ; }
2722 YY_BREAK
2723 case 75:
2724 YY_RULE_SETUP
2725 #line 759 "./lexsrc.l"
2727 int i;
2728 BEGIN other ;
2730 strcpy(retvalue,&yytext[1]) ;
2731 for (i=3; i<=yyleng && retvalue[yyleng-i]=='`'; i++) ;
2732 retvalue[yyleng-i] = '\0' ;
2734 kill_next_space = 1 ;
2735 if (preva==1) {
2736 nexta = dontlast = 1 ;
2737 code = EXFUNCNAME ;
2738 SET_NEXTSTART() ;
2739 return CONCATENATE ; }
2741 lasta = 0 ;
2742 SET_NEXTSTART() ;
2743 return EXFUNCNAME ; }
2744 YY_BREAK
2745 case 76:
2746 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2747 yy_c_buf_p = yy_cp -= 1;
2748 YY_DO_BEFORE_ACTION; /* set up yytext again */
2749 YY_RULE_SETUP
2750 #line 780 "./lexsrc.l"
2752 unsigned i,j,k;
2753 BEGIN other ;
2754 ech = yytext[0] ;
2756 /* first group can be large and odd-numbered; find # of zeros to pad */
2757 for (i=1; (yytext[i]!=ech) && isxdigit(yytext[i]); i++) ;
2759 /* j is the number of digits processed */
2760 j = (i-1)%2 ;
2761 sum = k = 0 ;
2763 for (i=1;(ech!=(ch=yytext[i]));i++)
2765 if (isspace(ch))
2767 if ((i==1)||(j)) /* leading space or space within a byte */
2769 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
2770 exiterror( ERR_INVALID_HEX_CONST, 1, i ) ;
2773 else if (isxdigit(ch))
2775 sum = sum *16 + (HEXVAL(ch)) ;
2776 if ((++j)==2)
2778 retvalue[k++] = (char) sum ;
2779 sum = j = 0 ;
2784 if ((i>1) && isspace(yytext[i-1]))
2786 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
2787 exiterror( ERR_INVALID_HEX_CONST, 1, i ) ;
2790 retvalue[k] = '\0' ;
2791 retlength = k ;
2793 if ((preva==1)&&(!in_parse)&&(!in_call))
2795 nexta = 1 ;
2796 code = STRING ;
2797 SET_NEXTSTART() ;
2798 return CONCATENATE ;
2801 if (in_call)
2803 in_call = 0 ;
2804 kill_next_space = 1 ;
2806 else
2807 lasta = 1 ;
2809 SET_NEXTSTART() ;
2810 return HEXSTRING ;
2812 YY_BREAK
2813 case 77:
2814 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2815 yy_c_buf_p = yy_cp -= 1;
2816 YY_DO_BEFORE_ACTION; /* set up yytext again */
2817 YY_RULE_SETUP
2818 #line 844 "./lexsrc.l"
2820 unsigned i,j,k;
2821 BEGIN other ;
2822 ech = yytext[0] ;
2824 /* first group can be large and odd-numbered; find # of zeros to pad */
2825 for (i=1; (yytext[i]!=ech) && isdigit(yytext[i]); i++) ;
2827 /* j is the number of digits processed */
2828 j = (4 - (i-1))%4 ;
2829 sum = k = 0 ;
2831 for (i=1;(ech!=(ch=yytext[i]));i++)
2833 if (isspace(ch))
2835 if ((i==1)||(j)) /* leading space or space within a byte */
2837 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
2838 exiterror( ERR_INVALID_HEX_CONST, 2, i ) ;
2841 else if ((ch=='0')||(ch=='1'))
2843 sum = sum *2 + (ch-'0') ;
2844 if ((++j)==4)
2846 retvalue[k++] = (char) sum ;
2847 sum = j = 0 ;
2852 if ((i>1) && isspace(yytext[i-1]))
2854 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
2855 exiterror( ERR_INVALID_HEX_CONST, 2, i ) ;
2858 j = (k%2) ;
2859 /* then pack the nibbles */
2860 for (i=j=(k%2); i<=k; i++)
2862 if (i%2)
2863 retvalue[i/2] = (char)((retvalue[i/2]&0xf0) + retvalue[i-j]) ;
2864 else
2865 retvalue[i/2] = (char)((retvalue[i-j]&0x0f)<<4) ;
2868 retvalue[retlength=i/2] = '\0' ;
2870 if ((preva==1)&&(!in_parse)&&(!in_call))
2872 nexta = 1 ;
2873 code = STRING ;
2874 SET_NEXTSTART() ;
2875 return CONCATENATE ;
2878 if (in_call)
2880 in_call = 0 ;
2881 kill_next_space = 1 ;
2883 else
2884 lasta = 1 ;
2886 SET_NEXTSTART() ;
2887 return BINSTRING ;
2889 YY_BREAK
2890 case 78:
2891 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2892 yy_c_buf_p = yy_cp -= 1;
2893 YY_DO_BEFORE_ACTION; /* set up yytext again */
2894 YY_RULE_SETUP
2895 #line 915 "./lexsrc.l"
2897 unsigned int i;
2898 char bad=' ';
2899 BEGIN other ;
2900 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
2901 for (i=0;yytext[i]; i++)
2903 if ( !isxdigit(yytext[i]) && !(yytext[i] == '\"' && yytext[0] == '\"') && !(yytext[i] == '\'' && yytext[0] == '\'') && yytext[i] != ' ' )
2905 bad = yytext[i];
2906 break;
2909 exiterror( ERR_INVALID_HEX_CONST, 3, bad ) ;
2910 SET_NEXTSTART() ;
2912 YY_BREAK
2913 case 79:
2914 YY_RULE_SETUP
2915 #line 932 "./lexsrc.l"
2917 unsigned i,j;
2918 BEGIN other ;
2919 for (i=1; yytext[i+1]; i++)
2921 if (yytext[i]=='\n')
2923 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
2924 exiterror( ERR_UNMATCHED_QUOTE, 0 ) ;
2927 if (yytext[i]==yytext[0] && yytext[i+1]==yytext[0])
2928 for (j=i+1; yytext[j]; j++)
2929 yytext[j] = yytext[j+1] ;
2932 yytext[strlen(yytext)-1] = '\0' ;
2933 strcpy(retvalue,&yytext[1]) ;
2935 if (in_numform)
2937 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
2938 exiterror( ERR_INV_SUBKEYWORD, 11, "ENGINEERING SCIENTIFIC", retvalue ) ;
2941 if ((preva==1)&&(!in_parse)&&(!in_call)) {
2942 nexta = 1 ;
2943 code = STRING ;
2944 SET_NEXTSTART() ;
2945 return CONCATENATE ; }
2947 if (in_call)
2949 in_call = 0 ;
2950 kill_next_space = 1 ;
2952 else
2953 lasta = 1 ;
2955 SET_NEXTSTART() ;
2956 return STRING ; }
2957 YY_BREAK
2958 case 80:
2959 YY_RULE_SETUP
2960 #line 975 "./lexsrc.l"
2962 if (!in_parse)
2963 REJECT ;
2964 strcpy(retvalue,yytext) ;
2965 SET_NEXTSTART() ;
2966 return OFFSET ; }
2967 YY_BREAK
2968 case 81:
2969 YY_RULE_SETUP
2970 #line 982 "./lexsrc.l"
2972 int i;
2973 BEGIN other ;
2974 for (i=0; i<yyleng-1 && yytext[i]!='`'; i++) /* Copy value only */
2975 retvalue[i] = (char) toupper(yytext[i]) ;
2976 retvalue[i] = '\0' ;
2978 if (in_numform)
2980 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
2981 exiterror( ERR_INV_SUBKEYWORD, 11, "ENGINEERING SCIENTIFIC", retvalue ) ;
2984 BEGIN other ;
2985 kill_next_space = 1 ;
2986 if (preva==1)
2988 nexta = dontlast = 1 ;
2989 code = INFUNCNAME ;
2990 SET_NEXTSTART() ;
2991 return CONCATENATE ;
2993 lasta = 0 ;
2994 SET_NEXTSTART() ;
2995 return INFUNCNAME ; }
2996 YY_BREAK
2997 case 82:
2998 YY_RULE_SETUP
2999 #line 1008 "./lexsrc.l"
3001 int i;
3002 BEGIN other ;
3003 for (i=0; i<=yyleng; i++) /* Copy '\0', too */
3004 retvalue[i] = (char) toupper(yytext[i]) ;
3006 if (in_numform)
3008 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
3009 exiterror( ERR_INV_SUBKEYWORD, 11, "ENGINEERING SCIENTIFIC", retvalue ) ;
3012 if (in_call)
3014 in_call = 0 ;
3015 BEGIN other ;
3016 kill_next_space = 1 ;
3017 lasta = 1 ;
3018 SET_NEXTSTART() ;
3019 return CONSYMBOL ;
3022 if ((preva==1)&&(!in_parse)) {
3023 nexta = 1 ;
3024 code = CONSYMBOL ;
3025 SET_NEXTSTART() ;
3026 return CONCATENATE ; }
3028 lasta = 1 ;
3029 SET_NEXTSTART() ;
3030 return CONSYMBOL ; }
3031 YY_BREAK
3032 case 83:
3033 YY_RULE_SETUP
3034 #line 1040 "./lexsrc.l"
3036 int i,j;
3038 * this might be a symbol in front of a function, but only if next
3039 * char in input stream is "(".
3042 if (in_trace) REJECT ;
3044 for (i=0; i<=yyleng; i++) /* include terminating '\0' */
3045 retvalue[i] = (char) toupper(yytext[i]) ;
3047 if (in_numform)
3049 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
3050 exiterror( ERR_INV_SUBKEYWORD, 11, "ENGINEERING SCIENTIFIC", retvalue ) ;
3053 if ((last_in_address == in_address_keyword) &&
3054 (in_address == in_address_main))
3056 kill_next_space = 1 ;
3057 in_call = 0 ;
3058 SET_NEXTSTART() ;
3059 return SIMSYMBOL ;
3062 /* We must check if a '(' follows. Remember the number of eaten chars. */
3063 j = 1;
3064 for (;(i=input())=='`';)
3065 j++ ;
3066 if (i != '(')
3068 j-- ;
3069 unput(i) ;
3071 /* input() has destroyed the yytext-terminator re-set it */
3072 yytext[yyleng] = '\0';
3073 SET_NEXTSTART() ;
3074 nextstart += j ;
3076 if (i=='(')
3078 BEGIN other ;
3079 kill_next_space = 1 ;
3080 if (preva==1)
3082 nexta = dontlast = 1 ;
3083 code = INFUNCNAME ;
3084 return CONCATENATE ;
3086 lasta = 0 ;
3087 return INFUNCNAME ;
3090 if (in_call)
3092 kill_next_space = 1 ;
3093 BEGIN other ;
3094 in_call = 0 ;
3095 lasta = 1 ;
3096 return SIMSYMBOL ;
3099 BEGIN other ;
3100 if ((preva==1)&&(!in_parse)) {
3101 nexta = 1 ;
3102 code = SIMSYMBOL ;
3103 return CONCATENATE ; }
3105 lasta = 1 ;
3107 if (in_address == in_address_with)
3108 kill_next_space = 1 ;
3109 if (SymbolDetect) /* allow a fast breakout */
3111 /* We define a tricky preprocessor directive. This will give us
3112 * maximum performance without the loss of control or errors produced
3113 * by typos.
3115 #define RET_IF(s) if ((SymbolDetect & SD_##s) && \
3116 (yyleng == sizeof(#s) - 1) && \
3117 (strncmp(retvalue, \
3118 #s, \
3119 sizeof(#s) - 1) == 0)) \
3120 return(s)
3121 /* e.g. RET_IF(INPUT); is replaced by:
3122 * if ((SymbolDetect & SD_INPUT) &&
3123 * (yyleng == sizeof("INPUT") - 1) &&
3124 * (strncmp(retvalue,
3125 * "INPUT",
3126 * sizeof("INPUT") - 1) == 0))
3127 * return(s);
3129 RET_IF(INPUT);
3130 RET_IF(OUTPUT);
3131 RET_IF(ERROR);
3132 RET_IF(NORMAL);
3133 RET_IF(APPEND);
3134 RET_IF(REPLACE);
3135 RET_IF(STREAM);
3136 RET_IF(STEM);
3137 RET_IF(LIFO);
3138 RET_IF(FIFO);
3139 #undef RET_IF
3141 return SIMSYMBOL ; }
3142 YY_BREAK
3143 case 84:
3144 YY_RULE_SETUP
3145 #line 1148 "./lexsrc.l"
3147 lasta = 1 ;
3148 SET_NEXTSTART() ;
3149 return ')' ; }
3150 YY_BREAK
3151 case 85:
3152 YY_RULE_SETUP
3153 #line 1153 "./lexsrc.l"
3155 BEGIN other ;
3156 if (preva==1)
3158 nexta = dontlast = 1 ;
3159 code = '(' ;
3160 SET_NEXTSTART() ;
3161 return CONCATENATE ;
3163 SET_NEXTSTART() ;
3164 return '(' ; }
3165 YY_BREAK
3166 case 86:
3167 YY_RULE_SETUP
3168 #line 1165 "./lexsrc.l"
3170 SET_NEXTSTART() ;
3171 return ',' ; }
3172 YY_BREAK
3173 case 87:
3174 YY_RULE_SETUP
3175 #line 1169 "./lexsrc.l"
3177 BEGIN other ;
3178 SET_NEXTSTART() ;
3179 return '-' ; }
3180 YY_BREAK
3181 case 88:
3182 YY_RULE_SETUP
3183 #line 1174 "./lexsrc.l"
3185 BEGIN other ;
3186 SET_NEXTSTART() ;
3187 return '+' ; }
3188 YY_BREAK
3189 case 89:
3190 YY_RULE_SETUP
3191 #line 1179 "./lexsrc.l"
3193 SET_NEXTSTART() ;
3194 return '/' ; }
3195 YY_BREAK
3196 case 90:
3197 YY_RULE_SETUP
3198 #line 1183 "./lexsrc.l"
3200 SET_NEXTSTART() ;
3201 return '%' ; }
3202 YY_BREAK
3203 case 91:
3204 YY_RULE_SETUP
3205 #line 1187 "./lexsrc.l"
3207 SET_NEXTSTART() ;
3208 return '*' ; }
3209 YY_BREAK
3210 case 92:
3211 YY_RULE_SETUP
3212 #line 1191 "./lexsrc.l"
3214 SET_NEXTSTART() ;
3215 return '|' ; }
3216 YY_BREAK
3217 case 93:
3218 YY_RULE_SETUP
3219 #line 1195 "./lexsrc.l"
3221 SET_NEXTSTART() ;
3222 return '&' ; }
3223 YY_BREAK
3224 case 94:
3225 YY_RULE_SETUP
3226 #line 1199 "./lexsrc.l"
3228 SET_NEXTSTART() ;
3229 return '=' ; }
3230 YY_BREAK
3231 case 95:
3232 YY_RULE_SETUP
3233 #line 1203 "./lexsrc.l"
3235 /* why don't I have a {bl} in the beginning of this re? bug? */
3236 BEGIN other ;
3237 SET_NEXTSTART() ;
3238 return NOT ; }
3239 YY_BREAK
3240 case 96:
3241 YY_RULE_SETUP
3242 #line 1209 "./lexsrc.l"
3244 SET_NEXTSTART() ;
3245 return GTGT ; }
3246 YY_BREAK
3247 case 97:
3248 YY_RULE_SETUP
3249 #line 1213 "./lexsrc.l"
3251 SET_NEXTSTART() ;
3252 return LTLT ; }
3253 YY_BREAK
3254 case 98:
3255 YY_RULE_SETUP
3256 #line 1217 "./lexsrc.l"
3258 SET_NEXTSTART() ;
3259 return NOTGTGT ; }
3260 YY_BREAK
3261 case 99:
3262 YY_RULE_SETUP
3263 #line 1221 "./lexsrc.l"
3265 SET_NEXTSTART() ;
3266 return NOTLTLT ; }
3267 YY_BREAK
3268 case 100:
3269 YY_RULE_SETUP
3270 #line 1225 "./lexsrc.l"
3272 SET_NEXTSTART() ;
3273 return GTGTE ; }
3274 YY_BREAK
3275 case 101:
3276 YY_RULE_SETUP
3277 #line 1229 "./lexsrc.l"
3279 SET_NEXTSTART() ;
3280 return LTLTE ; }
3281 YY_BREAK
3282 case 102:
3283 YY_RULE_SETUP
3284 #line 1233 "./lexsrc.l"
3286 SET_NEXTSTART() ;
3287 return GT ; }
3288 YY_BREAK
3289 case 103:
3290 YY_RULE_SETUP
3291 #line 1237 "./lexsrc.l"
3293 SET_NEXTSTART() ;
3294 return GTE ; }
3295 YY_BREAK
3296 case 104:
3297 YY_RULE_SETUP
3298 #line 1241 "./lexsrc.l"
3300 SET_NEXTSTART() ;
3301 return LT ; }
3302 YY_BREAK
3303 case 105:
3304 YY_RULE_SETUP
3305 #line 1245 "./lexsrc.l"
3307 SET_NEXTSTART() ;
3308 return LTE ; }
3309 YY_BREAK
3310 case 106:
3311 YY_RULE_SETUP
3312 #line 1249 "./lexsrc.l"
3314 SET_NEXTSTART() ;
3315 return DIFFERENT ; }
3316 YY_BREAK
3317 case 107:
3318 YY_RULE_SETUP
3319 #line 1253 "./lexsrc.l"
3321 SET_NEXTSTART() ;
3322 return EQUALEQUAL ; }
3323 YY_BREAK
3324 case 108:
3325 YY_RULE_SETUP
3326 #line 1257 "./lexsrc.l"
3328 SET_NEXTSTART() ;
3329 return NOTEQUALEQUAL ; }
3330 YY_BREAK
3331 case 109:
3332 YY_RULE_SETUP
3333 #line 1261 "./lexsrc.l"
3335 SET_NEXTSTART() ;
3336 return MODULUS ; }
3337 YY_BREAK
3338 case 110:
3339 YY_RULE_SETUP
3340 #line 1265 "./lexsrc.l"
3342 SET_NEXTSTART() ;
3343 return XOR ; }
3344 YY_BREAK
3345 case 111:
3346 YY_RULE_SETUP
3347 #line 1269 "./lexsrc.l"
3349 SET_NEXTSTART() ;
3350 return CONCATENATE ; }
3351 YY_BREAK
3352 case 112:
3353 YY_RULE_SETUP
3354 #line 1273 "./lexsrc.l"
3356 SET_NEXTSTART() ;
3357 return EXP ; }
3358 YY_BREAK
3359 case 113:
3360 YY_RULE_SETUP
3361 #line 1277 "./lexsrc.l"
3363 if (in_address == in_address_value) /* Always allow spaces in the VALUE */
3364 { /* part of the ADDRESS stmt. */
3365 SET_NEXTSTART() ;
3366 return SPACE ;
3368 if (kill_this_space)
3370 SET_NEXTSTART() ;
3371 return yylex() ;
3373 SET_NEXTSTART() ;
3374 return (((in_parse)&&(!seek_with)) ? yylex() : SPACE) ; }
3375 YY_BREAK
3376 case 114:
3377 YY_RULE_SETUP
3378 #line 1291 "./lexsrc.l"
3380 SET_NEXTSTART() ;
3381 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
3382 exiterror( ERR_UNMATCHED_QUOTE, 0 ) ; }
3383 YY_BREAK
3384 case 115:
3385 YY_RULE_SETUP
3386 #line 1297 "./lexsrc.l"
3388 SET_NEXTSTART() ;
3389 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
3390 exiterror( ERR_INVALID_CHAR, 1, yytext[0], yytext[0] ) ; }
3391 YY_BREAK
3392 case 116:
3393 YY_RULE_SETUP
3394 #line 1302 "./lexsrc.l"
3396 SET_NEXTSTART() ;
3397 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
3398 exiterror( ERR_SYMBOL_EXPECTED, 1, yytext ) ;}
3399 YY_BREAK
3400 case 117:
3401 YY_RULE_SETUP
3402 #line 1307 "./lexsrc.l"
3404 SET_NEXTSTART() ;
3405 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
3406 exiterror( ERR_INTERPRETER_FAILURE, 1, __FILE__, __LINE__, "" ) ;}
3407 YY_BREAK
3408 case 118:
3409 YY_RULE_SETUP
3410 #line 1313 "./lexsrc.l"
3411 ECHO;
3412 YY_BREAK
3413 #line 3414 "./lexsrc.c"
3414 case YY_STATE_EOF(INITIAL):
3415 case YY_STATE_EOF(comm):
3416 case YY_STATE_EOF(signal):
3417 case YY_STATE_EOF(sgtype):
3418 case YY_STATE_EOF(procd):
3419 case YY_STATE_EOF(parse):
3420 case YY_STATE_EOF(then):
3421 case YY_STATE_EOF(with):
3422 case YY_STATE_EOF(numeric):
3423 case YY_STATE_EOF(do1):
3424 case YY_STATE_EOF(other):
3425 case YY_STATE_EOF(value1):
3426 case YY_STATE_EOF(ifcont):
3427 case YY_STATE_EOF(signame):
3428 case YY_STATE_EOF(nmform):
3429 yyterminate();
3430 #line 566 "flex.skl"
3432 case YY_END_OF_BUFFER:
3434 /* Amount of text matched not including the EOB char. */
3435 int yy_amount_of_matched_text = (int) (yy_cp - (char *) yytext_ptr) - 1;
3437 /* Undo the effects of YY_DO_BEFORE_ACTION. */
3438 *yy_cp = yy_hold_char;
3439 YY_RESTORE_YY_MORE_OFFSET
3441 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
3443 /* We're scanning a new file or input source. It's
3444 * possible that this happened because the user
3445 * just pointed yyin at a new source and called
3446 * yylex(). If so, then we have to assure
3447 * consistency between yy_current_buffer and our
3448 * globals. Here is the right place to do so, because
3449 * this is the first action (other than possibly a
3450 * back-up) that will match for the new input source.
3452 yy_n_chars = yy_current_buffer->yy_n_chars;
3453 yy_current_buffer->yy_input_file = yyin;
3454 yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
3457 /* Note that here we test for yy_c_buf_p "<=" to the position
3458 * of the first EOB in the buffer, since yy_c_buf_p will
3459 * already have been incremented past the NUL character
3460 * (since all states make transitions on EOB to the
3461 * end-of-buffer state). Contrast this with the test
3462 * in input().
3464 if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
3465 { /* This was really a NUL. */
3466 yy_state_type yy_next_state;
3468 yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
3470 yy_current_state = yy_get_previous_state();
3472 /* Okay, we're now positioned to make the NUL
3473 * transition. We couldn't have
3474 * yy_get_previous_state() go ahead and do it
3475 * for us because it doesn't know how to deal
3476 * with the possibility of jamming (and we don't
3477 * want to build jamming into it because then it
3478 * will run more slowly).
3481 yy_next_state = yy_try_NUL_trans( yy_current_state );
3483 yy_bp = yytext_ptr + YY_MORE_ADJ;
3485 if ( yy_next_state )
3487 /* Consume the NUL. */
3488 yy_cp = ++yy_c_buf_p;
3489 yy_current_state = yy_next_state;
3490 goto yy_match;
3493 else
3495 yy_cp = yy_c_buf_p;
3496 #line 632 "flex.skl"
3497 goto yy_find_action;
3501 else switch ( yy_get_next_buffer() )
3503 case EOB_ACT_END_OF_FILE:
3505 yy_did_buffer_switch_on_eof = 0;
3507 if ( yywrap() )
3509 /* Note: because we've taken care in
3510 * yy_get_next_buffer() to have set up
3511 * yytext, we can now set up
3512 * yy_c_buf_p so that if some total
3513 * hoser (like flex itself) wants to
3514 * call the scanner after we return the
3515 * YY_NULL, it'll still work - another
3516 * YY_NULL will get returned.
3518 yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
3520 yy_act = YY_STATE_EOF(YY_START);
3521 goto do_action;
3524 else
3526 if ( ! yy_did_buffer_switch_on_eof )
3527 YY_NEW_FILE;
3529 break;
3532 case EOB_ACT_CONTINUE_SCAN:
3533 yy_c_buf_p =
3534 yytext_ptr + yy_amount_of_matched_text;
3536 yy_current_state = yy_get_previous_state();
3538 yy_cp = yy_c_buf_p;
3539 yy_bp = yytext_ptr + YY_MORE_ADJ;
3540 goto yy_match;
3542 case EOB_ACT_LAST_MATCH:
3543 yy_c_buf_p =
3544 &yy_current_buffer->yy_ch_buf[yy_n_chars];
3546 yy_current_state = yy_get_previous_state();
3548 yy_cp = yy_c_buf_p;
3549 yy_bp = yytext_ptr + YY_MORE_ADJ;
3550 goto yy_find_action;
3552 break;
3555 default:
3556 YY_FATAL_ERROR(
3557 "fatal flex scanner internal error--no action found" );
3558 } /* end of action switch */
3559 } /* end of scanning one token */
3560 } /* end of yylex */
3562 #line 782 "flex.skl"
3564 /* yy_get_next_buffer - try to read in a new buffer
3566 * Returns a code representing an action:
3567 * EOB_ACT_LAST_MATCH -
3568 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
3569 * EOB_ACT_END_OF_FILE - end of file
3572 #line 793 "flex.skl"
3573 static int yy_get_next_buffer()
3574 #line 799 "flex.skl"
3576 register char *dest = yy_current_buffer->yy_ch_buf;
3577 register char *source = yytext_ptr;
3578 register int number_to_move, i;
3579 int ret_val;
3581 if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
3582 YY_FATAL_ERROR(
3583 "fatal flex scanner internal error--end of buffer missed" );
3585 if ( yy_current_buffer->yy_fill_buffer == 0 )
3586 { /* Don't try to fill the buffer, so this is an EOF. */
3587 if ( yy_c_buf_p - (char *) yytext_ptr - YY_MORE_ADJ == 1 )
3589 /* We matched a single character, the EOB, so
3590 * treat this as a final EOF.
3592 return EOB_ACT_END_OF_FILE;
3595 else
3597 /* We matched some text prior to the EOB, first
3598 * process it.
3600 return EOB_ACT_LAST_MATCH;
3604 /* Try to read more data. */
3606 /* First move last chars to start of buffer. */
3607 number_to_move = (int) (yy_c_buf_p - (char *) yytext_ptr) - 1;
3609 for ( i = 0; i < number_to_move; ++i )
3610 *(dest++) = *(source++);
3612 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
3613 /* don't do the read, it's not guaranteed to return an EOF,
3614 * just force an EOF
3616 yy_current_buffer->yy_n_chars = yy_n_chars = 0;
3618 else
3620 int num_to_read =
3621 yy_current_buffer->yy_buf_size - number_to_move - 1;
3623 while ( num_to_read <= 0 )
3624 { /* Not enough room in the buffer - grow it. */
3625 #ifdef YY_USES_REJECT
3626 YY_FATAL_ERROR(
3627 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
3628 #else
3630 /* just a shorter name for the current buffer */
3631 YY_BUFFER_STATE b = yy_current_buffer;
3633 int yy_c_buf_p_offset =
3634 (int) (yy_c_buf_p - b->yy_ch_buf);
3636 if ( b->yy_is_our_buffer )
3638 int new_size = b->yy_buf_size * 2;
3640 if ( new_size <= 0 )
3641 b->yy_buf_size += b->yy_buf_size / 8;
3642 else
3643 b->yy_buf_size *= 2;
3645 b->yy_ch_buf = (char *)
3646 /* Include room in for 2 EOB chars. */
3647 yy_flex_realloc( (void *) b->yy_ch_buf,
3648 b->yy_buf_size + 2 );
3650 else
3651 /* Can't grow it, we don't own it. */
3652 b->yy_ch_buf = 0;
3654 if ( ! b->yy_ch_buf )
3655 YY_FATAL_ERROR(
3656 "fatal error - scanner input buffer overflow" );
3658 yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
3660 num_to_read = yy_current_buffer->yy_buf_size -
3661 number_to_move - 1;
3662 #endif
3665 if ( num_to_read > YY_READ_BUF_SIZE )
3666 num_to_read = YY_READ_BUF_SIZE;
3668 /* Read in more data. */
3669 YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
3670 yy_n_chars, num_to_read );
3672 yy_current_buffer->yy_n_chars = yy_n_chars;
3675 if ( yy_n_chars == 0 )
3677 if ( number_to_move == YY_MORE_ADJ )
3679 ret_val = EOB_ACT_END_OF_FILE;
3680 yyrestart( yyin );
3683 else
3685 ret_val = EOB_ACT_LAST_MATCH;
3686 yy_current_buffer->yy_buffer_status =
3687 YY_BUFFER_EOF_PENDING;
3691 else
3692 ret_val = EOB_ACT_CONTINUE_SCAN;
3694 yy_n_chars += number_to_move;
3695 yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
3696 yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
3698 yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
3700 return ret_val;
3704 /* yy_get_previous_state - get the state just before the EOB char was reached */
3706 #line 932 "flex.skl"
3707 static yy_state_type yy_get_previous_state()
3708 #line 938 "flex.skl"
3710 register yy_state_type yy_current_state;
3711 register char *yy_cp;
3713 yy_current_state = yy_start;
3714 yy_state_ptr = yy_state_buf;
3715 *yy_state_ptr++ = yy_current_state;
3716 #line 944 "flex.skl"
3718 for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
3720 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
3721 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3723 yy_current_state = (int) yy_def[yy_current_state];
3724 if ( yy_current_state >= 848 )
3725 yy_c = yy_meta[(unsigned int) yy_c];
3727 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
3728 *yy_state_ptr++ = yy_current_state;
3729 #line 949 "flex.skl"
3732 return yy_current_state;
3736 /* yy_try_NUL_trans - try to make a transition on the NUL character
3738 * synopsis
3739 * next_state = yy_try_NUL_trans( current_state );
3742 #line 963 "flex.skl"
3743 #ifdef YY_USE_PROTOS
3744 static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
3745 #else
3746 static yy_state_type yy_try_NUL_trans( yy_current_state )
3747 yy_state_type yy_current_state;
3748 #endif
3749 #line 974 "flex.skl"
3751 register int yy_is_jam;
3753 register YY_CHAR yy_c = 1;
3754 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
3756 yy_current_state = (int) yy_def[yy_current_state];
3757 if ( yy_current_state >= 848 )
3758 yy_c = yy_meta[(unsigned int) yy_c];
3760 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
3761 yy_is_jam = (yy_current_state == 847);
3762 if ( ! yy_is_jam )
3763 *yy_state_ptr++ = yy_current_state;
3764 #line 978 "flex.skl"
3766 return yy_is_jam ? 0 : yy_current_state;
3770 #line 985 "flex.skl"
3771 #ifndef YY_NO_UNPUT
3772 #ifdef YY_USE_PROTOS
3773 static void yyunput( int c, register char *yy_bp )
3774 #else
3775 static void yyunput( c, yy_bp )
3776 int c;
3777 register char *yy_bp;
3778 #endif
3779 #line 998 "flex.skl"
3781 register char *yy_cp = yy_c_buf_p;
3783 /* undo effects of setting up yytext */
3784 *yy_cp = yy_hold_char;
3786 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
3787 { /* need to shift things up to make room */
3788 /* +2 for EOB chars. */
3789 register int number_to_move = yy_n_chars + 2;
3790 register char *dest = &yy_current_buffer->yy_ch_buf[
3791 yy_current_buffer->yy_buf_size + 2];
3792 register char *source =
3793 &yy_current_buffer->yy_ch_buf[number_to_move];
3795 while ( source > yy_current_buffer->yy_ch_buf )
3796 *--dest = *--source;
3798 yy_cp += (int) (dest - source);
3799 yy_bp += (int) (dest - source);
3800 yy_current_buffer->yy_n_chars =
3801 yy_n_chars = yy_current_buffer->yy_buf_size;
3803 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
3804 YY_FATAL_ERROR( "flex scanner push-back overflow" );
3807 *--yy_cp = (char) c;
3809 #line 1029 "flex.skl"
3811 yytext_ptr = yy_bp;
3812 yy_hold_char = *yy_cp;
3813 yy_c_buf_p = yy_cp;
3815 #line 1036 "flex.skl"
3816 #endif /* ifndef YY_NO_UNPUT */
3817 #line 1039 "flex.skl"
3820 #line 1043 "flex.skl"
3821 #ifdef __cplusplus
3822 static int yyinput()
3823 #else
3824 static int input()
3825 #endif
3826 #line 1053 "flex.skl"
3828 int c;
3830 *yy_c_buf_p = yy_hold_char;
3832 if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
3834 /* yy_c_buf_p now points to the character we want to return.
3835 * If this occurs *before* the EOB characters, then it's a
3836 * valid NUL; if not, then we've hit the end of the buffer.
3838 if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
3839 /* This was really a NUL. */
3840 *yy_c_buf_p = '\0';
3842 else
3843 { /* need more input */
3844 int offset = yy_c_buf_p - (char *) yytext_ptr;
3845 ++yy_c_buf_p;
3847 switch ( yy_get_next_buffer() )
3849 case EOB_ACT_LAST_MATCH:
3850 /* This happens because yy_g_n_b()
3851 * sees that we've accumulated a
3852 * token and flags that we need to
3853 * try matching the token before
3854 * proceeding. But for input(),
3855 * there's no matching to consider.
3856 * So convert the EOB_ACT_LAST_MATCH
3857 * to EOB_ACT_END_OF_FILE.
3860 /* Reset buffer status. */
3861 yyrestart( yyin );
3863 /* fall through */
3865 case EOB_ACT_END_OF_FILE:
3867 if ( yywrap() )
3868 return EOF;
3870 if ( ! yy_did_buffer_switch_on_eof )
3871 YY_NEW_FILE;
3872 #ifdef __cplusplus
3873 return yyinput();
3874 #else
3875 return input();
3876 #endif
3879 case EOB_ACT_CONTINUE_SCAN:
3880 yy_c_buf_p = yytext_ptr + offset;
3881 break;
3886 c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */
3887 *yy_c_buf_p = '\0'; /* preserve yytext */
3888 yy_hold_char = *++yy_c_buf_p;
3890 #line 1118 "flex.skl"
3892 return c;
3896 #line 1125 "flex.skl"
3897 #ifdef YY_USE_PROTOS
3898 void yyrestart( FILE *input_file )
3899 #else
3900 void yyrestart( input_file )
3901 FILE *input_file;
3902 #endif
3903 #line 1136 "flex.skl"
3905 if ( ! yy_current_buffer )
3906 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
3908 yy_init_buffer( yy_current_buffer, input_file );
3909 yy_load_buffer_state();
3913 #line 1147 "flex.skl"
3914 #ifdef YY_USE_PROTOS
3915 void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
3916 #else
3917 void yy_switch_to_buffer( new_buffer )
3918 YY_BUFFER_STATE new_buffer;
3919 #endif
3920 #line 1158 "flex.skl"
3922 if ( yy_current_buffer == new_buffer )
3923 return;
3925 if ( yy_current_buffer )
3927 /* Flush out information for old buffer. */
3928 *yy_c_buf_p = yy_hold_char;
3929 yy_current_buffer->yy_buf_pos = yy_c_buf_p;
3930 yy_current_buffer->yy_n_chars = yy_n_chars;
3933 yy_current_buffer = new_buffer;
3934 yy_load_buffer_state();
3936 /* We don't actually know whether we did this switch during
3937 * EOF (yywrap()) processing, but the only time this flag
3938 * is looked at is after yywrap() is called, so it's safe
3939 * to go ahead and always set it.
3941 yy_did_buffer_switch_on_eof = 1;
3945 #line 1184 "flex.skl"
3946 #ifdef YY_USE_PROTOS
3947 void yy_load_buffer_state( void )
3948 #else
3949 void yy_load_buffer_state()
3950 #endif
3951 #line 1194 "flex.skl"
3953 yy_n_chars = yy_current_buffer->yy_n_chars;
3954 yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
3955 yyin = yy_current_buffer->yy_input_file;
3956 yy_hold_char = *yy_c_buf_p;
3960 #line 1204 "flex.skl"
3961 #ifdef YY_USE_PROTOS
3962 YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
3963 #else
3964 YY_BUFFER_STATE yy_create_buffer( file, size )
3965 FILE *file;
3966 int size;
3967 #endif
3968 #line 1216 "flex.skl"
3970 YY_BUFFER_STATE b;
3972 b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
3973 if ( ! b )
3974 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
3976 b->yy_buf_size = size;
3978 /* yy_ch_buf has to be 2 characters longer than the size given because
3979 * we need to put in 2 end-of-buffer characters.
3981 b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
3982 if ( ! b->yy_ch_buf )
3983 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
3985 b->yy_is_our_buffer = 1;
3987 yy_init_buffer( b, file );
3989 return b;
3993 #line 1242 "flex.skl"
3994 #ifdef YY_USE_PROTOS
3995 void yy_delete_buffer( YY_BUFFER_STATE b )
3996 #else
3997 void yy_delete_buffer( b )
3998 YY_BUFFER_STATE b;
3999 #endif
4000 #line 1253 "flex.skl"
4002 if ( ! b )
4003 return;
4005 if ( b == yy_current_buffer )
4006 yy_current_buffer = (YY_BUFFER_STATE) 0;
4008 if ( b->yy_is_our_buffer )
4009 yy_flex_free( (void *) b->yy_ch_buf );
4011 yy_flex_free( (void *) b );
4015 #line 1269 "flex.skl"
4016 #ifndef YY_ALWAYS_INTERACTIVE
4017 #ifndef YY_NEVER_INTERACTIVE
4018 extern int isatty YY_PROTO(( int ));
4019 #endif
4020 #endif
4022 #ifdef YY_USE_PROTOS
4023 void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
4024 #else
4025 void yy_init_buffer( b, file )
4026 YY_BUFFER_STATE b;
4027 FILE *file;
4028 #endif
4030 #line 1289 "flex.skl"
4033 #line 1292 "flex.skl"
4034 yy_flush_buffer( b );
4036 b->yy_input_file = file;
4037 b->yy_fill_buffer = 1;
4039 #line 1299 "flex.skl"
4040 #if YY_ALWAYS_INTERACTIVE
4041 b->yy_is_interactive = 1;
4042 #else
4043 #if YY_NEVER_INTERACTIVE
4044 b->yy_is_interactive = 0;
4045 #else
4046 b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
4047 #endif
4048 #endif
4049 #line 1313 "flex.skl"
4053 #line 1318 "flex.skl"
4054 #ifdef YY_USE_PROTOS
4055 void yy_flush_buffer( YY_BUFFER_STATE b )
4056 #else
4057 void yy_flush_buffer( b )
4058 YY_BUFFER_STATE b;
4059 #endif
4061 #line 1330 "flex.skl"
4063 if ( ! b )
4064 return;
4066 b->yy_n_chars = 0;
4068 /* We always need two end-of-buffer characters. The first causes
4069 * a transition to the end-of-buffer state. The second causes
4070 * a jam in that state.
4072 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
4073 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
4075 b->yy_buf_pos = &b->yy_ch_buf[0];
4077 b->yy_at_bol = 1;
4078 b->yy_buffer_status = YY_BUFFER_NEW;
4080 if ( b == yy_current_buffer )
4081 yy_load_buffer_state();
4083 #line 1353 "flex.skl"
4086 #ifndef YY_NO_SCAN_BUFFER
4087 #line 1358 "flex.skl"
4088 #ifdef YY_USE_PROTOS
4089 YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
4090 #else
4091 YY_BUFFER_STATE yy_scan_buffer( base, size )
4092 char *base;
4093 yy_size_t size;
4094 #endif
4096 YY_BUFFER_STATE b;
4098 if ( size < 2 ||
4099 base[size-2] != YY_END_OF_BUFFER_CHAR ||
4100 base[size-1] != YY_END_OF_BUFFER_CHAR )
4101 /* They forgot to leave room for the EOB's. */
4102 return 0;
4104 b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
4105 if ( ! b )
4106 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
4108 b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
4109 b->yy_buf_pos = b->yy_ch_buf = base;
4110 b->yy_is_our_buffer = 0;
4111 b->yy_input_file = 0;
4112 b->yy_n_chars = b->yy_buf_size;
4113 b->yy_is_interactive = 0;
4114 b->yy_at_bol = 1;
4115 b->yy_fill_buffer = 0;
4116 b->yy_buffer_status = YY_BUFFER_NEW;
4118 yy_switch_to_buffer( b );
4120 return b;
4122 #endif
4123 #line 1395 "flex.skl"
4126 #ifndef YY_NO_SCAN_STRING
4127 #line 1400 "flex.skl"
4128 #ifdef YY_USE_PROTOS
4129 YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
4130 #else
4131 YY_BUFFER_STATE yy_scan_string( yy_str )
4132 yyconst char *yy_str;
4133 #endif
4135 int len;
4136 for ( len = 0; yy_str[len]; ++len )
4139 return yy_scan_bytes( yy_str, len );
4141 #endif
4142 #line 1416 "flex.skl"
4145 #ifndef YY_NO_SCAN_BYTES
4146 #line 1421 "flex.skl"
4147 #ifdef YY_USE_PROTOS
4148 YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
4149 #else
4150 YY_BUFFER_STATE yy_scan_bytes( bytes, len )
4151 yyconst char *bytes;
4152 int len;
4153 #endif
4155 YY_BUFFER_STATE b;
4156 char *buf;
4157 yy_size_t n;
4158 int i;
4160 /* Get memory for full buffer, including space for trailing EOB's. */
4161 n = len + 2;
4162 buf = (char *) yy_flex_alloc( n );
4163 if ( ! buf )
4164 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
4166 for ( i = 0; i < len; ++i )
4167 buf[i] = bytes[i];
4169 buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
4171 b = yy_scan_buffer( buf, n );
4172 if ( ! b )
4173 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
4175 /* It's okay to grow etc. this buffer, and we should throw it
4176 * away when we're done.
4178 b->yy_is_our_buffer = 1;
4180 return b;
4182 #endif
4183 #line 1459 "flex.skl"
4186 #ifndef YY_NO_PUSH_STATE
4187 #line 1464 "flex.skl"
4188 #ifdef YY_USE_PROTOS
4189 static void yy_push_state( int new_state )
4190 #else
4191 static void yy_push_state( new_state )
4192 int new_state;
4193 #endif
4194 #line 1475 "flex.skl"
4196 if ( yy_start_stack_ptr >= yy_start_stack_depth )
4198 yy_size_t new_size;
4200 yy_start_stack_depth += YY_START_STACK_INCR;
4201 new_size = yy_start_stack_depth * sizeof( int );
4203 if ( ! yy_start_stack )
4204 yy_start_stack = (int *) yy_flex_alloc( new_size );
4206 else
4207 yy_start_stack = (int *) yy_flex_realloc(
4208 (void *) yy_start_stack, new_size );
4210 if ( ! yy_start_stack )
4211 YY_FATAL_ERROR(
4212 "out of memory expanding start-condition stack" );
4215 yy_start_stack[yy_start_stack_ptr++] = YY_START;
4217 BEGIN(new_state);
4219 #endif
4222 #ifndef YY_NO_POP_STATE
4223 #line 1505 "flex.skl"
4224 static void yy_pop_state()
4225 #line 1511 "flex.skl"
4227 if ( --yy_start_stack_ptr < 0 )
4228 YY_FATAL_ERROR( "start-condition stack underflow" );
4230 BEGIN(yy_start_stack[yy_start_stack_ptr]);
4232 #endif
4235 #ifndef YY_NO_TOP_STATE
4236 #line 1523 "flex.skl"
4237 static int yy_top_state()
4238 #line 1529 "flex.skl"
4240 return yy_start_stack[yy_start_stack_ptr - 1];
4242 #endif
4244 #ifndef YY_EXIT_FAILURE
4245 #define YY_EXIT_FAILURE 2
4246 #endif
4248 #line 1540 "flex.skl"
4249 #ifdef YY_USE_PROTOS
4250 static void yy_fatal_error( yyconst char msg[] )
4251 #else
4252 static void yy_fatal_error( msg )
4253 char msg[];
4254 #endif
4256 (void) fprintf( stderr, "%s\n", msg );
4257 exit( YY_EXIT_FAILURE );
4260 #line 1561 "flex.skl"
4263 /* Redefine yyless() so it works in section 3 code. */
4265 #undef yyless
4266 #define yyless(n) \
4267 do \
4269 /* Undo effects of setting up yytext. */ \
4270 yytext[yyleng] = yy_hold_char; \
4271 yy_c_buf_p = yytext + n; \
4272 yy_hold_char = *yy_c_buf_p; \
4273 *yy_c_buf_p = '\0'; \
4274 yyleng = n; \
4276 while ( 0 )
4279 /* Internal utility routines. */
4281 #ifndef yytext_ptr
4282 #ifdef YY_USE_PROTOS
4283 static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
4284 #else
4285 static void yy_flex_strncpy( s1, s2, n )
4286 char *s1;
4287 yyconst char *s2;
4288 int n;
4289 #endif
4291 register int i;
4292 for ( i = 0; i < n; ++i )
4293 s1[i] = s2[i];
4295 #endif
4297 #ifdef YY_NEED_STRLEN
4298 #ifdef YY_USE_PROTOS
4299 static int yy_flex_strlen( yyconst char *s )
4300 #else
4301 static int yy_flex_strlen( s )
4302 yyconst char *s;
4303 #endif
4305 register int n;
4306 for ( n = 0; s[n]; ++n )
4309 return n;
4311 #endif
4314 #ifdef YY_USE_PROTOS
4315 static void *yy_flex_alloc( yy_size_t size )
4316 #else
4317 static void *yy_flex_alloc( size )
4318 yy_size_t size;
4319 #endif
4321 return (void *) malloc( size );
4324 #ifdef YY_USE_PROTOS
4325 static void *yy_flex_realloc( void *ptr, yy_size_t size )
4326 #else
4327 static void *yy_flex_realloc( ptr, size )
4328 void *ptr;
4329 yy_size_t size;
4330 #endif
4332 /* The cast to (char *) in the following accommodates both
4333 * implementations that use char* generic pointers, and those
4334 * that use void* generic pointers. It works with the latter
4335 * because both ANSI C and C++ allow castless assignment from
4336 * any pointer type to void*, and deal with argument conversions
4337 * as though doing an assignment.
4339 return (void *) realloc( (char *) ptr, size );
4342 #ifdef YY_USE_PROTOS
4343 static void yy_flex_free( void *ptr )
4344 #else
4345 static void yy_flex_free( ptr )
4346 void *ptr;
4347 #endif
4349 free( ptr );
4352 #if YY_MAIN
4353 int main()
4355 yylex();
4356 return 0;
4358 #endif
4359 #line 1313 "./lexsrc.l"
4362 #define NORMALSTAT 0
4363 #define COMMENTSTAT 1
4364 #define SINGLEQUOTE 2
4365 #define DOUBLEQUOTE 3
4368 /* rmspc uppercases all characters and removes blanks from a string.
4369 * Returns the input string.
4371 static YY_CHAR_TYPE *rmspc( YY_CHAR_TYPE *instr )
4373 YY_CHAR_TYPE *retval=instr ,
4374 *dest =instr ,
4377 while ((c = *instr++) != '\0')
4379 c = (YY_CHAR_TYPE) toupper(c);
4380 /* These characters are treated as blanks: */
4381 if ((c!='`') && (c!=' ') && (c!=',') && (c!='\t') && (c!='\n'))
4382 *dest++ = c ;
4384 *dest = '\0' ;
4386 return( retval ) ;
4390 /* get_next_line: Lower level input fetcher.
4391 * Reads exactly one line from the input stream (file or string).
4392 * All EOL characters are removed and the result is stored in
4393 * last_source_line. A check for line overflow occurred here.
4394 * A special check is done for CP/M ^Z (DOS and friends use this for
4395 * "backward" compatibility, too).
4396 * line is filled with valid values on success.
4397 * max must reflect size of line and should be at least BUFFERSIZE + 2;
4398 * Returns -1 (no input) or the number of valid chars in line.
4400 static int get_next_line( char *line, int max, FILE *stream )
4402 lineboxptr newline ;
4403 offsrcline *incore_newline;
4404 int pos = 0;
4405 int c = 0, nextEOL ;
4407 if (inEOF) /* You can't use myunputc if EOF is reached! */
4408 return EOF ;
4410 while (pos <= max - 2)
4412 /* get next char */
4413 if (bufptr>0)
4414 c = chbuffer[--bufptr] ;
4415 else if (ipretflag)
4417 if (interptr>=interptrmax)
4418 c = EOF ;
4419 else
4420 #ifdef ASCII_0_TERMINATES_STRING
4421 if ((c = *interptr++) == '\0')
4422 c = EOF ;
4423 #else
4424 c = *interptr++ ;
4425 #endif
4427 else
4428 c = getc(stream) ;
4430 if ((c=='\r') || (c=='\n') || (c==EOF))
4431 break ;
4432 line[pos++] = (char) (unsigned char) c ;
4435 /* first, check for overflow */
4436 if ((c!='\r') && (c!='\n') && (c!=EOF))
4438 parser_data.tline = linenr ; /* set tline for exiterror */
4439 exiterror( ERR_TOO_LONG_LINE, 0 ) ;
4442 /* We have either a (first) line terminator or EOF */
4443 if (c==EOF)
4445 if ((pos==1) && (line[0]=='\x1A')) /* CP/M ^Z EOF? */
4446 pos-- ;
4447 if (pos == 0)
4449 inEOF = 1 ;
4450 return EOF ;
4452 nextEOL = EOF;
4454 else
4456 /* get one more char */
4457 if (bufptr>0)
4458 nextEOL = chbuffer[--bufptr] ;
4459 else if (ipretflag)
4461 if (interptr>=interptrmax)
4462 nextEOL = EOF ;
4463 else
4464 #ifdef ASCII_0_TERMINATES_STRING
4465 if ((nextEOL = *interptr++) == '\0')
4466 nextEOL = EOF ;
4467 #else
4468 nextEOL = *interptr++ ;
4469 #endif
4471 else
4472 nextEOL = getc(stream) ;
4475 /* Decide if the next character is the last char of a EOL pair.
4476 * Valid pairs are CR/LF or LF/CR. Put nextEOL back if there is no pair.
4478 if (((c!='\n') || (nextEOL!='\r')) &&
4479 ((c!='\r') || (nextEOL!='\n')))
4480 chbuffer[bufptr++] = (short) nextEOL ;
4482 cch = 0 ; /* not needed ? */
4483 line[pos++] = '\n';
4485 if (parser_data.incore_source)
4486 { /* We can use the incore string to describe a source line. */
4487 incore_newline = FreshLine() ;
4488 incore_newline->length = pos - 1 ;
4489 /* FIXME: What happens on the second attempt to read EOF or with CRLF? */
4490 incore_newline->offset = interptr - parser_data.incore_source ;
4491 return pos ;
4494 newline = (lineboxptr)Malloc(sizeof(linebox)) ;
4495 newline->line = Str_make_TSD( parser_data.TSD, pos - 1 ) ;
4496 newline->line->len = pos - 1 ;
4497 memcpy(newline->line->value, line, pos - 1 ) ;
4498 newline->prev = parser_data.last_source_line ;
4499 newline->next = NULL ;
4500 newline->lineno = linenr++ ;
4502 if (parser_data.first_source_line==NULL)
4503 parser_data.first_source_line = newline ;
4504 else
4505 parser_data.last_source_line->next = newline ;
4506 parser_data.last_source_line = newline ;
4508 return pos ;
4511 /* fill_buffer: Higher level input fetcher.
4512 * (To allow the C-file to compile, all Rexx comments in this comment
4513 * are written as "{*" "*}" instead of the normal, C-like manner.)
4514 * Reads lines from the input stream (yyin or string) with get_next_line.
4515 * Only one line is returned to allow the saving of the line number.
4516 * This routine replaces all comments by '`' signs. This allows
4517 * the detection of a "pseudo" blank: The fragment "say x{* *}y" uses two
4518 * variables, not one called "xy". The parsing of comments must be done
4519 * here to check for the actual numbers of open and closes ("{*" and "*}").
4520 * While doing this we must always check for strings since "'{*'" is not part
4521 * of a comment.
4522 * Here is a problem: Is this a nested valid comment: "{* '{*' *} *}"?
4523 * I think so although you cannot remove the outer comment signs without an
4524 * error. Everything within a comment is a comment (per def.). Counting
4525 * opens and closes of comment signs is an ugly trick to help the user.
4526 * He/she must know what he/she is doing if nesting comments!
4528 * max_size gives the maximum size of buf. This is filled up with input.
4529 * We never return less than one character until EOF is reached. Thus, we
4530 * read more than one true input line if a comment spans over more than one
4531 * line.
4532 * A line will either be terminated by a single '\n' or by a blank. The
4533 * later one replaces a line continuation (',' [spaces] EOL).
4534 * Errors in this low
4536 * Conclusion: We have to fight very hard to set the expected line number.
4537 * * Comments spanning over lines set them on getting the
4538 * "follow" lines.
4539 * * Concatenated lines set
4541 static int fill_buffer( char *buf, int max_size )
4543 /* statics protected by regina_parser */
4544 static char line[BUFFERSIZE+2] ; /* special buffer to allow max_size */
4545 static int pos = 0, max = 0 ; /* being smaller than BUFFERSIZE+1 */
4546 static int nesting = 0; /* nesting level of comments */
4547 int nesting_start_line = 0; /* start line of comment for errortext() */
4548 char *dest, c;
4549 int i, squote, dquote;
4551 if (firstln == 0)
4553 firstln = 1;
4554 contline = 0;
4555 nesting = 0;
4556 pos = 0;
4557 max = get_next_line( line, sizeof(line), yyin ) ;
4558 if (max < 0) /* empty input file */
4559 return 0 ;
4560 #if 0
4561 if (line[0] == '#')
4562 { /* Ignore first line beginning this way for unix compat */
4563 max = 0;
4564 return fill_buffer( buf, max_size ) ;
4566 #else
4567 if (line[0] == '#')
4568 { /* Ignore first line beginning this way for unix compat */
4569 max = 5;
4570 memcpy( line, "/**/\n", 5 );
4572 #endif
4574 else if (pos < max) /* Are there still characters to transmit? */
4576 /* Buffer already checked for correctness */
4577 if (max_size > max - pos)
4578 max_size = max - pos;
4579 memcpy(buf, line + pos, max_size);
4580 pos += max_size;
4581 return(max_size);
4583 else /* Need next line */
4585 if (contline && !nesting)
4587 extnextline = ++nextline ;
4588 extnextstart = 1 ;
4589 contline = 0;
4591 pos = 0;
4592 max = get_next_line( line, sizeof(line), yyin ) ;
4593 if (max < 0) /* empty input file */
4595 if (nesting)
4597 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
4598 exiterror( ERR_UNMATCHED_QUOTE, 1 ) ;
4600 return 0 ;
4604 /* A new line is available, check first for an ending comment */
4605 dest = line; /* we change comments in line */
4606 if (nesting) /* This may lead to more line reading */
4609 * The first time extnextline is non-zero, we have the comment
4610 * starting sequence line. This is saved for use if no matching
4611 * ending comment sequence is found, so that the error message
4612 * reflects the start of the comment.
4613 * Regina feature request: #508788
4615 if ( extnextline < 0 )
4616 nesting_start_line = nextline+1;
4617 extnextline = ++nextline ;
4618 extnextstart = 1; /* See Reference (*) below */
4619 repeated_nesting:
4620 while (pos < max)
4622 c = line[pos];
4623 if (c == '*') /* start of comment end? */
4625 if (line[pos+1] == '/')
4626 { /* pos+1 always exists, at least '\n' or '\0' */
4627 if (--nesting == 0)
4629 pos += 2;
4630 *dest++ = '`';
4631 *dest++ = '`';
4632 break;
4634 *dest++ = '`';
4635 pos++;
4638 else if (c == '/') /* start of new begin? */
4640 if (line[pos+1] == '*')
4642 nesting++;
4643 *dest++ = '`';
4644 pos++;
4647 *dest++ = '`';
4648 pos++;
4650 if (pos >= max)
4652 pos = 0;
4653 max = get_next_line( line, sizeof(line), yyin ) ;
4654 if (max < 0) /* empty input file */
4656 if ( nesting_start_line )
4657 parser_data.tline = nesting_start_line ; /* set tline for exiterror */
4658 else
4659 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
4660 exiterror( ERR_UNMATCHED_QUOTE, 1 ) ;
4661 return 0 ;
4663 /* This is a comment continuation. If the lexer will return
4664 * something it already has a valid tline/tstart pair.
4665 * The lexer will return the current token and on the NEXT
4666 * call it expects a valid nextline/nextstart pair.
4668 extnextline = ++nextline; extnextstart = 1;
4669 dest = line; /* we change comments in line */
4670 goto repeated_nesting;
4672 extnextstart = pos + 1;
4673 if (contline)
4674 { /* Exception! Have a look at: "x='y',{*\n\n*}\n'z'". This should
4675 * result in "x = 'y' 'z'".
4676 * We must parse until EOL and check for whitespaces and comments...
4678 while (pos < max)
4680 c = line[pos];
4681 if (!isspace(c))
4683 if (c == '/')
4685 if (line[pos+1] == '*')
4687 pos += 2;
4688 nesting++;
4689 goto repeated_nesting;
4692 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
4693 exiterror( ERR_YACC_SYNTAX, 1, parser_data.tline ) ; /* standard error */
4695 pos++;
4697 /* All done, it was a continuation line. */
4698 /* contline will be resetted by: */
4699 return fill_buffer( buf, max_size ) ;
4702 /* We have something to play with. Run through the input and check for
4703 * strings including comments.
4705 squote = dquote = 0;
4706 while (pos < max)
4708 /* We use selective loops to reduce comparisons */
4709 if (nesting)
4712 c = line[pos];
4713 if (c == '*') /* start of comment end? */
4715 if (line[pos+1] == '/')
4716 { /* pos+1 always exists, at least '\n' or '\0' */
4717 if (--nesting == 0)
4719 pos += 2;
4720 *dest++ = '`';
4721 *dest++ = '`';
4722 break;
4724 pos++;
4727 else if (c == '/') /* start of new begin? */
4729 if (line[pos+1] == '*')
4731 nesting++;
4732 pos++;
4733 *dest++ = '`';
4736 pos++;
4737 *dest++ = '`';
4738 } while (pos < max);
4739 else if (squote)
4741 while ((c = line[pos]) != '\'')
4743 *dest++ = c;
4744 if (++pos >= max)
4746 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
4747 exiterror( ERR_UNMATCHED_QUOTE, 2 ) ;
4750 *dest++ = '\'';
4751 pos++;
4752 squote = 0;
4754 else if (dquote)
4756 while ((c = line[pos]) != '\"')
4758 *dest++ = c;
4759 if (++pos >= max)
4761 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
4762 exiterror( ERR_UNMATCHED_QUOTE, 3 ) ;
4765 *dest++ = '\"';
4766 pos++;
4767 dquote = 0;
4769 else
4770 while (pos < max)
4771 switch (c = line[pos])
4773 case '\'':
4774 *dest++ = c ;
4775 squote = 1 ;
4776 pos++ ;
4777 goto outer_loop;
4779 case '\"':
4780 *dest++ = c ;
4781 dquote = 1 ;
4782 pos++ ;
4783 goto outer_loop;
4785 case '/':
4786 if (line[pos + 1] == '*')
4788 *dest++ = '`' ;
4789 *dest++ = '`' ;
4790 pos += 2 ;
4791 nesting++ ;
4792 goto outer_loop;
4794 else
4796 *dest++ = c;
4797 pos++ ;
4799 break ;
4801 case '`':
4802 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
4803 exiterror( ERR_INVALID_CHAR, 1, c, c ) ;
4805 default:
4806 *dest++ = c;
4807 pos++ ;
4809 outer_loop:
4813 max = (int) (dest - line);
4815 /* Now we can replace a ',' [spaces|comments] '\n' with the line
4816 * continuation, but check for nesting first
4818 if (nesting)
4819 { /* Don't leave ANY spaces at EOL. That would confuse the lexer. */
4820 i = max - 1;
4821 while ((i >= 0) && isspace(line[i]))
4822 i--;
4823 max = i + 1;
4824 /* Of course, there is one exception: line continuation */
4825 while ((i >= 0) && (line[i] == '`'))
4826 i-- ;
4827 if ((i >= 0) && (line[i] == ','))
4829 contline = 1;
4830 line[i] = ' ';
4831 max = i + 1;
4833 /* (Reference (*) )
4834 * At this point the lexer can't determine the nextline since we eat up
4835 * the \n. This leads to an incorrect count. But either the '`'-signs
4836 * are ignored or they are follows of a "token", a valid word.
4837 * Look at "say x;say y ``". This will cause the lexer to
4838 * return at least 4 tokens (SAY "x" ";" SAY) before "y" will be
4839 * returned. We can only set nextline/nextstart at "y".
4840 * Result: We set this pair at the start of the next call to
4841 * fill_buffer such that the next call to yylex will set the correct
4842 * values.
4845 else
4847 i = max - 1; /* on last valid char */
4848 while (i >= 0)
4850 if (!MY_ISBLANK(line[i]) && (line[i] != '\n'))
4851 break;
4852 i--;
4854 /* i now -1 or on last nonblank */
4855 if ((i >= 0) && (line[i] == ','))
4856 { /* FIXME: What shall be do with "," followed by EOF? */
4857 max = i + 1;
4858 line[i] = ' ';
4859 contline = 1;
4863 if (max_size > max)
4864 max_size = max;
4865 memcpy(buf, line, max_size);
4866 pos = max_size;
4867 return(max_size);
4871 /* yywrap MAY be called by the lexer is EOF encounters, see (f)lex docu */
4872 int yywrap( void )
4874 assert( do_level>= 0 ) ;
4875 if (do_level>0)
4877 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
4878 exiterror( ERR_INCOMPLETE_STRUCT, 0 ) ;
4880 return 1 ;
4883 /******************************************************************************
4884 ******************************************************************************
4885 * global interface ***********************************************************
4886 ******************************************************************************
4887 *****************************************************************************/
4889 /* initalize all local and global values */
4890 static void init_it_all( tsd_t *TSD )
4892 #if defined(FLEX_SCANNER) && defined(FLEX_DEBUG)
4893 if (__reginadebug)
4894 yy_flex_debug = 1;
4895 else
4896 yy_flex_debug = 0;
4897 #endif
4898 inEOF = 0 ;
4899 in_numform = 0 ;
4900 next_numform = 0 ;
4901 nexta = 0 ;
4902 lasta = 0 ;
4903 preva = 0 ;
4904 obs_with = 0 ;
4905 in_do = 0 ;
4906 in_then = 0 ;
4907 dontlast = 0 ;
4908 sum = 0 ;
4909 firstln = 0 ;
4910 in_parse = 0 ;
4911 in_trace = 0 ;
4912 itflag = 0 ;
4913 in_signal = 0 ;
4914 in_call = 0 ;
4915 in_address = 0 ;
4916 seek_with = 0 ;
4917 kill_this_space = 0 ;
4918 ipretflag = 0 ;
4919 do_level = 0 ;
4920 singlequote = 0 ;
4921 doblequote = 0 ;
4922 cch = 0 ;
4923 bufptr = 0 ;
4924 cchmax = 0 ;
4925 ch = '\0',
4926 code = 0,
4927 contline = 0;
4928 ech= '\0' ;
4929 extnextstart = 0;
4930 interptr = NULL ;
4931 interptrmax = NULL ;
4932 /* non-zero values */
4933 linenr = 1 ;
4934 nextline = 1;
4935 nextstart = 1;
4936 kill_next_space = 1 ;
4937 extnextline = -1 ;
4938 SymbolDetect = 0;
4940 memset(&parser_data, 0, sizeof(internal_parser_type));
4941 parser_data.TSD = TSD;
4944 /* fetch may only be called by fetch_protected. The parser and lexer are
4945 * already protected by regina_parser by fetch_protected.
4946 * This function prepares the lexer and parser and call them. The
4947 * result and all generated values are stored in result. The parser
4948 * tree isn't executed here.
4949 * Exactly fptr xor str must be non-null.
4951 static void fetch(tsd_t *TSD, FILE *fptr, const streng *str,
4952 internal_parser_type *result)
4954 init_it_all( TSD ) ;
4956 #ifdef FLEX_SCANNER
4957 yy_init = 1 ;
4958 yy_delete_buffer(YY_CURRENT_BUFFER) ;
4959 yyrestart(fptr) ;
4960 #else
4961 yysptr = yysbuf ;
4962 yyin = fptr ;
4963 #endif
4965 if (str != NULL)
4967 ipretflag = 1 ;
4968 cchmax = str->len ;
4969 interptr = str->value ;
4970 interptrmax = interptr + cchmax ;
4971 result->incore_source = str->value;
4974 BEGIN comm ;
4975 NewProg();
4976 parser_data.result = __reginaparse();
4978 #ifdef FLEX_SCANNER
4979 yy_delete_buffer(YY_CURRENT_BUFFER) ;
4980 #else
4981 yysptr = yysbuf ;
4982 #endif
4983 yyin = NULL ;
4985 *result = parser_data;
4986 /* Some functions assume null values if parsing isn't running: */
4987 memset(&parser_data, 0, sizeof(internal_parser_type));
4990 /* This function serializes the parser/lexer requests of the process and
4991 * call fetch which will make the work. Look there.
4993 static void fetch_protected(tsd_t *TSD, FILE *fptr, const streng *str,
4994 internal_parser_type *result)
4996 volatile int panicked = 0;
4998 THREAD_PROTECT(regina_parser)
4999 TSD->in_protected = 1;
5001 if ( setjmp( TSD->protect_return ) )
5002 panicked = 1;
5003 else
5004 fetch(TSD, fptr, str, result);
5006 TSD->in_protected = 0;
5007 THREAD_UNPROTECT(regina_parser)
5009 if (!panicked)
5010 return;
5012 /* We got a fatal condition while fetching the input. */
5013 if (TSD->delayed_error_type == PROTECTED_DelayedExit)
5014 TSD->MTExit(TSD->expected_exit_error);
5015 if (TSD->delayed_error_type == PROTECTED_DelayedSetjmpBuf)
5016 longjmp( *(TSD->currlevel->buf), 1 ) ;
5017 longjmp( *(TSD->systeminfo->panic), 1 ) ;
5020 /* fetch_file reads in a REXX file from disk (or a pipe). It returns without
5021 * executing the program. The parsed tree with all needed values including
5022 * the result of the parsing is copied to result.
5023 * fptr remains open after this call.
5024 * type is either PARSE_ONLY or PARSE_AND_TIN. In the later case a tinned variant of the
5025 * parsing tree is created, too.
5027 void fetch_file(tsd_t *TSD, FILE *fptr, internal_parser_type *result)
5029 fetch_protected(TSD, fptr, NULL, result);
5032 /* fetch_string reads in a REXX macro from a streng. It returns without
5033 * executing the program. The parsed tree with all needed values including
5034 * the result of the parsing is copied to result.
5035 * type is either PARSE_ONLY or PARSE_AND_TIN. In the later case a tinned variant of the
5036 * parsing tree is created, too.
5037 * The function is typically called by an "INTERPRET" instruction.
5039 void fetch_string(tsd_t *TSD, const streng *str, internal_parser_type *result)
5041 fetch_protected(TSD, NULL, str, result);