disable the unrecognized nls flag
[AROS-Contrib.git] / regina / lexsrc.c
bloba63b13e2badc23faffe3123879468ba68d5b57cb
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: /opt/cvs/Regina/lexsrc.c,v 1.40 2009/06/28 10:41:42 mark Exp $
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 inline void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
273 static void yy_flex_free YY_PROTO(( void * ));
275 #define yy_new_buffer yy_create_buffer
277 #define yy_set_interactive(is_interactive) \
279 if ( ! yy_current_buffer ) \
280 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
281 yy_current_buffer->yy_is_interactive = is_interactive; \
284 #define yy_set_bol(at_bol) \
286 if ( ! yy_current_buffer ) \
287 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
288 yy_current_buffer->yy_at_bol = at_bol; \
291 #define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
294 #define YY_USES_REJECT
295 typedef unsigned char YY_CHAR;
296 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
297 typedef int yy_state_type;
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 inline 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 124
322 #define YY_END_OF_BUFFER 125
323 static yyconst short int yy_acclist[1220] =
324 { 0,
325 1, 33, 1, 33, 1, 33, 1, 33, 1, 33,
326 1, 33, 1, 33, 1, 33, 1, 33, 1, 33,
327 1, 33, 1, 33, 1, 33, 1, 33, 1, 33,
328 1, 33, 1, 33, 1, 33, 1, 33, 1, 33,
329 1, 33, 1, 33, 1, 33, 1, 33, 1, 33,
330 1, 33, 1, 33, 1, 33, 1, 33, 1, 33,
331 125, 123, 124, 33, 120, 123, 124, 3, 124, 33,
332 120, 123, 124, 89, 123, 124, 121, 123, 124, 97,
333 123, 124, 100, 123, 124, 121, 123, 124, 92, 123,
334 124, 91, 123, 124, 98, 123, 124, 95, 123, 124,
336 93, 123, 124, 94, 123, 124, 34, 88, 123, 124,
337 96, 123, 124, 85, 88, 123, 124, 122, 123, 124,
338 3, 123, 124, 111, 123, 124, 101, 123, 124, 109,
339 123, 124, 89, 123, 124, 89, 123, 124, 89, 123,
340 124, 89, 123, 124, 89, 123, 124, 102, 123, 124,
341 1, 33, 123, 124, 99, 123, 124, 33, 120, 123,
342 124, 33, 120, 123, 124, 89, 123, 124, 121, 123,
343 124, 121, 123, 124, 34, 88, 123, 124, 85, 88,
344 123, 124, 89, 123, 124, 89, 123, 124, 89, 123,
345 124, 89, 123, 124, 89, 123, 124, 89, 123, 124,
347 89, 123, 124, 89, 123, 124, 89, 123, 124, 89,
348 123, 124, 89, 123, 124, 89, 123, 124, 89, 123,
349 124, 89, 123, 124, 89, 123, 124, 89, 123, 124,
350 89, 123, 124, 1, 33, 123, 124, 33, 120, 123,
351 124, 33, 120, 123, 124, 89, 123, 124, 89, 123,
352 124, 1, 33, 123, 124, 89, 123, 124, 89, 123,
353 124, 89, 123, 124, 89, 123, 124, 89, 123, 124,
354 89, 123, 124, 89, 123, 124, 89, 123, 124, 89,
355 123, 124, 89, 123, 124, 89, 123, 124, 89, 123,
356 124, 89, 123, 124, 89, 123, 124, 89, 123, 124,
358 89, 123, 124, 89, 123, 124, 89, 123, 124, 89,
359 123, 124, 34, 88, 123, 124, 89, 123, 124, 89,
360 123, 124, 89, 123, 124, 89, 123, 124, 89, 123,
361 124, 33, 120, 123, 124, 33, 120, 123, 124, 89,
362 123, 124, 1, 33, 123, 124, 33, 120, 123, 124,
363 33, 120, 123, 124, 48, 89, 123, 124, 48, 89,
364 123, 124, 48, 89, 123, 124, 48, 89, 123, 124,
365 48, 89, 123, 124, 48, 89, 123, 124, 48, 89,
366 123, 124, 1, 33, 123, 124, 33, 120, 123, 124,
367 2, 3, 124, 33, 120, 123, 124, 2, 3, 123,
369 124, 1, 33, 123, 124, 89, 123, 124, 89, 123,
370 124, 89, 123, 124, 33, 120, 3, 33, 120, 97,
371 100, 91, 98, 95, 93, 94, 96, 111, 101, 109,
372 33, 120, 99, 3, 89, 89, 84, 97, 100, 117,
373 100, 84, 92, 98, 119, 98, 95, 93, 94, 88,
374 88, 88, 88, 90, 88, 90, 96, 116, 96, 86,
375 87, 88, 85, 88, 88, 111, 104, 112, 113, 111,
376 101, 114, 110, 101, 109, 103, 109, 72, 89, 89,
377 71, 89, 89, 89, 89, 102, 110, 113, 112, 102,
378 33, 120, 33, 120, 1, 33, 99, 99, 118, 33,
380 120, 33, 120, 33, 120, 89, 89, 78, 36, 84,
381 84, 88, 88, 88, 35, 88, 90, 88, 90, 86,
382 87, 88, 85, 88, 78, 86, 87, 35, 86, 87,
383 88, 89, 89, 72, 89, 89, 8, 89, 89, 89,
384 89, 89, 89, 12, 89, 89, 89, 89, 89, 89,
385 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
386 89, 71, 89, 89, 89, 89, 89, 89, 33, 120,
387 33, 120, 1, 33, 33, 120, 33, 120, 33, 120,
388 89, 38, 89, 89, 33, 120, 33, 120, 1, 33,
389 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
391 89, 89, 89, 89, 89, 89, 89, 89, 89, 89,
392 89, 89, 89, 77, 88, 90, 88, 90, 72, 89,
393 89, 71, 89, 89, 89, 89, 33, 120, 33, 120,
394 33, 120, 89, 33, 120, 33, 120, 1, 33, 33,
395 120, 33, 120, 48, 48, 48, 33, 120, 48, 48,
396 89, 48, 72, 89, 48, 89, 48, 71, 89, 48,
397 89, 48, 89, 48, 89, 48, 89, 33, 120, 33,
398 120, 1, 33, 33, 120, 2, 3, 33, 120, 33,
399 120, 2, 3, 33, 120, 33, 120, 1, 33, 89,
400 89, 89, 84, 84, 84, 117, 84, 84, 84, 119,
402 87, 88, 90, 116, 88, 88, 104, 108, 104, 112,
403 113, 114, 110, 103, 107, 103, 72, 73, 89, 71,
404 89, 89, 89, 110, 106, 109, 113, 115, 111, 112,
405 105, 118, 78, 36, 84, 84, 84, 84, 84, 84,
406 87, 78, 87, 35, 87, 35, 88, 90, 88, 88,
407 89, 6, 89, 72, 89, 8, 89, 89, 32, 89,
408 89, 73, 89, 12, 89, 89, 89, 17, 89, 89,
409 89, 89, 89, 89, 89, 89, 89, 89, 25, 89,
410 89, 89, 89, 71, 89, 89, 89, 89, 89, 89,
411 39, 89, 38, 89, 89, 89, 89, 89, 89, 89,
413 89, 89, 53, 89, 89, 89, 89, 89, 89, 89,
414 89, 89, 89, 60, 89, 89, 89, 73, 89, 89,
415 76, 88, 90, 72, 73, 89, 71, 89, 89, 89,
416 89, 48, 48, 48, 72, 48, 73, 89, 48, 71,
417 48, 89, 48, 89, 48, 89, 48, 89, 89, 89,
418 89, 80, 82, 83, 82, 81, 83, 81, 88, 90,
419 108, 107, 73, 89, 89, 64, 89, 106, 115, 105,
420 79, 88, 90, 89, 6, 7, 89, 9, 89, 10,
421 89, 32, 11, 89, 73, 89, 89, 89, 17, 89,
422 89, 89, 89, 89, 21, 89, 22, 89, 89, 89,
424 25, 89, 89, 62, 89, 89, 89, 89, 30, 89,
425 89, 64, 89, 39, 89, 89, 89, 42, 89, 89,
426 89, 89, 89, 89, 53, 89, 89, 89, 89, 89,
427 55, 89, 89, 89, 89, 60, 89, 89, 66, 89,
428 69, 89, 88, 90, 73, 89, 89, 89, 64, 89,
429 63, 89, 48, 48, 48, 73, 48, 89, 48, 89,
430 48, 89, 48, 64, 89, 40, 89, 89, 89, 64,
431 83, 88, 90, 75, 89, 74, 89, 64, 62, 79,
432 88, 90, 89, 7, 9, 10, 11, 89, 89, 15,
433 89, 89, 89, 89, 19, 89, 89, 21, 22, 23,
435 89, 89, 89, 89, 62, 28, 89, 75, 89, 29,
436 89, 30, 74, 89, 64, 37, 89, 41, 89, 89,
437 42, 89, 89, 89, 89, 89, 89, 89, 89, 51,
438 89, 89, 55, 89, 50, 89, 61, 89, 89, 89,
439 66, 69, 88, 90, 89, 75, 89, 74, 89, 64,
440 63, 63, 48, 48, 64, 48, 75, 89, 37, 48,
441 89, 48, 74, 89, 48, 64, 40, 89, 89, 4,
442 75, 74, 62, 4, 4, 78, 4, 35, 89, 89,
443 89, 15, 89, 89, 89, 19, 89, 23, 24, 89,
444 26, 89, 27, 89, 28, 75, 29, 74, 37, 37,
446 41, 89, 89, 89, 89, 46, 89, 49, 89, 89,
447 89, 58, 89, 51, 89, 56, 89, 50, 61, 89,
448 65, 89, 4, 4, 76, 89, 75, 74, 37, 48,
449 48, 75, 37, 48, 48, 74, 89, 89, 5, 89,
450 89, 14, 89, 18, 89, 16, 89, 89, 89, 24,
451 26, 27, 45, 89, 89, 89, 43, 89, 46, 49,
452 89, 89, 58, 54, 89, 56, 59, 89, 65, 70,
453 89, 89, 89, 5, 89, 14, 18, 16, 89, 89,
454 45, 89, 44, 89, 43, 52, 89, 57, 89, 54,
455 59, 70, 89, 89, 13, 89, 31, 89, 20, 89,
457 89, 44, 52, 57, 89, 89, 13, 31, 20, 47,
458 89, 89, 67, 89, 47, 68, 89, 67, 68
461 static yyconst short int yy_accept[859] =
462 { 0,
463 1, 3, 5, 7, 9, 11, 13, 15, 17, 19,
464 21, 23, 25, 27, 29, 31, 33, 35, 37, 39,
465 41, 43, 45, 47, 49, 51, 53, 55, 57, 59,
466 61, 62, 64, 68, 70, 74, 77, 80, 83, 86,
467 89, 92, 95, 98, 101, 104, 107, 111, 114, 118,
468 121, 124, 127, 130, 133, 136, 139, 142, 145, 148,
469 151, 155, 158, 162, 166, 169, 172, 175, 179, 183,
470 186, 189, 192, 195, 198, 201, 204, 207, 210, 213,
471 216, 219, 222, 225, 228, 231, 234, 238, 242, 246,
472 249, 252, 256, 259, 262, 265, 268, 271, 274, 277,
474 280, 283, 286, 289, 292, 295, 298, 301, 304, 307,
475 310, 313, 317, 320, 323, 326, 329, 332, 336, 340,
476 343, 347, 351, 355, 359, 363, 367, 371, 375, 379,
477 383, 387, 391, 394, 398, 402, 406, 409, 412, 415,
478 417, 418, 420, 421, 422, 423, 424, 425, 426, 427,
479 428, 429, 430, 431, 431, 431, 433, 434, 435, 436,
480 437, 437, 438, 438, 438, 439, 440, 441, 442, 442,
481 443, 443, 443, 444, 445, 446, 447, 448, 449, 450,
482 451, 452, 453, 455, 457, 458, 459, 460, 462, 463,
483 465, 466, 467, 468, 469, 470, 471, 472, 473, 474,
485 475, 476, 477, 478, 480, 481, 483, 484, 485, 486,
486 487, 488, 489, 490, 491, 493, 495, 497, 498, 499,
487 500, 502, 504, 504, 506, 506, 507, 508, 509, 510,
488 510, 511, 511, 511, 511, 512, 512, 512, 512, 513,
489 514, 515, 516, 518, 520, 522, 523, 525, 528, 531,
490 532, 533, 534, 536, 537, 539, 540, 541, 542, 543,
491 544, 546, 547, 548, 549, 550, 551, 552, 553, 554,
492 555, 556, 557, 558, 559, 560, 561, 562, 564, 565,
493 566, 567, 568, 569, 571, 573, 575, 577, 579, 579,
494 581, 582, 584, 585, 587, 589, 591, 592, 593, 594,
496 595, 596, 597, 598, 599, 600, 601, 602, 603, 604,
497 605, 606, 607, 608, 609, 610, 611, 612, 612, 613,
498 614, 615, 617, 619, 621, 622, 624, 625, 626, 627,
499 629, 631, 631, 633, 634, 636, 638, 640, 642, 644,
500 645, 646, 647, 649, 650, 652, 655, 657, 660, 662,
501 664, 666, 668, 670, 672, 674, 676, 678, 680, 682,
502 684, 686, 688, 690, 691, 692, 693, 693, 693, 694,
503 694, 694, 694, 695, 695, 695, 695, 696, 697, 698,
504 698, 699, 699, 699, 699, 700, 701, 702, 704, 705,
505 706, 706, 707, 708, 709, 710, 711, 712, 713, 714,
507 715, 716, 717, 718, 720, 721, 722, 723, 724, 725,
508 726, 727, 728, 729, 730, 731, 732, 733, 733, 734,
509 735, 736, 736, 737, 737, 737, 737, 738, 739, 739,
510 740, 740, 740, 740, 741, 742, 744, 746, 747, 749,
511 750, 751, 752, 754, 755, 756, 757, 758, 759, 761,
512 762, 764, 765, 766, 767, 768, 770, 771, 772, 773,
513 774, 775, 776, 777, 778, 779, 781, 782, 783, 784,
514 785, 786, 787, 788, 789, 790, 791, 791, 793, 794,
515 795, 796, 797, 798, 799, 800, 801, 802, 803, 805,
516 806, 807, 808, 809, 810, 811, 812, 813, 814, 816,
518 817, 818, 820, 821, 821, 822, 824, 825, 827, 828,
519 829, 830, 831, 831, 832, 833, 834, 836, 839, 841,
520 843, 845, 847, 849, 850, 851, 852, 852, 853, 853,
521 853, 855, 856, 858, 859, 859, 859, 859, 859, 859,
522 859, 859, 859, 861, 861, 862, 863, 864, 865, 866,
523 868, 869, 870, 871, 871, 871, 872, 872, 872, 872,
524 872, 872, 872, 872, 872, 872, 874, 875, 876, 878,
525 880, 882, 883, 885, 886, 887, 888, 889, 890, 891,
526 892, 893, 894, 895, 897, 899, 900, 901, 902, 903,
527 904, 906, 907, 908, 909, 911, 912, 914, 914, 915,
529 916, 917, 918, 920, 921, 922, 923, 924, 925, 926,
530 927, 928, 929, 930, 931, 933, 934, 935, 936, 937,
531 938, 939, 941, 943, 945, 946, 947, 948, 949, 951,
532 951, 953, 954, 955, 957, 959, 961, 963, 966, 968,
533 969, 970, 971, 972, 972, 972, 972, 972, 972, 972,
534 974, 976, 978, 979, 980, 981, 981, 981, 981, 981,
535 981, 981, 983, 984, 985, 986, 987, 988, 989, 990,
536 992, 993, 994, 995, 997, 998, 999, 1000, 1002, 1003,
537 1004, 1005, 1006, 1008, 1010, 1012, 1013, 1015, 1016, 1016,
538 1018, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028,
540 1029, 1030, 1032, 1033, 1034, 1035, 1037, 1039, 1040, 1041,
541 1042, 1043, 1045, 1046, 1048, 1050, 1051, 1052, 1053, 1054,
542 1056, 1059, 1062, 1065, 1067, 1068, 1069, 1070, 1070, 1070,
543 1070, 1070, 1071, 1072, 1073, 1074, 1074, 1074, 1074, 1074,
544 1075, 1077, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086,
545 1087, 1088, 1089, 1091, 1093, 1095, 1096, 1097, 1098, 1099,
546 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1108, 1110, 1111,
547 1112, 1114, 1115, 1116, 1118, 1119, 1120, 1121, 1123, 1124,
548 1126, 1127, 1128, 1129, 1131, 1133, 1135, 1137, 1138, 1139,
549 1139, 1139, 1139, 1139, 1141, 1142, 1144, 1146, 1148, 1149,
551 1150, 1151, 1152, 1153, 1155, 1156, 1157, 1159, 1160, 1161,
552 1162, 1163, 1164, 1166, 1167, 1169, 1170, 1172, 1173, 1174,
553 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1185,
554 1186, 1188, 1190, 1191, 1192, 1193, 1194, 1195, 1197, 1199,
555 1201, 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210,
556 1212, 1213, 1215, 1216, 1218, 1219, 1220, 1220
559 static yyconst int yy_ec[256] =
560 { 0,
561 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
562 4, 4, 5, 1, 1, 1, 1, 1, 1, 1,
563 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
564 1, 2, 6, 7, 8, 8, 9, 10, 11, 12,
565 13, 14, 15, 16, 17, 18, 19, 20, 20, 21,
566 21, 21, 21, 21, 21, 21, 21, 22, 23, 24,
567 25, 26, 27, 8, 28, 29, 30, 31, 32, 33,
568 34, 35, 36, 37, 37, 38, 39, 40, 41, 42,
569 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
570 1, 53, 1, 53, 6, 54, 28, 29, 30, 31,
572 32, 33, 34, 35, 36, 37, 37, 38, 39, 40,
573 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
574 51, 52, 1, 55, 1, 53, 1, 1, 1, 1,
575 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
576 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
577 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
578 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
579 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
580 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
581 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
583 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
584 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
585 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
586 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
587 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
588 1, 1, 1, 1, 1
591 static yyconst int yy_meta[56] =
592 { 0,
593 1, 2, 1, 2, 2, 3, 1, 3, 1, 1,
594 1, 4, 1, 1, 1, 1, 1, 3, 1, 5,
595 5, 6, 1, 1, 7, 1, 8, 8, 8, 8,
596 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
597 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
598 8, 8, 1, 2, 1
601 static yyconst short int yy_base[876] =
602 { 0,
603 0, 0, 55, 0, 109, 113, 87, 91, 1152, 1143,
604 140, 161, 0, 0, 0, 0, 97, 102, 209, 0,
605 138, 144, 264, 0, 318, 322, 1130, 1120, 326, 330,
606 1138, 4589, 383, 151, 0, 144, 432, 335, 347, 455,
607 351, 4589, 365, 361, 416, 420, 408, 438, 492, 4589,
608 546, 550, 554, 558, 153, 392, 427, 438, 550, 585,
609 562, 589, 594, 0, 647, 695, 718, 750, 804, 858,
610 90, 116, 135, 298, 302, 574, 107, 582, 575, 594,
611 150, 329, 614, 436, 593, 346, 626, 651, 0, 641,
612 461, 680, 668, 655, 672, 677, 689, 693, 715, 699,
614 739, 743, 758, 846, 850, 762, 854, 769, 864, 870,
615 901, 907, 954, 118, 145, 343, 537, 927, 0, 889,
616 931, 1007, 0, 1061, 1114, 303, 376, 383, 124, 628,
617 935, 939, 944, 0, 948, 959, 948, 966, 962, 0,
618 1023, 0, 1069, 1082, 4589, 1086, 1091, 1097, 1101, 1105,
619 1123, 1137, 1148, 1101, 1162, 0, 1152, 1174, 970, 976,
620 1122, 724, 1227, 1178, 1188, 1195, 1199, 1207, 1115, 440,
621 1260, 1213, 1218, 1264, 1233, 1241, 1271, 1280, 1292, 983,
622 1093, 1346, 1292, 1296, 1322, 1326, 1331, 4589, 383, 0,
623 1288, 1379, 1373, 1335, 1340, 1386, 1391, 1404, 1408, 1416,
625 1424, 1430, 1420, 1439, 1433, 1434, 1443, 1447, 1451, 1477,
626 1471, 1502, 1507, 1511, 0, 0, 0, 1515, 1519, 1532,
627 0, 0, 1077, 0, 1537, 114, 400, 1541, 1545, 1091,
628 858, 1598, 1570, 1086, 586, 1630, 1574, 1562, 1662, 1715,
629 1769, 1550, 1823, 1058, 1618, 429, 0, 1634, 1640, 950,
630 410, 626, 1669, 754, 1674, 701, 677, 603, 1039, 647,
631 1694, 855, 1099, 1182, 742, 1041, 1150, 916, 1045, 1210,
632 1454, 1208, 1255, 1219, 1183, 1348, 1342, 1699, 1507, 1276,
633 1102, 1557, 1537, 0, 0, 1652, 0, 0, 1050, 0,
634 1588, 1687, 1689, 0, 0, 1710, 1593, 1711, 1724, 1785,
636 1789, 1628, 1745, 1734, 1793, 1800, 1779, 1831, 1738, 1835,
637 1839, 1843, 1849, 1854, 1858, 1863, 1870, 1892, 1017, 1013,
638 4589, 1945, 993, 1901, 151, 1906, 581, 541, 620, 0,
639 0, 983, 0, 1881, 0, 0, 1910, 0, 0, 1914,
640 1926, 1922, 0, 1930, 964, 1934, 156, 1938, 745, 1066,
641 730, 749, 0, 0, 1957, 0, 1969, 0, 0, 1973,
642 0, 0, 1977, 1973, 1980, 1984, 961, 2004, 2003, 983,
643 945, 2051, 2006, 2013, 2083, 2110, 2009, 2020, 1804, 2133,
644 2039, 2077, 2165, 2188, 2121, 2065, 4589, 76, 2071, 452,
645 581, 1410, 2097, 2119, 2124, 2153, 2175, 2179, 2185, 2198,
647 2208, 2220, 2226, 2230, 2236, 2019, 2225, 2229, 2251, 2255,
648 2263, 2267, 2277, 2281, 2293, 2297, 2302, 922, 2306, 2310,
649 2363, 2411, 712, 2308, 2443, 2470, 868, 384, 2493, 848,
650 2351, 2525, 2548, 866, 2320, 2344, 2348, 2353, 852, 683,
651 1649, 1077, 2357, 2401, 1456, 2431, 1127, 1566, 2463, 1680,
652 2484, 2456, 1621, 1164, 1474, 2529, 1690, 1527, 1889, 1795,
653 2017, 1664, 1509, 1646, 2005, 2559, 2033, 2105, 2116, 2545,
654 2104, 1581, 2160, 2128, 1851, 1773, 843, 2392, 2425, 2369,
655 2475, 2431, 2074, 2462, 2394, 2491, 2519, 2554, 2539, 2312,
656 2564, 2568, 2584, 2588, 2594, 2601, 2605, 2609, 2629, 2618,
658 2401, 2638, 2626, 2646, 4589, 821, 2650, 2655, 2660, 887,
659 1796, 514, 770, 2648, 2677, 2689, 2668, 2693, 2697, 963,
660 506, 1918, 869, 2687, 2692, 2700, 734, 4589, 0, 549,
661 4589, 4589, 4589, 4589, 2750, 720, 2722, 0, 2782, 717,
662 2754, 0, 837, 957, 2734, 2744, 2762, 2771, 2776, 2771,
663 2802, 2815, 2819, 654, 2824, 2828, 2832, 2885, 657, 2838,
664 0, 2917, 634, 2846, 0, 563, 2183, 2858, 2866, 2898,
665 2922, 2929, 2953, 2939, 1952, 1959, 2256, 2963, 2047, 2217,
666 2157, 2474, 2566, 2958, 2967, 2709, 2272, 3001, 2347, 2426,
667 3014, 2821, 2282, 2332, 3020, 2844, 3025, 534, 2977, 2875,
669 2957, 3014, 2990, 3018, 3022, 3032, 3039, 3045, 3071, 3060,
670 3064, 3068, 3073, 3079, 3101, 2742, 3089, 3094, 3114, 3109,
671 3114, 3134, 3138, 537, 3142, 299, 2335, 379, 3146, 451,
672 3152, 3157, 3167, 3161, 2357, 655, 863, 3171, 3175, 3163,
673 3169, 3189, 4589, 3203, 3217, 3237, 3231, 3245, 3208, 3278,
674 3251, 3265, 3294, 3304, 3308, 3295, 3309, 3345, 3339, 3353,
675 3385, 3405, 2645, 3341, 3421, 3430, 3440, 2830, 2833, 3349,
676 2791, 2854, 2746, 3435, 2453, 3445, 3449, 3476, 2892, 2969,
677 2504, 3483, 3488, 3496, 3507, 3511, 3524, 3519, 423, 3541,
678 3552, 3196, 3558, 3300, 3546, 3357, 3551, 3379, 3559, 3187,
680 3443, 3579, 3567, 3588, 3576, 3600, 3605, 3593, 3598, 3618,
681 3622, 3676, 968, 3643, 3653, 3659, 3663, 3669, 3701, 3706,
682 3710, 3714, 3720, 3730, 3734, 3617, 3610, 339, 3738, 163,
683 3742, 4589, 3746, 3752, 3765, 157, 3771, 117, 3775, 3785,
684 3792, 3797, 2672, 2563, 2942, 3807, 2960, 2965, 2997, 3811,
685 3151, 3816, 3822, 3838, 3843, 3850, 3855, 3881, 3886, 3891,
686 3896, 3908, 3896, 3632, 3900, 3904, 3925, 3937, 3926, 3931,
687 3951, 3956, 3945, 3965, 3972, 3976, 3810, 3980, 3984, 4589,
688 1223, 3988, 3992, 3996, 4002, 4010, 4016, 4004, 4011, 4045,
689 4051, 4065, 4071, 4085, 3240, 4103, 4107, 4115, 3357, 2580,
691 4119, 4123, 4128, 4056, 4019, 4134, 4138, 4158, 4162, 4023,
692 4031, 4166, 4170, 4174, 4179, 4184, 4189, 4177, 4181, 4201,
693 3155, 4205, 4227, 4232, 3425, 3503, 4213, 4224, 4246, 4256,
694 4260, 4264, 4269, 4273, 4278, 4269, 4273, 4293, 4297, 4302,
695 4295, 4315, 4334, 4340, 4332, 4337, 4357, 4361, 4371, 4366,
696 4369, 4376, 4393, 4397, 4402, 4408, 4589, 4460, 4468, 4476,
697 4482, 4489, 4497, 4505, 4512, 4519, 4525, 4532, 4538, 4545,
698 4552, 4560, 4567, 4574, 4581
701 static yyconst short int yy_def[876] =
702 { 0,
703 857, 1, 857, 3, 1, 1, 1, 1, 1, 1,
704 1, 1, 1, 1, 1, 1, 1, 1, 857, 19,
705 1, 1, 857, 23, 1, 1, 1, 1, 1, 1,
706 857, 857, 857, 857, 33, 858, 859, 857, 857, 860,
707 857, 857, 857, 857, 857, 857, 861, 857, 857, 857,
708 857, 857, 857, 857, 858, 858, 858, 858, 858, 857,
709 33, 857, 33, 63, 862, 863, 864, 865, 857, 862,
710 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
711 70, 70, 70, 70, 70, 70, 63, 33, 88, 858,
712 858, 88, 858, 858, 858, 858, 858, 858, 858, 858,
714 858, 858, 858, 858, 858, 858, 858, 858, 858, 858,
715 866, 867, 866, 113, 113, 113, 113, 33, 118, 858,
716 118, 857, 122, 868, 868, 125, 125, 125, 125, 125,
717 122, 118, 857, 132, 857, 132, 858, 858, 858, 33,
718 857, 33, 857, 857, 857, 857, 857, 857, 857, 857,
719 857, 857, 857, 857, 857, 33, 857, 857, 858, 858,
720 859, 857, 859, 163, 857, 857, 857, 857, 860, 857,
721 860, 171, 857, 857, 857, 857, 857, 857, 857, 869,
722 869, 49, 861, 861, 857, 857, 857, 857, 182, 49,
723 869, 857, 857, 857, 857, 857, 857, 857, 857, 857,
725 857, 857, 857, 858, 858, 204, 858, 858, 858, 857,
726 857, 857, 857, 857, 33, 33, 61, 857, 857, 857,
727 63, 63, 857, 63, 857, 70, 70, 857, 857, 863,
728 857, 863, 232, 864, 857, 864, 236, 857, 870, 870,
729 240, 857, 865, 243, 857, 241, 69, 857, 857, 240,
730 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
731 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
732 70, 70, 70, 70, 70, 70, 70, 70, 70, 70,
733 70, 70, 70, 63, 63, 63, 88, 88, 857, 88,
734 858, 204, 858, 88, 88, 88, 858, 858, 858, 858,
736 858, 858, 858, 858, 858, 858, 858, 858, 858, 858,
737 858, 858, 858, 858, 858, 858, 858, 857, 113, 113,
738 857, 867, 322, 113, 113, 113, 113, 113, 113, 118,
739 118, 857, 118, 858, 118, 118, 118, 122, 122, 871,
740 871, 871, 122, 857, 125, 125, 125, 125, 125, 125,
741 125, 125, 122, 122, 122, 132, 857, 132, 132, 857,
742 132, 132, 132, 858, 858, 858, 857, 857, 857, 872,
743 873, 163, 857, 163, 163, 375, 857, 857, 857, 171,
744 857, 171, 171, 383, 857, 857, 857, 184, 857, 182,
745 857, 182, 857, 857, 857, 857, 857, 857, 857, 857,
747 857, 857, 857, 204, 857, 858, 858, 858, 857, 857,
748 857, 857, 857, 857, 857, 857, 857, 857, 857, 857,
749 857, 232, 421, 232, 232, 425, 421, 421, 236, 428,
750 236, 236, 432, 428, 857, 857, 857, 857, 243, 241,
751 241, 70, 70, 857, 70, 857, 70, 70, 70, 70,
752 70, 857, 70, 70, 70, 70, 70, 70, 70, 70,
753 70, 70, 70, 70, 70, 70, 70, 70, 70, 857,
754 70, 70, 70, 70, 70, 70, 857, 204, 857, 858,
755 858, 858, 858, 858, 858, 858, 858, 858, 204, 858,
756 858, 858, 858, 858, 858, 858, 858, 858, 204, 858,
758 858, 204, 858, 857, 857, 322, 857, 113, 857, 113,
759 113, 113, 857, 858, 871, 871, 857, 125, 857, 125,
760 125, 125, 125, 858, 858, 858, 857, 857, 874, 857,
761 857, 857, 857, 857, 375, 535, 375, 375, 383, 539,
762 383, 383, 184, 875, 857, 857, 857, 858, 858, 204,
763 857, 857, 857, 857, 857, 857, 857, 425, 558, 425,
764 425, 432, 562, 432, 432, 243, 70, 857, 70, 70,
765 70, 857, 70, 857, 70, 70, 70, 857, 70, 70,
766 70, 70, 70, 70, 70, 70, 70, 857, 70, 70,
767 70, 70, 70, 70, 70, 70, 70, 857, 857, 858,
769 858, 858, 204, 858, 858, 858, 858, 858, 857, 858,
770 858, 858, 858, 858, 204, 858, 858, 858, 857, 858,
771 858, 204, 204, 322, 857, 113, 113, 113, 113, 857,
772 204, 871, 871, 857, 125, 125, 125, 125, 204, 858,
773 858, 857, 857, 375, 375, 375, 383, 383, 383, 184,
774 204, 204, 857, 857, 857, 425, 425, 425, 432, 432,
775 432, 243, 70, 857, 857, 857, 857, 70, 70, 70,
776 70, 70, 70, 70, 70, 857, 857, 70, 70, 70,
777 70, 857, 70, 70, 70, 857, 70, 857, 857, 204,
778 204, 858, 857, 858, 858, 858, 858, 858, 858, 858,
780 858, 204, 858, 857, 858, 204, 204, 858, 858, 857,
781 857, 322, 113, 113, 113, 857, 857, 857, 871, 871,
782 125, 125, 125, 857, 857, 858, 858, 535, 375, 539,
783 383, 857, 857, 857, 857, 558, 425, 562, 432, 857,
784 857, 857, 70, 70, 70, 857, 70, 70, 70, 857,
785 70, 857, 70, 70, 70, 857, 857, 857, 857, 857,
786 857, 857, 858, 858, 858, 858, 204, 204, 858, 858,
787 204, 857, 858, 204, 857, 857, 858, 204, 857, 857,
788 113, 857, 857, 871, 857, 857, 857, 858, 858, 163,
789 171, 232, 236, 70, 70, 70, 70, 70, 70, 70,
791 857, 857, 857, 204, 858, 858, 204, 857, 857, 858,
792 858, 857, 204, 857, 204, 857, 113, 858, 858, 857,
793 70, 857, 857, 857, 70, 70, 857, 858, 204, 857,
794 204, 204, 857, 857, 857, 858, 858, 70, 70, 70,
795 858, 857, 857, 857, 858, 858, 857, 857, 857, 204,
796 858, 204, 857, 204, 857, 857, 0, 857, 857, 857,
797 857, 857, 857, 857, 857, 857, 857, 857, 857, 857,
798 857, 857, 857, 857, 857
801 static yyconst short int yy_nxt[4645] =
802 { 0,
803 32, 33, 34, 33, 35, 36, 37, 36, 38, 39,
804 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
805 49, 50, 51, 52, 53, 54, 36, 36, 55, 36,
806 36, 36, 56, 36, 36, 36, 36, 36, 36, 36,
807 36, 36, 36, 36, 36, 57, 58, 36, 59, 36,
808 36, 36, 60, 61, 62, 32, 63, 34, 63, 64,
809 65, 66, 65, 38, 39, 67, 41, 42, 43, 44,
810 45, 46, 68, 48, 69, 69, 50, 51, 52, 53,
811 54, 65, 70, 71, 72, 73, 74, 75, 65, 65,
812 76, 65, 77, 65, 78, 79, 80, 81, 82, 83,
814 84, 85, 65, 86, 65, 65, 65, 60, 87, 62,
815 88, 183, 88, 89, 88, 543, 88, 89, 93, 94,
816 226, 95, 93, 94, 96, 95, 97, 109, 96, 110,
817 97, 98, 109, 226, 110, 98, 793, 226, 264, 118,
818 253, 118, 119, 254, 226, 118, 226, 118, 119, 90,
819 226, 350, 158, 90, 158, 158, 91, 226, 325, 226,
820 91, 160, 92, 160, 160, 226, 92, 100, 319, 101,
821 160, 102, 160, 160, 345, 255, 792, 103, 256, 104,
822 226, 105, 791, 120, 106, 326, 107, 108, 100, 120,
823 101, 121, 102, 226, 508, 319, 272, 121, 103, 518,
825 104, 319, 105, 204, 158, 106, 345, 107, 108, 32,
826 33, 34, 33, 35, 111, 37, 111, 38, 39, 40,
827 41, 42, 43, 44, 45, 46, 112, 48, 49, 49,
828 50, 51, 52, 53, 54, 111, 111, 113, 111, 111,
829 111, 114, 111, 111, 111, 111, 111, 111, 111, 111,
830 111, 111, 111, 111, 115, 116, 111, 117, 111, 111,
831 111, 60, 61, 62, 32, 122, 34, 122, 123, 36,
832 37, 36, 38, 39, 40, 41, 42, 43, 44, 45,
833 46, 47, 48, 49, 49, 50, 51, 52, 53, 54,
834 124, 124, 125, 124, 124, 124, 126, 124, 124, 124,
836 124, 124, 124, 124, 124, 124, 124, 124, 124, 127,
837 128, 129, 130, 124, 124, 124, 60, 131, 62, 132,
838 133, 132, 134, 132, 133, 132, 134, 88, 226, 88,
839 89, 88, 226, 88, 89, 257, 165, 258, 165, 165,
840 135, 226, 260, 347, 135, 226, 713, 259, 166, 319,
841 166, 166, 173, 345, 173, 173, 167, 138, 790, 226,
842 273, 138, 177, 120, 177, 177, 174, 120, 174, 174,
843 139, 136, 226, 91, 139, 136, 226, 91, 175, 92,
844 282, 283, 327, 92, 140, 141, 140, 142, 165, 226,
845 857, 143, 144, 319, 234, 145, 146, 147, 148, 149,
847 168, 150, 390, 390, 173, 141, 151, 152, 153, 160,
848 715, 160, 160, 180, 177, 180, 348, 178, 176, 178,
849 178, 179, 349, 179, 179, 181, 345, 182, 182, 319,
850 226, 154, 205, 345, 180, 155, 156, 157, 162, 185,
851 442, 185, 185, 226, 160, 184, 160, 160, 440, 440,
852 169, 163, 164, 226, 760, 160, 186, 160, 160, 164,
853 164, 164, 164, 164, 164, 170, 226, 206, 370, 178,
854 277, 390, 390, 179, 171, 172, 278, 207, 160, 279,
855 160, 160, 172, 172, 172, 172, 172, 172, 293, 371,
856 717, 187, 188, 188, 188, 188, 188, 180, 188, 180,
858 188, 188, 188, 188, 188, 188, 188, 188, 188, 189,
859 188, 190, 190, 188, 188, 188, 188, 188, 180, 180,
860 180, 180, 180, 191, 180, 180, 180, 180, 180, 180,
861 180, 180, 180, 180, 180, 180, 180, 180, 180, 180,
862 180, 180, 180, 180, 188, 188, 188, 158, 629, 158,
863 158, 192, 636, 192, 192, 197, 345, 197, 197, 201,
864 528, 201, 201, 215, 319, 215, 216, 160, 712, 160,
865 160, 328, 329, 193, 194, 195, 511, 194, 198, 199,
866 689, 195, 199, 202, 208, 209, 210, 319, 210, 210,
867 218, 319, 218, 218, 662, 221, 234, 221, 222, 158,
869 544, 544, 530, 196, 226, 226, 261, 200, 211, 212,
870 213, 203, 226, 262, 370, 217, 267, 226, 226, 263,
871 268, 269, 265, 226, 226, 226, 510, 284, 266, 284,
872 285, 319, 280, 449, 281, 371, 226, 270, 214, 223,
873 271, 274, 219, 220, 226, 275, 226, 224, 225, 276,
874 225, 225, 287, 660, 287, 288, 226, 226, 160, 443,
875 160, 160, 351, 352, 227, 512, 227, 227, 228, 226,
876 319, 229, 160, 291, 160, 160, 657, 226, 345, 286,
877 292, 294, 298, 294, 295, 160, 722, 160, 160, 160,
878 451, 160, 160, 654, 160, 205, 160, 160, 289, 299,
880 225, 231, 440, 440, 290, 345, 160, 226, 160, 160,
881 160, 297, 160, 160, 232, 233, 160, 300, 160, 160,
882 226, 448, 233, 233, 233, 233, 233, 233, 235, 301,
883 161, 226, 160, 296, 160, 160, 648, 236, 237, 645,
884 370, 447, 304, 302, 226, 237, 237, 237, 237, 237,
885 237, 238, 370, 238, 238, 239, 160, 239, 160, 160,
886 160, 371, 160, 160, 303, 522, 305, 240, 642, 241,
887 241, 228, 226, 371, 242, 160, 239, 160, 160, 160,
888 345, 160, 160, 456, 226, 226, 160, 244, 160, 160,
889 520, 445, 306, 307, 523, 345, 313, 226, 308, 345,
891 314, 630, 311, 238, 188, 245, 188, 245, 245, 239,
892 188, 239, 188, 188, 188, 188, 188, 188, 188, 188,
893 188, 246, 188, 247, 247, 248, 188, 188, 249, 188,
894 239, 239, 239, 239, 239, 250, 239, 239, 239, 239,
895 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
896 239, 239, 239, 239, 239, 239, 188, 245, 188, 225,
897 624, 225, 225, 160, 230, 160, 160, 160, 650, 160,
898 160, 160, 183, 160, 160, 227, 370, 227, 227, 228,
899 598, 160, 229, 160, 160, 226, 370, 160, 251, 160,
900 160, 566, 309, 207, 723, 312, 310, 371, 226, 315,
902 453, 252, 318, 638, 318, 318, 160, 371, 160, 160,
903 316, 225, 180, 345, 180, 371, 317, 371, 320, 345,
904 320, 320, 627, 334, 181, 321, 182, 182, 330, 206,
905 330, 331, 335, 180, 335, 336, 353, 319, 353, 354,
906 356, 357, 356, 358, 323, 360, 226, 360, 360, 360,
907 459, 360, 360, 554, 318, 318, 534, 318, 318, 226,
908 361, 357, 361, 362, 391, 160, 391, 160, 160, 441,
909 441, 320, 332, 320, 320, 364, 544, 544, 321, 160,
910 333, 160, 160, 160, 337, 160, 160, 160, 355, 160,
911 160, 366, 359, 160, 532, 160, 160, 360, 635, 781,
913 181, 360, 181, 181, 324, 365, 527, 318, 338, 141,
914 338, 339, 363, 345, 345, 143, 144, 513, 319, 145,
915 146, 147, 148, 149, 158, 150, 158, 158, 506, 141,
916 151, 152, 153, 340, 340, 340, 340, 340, 340, 340,
917 340, 340, 340, 340, 340, 340, 340, 340, 340, 340,
918 340, 340, 340, 340, 341, 342, 340, 340, 340, 155,
919 343, 157, 344, 319, 344, 344, 159, 319, 159, 226,
920 165, 226, 165, 165, 450, 226, 158, 477, 160, 457,
921 160, 160, 226, 166, 226, 166, 166, 174, 460, 174,
922 174, 167, 177, 439, 177, 177, 428, 421, 178, 175,
924 178, 178, 179, 521, 179, 179, 185, 226, 185, 185,
925 181, 418, 181, 181, 344, 344, 345, 344, 344, 159,
926 567, 159, 165, 186, 192, 379, 192, 192, 369, 226,
927 454, 160, 226, 160, 160, 168, 367, 857, 197, 176,
928 197, 197, 226, 473, 177, 226, 193, 194, 195, 201,
929 178, 201, 201, 218, 179, 218, 218, 226, 187, 137,
930 194, 198, 199, 368, 346, 368, 368, 344, 570, 137,
931 226, 195, 199, 202, 99, 158, 196, 158, 158, 376,
932 226, 376, 376, 99, 377, 211, 212, 213, 857, 165,
933 200, 165, 165, 226, 226, 458, 166, 375, 166, 166,
935 378, 203, 378, 378, 167, 219, 220, 576, 168, 455,
936 168, 168, 226, 226, 384, 857, 384, 384, 857, 173,
937 467, 173, 173, 385, 857, 226, 226, 158, 372, 857,
938 372, 372, 383, 373, 386, 857, 386, 386, 226, 464,
939 226, 165, 176, 857, 176, 176, 374, 375, 168, 226,
940 461, 226, 378, 226, 375, 375, 375, 375, 375, 375,
941 168, 380, 226, 380, 380, 174, 817, 174, 174, 466,
942 381, 173, 177, 319, 177, 177, 857, 175, 857, 382,
943 383, 178, 857, 178, 178, 226, 386, 383, 383, 383,
944 383, 383, 383, 179, 176, 179, 179, 180, 226, 180,
946 465, 180, 391, 180, 391, 181, 226, 392, 392, 181,
947 857, 181, 181, 181, 857, 181, 181, 176, 180, 226,
948 857, 472, 180, 185, 177, 185, 185, 389, 857, 389,
949 389, 388, 187, 178, 187, 187, 396, 857, 396, 396,
950 186, 397, 857, 397, 397, 179, 387, 387, 387, 387,
951 387, 857, 387, 857, 387, 387, 387, 387, 387, 387,
952 387, 387, 387, 181, 387, 182, 182, 387, 387, 387,
953 387, 387, 226, 469, 393, 187, 393, 393, 226, 389,
954 192, 468, 192, 192, 187, 226, 857, 196, 396, 196,
955 196, 226, 197, 397, 197, 197, 857, 394, 387, 387,
957 387, 857, 193, 194, 195, 398, 857, 398, 398, 399,
958 857, 399, 399, 857, 194, 198, 199, 200, 857, 200,
959 200, 203, 857, 203, 203, 201, 395, 201, 201, 392,
960 392, 400, 196, 400, 400, 405, 857, 405, 405, 196,
961 403, 180, 403, 403, 200, 857, 857, 195, 199, 202,
962 160, 857, 160, 160, 401, 857, 160, 398, 160, 160,
963 160, 399, 160, 160, 160, 857, 160, 160, 160, 200,
964 160, 160, 409, 203, 409, 409, 404, 203, 210, 857,
965 210, 210, 407, 402, 226, 857, 226, 405, 406, 857,
966 857, 462, 403, 569, 410, 411, 408, 226, 463, 226,
968 211, 212, 213, 412, 226, 412, 412, 857, 415, 857,
969 415, 415, 214, 857, 214, 214, 218, 226, 218, 218,
970 219, 577, 219, 219, 399, 411, 413, 414, 857, 857,
971 214, 414, 416, 417, 471, 417, 417, 226, 225, 226,
972 225, 225, 419, 585, 419, 419, 420, 857, 420, 420,
973 226, 438, 226, 438, 438, 397, 857, 226, 228, 857,
974 396, 229, 580, 238, 214, 238, 238, 226, 219, 220,
975 226, 426, 219, 426, 426, 433, 427, 433, 433, 857,
976 226, 857, 476, 228, 434, 417, 242, 226, 474, 425,
977 225, 857, 475, 432, 419, 857, 226, 571, 420, 422,
979 226, 422, 422, 438, 423, 160, 857, 160, 160, 226,
980 160, 226, 160, 160, 857, 238, 593, 424, 425, 238,
981 478, 238, 238, 857, 226, 425, 425, 425, 425, 425,
982 425, 429, 857, 429, 429, 419, 481, 419, 419, 228,
983 430, 438, 242, 438, 438, 160, 857, 160, 160, 431,
984 432, 226, 575, 284, 857, 284, 285, 432, 432, 432,
985 432, 432, 432, 238, 226, 238, 238, 487, 441, 441,
986 444, 238, 444, 444, 857, 446, 226, 446, 446, 240,
987 239, 240, 240, 228, 857, 857, 242, 419, 479, 226,
988 479, 479, 586, 438, 226, 452, 857, 452, 452, 226,
990 470, 584, 470, 470, 226, 286, 160, 226, 160, 160,
991 226, 294, 226, 294, 295, 238, 238, 226, 238, 238,
992 226, 579, 444, 226, 226, 573, 480, 446, 160, 226,
993 160, 160, 240, 226, 240, 240, 228, 226, 857, 242,
994 479, 160, 226, 160, 160, 857, 482, 452, 857, 857,
995 857, 160, 470, 160, 160, 160, 857, 160, 160, 857,
996 857, 483, 160, 296, 160, 160, 857, 489, 238, 387,
997 435, 387, 435, 435, 857, 387, 494, 387, 387, 387,
998 387, 387, 387, 387, 387, 387, 488, 387, 241, 241,
999 436, 387, 387, 437, 387, 857, 160, 857, 160, 160,
1001 250, 857, 160, 226, 160, 160, 160, 597, 160, 160,
1002 160, 857, 160, 160, 169, 528, 226, 160, 492, 160,
1003 160, 387, 435, 387, 238, 226, 238, 238, 239, 484,
1004 239, 857, 529, 628, 485, 857, 486, 490, 226, 582,
1005 240, 857, 240, 240, 228, 491, 319, 242, 160, 239,
1006 160, 160, 160, 529, 160, 160, 160, 530, 160, 160,
1007 160, 857, 160, 160, 857, 857, 160, 857, 160, 160,
1008 857, 160, 495, 160, 160, 160, 238, 160, 160, 493,
1009 160, 226, 160, 160, 497, 496, 498, 160, 596, 160,
1010 160, 501, 499, 318, 226, 318, 318, 500, 160, 857,
1012 160, 160, 507, 857, 507, 507, 502, 509, 857, 509,
1013 509, 335, 514, 335, 336, 344, 321, 344, 344, 226,
1014 581, 503, 857, 344, 857, 344, 344, 344, 857, 344,
1015 344, 344, 226, 344, 344, 517, 857, 517, 517, 519,
1016 857, 519, 519, 857, 857, 318, 504, 857, 504, 504,
1017 180, 319, 180, 515, 507, 637, 319, 516, 353, 509,
1018 353, 354, 181, 337, 181, 181, 857, 344, 345, 505,
1019 360, 180, 360, 360, 360, 344, 360, 360, 361, 344,
1020 361, 362, 226, 344, 345, 857, 669, 517, 345, 226,
1021 160, 519, 160, 160, 857, 668, 857, 160, 504, 160,
1023 160, 160, 226, 160, 160, 368, 857, 368, 368, 161,
1024 355, 524, 161, 525, 528, 161, 857, 528, 857, 526,
1025 528, 378, 360, 378, 378, 857, 360, 211, 212, 213,
1026 363, 529, 537, 538, 370, 226, 160, 529, 160, 160,
1027 538, 538, 538, 538, 538, 538, 583, 226, 226, 169,
1028 528, 587, 529, 857, 548, 371, 530, 369, 371, 530,
1029 226, 857, 530, 226, 589, 857, 386, 370, 386, 386,
1030 535, 536, 389, 378, 389, 389, 226, 226, 536, 536,
1031 536, 536, 536, 536, 376, 857, 376, 376, 371, 377,
1032 671, 160, 530, 160, 160, 857, 541, 542, 393, 857,
1034 393, 393, 538, 538, 542, 542, 542, 542, 542, 542,
1035 538, 538, 538, 538, 538, 538, 369, 857, 386, 603,
1036 545, 394, 545, 545, 389, 395, 857, 395, 395, 536,
1037 536, 169, 528, 592, 226, 226, 857, 536, 536, 536,
1038 536, 536, 536, 379, 590, 857, 226, 226, 226, 529,
1039 395, 857, 539, 540, 396, 591, 396, 396, 226, 226,
1040 540, 540, 540, 540, 540, 540, 384, 595, 384, 384,
1041 371, 226, 545, 857, 530, 385, 397, 395, 397, 397,
1042 398, 857, 398, 398, 542, 542, 399, 226, 399, 399,
1043 226, 594, 542, 542, 542, 542, 542, 542, 379, 400,
1045 673, 400, 400, 226, 857, 857, 396, 540, 540, 546,
1046 857, 546, 546, 226, 663, 540, 540, 540, 540, 540,
1047 540, 402, 401, 402, 402, 857, 226, 403, 397, 403,
1048 403, 547, 398, 547, 547, 857, 857, 405, 399, 405,
1049 405, 857, 160, 857, 160, 160, 160, 226, 160, 160,
1050 857, 402, 409, 857, 409, 409, 551, 672, 551, 551,
1051 226, 546, 549, 550, 203, 857, 203, 203, 412, 857,
1052 412, 412, 857, 402, 410, 411, 857, 857, 552, 403,
1053 552, 552, 196, 547, 196, 196, 226, 670, 857, 405,
1054 411, 413, 414, 857, 415, 857, 415, 415, 553, 226,
1056 553, 553, 226, 417, 399, 417, 417, 419, 551, 419,
1057 419, 420, 226, 420, 420, 679, 203, 414, 416, 684,
1058 397, 238, 857, 238, 238, 226, 857, 560, 561, 160,
1059 552, 160, 160, 857, 196, 561, 561, 561, 561, 561,
1060 561, 228, 857, 610, 242, 419, 396, 419, 419, 438,
1061 553, 438, 438, 857, 438, 417, 438, 438, 568, 419,
1062 568, 568, 226, 420, 555, 857, 555, 555, 857, 230,
1063 564, 565, 714, 238, 528, 685, 680, 226, 565, 565,
1064 565, 565, 565, 565, 556, 319, 160, 226, 160, 160,
1065 226, 529, 857, 599, 721, 599, 599, 419, 857, 857,
1067 226, 438, 444, 857, 444, 444, 438, 345, 857, 857,
1068 568, 160, 529, 160, 160, 600, 557, 421, 160, 857,
1069 160, 160, 228, 857, 857, 229, 479, 857, 479, 479,
1070 558, 559, 446, 857, 446, 446, 621, 605, 559, 559,
1071 559, 559, 559, 559, 426, 599, 426, 426, 160, 427,
1072 160, 160, 228, 681, 444, 229, 226, 452, 857, 452,
1073 452, 857, 561, 561, 572, 857, 572, 572, 602, 226,
1074 561, 561, 561, 561, 561, 561, 421, 228, 479, 160,
1075 229, 160, 160, 751, 446, 574, 857, 574, 574, 559,
1076 559, 857, 160, 226, 160, 160, 226, 559, 559, 559,
1078 559, 559, 559, 428, 226, 674, 226, 604, 160, 452,
1079 160, 160, 562, 563, 226, 601, 572, 226, 606, 857,
1080 563, 563, 563, 563, 563, 563, 433, 226, 433, 433,
1081 578, 857, 578, 578, 226, 434, 160, 574, 160, 160,
1082 609, 755, 609, 609, 565, 565, 470, 226, 470, 470,
1083 857, 857, 565, 565, 565, 565, 565, 565, 428, 226,
1084 588, 857, 588, 588, 607, 857, 228, 563, 563, 229,
1085 857, 160, 226, 160, 160, 563, 563, 563, 563, 563,
1086 563, 160, 578, 160, 160, 160, 857, 160, 160, 226,
1087 857, 857, 609, 226, 608, 611, 226, 675, 470, 612,
1089 857, 160, 226, 160, 160, 160, 795, 160, 160, 226,
1090 226, 160, 588, 160, 160, 613, 857, 857, 160, 614,
1091 160, 160, 160, 826, 160, 160, 160, 857, 160, 160,
1092 619, 615, 619, 619, 857, 160, 617, 160, 160, 547,
1093 857, 547, 547, 160, 616, 160, 160, 504, 857, 504,
1094 504, 507, 857, 507, 507, 618, 625, 857, 625, 625,
1095 857, 509, 620, 509, 509, 160, 857, 160, 160, 517,
1096 505, 517, 517, 857, 321, 226, 622, 623, 344, 857,
1097 344, 344, 619, 857, 321, 857, 626, 631, 226, 743,
1098 344, 547, 344, 344, 634, 857, 634, 634, 519, 504,
1100 519, 519, 226, 507, 160, 319, 160, 160, 625, 160,
1101 857, 160, 160, 509, 632, 226, 794, 160, 639, 160,
1102 160, 517, 857, 372, 857, 372, 372, 640, 373, 857,
1103 344, 641, 857, 857, 633, 545, 857, 545, 545, 226,
1104 678, 646, 344, 345, 857, 546, 634, 546, 546, 857,
1105 519, 161, 226, 161, 161, 380, 369, 380, 380, 160,
1106 857, 160, 160, 547, 381, 547, 547, 857, 857, 644,
1107 645, 705, 653, 649, 653, 653, 226, 645, 645, 645,
1108 645, 645, 645, 169, 857, 169, 169, 545, 160, 226,
1109 160, 160, 379, 160, 749, 160, 160, 546, 857, 857,
1111 857, 647, 648, 551, 857, 551, 551, 652, 651, 648,
1112 648, 648, 648, 648, 648, 547, 552, 857, 552, 552,
1113 553, 226, 553, 553, 653, 555, 747, 555, 555, 655,
1114 857, 655, 655, 555, 226, 555, 555, 857, 857, 422,
1115 857, 422, 422, 528, 423, 556, 857, 429, 857, 429,
1116 429, 226, 683, 556, 857, 551, 430, 658, 857, 568,
1117 226, 568, 568, 226, 226, 661, 857, 664, 552, 664,
1118 664, 744, 553, 226, 226, 687, 226, 555, 745, 228,
1119 857, 655, 229, 857, 226, 557, 230, 226, 230, 230,
1120 857, 421, 160, 748, 160, 160, 226, 226, 857, 665,
1122 857, 665, 665, 857, 656, 657, 690, 857, 857, 226,
1123 857, 568, 657, 657, 657, 657, 657, 657, 234, 664,
1124 234, 234, 226, 666, 857, 666, 666, 428, 226, 857,
1125 572, 753, 572, 572, 857, 226, 659, 660, 857, 857,
1126 574, 226, 574, 574, 660, 660, 660, 660, 660, 660,
1127 228, 665, 226, 229, 667, 857, 667, 667, 857, 676,
1128 228, 676, 676, 229, 578, 226, 578, 578, 677, 857,
1129 677, 677, 226, 796, 160, 666, 160, 160, 599, 857,
1130 599, 599, 572, 226, 228, 226, 857, 229, 226, 797,
1131 226, 693, 574, 693, 693, 226, 226, 226, 857, 226,
1133 691, 226, 588, 226, 588, 588, 667, 857, 226, 798,
1134 226, 676, 226, 857, 754, 682, 578, 682, 682, 857,
1135 677, 686, 228, 686, 686, 229, 688, 226, 688, 688,
1136 599, 160, 799, 160, 160, 160, 857, 160, 160, 160,
1137 226, 160, 160, 693, 226, 857, 857, 857, 694, 160,
1138 226, 160, 160, 695, 588, 226, 160, 226, 160, 160,
1139 692, 857, 160, 226, 160, 160, 697, 682, 226, 696,
1140 857, 857, 609, 686, 609, 609, 857, 160, 688, 160,
1141 160, 160, 857, 160, 160, 160, 857, 160, 160, 698,
1142 160, 857, 160, 160, 857, 857, 160, 699, 160, 160,
1144 857, 857, 704, 701, 704, 704, 160, 700, 160, 160,
1145 857, 160, 857, 160, 160, 619, 702, 619, 619, 857,
1146 857, 857, 703, 857, 609, 707, 160, 857, 160, 160,
1147 857, 160, 706, 160, 160, 710, 857, 710, 710, 711,
1148 857, 711, 711, 625, 708, 625, 625, 716, 857, 716,
1149 716, 857, 857, 718, 704, 718, 718, 857, 344, 709,
1150 344, 344, 634, 857, 634, 634, 321, 619, 344, 857,
1151 344, 344, 724, 857, 724, 724, 725, 857, 725, 725,
1152 160, 226, 160, 160, 857, 226, 160, 710, 160, 160,
1153 653, 711, 653, 653, 226, 625, 319, 800, 226, 716,
1155 838, 720, 726, 719, 160, 718, 160, 160, 727, 380,
1156 344, 380, 380, 160, 634, 160, 160, 857, 381, 857,
1157 344, 345, 728, 536, 724, 857, 770, 731, 725, 857,
1158 536, 536, 536, 536, 536, 536, 536, 536, 372, 763,
1159 372, 372, 653, 373, 536, 536, 536, 536, 536, 536,
1160 730, 540, 733, 857, 733, 733, 729, 857, 540, 540,
1161 540, 540, 540, 540, 540, 540, 734, 857, 734, 734,
1162 226, 821, 540, 540, 540, 540, 540, 540, 732, 732,
1163 732, 732, 732, 226, 732, 857, 732, 732, 732, 732,
1164 732, 732, 732, 732, 732, 653, 732, 653, 653, 732,
1166 732, 732, 732, 732, 733, 735, 857, 735, 735, 655,
1167 857, 655, 655, 183, 736, 559, 857, 160, 734, 160,
1168 160, 857, 559, 559, 559, 559, 559, 559, 559, 559,
1169 732, 732, 732, 857, 857, 764, 559, 559, 559, 559,
1170 559, 559, 664, 857, 664, 664, 422, 653, 422, 422,
1171 746, 423, 746, 746, 857, 857, 857, 735, 738, 563,
1172 857, 655, 228, 857, 737, 229, 563, 563, 563, 563,
1173 563, 563, 563, 563, 160, 857, 160, 160, 857, 226,
1174 563, 563, 563, 563, 563, 563, 429, 226, 429, 429,
1175 857, 857, 226, 857, 664, 430, 160, 857, 160, 160,
1177 226, 825, 746, 766, 739, 732, 740, 732, 740, 740,
1178 768, 732, 857, 732, 732, 732, 732, 732, 732, 732,
1179 732, 732, 665, 732, 665, 665, 741, 732, 732, 742,
1180 732, 666, 857, 666, 666, 857, 750, 857, 750, 750,
1181 857, 667, 228, 667, 667, 229, 676, 857, 676, 676,
1182 677, 228, 677, 677, 229, 226, 839, 732, 740, 732,
1183 160, 228, 160, 160, 229, 226, 228, 857, 226, 229,
1184 228, 857, 857, 229, 665, 857, 857, 752, 226, 752,
1185 752, 857, 771, 666, 682, 857, 682, 682, 750, 756,
1186 857, 756, 756, 667, 857, 857, 857, 757, 676, 757,
1188 757, 857, 677, 857, 228, 857, 226, 229, 758, 857,
1189 758, 758, 686, 857, 686, 686, 857, 857, 226, 226,
1190 688, 857, 688, 688, 857, 759, 226, 759, 759, 752,
1191 857, 226, 228, 226, 840, 229, 682, 226, 857, 226,
1192 228, 756, 761, 229, 761, 761, 226, 857, 857, 757,
1193 226, 857, 857, 762, 226, 762, 762, 857, 857, 693,
1194 758, 693, 693, 160, 686, 160, 160, 226, 160, 857,
1195 160, 160, 688, 765, 857, 857, 160, 759, 160, 160,
1196 772, 857, 772, 772, 160, 857, 160, 160, 857, 704,
1197 769, 704, 704, 160, 761, 160, 160, 857, 857, 857,
1199 767, 775, 773, 775, 775, 762, 776, 774, 776, 776,
1200 160, 693, 160, 160, 857, 160, 857, 160, 160, 710,
1201 857, 710, 710, 711, 857, 711, 711, 160, 857, 160,
1202 160, 857, 772, 777, 160, 857, 160, 160, 857, 857,
1203 857, 704, 778, 857, 782, 857, 782, 782, 788, 160,
1204 857, 160, 160, 775, 783, 789, 783, 783, 776, 857,
1205 716, 857, 716, 716, 718, 805, 718, 718, 857, 857,
1206 718, 710, 718, 718, 857, 711, 732, 779, 732, 779,
1207 779, 857, 732, 321, 732, 732, 732, 732, 732, 732,
1208 732, 732, 732, 319, 732, 857, 782, 732, 732, 732,
1210 780, 732, 344, 319, 344, 344, 783, 724, 857, 724,
1211 724, 785, 716, 785, 785, 786, 718, 786, 786, 857,
1212 857, 787, 718, 787, 787, 857, 857, 857, 732, 779,
1213 732, 724, 784, 724, 724, 725, 857, 725, 725, 372,
1214 857, 372, 372, 380, 373, 380, 380, 733, 857, 733,
1215 733, 857, 381, 734, 344, 734, 734, 729, 857, 724,
1216 345, 731, 857, 785, 345, 857, 735, 786, 735, 735,
1217 345, 857, 422, 787, 422, 422, 429, 423, 429, 429,
1218 857, 857, 857, 724, 857, 430, 238, 725, 238, 238,
1219 737, 857, 857, 419, 739, 419, 419, 857, 438, 733,
1221 438, 438, 857, 857, 857, 734, 228, 857, 746, 242,
1222 746, 746, 750, 857, 750, 750, 857, 752, 735, 752,
1223 752, 857, 857, 801, 857, 801, 801, 160, 228, 160,
1224 160, 229, 228, 857, 857, 229, 857, 228, 238, 802,
1225 229, 802, 802, 857, 803, 419, 803, 803, 857, 815,
1226 438, 756, 226, 756, 756, 857, 757, 857, 757, 757,
1227 746, 857, 857, 857, 750, 226, 857, 857, 226, 752,
1228 857, 228, 857, 226, 229, 801, 228, 857, 857, 229,
1229 857, 226, 758, 857, 758, 758, 226, 759, 857, 759,
1230 759, 802, 761, 857, 761, 761, 803, 761, 857, 761,
1232 761, 857, 228, 756, 857, 229, 857, 228, 757, 762,
1233 229, 762, 762, 160, 857, 160, 160, 160, 857, 160,
1234 160, 160, 857, 160, 160, 857, 808, 804, 808, 808,
1235 806, 857, 857, 857, 758, 807, 857, 857, 809, 759,
1236 809, 809, 857, 160, 761, 160, 160, 857, 160, 761,
1237 160, 160, 812, 857, 812, 812, 857, 772, 811, 772,
1238 772, 762, 160, 857, 160, 160, 814, 857, 814, 814,
1239 810, 857, 857, 775, 813, 775, 775, 776, 808, 776,
1240 776, 816, 857, 816, 816, 504, 857, 504, 504, 782,
1241 809, 782, 782, 783, 857, 783, 783, 786, 857, 786,
1243 786, 857, 857, 785, 812, 785, 785, 857, 505, 772,
1244 857, 786, 321, 786, 786, 857, 321, 787, 814, 787,
1245 787, 160, 857, 160, 160, 775, 857, 857, 160, 776,
1246 160, 160, 857, 816, 857, 818, 160, 504, 160, 160,
1247 160, 782, 160, 160, 857, 783, 819, 857, 160, 786,
1248 160, 160, 857, 857, 828, 785, 857, 827, 857, 827,
1249 827, 857, 857, 786, 535, 536, 857, 831, 832, 787,
1250 539, 540, 536, 536, 536, 536, 536, 536, 540, 540,
1251 540, 540, 540, 540, 558, 559, 820, 857, 820, 820,
1252 562, 563, 559, 559, 559, 559, 559, 559, 563, 563,
1254 563, 563, 563, 563, 822, 857, 822, 822, 823, 827,
1255 823, 823, 857, 857, 857, 226, 824, 857, 824, 824,
1256 801, 857, 801, 801, 802, 857, 802, 802, 226, 803,
1257 857, 803, 803, 226, 857, 857, 857, 226, 820, 830,
1258 228, 830, 830, 229, 228, 226, 226, 229, 857, 228,
1259 226, 160, 229, 160, 160, 857, 822, 857, 226, 808,
1260 823, 808, 808, 809, 857, 809, 809, 812, 824, 812,
1261 812, 833, 801, 833, 833, 814, 802, 814, 814, 857,
1262 834, 803, 834, 834, 829, 816, 857, 816, 816, 857,
1263 835, 830, 835, 835, 160, 857, 160, 160, 160, 857,
1265 160, 160, 820, 857, 820, 820, 822, 857, 822, 822,
1266 857, 808, 857, 837, 827, 809, 827, 827, 857, 812,
1267 836, 857, 228, 833, 857, 229, 228, 814, 823, 229,
1268 823, 823, 834, 824, 857, 824, 824, 816, 857, 319,
1269 857, 160, 835, 160, 160, 857, 857, 842, 228, 842,
1270 842, 229, 857, 228, 820, 857, 229, 830, 822, 830,
1271 830, 843, 857, 843, 843, 844, 827, 844, 844, 841,
1272 833, 857, 833, 833, 834, 857, 834, 834, 857, 835,
1273 823, 835, 835, 857, 857, 824, 160, 857, 160, 160,
1274 160, 857, 160, 160, 847, 857, 847, 847, 848, 842,
1276 848, 848, 321, 849, 845, 849, 849, 857, 846, 830,
1277 857, 857, 160, 843, 160, 160, 842, 844, 842, 842,
1278 857, 857, 833, 226, 857, 857, 834, 226, 857, 857,
1279 857, 835, 226, 857, 857, 843, 226, 843, 843, 850,
1280 226, 844, 857, 844, 844, 226, 847, 857, 857, 160,
1281 848, 160, 160, 857, 160, 849, 160, 160, 847, 857,
1282 847, 847, 848, 857, 848, 848, 852, 853, 842, 853,
1283 853, 851, 849, 857, 849, 849, 857, 855, 228, 855,
1284 855, 229, 228, 857, 857, 229, 160, 843, 160, 160,
1285 857, 857, 228, 844, 853, 229, 853, 853, 856, 857,
1287 856, 856, 854, 855, 857, 855, 855, 857, 857, 856,
1288 847, 856, 856, 857, 848, 857, 857, 857, 857, 853,
1289 857, 857, 857, 857, 849, 857, 857, 857, 857, 855,
1290 857, 857, 857, 857, 857, 857, 857, 857, 857, 857,
1291 857, 857, 857, 857, 857, 857, 853, 857, 857, 857,
1292 856, 857, 857, 857, 857, 855, 857, 857, 857, 857,
1293 857, 856, 159, 857, 159, 857, 857, 159, 161, 161,
1294 161, 161, 161, 161, 161, 161, 169, 169, 169, 169,
1295 169, 169, 169, 169, 183, 857, 183, 857, 857, 183,
1296 226, 226, 857, 226, 226, 226, 226, 230, 230, 230,
1298 230, 230, 230, 230, 230, 234, 234, 234, 234, 234,
1299 234, 234, 234, 243, 243, 857, 243, 243, 243, 243,
1300 319, 319, 857, 319, 857, 319, 319, 322, 857, 322,
1301 857, 857, 322, 345, 345, 857, 345, 857, 857, 345,
1302 180, 857, 180, 857, 857, 180, 239, 239, 857, 239,
1303 239, 239, 239, 340, 857, 857, 857, 857, 857, 340,
1304 531, 531, 857, 531, 857, 531, 531, 533, 533, 857,
1305 533, 857, 533, 533, 643, 643, 857, 857, 857, 643,
1306 643, 387, 387, 857, 387, 387, 387, 387, 31, 857,
1307 857, 857, 857, 857, 857, 857, 857, 857, 857, 857,
1309 857, 857, 857, 857, 857, 857, 857, 857, 857, 857,
1310 857, 857, 857, 857, 857, 857, 857, 857, 857, 857,
1311 857, 857, 857, 857, 857, 857, 857, 857, 857, 857,
1312 857, 857, 857, 857, 857, 857, 857, 857, 857, 857,
1313 857, 857, 857, 857
1316 static yyconst short int yy_chk[4645] =
1317 { 0,
1318 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1319 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1320 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1321 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1322 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1323 1, 1, 1, 1, 1, 3, 3, 3, 3, 3,
1324 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1325 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1326 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1327 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1329 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1330 5, 388, 5, 5, 6, 388, 6, 6, 7, 7,
1331 71, 7, 8, 8, 7, 8, 7, 17, 8, 17,
1332 8, 7, 18, 71, 18, 8, 738, 77, 77, 21,
1333 71, 21, 21, 72, 226, 22, 72, 22, 22, 5,
1334 77, 129, 34, 6, 34, 34, 5, 226, 114, 72,
1335 6, 36, 5, 36, 36, 73, 6, 11, 114, 11,
1336 55, 11, 55, 55, 129, 73, 736, 11, 73, 11,
1337 81, 11, 730, 21, 11, 115, 11, 11, 12, 22,
1338 12, 21, 12, 81, 325, 115, 81, 22, 12, 347,
1340 12, 325, 12, 55, 34, 12, 347, 12, 12, 19,
1341 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1342 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1343 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1344 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1345 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1346 19, 19, 19, 19, 23, 23, 23, 23, 23, 23,
1347 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1348 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1349 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1351 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1352 23, 23, 23, 23, 23, 23, 23, 23, 23, 25,
1353 25, 25, 25, 26, 26, 26, 26, 29, 74, 29,
1354 29, 30, 75, 30, 30, 74, 38, 74, 38, 38,
1355 25, 74, 75, 126, 26, 75, 626, 74, 39, 626,
1356 39, 39, 41, 126, 41, 41, 39, 29, 728, 82,
1357 82, 30, 44, 25, 44, 44, 43, 26, 43, 43,
1358 29, 25, 82, 29, 30, 26, 86, 30, 43, 29,
1359 86, 86, 116, 30, 33, 33, 33, 33, 38, 86,
1360 428, 33, 33, 116, 428, 33, 33, 33, 33, 33,
1362 39, 33, 189, 189, 41, 33, 33, 33, 33, 56,
1363 628, 56, 56, 47, 44, 47, 127, 45, 43, 45,
1364 45, 46, 128, 46, 46, 47, 127, 47, 47, 628,
1365 227, 33, 56, 128, 47, 33, 33, 33, 37, 48,
1366 251, 48, 48, 227, 57, 47, 57, 57, 246, 246,
1367 170, 37, 37, 251, 689, 58, 48, 58, 58, 37,
1368 37, 37, 37, 37, 37, 40, 84, 57, 170, 45,
1369 84, 390, 390, 46, 40, 40, 84, 58, 91, 84,
1370 91, 91, 40, 40, 40, 40, 40, 40, 91, 170,
1371 630, 48, 49, 49, 49, 49, 49, 49, 49, 49,
1373 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
1374 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
1375 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
1376 49, 49, 49, 49, 49, 49, 49, 49, 49, 49,
1377 49, 49, 49, 49, 49, 49, 49, 51, 512, 51,
1378 51, 52, 521, 52, 52, 53, 521, 53, 53, 54,
1379 530, 54, 54, 61, 512, 61, 61, 59, 624, 59,
1380 59, 117, 117, 52, 52, 52, 328, 53, 53, 53,
1381 598, 54, 54, 54, 59, 59, 60, 117, 60, 60,
1382 62, 328, 62, 62, 566, 63, 235, 63, 63, 51,
1384 391, 391, 530, 52, 76, 79, 76, 53, 60, 60,
1385 60, 54, 78, 76, 235, 61, 79, 76, 79, 76,
1386 79, 80, 78, 85, 80, 78, 327, 87, 78, 87,
1387 87, 327, 85, 258, 85, 235, 85, 80, 60, 63,
1388 80, 83, 62, 62, 83, 83, 258, 63, 65, 83,
1389 65, 65, 88, 563, 88, 88, 252, 83, 90, 252,
1390 90, 90, 130, 130, 65, 329, 65, 65, 65, 252,
1391 329, 65, 94, 90, 94, 94, 559, 260, 130, 87,
1392 90, 92, 94, 92, 92, 93, 636, 93, 93, 95,
1393 260, 95, 95, 554, 96, 94, 96, 96, 88, 95,
1395 65, 66, 440, 440, 88, 636, 97, 257, 97, 97,
1396 98, 93, 98, 98, 66, 66, 100, 96, 100, 100,
1397 257, 257, 66, 66, 66, 66, 66, 66, 67, 97,
1398 162, 256, 99, 92, 99, 99, 540, 67, 67, 536,
1399 423, 256, 100, 98, 256, 67, 67, 67, 67, 67,
1400 67, 68, 162, 68, 68, 68, 101, 68, 101, 101,
1401 102, 423, 102, 102, 99, 351, 101, 68, 527, 68,
1402 68, 68, 265, 162, 68, 103, 68, 103, 103, 106,
1403 351, 106, 106, 265, 254, 265, 108, 68, 108, 108,
1404 349, 254, 102, 103, 352, 349, 108, 254, 103, 352,
1406 108, 513, 106, 68, 69, 69, 69, 69, 69, 69,
1407 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
1408 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
1409 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
1410 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
1411 69, 69, 69, 69, 69, 69, 69, 69, 69, 70,
1412 506, 70, 70, 104, 231, 104, 104, 105, 543, 105,
1413 105, 107, 543, 107, 107, 70, 430, 70, 70, 70,
1414 477, 109, 70, 109, 109, 262, 231, 110, 70, 110,
1415 110, 439, 104, 107, 637, 107, 105, 430, 262, 109,
1417 262, 70, 111, 523, 111, 111, 120, 231, 120, 120,
1418 110, 70, 112, 637, 112, 434, 110, 427, 111, 523,
1419 111, 111, 510, 120, 112, 111, 112, 112, 118, 120,
1420 118, 118, 121, 112, 121, 121, 131, 510, 131, 131,
1421 132, 132, 132, 132, 112, 133, 268, 133, 133, 135,
1422 268, 135, 135, 418, 111, 113, 371, 113, 113, 268,
1423 136, 132, 136, 136, 250, 137, 250, 137, 137, 250,
1424 250, 113, 118, 113, 113, 137, 544, 544, 113, 139,
1425 118, 139, 139, 138, 121, 138, 138, 159, 131, 159,
1426 159, 139, 132, 160, 370, 160, 160, 133, 520, 713,
1428 180, 135, 180, 180, 113, 138, 367, 113, 122, 122,
1429 122, 122, 136, 520, 345, 122, 122, 332, 713, 122,
1430 122, 122, 122, 122, 141, 122, 141, 141, 323, 122,
1431 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
1432 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
1433 122, 122, 122, 122, 122, 122, 122, 122, 122, 122,
1434 122, 122, 124, 320, 124, 124, 124, 319, 124, 259,
1435 143, 266, 143, 143, 259, 269, 141, 289, 124, 266,
1436 124, 124, 259, 144, 266, 144, 144, 146, 269, 146,
1437 146, 144, 147, 244, 147, 147, 234, 230, 148, 146,
1439 148, 148, 149, 350, 149, 149, 150, 442, 150, 150,
1440 181, 223, 181, 181, 124, 125, 350, 125, 125, 125,
1441 442, 125, 143, 150, 151, 169, 151, 151, 161, 263,
1442 263, 125, 281, 125, 125, 144, 154, 31, 152, 146,
1443 152, 152, 263, 281, 147, 281, 151, 151, 151, 153,
1444 148, 153, 153, 157, 149, 157, 157, 447, 150, 28,
1445 152, 152, 152, 155, 125, 155, 155, 125, 447, 27,
1446 447, 153, 153, 153, 10, 158, 151, 158, 158, 164,
1447 267, 164, 164, 9, 164, 155, 155, 155, 0, 165,
1448 152, 165, 165, 267, 454, 267, 166, 164, 166, 166,
1450 167, 153, 167, 167, 166, 157, 157, 454, 168, 264,
1451 168, 168, 264, 275, 172, 0, 172, 172, 0, 173,
1452 275, 173, 173, 172, 0, 264, 275, 158, 163, 0,
1453 163, 163, 172, 163, 175, 0, 175, 175, 272, 272,
1454 270, 165, 176, 0, 176, 176, 163, 163, 166, 274,
1455 270, 272, 167, 270, 163, 163, 163, 163, 163, 163,
1456 168, 171, 274, 171, 171, 174, 781, 174, 174, 274,
1457 171, 173, 177, 781, 177, 177, 0, 174, 0, 171,
1458 171, 178, 0, 178, 178, 273, 175, 171, 171, 171,
1459 171, 171, 171, 179, 176, 179, 179, 183, 273, 183,
1461 273, 184, 191, 184, 191, 191, 280, 191, 191, 183,
1462 0, 183, 183, 184, 0, 184, 184, 174, 183, 280,
1463 0, 280, 184, 185, 177, 185, 185, 186, 0, 186,
1464 186, 184, 187, 178, 187, 187, 194, 0, 194, 194,
1465 185, 195, 0, 195, 195, 179, 182, 182, 182, 182,
1466 182, 0, 182, 0, 182, 182, 182, 182, 182, 182,
1467 182, 182, 182, 182, 182, 182, 182, 182, 182, 182,
1468 182, 182, 277, 277, 193, 185, 193, 193, 276, 186,
1469 192, 276, 192, 192, 187, 277, 0, 196, 194, 196,
1470 196, 276, 197, 195, 197, 197, 0, 193, 182, 182,
1472 182, 0, 192, 192, 192, 198, 0, 198, 198, 199,
1473 0, 199, 199, 0, 197, 197, 197, 200, 0, 200,
1474 200, 203, 0, 203, 203, 201, 193, 201, 201, 392,
1475 392, 202, 192, 202, 202, 206, 0, 206, 206, 196,
1476 204, 392, 204, 204, 197, 0, 0, 201, 201, 201,
1477 205, 0, 205, 205, 202, 0, 204, 198, 204, 204,
1478 207, 199, 207, 207, 208, 0, 208, 208, 209, 200,
1479 209, 209, 211, 203, 211, 211, 205, 201, 210, 0,
1480 210, 210, 208, 202, 271, 0, 445, 206, 207, 0,
1481 0, 271, 204, 445, 211, 211, 209, 271, 271, 445,
1483 210, 210, 210, 212, 455, 212, 212, 0, 213, 0,
1484 213, 213, 214, 0, 214, 214, 218, 455, 218, 218,
1485 219, 455, 219, 219, 211, 212, 212, 212, 0, 0,
1486 210, 213, 213, 220, 279, 220, 220, 279, 225, 463,
1487 225, 225, 228, 463, 228, 228, 229, 0, 229, 229,
1488 279, 242, 463, 242, 242, 212, 0, 458, 225, 0,
1489 213, 225, 458, 238, 214, 238, 238, 283, 218, 218,
1490 458, 233, 219, 233, 233, 237, 233, 237, 237, 0,
1491 283, 0, 283, 238, 237, 220, 238, 282, 282, 233,
1492 225, 0, 282, 237, 228, 0, 448, 448, 229, 232,
1494 282, 232, 232, 242, 232, 291, 0, 291, 291, 448,
1495 297, 472, 297, 297, 0, 238, 472, 232, 232, 245,
1496 291, 245, 245, 0, 472, 232, 232, 232, 232, 232,
1497 232, 236, 0, 236, 236, 248, 297, 248, 248, 245,
1498 236, 249, 245, 249, 249, 302, 0, 302, 302, 236,
1499 236, 453, 453, 286, 0, 286, 286, 236, 236, 236,
1500 236, 236, 236, 239, 453, 239, 239, 302, 441, 441,
1501 253, 245, 253, 253, 0, 255, 464, 255, 255, 239,
1502 441, 239, 239, 239, 0, 0, 239, 248, 292, 464,
1503 292, 292, 464, 249, 462, 261, 0, 261, 261, 253,
1505 278, 462, 278, 278, 255, 286, 293, 462, 293, 293,
1506 450, 296, 253, 296, 296, 239, 240, 255, 240, 240,
1507 457, 457, 253, 450, 261, 450, 293, 255, 298, 278,
1508 298, 298, 240, 457, 240, 240, 240, 261, 0, 240,
1509 292, 299, 278, 299, 299, 0, 298, 261, 0, 0,
1510 0, 304, 278, 304, 304, 309, 0, 309, 309, 0,
1511 0, 299, 303, 296, 303, 303, 0, 304, 240, 241,
1512 241, 241, 241, 241, 0, 241, 309, 241, 241, 241,
1513 241, 241, 241, 241, 241, 241, 303, 241, 241, 241,
1514 241, 241, 241, 241, 241, 0, 307, 0, 307, 307,
1516 241, 0, 300, 476, 300, 300, 301, 476, 301, 301,
1517 305, 0, 305, 305, 379, 379, 476, 306, 307, 306,
1518 306, 241, 241, 241, 243, 460, 243, 243, 243, 300,
1519 243, 0, 379, 511, 301, 0, 301, 305, 460, 460,
1520 243, 0, 243, 243, 243, 306, 511, 243, 308, 243,
1521 308, 308, 310, 379, 310, 310, 311, 379, 311, 311,
1522 312, 0, 312, 312, 0, 0, 313, 0, 313, 313,
1523 0, 314, 310, 314, 314, 315, 243, 315, 315, 308,
1524 316, 475, 316, 316, 312, 311, 313, 317, 475, 317,
1525 317, 315, 313, 318, 475, 318, 318, 314, 334, 0,
1527 334, 334, 324, 0, 324, 324, 316, 326, 0, 326,
1528 326, 337, 334, 337, 337, 340, 318, 340, 340, 459,
1529 459, 317, 0, 342, 0, 342, 342, 341, 0, 341,
1530 341, 344, 459, 344, 344, 346, 0, 346, 346, 348,
1531 0, 348, 348, 0, 0, 318, 322, 0, 322, 322,
1532 322, 324, 322, 341, 324, 522, 326, 342, 355, 326,
1533 355, 355, 322, 337, 322, 322, 0, 340, 522, 322,
1534 357, 322, 357, 357, 360, 342, 360, 360, 363, 341,
1535 363, 363, 575, 344, 346, 0, 576, 346, 348, 576,
1536 364, 348, 364, 364, 0, 575, 0, 365, 322, 365,
1538 365, 366, 576, 366, 366, 368, 0, 368, 368, 369,
1539 355, 364, 373, 365, 369, 377, 0, 373, 0, 366,
1540 377, 378, 357, 378, 378, 0, 360, 368, 368, 368,
1541 363, 369, 374, 374, 373, 465, 406, 377, 406, 406,
1542 374, 374, 374, 374, 374, 374, 461, 461, 465, 381,
1543 381, 465, 369, 0, 406, 373, 369, 372, 377, 373,
1544 461, 0, 377, 467, 467, 0, 386, 381, 386, 386,
1545 372, 372, 389, 378, 389, 389, 467, 579, 372, 372,
1546 372, 372, 372, 372, 375, 0, 375, 375, 381, 375,
1547 579, 483, 381, 483, 483, 0, 382, 382, 393, 0,
1549 393, 393, 375, 375, 382, 382, 382, 382, 382, 382,
1550 375, 375, 375, 375, 375, 375, 376, 0, 386, 483,
1551 394, 393, 394, 394, 389, 395, 0, 395, 395, 376,
1552 376, 385, 385, 471, 471, 468, 0, 376, 376, 376,
1553 376, 376, 376, 380, 468, 0, 469, 471, 468, 385,
1554 393, 0, 380, 380, 396, 469, 396, 396, 474, 469,
1555 380, 380, 380, 380, 380, 380, 383, 474, 383, 383,
1556 385, 474, 394, 0, 385, 383, 397, 395, 397, 397,
1557 398, 0, 398, 398, 383, 383, 399, 581, 399, 399,
1558 473, 473, 383, 383, 383, 383, 383, 383, 384, 400,
1560 581, 400, 400, 473, 0, 0, 396, 384, 384, 401,
1561 0, 401, 401, 567, 567, 384, 384, 384, 384, 384,
1562 384, 402, 400, 402, 402, 0, 567, 403, 397, 403,
1563 403, 404, 398, 404, 404, 0, 0, 405, 399, 405,
1564 405, 0, 407, 0, 407, 407, 408, 580, 408, 408,
1565 0, 400, 409, 0, 409, 409, 410, 580, 410, 410,
1566 580, 401, 407, 408, 411, 0, 411, 411, 412, 0,
1567 412, 412, 0, 402, 409, 409, 0, 0, 413, 403,
1568 413, 413, 414, 404, 414, 414, 577, 577, 0, 405,
1569 412, 412, 412, 0, 415, 0, 415, 415, 416, 577,
1571 416, 416, 587, 417, 409, 417, 417, 419, 410, 419,
1572 419, 420, 593, 420, 420, 587, 411, 415, 415, 593,
1573 412, 435, 0, 435, 435, 593, 0, 424, 424, 490,
1574 413, 490, 490, 0, 414, 424, 424, 424, 424, 424,
1575 424, 435, 0, 490, 435, 436, 415, 436, 436, 437,
1576 416, 437, 437, 0, 438, 417, 438, 438, 443, 419,
1577 443, 443, 594, 420, 421, 0, 421, 421, 0, 421,
1578 431, 431, 627, 435, 421, 594, 589, 589, 431, 431,
1579 431, 431, 431, 431, 421, 627, 480, 443, 480, 480,
1580 589, 421, 0, 478, 635, 478, 478, 436, 0, 0,
1582 443, 437, 444, 0, 444, 444, 438, 635, 0, 0,
1583 443, 485, 421, 485, 485, 480, 421, 422, 501, 0,
1584 501, 501, 444, 0, 0, 444, 479, 0, 479, 479,
1585 422, 422, 446, 0, 446, 446, 501, 485, 422, 422,
1586 422, 422, 422, 422, 425, 478, 425, 425, 482, 425,
1587 482, 482, 446, 590, 444, 446, 590, 452, 0, 452,
1588 452, 0, 425, 425, 449, 0, 449, 449, 482, 590,
1589 425, 425, 425, 425, 425, 425, 426, 452, 479, 484,
1590 452, 484, 484, 675, 446, 451, 0, 451, 451, 426,
1591 426, 0, 481, 449, 481, 481, 675, 426, 426, 426,
1593 426, 426, 426, 429, 582, 582, 449, 484, 486, 452,
1594 486, 486, 429, 429, 451, 481, 449, 582, 486, 0,
1595 429, 429, 429, 429, 429, 429, 432, 451, 432, 432,
1596 456, 0, 456, 456, 681, 432, 487, 451, 487, 487,
1597 489, 681, 489, 489, 432, 432, 470, 681, 470, 470,
1598 0, 0, 432, 432, 432, 432, 432, 432, 433, 456,
1599 466, 0, 466, 466, 487, 0, 470, 433, 433, 470,
1600 0, 488, 456, 488, 488, 433, 433, 433, 433, 433,
1601 433, 491, 456, 491, 491, 492, 0, 492, 492, 466,
1602 0, 0, 489, 744, 488, 491, 583, 583, 470, 492,
1604 0, 493, 466, 493, 493, 494, 744, 494, 494, 583,
1605 800, 495, 466, 495, 495, 493, 0, 0, 496, 494,
1606 496, 496, 497, 800, 497, 497, 498, 0, 498, 498,
1607 499, 495, 499, 499, 0, 500, 497, 500, 500, 502,
1608 0, 502, 502, 503, 496, 503, 503, 504, 0, 504,
1609 504, 507, 0, 507, 507, 498, 508, 0, 508, 508,
1610 0, 509, 500, 509, 509, 514, 0, 514, 514, 517,
1611 504, 517, 517, 0, 507, 663, 502, 503, 515, 0,
1612 515, 515, 499, 0, 509, 0, 508, 514, 663, 663,
1613 516, 502, 516, 516, 518, 0, 518, 518, 519, 504,
1615 519, 519, 743, 507, 524, 508, 524, 524, 508, 525,
1616 0, 525, 525, 509, 515, 743, 743, 526, 524, 526,
1617 526, 517, 0, 537, 0, 537, 537, 525, 537, 0,
1618 515, 526, 0, 0, 516, 545, 0, 545, 545, 586,
1619 586, 537, 516, 518, 0, 546, 518, 546, 546, 0,
1620 519, 535, 586, 535, 535, 541, 535, 541, 541, 616,
1621 0, 616, 616, 547, 541, 547, 547, 0, 0, 535,
1622 535, 616, 550, 541, 550, 550, 673, 535, 535, 535,
1623 535, 535, 535, 539, 0, 539, 539, 545, 548, 673,
1624 548, 548, 539, 549, 673, 549, 549, 546, 0, 0,
1626 0, 539, 539, 551, 0, 551, 551, 549, 548, 539,
1627 539, 539, 539, 539, 539, 547, 552, 0, 552, 552,
1628 553, 671, 553, 553, 550, 555, 671, 555, 555, 556,
1629 0, 556, 556, 557, 671, 557, 557, 0, 0, 560,
1630 0, 560, 560, 557, 560, 555, 0, 564, 0, 564,
1631 564, 592, 592, 557, 0, 551, 564, 560, 0, 568,
1632 668, 568, 568, 669, 592, 564, 0, 569, 552, 569,
1633 569, 668, 553, 668, 596, 596, 669, 555, 669, 568,
1634 0, 556, 568, 0, 672, 557, 558, 596, 558, 558,
1635 0, 558, 600, 672, 600, 600, 569, 672, 0, 570,
1637 0, 570, 570, 0, 558, 558, 600, 0, 0, 569,
1638 0, 568, 558, 558, 558, 558, 558, 558, 562, 569,
1639 562, 562, 679, 571, 0, 571, 571, 562, 570, 0,
1640 572, 679, 572, 572, 0, 679, 562, 562, 0, 0,
1641 574, 570, 574, 574, 562, 562, 562, 562, 562, 562,
1642 572, 570, 571, 572, 573, 0, 573, 573, 0, 584,
1643 574, 584, 584, 574, 578, 571, 578, 578, 585, 0,
1644 585, 585, 745, 745, 601, 571, 601, 601, 599, 0,
1645 599, 599, 572, 573, 578, 745, 0, 578, 584, 747,
1646 747, 603, 574, 603, 603, 748, 573, 585, 0, 680,
1648 601, 584, 588, 747, 588, 588, 573, 0, 748, 748,
1649 585, 584, 680, 0, 680, 591, 578, 591, 591, 0,
1650 585, 595, 588, 595, 595, 588, 597, 749, 597, 597,
1651 599, 602, 749, 602, 602, 604, 0, 604, 604, 605,
1652 749, 605, 605, 603, 591, 0, 0, 0, 604, 606,
1653 595, 606, 606, 605, 588, 597, 607, 591, 607, 607,
1654 602, 0, 608, 595, 608, 608, 607, 591, 597, 606,
1655 0, 0, 609, 595, 609, 609, 0, 610, 597, 610,
1656 610, 611, 0, 611, 611, 612, 0, 612, 612, 608,
1657 613, 0, 613, 613, 0, 0, 614, 610, 614, 614,
1659 0, 0, 615, 612, 615, 615, 617, 611, 617, 617,
1660 0, 618, 0, 618, 618, 619, 613, 619, 619, 0,
1661 0, 0, 614, 0, 609, 618, 620, 0, 620, 620,
1662 0, 621, 617, 621, 621, 622, 0, 622, 622, 623,
1663 0, 623, 623, 625, 620, 625, 625, 629, 0, 629,
1664 629, 0, 0, 631, 615, 631, 631, 0, 632, 621,
1665 632, 632, 634, 0, 634, 634, 625, 619, 633, 0,
1666 633, 633, 638, 0, 638, 638, 639, 0, 639, 639,
1667 640, 751, 640, 640, 0, 821, 641, 622, 641, 641,
1668 642, 623, 642, 642, 751, 625, 629, 751, 821, 629,
1670 821, 633, 640, 632, 700, 631, 700, 700, 641, 649,
1671 632, 649, 649, 692, 634, 692, 692, 0, 649, 0,
1672 633, 638, 644, 644, 638, 0, 700, 649, 639, 0,
1673 644, 644, 644, 644, 644, 644, 645, 645, 646, 692,
1674 646, 646, 642, 646, 645, 645, 645, 645, 645, 645,
1675 647, 647, 651, 0, 651, 651, 646, 0, 647, 647,
1676 647, 647, 647, 647, 648, 648, 652, 0, 652, 652,
1677 795, 795, 648, 648, 648, 648, 648, 648, 650, 650,
1678 650, 650, 650, 795, 650, 0, 650, 650, 650, 650,
1679 650, 650, 650, 650, 650, 653, 650, 653, 653, 650,
1681 650, 650, 650, 650, 651, 654, 0, 654, 654, 655,
1682 0, 655, 655, 650, 656, 656, 0, 694, 652, 694,
1683 694, 0, 656, 656, 656, 656, 656, 656, 657, 657,
1684 650, 650, 650, 0, 0, 694, 657, 657, 657, 657,
1685 657, 657, 664, 0, 664, 664, 658, 653, 658, 658,
1686 670, 658, 670, 670, 0, 0, 0, 654, 659, 659,
1687 0, 655, 664, 0, 658, 664, 659, 659, 659, 659,
1688 659, 659, 660, 660, 696, 0, 696, 696, 0, 670,
1689 660, 660, 660, 660, 660, 660, 661, 799, 661, 661,
1690 0, 0, 670, 0, 664, 661, 698, 0, 698, 698,
1692 799, 799, 670, 696, 661, 662, 662, 662, 662, 662,
1693 698, 662, 0, 662, 662, 662, 662, 662, 662, 662,
1694 662, 662, 665, 662, 665, 665, 662, 662, 662, 662,
1695 662, 666, 0, 666, 666, 0, 674, 0, 674, 674,
1696 0, 667, 665, 667, 667, 665, 676, 0, 676, 676,
1697 677, 666, 677, 677, 666, 825, 825, 662, 662, 662,
1698 701, 667, 701, 701, 667, 674, 676, 0, 825, 676,
1699 677, 0, 0, 677, 665, 0, 0, 678, 674, 678,
1700 678, 0, 701, 666, 682, 0, 682, 682, 674, 683,
1701 0, 683, 683, 667, 0, 0, 0, 684, 676, 684,
1703 684, 0, 677, 0, 682, 0, 678, 682, 685, 0,
1704 685, 685, 686, 0, 686, 686, 0, 0, 683, 678,
1705 688, 0, 688, 688, 0, 687, 684, 687, 687, 678,
1706 0, 683, 686, 826, 826, 686, 682, 685, 0, 684,
1707 688, 683, 690, 688, 690, 690, 826, 0, 0, 684,
1708 685, 0, 0, 691, 687, 691, 691, 0, 0, 693,
1709 685, 693, 693, 695, 686, 695, 695, 687, 697, 0,
1710 697, 697, 688, 695, 0, 0, 699, 687, 699, 699,
1711 702, 0, 702, 702, 703, 0, 703, 703, 0, 704,
1712 699, 704, 704, 705, 690, 705, 705, 0, 0, 0,
1714 697, 706, 703, 706, 706, 691, 707, 705, 707, 707,
1715 708, 693, 708, 708, 0, 709, 0, 709, 709, 710,
1716 0, 710, 710, 711, 0, 711, 711, 727, 0, 727,
1717 727, 0, 702, 708, 726, 0, 726, 726, 0, 0,
1718 0, 704, 709, 0, 714, 0, 714, 714, 726, 764,
1719 0, 764, 764, 706, 715, 727, 715, 715, 707, 0,
1720 716, 0, 716, 716, 717, 764, 717, 717, 0, 0,
1721 718, 710, 718, 718, 0, 711, 712, 712, 712, 712,
1722 712, 0, 712, 716, 712, 712, 712, 712, 712, 712,
1723 712, 712, 712, 714, 712, 0, 714, 712, 712, 712,
1725 712, 712, 719, 715, 719, 719, 715, 720, 0, 720,
1726 720, 721, 716, 721, 721, 722, 717, 722, 722, 0,
1727 0, 723, 718, 723, 723, 0, 0, 0, 712, 712,
1728 712, 724, 719, 724, 724, 725, 0, 725, 725, 729,
1729 0, 729, 729, 731, 729, 731, 731, 733, 0, 733,
1730 733, 0, 731, 734, 719, 734, 734, 729, 0, 720,
1731 721, 731, 0, 721, 722, 0, 735, 722, 735, 735,
1732 723, 0, 737, 723, 737, 737, 739, 737, 739, 739,
1733 0, 0, 0, 724, 0, 739, 740, 725, 740, 740,
1734 737, 0, 0, 741, 739, 741, 741, 0, 742, 733,
1736 742, 742, 0, 0, 0, 734, 740, 0, 746, 740,
1737 746, 746, 750, 0, 750, 750, 0, 752, 735, 752,
1738 752, 0, 0, 753, 0, 753, 753, 777, 746, 777,
1739 777, 746, 750, 0, 0, 750, 0, 752, 740, 754,
1740 752, 754, 754, 0, 755, 741, 755, 755, 0, 777,
1741 742, 756, 753, 756, 756, 0, 757, 0, 757, 757,
1742 746, 0, 0, 0, 750, 753, 0, 0, 754, 752,
1743 0, 756, 0, 755, 756, 753, 757, 0, 0, 757,
1744 0, 754, 758, 0, 758, 758, 755, 759, 0, 759,
1745 759, 754, 760, 0, 760, 760, 755, 761, 0, 761,
1747 761, 0, 758, 756, 0, 758, 0, 759, 757, 762,
1748 759, 762, 762, 763, 0, 763, 763, 765, 0, 765,
1749 765, 766, 0, 766, 766, 0, 767, 763, 767, 767,
1750 765, 0, 0, 0, 758, 766, 0, 0, 768, 759,
1751 768, 768, 0, 769, 760, 769, 769, 0, 770, 761,
1752 770, 770, 771, 0, 771, 771, 0, 772, 770, 772,
1753 772, 762, 773, 0, 773, 773, 774, 0, 774, 774,
1754 769, 0, 0, 775, 773, 775, 775, 776, 767, 776,
1755 776, 778, 0, 778, 778, 779, 0, 779, 779, 782,
1756 768, 782, 782, 783, 0, 783, 783, 784, 0, 784,
1758 784, 0, 0, 785, 771, 785, 785, 0, 779, 772,
1759 0, 786, 782, 786, 786, 0, 783, 787, 774, 787,
1760 787, 788, 0, 788, 788, 775, 0, 0, 789, 776,
1761 789, 789, 0, 778, 0, 788, 805, 779, 805, 805,
1762 810, 782, 810, 810, 0, 783, 789, 0, 811, 784,
1763 811, 811, 0, 0, 805, 785, 0, 804, 0, 804,
1764 804, 0, 0, 786, 790, 790, 0, 810, 811, 787,
1765 791, 791, 790, 790, 790, 790, 790, 790, 791, 791,
1766 791, 791, 791, 791, 792, 792, 794, 0, 794, 794,
1767 793, 793, 792, 792, 792, 792, 792, 792, 793, 793,
1769 793, 793, 793, 793, 796, 0, 796, 796, 797, 804,
1770 797, 797, 0, 0, 0, 794, 798, 0, 798, 798,
1771 801, 0, 801, 801, 802, 0, 802, 802, 794, 803,
1772 0, 803, 803, 796, 0, 0, 0, 797, 794, 807,
1773 801, 807, 807, 801, 802, 798, 796, 802, 0, 803,
1774 797, 806, 803, 806, 806, 0, 796, 0, 798, 808,
1775 797, 808, 808, 809, 0, 809, 809, 812, 798, 812,
1776 812, 813, 801, 813, 813, 814, 802, 814, 814, 0,
1777 815, 803, 815, 815, 806, 816, 0, 816, 816, 0,
1778 817, 807, 817, 817, 818, 0, 818, 818, 819, 0,
1780 819, 819, 820, 0, 820, 820, 822, 0, 822, 822,
1781 0, 808, 0, 819, 827, 809, 827, 827, 0, 812,
1782 818, 0, 820, 813, 0, 820, 822, 814, 823, 822,
1783 823, 823, 815, 824, 0, 824, 824, 816, 0, 817,
1784 0, 828, 817, 828, 828, 0, 0, 829, 823, 829,
1785 829, 823, 0, 824, 820, 0, 824, 830, 822, 830,
1786 830, 831, 0, 831, 831, 832, 827, 832, 832, 828,
1787 833, 0, 833, 833, 834, 0, 834, 834, 0, 835,
1788 823, 835, 835, 0, 0, 824, 836, 0, 836, 836,
1789 837, 0, 837, 837, 838, 0, 838, 838, 839, 829,
1791 839, 839, 835, 840, 836, 840, 840, 0, 837, 830,
1792 0, 0, 841, 831, 841, 841, 842, 832, 842, 842,
1793 0, 0, 833, 838, 0, 0, 834, 839, 0, 0,
1794 0, 835, 840, 0, 0, 843, 838, 843, 843, 841,
1795 839, 844, 0, 844, 844, 840, 838, 0, 0, 845,
1796 839, 845, 845, 0, 846, 840, 846, 846, 847, 0,
1797 847, 847, 848, 0, 848, 848, 846, 850, 842, 850,
1798 850, 845, 849, 0, 849, 849, 0, 852, 847, 852,
1799 852, 847, 848, 0, 0, 848, 851, 843, 851, 851,
1800 0, 0, 849, 844, 853, 849, 853, 853, 854, 0,
1802 854, 854, 851, 855, 0, 855, 855, 0, 0, 856,
1803 847, 856, 856, 0, 848, 0, 0, 0, 0, 850,
1804 0, 0, 0, 0, 849, 0, 0, 0, 0, 852,
1805 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1806 0, 0, 0, 0, 0, 0, 853, 0, 0, 0,
1807 854, 0, 0, 0, 0, 855, 0, 0, 0, 0,
1808 0, 856, 858, 0, 858, 0, 0, 858, 859, 859,
1809 859, 859, 859, 859, 859, 859, 860, 860, 860, 860,
1810 860, 860, 860, 860, 861, 0, 861, 0, 0, 861,
1811 862, 862, 0, 862, 862, 862, 862, 863, 863, 863,
1813 863, 863, 863, 863, 863, 864, 864, 864, 864, 864,
1814 864, 864, 864, 865, 865, 0, 865, 865, 865, 865,
1815 866, 866, 0, 866, 0, 866, 866, 867, 0, 867,
1816 0, 0, 867, 868, 868, 0, 868, 0, 0, 868,
1817 869, 0, 869, 0, 0, 869, 870, 870, 0, 870,
1818 870, 870, 870, 871, 0, 0, 0, 0, 0, 871,
1819 872, 872, 0, 872, 0, 872, 872, 873, 873, 0,
1820 873, 0, 873, 873, 874, 874, 0, 0, 0, 874,
1821 874, 875, 875, 0, 875, 875, 875, 875, 857, 857,
1822 857, 857, 857, 857, 857, 857, 857, 857, 857, 857,
1824 857, 857, 857, 857, 857, 857, 857, 857, 857, 857,
1825 857, 857, 857, 857, 857, 857, 857, 857, 857, 857,
1826 857, 857, 857, 857, 857, 857, 857, 857, 857, 857,
1827 857, 857, 857, 857, 857, 857, 857, 857, 857, 857,
1828 857, 857, 857, 857
1831 static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr;
1832 static char *yy_full_match;
1833 static int yy_lp;
1834 #define REJECT \
1836 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \
1837 yy_cp = yy_full_match; /* restore poss. backed-over text */ \
1838 ++yy_lp; \
1839 goto find_rule; \
1841 #define yymore() yymore_used_but_not_detected
1842 #define YY_MORE_ADJ 0
1843 #define YY_RESTORE_YY_MORE_OFFSET
1844 char *yytext;
1845 #line 1 "./lexsrc.l"
1846 #define INITIAL 0
1847 #line 2 "./lexsrc.l"
1848 #ifndef lint
1849 static char *RCSid = "$Id$";
1850 #endif
1853 * The Regina Rexx Interpreter
1854 * Copyright (C) 1992-1994 Anders Christensen <anders@pvv.unit.no>
1856 * This library is free software; you can redistribute it and/or
1857 * modify it under the terms of the GNU Library General Public
1858 * License as published by the Free Software Foundation; either
1859 * version 2 of the License, or (at your option) any later version.
1861 * This library is distributed in the hope that it will be useful,
1862 * but WITHOUT ANY WARRANTY; without even the implied warranty of
1863 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
1864 * Library General Public License for more details.
1866 * You should have received a copy of the GNU Library General Public
1867 * License along with this library; if not, write to the Free
1868 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
1871 #include "rexx.h"
1872 #include "yaccsrc.h"
1873 #include <string.h>
1874 #include <assert.h>
1875 #include <errno.h>
1877 /* Define ASCII_0_TERMINATES_STRING if you want that ASCII-0 terminates
1878 * an input string. Normally this should not happen. Input strings are
1879 * terminated by a length encoding. The string {"", length=1} is invalid for
1880 * the lexer (ASCII-0 is not allowed) while {"", length=0} is allowed (this
1881 * is an empty input).
1882 * ASCII_0_TERMINATES_STRING is only(!) for backward compatibility and
1883 * shouldn't be used under normal circumstances.
1884 * FGC
1886 #define ASCII_0_TERMINATES_STRING
1888 #ifdef YYLMAX
1889 # undef YYLMAX
1890 #endif
1891 #define YYLMAX BUFFERSIZE
1893 #ifdef FLEX_SCANNER
1894 #undef YY_CHAR
1895 #define YY_CHAR YY_CHAR_TYPE
1896 #undef YY_INPUT
1897 #define YY_INPUT(buf,result,max_size) result=fill_buffer(buf,max_size)
1898 #endif
1900 /* NOTE: Every comment is replaced by a '`' character in the lower input
1901 * routines. These should check for such (illegal) characters.
1903 #define MY_ISBLANK(c) (((c)==' ')||((c)=='\t')||((c)=='\v')||((c)=='\f')|| \
1904 ((c)=='\r')||((c)=='`'))
1906 PROTECTION_VAR(regina_parser)
1907 /* externals which are protected by regina_parser */
1908 internal_parser_type parser_data = {NULL, };
1909 int retlength=0 ;
1910 char retvalue[BUFFERSIZE] ;
1911 unsigned SymbolDetect = 0;
1912 /* end of externals protected by regina_parser */
1914 /* locals, they are protected by regina_parser, too */
1915 static int nextline = 1;
1916 static int nextstart = 1;
1917 static int do_level = 0 ;
1918 static int in_numform=0, next_numform=0 ;
1919 static int obs_with=0, in_do=0, in_then=0;
1920 static int in_parse=0 ;
1921 static int in_trace=0, itflag=0 ;
1922 static int in_signal=0, in_call=0 ;
1923 static enum { not_in_address = 0,
1924 in_address_keyword, /* ADDRESS just seen */
1925 in_address_main, /* after the first word */
1926 in_address_value, /* like main but VALUE was seen */
1927 in_address_with} in_address = not_in_address,
1928 last_in_address = not_in_address ;
1929 static enum {no_seek_with = 0,
1930 seek_with_from_parse,
1931 seek_with_from_address} seek_with = no_seek_with ;
1933 * expression_ended is set if a typical expression has ended and the next
1934 * token has to be preceeded by a CONCATENATE (abuttal) operator in most
1935 * cases.
1937 static int expression_ended=0;
1940 * insert_abuttal is set if the last token was a possible end of an expression.
1941 * The next token may need to be preceeded by an additional CONCATENATE
1942 * operator under some conditions like not being "in_parse".
1944 static int insert_abuttal=0;
1947 * A symbol may be pending after a CONTATENATE (abuttal) operator has been
1948 * returned. This symbol will be stored here. 0 indicates no pending symbol.
1949 * ASCII 0 will never been returned, there is no need for another indicator.
1951 static int delayed_symbol=0;
1954 * inhibit_delayed_abuttal can be set only if delayed_symbol has been set,
1955 * but not always. An opening parenthesis must have been detected, too.
1956 * It inhibits the use of a CONCATENATE (abuttal) operator after the staring
1957 * parenthesis. Examples:
1958 * CONCATENATE {var_symbol} <-- needs a CONCATENATE, another {var_symbol}
1959 * may follow.
1960 * CONCATENATE {var_symbol} "(" <-- needs a CONCATENATE, another {var_symbol}
1961 * is an expression's start.
1963 static int inhibit_delayed_abuttal=0;
1965 static char ch;
1966 static int kill_this_space=0, kill_next_space=1 ;
1967 static int extnextline = -1, extnextstart; /* for a delayed line increment */
1968 static int linenr=1 ;
1969 static int contline = 0;
1970 static int inEOF=0 ;
1971 static int singlequote=0, doblequote=0 ;
1972 static int firstln=0 ;
1973 static int bufptr=0 ;
1974 /* Previous bug. 8-bits clean combined with EOF ==> need an int */
1975 static int chbuffer[LOOKAHEAD] ;
1976 static int ipretflag=0, cch=0 ;
1977 static const char *interptr=NULL ;
1978 static const char *last_interptr=NULL ;
1979 static const char *interptrmax ;
1980 static int cchmax = 0 ;
1982 static YY_CHAR_TYPE *rmspc( YY_CHAR_TYPE *instr ) ;
1983 static void set_assignment( void );
1984 static int process_number_or_const( const char *text, int len );
1985 static int process_hex_or_bin_string( char *text, int len, int base );
1986 static void compress_string( char *dest, const char *src );
1987 static int fill_buffer( char *buf, int max_size ) ;
1988 #define SET_NEXTSTART() (nextstart += yyleng)
1990 #define YY_FATAL_ERROR(s) exiterror( ERR_PROG_UNREADABLE, 1, s )
1991 #define comm 1
1992 #define signal 2
1993 #define sgtype 3
1994 #define procd 4
1995 #define parse 5
1996 #define then 6
1997 #define with 7
1999 #define numeric 8
2000 #define do1 9
2001 #define other 10
2002 #define value1 11
2003 #define ifcont 12
2004 #define signame 13
2005 #define nmform 14
2007 #line 159 "./lexsrc.l"
2009 * ANSI 6.2.2 definitions (partially with extensions)
2012 * sigh, we need the reversed classes. flex isn't smart
2013 * enough to provide it.
2014 * Added "0-9" to notGeneral... to fix bug 724390
2017 * A comment is converted to a sequence of ` signs in the
2018 * lower layer
2021 * A number is a little bit different to detect signs in the
2022 * exponent
2025 * read ANSI 6.2.1.1 carefully. We have to check the chars
2026 * after the exponent for notGeneralDot below.
2029 * The list of keywords.
2031 #line 2032 "./lexsrc.c"
2032 #line 318 "flex.skl"
2034 /* Macros after this point can all be overridden by user definitions in
2035 * section 1.
2038 #ifndef YY_SKIP_YYWRAP
2039 #ifdef __cplusplus
2040 extern "C" int yywrap YY_PROTO(( void ));
2041 #else
2042 extern int yywrap YY_PROTO(( void ));
2043 #endif
2044 #endif
2046 #line 333 "flex.skl"
2047 #ifndef YY_NO_UNPUT
2048 static void yyunput YY_PROTO(( int c, char *buf_ptr ));
2049 #endif
2050 #line 338 "flex.skl"
2052 #ifndef yytext_ptr
2053 static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
2054 #endif
2056 #ifdef YY_NEED_STRLEN
2057 static int yy_flex_strlen YY_PROTO(( yyconst char * ));
2058 #endif
2060 #ifndef YY_NO_INPUT
2061 #line 350 "flex.skl"
2062 #ifdef __cplusplus
2063 static int yyinput YY_PROTO(( void ));
2064 #else
2065 static int input YY_PROTO(( void ));
2066 #endif
2067 #endif
2068 #line 358 "flex.skl"
2070 #if YY_STACK_USED
2071 static int yy_start_stack_ptr = 0;
2072 static int yy_start_stack_depth = 0;
2073 static int *yy_start_stack = 0;
2074 #ifndef YY_NO_PUSH_STATE
2075 static void yy_push_state YY_PROTO(( int new_state ));
2076 #endif
2077 #ifndef YY_NO_POP_STATE
2078 static void yy_pop_state YY_PROTO(( void ));
2079 #endif
2080 #ifndef YY_NO_TOP_STATE
2081 static int yy_top_state YY_PROTO(( void ));
2082 #endif
2084 #else
2085 #define YY_NO_PUSH_STATE 1
2086 #define YY_NO_POP_STATE 1
2087 #define YY_NO_TOP_STATE 1
2088 #endif
2090 #ifdef YY_MALLOC_DECL
2091 YY_MALLOC_DECL
2092 #else
2093 #if __STDC__
2094 #ifndef __cplusplus
2095 #include <stdlib.h>
2096 #endif
2097 #else
2098 /* Just try to get by without declaring the routines.. This will fail
2099 * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
2100 * or sizeof(void*) != sizeof(int).
2102 #endif
2103 #endif
2105 /* Amount of stuff to slurp up with each read. */
2106 #ifndef YY_READ_BUF_SIZE
2107 #define YY_READ_BUF_SIZE 8192
2108 #endif
2110 /* Copy whatever the last rule matched to the standard output. */
2112 #ifndef ECHO
2113 #line 404 "flex.skl"
2114 /* This used to be an fputs(), but since the string might contain NUL's,
2115 * we now use fwrite().
2117 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
2118 #endif
2119 #line 414 "flex.skl"
2121 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
2122 * is returned in "result".
2124 #ifndef YY_INPUT
2125 #define YY_INPUT(buf,result,max_size) \
2126 if ( yy_current_buffer->yy_is_interactive ) \
2128 int c = '*', n; \
2129 for ( n = 0; n < max_size && \
2130 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
2131 buf[n] = (char) c; \
2132 if ( c == '\n' ) \
2133 buf[n++] = (char) c; \
2134 if ( c == EOF && ferror( yyin ) ) \
2135 YY_FATAL_ERROR( "input in flex scanner failed" ); \
2136 result = n; \
2138 else \
2140 errno=0; \
2141 while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
2143 if( errno != EINTR) \
2145 YY_FATAL_ERROR( "input in flex scanner failed" ); \
2146 break; \
2148 errno=0; \
2149 clearerr(yyin); \
2152 #line 422 "flex.skl"
2153 #endif
2154 #line 429 "flex.skl"
2156 /* No semi-colon after return; correct usage is to write "yyterminate();" -
2157 * we don't want an extra ';' after the "return" because that will cause
2158 * some compilers to complain about unreachable statements.
2160 #ifndef yyterminate
2161 #define yyterminate() return YY_NULL
2162 #endif
2164 /* Number of entries by which start-condition stack grows. */
2165 #ifndef YY_START_STACK_INCR
2166 #define YY_START_STACK_INCR 25
2167 #endif
2169 /* Report a fatal error. */
2170 #ifndef YY_FATAL_ERROR
2171 #line 447 "flex.skl"
2172 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
2173 #endif
2174 #line 454 "flex.skl"
2176 /* Default declaration of generated scanner - a define so the user can
2177 * easily add parameters.
2179 #ifndef YY_DECL
2180 #line 461 "flex.skl"
2181 #define YY_DECL int yylex YY_PROTO(( void ))
2182 #endif
2183 #line 468 "flex.skl"
2185 /* Code executed at the beginning of each rule, after yytext and yyleng
2186 * have been set up.
2188 #ifndef YY_USER_ACTION
2189 #define YY_USER_ACTION
2190 #endif
2192 /* Code executed at the end of each rule. */
2193 #ifndef YY_BREAK
2194 #define YY_BREAK break;
2195 #endif
2197 #define YY_RULE_SETUP \
2198 YY_USER_ACTION
2199 #line 483 "flex.skl"
2201 YY_DECL
2203 register yy_state_type yy_current_state;
2204 register char *yy_cp, *yy_bp;
2205 register int yy_act;
2207 #line 290 "./lexsrc.l"
2208 #ifndef lint
2209 (void)RCSid; // Unused
2210 #endif
2214 if ( delayed_symbol )
2216 int retval;
2217 retval = delayed_symbol;
2218 delayed_symbol = 0;
2220 * Pass the meaning of inhibit_delayed_abuttal to the normal algorithm
2221 * for automatic abuttal detection.
2223 expression_ended = !inhibit_delayed_abuttal;
2224 inhibit_delayed_abuttal = 0;
2225 return retval;
2228 if (next_numform)
2230 in_numform = 1 ;
2231 next_numform = 0 ;
2233 else
2234 in_numform = 0 ;
2236 last_in_address = in_address ; /* just for the "Environment" */
2237 /* there can't be an intermediate SPACE between ADDRESS and the next word*/
2238 if ( in_address == in_address_keyword )
2239 in_address = in_address_main ;
2241 kill_this_space = kill_next_space ;
2242 kill_next_space = 0 ;
2245 if (itflag)
2247 in_trace = 0 ;
2248 seek_with = no_seek_with ;
2250 itflag = (in_trace) ;
2252 if (extnextline != -1)
2254 parser_data.tstart = nextstart = extnextstart;
2255 parser_data.tline = nextline = extnextline;
2256 extnextline = -1;
2258 else
2260 parser_data.tstart = nextstart ;
2261 parser_data.tline = nextline ;
2263 insert_abuttal = expression_ended ;
2264 expression_ended = 0 ;
2267 #line 2265 "./lexsrc.c"
2268 #line 492 "flex.skl"
2270 if ( yy_init )
2272 yy_init = 0;
2274 #ifdef YY_USER_INIT
2275 YY_USER_INIT;
2276 #endif
2278 if ( ! yy_start )
2279 yy_start = 1; /* first start state */
2281 if ( ! yyin )
2282 #line 507 "flex.skl"
2283 yyin = stdin;
2284 #line 513 "flex.skl"
2286 if ( ! yyout )
2287 #line 517 "flex.skl"
2288 yyout = stdout;
2289 #line 523 "flex.skl"
2291 if ( ! yy_current_buffer )
2292 yy_current_buffer =
2293 yy_create_buffer( yyin, YY_BUF_SIZE );
2295 yy_load_buffer_state();
2298 while ( 1 ) /* loops until end-of-file is reached */
2300 #line 535 "flex.skl"
2301 yy_cp = yy_c_buf_p;
2303 /* Support of yytext. */
2304 *yy_cp = yy_hold_char;
2306 /* yy_bp points to the position in yy_ch_buf of the start of
2307 * the current run.
2309 yy_bp = yy_cp;
2311 yy_current_state = yy_start;
2312 yy_state_ptr = yy_state_buf;
2313 *yy_state_ptr++ = yy_current_state;
2314 yy_match:
2317 register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
2318 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2320 yy_current_state = (int) yy_def[yy_current_state];
2321 if ( yy_current_state >= 858 )
2322 yy_c = yy_meta[(unsigned int) yy_c];
2324 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2325 *yy_state_ptr++ = yy_current_state;
2326 ++yy_cp;
2328 while ( yy_base[yy_current_state] != 4589 );
2329 #line 547 "flex.skl"
2331 yy_find_action:
2332 yy_current_state = *--yy_state_ptr;
2333 yy_lp = yy_accept[yy_current_state];
2334 find_rule: /* we branch to this label when backing up */
2335 for ( ; ; ) /* until we find what rule we matched */
2337 if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] )
2339 yy_act = yy_acclist[yy_lp];
2341 yy_full_match = yy_cp;
2342 break;
2345 --yy_cp;
2346 yy_current_state = *--yy_state_ptr;
2347 yy_lp = yy_accept[yy_current_state];
2349 #line 551 "flex.skl"
2351 YY_DO_BEFORE_ACTION;
2353 #line 556 "flex.skl"
2355 do_action: /* This label is used only to access EOF actions. */
2357 #line 561 "flex.skl"
2359 switch ( yy_act )
2360 { /* beginning of action switch */
2361 case 1:
2362 YY_RULE_SETUP
2363 #line 346 "./lexsrc.l"
2365 SET_NEXTSTART() ; }
2366 YY_BREAK
2367 case 2:
2368 YY_RULE_SETUP
2369 #line 349 "./lexsrc.l"
2372 * Fixes bug 579597, "[;\r?\n]" instead of "{EOL}" causes the bug.
2374 char *ptr;
2375 if ((ptr = strchr(yytext, '\n')) != NULL)
2377 nextstart = yyleng - (int) (ptr - (char *) yytext) ;
2378 nextline++ ;
2379 if (extnextline != -1)
2381 extnextline++;
2382 extnextstart = nextstart; /* fixes bug 938204 */
2385 else
2386 SET_NEXTSTART() ;
2387 return STATSEP ; }
2388 YY_BREAK
2389 case 3:
2390 YY_RULE_SETUP
2391 #line 368 "./lexsrc.l"
2393 char *ptr;
2394 BEGIN comm ;
2395 if ( obs_with )
2397 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
2398 exiterror( ERR_INVALID_TEMPLATE, 1, yytext ) ;
2400 obs_with = in_do = 0 ;
2401 in_signal = in_call = 0 ;
2402 in_address = not_in_address;
2403 in_parse = 0 ;
2404 if ( seek_with == seek_with_from_address )
2405 seek_with = no_seek_with ;
2406 if ((ptr = strchr(yytext, '\n')) != NULL)
2408 nextstart = yyleng - (int) (ptr - (char *) yytext) ;
2409 nextline++ ;
2410 if (extnextline != -1)
2412 extnextline++;
2413 extnextstart = nextstart; /* fixes bug 938204 */
2416 else
2417 SET_NEXTSTART() ;
2418 return STATSEP ; }
2419 YY_BREAK
2420 case 4:
2421 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2422 yy_c_buf_p = yy_cp = yy_bp + 5;
2423 YY_DO_BEFORE_ACTION; /* set up yytext again */
2424 YY_RULE_SETUP
2425 #line 396 "./lexsrc.l"
2427 int i;
2428 char work[16];
2430 /* support C-like __LINE__ value */
2431 /* determine current source line, and create a numeric literal */
2433 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
2435 sprintf (work, "%d", parser_data.tline);
2437 /* copy back work, right-to-left */
2439 for (i = strlen (work) - 1; i >= 0; i--)
2441 unput (work[i]);
2444 YY_BREAK
2445 case 5:
2446 YY_RULE_SETUP
2447 #line 415 "./lexsrc.l"
2449 BEGIN value1 ; /* Allow a following VALUE keyword */
2450 seek_with = seek_with_from_address ;
2451 in_address = in_address_keyword ;
2452 in_call = 1 ; /* Allow the next words to be given as in CALL. */
2453 SET_NEXTSTART() ;
2454 return ADDRESS ; }
2455 YY_BREAK
2456 case 6:
2457 YY_RULE_SETUP
2458 #line 423 "./lexsrc.l"
2460 BEGIN other ;
2461 in_parse = 1 ;
2462 SET_NEXTSTART() ;
2463 return ARG ; }
2464 YY_BREAK
2465 case 7:
2466 YY_RULE_SETUP
2467 #line 429 "./lexsrc.l"
2469 BEGIN signal ;
2470 in_call = 1 ;
2471 SET_NEXTSTART() ;
2472 return CALL ; }
2473 YY_BREAK
2474 case 8:
2475 YY_RULE_SETUP
2476 #line 435 "./lexsrc.l"
2478 BEGIN do1 ;
2479 assert( do_level >=0 ) ;
2480 do_level++ ;
2481 in_do = 1 ;
2482 SET_NEXTSTART() ;
2483 return DO ; }
2484 YY_BREAK
2485 case 9:
2486 YY_RULE_SETUP
2487 #line 443 "./lexsrc.l"
2489 BEGIN other ;
2490 in_parse = 1 ;
2491 SET_NEXTSTART() ;
2492 return DROP ; }
2493 YY_BREAK
2494 case 10:
2495 YY_RULE_SETUP
2496 #line 449 "./lexsrc.l"
2498 BEGIN comm ;
2499 SET_NEXTSTART() ;
2500 return ELSE ; }
2501 YY_BREAK
2502 case 11:
2503 YY_RULE_SETUP
2504 #line 454 "./lexsrc.l"
2506 BEGIN other ;
2507 SET_NEXTSTART() ;
2508 return EXIT ; }
2509 YY_BREAK
2510 case 12:
2511 YY_RULE_SETUP
2512 #line 459 "./lexsrc.l"
2514 BEGIN ifcont ;
2515 in_then = 1 ;
2516 parser_data.if_linenr = linenr - 1;
2517 SET_NEXTSTART() ;
2518 return IF ; }
2519 YY_BREAK
2520 case 13:
2521 YY_RULE_SETUP
2522 #line 466 "./lexsrc.l"
2524 BEGIN other ;
2525 SET_NEXTSTART() ;
2526 return INTERPRET ; }
2527 YY_BREAK
2528 case 14:
2529 YY_RULE_SETUP
2530 #line 471 "./lexsrc.l"
2532 BEGIN other ;
2533 SET_NEXTSTART() ;
2534 return ITERATE ; }
2535 YY_BREAK
2536 case 15:
2537 YY_RULE_SETUP
2538 #line 476 "./lexsrc.l"
2540 BEGIN other ;
2541 SET_NEXTSTART() ;
2542 return LEAVE ; }
2543 YY_BREAK
2544 case 16:
2545 YY_RULE_SETUP
2546 #line 481 "./lexsrc.l"
2548 BEGIN other ;
2549 SET_NEXTSTART() ;
2550 return OPTIONS ; }
2551 YY_BREAK
2552 case 17:
2553 YY_RULE_SETUP
2554 #line 486 "./lexsrc.l"
2556 BEGIN other ;
2557 SET_NEXTSTART() ;
2558 return NOP ; }
2559 YY_BREAK
2560 case 18:
2561 YY_RULE_SETUP
2562 #line 491 "./lexsrc.l"
2564 BEGIN numeric ;
2565 SET_NEXTSTART() ;
2566 return NUMERIC ; }
2567 YY_BREAK
2568 case 19:
2569 YY_RULE_SETUP
2570 #line 496 "./lexsrc.l"
2572 BEGIN parse ;
2573 in_parse = 1 ;
2574 SET_NEXTSTART() ;
2575 return PARSE ; }
2576 YY_BREAK
2577 case 20:
2578 YY_RULE_SETUP
2579 #line 502 "./lexsrc.l"
2581 BEGIN procd ;
2582 SET_NEXTSTART() ;
2583 return PROCEDURE ; }
2584 YY_BREAK
2585 case 21:
2586 YY_RULE_SETUP
2587 #line 507 "./lexsrc.l"
2589 BEGIN other ;
2590 in_parse = 1 ;
2591 SET_NEXTSTART() ;
2592 return PULL ; }
2593 YY_BREAK
2594 case 22:
2595 YY_RULE_SETUP
2596 #line 513 "./lexsrc.l"
2598 BEGIN other ;
2599 SET_NEXTSTART() ;
2600 return PUSH ; }
2601 YY_BREAK
2602 case 23:
2603 YY_RULE_SETUP
2604 #line 518 "./lexsrc.l"
2606 BEGIN other ;
2607 SET_NEXTSTART() ;
2608 return QUEUE ; }
2609 YY_BREAK
2610 case 24:
2611 YY_RULE_SETUP
2612 #line 523 "./lexsrc.l"
2614 BEGIN other ;
2615 SET_NEXTSTART() ;
2616 return RETURN ; }
2617 YY_BREAK
2618 case 25:
2619 YY_RULE_SETUP
2620 #line 528 "./lexsrc.l"
2622 BEGIN other ;
2623 SET_NEXTSTART() ;
2624 return SAY ; }
2625 YY_BREAK
2626 case 26:
2627 YY_RULE_SETUP
2628 #line 533 "./lexsrc.l"
2630 BEGIN other ;
2631 assert( do_level >= 0 ) ;
2632 do_level++ ;
2633 SET_NEXTSTART() ;
2634 return SELECT ; }
2635 YY_BREAK
2636 case 27:
2637 YY_RULE_SETUP
2638 #line 540 "./lexsrc.l"
2640 BEGIN signal ;
2641 in_signal = 1 ;
2642 SET_NEXTSTART() ;
2643 return SIGNAL ; }
2644 YY_BREAK
2645 case 28:
2646 YY_RULE_SETUP
2647 #line 546 "./lexsrc.l"
2649 BEGIN value1 ;
2650 in_trace = 1 ;
2651 SET_NEXTSTART() ;
2652 return TRACE ; }
2653 YY_BREAK
2654 case 29:
2655 YY_RULE_SETUP
2656 #line 552 "./lexsrc.l"
2658 BEGIN other ;
2659 in_parse = 1 ;
2660 SET_NEXTSTART() ;
2661 return UPPER ; }
2662 YY_BREAK
2663 case 30:
2664 YY_RULE_SETUP
2665 #line 558 "./lexsrc.l"
2667 BEGIN ifcont ;
2668 in_then = 1 ;
2669 parser_data.when_linenr = linenr - 1;
2670 SET_NEXTSTART() ;
2671 return WHEN ; }
2672 YY_BREAK
2673 case 31:
2674 YY_RULE_SETUP
2675 #line 565 "./lexsrc.l"
2677 BEGIN comm ;
2678 SET_NEXTSTART() ;
2679 return OTHERWISE ; }
2680 YY_BREAK
2681 case 32:
2682 YY_RULE_SETUP
2683 #line 570 "./lexsrc.l"
2685 BEGIN other ;
2686 assert( do_level >= 0 ) ;
2687 if ( !do_level )
2689 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
2690 exiterror( ERR_UNMATCHED_END, 1 ) ;
2692 do_level-- ;
2693 SET_NEXTSTART() ;
2694 return END ; }
2695 YY_BREAK
2696 case 33:
2697 YY_RULE_SETUP
2698 #line 582 "./lexsrc.l"
2700 if (in_parse)
2702 SET_NEXTSTART() ;
2703 return yylex() ;
2705 else
2706 REJECT ; }
2707 YY_BREAK
2708 case 34:
2709 YY_RULE_SETUP
2710 #line 591 "./lexsrc.l"
2712 if (in_parse)
2714 SET_NEXTSTART() ;
2715 return PLACEHOLDER ;
2717 else
2719 REJECT ;
2722 YY_BREAK
2723 case 35:
2724 YY_RULE_SETUP
2725 #line 603 "./lexsrc.l"
2727 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
2728 if ( yytext[0] == '.' )
2730 set_assignment();
2732 * FIXME, FGC: ANSI 6.2.3.1 forces an error 50.1 if yytext[0]=='.'
2733 * ANSI 6.3.2.8 forces this error 31.3 which is wrong
2734 * in its content.
2735 * We use 6.2.3.1
2737 if ( !KNOWN_RESERVED( retvalue, retlength ) )
2739 yytext[retlength] = '\0';
2740 exiterror( ERR_RESERVED_SYMBOL, 1, yytext );
2742 else
2744 yytext[retlength] = '\0';
2745 exiterror( ERR_INVALID_START, 3, yytext );
2748 else
2750 yytext[retlength] = '\0';
2751 exiterror( ERR_INVALID_START, 2, yytext );
2753 /* known reserved variable */
2754 SET_NEXTSTART() ;
2755 return ASSIGNMENTVARIABLE ; }
2756 YY_BREAK
2757 case 36:
2758 YY_RULE_SETUP
2759 #line 634 "./lexsrc.l"
2761 BEGIN other ;
2763 set_assignment();
2765 SET_NEXTSTART() ;
2766 return ASSIGNMENTVARIABLE ; }
2767 YY_BREAK
2768 case 37:
2769 YY_RULE_SETUP
2770 #line 642 "./lexsrc.l"
2772 if (in_call)
2774 if ( ( last_in_address == in_address_keyword )
2775 && ( in_address == in_address_main ) )
2777 BEGIN other ; /* the next useful expression will set it to "other"
2778 * in either case. The BEGIN-states aren't very
2779 * handy in most cases; they are not flexible enough.
2781 in_address = in_address_value ;
2782 in_call = 0;
2783 SET_NEXTSTART() ;
2784 return VALUE ;
2786 REJECT ;
2788 BEGIN other ;
2789 if ((!in_trace)&&(!in_address)&&(!in_signal)&&(!in_call)&&(!in_numform))
2790 obs_with = 1 ;
2791 in_trace = in_signal = in_call = 0 ;
2792 SET_NEXTSTART() ;
2793 return VALUE ; }
2794 YY_BREAK
2795 case 38:
2796 YY_RULE_SETUP
2797 #line 666 "./lexsrc.l"
2799 BEGIN sgtype ;
2800 SET_NEXTSTART() ;
2801 return ON ; }
2802 YY_BREAK
2803 case 39:
2804 YY_RULE_SETUP
2805 #line 671 "./lexsrc.l"
2807 BEGIN sgtype ;
2808 SET_NEXTSTART() ;
2809 return OFF ; }
2810 YY_BREAK
2811 case 40:
2812 YY_RULE_SETUP
2813 #line 676 "./lexsrc.l"
2815 BEGIN other ;
2816 SET_NEXTSTART() ;
2817 return NAME ; }
2818 YY_BREAK
2819 case 41:
2820 YY_RULE_SETUP
2821 #line 681 "./lexsrc.l"
2823 BEGIN signame ;
2824 SET_NEXTSTART() ;
2825 return ERROR ; }
2826 YY_BREAK
2827 case 42:
2828 YY_RULE_SETUP
2829 #line 686 "./lexsrc.l"
2831 BEGIN signame ;
2832 SET_NEXTSTART() ;
2833 return HALT ; }
2834 YY_BREAK
2835 case 43:
2836 YY_RULE_SETUP
2837 #line 691 "./lexsrc.l"
2839 BEGIN signame ;
2840 SET_NEXTSTART() ;
2841 return NOVALUE ; }
2842 YY_BREAK
2843 case 44:
2844 YY_RULE_SETUP
2845 #line 696 "./lexsrc.l"
2847 BEGIN signame ;
2848 SET_NEXTSTART() ;
2849 return NOTREADY ; }
2850 YY_BREAK
2851 case 45:
2852 YY_RULE_SETUP
2853 #line 701 "./lexsrc.l"
2855 BEGIN signame ;
2856 SET_NEXTSTART() ;
2857 return FAILURE ; }
2858 YY_BREAK
2859 case 46:
2860 YY_RULE_SETUP
2861 #line 706 "./lexsrc.l"
2863 BEGIN signame ;
2864 SET_NEXTSTART() ;
2865 return SYNTAX ; }
2866 YY_BREAK
2867 case 47:
2868 YY_RULE_SETUP
2869 #line 711 "./lexsrc.l"
2871 BEGIN signame ;
2872 SET_NEXTSTART() ;
2873 return LOSTDIGITS ; }
2874 YY_BREAK
2875 case 48:
2876 YY_RULE_SETUP
2877 #line 716 "./lexsrc.l"
2879 if (!in_trace) REJECT ;
2880 strcpy(retvalue,rmspc( yytext )) ;
2881 SET_NEXTSTART() ;
2882 return WHATEVER ; }
2883 YY_BREAK
2884 case 49:
2885 YY_RULE_SETUP
2886 #line 722 "./lexsrc.l"
2888 BEGIN other ;
2889 in_parse = 1 ;
2890 SET_NEXTSTART() ;
2891 return EXPOSE ; }
2892 YY_BREAK
2893 case 50:
2894 YY_RULE_SETUP
2895 #line 728 "./lexsrc.l"
2897 SET_NEXTSTART() ;
2898 return UPPER ; }
2899 YY_BREAK
2900 case 51:
2901 YY_RULE_SETUP
2902 #line 732 "./lexsrc.l"
2904 SET_NEXTSTART() ;
2905 return LOWER ; }
2906 YY_BREAK
2907 case 52:
2908 YY_RULE_SETUP
2909 #line 736 "./lexsrc.l"
2911 SET_NEXTSTART() ;
2912 return CASELESS ; }
2913 YY_BREAK
2914 case 53:
2915 YY_RULE_SETUP
2916 #line 740 "./lexsrc.l"
2918 BEGIN other ;
2919 SET_NEXTSTART() ;
2920 return ARG ; }
2921 YY_BREAK
2922 case 54:
2923 YY_RULE_SETUP
2924 #line 745 "./lexsrc.l"
2926 BEGIN other ;
2927 SET_NEXTSTART() ;
2928 return NUMERIC ; }
2929 YY_BREAK
2930 case 55:
2931 YY_RULE_SETUP
2932 #line 750 "./lexsrc.l"
2934 BEGIN other ;
2935 SET_NEXTSTART() ;
2936 return PULL ; }
2937 YY_BREAK
2938 case 56:
2939 YY_RULE_SETUP
2940 #line 755 "./lexsrc.l"
2942 BEGIN other ;
2943 SET_NEXTSTART() ;
2944 return SOURCE ; }
2945 YY_BREAK
2946 case 57:
2947 YY_RULE_SETUP
2948 #line 760 "./lexsrc.l"
2950 BEGIN other ;
2951 SET_NEXTSTART() ;
2952 return EXTERNAL ; }
2953 YY_BREAK
2954 case 58:
2955 YY_RULE_SETUP
2956 #line 765 "./lexsrc.l"
2958 BEGIN other ;
2959 SET_NEXTSTART() ;
2960 return LINEIN ; }
2961 YY_BREAK
2962 case 59:
2963 YY_RULE_SETUP
2964 #line 770 "./lexsrc.l"
2966 BEGIN other ;
2967 SET_NEXTSTART() ;
2968 return VERSION ; }
2969 YY_BREAK
2970 case 60:
2971 YY_RULE_SETUP
2972 #line 775 "./lexsrc.l"
2974 BEGIN other ;
2975 in_parse = 2; /* accept a variable and treat func(a) as func (a) */
2976 SET_NEXTSTART() ;
2977 return VAR ; }
2978 YY_BREAK
2979 case 61:
2980 YY_RULE_SETUP
2981 #line 781 "./lexsrc.l"
2983 seek_with = seek_with_from_parse ;
2984 in_trace = 0 ;
2985 in_parse = 0 ;
2986 BEGIN with ; /* in fact this works as a "not comm" */
2987 SET_NEXTSTART() ;
2988 return VALUE ; }
2989 YY_BREAK
2990 case 62:
2991 YY_RULE_SETUP
2992 #line 789 "./lexsrc.l"
2994 in_then = 0 ;
2995 SET_NEXTSTART() ;
2996 return THEN ; }
2997 YY_BREAK
2998 case 63:
2999 YY_RULE_SETUP
3000 #line 794 "./lexsrc.l"
3002 if (in_then!=1) REJECT ;
3003 BEGIN comm ;
3004 in_then = 0 ;
3005 SET_NEXTSTART() ;
3006 return THEN ; }
3007 YY_BREAK
3008 case 64:
3009 YY_RULE_SETUP
3010 #line 801 "./lexsrc.l"
3013 * Fixes bug 952380
3015 if ((in_do)||(!seek_with))
3016 REJECT ;
3017 BEGIN other ;
3018 if ( seek_with == seek_with_from_parse )
3019 in_parse = 1 ;
3020 seek_with = no_seek_with ;
3021 if (in_address) /* any address state */
3022 in_address = in_address_with ; /* WITH seen */
3023 SET_NEXTSTART() ;
3024 return WITH ; }
3025 YY_BREAK
3026 case 65:
3027 YY_RULE_SETUP
3028 #line 817 "./lexsrc.l"
3030 BEGIN other ;
3031 SET_NEXTSTART() ;
3032 return DIGITS ; }
3033 YY_BREAK
3034 case 66:
3035 YY_RULE_SETUP
3036 #line 822 "./lexsrc.l"
3038 BEGIN nmform ;
3039 next_numform = 1 ;
3040 SET_NEXTSTART() ;
3041 return FORM ; }
3042 YY_BREAK
3043 case 67:
3044 YY_RULE_SETUP
3045 #line 828 "./lexsrc.l"
3047 SET_NEXTSTART() ;
3048 return SCIENTIFIC ; }
3049 YY_BREAK
3050 case 68:
3051 YY_RULE_SETUP
3052 #line 832 "./lexsrc.l"
3054 SET_NEXTSTART() ;
3055 return ENGINEERING ; }
3056 YY_BREAK
3057 case 69:
3058 YY_RULE_SETUP
3059 #line 836 "./lexsrc.l"
3061 BEGIN other ;
3062 SET_NEXTSTART() ;
3063 return FUZZ ; }
3064 YY_BREAK
3065 case 70:
3066 YY_RULE_SETUP
3067 #line 841 "./lexsrc.l"
3069 BEGIN other ;
3070 assert(in_do) ;
3071 in_do = 2 ;
3072 SET_NEXTSTART() ;
3073 return FOREVER ; }
3074 YY_BREAK
3075 case 71:
3076 YY_RULE_SETUP
3077 #line 848 "./lexsrc.l"
3079 if ( in_do == 2 )
3081 BEGIN other ;
3082 SET_NEXTSTART() ;
3083 return TO ;
3085 else if ( in_do == 1 )
3087 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
3088 exiterror( ERR_INVALID_DO_SYNTAX, 1, "TO" ) ;
3090 REJECT ; }
3091 YY_BREAK
3092 case 72:
3093 YY_RULE_SETUP
3094 #line 862 "./lexsrc.l"
3096 if ( in_do == 2 )
3098 BEGIN other ;
3099 SET_NEXTSTART() ;
3100 return BY ;
3102 else if ( in_do == 1 )
3104 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
3105 exiterror( ERR_INVALID_DO_SYNTAX, 1, "BY" ) ;
3107 REJECT ; }
3108 YY_BREAK
3109 case 73:
3110 YY_RULE_SETUP
3111 #line 876 "./lexsrc.l"
3113 if ( in_do == 2 )
3115 BEGIN other ;
3116 SET_NEXTSTART() ;
3117 return FOR ;
3119 else if ( in_do == 1 )
3121 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
3122 exiterror( ERR_INVALID_DO_SYNTAX, 1, "FOR" ) ;
3124 REJECT ; }
3125 YY_BREAK
3126 case 74:
3127 YY_RULE_SETUP
3128 #line 890 "./lexsrc.l"
3130 if (in_do)
3132 if ( in_do == 3 )
3134 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
3135 exiterror( ERR_INVALID_DO_SYNTAX, 1, "WHILE" ) ;
3137 in_do=3 ;
3138 BEGIN other ;
3139 SET_NEXTSTART() ;
3140 return WHILE ;
3142 REJECT ; }
3143 YY_BREAK
3144 case 75:
3145 YY_RULE_SETUP
3146 #line 905 "./lexsrc.l"
3148 if (in_do) {
3149 if ( in_do == 3 )
3151 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
3152 exiterror( ERR_INVALID_DO_SYNTAX, 1, "UNTIL" ) ;
3155 in_do=3 ;
3156 BEGIN other ;
3157 SET_NEXTSTART() ;
3158 return UNTIL ; }
3159 REJECT ; }
3160 YY_BREAK
3161 case 76:
3162 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
3163 yy_c_buf_p = yy_cp -= 1;
3164 YY_DO_BEFORE_ACTION; /* set up yytext again */
3165 YY_RULE_SETUP
3166 #line 920 "./lexsrc.l"
3168 BEGIN other ;
3169 in_do = 2 ;
3170 set_assignment();
3171 if ( !KNOWN_RESERVED( retvalue, retlength ) )
3172 exiterror( ERR_RESERVED_SYMBOL, 1, yytext ) ;
3173 SET_NEXTSTART() ;
3174 return DOVARIABLE ; }
3175 YY_BREAK
3176 case 77:
3177 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
3178 yy_c_buf_p = yy_cp -= 1;
3179 YY_DO_BEFORE_ACTION; /* set up yytext again */
3180 YY_RULE_SETUP
3181 #line 929 "./lexsrc.l"
3183 BEGIN other ;
3184 in_do = 2 ;
3185 strcpy(retvalue,rmspc( yytext )) ;
3186 SET_NEXTSTART() ;
3187 return DOVARIABLE ; }
3188 YY_BREAK
3189 case 78:
3190 YY_RULE_SETUP
3191 #line 936 "./lexsrc.l"
3193 unsigned i;
3194 BEGIN comm ;
3196 for( i = 0; ( ch = yytext[i] ) != '\0'; i++ )
3199 * A blank or ':' can't occur in the normal text. They are terminators.
3201 if ( ( ch == ':' )
3202 || ( ch == '\n' )
3203 || ( MY_ISBLANK( ch ) ) )
3204 break;
3205 retvalue[i] = (char) rx_toupper( ch );
3207 retvalue[i] = '\0' ;
3208 SET_NEXTSTART() ;
3209 return LABEL ; }
3210 YY_BREAK
3211 case 79:
3212 YY_RULE_SETUP
3213 #line 956 "./lexsrc.l"
3215 BEGIN comm ;
3217 compress_string( retvalue, yytext );
3219 SET_NEXTSTART() ;
3220 return LABEL ; }
3221 YY_BREAK
3222 case 80:
3223 YY_RULE_SETUP
3224 #line 965 "./lexsrc.l"
3226 BEGIN other ;
3228 compress_string( retvalue, yytext );
3230 kill_next_space = 1 ;
3231 if ( insert_abuttal ) {
3232 inhibit_delayed_abuttal = 1 ;
3233 delayed_symbol = EXFUNCNAME ;
3234 SET_NEXTSTART() ;
3235 return CONCATENATE ; }
3237 expression_ended = 0 ;
3238 SET_NEXTSTART() ;
3239 return EXFUNCNAME ; }
3240 YY_BREAK
3241 case 81:
3242 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
3243 yy_c_buf_p = yy_cp -= 1;
3244 YY_DO_BEFORE_ACTION; /* set up yytext again */
3245 YY_RULE_SETUP
3246 #line 983 "./lexsrc.l"
3249 * fixes bug 617225.
3251 return process_hex_or_bin_string( yytext, yyleng, 16 ); }
3252 YY_BREAK
3253 case 82:
3254 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
3255 yy_c_buf_p = yy_cp -= 1;
3256 YY_DO_BEFORE_ACTION; /* set up yytext again */
3257 YY_RULE_SETUP
3258 #line 991 "./lexsrc.l"
3260 return process_hex_or_bin_string( yytext, yyleng, 2 ); }
3261 YY_BREAK
3262 case 83:
3263 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
3264 yy_c_buf_p = yy_cp -= 1;
3265 YY_DO_BEFORE_ACTION; /* set up yytext again */
3266 YY_RULE_SETUP
3267 #line 994 "./lexsrc.l"
3269 char c;
3270 int i,base,charcount,first,tuple;
3272 base = ( rx_toupper( yytext[yyleng - 1] ) == 'X' ) ? 16 : 2;
3273 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
3275 * We are sure to have an invalid string since the above patterns won't
3276 * match. We can either have invalid characters or misplaced spaces.
3278 * Blanks as the first characters are forbidden.
3280 if ( MY_ISBLANK( yytext[1] ) )
3281 exiterror( ERR_INVALID_HEX_CONST, ( base == 16 ) ? 1 : 2, 1 );
3283 tuple = ( base == 16 ) ? 2 : 4;
3284 for ( i = 1, first = 1, charcount = 0; i < yyleng - 2; i++ )
3286 c = yytext[i];
3287 if ( MY_ISBLANK( c ) )
3290 * The first tuple may have less than tuple chars
3292 if ( ( ( charcount % tuple ) == 0 ) || first )
3294 first = 0;
3295 charcount = 0;
3296 continue;
3298 exiterror( ERR_INVALID_HEX_CONST, ( base == 16 ) ? 1 : 2, i );
3300 charcount++;
3301 if ( base == 2 )
3303 if ( ( c == '0' ) || ( c == '1' ) )
3304 continue;
3306 if ( base == 16 )
3308 if ( rx_isxdigit( c ) )
3309 continue;
3311 exiterror( ERR_INVALID_HEX_CONST, ( base == 16 ) ? 3 : 4, c );
3314 * We didn't match something like "1 12 34 "X Assume this as the error.
3315 * Look back to the first blank in the last sequence.
3317 for ( i = yyleng - 2; i > 1; i-- )
3318 if ( !MY_ISBLANK( yytext[i - 1] ) )
3319 break;
3320 exiterror( ERR_INVALID_HEX_CONST, ( base == 16 ) ? 1 : 2, i ); }
3321 YY_BREAK
3322 case 84:
3323 YY_RULE_SETUP
3324 #line 1048 "./lexsrc.l"
3326 BEGIN other ;
3328 compress_string( retvalue, yytext );
3330 strcpy( yytext, retvalue ); /* proper error display */
3332 if (in_numform)
3334 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
3335 exiterror( ERR_INV_SUBKEYWORD, 11, "ENGINEERING SCIENTIFIC", retvalue ) ;
3338 /* fixes 1109372 */
3339 if ( insert_abuttal && !in_parse && !in_signal && !in_call ) {
3340 delayed_symbol = STRING ;
3341 SET_NEXTSTART() ;
3342 return CONCATENATE ; }
3344 if (in_call)
3346 in_call = 0 ;
3347 kill_next_space = 1 ;
3349 else
3350 expression_ended = 1 ;
3352 SET_NEXTSTART() ;
3353 return STRING ; }
3354 YY_BREAK
3355 case 85:
3356 YY_RULE_SETUP
3357 #line 1079 "./lexsrc.l"
3359 if (!in_parse)
3360 REJECT ;
3361 strcpy(retvalue,yytext) ;
3362 SET_NEXTSTART() ;
3363 return OFFSET ; }
3364 YY_BREAK
3365 case 86:
3366 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
3367 yy_c_buf_p = yy_cp -= 1;
3368 YY_DO_BEFORE_ACTION; /* set up yytext again */
3369 YY_RULE_SETUP
3370 #line 1086 "./lexsrc.l"
3373 * This is the same as of the "{digit}+" rule above. flex is very stupid.
3374 * (Or is it a feature?)
3375 * The number below will take precedence instead of a plain "{digit}+",
3376 * even of the fact that the above rule may match the same length of
3377 * characters. flex seems to count the next "expect characters" for the
3378 * comparison which rule shall be used.
3380 if (!in_parse)
3381 REJECT ;
3382 strcpy(retvalue,yytext) ;
3383 SET_NEXTSTART() ;
3384 return OFFSET ; }
3385 YY_BREAK
3386 case 87:
3387 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
3388 yy_c_buf_p = yy_cp -= 1;
3389 YY_DO_BEFORE_ACTION; /* set up yytext again */
3390 YY_RULE_SETUP
3391 #line 1101 "./lexsrc.l"
3394 * must split two rule parts because of the "/" rule-part.
3395 * This fixes bug 602283.
3397 return process_number_or_const( yytext, yyleng );
3399 YY_BREAK
3400 case 88:
3401 YY_RULE_SETUP
3402 #line 1109 "./lexsrc.l"
3404 return process_number_or_const( yytext, yyleng );
3406 YY_BREAK
3407 case 89:
3408 YY_RULE_SETUP
3409 #line 1113 "./lexsrc.l"
3411 int i,j;
3413 * this might be a symbol in front of a function, but only if next
3414 * char in input stream is "(".
3417 if (in_trace) REJECT ;
3419 memcpy( retvalue, yytext, yyleng + 1 ); /* include terminating '\0' */
3420 mem_upper( retvalue, yyleng );
3422 if (in_numform)
3424 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
3425 exiterror( ERR_INV_SUBKEYWORD, 11, "ENGINEERING SCIENTIFIC", retvalue ) ;
3428 if ( ( last_in_address == in_address_keyword )
3429 && ( in_address == in_address_main ) )
3431 kill_next_space = 1 ;
3432 in_call = 0 ;
3433 SET_NEXTSTART() ;
3434 return SIMSYMBOL ;
3437 BEGIN other;
3439 if ( in_call )
3442 * This has precedence over checking the parenthesis below.
3443 * Fixes bug 521502.
3445 in_call = 0;
3446 kill_next_space = 1;
3447 SET_NEXTSTART();
3448 return SIMSYMBOL;
3451 if ( in_parse == 2 )
3454 * This has precedence over checking the parenthesis below.
3455 * Fixes bug 1109335.
3457 in_parse = 1;
3458 kill_next_space = 1;
3459 SET_NEXTSTART();
3460 return SIMSYMBOL;
3463 /* We must check if a '(' follows. Remember the number of eaten chars. */
3464 j = 1;
3465 #ifdef __cplusplus
3466 for (; ( i = yyinput() ) == '`';)
3467 #else
3468 for (; ( i = input() ) == '`';)
3469 #endif
3470 j++ ;
3471 if (i != '(')
3473 j-- ;
3474 unput(i) ;
3476 /* input() has destroyed the yytext-terminator re-set it */
3477 yytext[yyleng] = '\0';
3478 SET_NEXTSTART() ;
3479 nextstart += j ;
3481 if ( i == '(' )
3483 kill_next_space = 1 ;
3484 if ( insert_abuttal )
3486 inhibit_delayed_abuttal = 1 ;
3487 delayed_symbol = INFUNCNAME ;
3488 return CONCATENATE ;
3490 expression_ended = 0 ;
3491 return INFUNCNAME ;
3494 if ( insert_abuttal && !in_parse ) {
3495 delayed_symbol = SIMSYMBOL ;
3496 return CONCATENATE ; }
3498 expression_ended = 1 ;
3500 if ( in_address == in_address_with )
3501 kill_next_space = 1 ;
3502 if (SymbolDetect) /* allow a fast breakout */
3504 /* We define a tricky preprocessor directive. This will give us
3505 * maximum performance without the loss of control or errors produced
3506 * by typos.
3508 #define RET_IF(s) if ((SymbolDetect & SD_##s) && \
3509 (yyleng == sizeof(#s) - 1) && \
3510 (strncmp(retvalue, \
3511 #s, \
3512 sizeof(#s) - 1) == 0)) \
3513 return(s)
3514 /* e.g. RET_IF(INPUT); is replaced by:
3515 * if ((SymbolDetect & SD_INPUT) &&
3516 * (yyleng == sizeof("INPUT") - 1) &&
3517 * (strncmp(retvalue,
3518 * "INPUT",
3519 * sizeof("INPUT") - 1) == 0))
3520 * return(s);
3522 RET_IF(INPUT);
3523 RET_IF(OUTPUT);
3524 RET_IF(ERROR);
3525 RET_IF(NORMAL);
3526 RET_IF(APPEND);
3527 RET_IF(REPLACE);
3528 RET_IF(STREAM);
3529 RET_IF(STEM);
3530 RET_IF(LIFO);
3531 RET_IF(FIFO);
3532 #undef RET_IF
3534 return SIMSYMBOL ; }
3535 YY_BREAK
3536 case 90:
3537 YY_RULE_SETUP
3538 #line 1239 "./lexsrc.l"
3540 int i,j;
3542 * this is mainly the content of var_symbol but we do a REJECT for all but
3543 * normal variable names.
3546 if ( in_trace || in_numform || in_call )
3547 REJECT;
3549 if ( ( last_in_address == in_address_keyword )
3550 && ( in_address == in_address_main ) )
3551 REJECT;
3553 set_assignment();
3554 if ( !KNOWN_RESERVED( retvalue, retlength ) )
3555 REJECT;
3557 /* We must check if a '(' follows. Remember the number of eaten chars. */
3558 #ifdef __cplusplus
3559 for ( j = 1; ( i = yyinput() ) == '`'; )
3560 #else
3561 for ( j = 1; ( i = input() ) == '`'; )
3562 #endif
3563 j++;
3564 if ( i != '(' )
3566 j--;
3567 unput( i );
3569 /* input() has destroyed the yytext-terminator re-set it */
3570 yytext[yyleng] = '\0';
3571 SET_NEXTSTART();
3572 nextstart += j;
3574 if ( i == '(' )
3575 REJECT; /* function name can't start with '.' */
3577 BEGIN other;
3578 if ( insert_abuttal && !in_parse )
3580 delayed_symbol = SIMSYMBOL;
3581 return CONCATENATE;
3584 expression_ended = 1;
3585 return SIMSYMBOL;
3587 YY_BREAK
3588 case 91:
3589 YY_RULE_SETUP
3590 #line 1288 "./lexsrc.l"
3592 expression_ended = 1 ;
3593 SET_NEXTSTART() ;
3594 return ')' ; }
3595 YY_BREAK
3596 case 92:
3597 YY_RULE_SETUP
3598 #line 1293 "./lexsrc.l"
3600 BEGIN other ;
3601 if ( insert_abuttal )
3603 inhibit_delayed_abuttal = 1 ;
3604 delayed_symbol = '(' ;
3605 SET_NEXTSTART() ;
3606 return CONCATENATE ;
3608 SET_NEXTSTART() ;
3609 return '(' ; }
3610 YY_BREAK
3611 case 93:
3612 YY_RULE_SETUP
3613 #line 1305 "./lexsrc.l"
3615 SET_NEXTSTART() ;
3616 return ',' ; }
3617 YY_BREAK
3618 case 94:
3619 YY_RULE_SETUP
3620 #line 1309 "./lexsrc.l"
3622 BEGIN other ;
3623 SET_NEXTSTART() ;
3624 return '-' ; }
3625 YY_BREAK
3626 case 95:
3627 YY_RULE_SETUP
3628 #line 1314 "./lexsrc.l"
3630 BEGIN other ;
3631 SET_NEXTSTART() ;
3632 return '+' ; }
3633 YY_BREAK
3634 case 96:
3635 YY_RULE_SETUP
3636 #line 1319 "./lexsrc.l"
3638 SET_NEXTSTART() ;
3639 return '/' ; }
3640 YY_BREAK
3641 case 97:
3642 YY_RULE_SETUP
3643 #line 1323 "./lexsrc.l"
3645 SET_NEXTSTART() ;
3646 return '%' ; }
3647 YY_BREAK
3648 case 98:
3649 YY_RULE_SETUP
3650 #line 1327 "./lexsrc.l"
3652 SET_NEXTSTART() ;
3653 return '*' ; }
3654 YY_BREAK
3655 case 99:
3656 YY_RULE_SETUP
3657 #line 1331 "./lexsrc.l"
3659 SET_NEXTSTART() ;
3660 return '|' ; }
3661 YY_BREAK
3662 case 100:
3663 YY_RULE_SETUP
3664 #line 1335 "./lexsrc.l"
3666 SET_NEXTSTART() ;
3667 return '&' ; }
3668 YY_BREAK
3669 case 101:
3670 YY_RULE_SETUP
3671 #line 1339 "./lexsrc.l"
3673 SET_NEXTSTART() ;
3674 return '=' ; }
3675 YY_BREAK
3676 case 102:
3677 YY_RULE_SETUP
3678 #line 1343 "./lexsrc.l"
3680 /* why don't I have a {between} in the beginning of this re? bug? */
3681 BEGIN other ;
3682 SET_NEXTSTART() ;
3683 return NOT ; }
3684 YY_BREAK
3685 case 103:
3686 YY_RULE_SETUP
3687 #line 1349 "./lexsrc.l"
3689 SET_NEXTSTART() ;
3690 return GTGT ; }
3691 YY_BREAK
3692 case 104:
3693 YY_RULE_SETUP
3694 #line 1353 "./lexsrc.l"
3696 SET_NEXTSTART() ;
3697 return LTLT ; }
3698 YY_BREAK
3699 case 105:
3700 YY_RULE_SETUP
3701 #line 1357 "./lexsrc.l"
3703 SET_NEXTSTART() ;
3704 return NOTGTGT ; }
3705 YY_BREAK
3706 case 106:
3707 YY_RULE_SETUP
3708 #line 1361 "./lexsrc.l"
3710 SET_NEXTSTART() ;
3711 return NOTLTLT ; }
3712 YY_BREAK
3713 case 107:
3714 YY_RULE_SETUP
3715 #line 1365 "./lexsrc.l"
3717 SET_NEXTSTART() ;
3718 return GTGTE ; }
3719 YY_BREAK
3720 case 108:
3721 YY_RULE_SETUP
3722 #line 1369 "./lexsrc.l"
3724 SET_NEXTSTART() ;
3725 return LTLTE ; }
3726 YY_BREAK
3727 case 109:
3728 YY_RULE_SETUP
3729 #line 1373 "./lexsrc.l"
3731 SET_NEXTSTART() ;
3732 return GT ; }
3733 YY_BREAK
3734 case 110:
3735 YY_RULE_SETUP
3736 #line 1377 "./lexsrc.l"
3738 SET_NEXTSTART() ;
3739 return GTE ; }
3740 YY_BREAK
3741 case 111:
3742 YY_RULE_SETUP
3743 #line 1381 "./lexsrc.l"
3745 SET_NEXTSTART() ;
3746 return LT ; }
3747 YY_BREAK
3748 case 112:
3749 YY_RULE_SETUP
3750 #line 1385 "./lexsrc.l"
3752 SET_NEXTSTART() ;
3753 return LTE ; }
3754 YY_BREAK
3755 case 113:
3756 YY_RULE_SETUP
3757 #line 1389 "./lexsrc.l"
3759 SET_NEXTSTART() ;
3760 return DIFFERENT ; }
3761 YY_BREAK
3762 case 114:
3763 YY_RULE_SETUP
3764 #line 1393 "./lexsrc.l"
3766 SET_NEXTSTART() ;
3767 return EQUALEQUAL ; }
3768 YY_BREAK
3769 case 115:
3770 YY_RULE_SETUP
3771 #line 1397 "./lexsrc.l"
3773 SET_NEXTSTART() ;
3774 return NOTEQUALEQUAL ; }
3775 YY_BREAK
3776 case 116:
3777 YY_RULE_SETUP
3778 #line 1401 "./lexsrc.l"
3780 SET_NEXTSTART() ;
3781 return MODULUS ; }
3782 YY_BREAK
3783 case 117:
3784 YY_RULE_SETUP
3785 #line 1405 "./lexsrc.l"
3787 SET_NEXTSTART() ;
3788 return XOR ; }
3789 YY_BREAK
3790 case 118:
3791 YY_RULE_SETUP
3792 #line 1409 "./lexsrc.l"
3794 SET_NEXTSTART() ;
3795 return CONCATENATE ; }
3796 YY_BREAK
3797 case 119:
3798 YY_RULE_SETUP
3799 #line 1413 "./lexsrc.l"
3801 SET_NEXTSTART() ;
3802 return EXP ; }
3803 YY_BREAK
3804 case 120:
3805 YY_RULE_SETUP
3806 #line 1417 "./lexsrc.l"
3808 if ( in_address == in_address_value ) /* Always allow spaces in the VALUE */
3809 { /* part of the ADDRESS stmt. */
3810 SET_NEXTSTART() ;
3811 return SPACE ;
3813 if (kill_this_space)
3815 SET_NEXTSTART() ;
3816 return yylex() ;
3818 SET_NEXTSTART() ;
3819 return (((in_parse)&&(!seek_with)) ? yylex() : SPACE) ; }
3820 YY_BREAK
3821 case 121:
3822 YY_RULE_SETUP
3823 #line 1431 "./lexsrc.l"
3825 SET_NEXTSTART() ;
3826 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
3827 exiterror( ERR_UNMATCHED_QUOTE, 0 ) ; }
3828 YY_BREAK
3829 case 122:
3830 YY_RULE_SETUP
3831 #line 1437 "./lexsrc.l"
3833 SET_NEXTSTART() ;
3834 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
3835 exiterror( ERR_SYMBOL_EXPECTED, 1, yytext ) ;}
3836 YY_BREAK
3837 case 123:
3838 YY_RULE_SETUP
3839 #line 1442 "./lexsrc.l"
3841 SET_NEXTSTART() ;
3842 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
3843 exiterror( ERR_INVALID_CHAR, 1, yytext[0], yytext[0] ); }
3844 YY_BREAK
3845 case 124:
3846 YY_RULE_SETUP
3847 #line 1448 "./lexsrc.l"
3848 ECHO;
3849 YY_BREAK
3850 #line 3848 "./lexsrc.c"
3851 case YY_STATE_EOF(INITIAL):
3852 case YY_STATE_EOF(comm):
3853 case YY_STATE_EOF(signal):
3854 case YY_STATE_EOF(sgtype):
3855 case YY_STATE_EOF(procd):
3856 case YY_STATE_EOF(parse):
3857 case YY_STATE_EOF(then):
3858 case YY_STATE_EOF(with):
3859 case YY_STATE_EOF(numeric):
3860 case YY_STATE_EOF(do1):
3861 case YY_STATE_EOF(other):
3862 case YY_STATE_EOF(value1):
3863 case YY_STATE_EOF(ifcont):
3864 case YY_STATE_EOF(signame):
3865 case YY_STATE_EOF(nmform):
3866 yyterminate();
3867 #line 566 "flex.skl"
3869 case YY_END_OF_BUFFER:
3871 /* Amount of text matched not including the EOB char. */
3872 int yy_amount_of_matched_text = (int) (yy_cp - (char *) yytext_ptr) - 1;
3874 /* Undo the effects of YY_DO_BEFORE_ACTION. */
3875 *yy_cp = yy_hold_char;
3876 YY_RESTORE_YY_MORE_OFFSET
3878 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
3880 /* We're scanning a new file or input source. It's
3881 * possible that this happened because the user
3882 * just pointed yyin at a new source and called
3883 * yylex(). If so, then we have to assure
3884 * consistency between yy_current_buffer and our
3885 * globals. Here is the right place to do so, because
3886 * this is the first action (other than possibly a
3887 * back-up) that will match for the new input source.
3889 yy_n_chars = yy_current_buffer->yy_n_chars;
3890 yy_current_buffer->yy_input_file = yyin;
3891 yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
3894 /* Note that here we test for yy_c_buf_p "<=" to the position
3895 * of the first EOB in the buffer, since yy_c_buf_p will
3896 * already have been incremented past the NUL character
3897 * (since all states make transitions on EOB to the
3898 * end-of-buffer state). Contrast this with the test
3899 * in input().
3901 if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
3902 { /* This was really a NUL. */
3903 yy_state_type yy_next_state;
3905 yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
3907 yy_current_state = yy_get_previous_state();
3909 /* Okay, we're now positioned to make the NUL
3910 * transition. We couldn't have
3911 * yy_get_previous_state() go ahead and do it
3912 * for us because it doesn't know how to deal
3913 * with the possibility of jamming (and we don't
3914 * want to build jamming into it because then it
3915 * will run more slowly).
3918 yy_next_state = yy_try_NUL_trans( yy_current_state );
3920 yy_bp = yytext_ptr + YY_MORE_ADJ;
3922 if ( yy_next_state )
3924 /* Consume the NUL. */
3925 yy_cp = ++yy_c_buf_p;
3926 yy_current_state = yy_next_state;
3927 goto yy_match;
3930 else
3932 yy_cp = yy_c_buf_p;
3933 #line 632 "flex.skl"
3934 goto yy_find_action;
3938 else switch ( yy_get_next_buffer() )
3940 case EOB_ACT_END_OF_FILE:
3942 yy_did_buffer_switch_on_eof = 0;
3944 if ( yywrap() )
3946 /* Note: because we've taken care in
3947 * yy_get_next_buffer() to have set up
3948 * yytext, we can now set up
3949 * yy_c_buf_p so that if some total
3950 * hoser (like flex itself) wants to
3951 * call the scanner after we return the
3952 * YY_NULL, it'll still work - another
3953 * YY_NULL will get returned.
3955 yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
3957 yy_act = YY_STATE_EOF(YY_START);
3958 goto do_action;
3961 else
3963 if ( ! yy_did_buffer_switch_on_eof )
3964 YY_NEW_FILE;
3966 break;
3969 case EOB_ACT_CONTINUE_SCAN:
3970 yy_c_buf_p =
3971 yytext_ptr + yy_amount_of_matched_text;
3973 yy_current_state = yy_get_previous_state();
3975 yy_cp = yy_c_buf_p;
3976 yy_bp = yytext_ptr + YY_MORE_ADJ;
3977 goto yy_match;
3979 case EOB_ACT_LAST_MATCH:
3980 yy_c_buf_p =
3981 &yy_current_buffer->yy_ch_buf[yy_n_chars];
3983 yy_current_state = yy_get_previous_state();
3985 yy_cp = yy_c_buf_p;
3986 yy_bp = yytext_ptr + YY_MORE_ADJ;
3987 goto yy_find_action;
3989 break;
3992 default:
3993 YY_FATAL_ERROR(
3994 "fatal flex scanner internal error--no action found" );
3995 } /* end of action switch */
3996 } /* end of scanning one token */
3997 } /* end of yylex */
3999 #line 782 "flex.skl"
4001 /* yy_get_next_buffer - try to read in a new buffer
4003 * Returns a code representing an action:
4004 * EOB_ACT_LAST_MATCH -
4005 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
4006 * EOB_ACT_END_OF_FILE - end of file
4009 #line 793 "flex.skl"
4010 static int yy_get_next_buffer()
4011 #line 799 "flex.skl"
4013 register char *dest = yy_current_buffer->yy_ch_buf;
4014 register char *source = yytext_ptr;
4015 register int number_to_move, i;
4016 int ret_val;
4018 if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
4019 YY_FATAL_ERROR(
4020 "fatal flex scanner internal error--end of buffer missed" );
4022 if ( yy_current_buffer->yy_fill_buffer == 0 )
4023 { /* Don't try to fill the buffer, so this is an EOF. */
4024 if ( yy_c_buf_p - (char *) yytext_ptr - YY_MORE_ADJ == 1 )
4026 /* We matched a single character, the EOB, so
4027 * treat this as a final EOF.
4029 return EOB_ACT_END_OF_FILE;
4032 else
4034 /* We matched some text prior to the EOB, first
4035 * process it.
4037 return EOB_ACT_LAST_MATCH;
4041 /* Try to read more data. */
4043 /* First move last chars to start of buffer. */
4044 number_to_move = (int) (yy_c_buf_p - (char *) yytext_ptr) - 1;
4046 for ( i = 0; i < number_to_move; ++i )
4047 *(dest++) = *(source++);
4049 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
4050 /* don't do the read, it's not guaranteed to return an EOF,
4051 * just force an EOF
4053 yy_current_buffer->yy_n_chars = yy_n_chars = 0;
4055 else
4057 int num_to_read =
4058 yy_current_buffer->yy_buf_size - number_to_move - 1;
4060 while ( num_to_read <= 0 )
4061 { /* Not enough room in the buffer - grow it. */
4062 #ifdef YY_USES_REJECT
4063 YY_FATAL_ERROR(
4064 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
4065 #else
4067 /* just a shorter name for the current buffer */
4068 YY_BUFFER_STATE b = yy_current_buffer;
4070 int yy_c_buf_p_offset =
4071 (int) (yy_c_buf_p - b->yy_ch_buf);
4073 if ( b->yy_is_our_buffer )
4075 int new_size = b->yy_buf_size * 2;
4077 if ( new_size <= 0 )
4078 b->yy_buf_size += b->yy_buf_size / 8;
4079 else
4080 b->yy_buf_size *= 2;
4082 b->yy_ch_buf = (char *)
4083 /* Include room in for 2 EOB chars. */
4084 yy_flex_realloc( (void *) b->yy_ch_buf,
4085 b->yy_buf_size + 2 );
4087 else
4088 /* Can't grow it, we don't own it. */
4089 b->yy_ch_buf = 0;
4091 if ( ! b->yy_ch_buf )
4092 YY_FATAL_ERROR(
4093 "fatal error - scanner input buffer overflow" );
4095 yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
4097 num_to_read = yy_current_buffer->yy_buf_size -
4098 number_to_move - 1;
4099 #endif
4102 if ( num_to_read > YY_READ_BUF_SIZE )
4103 num_to_read = YY_READ_BUF_SIZE;
4105 /* Read in more data. */
4106 YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
4107 yy_n_chars, num_to_read );
4109 yy_current_buffer->yy_n_chars = yy_n_chars;
4112 if ( yy_n_chars == 0 )
4114 if ( number_to_move == YY_MORE_ADJ )
4116 ret_val = EOB_ACT_END_OF_FILE;
4117 yyrestart( yyin );
4120 else
4122 ret_val = EOB_ACT_LAST_MATCH;
4123 yy_current_buffer->yy_buffer_status =
4124 YY_BUFFER_EOF_PENDING;
4128 else
4129 ret_val = EOB_ACT_CONTINUE_SCAN;
4131 yy_n_chars += number_to_move;
4132 yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
4133 yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
4135 yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
4137 return ret_val;
4141 /* yy_get_previous_state - get the state just before the EOB char was reached */
4143 #line 932 "flex.skl"
4144 static yy_state_type yy_get_previous_state()
4145 #line 938 "flex.skl"
4147 register yy_state_type yy_current_state;
4148 register char *yy_cp;
4150 yy_current_state = yy_start;
4151 yy_state_ptr = yy_state_buf;
4152 *yy_state_ptr++ = yy_current_state;
4153 #line 944 "flex.skl"
4155 for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
4157 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
4158 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
4160 yy_current_state = (int) yy_def[yy_current_state];
4161 if ( yy_current_state >= 858 )
4162 yy_c = yy_meta[(unsigned int) yy_c];
4164 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
4165 *yy_state_ptr++ = yy_current_state;
4166 #line 949 "flex.skl"
4169 return yy_current_state;
4173 /* yy_try_NUL_trans - try to make a transition on the NUL character
4175 * synopsis
4176 * next_state = yy_try_NUL_trans( current_state );
4179 #line 963 "flex.skl"
4180 #ifdef YY_USE_PROTOS
4181 static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
4182 #else
4183 static yy_state_type yy_try_NUL_trans( yy_current_state )
4184 yy_state_type yy_current_state;
4185 #endif
4186 #line 974 "flex.skl"
4188 register int yy_is_jam;
4190 register YY_CHAR yy_c = 1;
4191 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
4193 yy_current_state = (int) yy_def[yy_current_state];
4194 if ( yy_current_state >= 858 )
4195 yy_c = yy_meta[(unsigned int) yy_c];
4197 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
4198 yy_is_jam = (yy_current_state == 857);
4199 if ( ! yy_is_jam )
4200 *yy_state_ptr++ = yy_current_state;
4201 #line 978 "flex.skl"
4203 return yy_is_jam ? 0 : yy_current_state;
4207 #line 985 "flex.skl"
4208 #ifndef YY_NO_UNPUT
4209 #ifdef YY_USE_PROTOS
4210 static void yyunput( int c, register char *yy_bp )
4211 #else
4212 static void yyunput( c, yy_bp )
4213 int c;
4214 register char *yy_bp;
4215 #endif
4216 #line 998 "flex.skl"
4218 register char *yy_cp = yy_c_buf_p;
4220 /* undo effects of setting up yytext */
4221 *yy_cp = yy_hold_char;
4223 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
4224 { /* need to shift things up to make room */
4225 /* +2 for EOB chars. */
4226 register int number_to_move = yy_n_chars + 2;
4227 register char *dest = &yy_current_buffer->yy_ch_buf[
4228 yy_current_buffer->yy_buf_size + 2];
4229 register char *source =
4230 &yy_current_buffer->yy_ch_buf[number_to_move];
4232 while ( source > yy_current_buffer->yy_ch_buf )
4233 *--dest = *--source;
4235 yy_cp += (int) (dest - source);
4236 yy_bp += (int) (dest - source);
4237 yy_current_buffer->yy_n_chars =
4238 yy_n_chars = yy_current_buffer->yy_buf_size;
4240 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
4241 YY_FATAL_ERROR( "flex scanner push-back overflow" );
4244 *--yy_cp = (char) c;
4246 #line 1029 "flex.skl"
4248 yytext_ptr = yy_bp;
4249 yy_hold_char = *yy_cp;
4250 yy_c_buf_p = yy_cp;
4252 #line 1036 "flex.skl"
4253 #endif /* ifndef YY_NO_UNPUT */
4254 #line 1039 "flex.skl"
4257 #line 1043 "flex.skl"
4258 #ifdef __cplusplus
4259 static int yyinput()
4260 #else
4261 static int input()
4262 #endif
4263 #line 1053 "flex.skl"
4265 int c;
4267 *yy_c_buf_p = yy_hold_char;
4269 if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
4271 /* yy_c_buf_p now points to the character we want to return.
4272 * If this occurs *before* the EOB characters, then it's a
4273 * valid NUL; if not, then we've hit the end of the buffer.
4275 if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
4276 /* This was really a NUL. */
4277 *yy_c_buf_p = '\0';
4279 else
4280 { /* need more input */
4281 int offset = yy_c_buf_p - (char *) yytext_ptr;
4282 ++yy_c_buf_p;
4284 switch ( yy_get_next_buffer() )
4286 case EOB_ACT_LAST_MATCH:
4287 /* This happens because yy_g_n_b()
4288 * sees that we've accumulated a
4289 * token and flags that we need to
4290 * try matching the token before
4291 * proceeding. But for input(),
4292 * there's no matching to consider.
4293 * So convert the EOB_ACT_LAST_MATCH
4294 * to EOB_ACT_END_OF_FILE.
4297 /* Reset buffer status. */
4298 yyrestart( yyin );
4300 /* fall through */
4302 case EOB_ACT_END_OF_FILE:
4304 if ( yywrap() )
4305 return EOF;
4307 if ( ! yy_did_buffer_switch_on_eof )
4308 YY_NEW_FILE;
4309 #ifdef __cplusplus
4310 return yyinput();
4311 #else
4312 return input();
4313 #endif
4316 case EOB_ACT_CONTINUE_SCAN:
4317 yy_c_buf_p = yytext_ptr + offset;
4318 break;
4323 c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */
4324 *yy_c_buf_p = '\0'; /* preserve yytext */
4325 yy_hold_char = *++yy_c_buf_p;
4327 #line 1118 "flex.skl"
4329 return c;
4333 #line 1125 "flex.skl"
4334 #ifdef YY_USE_PROTOS
4335 void yyrestart( FILE *input_file )
4336 #else
4337 void yyrestart( input_file )
4338 FILE *input_file;
4339 #endif
4340 #line 1136 "flex.skl"
4342 if ( ! yy_current_buffer )
4343 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
4345 yy_init_buffer( yy_current_buffer, input_file );
4346 yy_load_buffer_state();
4350 #line 1147 "flex.skl"
4351 #ifdef YY_USE_PROTOS
4352 void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
4353 #else
4354 void yy_switch_to_buffer( new_buffer )
4355 YY_BUFFER_STATE new_buffer;
4356 #endif
4357 #line 1158 "flex.skl"
4359 if ( yy_current_buffer == new_buffer )
4360 return;
4362 if ( yy_current_buffer )
4364 /* Flush out information for old buffer. */
4365 *yy_c_buf_p = yy_hold_char;
4366 yy_current_buffer->yy_buf_pos = yy_c_buf_p;
4367 yy_current_buffer->yy_n_chars = yy_n_chars;
4370 yy_current_buffer = new_buffer;
4371 yy_load_buffer_state();
4373 /* We don't actually know whether we did this switch during
4374 * EOF (yywrap()) processing, but the only time this flag
4375 * is looked at is after yywrap() is called, so it's safe
4376 * to go ahead and always set it.
4378 yy_did_buffer_switch_on_eof = 1;
4382 #line 1184 "flex.skl"
4383 #ifdef YY_USE_PROTOS
4384 void yy_load_buffer_state( void )
4385 #else
4386 void yy_load_buffer_state()
4387 #endif
4388 #line 1194 "flex.skl"
4390 yy_n_chars = yy_current_buffer->yy_n_chars;
4391 yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
4392 yyin = yy_current_buffer->yy_input_file;
4393 yy_hold_char = *yy_c_buf_p;
4397 #line 1204 "flex.skl"
4398 #ifdef YY_USE_PROTOS
4399 YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
4400 #else
4401 YY_BUFFER_STATE yy_create_buffer( file, size )
4402 FILE *file;
4403 int size;
4404 #endif
4405 #line 1216 "flex.skl"
4407 YY_BUFFER_STATE b;
4409 b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
4410 if ( ! b )
4411 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
4413 b->yy_buf_size = size;
4415 /* yy_ch_buf has to be 2 characters longer than the size given because
4416 * we need to put in 2 end-of-buffer characters.
4418 b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
4419 if ( ! b->yy_ch_buf )
4420 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
4422 b->yy_is_our_buffer = 1;
4424 yy_init_buffer( b, file );
4426 return b;
4430 #line 1242 "flex.skl"
4431 #ifdef YY_USE_PROTOS
4432 void yy_delete_buffer( YY_BUFFER_STATE b )
4433 #else
4434 void yy_delete_buffer( b )
4435 YY_BUFFER_STATE b;
4436 #endif
4437 #line 1253 "flex.skl"
4439 if ( ! b )
4440 return;
4442 if ( b == yy_current_buffer )
4443 yy_current_buffer = (YY_BUFFER_STATE) 0;
4445 if ( b->yy_is_our_buffer )
4446 yy_flex_free( (void *) b->yy_ch_buf );
4448 yy_flex_free( (void *) b );
4452 #line 1269 "flex.skl"
4453 #ifndef YY_ALWAYS_INTERACTIVE
4454 #ifndef YY_NEVER_INTERACTIVE
4455 extern int isatty YY_PROTO(( int ));
4456 #endif
4457 #endif
4459 #ifdef YY_USE_PROTOS
4460 void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
4461 #else
4462 void yy_init_buffer( b, file )
4463 YY_BUFFER_STATE b;
4464 FILE *file;
4465 #endif
4467 #line 1289 "flex.skl"
4470 #line 1292 "flex.skl"
4471 yy_flush_buffer( b );
4473 b->yy_input_file = file;
4474 b->yy_fill_buffer = 1;
4476 #line 1299 "flex.skl"
4477 #if YY_ALWAYS_INTERACTIVE
4478 b->yy_is_interactive = 1;
4479 #else
4480 #if YY_NEVER_INTERACTIVE
4481 b->yy_is_interactive = 0;
4482 #else
4483 b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
4484 #endif
4485 #endif
4486 #line 1313 "flex.skl"
4490 #line 1318 "flex.skl"
4491 #ifdef YY_USE_PROTOS
4492 void yy_flush_buffer( YY_BUFFER_STATE b )
4493 #else
4494 void yy_flush_buffer( b )
4495 YY_BUFFER_STATE b;
4496 #endif
4498 #line 1330 "flex.skl"
4500 if ( ! b )
4501 return;
4503 b->yy_n_chars = 0;
4505 /* We always need two end-of-buffer characters. The first causes
4506 * a transition to the end-of-buffer state. The second causes
4507 * a jam in that state.
4509 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
4510 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
4512 b->yy_buf_pos = &b->yy_ch_buf[0];
4514 b->yy_at_bol = 1;
4515 b->yy_buffer_status = YY_BUFFER_NEW;
4517 if ( b == yy_current_buffer )
4518 yy_load_buffer_state();
4520 #line 1353 "flex.skl"
4523 #ifndef YY_NO_SCAN_BUFFER
4524 #line 1358 "flex.skl"
4525 #ifdef YY_USE_PROTOS
4526 YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
4527 #else
4528 YY_BUFFER_STATE yy_scan_buffer( base, size )
4529 char *base;
4530 yy_size_t size;
4531 #endif
4533 YY_BUFFER_STATE b;
4535 if ( size < 2 ||
4536 base[size-2] != YY_END_OF_BUFFER_CHAR ||
4537 base[size-1] != YY_END_OF_BUFFER_CHAR )
4538 /* They forgot to leave room for the EOB's. */
4539 return 0;
4541 b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
4542 if ( ! b )
4543 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
4545 b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
4546 b->yy_buf_pos = b->yy_ch_buf = base;
4547 b->yy_is_our_buffer = 0;
4548 b->yy_input_file = 0;
4549 b->yy_n_chars = b->yy_buf_size;
4550 b->yy_is_interactive = 0;
4551 b->yy_at_bol = 1;
4552 b->yy_fill_buffer = 0;
4553 b->yy_buffer_status = YY_BUFFER_NEW;
4555 yy_switch_to_buffer( b );
4557 return b;
4559 #endif
4560 #line 1395 "flex.skl"
4563 #ifndef YY_NO_SCAN_STRING
4564 #line 1400 "flex.skl"
4565 #ifdef YY_USE_PROTOS
4566 YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
4567 #else
4568 YY_BUFFER_STATE yy_scan_string( yy_str )
4569 yyconst char *yy_str;
4570 #endif
4572 int len;
4573 for ( len = 0; yy_str[len]; ++len )
4576 return yy_scan_bytes( yy_str, len );
4578 #endif
4579 #line 1416 "flex.skl"
4582 #ifndef YY_NO_SCAN_BYTES
4583 #line 1421 "flex.skl"
4584 #ifdef YY_USE_PROTOS
4585 YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
4586 #else
4587 YY_BUFFER_STATE yy_scan_bytes( bytes, len )
4588 yyconst char *bytes;
4589 int len;
4590 #endif
4592 YY_BUFFER_STATE b;
4593 char *buf;
4594 yy_size_t n;
4595 int i;
4597 /* Get memory for full buffer, including space for trailing EOB's. */
4598 n = len + 2;
4599 buf = (char *) yy_flex_alloc( n );
4600 if ( ! buf )
4601 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
4603 for ( i = 0; i < len; ++i )
4604 buf[i] = bytes[i];
4606 buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
4608 b = yy_scan_buffer( buf, n );
4609 if ( ! b )
4610 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
4612 /* It's okay to grow etc. this buffer, and we should throw it
4613 * away when we're done.
4615 b->yy_is_our_buffer = 1;
4617 return b;
4619 #endif
4620 #line 1459 "flex.skl"
4623 #ifndef YY_NO_PUSH_STATE
4624 #line 1464 "flex.skl"
4625 #ifdef YY_USE_PROTOS
4626 static void yy_push_state( int new_state )
4627 #else
4628 static void yy_push_state( new_state )
4629 int new_state;
4630 #endif
4631 #line 1475 "flex.skl"
4633 if ( yy_start_stack_ptr >= yy_start_stack_depth )
4635 yy_size_t new_size;
4637 yy_start_stack_depth += YY_START_STACK_INCR;
4638 new_size = yy_start_stack_depth * sizeof( int );
4640 if ( ! yy_start_stack )
4641 yy_start_stack = (int *) yy_flex_alloc( new_size );
4643 else
4644 yy_start_stack = (int *) yy_flex_realloc(
4645 (void *) yy_start_stack, new_size );
4647 if ( ! yy_start_stack )
4648 YY_FATAL_ERROR(
4649 "out of memory expanding start-condition stack" );
4652 yy_start_stack[yy_start_stack_ptr++] = YY_START;
4654 BEGIN(new_state);
4656 #endif
4659 #ifndef YY_NO_POP_STATE
4660 #line 1505 "flex.skl"
4661 static void yy_pop_state()
4662 #line 1511 "flex.skl"
4664 if ( --yy_start_stack_ptr < 0 )
4665 YY_FATAL_ERROR( "start-condition stack underflow" );
4667 BEGIN(yy_start_stack[yy_start_stack_ptr]);
4669 #endif
4672 #ifndef YY_NO_TOP_STATE
4673 #line 1523 "flex.skl"
4674 static int yy_top_state()
4675 #line 1529 "flex.skl"
4677 return yy_start_stack[yy_start_stack_ptr - 1];
4679 #endif
4681 #ifndef YY_EXIT_FAILURE
4682 #define YY_EXIT_FAILURE 2
4683 #endif
4685 #line 1540 "flex.skl"
4686 #ifdef YY_USE_PROTOS
4687 static inline void yy_fatal_error( yyconst char msg[] )
4688 #else
4689 static inline void yy_fatal_error( msg )
4690 char msg[];
4691 #endif
4693 (void) fprintf( stderr, "%s\n", msg );
4694 exit( YY_EXIT_FAILURE );
4697 #line 1561 "flex.skl"
4700 /* Redefine yyless() so it works in section 3 code. */
4702 #undef yyless
4703 #define yyless(n) \
4704 do \
4706 /* Undo effects of setting up yytext. */ \
4707 yytext[yyleng] = yy_hold_char; \
4708 yy_c_buf_p = yytext + n; \
4709 yy_hold_char = *yy_c_buf_p; \
4710 *yy_c_buf_p = '\0'; \
4711 yyleng = n; \
4713 while ( 0 )
4716 /* Internal utility routines. */
4718 #ifndef yytext_ptr
4719 #ifdef YY_USE_PROTOS
4720 static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
4721 #else
4722 static void yy_flex_strncpy( s1, s2, n )
4723 char *s1;
4724 yyconst char *s2;
4725 int n;
4726 #endif
4728 register int i;
4729 for ( i = 0; i < n; ++i )
4730 s1[i] = s2[i];
4732 #endif
4734 #ifdef YY_NEED_STRLEN
4735 #ifdef YY_USE_PROTOS
4736 static int yy_flex_strlen( yyconst char *s )
4737 #else
4738 static int yy_flex_strlen( s )
4739 yyconst char *s;
4740 #endif
4742 register int n;
4743 for ( n = 0; s[n]; ++n )
4746 return n;
4748 #endif
4751 #ifdef YY_USE_PROTOS
4752 static void *yy_flex_alloc( yy_size_t size )
4753 #else
4754 static void *yy_flex_alloc( size )
4755 yy_size_t size;
4756 #endif
4758 return (void *) malloc( size );
4761 #ifdef YY_USE_PROTOS
4762 static inline void *yy_flex_realloc( void *ptr, yy_size_t size )
4763 #else
4764 static inline void *yy_flex_realloc( ptr, size )
4765 void *ptr;
4766 yy_size_t size;
4767 #endif
4769 /* The cast to (char *) in the following accommodates both
4770 * implementations that use char* generic pointers, and those
4771 * that use void* generic pointers. It works with the latter
4772 * because both ANSI C and C++ allow castless assignment from
4773 * any pointer type to void*, and deal with argument conversions
4774 * as though doing an assignment.
4776 return (void *) realloc( (char *) ptr, size );
4779 #ifdef YY_USE_PROTOS
4780 static void yy_flex_free( void *ptr )
4781 #else
4782 static void yy_flex_free( ptr )
4783 void *ptr;
4784 #endif
4786 free( ptr );
4789 #if YY_MAIN
4790 int main()
4792 yylex();
4793 return 0;
4795 #endif
4796 #line 1448 "./lexsrc.l"
4799 #define NORMALSTAT 0
4800 #define COMMENTSTAT 1
4801 #define SINGLEQUOTE 2
4802 #define DOUBLEQUOTE 3
4805 * set_assignment sets an assignment variable in retvalue from yytext with
4806 * a trailing {between}[={between}] stripped.
4807 * retlength is set, too.
4809 static void set_assignment( void )
4811 char ch;
4813 for( retlength = 0; ( ch = yytext[retlength] ) != 0; retlength++ )
4816 * A blank or '=' can't occur in the normal text. They are terminators.
4818 if ( ( ch == '=' )
4819 || ( ch == '\n' )
4820 || ( MY_ISBLANK( ch ) ) )
4821 break;
4822 retvalue[retlength] = (char) rx_toupper( ch );
4824 retvalue[retlength] = '\0' ;
4827 /* rmspc uppercases all characters and removes blanks from a string.
4828 * Returns the input string.
4830 static YY_CHAR_TYPE *rmspc( YY_CHAR_TYPE *instr )
4832 YY_CHAR_TYPE *retval=instr ,
4833 *dest =instr ,
4836 while ((c = *instr++) != '\0')
4838 c = (YY_CHAR_TYPE) rx_toupper(c);
4839 /* These characters are treated as blanks: */
4840 if ((c!='`') && (c!=' ') && (c!=',') && (c!='\t') && (c!='\n'))
4841 *dest++ = c ;
4843 *dest = '\0' ;
4845 return( retval ) ;
4849 * process_number_or_const does the processing of a decimal number or a const.
4850 * The detection was to complicated to put it into one routine.
4851 * We have to read some more characters to decide whether or not we have
4852 * an INFUNCNAME.
4853 * Returns a lexical code.
4855 static int process_number_or_const( const char *text, int len )
4857 int eaten,c,symbol;
4860 * Copy and uppercase the return value.
4862 memcpy( retvalue, text, len + 1 ); /* include terminating '\0' */
4863 mem_upper( retvalue, len );
4865 if ( in_numform )
4867 parser_data.tline = linenr - 1; /* set tline for exiterror */
4868 exiterror( ERR_INV_SUBKEYWORD, 11, "ENGINEERING SCIENTIFIC", retvalue );
4870 nextstart += len;
4872 BEGIN other;
4875 * Plain number or const_symbol.
4877 if ( KNOWN_RESERVED( retvalue, len ) )
4878 symbol = SIMSYMBOL;
4879 else
4880 symbol = CONSYMBOL;
4882 if ( in_call )
4885 * This has precedence over checking the parenthesis below.
4886 * Fixes bug 521502.
4888 in_call = 0;
4889 kill_next_space = 1;
4890 SET_NEXTSTART();
4891 return symbol;
4895 * We must check if a '(' follows. Remember the number of eaten chars.
4897 eaten = 1;
4898 #ifdef __cplusplus
4899 while ( ( c = yyinput() ) == '`' )
4900 #else
4901 while ( ( c = input() ) == '`' )
4902 #endif
4904 eaten++;
4906 if ( c != '(' )
4908 eaten--;
4909 unput( c );
4912 * input() has destroyed the yytext-terminator re-set it
4914 yytext[yyleng] = '\0';
4915 nextstart += eaten;
4916 if ( c == '(' )
4918 kill_next_space = 1;
4919 if ( insert_abuttal )
4921 inhibit_delayed_abuttal = 1;
4922 delayed_symbol = INFUNCNAME;
4923 return CONCATENATE;
4925 expression_ended = 0;
4926 return INFUNCNAME;
4929 if ( insert_abuttal && !in_parse )
4931 delayed_symbol = symbol;
4932 return CONCATENATE;
4935 expression_ended = 1;
4936 return symbol;
4940 * compress_string removes quotes or double quotes from the src and changes
4941 * double delimiter to one. The delimiter should be either ' or ".
4943 static void compress_string( char *dest, const char *src )
4945 char c, delim = *src++;
4947 for (;;)
4949 if ( ( c = *src++ ) == delim )
4951 if (*src == delim )
4953 *dest++ = *src++;
4955 else
4957 break;
4960 else
4962 if ( c == '\n' )
4964 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
4965 exiterror( ERR_UNMATCHED_QUOTE, 0 ) ;
4967 *dest++ = c;
4970 *dest = '\0';
4974 * process_hex_or_bin_string convert the string in text which is given as
4975 * a hexstring or a binstring to a "normal" string. base must be either 2 or
4976 * 16.
4977 * We rely on having a well-formed string. This must be ensured. It is
4978 * something of the form "content"x or 'content'b or similar.
4979 * Returns a lexical code. retvalue and retlength will be filled.
4981 static int process_hex_or_bin_string( char *text, int len, int base )
4983 char c;
4984 int i,left;
4985 unsigned char *dest,sum;
4987 BEGIN other;
4988 SET_NEXTSTART();
4990 text++;
4991 len -= 3;
4994 * First, count the number of valid chars to determine the missed leading
4995 * zeros of the first final character.
4997 for ( i = 0, left = 0 ; i < len; i++ )
4999 c = text[i];
5000 if ( !MY_ISBLANK( c ) )
5001 left++;
5005 * left shall be the count of input char left to process one dest char.
5006 * Accessing one character after the content's end is allowed.
5008 left %= ( base == 2 ) ? 8 : 2;
5010 dest = (unsigned char *) retvalue;
5011 retlength = 0;
5013 sum = 0;
5014 c = *text;
5015 for (;;)
5017 while ( len && MY_ISBLANK( c ) )
5019 c = *++text;
5020 len--;
5022 if ( len == 0 )
5023 break;
5025 if ( base == 2 )
5027 if ( left == 0 )
5028 left = 8;
5029 sum <<= 1;
5030 sum |= (unsigned char) ( c - '0' );
5032 else
5034 if ( left == 0 )
5035 left = 2;
5036 sum <<= 4;
5037 sum |= HEXVAL( c );
5039 c = *++text;
5040 len--;
5042 if ( --left == 0 )
5044 dest[retlength++] = sum;
5045 sum = 0;
5048 dest[retlength] = '\0';
5050 /* We must check if a '(' follows. Remember the number of eaten chars. */
5051 left = 1;
5052 #ifdef __cplusplus
5053 for (; ( i = yyinput() ) == '`';)
5054 #else
5055 for (; ( i = input() ) == '`';)
5056 #endif
5057 left++;
5058 if (i != '(')
5060 left--;
5061 unput(i);
5063 /* input() has destroyed the yytext-terminator re-set it */
5064 text[len] = '\0';
5065 SET_NEXTSTART();
5066 nextstart += left;
5068 if (i == '(')
5070 kill_next_space = 1;
5071 if (insert_abuttal)
5073 inhibit_delayed_abuttal = 1;
5074 delayed_symbol = INFUNCNAME;
5075 return CONCATENATE;
5077 expression_ended = 0;
5078 return INFUNCNAME;
5081 if ( insert_abuttal && !in_parse && !in_call )
5083 delayed_symbol = STRING;
5084 return CONCATENATE;
5087 if ( in_call )
5089 in_call = 0;
5090 kill_next_space = 1;
5092 else
5093 expression_ended = 1;
5095 return ( base == 2 ) ? BINSTRING : HEXSTRING;
5098 /* get_next_line: Lower level input fetcher.
5099 * Reads exactly one line from the input stream (file or string).
5100 * All EOL characters are removed and the result is stored in
5101 * last_source_line. A check for line overflow occurred here.
5102 * A special check is done for CP/M ^Z (DOS and friends use this for
5103 * "backward" compatibility, too).
5104 * line is filled with valid values on success.
5105 * max must reflect size of line and should be at least BUFFERSIZE + 2;
5106 * Returns -1 (no input) or the number of valid chars in line.
5108 static int get_next_line( char *line, int max, FILE *stream )
5110 lineboxptr newline ;
5111 offsrcline *incore_newline;
5112 int pos = 0;
5113 int c = 0;
5115 if (inEOF) /* You can't use myunputc if EOF is reached! */
5116 return EOF ;
5118 while (pos <= max - 2)
5120 /* get next char */
5121 if (bufptr>0)
5122 c = chbuffer[--bufptr] ;
5123 else if (ipretflag)
5125 if (interptr>=interptrmax)
5126 c = EOF ;
5127 else
5128 #ifdef ASCII_0_TERMINATES_STRING
5129 if ((c = *interptr++) == '\0')
5130 c = EOF ;
5131 #else
5132 c = *interptr++ ;
5133 #endif
5135 else
5137 c = getc(stream) ;
5139 if ( parser_data.TSD->HaltRaised )
5140 halt_raised( parser_data.TSD );
5143 if ((c=='\r') || (c=='\n') || (c==EOF))
5144 break ;
5145 line[pos++] = (char) (unsigned char) c ;
5148 /* first, check for overflow */
5149 if ((c!='\r') && (c!='\n') && (c!=EOF))
5151 parser_data.tline = linenr ; /* set tline for exiterror */
5152 exiterror( ERR_TOO_LONG_LINE, 0 ) ;
5155 /* We have either a (first) line terminator or EOF */
5156 if (c==EOF)
5158 if ((pos==1) && (line[0]=='\x1A')) /* CP/M ^Z EOF? */
5159 pos-- ;
5160 if (pos == 0)
5162 inEOF = 1 ;
5163 return EOF ;
5165 chbuffer[bufptr++] = EOF; /* push back EOF for reuse */
5167 else
5169 /* Maybe we have CRLF or LFCR. Check for the pair character. */
5170 char pairChar = (c == '\r') ? '\n' : '\r';
5173 /* get one more char and consume it if it is the pair of the EOL */
5174 if (bufptr > 0)
5176 if (chbuffer[bufptr - 1] == (int) pairChar)
5177 bufptr--;
5179 else if (ipretflag)
5181 if ((interptr < interptrmax) && (*interptr == pairChar))
5182 interptr++;
5184 else
5186 int next = getc(stream);
5187 if (next != pairChar)
5189 /* ungetc may break some runtime stuff. Use the internal lookahead*/
5190 chbuffer[bufptr++] = next;
5192 if ( parser_data.TSD->HaltRaised )
5193 halt_raised( parser_data.TSD );
5198 cch = 0 ; /* not needed ? */
5199 line[pos++] = '\n';
5201 if (parser_data.incore_source)
5204 * We can use the incore string to describe a source line, but we
5205 * MUST incement linenr otherwise .LINE doesn't work in instore macros.
5206 * This will probably also allow errors to be reported for the correct line number.
5208 linenr++;
5209 incore_newline = FreshLine() ;
5210 incore_newline->length = pos - 1 ;
5211 incore_newline->offset = last_interptr - parser_data.incore_source ;
5212 last_interptr = interptr;
5213 return pos ;
5216 newline = (lineboxptr)Malloc(sizeof(linebox)) ;
5217 newline->line = Str_make_TSD( parser_data.TSD, pos - 1 ) ;
5218 newline->line->len = pos - 1 ;
5219 memcpy(newline->line->value, line, pos - 1 ) ;
5220 newline->prev = parser_data.last_source_line ;
5221 newline->next = NULL ;
5222 newline->lineno = linenr++ ;
5224 if (parser_data.first_source_line==NULL)
5225 parser_data.first_source_line = newline ;
5226 else
5227 parser_data.last_source_line->next = newline ;
5228 parser_data.last_source_line = newline ;
5230 return pos ;
5233 /* fill_buffer: Higher level input fetcher.
5234 * (To allow the C-file to compile, all Rexx comments in this comment
5235 * are written as "{*" "*}" instead of the normal, C-like manner.)
5236 * Reads lines from the input stream (yyin or string) with get_next_line.
5237 * Only one line is returned to allow the saving of the line number.
5238 * This routine replaces all comments by '`' signs. This allows
5239 * the detection of a "pseudo" blank: The fragment "say x{* *}y" uses two
5240 * variables, not one called "xy". The parsing of comments must be done
5241 * here to check for the actual numbers of open and closes ("{*" and "*}").
5242 * While doing this we must always check for strings since "'{*'" is not part
5243 * of a comment.
5244 * Here is a problem: Is this a nested valid comment: "{* '{*' *} *}"?
5245 * I think so although you cannot remove the outer comment signs without an
5246 * error. Everything within a comment is a comment (per def.). Counting
5247 * opens and closes of comment signs is an ugly trick to help the user.
5248 * He/she must know what he/she is doing if nesting comments!
5250 * max_size gives the maximum size of buf. This is filled up with input.
5251 * We never return less than one character until EOF is reached. Thus, we
5252 * read more than one true input line if a comment spans over more than one
5253 * line.
5254 * A line will either be terminated by a single '\n' or by a blank. The
5255 * later one replaces a line continuation (',' [spaces] EOL).
5256 * Errors in this low
5258 * Conclusion: We have to fight very hard to set the expected line number.
5259 * * Comments spanning over lines set them on getting the
5260 * "follow" lines.
5261 * * Concatenated lines set
5263 static int fill_buffer( char *buf, int max_size )
5265 /* statics protected by regina_parser */
5266 static char line[BUFFERSIZE+2] ; /* special buffer to allow max_size */
5267 static int pos = 0, max = 0 ; /* being smaller than BUFFERSIZE+1 */
5268 static int nesting = 0; /* nesting level of comments */
5269 int nesting_start_line = 0; /* start line of comment for errortext() */
5270 char *dest, c;
5271 int i, squote, dquote;
5272 int line_comment;
5274 if (firstln == 0)
5276 firstln = 1;
5277 contline = 0;
5278 nesting = 0;
5279 pos = 0;
5280 max = get_next_line( line, sizeof(line), yyin ) ;
5281 if (max < 0) /* empty input file */
5282 return 0 ;
5283 /* test for both #! - fixes bug 1230639 */
5284 if ( max > 1
5285 && line[0] == '#'
5286 && line[1] == '!' )
5287 { /* Ignore first line beginning this way for unix compat */
5288 max = 5;
5289 memcpy( line, "/**/\n", 5 );
5292 else if (pos < max) /* Are there still characters to transmit? */
5294 /* Buffer already checked for correctness */
5295 if (max_size > max - pos)
5296 max_size = max - pos;
5297 memcpy(buf, line + pos, max_size);
5298 pos += max_size;
5299 return(max_size);
5301 else /* Need next line */
5303 if (contline && !nesting)
5305 extnextline = ++nextline ;
5306 extnextstart = 1 ;
5307 contline = 0;
5309 pos = 0;
5310 max = get_next_line( line, sizeof(line), yyin ) ;
5311 if (max < 0) /* empty input file */
5313 if (nesting)
5315 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
5316 exiterror( ERR_UNMATCHED_QUOTE, 1 ) ;
5318 return 0 ;
5322 /* A new line is available, check first for an ending comment */
5323 dest = line; /* we change comments in line */
5324 if (nesting) /* This may lead to more line reading */
5327 * The first time extnextline is non-zero, we have the comment
5328 * starting sequence line. This is saved for use if no matching
5329 * ending comment sequence is found, so that the error message
5330 * reflects the start of the comment.
5331 * Regina feature request: #508788
5333 if ( extnextline < 0 )
5334 nesting_start_line = nextline+1;
5335 extnextline = ++nextline ;
5336 extnextstart = 1; /* See Reference (*) below */
5337 repeated_nesting:
5338 while (pos < max)
5340 c = line[pos];
5341 if (c == '*') /* start of comment end? */
5343 if (line[pos+1] == '/')
5344 { /* pos+1 always exists, at least '\n' or '\0' */
5345 if (--nesting == 0)
5347 pos += 2;
5348 *dest++ = '`';
5349 *dest++ = '`';
5350 break;
5352 *dest++ = '`';
5353 pos++;
5356 else if (c == '/') /* start of new begin? */
5358 if (line[pos+1] == '*')
5360 nesting++;
5361 *dest++ = '`';
5362 pos++;
5365 *dest++ = '`';
5366 pos++;
5368 if (pos >= max)
5370 pos = 0;
5371 max = get_next_line( line, sizeof(line), yyin ) ;
5372 if (max < 0) /* empty input file */
5374 if ( nesting_start_line )
5375 parser_data.tline = nesting_start_line ; /* set tline for exiterror */
5376 else
5377 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
5378 exiterror( ERR_UNMATCHED_QUOTE, 1 ) ;
5379 return 0 ;
5381 /* This is a comment continuation. If the lexer will return
5382 * something it already has a valid tline/tstart pair.
5383 * The lexer will return the current token and on the NEXT
5384 * call it expects a valid nextline/nextstart pair.
5386 extnextline = ++nextline; extnextstart = 1;
5387 dest = line; /* we change comments in line */
5388 goto repeated_nesting;
5390 extnextstart = pos + 1;
5391 if (contline)
5392 { /* Exception! Have a look at: "x='y',{*\n\n*}\n'z'". This should
5393 * result in "x = 'y' 'z'".
5394 * We must parse until EOL and check for whitespaces and comments...
5396 while (pos < max)
5398 c = line[pos];
5399 if (!rx_isspace(c))
5401 if (c == '/')
5403 if (line[pos+1] == '*')
5405 pos += 2;
5406 nesting++;
5407 goto repeated_nesting;
5410 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
5411 exiterror( ERR_YACC_SYNTAX, 1, parser_data.tline ) ; /* standard error */
5413 pos++;
5415 /* All done, it was a continuation line. */
5416 /* contline will be resetted by: */
5417 return fill_buffer( buf, max_size ) ;
5420 /* We have something to play with. Run through the input and check for
5421 * strings including comments.
5423 squote = dquote = 0;
5424 line_comment = 0;
5425 while (pos < max)
5427 /* We use selective loops to reduce comparisons */
5428 if (nesting)
5431 c = line[pos];
5432 if (c == '*') /* start of comment end? */
5434 if (line[pos+1] == '/')
5435 { /* pos+1 always exists, at least '\n' or '\0' */
5436 if (--nesting == 0)
5438 pos += 2;
5439 *dest++ = '`';
5440 *dest++ = '`';
5441 break;
5443 pos++;
5446 else if (c == '/') /* start of new begin? */
5448 if (line[pos+1] == '*')
5450 nesting++;
5451 pos++;
5452 *dest++ = '`';
5455 pos++;
5456 *dest++ = '`';
5457 } while (pos < max);
5458 else if (squote)
5460 while ((c = line[pos]) != '\'')
5462 *dest++ = c;
5463 if (++pos >= max)
5465 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
5466 exiterror( ERR_UNMATCHED_QUOTE, 2 ) ;
5469 *dest++ = '\'';
5470 pos++;
5471 squote = 0;
5473 else if (dquote)
5475 while ((c = line[pos]) != '\"')
5477 *dest++ = c;
5478 if (++pos >= max)
5480 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
5481 exiterror( ERR_UNMATCHED_QUOTE, 3 ) ;
5484 *dest++ = '\"';
5485 pos++;
5486 dquote = 0;
5488 else if (line_comment)
5490 while ((c = line[pos]) >= ' ') /* not at end of line yet */
5492 *dest++ = '`';
5493 if (++pos >= max)
5495 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
5496 exiterror( ERR_UNMATCHED_QUOTE, 3 ) ;
5499 *dest++ = c; /* line terminator */
5500 pos++;
5501 line_comment = 0;
5503 else
5504 while (pos < max)
5505 switch (c = line[pos])
5507 case '\'':
5508 *dest++ = c ;
5509 squote = 1 ;
5510 pos++ ;
5511 goto outer_loop;
5513 case '\"':
5514 *dest++ = c ;
5515 dquote = 1 ;
5516 pos++ ;
5517 goto outer_loop;
5519 case '/':
5520 if (line[pos + 1] == '*')
5522 *dest++ = '`' ;
5523 *dest++ = '`' ;
5524 pos += 2 ;
5525 nesting++ ;
5526 goto outer_loop;
5528 else
5530 *dest++ = c;
5531 pos++ ;
5533 break ;
5535 case '-': /* line "--" comments */
5536 if (line[pos + 1] == '-')
5538 *dest++ = '`' ;
5539 *dest++ = '`' ;
5540 pos += 2 ;
5541 line_comment = 1 ;
5542 goto outer_loop;
5544 else
5546 *dest++ = c;
5547 pos++ ;
5549 break ;
5551 case '`':
5552 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
5553 exiterror( ERR_INVALID_CHAR, 1, c, c ) ;
5555 default:
5556 *dest++ = c;
5557 pos++ ;
5559 outer_loop:
5563 max = (int) (dest - line);
5565 /* Now we can replace a ',' [spaces|comments] '\n' with the line
5566 * continuation, but check for nesting first
5568 if (nesting)
5569 { /* Don't leave ANY spaces at EOL. That would confuse the lexer. */
5570 i = max - 1;
5571 while ((i >= 0) && rx_isspace(line[i]))
5572 i--;
5573 max = i + 1;
5574 /* Of course, there is one exception: line continuation */
5575 while ((i >= 0) && (line[i] == '`'))
5576 i-- ;
5577 if ((i >= 0) && (line[i] == ','))
5579 contline = 1;
5580 line[i] = ' ';
5581 max = i + 1;
5583 /* (Reference (*) )
5584 * At this point the lexer can't determine the nextline since we eat up
5585 * the \n. This leads to an incorrect count. But either the '`'-signs
5586 * are ignored or they are follows of a "token", a valid word.
5587 * Look at "say x;say y ``". This will cause the lexer to
5588 * return at least 4 tokens (SAY "x" ";" SAY) before "y" will be
5589 * returned. We can only set nextline/nextstart at "y".
5590 * Result: We set this pair at the start of the next call to
5591 * fill_buffer such that the next call to yylex will set the correct
5592 * values.
5595 else
5597 i = max - 1; /* on last valid char */
5598 while (i >= 0)
5600 if (!MY_ISBLANK(line[i]) && (line[i] != '\n'))
5601 break;
5602 i--;
5604 /* i now -1 or on last nonblank */
5605 if ((i >= 0) && (line[i] == ','))
5606 { /* FIXME: What shall be do with "," followed by EOF? */
5607 max = i + 1;
5608 line[i] = ' ';
5609 contline = 1;
5613 if (max_size > max)
5614 max_size = max;
5615 memcpy(buf, line, max_size);
5616 pos = max_size;
5617 return(max_size);
5621 /* yywrap MAY be called by the lexer is EOF encounters, see (f)lex docu */
5622 int yywrap( void )
5624 assert( do_level>= 0 ) ;
5625 if (do_level>0)
5627 parser_data.tline = linenr - 1 ; /* set tline for exiterror */
5628 exiterror( ERR_INCOMPLETE_STRUCT, 0 ) ;
5630 return 1 ;
5633 /******************************************************************************
5634 ******************************************************************************
5635 * global interface ***********************************************************
5636 ******************************************************************************
5637 *****************************************************************************/
5639 /* initalize all local and global values */
5640 static void init_it_all( tsd_t *TSD )
5642 #if defined(FLEX_SCANNER) && defined(FLEX_DEBUG)
5643 if (__reginadebug)
5644 yy_flex_debug = 1;
5645 else
5646 yy_flex_debug = 0;
5647 #endif
5648 inEOF = 0 ;
5649 in_numform = 0 ;
5650 next_numform = 0 ;
5651 expression_ended = 0 ;
5652 insert_abuttal = 0 ;
5653 obs_with = 0 ;
5654 in_do = 0 ;
5655 in_then = 0 ;
5656 inhibit_delayed_abuttal = 0 ;
5657 firstln = 0 ;
5658 in_parse = 0 ;
5659 in_trace = 0 ;
5660 itflag = 0 ;
5661 in_signal = 0 ;
5662 in_call = 0 ;
5663 in_address = not_in_address ;
5664 seek_with = no_seek_with ;
5665 kill_this_space = 0 ;
5666 ipretflag = 0 ;
5667 do_level = 0 ;
5668 singlequote = 0 ;
5669 doblequote = 0 ;
5670 cch = 0 ;
5671 bufptr = 0 ;
5672 cchmax = 0 ;
5673 ch = '\0',
5674 delayed_symbol = 0,
5675 contline = 0;
5676 extnextstart = 0;
5677 interptr = NULL ;
5678 interptrmax = NULL ;
5679 /* non-zero values */
5680 linenr = 1 ;
5681 nextline = 1;
5682 nextstart = 1;
5683 kill_next_space = 1 ;
5684 extnextline = -1 ;
5685 SymbolDetect = 0;
5687 memset(&parser_data, 0, sizeof(internal_parser_type));
5688 parser_data.TSD = TSD;
5691 /* fetch may only be called by fetch_protected. The parser and lexer are
5692 * already protected by regina_parser by fetch_protected.
5693 * This function prepares the lexer and parser and call them. The
5694 * result and all generated values are stored in result. The parser
5695 * tree isn't executed here.
5696 * Exactly fptr xor str must be non-null.
5698 static void fetch(tsd_t *TSD, FILE *fptr, const streng *str,
5699 internal_parser_type *result)
5701 init_it_all( TSD ) ;
5703 #ifdef FLEX_SCANNER
5704 yy_init = 1 ;
5705 yy_delete_buffer(YY_CURRENT_BUFFER) ;
5706 yyrestart(fptr) ;
5707 #else
5708 yysptr = yysbuf ;
5709 yyin = fptr ;
5710 #endif
5712 if (str != NULL)
5714 ipretflag = 1 ;
5715 cchmax = str->len ;
5716 interptr = str->value ;
5717 last_interptr = interptr ;
5718 interptrmax = interptr + cchmax ;
5719 parser_data.incore_source = str->value; /* fixes bug 972796 */
5720 result->incore_source = str->value;
5723 BEGIN comm ;
5724 NewProg();
5725 parser_data.result = __reginaparse();
5727 #ifdef FLEX_SCANNER
5728 yy_delete_buffer(YY_CURRENT_BUFFER) ;
5729 #else
5730 yysptr = yysbuf ;
5731 #endif
5732 yyin = NULL ;
5734 *result = parser_data;
5735 /* Some functions assume null values if parsing isn't running: */
5736 memset(&parser_data, 0, sizeof(internal_parser_type));
5739 /* This function serializes the parser/lexer requests of the process and
5740 * call fetch which will make the work. Look there.
5742 static void fetch_protected( tsd_t * volatile TSD, FILE *fptr,
5743 const streng *str, internal_parser_type *result )
5745 volatile int panicked = 0;
5746 tsd_t * volatile saved_TSD;
5748 THREAD_PROTECT( regina_parser )
5749 TSD->in_protected = 1;
5750 memset(&parser_data, 0, sizeof(internal_parser_type));
5752 saved_TSD = TSD; /* vars used until here */
5753 if ( setjmp( TSD->protect_return ) )
5755 TSD = saved_TSD; /* prevents bugs like 592393 */
5756 panicked = 1;
5758 else
5759 fetch( TSD, fptr, str, result );
5761 TSD->in_protected = 0;
5762 THREAD_UNPROTECT( regina_parser )
5764 if ( !panicked )
5765 return;
5768 * We got a fatal condition while fetching the input.
5770 memset(result, 0, sizeof(internal_parser_type));
5773 * FIXME: Currently no time to investigate it, but we have to do
5774 * a cleanup of the node and source lines of parser_data
5775 * here. Test this with
5776 * interpret '"a='
5777 * and with
5778 * interpret 'nop;"a='
5780 if ( TSD->delayed_error_type == PROTECTED_DelayedInterpreterExit )
5781 jump_interpreter_exit( TSD, TSD->expected_exit_error );
5782 if ( TSD->delayed_error_type == PROTECTED_DelayedRexxSignal )
5783 jump_rexx_signal( TSD );
5784 jump_script_exit( TSD, TSD->systeminfo->result );
5787 /* fetch_file reads in a REXX file from disk (or a pipe). It returns without
5788 * executing the program. The parsed tree with all needed values including
5789 * the result of the parsing is copied to result.
5790 * fptr remains open after this call.
5791 * type is either PARSE_ONLY or PARSE_AND_TIN. In the later case a tinned variant of the
5792 * parsing tree is created, too.
5794 void fetch_file(tsd_t *TSD, FILE *fptr, internal_parser_type *result)
5796 fetch_protected(TSD, fptr, NULL, result);
5799 /* fetch_string reads in a REXX macro from a streng. It returns without
5800 * executing the program. The parsed tree with all needed values including
5801 * the result of the parsing is copied to result.
5802 * type is either PARSE_ONLY or PARSE_AND_TIN. In the later case a tinned variant of the
5803 * parsing tree is created, too.
5804 * The function is typically called by an "INTERPRET" instruction.
5806 void fetch_string(tsd_t *TSD, const streng *str, internal_parser_type *result)
5808 fetch_protected(TSD, NULL, str, result);