1 /* A lexical scanner generated by flex */
3 /* Scanner skeleton version:
4 * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $
8 #define YY_FLEX_MAJOR_VERSION 2
9 #define YY_FLEX_MINOR_VERSION 5
15 /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
27 /* Use prototypes in function declarations. */
30 /* The "const" storage-class-modifier is valid. */
33 #else /* ! __cplusplus */
41 #endif /* ! __cplusplus */
60 #define YY_PROTO(proto) proto
62 #define YY_PROTO(proto) ()
65 /* Returned upon end-of-file. */
68 /* Promotes a possibly negative, possibly signed char to an unsigned
69 * integer for use as an array index. If the signed char is negative,
70 * we want to instead treat it as an 8-bit unsigned char, hence the
73 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
75 /* Enter a start condition. This macro really ought to take a parameter,
76 * but we do it the disgusting crufty way forced on us by the ()-less
77 * definition of BEGIN.
79 #define BEGIN yy_start = 1 + 2 *
81 /* Translate the current start state into a value that can be later handed
82 * to BEGIN to return to the state. The YYSTATE alias is for lex
85 #define YY_START ((yy_start - 1) / 2)
86 #define YYSTATE YY_START
88 /* Action number for EOF rule of a given start state. */
89 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
91 /* Special action meaning "start processing a new file". */
92 #define YY_NEW_FILE yyrestart( yyin )
94 #define YY_END_OF_BUFFER_CHAR 0
96 /* Size of default input buffer. */
97 #define YY_BUF_SIZE 16384
99 typedef struct yy_buffer_state *YY_BUFFER_STATE;
102 extern FILE *yyin, *yyout;
104 #define EOB_ACT_CONTINUE_SCAN 0
105 #define EOB_ACT_END_OF_FILE 1
106 #define EOB_ACT_LAST_MATCH 2
108 /* The funky do-while in the following #define is used to turn the definition
109 * int a single C statement (which needs a semi-colon terminator). This
110 * avoids problems with code like:
112 * if ( condition_holds )
115 * do_something_else();
117 * Prior to using the do-while the compiler would get upset at the
118 * "else" because it interpreted the "if" statement as being all
119 * done when it reached the ';' after the yyless() call.
122 /* Return all but the first 'n' matched characters back to the input stream. */
127 /* Undo effects of setting up yytext. */ \
128 *yy_cp = yy_hold_char; \
129 YY_RESTORE_YY_MORE_OFFSET \
130 yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
131 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
135 #define unput(c) yyunput( c, yytext_ptr )
137 /* The following is because we cannot portably get our hands on size_t
138 * (without autoconf's help, which isn't available because we want
139 * flex-generated scanners to compile on their own).
141 typedef unsigned int yy_size_t;
144 struct yy_buffer_state
148 char *yy_ch_buf; /* input buffer */
149 char *yy_buf_pos; /* current position in input buffer */
151 /* Size of input buffer in bytes, not including room for EOB
154 yy_size_t yy_buf_size;
156 /* Number of characters read into yy_ch_buf, not including EOB
161 /* Whether we "own" the buffer - i.e., we know we created it,
162 * and can realloc() it to grow it, and should free() it to
165 int yy_is_our_buffer;
167 /* Whether this is an "interactive" input source; if so, and
168 * if we're using stdio for input, then we want to use getc()
169 * instead of fread(), to make sure we stop fetching input after
172 int yy_is_interactive;
174 /* Whether we're considered to be at the beginning of a line.
175 * If so, '^' rules will be active on the next match, otherwise
180 /* Whether to try to fill the input buffer when we reach the
185 int yy_buffer_status;
186 #define YY_BUFFER_NEW 0
187 #define YY_BUFFER_NORMAL 1
188 /* When an EOF's been seen but there's still some text to process
189 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
190 * shouldn't try reading from the input source any more. We might
191 * still have a bunch of tokens to match, though, because of
192 * possible backing-up.
194 * When we actually see the EOF, we change the status to "new"
195 * (via yyrestart()), so that the user can continue scanning by
196 * just pointing yyin at a new input file.
198 #define YY_BUFFER_EOF_PENDING 2
201 static YY_BUFFER_STATE yy_current_buffer = 0;
203 /* We provide macros for accessing buffer states in case in the
204 * future we want to put the buffer states in a more general
207 #define YY_CURRENT_BUFFER yy_current_buffer
210 /* yy_hold_char holds the character lost when yytext is formed. */
211 static char yy_hold_char;
213 static int yy_n_chars; /* number of characters read into yy_ch_buf */
218 /* Points to current character in buffer. */
219 static char *yy_c_buf_p = (char *) 0;
220 static int yy_init = 1; /* whether we need to initialize */
221 static int yy_start = 0; /* start state number */
223 /* Flag which is used to allow yywrap()'s to do buffer switches
224 * instead of setting up a fresh yyin. A bit of a hack ...
226 static int yy_did_buffer_switch_on_eof;
228 void yyrestart YY_PROTO(( FILE *input_file ));
230 void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
231 void yy_load_buffer_state YY_PROTO(( void ));
232 YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
233 void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
234 void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
235 void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
236 #define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
238 YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
239 YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
240 YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
242 static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
243 static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t ));
244 static void yy_flex_free YY_PROTO(( void * ));
246 #define yy_new_buffer yy_create_buffer
248 #define yy_set_interactive(is_interactive) \
250 if ( ! yy_current_buffer ) \
251 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
252 yy_current_buffer->yy_is_interactive = is_interactive; \
255 #define yy_set_bol(at_bol) \
257 if ( ! yy_current_buffer ) \
258 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
259 yy_current_buffer->yy_at_bol = at_bol; \
262 #define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
265 #define YY_USES_REJECT
266 typedef unsigned char YY_CHAR;
267 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
268 typedef int yy_state_type;
270 #define yytext_ptr yytext
272 static yy_state_type yy_get_previous_state YY_PROTO(( void ));
273 static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
274 static int yy_get_next_buffer YY_PROTO(( void ));
275 static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
277 /* Done after the current pattern has been matched and before the
278 * corresponding action - sets up yytext.
280 #define YY_DO_BEFORE_ACTION \
281 yytext_ptr = yy_bp; \
282 yyleng = (int) (yy_cp - yy_bp); \
283 yy_hold_char = *yy_cp; \
287 #define YY_NUM_RULES 120
288 #define YY_END_OF_BUFFER 121
289 static yyconst short int yy_acclist[651] =
291 121, 117, 120, 116, 117, 120, 1, 118, 120, 117,
292 118, 120, 117, 120, 117, 120, 117, 120, 105, 117,
293 120, 105, 117, 120, 117, 120, 109, 117, 120, 109,
294 117, 120, 109, 117, 120, 109, 117, 120, 116, 117,
295 120, 117, 120, 117, 120, 109, 117, 120, 109, 117,
296 120, 29, 117, 120, 1, 30, 118, 120, 29, 117,
297 118, 120, 29, 117, 120, 29, 117, 120, 29, 117,
298 120, 53, 117, 120, 1, 54, 118, 120, 53, 117,
299 118, 120, 45, 53, 117, 120, 53, 117, 120, 53,
300 117, 120, 53, 117, 120, 51, 53, 117, 120, 52,
302 53, 117, 120, 53, 117, 120, 53, 117, 120, 49,
303 117, 120, 1, 50, 118, 120, 49, 117, 118, 120,
304 48, 49, 117, 120, 49, 117, 120, 49, 117, 120,
305 62, 117, 120, 117, 120, 109, 117, 120, 109, 117,
306 120, 109, 117, 120, 113, 117, 120, 65, 117, 120,
307 1, 66, 118, 120, 65, 117, 118, 120, 64, 65,
308 117, 120, 65, 117, 120, 65, 117, 120, 117, 120,
309 117, 120, 117, 120, 117, 120, 109, 117, 120, 109,
310 117, 120, 109, 117, 120, 109, 117, 120, 109, 117,
311 120, 109, 117, 120, 109, 117, 120, 109, 117, 120,
313 109, 117, 120, 109, 117, 120, 109, 117, 120, 109,
314 117, 120, 114, 117, 120, 115, 117, 120, 102, 117,
315 120, 46, 117, 120, 103, 117, 120, 104, 117, 120,
316 117, 120, 109, 117, 120, 109, 117, 120, 109, 117,
317 120, 109, 117, 120, 109, 117, 120, 109, 117, 120,
318 109, 117, 120, 109, 117, 120, 109, 117, 120, 109,
319 117, 120, 109, 117, 120, 109, 117, 120, 10, 117,
320 120, 10, 117, 118, 120, 10, 117, 120, 10, 117,
321 120, 10, 117, 120, 10, 117, 120, 15, 117, 120,
322 15, 117, 118, 120, 15, 117, 120, 15, 117, 120,
324 15, 117, 120, 15, 117, 120, 18, 117, 120, 18,
325 117, 118, 120, 18, 117, 120, 18, 117, 120, 105,
326 23, 105, 105, 108, 109, 109, 109, 109, 109, 36,
327 109, 109, 28, 24, 44, 37, 47, 25, 109, 109,
328 109, 63, 26, 112, 111, 109, 109, 109, 109, 109,
329 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
330 109, 109, 109, 27, 109, 109, 109, 109, 109, 109,
331 109, 109, 109, 109, 109, 109, 9, 7, 14, 13,
332 11, 12, 14, 17, 16, 110, 110, 105, 3, 105,
333 105, 108, 106, 107, 109, 109, 109, 109, 31, 35,
335 109, 109, 42, 38, 40, 19, 20, 109, 109, 109,
336 80, 21, 109, 109, 109, 109, 109, 109, 109, 75,
337 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
338 109, 109, 109, 22, 109, 109, 109, 109, 109, 109,
339 109, 109, 109, 109, 109, 109, 12, 108, 106, 107,
340 109, 57, 109, 109, 109, 32, 33, 34, 109, 109,
341 43, 39, 41, 109, 61, 109, 60, 109, 6, 109,
342 78, 109, 109, 109, 109, 70, 109, 109, 73, 109,
343 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
344 109, 67, 109, 109, 109, 109, 70, 109, 109, 109,
346 109, 90, 109, 109, 109, 109, 96, 109, 8, 108,
347 55, 109, 56, 109, 58, 109, 109, 109, 109, 60,
348 109, 79, 109, 109, 76, 109, 109, 109, 109, 109,
349 109, 74, 109, 109, 109, 109, 69, 109, 109, 109,
350 91, 109, 109, 109, 109, 95, 109, 109, 109, 109,
351 109, 109, 109, 109, 109, 77, 109, 109, 109, 109,
352 109, 81, 109, 87, 109, 71, 109, 68, 109, 109,
353 109, 109, 109, 109, 109, 109, 109, 109, 109, 4,
354 109, 109, 109, 109, 109, 82, 109, 109, 109, 109,
355 86, 109, 109, 109, 109, 109, 92, 109, 93, 109,
357 109, 109, 109, 109, 85, 109, 109, 88, 109, 89,
358 109, 109, 72, 109, 109, 109, 109, 109, 109, 109,
359 84, 109, 83, 109, 109, 109, 98, 109, 109, 109,
360 109, 4, 2, 100, 109, 109, 97, 109, 109, 99,
361 109, 119, 5, 109, 101, 109, 109, 94, 109, 59
364 static yyconst short int yy_accept[552] =
366 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
367 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
368 1, 1, 1, 1, 1, 2, 4, 7, 10, 13,
369 15, 17, 19, 22, 25, 27, 30, 33, 36, 39,
370 42, 44, 46, 49, 52, 55, 59, 63, 66, 69,
371 72, 75, 79, 83, 87, 90, 93, 96, 100, 104,
372 107, 110, 113, 117, 121, 125, 128, 131, 134, 136,
373 139, 142, 145, 148, 151, 155, 159, 163, 166, 169,
374 171, 173, 175, 177, 180, 183, 186, 189, 192, 195,
375 198, 201, 204, 207, 210, 213, 216, 219, 222, 225,
377 228, 231, 233, 236, 239, 242, 245, 248, 251, 254,
378 257, 260, 263, 266, 269, 272, 276, 279, 282, 285,
379 288, 291, 295, 298, 301, 304, 307, 310, 314, 317,
380 320, 320, 320, 321, 322, 322, 322, 323, 323, 323,
381 324, 325, 326, 326, 327, 328, 329, 330, 330, 330,
382 330, 330, 330, 330, 330, 330, 331, 332, 333, 334,
383 334, 334, 334, 334, 334, 335, 335, 336, 336, 336,
384 337, 338, 339, 339, 340, 341, 342, 343, 343, 344,
385 344, 345, 345, 345, 346, 347, 348, 349, 350, 351,
386 352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
388 362, 363, 364, 365, 365, 366, 367, 368, 369, 370,
389 371, 372, 373, 374, 375, 376, 377, 378, 378, 378,
390 378, 379, 379, 380, 380, 380, 381, 382, 382, 384,
391 385, 386, 387, 387, 388, 389, 389, 390, 391, 392,
392 393, 393, 394, 395, 396, 397, 398, 399, 399, 399,
393 399, 399, 399, 400, 400, 400, 401, 401, 401, 402,
394 403, 403, 404, 404, 404, 404, 405, 406, 406, 407,
395 407, 407, 408, 409, 410, 411, 412, 412, 412, 413,
396 413, 413, 414, 415, 416, 417, 418, 419, 420, 422,
397 423, 424, 425, 426, 427, 428, 429, 430, 431, 432,
399 433, 434, 434, 435, 436, 437, 438, 439, 440, 441,
400 442, 443, 444, 445, 446, 447, 447, 448, 448, 449,
401 450, 450, 451, 451, 452, 454, 455, 456, 456, 456,
402 456, 456, 457, 457, 458, 459, 459, 460, 461, 461,
403 462, 463, 464, 464, 465, 467, 469, 469, 470, 471,
404 473, 474, 475, 476, 478, 479, 481, 482, 483, 484,
405 485, 486, 487, 488, 489, 490, 491, 492, 494, 495,
406 496, 497, 499, 500, 501, 502, 504, 505, 506, 507,
407 509, 509, 510, 510, 510, 511, 513, 515, 517, 517,
408 517, 517, 517, 517, 517, 518, 519, 519, 519, 520,
410 522, 524, 525, 527, 528, 529, 530, 531, 532, 534,
411 535, 536, 537, 539, 540, 541, 543, 544, 545, 546,
412 548, 549, 550, 551, 552, 552, 552, 552, 552, 552,
413 552, 553, 554, 554, 554, 555, 556, 558, 559, 560,
414 561, 562, 564, 566, 568, 570, 571, 572, 573, 574,
415 575, 576, 577, 578, 579, 580, 580, 580, 581, 581,
416 581, 582, 583, 583, 583, 584, 585, 586, 588, 589,
417 590, 591, 593, 594, 595, 596, 597, 599, 601, 602,
418 603, 603, 603, 603, 603, 603, 604, 605, 605, 605,
419 607, 608, 610, 612, 613, 615, 616, 617, 618, 619,
421 620, 621, 621, 621, 621, 621, 621, 621, 621, 621,
422 621, 621, 623, 625, 626, 627, 629, 630, 631, 632,
423 632, 633, 633, 633, 633, 633, 634, 634, 636, 637,
424 639, 640, 642, 642, 642, 643, 643, 643, 644, 645,
425 647, 647, 647, 648, 648, 648, 650, 650, 650, 651,
429 static yyconst int yy_ec[256] =
431 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
432 1, 4, 5, 1, 1, 1, 1, 1, 1, 1,
433 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
434 1, 6, 1, 7, 8, 1, 9, 1, 10, 11,
435 12, 13, 1, 1, 1, 14, 15, 16, 17, 18,
436 18, 18, 18, 18, 18, 19, 19, 20, 1, 21,
437 1, 22, 1, 1, 23, 23, 23, 23, 24, 23,
438 25, 25, 26, 25, 25, 25, 25, 25, 25, 25,
439 25, 27, 28, 25, 25, 25, 25, 25, 25, 25,
440 29, 30, 31, 1, 32, 1, 33, 34, 35, 36,
442 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
443 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
444 57, 25, 58, 1, 59, 1, 1, 1, 1, 1,
445 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
446 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
447 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
448 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
449 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
450 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
451 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
453 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
454 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
455 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
456 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
457 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
461 static yyconst int yy_meta[60] =
463 1, 2, 3, 4, 4, 2, 1, 1, 1, 1,
464 1, 1, 1, 1, 1, 5, 5, 5, 5, 6,
465 1, 1, 7, 7, 8, 8, 8, 8, 1, 1,
466 9, 8, 7, 7, 7, 7, 7, 7, 8, 8,
467 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
468 8, 8, 8, 8, 8, 8, 8, 1, 1
471 static yyconst short int yy_base[585] =
473 0, 58, 58, 65, 69, 126, 80, 85, 74, 87,
474 93, 113, 172, 1318, 131, 136, 225, 1317, 100, 147,
475 135, 159, 175, 190, 1324, 1327, 1327, 1327, 1327, 1293,
476 225, 62, 231, 237, 0, 1302, 42, 150, 60, 232,
477 63, 164, 156, 77, 1327, 1327, 1327, 1306, 173, 1292,
478 1327, 1327, 1327, 1327, 245, 104, 0, 1327, 1327, 279,
479 1260, 1327, 1327, 1327, 1327, 0, 262, 1327, 144, 110,
480 161, 143, 1327, 1327, 1327, 1327, 1327, 0, 282, 275,
481 214, 279, 283, 171, 285, 263, 182, 138, 219, 266,
482 179, 287, 295, 270, 292, 1327, 1327, 1327, 1327, 1327,
484 1327, 296, 297, 298, 311, 288, 170, 310, 226, 308,
485 326, 329, 299, 307, 1327, 1327, 1303, 351, 359, 360,
486 1327, 1327, 1302, 365, 366, 371, 1313, 1312, 373, 377,
487 1304, 1303, 373, 1327, 1309, 377, 383, 390, 0, 397,
488 1291, 1290, 1289, 365, 302, 332, 385, 417, 1258, 1270,
489 418, 1265, 373, 375, 310, 1327, 198, 402, 1327, 0,
490 1295, 380, 1294, 1293, 1327, 1299, 1327, 428, 1255, 1327,
491 1327, 1327, 1297, 408, 406, 409, 1327, 1285, 1285, 1294,
492 426, 430, 1265, 1266, 62, 435, 437, 412, 420, 432,
493 416, 434, 436, 237, 440, 444, 446, 451, 439, 454,
495 456, 455, 1327, 1291, 457, 459, 460, 463, 464, 468,
496 471, 472, 479, 480, 474, 481, 1327, 506, 520, 525,
497 1327, 530, 1327, 512, 532, 537, 1327, 1278, 1327, 1327,
498 1327, 1327, 1282, 1281, 532, 1287, 1327, 536, 0, 1269,
499 0, 1268, 1267, 517, 521, 522, 524, 1249, 1236, 1238,
500 1239, 1224, 1327, 1248, 1222, 1327, 1221, 1237, 526, 536,
501 1250, 1327, 1266, 1265, 1264, 1327, 1327, 1270, 1327, 1237,
502 1268, 1327, 537, 538, 540, 1327, 559, 1267, 1327, 1238,
503 554, 544, 554, 547, 555, 556, 557, 559, 1248, 560,
504 558, 561, 562, 567, 566, 573, 564, 574, 581, 575,
506 484, 1264, 1327, 576, 583, 580, 585, 589, 592, 598,
507 603, 587, 605, 609, 611, 634, 1327, 639, 1246, 1245,
508 1244, 1243, 1242, 612, 1241, 614, 615, 1227, 1206, 1221,
509 451, 1327, 1221, 1327, 1327, 1202, 623, 624, 1229, 1327,
510 1327, 1327, 1210, 627, 1233, 1232, 647, 1327, 631, 1231,
511 632, 636, 637, 1230, 638, 1229, 639, 640, 642, 648,
512 641, 649, 654, 651, 650, 655, 652, 1228, 664, 657,
513 660, 672, 675, 677, 679, 1227, 680, 682, 683, 1226,
514 704, 1327, 715, 706, 1225, 1224, 1223, 1222, 1197, 1199,
515 717, 1192, 1201, 1204, 694, 691, 0, 1183, 696, 705,
517 1215, 708, 1214, 709, 710, 711, 712, 714, 1213, 719,
518 716, 717, 1212, 720, 722, 1211, 724, 723, 726, 733,
519 728, 731, 734, 738, 1186, 1179, 771, 1180, 1177, 1168,
520 744, 737, 1188, 1175, 739, 751, 1182, 759, 756, 748,
521 752, 1171, 1156, 1155, 1154, 760, 755, 762, 763, 774,
522 776, 778, 781, 785, 782, 1112, 1087, 819, 751, 1076,
523 787, 788, 1085, 1053, 790, 791, 792, 1062, 786, 793,
524 796, 1053, 798, 813, 799, 800, 1044, 1029, 804, 820,
525 944, 927, 970, 929, 935, 842, 844, 834, 852, 954,
526 829, 953, 951, 839, 919, 821, 840, 841, 843, 845,
528 847, 866, 868, 931, 853, 851, 880, 887, 891, 899,
529 864, 867, 861, 853, 859, 860, 863, 864, 893, 869,
530 1327, 469, 917, 908, 925, 1327, 907, 417, 901, 415,
531 911, 304, 285, 944, 1327, 935, 933, 1327, 908, 238,
532 178, 946, 912, 127, 940, 117, 964, 966, 1327, 1327,
533 983, 992, 1001, 1010, 1019, 1028, 1037, 1046, 1049, 1053,
534 1061, 1070, 1079, 1084, 1093, 1102, 1107, 1110, 1113, 1121,
535 1130, 1139, 1148, 1153, 1162, 1170, 1172, 1176, 1180, 1187,
536 1191, 1199, 1208, 1217
539 static yyconst short int yy_def[585] =
541 550, 1, 551, 551, 552, 552, 553, 553, 1, 1,
542 554, 554, 1, 13, 1, 1, 1, 17, 555, 555,
543 556, 556, 557, 557, 550, 550, 550, 550, 550, 558,
544 550, 550, 550, 550, 559, 560, 560, 560, 560, 550,
545 550, 550, 560, 560, 550, 550, 550, 550, 550, 550,
546 550, 550, 550, 550, 550, 550, 561, 550, 550, 550,
547 550, 550, 550, 550, 550, 562, 550, 550, 550, 560,
548 560, 560, 550, 550, 550, 550, 550, 563, 550, 550,
549 550, 559, 564, 560, 560, 560, 560, 560, 560, 560,
550 560, 560, 560, 560, 560, 550, 550, 550, 550, 550,
552 550, 550, 560, 560, 560, 560, 560, 560, 560, 560,
553 560, 560, 560, 560, 550, 550, 550, 550, 550, 550,
554 550, 550, 550, 550, 550, 550, 550, 550, 550, 550,
555 550, 565, 550, 550, 566, 550, 550, 550, 567, 550,
556 568, 560, 569, 560, 560, 560, 560, 550, 550, 550,
557 550, 550, 550, 550, 550, 550, 560, 560, 550, 570,
558 550, 550, 550, 550, 550, 571, 550, 550, 550, 550,
559 550, 550, 572, 560, 560, 560, 550, 550, 550, 573,
560 550, 550, 574, 550, 560, 560, 560, 560, 560, 560,
561 560, 560, 560, 560, 560, 560, 560, 560, 560, 560,
563 560, 560, 550, 575, 560, 560, 560, 560, 560, 560,
564 560, 560, 560, 560, 560, 560, 550, 550, 550, 550,
565 550, 576, 550, 550, 550, 550, 550, 550, 550, 550,
566 550, 550, 550, 550, 550, 566, 550, 550, 567, 568,
567 577, 578, 579, 560, 560, 560, 560, 550, 550, 550,
568 550, 550, 550, 550, 550, 550, 550, 550, 560, 560,
569 550, 550, 550, 550, 550, 550, 550, 571, 550, 550,
570 572, 550, 560, 560, 560, 550, 550, 573, 550, 574,
571 564, 560, 560, 560, 560, 560, 560, 560, 560, 560,
572 560, 560, 560, 560, 560, 560, 560, 560, 560, 560,
574 560, 575, 550, 560, 560, 560, 560, 560, 560, 560,
575 560, 560, 560, 560, 560, 580, 550, 550, 581, 578,
576 550, 579, 569, 560, 560, 560, 560, 550, 550, 550,
577 550, 550, 550, 550, 550, 550, 560, 560, 550, 550,
578 550, 550, 550, 560, 560, 560, 550, 550, 560, 560,
579 560, 560, 560, 560, 560, 560, 560, 560, 560, 560,
580 560, 560, 560, 560, 560, 560, 560, 560, 560, 560,
581 560, 560, 560, 560, 560, 560, 560, 560, 560, 560,
582 550, 550, 580, 550, 581, 560, 560, 560, 550, 550,
583 550, 550, 550, 550, 560, 560, 582, 550, 560, 560,
585 560, 560, 560, 560, 560, 560, 560, 560, 560, 560,
586 560, 560, 560, 560, 560, 560, 560, 560, 560, 560,
587 560, 560, 560, 560, 550, 550, 550, 550, 550, 550,
588 560, 560, 550, 550, 560, 560, 560, 560, 560, 560,
589 560, 560, 560, 560, 560, 560, 560, 560, 560, 560,
590 560, 560, 560, 560, 560, 550, 550, 550, 550, 550,
591 560, 560, 550, 550, 560, 560, 560, 560, 560, 560,
592 560, 560, 560, 560, 560, 560, 560, 560, 560, 560,
593 550, 550, 550, 550, 550, 560, 560, 550, 550, 560,
594 560, 560, 560, 560, 560, 560, 560, 560, 560, 560,
596 560, 550, 550, 583, 550, 550, 550, 550, 550, 550,
597 550, 560, 560, 560, 560, 560, 560, 560, 560, 583,
598 550, 550, 550, 550, 550, 550, 584, 560, 560, 560,
599 560, 560, 550, 550, 550, 550, 584, 550, 560, 560,
600 550, 550, 560, 550, 550, 560, 550, 550, 550, 0,
601 550, 550, 550, 550, 550, 550, 550, 550, 550, 550,
602 550, 550, 550, 550, 550, 550, 550, 550, 550, 550,
603 550, 550, 550, 550, 550, 550, 550, 550, 550, 550,
607 static yyconst short int yy_nxt[1387] =
609 26, 27, 28, 27, 29, 27, 26, 26, 26, 30,
610 26, 26, 26, 31, 32, 33, 34, 34, 34, 35,
611 26, 26, 36, 36, 36, 36, 36, 36, 26, 26,
612 26, 36, 36, 36, 37, 36, 38, 39, 36, 36,
613 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
614 36, 36, 36, 36, 36, 36, 36, 26, 26, 40,
615 46, 143, 47, 40, 151, 41, 42, 46, 151, 47,
616 48, 52, 49, 53, 134, 54, 135, 48, 55, 143,
617 68, 143, 63, 56, 64, 144, 65, 63, 69, 64,
618 50, 65, 67, 68, 41, 75, 143, 76, 57, 77,
620 282, 69, 28, 147, 116, 43, 152, 44, 70, 66,
621 36, 71, 117, 158, 66, 75, 165, 76, 166, 77,
622 79, 70, 78, 36, 71, 72, 58, 59, 52, 143,
623 53, 73, 54, 60, 61, 55, 143, 28, 72, 122,
624 56, 98, 78, 41, 73, 26, 98, 123, 118, 28,
625 26, 116, 118, 174, 119, 57, 172, 143, 173, 120,
626 124, 28, 143, 122, 124, 36, 125, 36, 36, 143,
627 36, 126, 36, 36, 151, 143, 257, 28, 151, 128,
628 143, 191, 176, 58, 59, 80, 81, 129, 96, 143,
629 143, 82, 28, 96, 128, 145, 153, 130, 143, 146,
631 83, 143, 129, 154, 84, 157, 85, 86, 87, 88,
632 175, 155, 89, 209, 544, 90, 152, 143, 91, 92,
633 185, 156, 93, 72, 94, 95, 179, 190, 180, 96,
634 97, 99, 194, 148, 259, 100, 101, 148, 143, 102,
635 133, 133, 133, 133, 136, 143, 137, 137, 137, 138,
636 136, 161, 140, 140, 140, 140, 143, 143, 103, 104,
637 105, 106, 107, 151, 192, 89, 212, 151, 90, 108,
638 109, 110, 111, 291, 162, 112, 113, 94, 114, 149,
639 168, 150, 143, 151, 168, 143, 139, 151, 178, 143,
640 133, 133, 133, 133, 181, 181, 181, 181, 182, 182,
642 182, 182, 163, 164, 143, 152, 143, 143, 203, 189,
643 204, 143, 193, 184, 143, 200, 143, 143, 143, 169,
644 541, 143, 152, 143, 186, 152, 143, 143, 187, 143,
645 143, 188, 201, 208, 197, 198, 195, 186, 202, 196,
646 205, 213, 210, 206, 188, 143, 199, 207, 143, 257,
647 211, 143, 218, 202, 245, 216, 218, 189, 214, 258,
648 151, 220, 221, 219, 151, 222, 224, 151, 197, 215,
649 224, 151, 226, 227, 217, 230, 226, 225, 151, 230,
650 199, 246, 151, 228, 143, 229, 263, 231, 235, 235,
651 235, 235, 238, 238, 238, 238, 136, 244, 137, 137,
653 137, 138, 152, 136, 143, 138, 138, 138, 138, 152,
654 136, 254, 140, 140, 140, 140, 251, 247, 148, 151,
655 152, 143, 148, 151, 252, 143, 255, 143, 143, 168,
656 253, 143, 256, 168, 143, 143, 143, 264, 265, 143,
657 273, 181, 181, 181, 181, 182, 182, 182, 182, 275,
658 260, 143, 274, 143, 143, 143, 143, 285, 143, 143,
659 184, 152, 288, 143, 149, 143, 150, 283, 169, 284,
660 143, 152, 286, 143, 143, 143, 143, 294, 143, 143,
661 292, 290, 143, 143, 287, 289, 293, 143, 297, 296,
662 143, 143, 295, 143, 298, 301, 308, 306, 143, 143,
664 143, 533, 392, 143, 299, 300, 311, 218, 253, 304,
665 288, 218, 314, 224, 305, 307, 310, 224, 219, 368,
666 312, 220, 221, 309, 225, 222, 220, 221, 315, 313,
667 220, 220, 221, 226, 227, 220, 143, 226, 318, 227,
668 143, 143, 318, 143, 228, 143, 317, 235, 235, 235,
669 235, 238, 238, 238, 238, 143, 143, 143, 337, 143,
670 347, 348, 327, 143, 347, 325, 143, 324, 326, 182,
671 182, 182, 182, 143, 143, 143, 143, 143, 143, 143,
672 143, 143, 345, 143, 184, 143, 143, 344, 338, 353,
673 346, 355, 143, 143, 143, 143, 349, 351, 356, 143,
675 143, 354, 143, 350, 143, 352, 143, 357, 143, 359,
676 361, 143, 371, 360, 358, 362, 364, 143, 363, 370,
677 365, 366, 143, 377, 143, 369, 367, 373, 143, 372,
678 143, 143, 374, 143, 143, 381, 382, 378, 375, 381,
679 318, 227, 143, 143, 318, 376, 143, 380, 347, 348,
680 143, 143, 347, 384, 379, 143, 143, 143, 143, 143,
681 143, 143, 386, 387, 396, 388, 395, 143, 143, 143,
682 143, 143, 405, 143, 143, 399, 143, 346, 406, 143,
683 402, 408, 400, 143, 407, 412, 410, 401, 404, 403,
684 411, 143, 417, 414, 143, 413, 143, 416, 143, 143,
686 409, 143, 143, 419, 415, 381, 382, 381, 382, 381,
687 143, 381, 418, 143, 423, 143, 381, 382, 427, 411,
688 381, 421, 427, 422, 143, 420, 424, 143, 143, 143,
689 143, 143, 435, 143, 384, 143, 143, 431, 143, 143,
690 432, 143, 143, 143, 437, 143, 441, 143, 442, 438,
691 143, 444, 143, 143, 447, 448, 143, 143, 143, 436,
692 440, 439, 443, 143, 451, 446, 449, 143, 445, 455,
693 143, 143, 427, 462, 143, 143, 427, 450, 143, 143,
694 452, 143, 143, 453, 465, 454, 458, 458, 458, 458,
695 461, 466, 468, 143, 467, 143, 471, 143, 472, 469,
697 143, 143, 484, 470, 143, 143, 143, 143, 256, 143,
698 143, 143, 143, 473, 474, 143, 479, 143, 143, 143,
699 483, 486, 477, 143, 483, 478, 491, 476, 492, 494,
700 475, 495, 143, 480, 458, 458, 458, 458, 487, 143,
701 143, 490, 493, 507, 497, 508, 498, 507, 143, 508,
702 509, 510, 510, 511, 496, 500, 499, 511, 143, 143,
703 143, 143, 143, 143, 143, 512, 143, 507, 514, 508,
704 527, 507, 143, 508, 513, 521, 501, 516, 143, 143,
705 143, 507, 143, 143, 527, 507, 143, 522, 508, 528,
706 517, 529, 508, 515, 519, 523, 523, 523, 523, 530,
708 255, 518, 524, 524, 524, 524, 525, 525, 525, 525,
709 526, 531, 143, 538, 525, 525, 525, 525, 534, 535,
710 143, 536, 534, 524, 524, 524, 524, 143, 538, 532,
711 143, 143, 523, 523, 523, 523, 526, 521, 143, 538,
712 525, 525, 525, 525, 539, 534, 535, 540, 546, 534,
713 542, 542, 542, 542, 538, 547, 547, 547, 547, 545,
714 543, 542, 542, 542, 542, 548, 549, 548, 549, 548,
715 143, 548, 143, 143, 506, 505, 504, 503, 502, 547,
716 547, 547, 547, 45, 45, 45, 45, 45, 45, 45,
717 45, 45, 51, 51, 51, 51, 51, 51, 51, 51,
719 51, 62, 62, 62, 62, 62, 62, 62, 62, 62,
720 74, 74, 74, 74, 74, 74, 74, 74, 74, 115,
721 115, 115, 115, 115, 115, 115, 115, 115, 121, 121,
722 121, 121, 121, 121, 121, 121, 121, 127, 127, 127,
723 127, 127, 127, 127, 127, 127, 131, 131, 143, 131,
724 131, 131, 131, 131, 131, 141, 141, 142, 142, 142,
725 142, 167, 167, 143, 167, 167, 167, 167, 167, 167,
726 171, 171, 143, 171, 171, 171, 171, 171, 171, 177,
727 177, 143, 177, 177, 177, 177, 177, 177, 183, 489,
728 183, 183, 183, 233, 233, 488, 233, 233, 233, 233,
730 233, 233, 236, 236, 236, 236, 236, 236, 236, 236,
731 236, 239, 485, 239, 240, 240, 240, 240, 243, 243,
732 243, 261, 261, 482, 261, 261, 261, 261, 261, 261,
733 268, 268, 268, 268, 268, 268, 268, 268, 268, 271,
734 271, 271, 271, 271, 271, 271, 271, 271, 278, 278,
735 278, 278, 278, 278, 278, 278, 278, 280, 481, 280,
736 280, 280, 302, 302, 302, 302, 302, 302, 302, 302,
737 302, 316, 316, 143, 143, 143, 316, 316, 319, 319,
738 320, 320, 320, 320, 322, 322, 322, 322, 383, 383,
739 143, 383, 383, 383, 383, 385, 385, 385, 385, 433,
741 433, 143, 433, 433, 433, 433, 433, 433, 520, 520,
742 464, 463, 520, 520, 520, 520, 520, 537, 537, 460,
743 537, 537, 537, 537, 537, 537, 459, 252, 457, 456,
744 143, 143, 143, 143, 143, 434, 430, 429, 428, 426,
745 425, 143, 143, 143, 241, 143, 143, 143, 143, 143,
746 143, 143, 143, 398, 397, 394, 393, 391, 390, 389,
747 143, 550, 323, 242, 321, 241, 303, 143, 184, 279,
748 272, 343, 269, 342, 341, 340, 339, 336, 335, 334,
749 333, 332, 331, 330, 329, 328, 323, 321, 241, 237,
750 232, 232, 317, 303, 281, 184, 279, 277, 276, 272,
752 270, 269, 267, 266, 262, 250, 249, 248, 242, 143,
753 241, 237, 234, 232, 230, 230, 223, 217, 170, 160,
754 159, 143, 132, 550, 41, 41, 25, 550, 550, 550,
755 550, 550, 550, 550, 550, 550, 550, 550, 550, 550,
756 550, 550, 550, 550, 550, 550, 550, 550, 550, 550,
757 550, 550, 550, 550, 550, 550, 550, 550, 550, 550,
758 550, 550, 550, 550, 550, 550, 550, 550, 550, 550,
759 550, 550, 550, 550, 550, 550, 550, 550, 550, 550,
760 550, 550, 550, 550, 550, 550
763 static yyconst short int yy_chk[1387] =
765 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
766 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
767 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
768 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
769 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
770 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
771 3, 37, 3, 2, 41, 2, 2, 4, 41, 4,
772 3, 5, 4, 5, 32, 5, 32, 4, 5, 39,
773 9, 185, 7, 5, 7, 37, 7, 8, 9, 8,
774 4, 8, 8, 10, 10, 11, 44, 11, 5, 11,
776 185, 10, 19, 39, 19, 2, 41, 2, 9, 7,
777 9, 9, 19, 44, 8, 12, 56, 12, 56, 12,
778 12, 10, 11, 10, 10, 9, 5, 5, 6, 70,
779 6, 9, 6, 6, 6, 6, 546, 21, 10, 21,
780 6, 15, 12, 16, 10, 15, 16, 21, 20, 20,
781 16, 20, 20, 70, 20, 6, 69, 88, 69, 20,
782 22, 22, 72, 22, 22, 15, 22, 15, 15, 38,
783 16, 22, 16, 16, 49, 43, 544, 23, 49, 23,
784 71, 88, 72, 6, 6, 13, 13, 23, 15, 107,
785 84, 13, 24, 16, 24, 38, 42, 24, 91, 38,
787 13, 87, 24, 42, 13, 43, 13, 13, 13, 13,
788 71, 42, 13, 107, 541, 13, 49, 157, 13, 13,
789 84, 42, 13, 13, 13, 13, 81, 87, 81, 13,
790 13, 17, 91, 40, 157, 17, 17, 40, 89, 17,
791 31, 31, 31, 31, 33, 109, 33, 33, 33, 33,
792 34, 55, 34, 34, 34, 34, 194, 540, 17, 17,
793 17, 17, 17, 67, 89, 17, 109, 67, 17, 17,
794 17, 17, 17, 194, 55, 17, 17, 17, 17, 40,
795 60, 40, 86, 79, 60, 90, 33, 79, 80, 94,
796 80, 80, 80, 80, 82, 82, 82, 82, 83, 83,
798 83, 83, 55, 55, 85, 67, 92, 106, 102, 86,
799 102, 95, 90, 83, 93, 94, 103, 104, 113, 60,
800 533, 145, 60, 532, 85, 79, 114, 110, 85, 108,
801 105, 85, 95, 106, 93, 93, 92, 104, 95, 92,
802 103, 110, 108, 103, 104, 111, 93, 105, 112, 155,
803 108, 146, 118, 114, 145, 113, 118, 105, 111, 155,
804 119, 120, 120, 118, 119, 120, 124, 125, 112, 112,
805 124, 125, 126, 126, 120, 129, 126, 124, 130, 130,
806 112, 146, 130, 126, 144, 126, 162, 129, 133, 133,
807 133, 133, 136, 136, 136, 136, 137, 144, 137, 137,
809 137, 137, 119, 138, 147, 138, 138, 138, 138, 125,
810 140, 154, 140, 140, 140, 140, 153, 147, 148, 151,
811 130, 158, 148, 151, 153, 175, 154, 174, 176, 168,
812 153, 188, 154, 168, 530, 191, 528, 162, 162, 189,
813 174, 181, 181, 181, 181, 182, 182, 182, 182, 176,
814 158, 190, 175, 192, 186, 193, 187, 188, 199, 195,
815 182, 151, 191, 196, 148, 197, 148, 186, 168, 187,
816 198, 168, 189, 200, 202, 201, 205, 196, 206, 207,
817 195, 193, 208, 209, 190, 192, 195, 210, 199, 198,
818 211, 212, 197, 215, 200, 202, 209, 207, 213, 214,
820 216, 522, 331, 301, 200, 201, 212, 218, 331, 205,
821 209, 218, 215, 224, 206, 208, 211, 224, 218, 301,
822 213, 219, 219, 210, 224, 219, 220, 220, 216, 214,
823 220, 222, 222, 225, 225, 222, 244, 225, 226, 226,
824 245, 246, 226, 247, 225, 259, 225, 235, 235, 235,
825 235, 238, 238, 238, 238, 260, 273, 274, 259, 275,
826 277, 277, 247, 282, 277, 245, 284, 244, 246, 281,
827 281, 281, 281, 283, 285, 286, 287, 291, 288, 290,
828 292, 293, 274, 297, 281, 295, 294, 273, 260, 286,
829 275, 288, 296, 298, 300, 304, 282, 284, 290, 306,
831 299, 287, 305, 283, 307, 285, 312, 291, 308, 293,
832 294, 309, 306, 293, 292, 295, 297, 310, 296, 305,
833 298, 299, 311, 312, 313, 304, 300, 308, 314, 307,
834 315, 324, 309, 326, 327, 316, 316, 313, 310, 316,
835 318, 318, 337, 338, 318, 311, 344, 315, 347, 347,
836 349, 351, 347, 316, 314, 352, 353, 355, 357, 358,
837 361, 359, 324, 326, 338, 327, 337, 360, 362, 365,
838 364, 367, 358, 363, 366, 349, 370, 344, 359, 371,
839 353, 361, 351, 369, 360, 364, 363, 352, 357, 355,
840 363, 372, 370, 366, 373, 365, 374, 369, 375, 377,
842 362, 378, 379, 372, 367, 381, 381, 384, 384, 381,
843 396, 384, 371, 395, 377, 399, 383, 383, 391, 379,
844 383, 374, 391, 375, 400, 373, 378, 402, 404, 405,
845 406, 407, 399, 408, 383, 411, 412, 395, 410, 414,
846 396, 415, 418, 417, 402, 419, 407, 421, 408, 404,
847 422, 411, 420, 423, 415, 417, 432, 424, 435, 400,
848 406, 405, 410, 431, 420, 414, 418, 440, 412, 424,
849 436, 441, 427, 432, 447, 439, 427, 419, 438, 446,
850 421, 448, 449, 422, 435, 423, 427, 427, 427, 427,
851 431, 436, 439, 450, 438, 451, 446, 452, 447, 440,
853 453, 455, 459, 441, 454, 469, 461, 462, 459, 465,
854 466, 467, 470, 448, 449, 471, 454, 473, 475, 476,
855 458, 461, 452, 479, 458, 453, 466, 451, 467, 470,
856 450, 471, 474, 455, 458, 458, 458, 458, 462, 480,
857 496, 465, 469, 486, 474, 487, 475, 486, 491, 487,
858 488, 488, 488, 489, 473, 479, 476, 489, 494, 497,
859 498, 486, 499, 487, 500, 491, 501, 502, 496, 503,
860 511, 502, 514, 503, 494, 520, 480, 498, 515, 516,
861 513, 507, 517, 518, 511, 507, 512, 506, 508, 514,
862 499, 515, 508, 497, 501, 507, 507, 507, 507, 517,
864 505, 500, 508, 508, 508, 508, 509, 509, 509, 509,
865 510, 518, 519, 527, 510, 510, 510, 510, 523, 523,
866 529, 524, 523, 524, 524, 524, 524, 539, 527, 519,
867 531, 543, 523, 523, 523, 523, 525, 504, 495, 537,
868 525, 525, 525, 525, 529, 534, 534, 531, 543, 534,
869 536, 536, 536, 536, 537, 545, 545, 545, 545, 542,
870 539, 542, 542, 542, 542, 547, 547, 548, 548, 547,
871 493, 548, 492, 490, 485, 484, 483, 482, 481, 547,
872 547, 547, 547, 551, 551, 551, 551, 551, 551, 551,
873 551, 551, 552, 552, 552, 552, 552, 552, 552, 552,
875 552, 553, 553, 553, 553, 553, 553, 553, 553, 553,
876 554, 554, 554, 554, 554, 554, 554, 554, 554, 555,
877 555, 555, 555, 555, 555, 555, 555, 555, 556, 556,
878 556, 556, 556, 556, 556, 556, 556, 557, 557, 557,
879 557, 557, 557, 557, 557, 557, 558, 558, 478, 558,
880 558, 558, 558, 558, 558, 559, 559, 560, 560, 560,
881 560, 561, 561, 477, 561, 561, 561, 561, 561, 561,
882 562, 562, 472, 562, 562, 562, 562, 562, 562, 563,
883 563, 468, 563, 563, 563, 563, 563, 563, 564, 464,
884 564, 564, 564, 565, 565, 463, 565, 565, 565, 565,
886 565, 565, 566, 566, 566, 566, 566, 566, 566, 566,
887 566, 567, 460, 567, 568, 568, 568, 568, 569, 569,
888 569, 570, 570, 457, 570, 570, 570, 570, 570, 570,
889 571, 571, 571, 571, 571, 571, 571, 571, 571, 572,
890 572, 572, 572, 572, 572, 572, 572, 572, 573, 573,
891 573, 573, 573, 573, 573, 573, 573, 574, 456, 574,
892 574, 574, 575, 575, 575, 575, 575, 575, 575, 575,
893 575, 576, 576, 445, 444, 443, 576, 576, 577, 577,
894 578, 578, 578, 578, 579, 579, 579, 579, 580, 580,
895 442, 580, 580, 580, 580, 581, 581, 581, 581, 582,
897 582, 437, 582, 582, 582, 582, 582, 582, 583, 583,
898 434, 433, 583, 583, 583, 583, 583, 584, 584, 430,
899 584, 584, 584, 584, 584, 584, 429, 428, 426, 425,
900 416, 413, 409, 403, 401, 398, 394, 393, 392, 390,
901 389, 388, 387, 386, 385, 380, 376, 368, 356, 354,
902 350, 346, 345, 343, 339, 336, 333, 330, 329, 328,
903 325, 323, 322, 321, 320, 319, 302, 289, 280, 278,
904 271, 270, 268, 265, 264, 263, 261, 258, 257, 255,
905 254, 252, 251, 250, 249, 248, 243, 242, 240, 236,
906 234, 233, 228, 204, 184, 183, 180, 179, 178, 173,
908 169, 166, 164, 163, 161, 152, 150, 149, 143, 142,
909 141, 135, 132, 131, 128, 127, 123, 117, 61, 50,
910 48, 36, 30, 25, 18, 14, 550, 550, 550, 550,
911 550, 550, 550, 550, 550, 550, 550, 550, 550, 550,
912 550, 550, 550, 550, 550, 550, 550, 550, 550, 550,
913 550, 550, 550, 550, 550, 550, 550, 550, 550, 550,
914 550, 550, 550, 550, 550, 550, 550, 550, 550, 550,
915 550, 550, 550, 550, 550, 550, 550, 550, 550, 550,
916 550, 550, 550, 550, 550, 550
919 static yy_state_type yy_state_buf[YY_BUF_SIZE + 2], *yy_state_ptr;
920 static char *yy_full_match;
924 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \
925 yy_cp = yy_full_match; /* restore poss. backed-over text */ \
929 #define yymore() yymore_used_but_not_detected
930 #define YY_MORE_ADJ 0
931 #define YY_RESTORE_YY_MORE_OFFSET
935 /* GOB C Preprocessor
936 * Copyright (C) 1999 the Free Software Foundation.
938 * Author: George Lebl
940 * This program is free software; you can redistribute it and/or modify
941 * it under the terms of the GNU General Public License as published by
942 * the Free Software Foundation; either version 2 of the License, or
943 * (at your option) any later version.
945 * This program is distributed in the hope that it will be useful,
946 * but WITHOUT ANY WARRANTY; without even the implied warranty of
947 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
948 * GNU General Public License for more details.
950 * You should have received a copy of the GNU General Public License
951 * along with this program; if not, write to the Free Software
952 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
963 #include "treefuncs.h"
968 static int parenth_depth = 0;
969 static int before_comment
970 /* New flex is on drugs */
971 #if defined(FLEX_SCANNER) && ! defined(INITIAL)
976 static gboolean class_after_c = FALSE;
977 static int code_type = CCODE;
978 static int before_string;
979 static int property_paren_depth = 0;
982 static char *gtk_doc_func = NULL; /* current gtk-doc func */
983 GHashTable *gtk_doc_hash = NULL;
985 static GString *cbuf = NULL;
988 GList *include_files = NULL;
989 /* 0 no, 1 means yes, 2+ means don't even start looking anymore */
990 static int look_for_includes = 0;
993 /* last filename parsed from a #line directive */
994 char *hline_filename = NULL;
1000 cbuf = g_string_new(NULL);
1002 cbuf = g_string_assign(cbuf, "");
1007 add_to_cbuf(char *s)
1010 cbuf = g_string_new(s);
1012 cbuf = g_string_append(cbuf,s);
1017 add_gtk_doc_func(void)
1023 gtk_doc_hash = g_hash_table_new(g_str_hash, g_str_equal);
1024 g_hash_table_insert(gtk_doc_hash, gtk_doc_func, g_strdup(cbuf->str));
1027 gtk_doc_func = NULL;
1030 /* Ugly warning avoiding */
1039 #define CODE_STRING 3
1041 #define CLASS_CODE 4
1043 #define CLASS_STRING 5
1045 #define CLASS_CODE_I 6
1047 #define PROPERTY_CODE 7
1049 #define PROPERTY_CODE_I 8
1051 #define GTK_DOC_BEFORE_NAME 9
1055 #define GTK_DOC_LINE 11
1057 #line 1058 "lexer.c"
1059 /* Macros after this point can all be overridden by user definitions in
1063 #ifndef YY_SKIP_YYWRAP
1065 extern "C" int yywrap YY_PROTO(( void ));
1067 extern int yywrap YY_PROTO(( void ));
1072 static void yyunput YY_PROTO(( int c, char *buf_ptr ));
1076 static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
1079 #ifdef YY_NEED_STRLEN
1080 static int yy_flex_strlen YY_PROTO(( yyconst char * ));
1085 static int yyinput YY_PROTO(( void ));
1087 static int input YY_PROTO(( void ));
1092 static int yy_start_stack_ptr = 0;
1093 static int yy_start_stack_depth = 0;
1094 static int *yy_start_stack = 0;
1095 #ifndef YY_NO_PUSH_STATE
1096 static void yy_push_state YY_PROTO(( int new_state ));
1098 #ifndef YY_NO_POP_STATE
1099 static void yy_pop_state YY_PROTO(( void ));
1101 #ifndef YY_NO_TOP_STATE
1102 static int yy_top_state YY_PROTO(( void ));
1106 #define YY_NO_PUSH_STATE 1
1107 #define YY_NO_POP_STATE 1
1108 #define YY_NO_TOP_STATE 1
1111 #ifdef YY_MALLOC_DECL
1119 /* Just try to get by without declaring the routines. This will fail
1120 * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
1121 * or sizeof(void*) != sizeof(int).
1126 /* Amount of stuff to slurp up with each read. */
1127 #ifndef YY_READ_BUF_SIZE
1128 #define YY_READ_BUF_SIZE 8192
1131 /* Copy whatever the last rule matched to the standard output. */
1134 /* This used to be an fputs(), but since the string might contain NUL's,
1135 * we now use fwrite().
1137 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
1140 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
1141 * is returned in "result".
1144 #define YY_INPUT(buf,result,max_size) \
1145 if ( yy_current_buffer->yy_is_interactive ) \
1148 for ( n = 0; n < max_size && \
1149 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1150 buf[n] = (char) c; \
1152 buf[n++] = (char) c; \
1153 if ( c == EOF && ferror( yyin ) ) \
1154 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1157 else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
1158 && ferror( yyin ) ) \
1159 YY_FATAL_ERROR( "input in flex scanner failed" );
1162 /* No semi-colon after return; correct usage is to write "yyterminate();" -
1163 * we don't want an extra ';' after the "return" because that will cause
1164 * some compilers to complain about unreachable statements.
1167 #define yyterminate() return YY_NULL
1170 /* Number of entries by which start-condition stack grows. */
1171 #ifndef YY_START_STACK_INCR
1172 #define YY_START_STACK_INCR 25
1175 /* Report a fatal error. */
1176 #ifndef YY_FATAL_ERROR
1177 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
1180 /* Default declaration of generated scanner - a define so the user can
1181 * easily add parameters.
1184 #define YY_DECL int yylex YY_PROTO(( void ))
1187 /* Code executed at the beginning of each rule, after yytext and yyleng
1190 #ifndef YY_USER_ACTION
1191 #define YY_USER_ACTION
1194 /* Code executed at the end of each rule. */
1196 #define YY_BREAK break;
1199 #define YY_RULE_SETUP \
1201 yy_current_buffer->yy_at_bol = \
1202 (yytext[yyleng - 1] == '\n'); \
1207 register yy_state_type yy_current_state;
1208 register char *yy_cp = NULL, *yy_bp = NULL;
1209 register int yy_act;
1215 /* Avoid warning from flex, cuz flex sucks */
1217 yy_current_state = 0;
1222 #line 1223 "lexer.c"
1233 yy_start = 1; /* first start state */
1241 if ( ! yy_current_buffer )
1243 yy_create_buffer( yyin, YY_BUF_SIZE );
1245 yy_load_buffer_state();
1248 while ( 1 ) /* loops until end-of-file is reached */
1252 /* Support of yytext. */
1253 *yy_cp = yy_hold_char;
1255 /* yy_bp points to the position in yy_ch_buf of the start of
1260 yy_current_state = yy_start;
1261 yy_current_state += YY_AT_BOL();
1262 yy_state_ptr = yy_state_buf;
1263 *yy_state_ptr++ = yy_current_state;
1267 register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
1268 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1270 yy_current_state = (int) yy_def[yy_current_state];
1271 if ( yy_current_state >= 551 )
1272 yy_c = yy_meta[(unsigned int) yy_c];
1274 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1275 *yy_state_ptr++ = yy_current_state;
1278 while ( yy_base[yy_current_state] != 1327 );
1281 yy_current_state = *--yy_state_ptr;
1282 yy_lp = yy_accept[yy_current_state];
1283 find_rule: /* we branch to this label when backing up */
1284 for ( ; ; ) /* until we find what rule we matched */
1286 if ( yy_lp && yy_lp < yy_accept[yy_current_state + 1] )
1288 yy_act = yy_acclist[yy_lp];
1290 yy_full_match = yy_cp;
1295 yy_current_state = *--yy_state_ptr;
1296 yy_lp = yy_accept[yy_current_state];
1299 YY_DO_BEFORE_ACTION;
1302 do_action: /* This label is used only to access EOF actions. */
1306 { /* beginning of action switch */
1310 { line_no++; REJECT; }
1313 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
1314 yy_c_buf_p = yy_cp -= 1;
1315 YY_DO_BEFORE_ACTION; /* set up yytext again */
1319 /* Thy evil easter egg */
1320 #define QQ(x) long x
1321 #define KK(x) =atoi(__(&,,x,))
1322 #define MM(x,a) {QQ(i);for(i=2;i<x;i++){a}}
1323 #define PP(Q) (P%Q)==0
1324 #define ___(x,y,z) if(x z y)
1325 #define __(a,x,y,z) a(yytext[y] x z)
1326 #define O__O(a,b) fprintf(stderr,"%s is %s!\n",a,b)
1327 QQ(m)=1;___(__(,==,2,'P'),__(,==,5,'M'),&&
1328 ){QQ(P)KK(8);MM(P,___(PP(i),,)m=0;)}__(,=,
1329 7,0);___(,,m){O__O(__( &,,8,),__(&,,2,));}
1341 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
1342 yy_c_buf_p = yy_cp -= 1;
1343 YY_DO_BEFORE_ACTION; /* set up yytext again */
1346 { ; /*comment, ignore*/ }
1355 char *str=g_strdup(yytext);
1357 /* find first digit of line number */
1359 while(*p&&!isdigit(*p)) p++;
1362 /* find end of line number */
1363 while(*p&&isdigit(*p)) p++;
1366 /* find beginning of filename */
1371 /* find end of filename */
1372 if(p) p=strchr(p,'"');
1375 /* stash number (minus one because we don't count this line) */
1376 if(number) line_no=atoi(number)-1;
1378 /* stash filename */
1380 if(hline_filename) g_free(hline_filename);
1381 hline_filename=g_strdup(filename);
1392 if(look_for_includes==1) {
1395 char *str = g_strdup(yytext);
1396 file = strchr(str,'"');
1397 if(!file) file = strchr(str,'<');
1399 p = strchr(file,'"');
1400 if(!p) p = strchr(file,'>');
1402 include_files = g_list_prepend(include_files,g_strdup(file));
1409 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
1410 yy_c_buf_p = yy_cp -= 1;
1411 YY_DO_BEFORE_ACTION; /* set up yytext again */
1415 /* eat out gtk doc stuff */
1416 BEGIN(GTK_DOC_BEFORE_NAME);
1421 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
1422 yy_c_buf_p = yy_cp -= 1;
1423 YY_DO_BEFORE_ACTION; /* set up yytext again */
1427 /* empty doc lines */
1432 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
1433 yy_c_buf_p = yy_cp -= 1;
1434 YY_DO_BEFORE_ACTION; /* set up yytext again */
1440 p = strchr(yytext, '*');
1441 g_free(gtk_doc_func);
1442 gtk_doc_func = g_strdup(p+2);
1443 p = strchr(gtk_doc_func, ':');
1445 g_strstrip(gtk_doc_func);
1452 BEGIN(CLASS_CODE_I);
1460 before_comment = CLASS_CODE_I;
1464 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
1465 yy_c_buf_p = yy_cp -= 1;
1466 YY_DO_BEFORE_ACTION; /* set up yytext again */
1470 /* empty doc lines */
1471 add_to_cbuf(" *\n");
1478 BEGIN(CLASS_CODE_I);
1488 BEGIN(GTK_DOC_LINE);
1495 BEGIN(CLASS_CODE_I);
1503 before_comment = CLASS_CODE_I;
1510 BEGIN(CLASS_CODE_I);
1516 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
1517 yy_c_buf_p = yy_cp -= 1;
1518 YY_DO_BEFORE_ACTION; /* set up yytext again */
1523 add_to_cbuf(yytext);
1532 add_to_cbuf(yytext);
1536 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
1537 yy_c_buf_p = yy_cp -= 1;
1538 YY_DO_BEFORE_ACTION; /* set up yytext again */
1541 { add_to_cbuf(yytext); /*comment, ignore*/ }
1544 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
1545 yy_c_buf_p = yy_cp -= 1;
1546 YY_DO_BEFORE_ACTION; /* set up yytext again */
1549 { ; /*comment, ignore*/ }
1552 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
1553 yy_c_buf_p = yy_cp -= 1;
1554 YY_DO_BEFORE_ACTION; /* set up yytext again */
1557 { ; /*comment, ignore*/ }
1560 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
1561 yy_c_buf_p = yy_cp -= 1;
1562 YY_DO_BEFORE_ACTION; /* set up yytext again */
1565 { ; /*comment, ignore*/ }
1570 {BEGIN(COMMENT); before_comment = INITIAL; }
1576 add_to_cbuf(yytext);
1578 before_comment = C_CODE;
1584 {BEGIN(COMMENT); before_comment = CLASS_CODE; }
1589 {BEGIN(COMMENT); before_comment = CLASS_CODE_I; }
1594 {BEGIN(COMMENT); before_comment = PROPERTY_CODE_I; }
1600 if(before_comment == C_CODE) add_to_cbuf(yytext);
1601 BEGIN(before_comment);
1608 /* comment, ignore */
1609 if(before_comment == C_CODE) add_to_cbuf(yytext);
1616 /* comment, ignore */
1617 if(before_comment == C_CODE) add_to_cbuf(yytext);
1626 class_after_c = FALSE;
1629 ccode_line = line_no;
1638 class_after_c = FALSE;
1641 ccode_line = line_no;
1650 class_after_c = FALSE;
1653 ccode_line = line_no;
1662 class_after_c = FALSE;
1665 ccode_line = line_no;
1674 class_after_c = FALSE;
1677 ccode_line = line_no;
1686 class_after_c = FALSE;
1689 ccode_line = line_no;
1690 if(look_for_includes==0)
1691 look_for_includes=1;
1701 if(look_for_includes==1)
1702 look_for_includes=0;
1709 { add_to_cbuf(yytext); }
1714 { add_to_cbuf(yytext); }
1719 { add_to_cbuf(yytext); }
1724 { add_to_cbuf(yytext); }
1729 { add_to_cbuf(yytext); }
1734 { add_to_cbuf(yytext); }
1739 { add_to_cbuf(yytext); }
1746 before_string = C_CODE;
1747 add_to_cbuf(yytext);
1755 before_string = PROPERTY_CODE_I;
1756 add_to_cbuf(yytext);
1762 { add_to_cbuf(yytext); }
1768 BEGIN(before_string);
1769 add_to_cbuf(yytext);
1770 if (before_string == PROPERTY_CODE_I) {
1771 yylval.id = cbuf->str;
1772 g_string_free (cbuf, FALSE);
1781 { add_to_cbuf(yytext); }
1786 { add_to_cbuf(yytext); }
1793 add_to_cbuf(yytext);
1801 if(parenth_depth<0) {
1803 } else if(parenth_depth==0 && class_after_c) {
1804 BEGIN(CLASS_CODE_I);
1809 add_to_cbuf(yytext);
1815 { add_to_cbuf(yytext); }
1820 { add_to_cbuf(yytext); }
1826 static int found_classes = 0;
1827 look_for_includes = 2;
1830 if(++found_classes > 1) {
1831 error_print(GOB_ERROR, line_no,
1832 "Only one class per file allowed");
1854 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
1855 yy_c_buf_p = yy_cp -= 1;
1856 YY_DO_BEFORE_ACTION; /* set up yytext again */
1860 int maj = 0, min = 0, pl = 0;
1861 int rmaj = 0, rmin = 0, rpl = 0;
1862 int effective_maj = 0;
1863 int effective_rmaj = 0;
1866 sscanf (VERSION, "%d.%d.%d", &rmaj, &rmin, &rpl);
1867 effective_rmaj = rmaj;
1869 effective_rmaj = rmaj + 1;
1871 p = strchr (yytext,'r');
1872 g_assert (p); /* we MUST have found it */
1873 sscanf (p, "requires %d.%d.%d", &maj, &min, &pl);
1874 effective_maj = maj;
1876 effective_maj = maj + 1;
1879 (rmaj == maj && rmin < min) ||
1880 (rmaj == maj && rmin == min && rpl < pl)) {
1881 error_printf (GOB_ERROR, line_no,
1882 "GOB version at least %d.%d.%d required "
1884 "To upgrade your gob, see: "
1885 "http://www.5z.com/jirka/gob.html",
1886 maj, min, pl, VERSION);
1889 if(effective_rmaj != effective_maj) {
1890 error_printf(GOB_ERROR, line_no,
1891 "GOB major version %d required "
1893 "To upgrade your gob, see: "
1894 "http://www.5z.com/jirka/gob.html",
1895 effective_maj, VERSION);
1905 error_printf(GOB_WARN, line_no,
1906 "'%s' keyword should not "
1907 "be used when generating "
1908 "C++ code", yytext);
1922 BEGIN(CLASS_STRING);
1923 before_string = CLASS_CODE;
1924 add_to_cbuf(yytext);
1930 { add_to_cbuf(yytext); }
1936 BEGIN(before_string);
1937 add_to_cbuf(yytext);
1938 yylval.id = cbuf->str;
1939 g_string_free (cbuf, FALSE);
1947 { add_to_cbuf(yytext); }
1952 { add_to_cbuf(yytext); }
2027 {yylval.line = line_no; return PUBLIC;}
2032 {yylval.line = line_no; return PRIVATE;}
2037 {yylval.line = line_no; return PROTECTED;}
2042 {yylval.line = line_no; return CLASSWIDE;}
2047 {yylval.line = line_no; return ARGUMENT;}
2052 {yylval.line = line_no; return VIRTUAL;}
2057 {yylval.line = line_no; return SIGNAL;}
2062 {yylval.line = line_no; return OVERRIDE;}
2068 yylval.line = line_no;
2069 BEGIN(PROPERTY_CODE);
2076 { yylval.line = line_no; return NICK; }
2081 { yylval.line = line_no; return BLURB; }
2086 { yylval.line = line_no; return MAXIMUM; }
2091 { yylval.line = line_no; return MINIMUM; }
2096 { yylval.line = line_no; return DEFAULT_VALUE; }
2101 { yylval.line = line_no; return FLAGS; }
2106 { yylval.line = line_no; return TYPE; }
2111 { yylval.line = line_no; return FLAGS_TYPE; }
2116 { yylval.line = line_no; return ENUM_TYPE; }
2121 { yylval.line = line_no; return PARAM_TYPE; }
2126 { yylval.line = line_no; return BOXED_TYPE; }
2131 { yylval.line = line_no; return OBJECT_TYPE; }
2137 yylval.line = line_no;
2138 property_paren_depth = 1;
2139 BEGIN(PROPERTY_CODE_I);
2147 yylval.line = line_no;
2148 property_paren_depth++;
2156 yylval.line = line_no;
2157 property_paren_depth--;
2158 if (property_paren_depth == 0) {
2159 BEGIN(CLASS_CODE_I);
2168 yylval.id = g_strdup(yytext);
2176 /* This is cpp kind of token thingie */
2178 yylval.id = g_strdup(yytext);
2189 /* this one is for a classname with a namespace */
2190 yylval.id = g_strdup(yytext);
2198 /* this is for a classname with an empty namespace */
2199 yylval.id = g_strdup(yytext);
2207 yylval.id = g_strdup(yytext);
2215 yylval.id = g_strdup(yytext);
2223 yylval.id = g_strdup(yytext);
2231 /* cheat for bitfield */
2232 yylval.id = g_strdup(yytext);
2240 BEGIN(CLASS_CODE_I);
2250 class_after_c = TRUE;
2251 yylval.line = line_no;
2253 ccode_line = line_no;
2274 yylval.line = line_no;
2284 *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
2285 yy_c_buf_p = yy_cp -= 1;
2286 YY_DO_BEFORE_ACTION; /* set up yytext again */
2292 p = strchr (yytext,'p');
2293 g_assert (p); /* we MUST have found it */
2294 sscanf (p, "prealloc %d", &t);
2303 #line 2304 "lexer.c"
2304 case YY_STATE_EOF(INITIAL):
2305 case YY_STATE_EOF(COMMENT):
2306 case YY_STATE_EOF(C_CODE):
2307 case YY_STATE_EOF(CODE_STRING):
2308 case YY_STATE_EOF(CLASS_CODE):
2309 case YY_STATE_EOF(CLASS_STRING):
2310 case YY_STATE_EOF(CLASS_CODE_I):
2311 case YY_STATE_EOF(PROPERTY_CODE):
2312 case YY_STATE_EOF(PROPERTY_CODE_I):
2313 case YY_STATE_EOF(GTK_DOC_BEFORE_NAME):
2314 case YY_STATE_EOF(GTK_DOC):
2315 case YY_STATE_EOF(GTK_DOC_LINE):
2318 case YY_END_OF_BUFFER:
2320 /* Amount of text matched not including the EOB char. */
2321 int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
2323 /* Undo the effects of YY_DO_BEFORE_ACTION. */
2324 *yy_cp = yy_hold_char;
2325 YY_RESTORE_YY_MORE_OFFSET
2327 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
2329 /* We're scanning a new file or input source. It's
2330 * possible that this happened because the user
2331 * just pointed yyin at a new source and called
2332 * yylex(). If so, then we have to assure
2333 * consistency between yy_current_buffer and our
2334 * globals. Here is the right place to do so, because
2335 * this is the first action (other than possibly a
2336 * back-up) that will match for the new input source.
2338 yy_n_chars = yy_current_buffer->yy_n_chars;
2339 yy_current_buffer->yy_input_file = yyin;
2340 yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
2343 /* Note that here we test for yy_c_buf_p "<=" to the position
2344 * of the first EOB in the buffer, since yy_c_buf_p will
2345 * already have been incremented past the NUL character
2346 * (since all states make transitions on EOB to the
2347 * end-of-buffer state). Contrast this with the test
2350 if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
2351 { /* This was really a NUL. */
2352 yy_state_type yy_next_state;
2354 yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
2356 yy_current_state = yy_get_previous_state();
2358 /* Okay, we're now positioned to make the NUL
2359 * transition. We couldn't have
2360 * yy_get_previous_state() go ahead and do it
2361 * for us because it doesn't know how to deal
2362 * with the possibility of jamming (and we don't
2363 * want to build jamming into it because then it
2364 * will run more slowly).
2367 yy_next_state = yy_try_NUL_trans( yy_current_state );
2369 yy_bp = yytext_ptr + YY_MORE_ADJ;
2371 if ( yy_next_state )
2373 /* Consume the NUL. */
2374 yy_cp = ++yy_c_buf_p;
2375 yy_current_state = yy_next_state;
2382 goto yy_find_action;
2386 else switch ( yy_get_next_buffer() )
2388 case EOB_ACT_END_OF_FILE:
2390 yy_did_buffer_switch_on_eof = 0;
2394 /* Note: because we've taken care in
2395 * yy_get_next_buffer() to have set up
2396 * yytext, we can now set up
2397 * yy_c_buf_p so that if some total
2398 * hoser (like flex itself) wants to
2399 * call the scanner after we return the
2400 * YY_NULL, it'll still work - another
2401 * YY_NULL will get returned.
2403 yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
2405 yy_act = YY_STATE_EOF(YY_START);
2411 if ( ! yy_did_buffer_switch_on_eof )
2417 case EOB_ACT_CONTINUE_SCAN:
2419 yytext_ptr + yy_amount_of_matched_text;
2421 yy_current_state = yy_get_previous_state();
2424 yy_bp = yytext_ptr + YY_MORE_ADJ;
2427 case EOB_ACT_LAST_MATCH:
2429 &yy_current_buffer->yy_ch_buf[yy_n_chars];
2431 yy_current_state = yy_get_previous_state();
2434 yy_bp = yytext_ptr + YY_MORE_ADJ;
2435 goto yy_find_action;
2442 "fatal flex scanner internal error--no action found" );
2443 } /* end of action switch */
2444 } /* end of scanning one token */
2445 } /* end of yylex */
2448 /* yy_get_next_buffer - try to read in a new buffer
2450 * Returns a code representing an action:
2451 * EOB_ACT_LAST_MATCH -
2452 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
2453 * EOB_ACT_END_OF_FILE - end of file
2456 static int yy_get_next_buffer()
2458 register char *dest = yy_current_buffer->yy_ch_buf;
2459 register char *source = yytext_ptr;
2460 register int number_to_move, i;
2463 if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
2465 "fatal flex scanner internal error--end of buffer missed" );
2467 if ( yy_current_buffer->yy_fill_buffer == 0 )
2468 { /* Don't try to fill the buffer, so this is an EOF. */
2469 if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
2471 /* We matched a single character, the EOB, so
2472 * treat this as a final EOF.
2474 return EOB_ACT_END_OF_FILE;
2479 /* We matched some text prior to the EOB, first
2482 return EOB_ACT_LAST_MATCH;
2486 /* Try to read more data. */
2488 /* First move last chars to start of buffer. */
2489 number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
2491 for ( i = 0; i < number_to_move; ++i )
2492 *(dest++) = *(source++);
2494 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
2495 /* don't do the read, it's not guaranteed to return an EOF,
2498 yy_current_buffer->yy_n_chars = yy_n_chars = 0;
2503 yy_current_buffer->yy_buf_size - number_to_move - 1;
2505 while ( num_to_read <= 0 )
2506 { /* Not enough room in the buffer - grow it. */
2507 #ifdef YY_USES_REJECT
2509 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
2512 /* just a shorter name for the current buffer */
2513 YY_BUFFER_STATE b = yy_current_buffer;
2515 int yy_c_buf_p_offset =
2516 (int) (yy_c_buf_p - b->yy_ch_buf);
2518 if ( b->yy_is_our_buffer )
2520 int new_size = b->yy_buf_size * 2;
2522 if ( new_size <= 0 )
2523 b->yy_buf_size += b->yy_buf_size / 8;
2525 b->yy_buf_size *= 2;
2527 b->yy_ch_buf = (char *)
2528 /* Include room in for 2 EOB chars. */
2529 yy_flex_realloc( (void *) b->yy_ch_buf,
2530 b->yy_buf_size + 2 );
2533 /* Can't grow it, we don't own it. */
2536 if ( ! b->yy_ch_buf )
2538 "fatal error - scanner input buffer overflow" );
2540 yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
2542 num_to_read = yy_current_buffer->yy_buf_size -
2547 if ( num_to_read > YY_READ_BUF_SIZE )
2548 num_to_read = YY_READ_BUF_SIZE;
2550 /* Read in more data. */
2551 YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
2552 yy_n_chars, num_to_read );
2554 yy_current_buffer->yy_n_chars = yy_n_chars;
2557 if ( yy_n_chars == 0 )
2559 if ( number_to_move == YY_MORE_ADJ )
2561 ret_val = EOB_ACT_END_OF_FILE;
2567 ret_val = EOB_ACT_LAST_MATCH;
2568 yy_current_buffer->yy_buffer_status =
2569 YY_BUFFER_EOF_PENDING;
2574 ret_val = EOB_ACT_CONTINUE_SCAN;
2576 yy_n_chars += number_to_move;
2577 yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
2578 yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
2580 yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
2586 /* yy_get_previous_state - get the state just before the EOB char was reached */
2588 static yy_state_type yy_get_previous_state()
2590 register yy_state_type yy_current_state;
2591 register char *yy_cp;
2593 yy_current_state = yy_start;
2594 yy_current_state += YY_AT_BOL();
2595 yy_state_ptr = yy_state_buf;
2596 *yy_state_ptr++ = yy_current_state;
2598 for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
2600 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
2601 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2603 yy_current_state = (int) yy_def[yy_current_state];
2604 if ( yy_current_state >= 551 )
2605 yy_c = yy_meta[(unsigned int) yy_c];
2607 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2608 *yy_state_ptr++ = yy_current_state;
2611 return yy_current_state;
2615 /* yy_try_NUL_trans - try to make a transition on the NUL character
2618 * next_state = yy_try_NUL_trans( current_state );
2621 #ifdef YY_USE_PROTOS
2622 static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
2624 static yy_state_type yy_try_NUL_trans( yy_current_state )
2625 yy_state_type yy_current_state;
2628 register int yy_is_jam;
2630 register YY_CHAR yy_c = 1;
2631 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2633 yy_current_state = (int) yy_def[yy_current_state];
2634 if ( yy_current_state >= 551 )
2635 yy_c = yy_meta[(unsigned int) yy_c];
2637 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2638 yy_is_jam = (yy_current_state == 550);
2640 *yy_state_ptr++ = yy_current_state;
2642 return yy_is_jam ? 0 : yy_current_state;
2647 #ifdef YY_USE_PROTOS
2648 static void yyunput( int c, register char *yy_bp )
2650 static void yyunput( c, yy_bp )
2652 register char *yy_bp;
2655 register char *yy_cp = yy_c_buf_p;
2657 /* undo effects of setting up yytext */
2658 *yy_cp = yy_hold_char;
2660 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
2661 { /* need to shift things up to make room */
2662 /* +2 for EOB chars. */
2663 register int number_to_move = yy_n_chars + 2;
2664 register char *dest = &yy_current_buffer->yy_ch_buf[
2665 yy_current_buffer->yy_buf_size + 2];
2666 register char *source =
2667 &yy_current_buffer->yy_ch_buf[number_to_move];
2669 while ( source > yy_current_buffer->yy_ch_buf )
2670 *--dest = *--source;
2672 yy_cp += (int) (dest - source);
2673 yy_bp += (int) (dest - source);
2674 yy_current_buffer->yy_n_chars =
2675 yy_n_chars = yy_current_buffer->yy_buf_size;
2677 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
2678 YY_FATAL_ERROR( "flex scanner push-back overflow" );
2681 *--yy_cp = (char) c;
2685 yy_hold_char = *yy_cp;
2688 #endif /* ifndef YY_NO_UNPUT */
2693 static int yyinput()
2700 *yy_c_buf_p = yy_hold_char;
2702 if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
2704 /* yy_c_buf_p now points to the character we want to return.
2705 * If this occurs *before* the EOB characters, then it's a
2706 * valid NUL; if not, then we've hit the end of the buffer.
2708 if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
2709 /* This was really a NUL. */
2713 { /* need more input */
2714 int offset = yy_c_buf_p - yytext_ptr;
2717 switch ( yy_get_next_buffer() )
2719 case EOB_ACT_LAST_MATCH:
2720 /* This happens because yy_g_n_b()
2721 * sees that we've accumulated a
2722 * token and flags that we need to
2723 * try matching the token before
2724 * proceeding. But for input(),
2725 * there's no matching to consider.
2726 * So convert the EOB_ACT_LAST_MATCH
2727 * to EOB_ACT_END_OF_FILE.
2730 /* Reset buffer status. */
2735 case EOB_ACT_END_OF_FILE:
2740 if ( ! yy_did_buffer_switch_on_eof )
2749 case EOB_ACT_CONTINUE_SCAN:
2750 yy_c_buf_p = yytext_ptr + offset;
2756 c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */
2757 *yy_c_buf_p = '\0'; /* preserve yytext */
2758 yy_hold_char = *++yy_c_buf_p;
2760 yy_current_buffer->yy_at_bol = (c == '\n');
2764 #endif /* YY_NO_INPUT */
2766 #ifdef YY_USE_PROTOS
2767 void yyrestart( FILE *input_file )
2769 void yyrestart( input_file )
2773 if ( ! yy_current_buffer )
2774 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
2776 yy_init_buffer( yy_current_buffer, input_file );
2777 yy_load_buffer_state();
2781 #ifdef YY_USE_PROTOS
2782 void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
2784 void yy_switch_to_buffer( new_buffer )
2785 YY_BUFFER_STATE new_buffer;
2788 if ( yy_current_buffer == new_buffer )
2791 if ( yy_current_buffer )
2793 /* Flush out information for old buffer. */
2794 *yy_c_buf_p = yy_hold_char;
2795 yy_current_buffer->yy_buf_pos = yy_c_buf_p;
2796 yy_current_buffer->yy_n_chars = yy_n_chars;
2799 yy_current_buffer = new_buffer;
2800 yy_load_buffer_state();
2802 /* We don't actually know whether we did this switch during
2803 * EOF (yywrap()) processing, but the only time this flag
2804 * is looked at is after yywrap() is called, so it's safe
2805 * to go ahead and always set it.
2807 yy_did_buffer_switch_on_eof = 1;
2811 #ifdef YY_USE_PROTOS
2812 void yy_load_buffer_state( void )
2814 void yy_load_buffer_state()
2817 yy_n_chars = yy_current_buffer->yy_n_chars;
2818 yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
2819 yyin = yy_current_buffer->yy_input_file;
2820 yy_hold_char = *yy_c_buf_p;
2824 #ifdef YY_USE_PROTOS
2825 YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
2827 YY_BUFFER_STATE yy_create_buffer( file, size )
2834 b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
2836 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
2838 b->yy_buf_size = size;
2840 /* yy_ch_buf has to be 2 characters longer than the size given because
2841 * we need to put in 2 end-of-buffer characters.
2843 b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
2844 if ( ! b->yy_ch_buf )
2845 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
2847 b->yy_is_our_buffer = 1;
2849 yy_init_buffer( b, file );
2855 #ifdef YY_USE_PROTOS
2856 void yy_delete_buffer( YY_BUFFER_STATE b )
2858 void yy_delete_buffer( b )
2865 if ( b == yy_current_buffer )
2866 yy_current_buffer = (YY_BUFFER_STATE) 0;
2868 if ( b->yy_is_our_buffer )
2869 yy_flex_free( (void *) b->yy_ch_buf );
2871 yy_flex_free( (void *) b );
2876 #ifdef YY_USE_PROTOS
2877 void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
2879 void yy_init_buffer( b, file )
2886 yy_flush_buffer( b );
2888 b->yy_input_file = file;
2889 b->yy_fill_buffer = 1;
2891 #if YY_ALWAYS_INTERACTIVE
2892 b->yy_is_interactive = 1;
2894 #if YY_NEVER_INTERACTIVE
2895 b->yy_is_interactive = 0;
2897 b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
2903 #ifdef YY_USE_PROTOS
2904 void yy_flush_buffer( YY_BUFFER_STATE b )
2906 void yy_flush_buffer( b )
2916 /* We always need two end-of-buffer characters. The first causes
2917 * a transition to the end-of-buffer state. The second causes
2918 * a jam in that state.
2920 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
2921 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
2923 b->yy_buf_pos = &b->yy_ch_buf[0];
2926 b->yy_buffer_status = YY_BUFFER_NEW;
2928 if ( b == yy_current_buffer )
2929 yy_load_buffer_state();
2933 #ifndef YY_NO_SCAN_BUFFER
2934 #ifdef YY_USE_PROTOS
2935 YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
2937 YY_BUFFER_STATE yy_scan_buffer( base, size )
2945 base[size-2] != YY_END_OF_BUFFER_CHAR ||
2946 base[size-1] != YY_END_OF_BUFFER_CHAR )
2947 /* They forgot to leave room for the EOB's. */
2950 b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
2952 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
2954 b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
2955 b->yy_buf_pos = b->yy_ch_buf = base;
2956 b->yy_is_our_buffer = 0;
2957 b->yy_input_file = 0;
2958 b->yy_n_chars = b->yy_buf_size;
2959 b->yy_is_interactive = 0;
2961 b->yy_fill_buffer = 0;
2962 b->yy_buffer_status = YY_BUFFER_NEW;
2964 yy_switch_to_buffer( b );
2971 #ifndef YY_NO_SCAN_STRING
2972 #ifdef YY_USE_PROTOS
2973 YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
2975 YY_BUFFER_STATE yy_scan_string( yy_str )
2976 yyconst char *yy_str;
2980 for ( len = 0; yy_str[len]; ++len )
2983 return yy_scan_bytes( yy_str, len );
2988 #ifndef YY_NO_SCAN_BYTES
2989 #ifdef YY_USE_PROTOS
2990 YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
2992 YY_BUFFER_STATE yy_scan_bytes( bytes, len )
2993 yyconst char *bytes;
3002 /* Get memory for full buffer, including space for trailing EOB's. */
3004 buf = (char *) yy_flex_alloc( n );
3006 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
3008 for ( i = 0; i < len; ++i )
3011 buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
3013 b = yy_scan_buffer( buf, n );
3015 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
3017 /* It's okay to grow etc. this buffer, and we should throw it
3018 * away when we're done.
3020 b->yy_is_our_buffer = 1;
3027 #ifndef YY_NO_PUSH_STATE
3028 #ifdef YY_USE_PROTOS
3029 static void yy_push_state( int new_state )
3031 static void yy_push_state( new_state )
3035 if ( yy_start_stack_ptr >= yy_start_stack_depth )
3039 yy_start_stack_depth += YY_START_STACK_INCR;
3040 new_size = yy_start_stack_depth * sizeof( int );
3042 if ( ! yy_start_stack )
3043 yy_start_stack = (int *) yy_flex_alloc( new_size );
3046 yy_start_stack = (int *) yy_flex_realloc(
3047 (void *) yy_start_stack, new_size );
3049 if ( ! yy_start_stack )
3051 "out of memory expanding start-condition stack" );
3054 yy_start_stack[yy_start_stack_ptr++] = YY_START;
3061 #ifndef YY_NO_POP_STATE
3062 static void yy_pop_state()
3064 if ( --yy_start_stack_ptr < 0 )
3065 YY_FATAL_ERROR( "start-condition stack underflow" );
3067 BEGIN(yy_start_stack[yy_start_stack_ptr]);
3072 #ifndef YY_NO_TOP_STATE
3073 static int yy_top_state()
3075 return yy_start_stack[yy_start_stack_ptr - 1];
3079 #ifndef YY_EXIT_FAILURE
3080 #define YY_EXIT_FAILURE 2
3083 #ifdef YY_USE_PROTOS
3084 static void yy_fatal_error( yyconst char msg[] )
3086 static void yy_fatal_error( msg )
3090 (void) fprintf( stderr, "%s\n", msg );
3091 exit( YY_EXIT_FAILURE );
3096 /* Redefine yyless() so it works in section 3 code. */
3102 /* Undo effects of setting up yytext. */ \
3103 yytext[yyleng] = yy_hold_char; \
3104 yy_c_buf_p = yytext + n; \
3105 yy_hold_char = *yy_c_buf_p; \
3106 *yy_c_buf_p = '\0'; \
3112 /* Internal utility routines. */
3115 #ifdef YY_USE_PROTOS
3116 static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
3118 static void yy_flex_strncpy( s1, s2, n )
3125 for ( i = 0; i < n; ++i )
3130 #ifdef YY_NEED_STRLEN
3131 #ifdef YY_USE_PROTOS
3132 static int yy_flex_strlen( yyconst char *s )
3134 static int yy_flex_strlen( s )
3139 for ( n = 0; s[n]; ++n )
3147 #ifdef YY_USE_PROTOS
3148 static void *yy_flex_alloc( yy_size_t size )
3150 static void *yy_flex_alloc( size )
3154 return (void *) malloc( size );
3157 #ifdef YY_USE_PROTOS
3158 static void *yy_flex_realloc( void *ptr, yy_size_t size )
3160 static void *yy_flex_realloc( ptr, size )
3165 /* The cast to (char *) in the following accommodates both
3166 * implementations that use char* generic pointers, and those
3167 * that use void* generic pointers. It works with the latter
3168 * because both ANSI C and C++ allow castless assignment from
3169 * any pointer type to void*, and deal with argument conversions
3170 * as though doing an assignment.
3172 return (void *) realloc( (char *) ptr, size );
3175 #ifdef YY_USE_PROTOS
3176 static void yy_flex_free( void *ptr )
3178 static void yy_flex_free( ptr )