4 #define YY_INT_ALIGNED short int
6 /* A lexical scanner generated by flex */
9 #define YY_FLEX_MAJOR_VERSION 2
10 #define YY_FLEX_MINOR_VERSION 5
11 #define YY_FLEX_SUBMINOR_VERSION 35
12 #if YY_FLEX_SUBMINOR_VERSION > 0
16 /* First, we deal with platform-specific or compiler-specific issues. */
18 /* begin standard C headers. */
24 /* end standard C headers. */
26 /* flex integer type definitions */
31 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
33 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
35 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
36 * if you want the limit (max/min) macros for int types.
38 #ifndef __STDC_LIMIT_MACROS
39 #define __STDC_LIMIT_MACROS 1
43 typedef int8_t flex_int8_t;
44 typedef uint8_t flex_uint8_t;
45 typedef int16_t flex_int16_t;
46 typedef uint16_t flex_uint16_t;
47 typedef int32_t flex_int32_t;
48 typedef uint32_t flex_uint32_t;
50 typedef signed char flex_int8_t;
51 typedef short int flex_int16_t;
52 typedef int flex_int32_t;
53 typedef unsigned char flex_uint8_t;
54 typedef unsigned short int flex_uint16_t;
55 typedef unsigned int flex_uint32_t;
57 /* Limits of integral types. */
59 #define INT8_MIN (-128)
62 #define INT16_MIN (-32767-1)
65 #define INT32_MIN (-2147483647-1)
68 #define INT8_MAX (127)
71 #define INT16_MAX (32767)
74 #define INT32_MAX (2147483647)
77 #define UINT8_MAX (255U)
80 #define UINT16_MAX (65535U)
83 #define UINT32_MAX (4294967295U)
88 #endif /* ! FLEXINT_H */
92 /* The "const" storage-class-modifier is valid. */
95 #else /* ! __cplusplus */
97 /* C99 requires __STDC__ to be defined as 1. */
98 #if defined (__STDC__)
102 #endif /* defined (__STDC__) */
103 #endif /* ! __cplusplus */
106 #define yyconst const
111 /* Returned upon end-of-file. */
114 /* Promotes a possibly negative, possibly signed char to an unsigned
115 * integer for use as an array index. If the signed char is negative,
116 * we want to instead treat it as an 8-bit unsigned char, hence the
119 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
121 /* Enter a start condition. This macro really ought to take a parameter,
122 * but we do it the disgusting crufty way forced on us by the ()-less
123 * definition of BEGIN.
125 #define BEGIN (yy_start) = 1 + 2 *
127 /* Translate the current start state into a value that can be later handed
128 * to BEGIN to return to the state. The YYSTATE alias is for lex
131 #define YY_START (((yy_start) - 1) / 2)
132 #define YYSTATE YY_START
134 /* Action number for EOF rule of a given start state. */
135 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
137 /* Special action meaning "start processing a new file". */
138 #define YY_NEW_FILE yyrestart(yyin )
140 #define YY_END_OF_BUFFER_CHAR 0
142 /* Size of default input buffer. */
145 /* On IA-64, the buffer size is 16k, not 8k.
146 * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
147 * Ditto for the __ia64__ case accordingly.
149 #define YY_BUF_SIZE 32768
151 #define YY_BUF_SIZE 16384
152 #endif /* __ia64__ */
155 /* The state buf must be large enough to hold one state per character in the main buffer.
157 #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
159 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
160 #define YY_TYPEDEF_YY_BUFFER_STATE
161 typedef struct yy_buffer_state *YY_BUFFER_STATE;
166 extern FILE *yyin, *yyout;
168 #define EOB_ACT_CONTINUE_SCAN 0
169 #define EOB_ACT_END_OF_FILE 1
170 #define EOB_ACT_LAST_MATCH 2
172 #define YY_LESS_LINENO(n)
174 /* Return all but the first "n" matched characters back to the input stream. */
178 /* Undo effects of setting up yytext. */ \
179 int yyless_macro_arg = (n); \
180 YY_LESS_LINENO(yyless_macro_arg);\
181 *yy_cp = (yy_hold_char); \
182 YY_RESTORE_YY_MORE_OFFSET \
183 (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
184 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
188 #define unput(c) yyunput( c, (yytext_ptr) )
190 #ifndef YY_TYPEDEF_YY_SIZE_T
191 #define YY_TYPEDEF_YY_SIZE_T
192 typedef size_t yy_size_t;
195 #ifndef YY_STRUCT_YY_BUFFER_STATE
196 #define YY_STRUCT_YY_BUFFER_STATE
197 struct yy_buffer_state
201 char *yy_ch_buf; /* input buffer */
202 char *yy_buf_pos; /* current position in input buffer */
204 /* Size of input buffer in bytes, not including room for EOB
207 yy_size_t yy_buf_size;
209 /* Number of characters read into yy_ch_buf, not including EOB
214 /* Whether we "own" the buffer - i.e., we know we created it,
215 * and can realloc() it to grow it, and should free() it to
218 int yy_is_our_buffer;
220 /* Whether this is an "interactive" input source; if so, and
221 * if we're using stdio for input, then we want to use getc()
222 * instead of fread(), to make sure we stop fetching input after
225 int yy_is_interactive;
227 /* Whether we're considered to be at the beginning of a line.
228 * If so, '^' rules will be active on the next match, otherwise
233 int yy_bs_lineno; /**< The line count. */
234 int yy_bs_column; /**< The column count. */
236 /* Whether to try to fill the input buffer when we reach the
241 int yy_buffer_status;
243 #define YY_BUFFER_NEW 0
244 #define YY_BUFFER_NORMAL 1
245 /* When an EOF's been seen but there's still some text to process
246 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
247 * shouldn't try reading from the input source any more. We might
248 * still have a bunch of tokens to match, though, because of
249 * possible backing-up.
251 * When we actually see the EOF, we change the status to "new"
252 * (via yyrestart()), so that the user can continue scanning by
253 * just pointing yyin at a new input file.
255 #define YY_BUFFER_EOF_PENDING 2
258 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
260 /* Stack of input buffers. */
261 static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
262 static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
263 static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
265 /* We provide macros for accessing buffer states in case in the
266 * future we want to put the buffer states in a more general
269 * Returns the top of the stack, or NULL.
271 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
272 ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
275 /* Same as previous macro, but useful when we know that the buffer stack is not
276 * NULL or when we need an lvalue. For internal use only.
278 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
280 /* yy_hold_char holds the character lost when yytext is formed. */
281 static char yy_hold_char;
282 static int yy_n_chars; /* number of characters read into yy_ch_buf */
285 /* Points to current character in buffer. */
286 static char *yy_c_buf_p = (char *) 0;
287 static int yy_init = 0; /* whether we need to initialize */
288 static int yy_start = 0; /* start state number */
290 /* Flag which is used to allow yywrap()'s to do buffer switches
291 * instead of setting up a fresh yyin. A bit of a hack ...
293 static int yy_did_buffer_switch_on_eof;
295 void yyrestart (FILE *input_file );
296 void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer );
297 YY_BUFFER_STATE yy_create_buffer (FILE *file,int size );
298 void yy_delete_buffer (YY_BUFFER_STATE b );
299 void yy_flush_buffer (YY_BUFFER_STATE b );
300 void yypush_buffer_state (YY_BUFFER_STATE new_buffer );
301 void yypop_buffer_state (void );
303 static void yyensure_buffer_stack (void );
304 static void yy_load_buffer_state (void );
305 static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file );
307 #define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER )
309 YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size );
310 YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str );
311 YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len );
313 void *yyalloc (yy_size_t );
314 void *yyrealloc (void *,yy_size_t );
315 void yyfree (void * );
317 #define yy_new_buffer yy_create_buffer
319 #define yy_set_interactive(is_interactive) \
321 if ( ! YY_CURRENT_BUFFER ){ \
322 yyensure_buffer_stack (); \
323 YY_CURRENT_BUFFER_LVALUE = \
324 yy_create_buffer(yyin,YY_BUF_SIZE ); \
326 YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
329 #define yy_set_bol(at_bol) \
331 if ( ! YY_CURRENT_BUFFER ){\
332 yyensure_buffer_stack (); \
333 YY_CURRENT_BUFFER_LVALUE = \
334 yy_create_buffer(yyin,YY_BUF_SIZE ); \
336 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
339 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
341 /* Begin user sect3 */
343 typedef unsigned char YY_CHAR;
345 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
347 typedef int yy_state_type;
354 #define yytext_ptr yytext
356 static yy_state_type yy_get_previous_state (void );
357 static yy_state_type yy_try_NUL_trans (yy_state_type current_state );
358 static int yy_get_next_buffer (void );
359 static void yy_fatal_error (yyconst char msg[] );
361 /* Done after the current pattern has been matched and before the
362 * corresponding action - sets up yytext.
364 #define YY_DO_BEFORE_ACTION \
365 (yytext_ptr) = yy_bp; \
366 yyleng = (size_t) (yy_cp - yy_bp); \
367 (yy_hold_char) = *yy_cp; \
369 (yy_c_buf_p) = yy_cp;
371 #define YY_NUM_RULES 121
372 #define YY_END_OF_BUFFER 122
373 /* This struct is not used in this scanner,
374 but its presence is necessary. */
377 flex_int32_t yy_verify;
380 static yyconst flex_int16_t yy_acclist[652] =
382 122, 118, 121, 117, 118, 121, 1, 119, 121, 118,
383 119, 121, 118, 121, 118, 121, 118, 121, 106, 118,
384 121, 106, 118, 121, 118, 121, 110, 118, 121, 110,
385 118, 121, 110, 118, 121, 110, 118, 121, 117, 118,
386 121, 118, 121, 118, 121, 110, 118, 121, 110, 118,
387 121, 29, 118, 121, 1, 30, 119, 121, 29, 118,
388 119, 121, 29, 118, 121, 29, 118, 121, 29, 118,
389 121, 54, 118, 121, 1, 55, 119, 121, 54, 118,
390 119, 121, 46, 54, 118, 121, 54, 118, 121, 54,
391 118, 121, 54, 118, 121, 52, 54, 118, 121, 53,
393 54, 118, 121, 54, 118, 121, 54, 118, 121, 50,
394 118, 121, 1, 51, 119, 121, 50, 118, 119, 121,
395 49, 50, 118, 121, 50, 118, 121, 50, 118, 121,
396 63, 118, 121, 118, 121, 110, 118, 121, 110, 118,
397 121, 110, 118, 121, 114, 118, 121, 66, 118, 121,
398 1, 67, 119, 121, 66, 118, 119, 121, 65, 66,
399 118, 121, 66, 118, 121, 66, 118, 121, 118, 121,
400 118, 121, 118, 121, 118, 121, 110, 118, 121, 110,
401 118, 121, 110, 118, 121, 110, 118, 121, 110, 118,
402 121, 110, 118, 121, 110, 118, 121, 110, 118, 121,
404 110, 118, 121, 110, 118, 121, 110, 118, 121, 110,
405 118, 121, 115, 118, 121, 116, 118, 121, 103, 118,
406 121, 47, 118, 121, 104, 118, 121, 105, 118, 121,
407 118, 121, 110, 118, 121, 110, 118, 121, 110, 118,
408 121, 110, 118, 121, 110, 118, 121, 110, 118, 121,
409 110, 118, 121, 110, 118, 121, 110, 118, 121, 110,
410 118, 121, 110, 118, 121, 110, 118, 121, 10, 118,
411 121, 10, 118, 119, 121, 10, 118, 121, 10, 118,
412 121, 10, 118, 121, 10, 118, 121, 15, 118, 121,
413 15, 118, 119, 121, 15, 118, 121, 15, 118, 121,
415 15, 118, 121, 15, 118, 121, 18, 118, 121, 18,
416 118, 119, 121, 18, 118, 121, 18, 118, 121, 106,
417 23, 106, 106, 109, 110, 110, 110, 110, 110, 36,
418 110, 110, 28, 24, 45, 38, 48, 25, 110, 110,
419 110, 64, 26, 113, 112, 110, 110, 110, 110, 110,
420 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
421 110, 110, 110, 27, 110, 110, 110, 110, 110, 110,
422 110, 110, 110, 110, 110, 110, 9, 7, 14, 13,
423 11, 12, 14, 17, 16, 111, 111, 106, 3, 106,
424 106, 109, 107, 108, 110, 110, 110, 110, 31, 35,
426 110, 110, 43, 39, 41, 19, 20, 110, 110, 110,
427 81, 21, 110, 110, 110, 110, 110, 110, 110, 76,
428 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
429 110, 110, 110, 22, 110, 110, 110, 110, 110, 110,
430 110, 110, 110, 110, 110, 110, 12, 109, 107, 108,
431 110, 58, 110, 110, 110, 37, 32, 33, 34, 110,
432 110, 44, 40, 42, 110, 62, 110, 61, 110, 6,
433 110, 79, 110, 110, 110, 110, 71, 110, 110, 74,
434 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
435 110, 110, 68, 110, 110, 110, 110, 71, 110, 110,
437 110, 110, 91, 110, 110, 110, 110, 97, 110, 8,
438 109, 56, 110, 57, 110, 59, 110, 110, 110, 110,
439 61, 110, 80, 110, 110, 77, 110, 110, 110, 110,
440 110, 110, 75, 110, 110, 110, 110, 70, 110, 110,
441 110, 92, 110, 110, 110, 110, 96, 110, 110, 110,
442 110, 110, 110, 110, 110, 110, 78, 110, 110, 110,
443 110, 110, 82, 110, 88, 110, 72, 110, 69, 110,
444 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
445 4, 110, 110, 110, 110, 110, 83, 110, 110, 110,
446 110, 87, 110, 110, 110, 110, 110, 93, 110, 94,
448 110, 110, 110, 110, 110, 86, 110, 110, 89, 110,
449 90, 110, 110, 73, 110, 110, 110, 110, 110, 110,
450 110, 85, 110, 84, 110, 110, 110, 99, 110, 110,
451 110, 110, 4, 2, 101, 110, 110, 98, 110, 110,
452 100, 110, 120, 5, 110, 102, 110, 110, 95, 110,
456 static yyconst flex_int16_t yy_accept[562] =
458 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
459 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
460 1, 1, 1, 1, 1, 2, 4, 7, 10, 13,
461 15, 17, 19, 22, 25, 27, 30, 33, 36, 39,
462 42, 44, 46, 49, 52, 55, 59, 63, 66, 69,
463 72, 75, 79, 83, 87, 90, 93, 96, 100, 104,
464 107, 110, 113, 117, 121, 125, 128, 131, 134, 136,
465 139, 142, 145, 148, 151, 155, 159, 163, 166, 169,
466 171, 173, 175, 177, 180, 183, 186, 189, 192, 195,
467 198, 201, 204, 207, 210, 213, 216, 219, 222, 225,
469 228, 231, 233, 236, 239, 242, 245, 248, 251, 254,
470 257, 260, 263, 266, 269, 272, 276, 279, 282, 285,
471 288, 291, 295, 298, 301, 304, 307, 310, 314, 317,
472 320, 320, 320, 321, 322, 322, 322, 323, 323, 323,
473 324, 325, 326, 326, 327, 328, 329, 330, 330, 330,
474 330, 330, 330, 330, 330, 330, 331, 332, 333, 334,
475 334, 334, 334, 334, 334, 335, 335, 336, 336, 336,
476 337, 338, 339, 339, 340, 341, 342, 343, 343, 344,
477 344, 345, 345, 345, 346, 347, 348, 349, 350, 351,
478 352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
480 362, 363, 364, 365, 365, 366, 367, 368, 369, 370,
481 371, 372, 373, 374, 375, 376, 377, 378, 378, 378,
482 378, 379, 379, 380, 380, 380, 381, 382, 382, 384,
483 385, 386, 387, 387, 388, 389, 389, 390, 391, 392,
484 393, 393, 394, 395, 396, 397, 398, 399, 399, 399,
485 399, 399, 399, 399, 399, 400, 400, 400, 401, 401,
486 401, 402, 403, 403, 404, 404, 404, 404, 405, 406,
487 406, 407, 407, 407, 408, 409, 410, 411, 412, 412,
488 412, 413, 413, 413, 414, 415, 416, 417, 418, 419,
489 420, 422, 423, 424, 425, 426, 427, 428, 429, 430,
491 431, 432, 433, 434, 434, 435, 436, 437, 438, 439,
492 440, 441, 442, 443, 444, 445, 446, 447, 447, 448,
493 448, 449, 450, 450, 451, 451, 452, 454, 455, 456,
494 456, 456, 456, 457, 457, 457, 458, 458, 459, 460,
495 460, 461, 462, 462, 463, 464, 465, 465, 466, 468,
496 470, 470, 471, 472, 474, 475, 476, 477, 479, 480,
497 482, 483, 484, 485, 486, 487, 488, 489, 490, 491,
498 492, 493, 495, 496, 497, 498, 500, 501, 502, 503,
499 505, 506, 507, 508, 510, 510, 511, 511, 511, 512,
500 514, 516, 518, 518, 518, 518, 518, 518, 518, 518,
502 519, 520, 520, 520, 521, 523, 525, 526, 528, 529,
503 530, 531, 532, 533, 535, 536, 537, 538, 540, 541,
504 542, 544, 545, 546, 547, 549, 550, 551, 552, 553,
505 553, 553, 553, 553, 553, 553, 553, 554, 555, 555,
506 555, 556, 557, 559, 560, 561, 562, 563, 565, 567,
507 569, 571, 572, 573, 574, 575, 576, 577, 578, 579,
508 580, 581, 581, 581, 582, 582, 582, 582, 583, 584,
509 584, 584, 585, 586, 587, 589, 590, 591, 592, 594,
510 595, 596, 597, 598, 600, 602, 603, 604, 604, 604,
511 604, 604, 604, 604, 605, 606, 606, 606, 608, 609,
513 611, 613, 614, 616, 617, 618, 619, 620, 621, 622,
514 622, 622, 622, 622, 622, 622, 622, 622, 622, 622,
515 622, 624, 626, 627, 628, 630, 631, 632, 633, 633,
516 634, 634, 634, 634, 634, 634, 635, 635, 637, 638,
517 640, 641, 643, 643, 643, 644, 644, 644, 645, 646,
518 648, 648, 648, 649, 649, 649, 651, 651, 651, 652,
522 static yyconst flex_int32_t yy_ec[256] =
524 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
525 1, 4, 5, 1, 1, 1, 1, 1, 1, 1,
526 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
527 1, 6, 1, 7, 8, 1, 9, 1, 10, 11,
528 12, 13, 1, 1, 1, 14, 15, 16, 17, 18,
529 18, 18, 18, 18, 18, 19, 19, 20, 1, 21,
530 1, 22, 1, 1, 23, 23, 23, 23, 24, 23,
531 25, 25, 26, 25, 25, 25, 25, 25, 25, 25,
532 25, 27, 28, 25, 25, 25, 25, 25, 25, 25,
533 29, 30, 31, 1, 32, 1, 33, 34, 35, 36,
535 37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
536 47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
537 57, 25, 58, 1, 59, 1, 1, 1, 1, 1,
538 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
539 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
540 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
541 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
542 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
543 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
544 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
546 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
547 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
548 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
549 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
550 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
554 static yyconst flex_int32_t yy_meta[60] =
556 1, 2, 3, 4, 4, 2, 1, 1, 1, 1,
557 1, 1, 1, 1, 1, 5, 5, 5, 5, 6,
558 1, 1, 7, 7, 8, 8, 8, 8, 1, 1,
559 9, 8, 7, 7, 7, 7, 7, 7, 8, 8,
560 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
561 8, 8, 8, 8, 8, 8, 8, 1, 1
564 static yyconst flex_int16_t yy_base[595] =
566 0, 58, 58, 65, 69, 126, 80, 85, 74, 87,
567 93, 113, 172, 1329, 131, 136, 225, 1328, 100, 147,
568 135, 159, 175, 190, 1335, 1338, 1338, 1338, 1338, 1304,
569 225, 62, 231, 237, 0, 1313, 42, 150, 60, 232,
570 63, 164, 156, 77, 1338, 1338, 1338, 1317, 173, 1303,
571 1338, 1338, 1338, 1338, 245, 104, 0, 1338, 1338, 279,
572 1271, 1338, 1338, 1338, 1338, 0, 262, 1338, 144, 110,
573 161, 143, 1338, 1338, 1338, 1338, 1338, 0, 282, 275,
574 214, 279, 283, 171, 285, 263, 182, 138, 219, 266,
575 179, 287, 295, 270, 292, 1338, 1338, 1338, 1338, 1338,
577 1338, 296, 297, 298, 311, 288, 170, 310, 226, 308,
578 326, 329, 299, 307, 1338, 1338, 1314, 351, 359, 360,
579 1338, 1338, 1313, 365, 366, 371, 1324, 1323, 373, 377,
580 1315, 1314, 373, 1338, 1320, 377, 383, 390, 0, 397,
581 1302, 1301, 1300, 365, 302, 332, 385, 417, 1269, 1281,
582 418, 1276, 389, 380, 310, 1338, 198, 402, 1338, 0,
583 1306, 405, 1305, 1304, 1338, 1310, 1338, 428, 1266, 1338,
584 1338, 1338, 1308, 406, 408, 409, 1338, 1296, 1296, 1305,
585 426, 440, 1276, 1277, 62, 415, 416, 420, 417, 426,
586 433, 432, 440, 237, 434, 448, 441, 453, 454, 456,
588 458, 457, 1338, 1302, 463, 465, 467, 469, 470, 471,
589 473, 474, 476, 475, 481, 480, 1338, 500, 508, 527,
590 1338, 529, 1338, 532, 534, 540, 1338, 1289, 1338, 1338,
591 1338, 1338, 1293, 1292, 534, 1298, 1338, 538, 0, 1280,
592 0, 1279, 1278, 519, 479, 521, 524, 1260, 1247, 1249,
593 1236, 1241, 1248, 1233, 1338, 1257, 1231, 1338, 1230, 1246,
594 528, 506, 1259, 1338, 1275, 1274, 1273, 1338, 1338, 1279,
595 1338, 1246, 1277, 1338, 538, 540, 542, 1338, 563, 1276,
596 1338, 1247, 555, 544, 555, 547, 556, 557, 558, 559,
597 1257, 560, 561, 562, 567, 564, 563, 568, 570, 574,
599 576, 575, 582, 1273, 1338, 580, 589, 592, 584, 581,
600 590, 602, 604, 608, 613, 586, 614, 633, 1338, 635,
601 1255, 1254, 1253, 1252, 1251, 620, 1250, 622, 624, 1236,
602 1215, 1230, 1338, 1229, 596, 1338, 1229, 1338, 1338, 1210,
603 629, 635, 1237, 1338, 1338, 1338, 1218, 630, 1241, 1240,
604 654, 1338, 632, 1239, 638, 639, 641, 1238, 642, 1237,
605 643, 645, 646, 647, 649, 644, 662, 666, 654, 648,
606 650, 1236, 668, 672, 659, 677, 660, 678, 684, 1235,
607 685, 686, 687, 1234, 711, 1338, 713, 719, 1233, 1232,
608 1231, 1230, 1205, 1207, 724, 1197, 1199, 1208, 1211, 690,
610 698, 0, 1190, 707, 708, 1222, 712, 1221, 715, 716,
611 717, 718, 719, 1220, 720, 721, 722, 1219, 723, 725,
612 1218, 727, 726, 730, 740, 731, 732, 735, 741, 1193,
613 1186, 760, 1199, 1186, 1183, 1174, 745, 751, 1194, 1181,
614 755, 761, 1188, 760, 763, 766, 769, 1177, 1162, 1161,
615 1160, 770, 771, 773, 774, 775, 777, 778, 779, 784,
616 783, 1118, 1093, 825, 1082, 753, 1065, 793, 786, 1085,
617 1051, 788, 794, 797, 1059, 789, 799, 802, 1050, 790,
618 813, 800, 792, 1035, 965, 819, 830, 949, 932, 975,
619 946, 933, 939, 849, 850, 840, 858, 957, 841, 946,
621 945, 843, 940, 833, 834, 845, 842, 846, 847, 866,
622 871, 936, 898, 887, 878, 883, 890, 894, 902, 873,
623 884, 866, 854, 864, 855, 856, 878, 885, 516, 1338,
624 464, 479, 921, 914, 929, 1338, 922, 411, 905, 367,
625 897, 304, 285, 948, 1338, 939, 945, 1338, 863, 238,
626 178, 945, 916, 127, 952, 117, 970, 972, 1338, 1338,
627 989, 998, 1007, 1016, 1025, 1034, 1043, 1052, 1055, 1059,
628 1067, 1076, 1085, 1090, 1099, 1108, 1113, 1116, 1119, 1127,
629 1136, 1145, 1154, 1159, 1168, 1176, 1178, 1182, 1186, 1193,
630 1197, 1205, 1214, 1223
634 static yyconst flex_int16_t yy_def[595] =
636 560, 1, 561, 561, 562, 562, 563, 563, 1, 1,
637 564, 564, 1, 13, 1, 1, 1, 17, 565, 565,
638 566, 566, 567, 567, 560, 560, 560, 560, 560, 568,
639 560, 560, 560, 560, 569, 570, 570, 570, 570, 560,
640 560, 560, 570, 570, 560, 560, 560, 560, 560, 560,
641 560, 560, 560, 560, 560, 560, 571, 560, 560, 560,
642 560, 560, 560, 560, 560, 572, 560, 560, 560, 570,
643 570, 570, 560, 560, 560, 560, 560, 573, 560, 560,
644 560, 569, 574, 570, 570, 570, 570, 570, 570, 570,
645 570, 570, 570, 570, 570, 560, 560, 560, 560, 560,
647 560, 560, 570, 570, 570, 570, 570, 570, 570, 570,
648 570, 570, 570, 570, 560, 560, 560, 560, 560, 560,
649 560, 560, 560, 560, 560, 560, 560, 560, 560, 560,
650 560, 575, 560, 560, 576, 560, 560, 560, 577, 560,
651 578, 570, 579, 570, 570, 570, 570, 560, 560, 560,
652 560, 560, 560, 560, 560, 560, 570, 570, 560, 580,
653 560, 560, 560, 560, 560, 581, 560, 560, 560, 560,
654 560, 560, 582, 570, 570, 570, 560, 560, 560, 583,
655 560, 560, 584, 560, 570, 570, 570, 570, 570, 570,
656 570, 570, 570, 570, 570, 570, 570, 570, 570, 570,
658 570, 570, 560, 585, 570, 570, 570, 570, 570, 570,
659 570, 570, 570, 570, 570, 570, 560, 560, 560, 560,
660 560, 586, 560, 560, 560, 560, 560, 560, 560, 560,
661 560, 560, 560, 560, 560, 576, 560, 560, 577, 578,
662 587, 588, 589, 570, 570, 570, 570, 560, 560, 560,
663 560, 560, 560, 560, 560, 560, 560, 560, 560, 560,
664 570, 570, 560, 560, 560, 560, 560, 560, 560, 581,
665 560, 560, 582, 560, 570, 570, 570, 560, 560, 583,
666 560, 584, 574, 570, 570, 570, 570, 570, 570, 570,
667 570, 570, 570, 570, 570, 570, 570, 570, 570, 570,
669 570, 570, 570, 585, 560, 570, 570, 570, 570, 570,
670 570, 570, 570, 570, 570, 570, 570, 590, 560, 560,
671 591, 588, 560, 589, 579, 570, 570, 570, 570, 560,
672 560, 560, 560, 560, 560, 560, 560, 560, 560, 560,
673 570, 570, 560, 560, 560, 560, 560, 570, 570, 570,
674 560, 560, 570, 570, 570, 570, 570, 570, 570, 570,
675 570, 570, 570, 570, 570, 570, 570, 570, 570, 570,
676 570, 570, 570, 570, 570, 570, 570, 570, 570, 570,
677 570, 570, 570, 570, 560, 560, 590, 560, 591, 570,
678 570, 570, 560, 560, 560, 560, 560, 560, 560, 570,
680 570, 592, 560, 570, 570, 570, 570, 570, 570, 570,
681 570, 570, 570, 570, 570, 570, 570, 570, 570, 570,
682 570, 570, 570, 570, 570, 570, 570, 570, 570, 560,
683 560, 560, 560, 560, 560, 560, 570, 570, 560, 560,
684 570, 570, 570, 570, 570, 570, 570, 570, 570, 570,
685 570, 570, 570, 570, 570, 570, 570, 570, 570, 570,
686 570, 560, 560, 560, 560, 560, 560, 570, 570, 560,
687 560, 570, 570, 570, 570, 570, 570, 570, 570, 570,
688 570, 570, 570, 570, 570, 570, 570, 560, 560, 560,
689 560, 560, 560, 570, 570, 560, 560, 570, 570, 570,
691 570, 570, 570, 570, 570, 570, 570, 570, 570, 560,
692 560, 593, 560, 560, 560, 560, 560, 560, 560, 560,
693 570, 570, 570, 570, 570, 570, 570, 570, 593, 560,
694 560, 560, 560, 560, 560, 560, 594, 570, 570, 570,
695 570, 570, 560, 560, 560, 560, 594, 560, 570, 570,
696 560, 560, 570, 560, 560, 570, 560, 560, 560, 0,
697 560, 560, 560, 560, 560, 560, 560, 560, 560, 560,
698 560, 560, 560, 560, 560, 560, 560, 560, 560, 560,
699 560, 560, 560, 560, 560, 560, 560, 560, 560, 560,
704 static yyconst flex_int16_t yy_nxt[1398] =
706 26, 27, 28, 27, 29, 27, 26, 26, 26, 30,
707 26, 26, 26, 31, 32, 33, 34, 34, 34, 35,
708 26, 26, 36, 36, 36, 36, 36, 36, 26, 26,
709 26, 36, 36, 36, 37, 36, 38, 39, 36, 36,
710 36, 36, 36, 36, 36, 36, 36, 36, 36, 36,
711 36, 36, 36, 36, 36, 36, 36, 26, 26, 40,
712 46, 143, 47, 40, 151, 41, 42, 46, 151, 47,
713 48, 52, 49, 53, 134, 54, 135, 48, 55, 143,
714 68, 143, 63, 56, 64, 144, 65, 63, 69, 64,
715 50, 65, 67, 68, 41, 75, 143, 76, 57, 77,
717 284, 69, 28, 147, 116, 43, 152, 44, 70, 66,
718 36, 71, 117, 158, 66, 75, 165, 76, 166, 77,
719 79, 70, 78, 36, 71, 72, 58, 59, 52, 143,
720 53, 73, 54, 60, 61, 55, 143, 28, 72, 122,
721 56, 98, 78, 41, 73, 26, 98, 123, 118, 28,
722 26, 116, 118, 174, 119, 57, 172, 143, 173, 120,
723 124, 28, 143, 122, 124, 36, 125, 36, 36, 143,
724 36, 126, 36, 36, 151, 143, 259, 28, 151, 128,
725 143, 191, 176, 58, 59, 80, 81, 129, 96, 143,
726 143, 82, 28, 96, 128, 145, 153, 130, 143, 146,
728 83, 143, 129, 154, 84, 157, 85, 86, 87, 88,
729 175, 155, 89, 209, 554, 90, 152, 143, 91, 92,
730 185, 156, 93, 72, 94, 95, 179, 190, 180, 96,
731 97, 99, 194, 148, 261, 100, 101, 148, 143, 102,
732 133, 133, 133, 133, 136, 143, 137, 137, 137, 138,
733 136, 161, 140, 140, 140, 140, 143, 143, 103, 104,
734 105, 106, 107, 151, 192, 89, 212, 151, 90, 108,
735 109, 110, 111, 293, 162, 112, 113, 94, 114, 149,
736 168, 150, 143, 151, 168, 143, 139, 151, 178, 143,
737 133, 133, 133, 133, 181, 181, 181, 181, 182, 182,
739 182, 182, 163, 164, 143, 152, 143, 143, 203, 189,
740 204, 143, 193, 184, 143, 200, 143, 143, 143, 169,
741 551, 143, 152, 143, 186, 152, 143, 143, 187, 143,
742 143, 188, 201, 208, 197, 198, 195, 186, 202, 196,
743 205, 213, 210, 206, 188, 143, 199, 207, 143, 259,
744 211, 143, 218, 202, 245, 216, 218, 189, 214, 260,
745 151, 220, 221, 219, 151, 222, 224, 151, 197, 215,
746 224, 151, 226, 227, 217, 230, 226, 225, 151, 230,
747 199, 246, 151, 228, 143, 229, 143, 231, 235, 235,
748 235, 235, 238, 238, 238, 238, 136, 244, 137, 137,
750 137, 138, 152, 136, 143, 138, 138, 138, 138, 152,
751 136, 265, 140, 140, 140, 140, 256, 247, 148, 151,
752 152, 143, 148, 151, 251, 143, 252, 143, 143, 168,
753 143, 257, 253, 168, 143, 143, 143, 258, 275, 143,
754 254, 181, 181, 181, 181, 143, 255, 285, 286, 277,
755 262, 143, 143, 143, 276, 182, 182, 182, 182, 143,
756 143, 152, 266, 267, 149, 287, 150, 143, 169, 288,
757 184, 152, 143, 143, 294, 143, 143, 143, 289, 290,
758 295, 296, 143, 291, 143, 292, 143, 297, 143, 143,
759 143, 298, 143, 143, 143, 143, 300, 303, 143, 143,
761 143, 218, 310, 299, 308, 218, 301, 302, 313, 220,
762 221, 543, 219, 222, 251, 306, 290, 314, 312, 316,
763 307, 309, 530, 327, 315, 143, 311, 317, 220, 221,
764 220, 221, 220, 224, 220, 226, 227, 224, 143, 226,
765 143, 320, 227, 143, 225, 320, 228, 143, 319, 235,
766 235, 235, 235, 238, 238, 238, 238, 143, 342, 143,
767 341, 143, 329, 143, 351, 352, 143, 328, 351, 326,
768 182, 182, 182, 182, 143, 143, 143, 143, 143, 143,
769 143, 143, 143, 143, 349, 184, 143, 143, 348, 143,
770 357, 359, 350, 143, 143, 143, 353, 355, 360, 143,
772 143, 143, 358, 143, 354, 143, 356, 365, 143, 143,
773 361, 143, 366, 367, 363, 362, 370, 372, 364, 377,
774 369, 143, 368, 143, 375, 374, 371, 143, 376, 373,
775 378, 383, 143, 143, 385, 386, 320, 227, 385, 143,
776 320, 143, 379, 143, 381, 382, 380, 397, 143, 143,
777 384, 143, 388, 255, 143, 351, 352, 143, 143, 351,
778 143, 143, 143, 143, 143, 143, 143, 143, 143, 143,
779 390, 391, 400, 143, 392, 401, 404, 410, 143, 143,
780 350, 143, 411, 412, 407, 143, 419, 143, 405, 413,
781 406, 143, 409, 408, 415, 414, 143, 143, 416, 418,
783 417, 421, 420, 143, 143, 143, 143, 422, 424, 143,
784 425, 423, 385, 386, 385, 386, 385, 143, 385, 428,
785 385, 386, 426, 416, 385, 432, 143, 143, 427, 432,
786 429, 143, 388, 437, 143, 143, 143, 143, 143, 143,
787 143, 143, 143, 441, 143, 143, 143, 438, 443, 143,
788 143, 143, 447, 448, 143, 444, 450, 453, 454, 143,
789 143, 432, 442, 449, 143, 432, 446, 445, 452, 455,
790 143, 457, 461, 451, 143, 464, 464, 464, 464, 143,
791 143, 456, 143, 458, 459, 143, 460, 469, 143, 143,
792 143, 468, 143, 143, 143, 474, 143, 143, 143, 475,
794 472, 473, 143, 143, 492, 143, 478, 143, 143, 143,
795 258, 143, 143, 143, 479, 486, 143, 476, 143, 143,
796 477, 143, 484, 485, 480, 481, 490, 494, 483, 499,
797 490, 482, 143, 500, 487, 502, 495, 503, 143, 498,
798 464, 464, 464, 464, 505, 501, 504, 506, 507, 143,
799 516, 517, 143, 143, 516, 517, 518, 519, 519, 520,
800 143, 143, 143, 520, 143, 143, 143, 516, 143, 143,
801 508, 516, 517, 143, 143, 143, 517, 521, 522, 537,
802 523, 525, 143, 143, 516, 143, 509, 524, 516, 526,
803 538, 517, 540, 537, 528, 517, 539, 143, 533, 533,
805 533, 533, 527, 143, 143, 534, 534, 534, 534, 535,
806 535, 535, 535, 536, 532, 553, 143, 535, 535, 535,
807 535, 542, 544, 545, 143, 541, 544, 546, 548, 534,
808 534, 534, 534, 550, 257, 143, 533, 533, 533, 533,
809 536, 531, 530, 548, 535, 535, 535, 535, 549, 544,
810 545, 548, 556, 544, 552, 552, 552, 552, 555, 143,
811 552, 552, 552, 552, 143, 143, 548, 557, 557, 557,
812 557, 558, 559, 558, 559, 558, 143, 558, 515, 514,
813 513, 512, 511, 510, 143, 557, 557, 557, 557, 45,
814 45, 45, 45, 45, 45, 45, 45, 45, 51, 51,
816 51, 51, 51, 51, 51, 51, 51, 62, 62, 62,
817 62, 62, 62, 62, 62, 62, 74, 74, 74, 74,
818 74, 74, 74, 74, 74, 115, 115, 115, 115, 115,
819 115, 115, 115, 115, 121, 121, 121, 121, 121, 121,
820 121, 121, 121, 127, 127, 127, 127, 127, 127, 127,
821 127, 127, 131, 131, 143, 131, 131, 131, 131, 131,
822 131, 141, 141, 142, 142, 142, 142, 167, 167, 143,
823 167, 167, 167, 167, 167, 167, 171, 171, 143, 171,
824 171, 171, 171, 171, 171, 177, 177, 497, 177, 177,
825 177, 177, 177, 177, 183, 496, 183, 183, 183, 233,
827 233, 493, 233, 233, 233, 233, 233, 233, 236, 236,
828 236, 236, 236, 236, 236, 236, 236, 239, 491, 239,
829 240, 240, 240, 240, 243, 243, 243, 263, 263, 489,
830 263, 263, 263, 263, 263, 263, 270, 270, 270, 270,
831 270, 270, 270, 270, 270, 273, 273, 273, 273, 273,
832 273, 273, 273, 273, 280, 280, 280, 280, 280, 280,
833 280, 280, 280, 282, 488, 282, 282, 282, 304, 304,
834 304, 304, 304, 304, 304, 304, 304, 318, 318, 143,
835 143, 143, 318, 318, 321, 321, 322, 322, 322, 322,
836 324, 324, 324, 324, 387, 387, 143, 387, 387, 387,
838 387, 389, 389, 389, 389, 439, 439, 143, 439, 439,
839 439, 439, 439, 439, 529, 529, 471, 470, 529, 529,
840 529, 529, 529, 547, 547, 467, 547, 547, 547, 547,
841 547, 547, 466, 254, 465, 463, 462, 143, 143, 143,
842 143, 143, 440, 436, 435, 434, 433, 431, 430, 143,
843 143, 143, 241, 143, 143, 143, 143, 143, 143, 143,
844 143, 403, 402, 399, 398, 396, 395, 394, 393, 143,
845 560, 325, 242, 323, 241, 305, 143, 184, 281, 274,
846 347, 271, 346, 345, 344, 343, 340, 339, 338, 337,
847 336, 335, 334, 333, 332, 331, 330, 325, 323, 241,
849 237, 232, 232, 319, 305, 283, 184, 281, 279, 278,
850 274, 272, 271, 269, 268, 264, 250, 249, 248, 242,
851 143, 241, 237, 234, 232, 230, 230, 223, 217, 170,
852 160, 159, 143, 132, 560, 41, 41, 25, 560, 560,
853 560, 560, 560, 560, 560, 560, 560, 560, 560, 560,
854 560, 560, 560, 560, 560, 560, 560, 560, 560, 560,
855 560, 560, 560, 560, 560, 560, 560, 560, 560, 560,
856 560, 560, 560, 560, 560, 560, 560, 560, 560, 560,
857 560, 560, 560, 560, 560, 560, 560, 560, 560, 560,
858 560, 560, 560, 560, 560, 560, 560
862 static yyconst flex_int16_t yy_chk[1398] =
864 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
865 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
866 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
867 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
868 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
869 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
870 3, 37, 3, 2, 41, 2, 2, 4, 41, 4,
871 3, 5, 4, 5, 32, 5, 32, 4, 5, 39,
872 9, 185, 7, 5, 7, 37, 7, 8, 9, 8,
873 4, 8, 8, 10, 10, 11, 44, 11, 5, 11,
875 185, 10, 19, 39, 19, 2, 41, 2, 9, 7,
876 9, 9, 19, 44, 8, 12, 56, 12, 56, 12,
877 12, 10, 11, 10, 10, 9, 5, 5, 6, 70,
878 6, 9, 6, 6, 6, 6, 556, 21, 10, 21,
879 6, 15, 12, 16, 10, 15, 16, 21, 20, 20,
880 16, 20, 20, 70, 20, 6, 69, 88, 69, 20,
881 22, 22, 72, 22, 22, 15, 22, 15, 15, 38,
882 16, 22, 16, 16, 49, 43, 554, 23, 49, 23,
883 71, 88, 72, 6, 6, 13, 13, 23, 15, 107,
884 84, 13, 24, 16, 24, 38, 42, 24, 91, 38,
886 13, 87, 24, 42, 13, 43, 13, 13, 13, 13,
887 71, 42, 13, 107, 551, 13, 49, 157, 13, 13,
888 84, 42, 13, 13, 13, 13, 81, 87, 81, 13,
889 13, 17, 91, 40, 157, 17, 17, 40, 89, 17,
890 31, 31, 31, 31, 33, 109, 33, 33, 33, 33,
891 34, 55, 34, 34, 34, 34, 194, 550, 17, 17,
892 17, 17, 17, 67, 89, 17, 109, 67, 17, 17,
893 17, 17, 17, 194, 55, 17, 17, 17, 17, 40,
894 60, 40, 86, 79, 60, 90, 33, 79, 80, 94,
895 80, 80, 80, 80, 82, 82, 82, 82, 83, 83,
897 83, 83, 55, 55, 85, 67, 92, 106, 102, 86,
898 102, 95, 90, 83, 93, 94, 103, 104, 113, 60,
899 543, 145, 60, 542, 85, 79, 114, 110, 85, 108,
900 105, 85, 95, 106, 93, 93, 92, 104, 95, 92,
901 103, 110, 108, 103, 104, 111, 93, 105, 112, 155,
902 108, 146, 118, 114, 145, 113, 118, 105, 111, 155,
903 119, 120, 120, 118, 119, 120, 124, 125, 112, 112,
904 124, 125, 126, 126, 120, 129, 126, 124, 130, 130,
905 112, 146, 130, 126, 144, 126, 540, 129, 133, 133,
906 133, 133, 136, 136, 136, 136, 137, 144, 137, 137,
908 137, 137, 119, 138, 147, 138, 138, 138, 138, 125,
909 140, 162, 140, 140, 140, 140, 154, 147, 148, 151,
910 130, 158, 148, 151, 153, 174, 153, 175, 176, 168,
911 538, 154, 153, 168, 186, 187, 189, 154, 174, 188,
912 153, 181, 181, 181, 181, 190, 153, 186, 187, 176,
913 158, 192, 191, 195, 175, 182, 182, 182, 182, 193,
914 197, 151, 162, 162, 148, 188, 148, 196, 168, 189,
915 182, 168, 198, 199, 195, 200, 202, 201, 190, 191,
916 195, 196, 205, 192, 206, 193, 207, 197, 208, 209,
917 210, 198, 211, 212, 214, 213, 200, 202, 245, 216,
919 215, 218, 209, 199, 207, 218, 200, 201, 212, 219,
920 219, 532, 218, 219, 531, 205, 209, 213, 211, 215,
921 206, 208, 529, 245, 214, 262, 210, 216, 220, 220,
922 222, 222, 220, 224, 222, 225, 225, 224, 244, 225,
923 246, 226, 226, 247, 224, 226, 225, 261, 225, 235,
924 235, 235, 235, 238, 238, 238, 238, 275, 262, 276,
925 261, 277, 247, 284, 279, 279, 286, 246, 279, 244,
926 283, 283, 283, 283, 285, 287, 288, 289, 290, 292,
927 293, 294, 297, 296, 276, 283, 295, 298, 275, 299,
928 288, 290, 277, 300, 302, 301, 284, 286, 292, 306,
930 310, 303, 289, 309, 285, 316, 287, 296, 307, 311,
931 293, 308, 297, 298, 295, 294, 301, 303, 295, 310,
932 300, 312, 299, 313, 308, 307, 302, 314, 309, 306,
933 311, 316, 315, 317, 318, 318, 320, 320, 318, 326,
934 320, 328, 312, 329, 314, 315, 313, 335, 341, 348,
935 317, 353, 318, 335, 342, 351, 351, 355, 356, 351,
936 357, 359, 361, 366, 362, 363, 364, 370, 365, 371,
937 326, 328, 341, 369, 329, 342, 353, 362, 375, 377,
938 348, 367, 363, 364, 357, 368, 370, 373, 355, 365,
939 356, 374, 361, 359, 367, 366, 376, 378, 367, 369,
941 368, 373, 371, 379, 381, 382, 383, 374, 376, 400,
942 377, 375, 385, 385, 387, 387, 385, 401, 387, 381,
943 388, 388, 378, 383, 388, 395, 404, 405, 379, 395,
944 382, 407, 387, 400, 409, 410, 411, 412, 413, 415,
945 416, 417, 419, 404, 420, 423, 422, 401, 407, 424,
946 426, 427, 412, 413, 428, 409, 416, 420, 422, 425,
947 429, 432, 405, 415, 437, 432, 411, 410, 419, 423,
948 438, 425, 429, 417, 441, 432, 432, 432, 432, 444,
949 442, 424, 445, 426, 427, 446, 428, 438, 447, 452,
950 453, 437, 454, 455, 456, 444, 457, 458, 459, 445,
952 441, 442, 461, 460, 466, 469, 452, 472, 476, 480,
953 466, 483, 468, 473, 453, 460, 474, 446, 477, 482,
954 447, 478, 458, 459, 454, 455, 464, 468, 457, 473,
955 464, 456, 481, 474, 461, 477, 469, 478, 486, 472,
956 464, 464, 464, 464, 481, 476, 480, 482, 483, 487,
957 494, 495, 504, 505, 494, 495, 496, 496, 496, 497,
958 499, 507, 502, 497, 506, 508, 509, 510, 494, 495,
959 486, 510, 511, 523, 525, 526, 511, 499, 502, 520,
960 504, 506, 549, 524, 516, 522, 487, 505, 516, 507,
961 523, 517, 526, 520, 509, 517, 524, 527, 516, 516,
963 516, 516, 508, 521, 528, 517, 517, 517, 517, 518,
964 518, 518, 518, 519, 515, 549, 541, 519, 519, 519,
965 519, 528, 533, 533, 539, 527, 533, 534, 537, 534,
966 534, 534, 534, 541, 514, 553, 533, 533, 533, 533,
967 535, 513, 512, 537, 535, 535, 535, 535, 539, 544,
968 544, 547, 553, 544, 546, 546, 546, 546, 552, 503,
969 552, 552, 552, 552, 501, 500, 547, 555, 555, 555,
970 555, 557, 557, 558, 558, 557, 498, 558, 493, 492,
971 491, 490, 489, 488, 485, 557, 557, 557, 557, 561,
972 561, 561, 561, 561, 561, 561, 561, 561, 562, 562,
974 562, 562, 562, 562, 562, 562, 562, 563, 563, 563,
975 563, 563, 563, 563, 563, 563, 564, 564, 564, 564,
976 564, 564, 564, 564, 564, 565, 565, 565, 565, 565,
977 565, 565, 565, 565, 566, 566, 566, 566, 566, 566,
978 566, 566, 566, 567, 567, 567, 567, 567, 567, 567,
979 567, 567, 568, 568, 484, 568, 568, 568, 568, 568,
980 568, 569, 569, 570, 570, 570, 570, 571, 571, 479,
981 571, 571, 571, 571, 571, 571, 572, 572, 475, 572,
982 572, 572, 572, 572, 572, 573, 573, 471, 573, 573,
983 573, 573, 573, 573, 574, 470, 574, 574, 574, 575,
985 575, 467, 575, 575, 575, 575, 575, 575, 576, 576,
986 576, 576, 576, 576, 576, 576, 576, 577, 465, 577,
987 578, 578, 578, 578, 579, 579, 579, 580, 580, 463,
988 580, 580, 580, 580, 580, 580, 581, 581, 581, 581,
989 581, 581, 581, 581, 581, 582, 582, 582, 582, 582,
990 582, 582, 582, 582, 583, 583, 583, 583, 583, 583,
991 583, 583, 583, 584, 462, 584, 584, 584, 585, 585,
992 585, 585, 585, 585, 585, 585, 585, 586, 586, 451,
993 450, 449, 586, 586, 587, 587, 588, 588, 588, 588,
994 589, 589, 589, 589, 590, 590, 448, 590, 590, 590,
996 590, 591, 591, 591, 591, 592, 592, 443, 592, 592,
997 592, 592, 592, 592, 593, 593, 440, 439, 593, 593,
998 593, 593, 593, 594, 594, 436, 594, 594, 594, 594,
999 594, 594, 435, 434, 433, 431, 430, 421, 418, 414,
1000 408, 406, 403, 399, 398, 397, 396, 394, 393, 392,
1001 391, 390, 389, 384, 380, 372, 360, 358, 354, 350,
1002 349, 347, 343, 340, 337, 334, 332, 331, 330, 327,
1003 325, 324, 323, 322, 321, 304, 291, 282, 280, 273,
1004 272, 270, 267, 266, 265, 263, 260, 259, 257, 256,
1005 254, 253, 252, 251, 250, 249, 248, 243, 242, 240,
1007 236, 234, 233, 228, 204, 184, 183, 180, 179, 178,
1008 173, 169, 166, 164, 163, 161, 152, 150, 149, 143,
1009 142, 141, 135, 132, 131, 128, 127, 123, 117, 61,
1010 50, 48, 36, 30, 25, 18, 14, 560, 560, 560,
1011 560, 560, 560, 560, 560, 560, 560, 560, 560, 560,
1012 560, 560, 560, 560, 560, 560, 560, 560, 560, 560,
1013 560, 560, 560, 560, 560, 560, 560, 560, 560, 560,
1014 560, 560, 560, 560, 560, 560, 560, 560, 560, 560,
1015 560, 560, 560, 560, 560, 560, 560, 560, 560, 560,
1016 560, 560, 560, 560, 560, 560, 560
1020 extern int yy_flex_debug;
1021 int yy_flex_debug = 0;
1023 static yy_state_type *yy_state_buf=0, *yy_state_ptr=0;
1024 static char *yy_full_match;
1028 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */ \
1029 yy_cp = (yy_full_match); /* restore poss. backed-over text */ \
1034 #define yymore() yymore_used_but_not_detected
1035 #define YY_MORE_ADJ 0
1036 #define YY_RESTORE_YY_MORE_OFFSET
1039 /* GOB C Preprocessor
1040 * Copyright (C) 1999-2000 the Free Software Foundation.
1041 * Copyright (C) 2000 Eazel, Inc.
1042 * Copyright (C) 2001-2009 George (Jiri) Lebl
1044 * Author: George Lebl
1046 * This program is free software; you can redistribute it and/or modify
1047 * it under the terms of the GNU General Public License as published by
1048 * the Free Software Foundation; either version 2 of the License, or
1049 * (at your option) any later version.
1051 * This program is distributed in the hope that it will be useful,
1052 * but WITHOUT ANY WARRANTY; without even the implied warranty of
1053 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1054 * GNU General Public License for more details.
1056 * You should have received a copy of the GNU General Public License
1057 * along with this program; if not, write to the Free Software
1058 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
1069 #include "treefuncs.h"
1074 static int parenth_depth = 0;
1075 static int before_comment
1076 /* New flex is on drugs */
1077 #if defined(FLEX_SCANNER) && ! defined(INITIAL)
1082 static gboolean class_after_c = FALSE;
1083 static int code_type = CCODE;
1084 static int before_string;
1085 static int property_paren_depth = 0;
1087 /* GTK+ doc stuff */
1088 static char *gtk_doc_func = NULL; /* current gtk-doc func */
1089 GHashTable *gtk_doc_hash = NULL;
1091 static GString *cbuf = NULL;
1094 GList *include_files = NULL;
1095 /* 0 no, 1 means yes, 2+ means don't even start looking anymore */
1096 static int look_for_includes = 0;
1099 /* last filename parsed from a #line directive */
1100 char *hline_filename = NULL;
1106 cbuf = g_string_new(NULL);
1108 cbuf = g_string_assign(cbuf, "");
1113 add_to_cbuf(char *s)
1116 cbuf = g_string_new(s);
1118 cbuf = g_string_append(cbuf,s);
1123 add_gtk_doc_func(void)
1129 gtk_doc_hash = g_hash_table_new(g_str_hash, g_str_equal);
1130 g_hash_table_insert(gtk_doc_hash, gtk_doc_func, g_strdup(cbuf->str));
1133 gtk_doc_func = NULL;
1136 /* Ugly warning avoiding */
1152 #line 1153 "lexer.c"
1157 #define CODE_STRING 3
1158 #define CLASS_CODE 4
1159 #define CLASS_STRING 5
1160 #define CLASS_CODE_I 6
1161 #define PROPERTY_CODE 7
1162 #define PROPERTY_CODE_I 8
1163 #define GTK_DOC_BEFORE_NAME 9
1165 #define GTK_DOC_LINE 11
1167 #ifndef YY_NO_UNISTD_H
1168 /* Special case for "unistd.h", since it is non-ANSI. We include it way
1169 * down here because we want the user's section 1 to have been scanned first.
1170 * The user has a chance to override it with an option.
1175 #ifndef YY_EXTRA_TYPE
1176 #define YY_EXTRA_TYPE void *
1179 static int yy_init_globals (void );
1181 /* Accessor methods to globals.
1182 These are made visible to non-reentrant scanners for convenience. */
1184 int yylex_destroy (void );
1186 int yyget_debug (void );
1188 void yyset_debug (int debug_flag );
1190 YY_EXTRA_TYPE yyget_extra (void );
1192 void yyset_extra (YY_EXTRA_TYPE user_defined );
1194 FILE *yyget_in (void );
1196 void yyset_in (FILE * in_str );
1198 FILE *yyget_out (void );
1200 void yyset_out (FILE * out_str );
1202 int yyget_leng (void );
1204 char *yyget_text (void );
1206 int yyget_lineno (void );
1208 void yyset_lineno (int line_number );
1210 /* Macros after this point can all be overridden by user definitions in
1214 #ifndef YY_SKIP_YYWRAP
1216 extern "C" int yywrap (void );
1218 extern int yywrap (void );
1222 static void yyunput (int c,char *buf_ptr );
1225 static void yy_flex_strncpy (char *,yyconst char *,int );
1228 #ifdef YY_NEED_STRLEN
1229 static int yy_flex_strlen (yyconst char * );
1235 static int yyinput (void );
1237 static int input (void );
1242 /* Amount of stuff to slurp up with each read. */
1243 #ifndef YY_READ_BUF_SIZE
1245 /* On IA-64, the buffer size is 16k, not 8k */
1246 #define YY_READ_BUF_SIZE 16384
1248 #define YY_READ_BUF_SIZE 8192
1249 #endif /* __ia64__ */
1252 /* Copy whatever the last rule matched to the standard output. */
1254 /* This used to be an fputs(), but since the string might contain NUL's,
1255 * we now use fwrite().
1257 #define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
1260 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
1261 * is returned in "result".
1264 #define YY_INPUT(buf,result,max_size) \
1265 if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
1269 for ( n = 0; n < max_size && \
1270 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
1271 buf[n] = (char) c; \
1273 buf[n++] = (char) c; \
1274 if ( c == EOF && ferror( yyin ) ) \
1275 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1281 while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
1283 if( errno != EINTR) \
1285 YY_FATAL_ERROR( "input in flex scanner failed" ); \
1296 /* No semi-colon after return; correct usage is to write "yyterminate();" -
1297 * we don't want an extra ';' after the "return" because that will cause
1298 * some compilers to complain about unreachable statements.
1301 #define yyterminate() return YY_NULL
1304 /* Number of entries by which start-condition stack grows. */
1305 #ifndef YY_START_STACK_INCR
1306 #define YY_START_STACK_INCR 25
1309 /* Report a fatal error. */
1310 #ifndef YY_FATAL_ERROR
1311 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
1314 /* end tables serialization structures and prototypes */
1316 /* Default declaration of generated scanner - a define so the user can
1317 * easily add parameters.
1320 #define YY_DECL_IS_OURS 1
1322 extern int yylex (void);
1324 #define YY_DECL int yylex (void)
1325 #endif /* !YY_DECL */
1327 /* Code executed at the beginning of each rule, after yytext and yyleng
1330 #ifndef YY_USER_ACTION
1331 #define YY_USER_ACTION
1334 /* Code executed at the end of each rule. */
1336 #define YY_BREAK break;
1339 #define YY_RULE_SETUP \
1341 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
1342 (yytext[yyleng - 1] == '\n'); \
1345 /** The main scanner function which does all the work.
1349 register yy_state_type yy_current_state;
1350 register char *yy_cp, *yy_bp;
1351 register int yy_act;
1357 /* Avoid warning from flex, cuz flex sucks */
1359 yy_current_state = 0;
1364 #line 1365 "lexer.c"
1374 /* Create the reject buffer large enough to save one state per allowed character. */
1375 if ( ! (yy_state_buf) )
1376 (yy_state_buf) = (yy_state_type *)yyalloc(YY_STATE_BUF_SIZE );
1377 if ( ! (yy_state_buf) )
1378 YY_FATAL_ERROR( "out of dynamic memory in yylex()" );
1381 (yy_start) = 1; /* first start state */
1389 if ( ! YY_CURRENT_BUFFER ) {
1390 yyensure_buffer_stack ();
1391 YY_CURRENT_BUFFER_LVALUE =
1392 yy_create_buffer(yyin,YY_BUF_SIZE );
1395 yy_load_buffer_state( );
1398 while ( 1 ) /* loops until end-of-file is reached */
1400 yy_cp = (yy_c_buf_p);
1402 /* Support of yytext. */
1403 *yy_cp = (yy_hold_char);
1405 /* yy_bp points to the position in yy_ch_buf of the start of
1410 yy_current_state = (yy_start);
1411 yy_current_state += YY_AT_BOL();
1413 (yy_state_ptr) = (yy_state_buf);
1414 *(yy_state_ptr)++ = yy_current_state;
1419 register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
1420 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1422 yy_current_state = (int) yy_def[yy_current_state];
1423 if ( yy_current_state >= 561 )
1424 yy_c = yy_meta[(unsigned int) yy_c];
1426 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1427 *(yy_state_ptr)++ = yy_current_state;
1430 while ( yy_base[yy_current_state] != 1338 );
1433 yy_current_state = *--(yy_state_ptr);
1434 (yy_lp) = yy_accept[yy_current_state];
1435 find_rule: /* we branch to this label when backing up */
1436 for ( ; ; ) /* until we find what rule we matched */
1438 if ( (yy_lp) && (yy_lp) < yy_accept[yy_current_state + 1] )
1440 yy_act = yy_acclist[(yy_lp)];
1442 (yy_full_match) = yy_cp;
1447 yy_current_state = *--(yy_state_ptr);
1448 (yy_lp) = yy_accept[yy_current_state];
1451 YY_DO_BEFORE_ACTION;
1453 do_action: /* This label is used only to access EOF actions. */
1456 { /* beginning of action switch */
1458 /* rule 1 can match eol */
1461 { line_no++; REJECT; }
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 /* Thy evil easter egg */
1471 #define QQ(x) long x
1472 #define KK(x) =atoi(__(&,,x,))
1473 #define MM(x,a) {QQ(i);for(i=2;i<x;i++){a}}
1474 #define PP(Q) (P%Q)==0
1475 #define ___(x,y,z) if(x z y)
1476 #define __(a,x,y,z) a(yytext[y] x z)
1477 #define O__O(a,b) fprintf(stderr,"%s is %s!\n",a,b)
1478 QQ(m)=1;___(__(,==,2,'P'),__(,==,5,'M'),&&
1479 ){QQ(P)KK(8);MM(P,___(PP(i),,)m=0;)}__(,=,
1480 7,0);___(,,m){O__O(__( &,,8,),__(&,,2,));}
1492 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
1493 (yy_c_buf_p) = yy_cp -= 1;
1494 YY_DO_BEFORE_ACTION; /* set up yytext again */
1497 { ; /*comment, ignore*/ }
1506 char *str=g_strdup(yytext);
1508 /* find first digit of line number */
1510 while(*p&&!isdigit(*p)) p++;
1513 /* find end of line number */
1514 while(*p&&isdigit(*p)) p++;
1517 /* find beginning of filename */
1522 /* find end of filename */
1523 if(p) p=strchr(p,'"');
1526 /* stash number (minus one because we don't count this line) */
1527 if(number) line_no=atoi(number)-1;
1529 /* stash filename */
1531 if(hline_filename) g_free(hline_filename);
1532 hline_filename=g_strdup(filename);
1543 if(look_for_includes==1) {
1546 char *str = g_strdup(yytext);
1547 file = strchr(str,'"');
1548 if(!file) file = strchr(str,'<');
1550 p = strchr(file,'"');
1551 if(!p) p = strchr(file,'>');
1554 include_files = g_list_prepend(include_files,g_strdup(file));
1562 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
1563 (yy_c_buf_p) = yy_cp -= 1;
1564 YY_DO_BEFORE_ACTION; /* set up yytext again */
1568 /* eat out gtk doc stuff */
1569 BEGIN(GTK_DOC_BEFORE_NAME);
1574 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
1575 (yy_c_buf_p) = yy_cp -= 1;
1576 YY_DO_BEFORE_ACTION; /* set up yytext again */
1580 /* empty doc lines */
1585 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
1586 (yy_c_buf_p) = yy_cp -= 1;
1587 YY_DO_BEFORE_ACTION; /* set up yytext again */
1593 p = strchr(yytext, '*');
1594 g_free(gtk_doc_func);
1595 gtk_doc_func = g_strdup(p+2);
1596 p = strchr(gtk_doc_func, ':');
1598 g_strstrip(gtk_doc_func);
1605 BEGIN(CLASS_CODE_I);
1613 before_comment = CLASS_CODE_I;
1617 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
1618 (yy_c_buf_p) = yy_cp -= 1;
1619 YY_DO_BEFORE_ACTION; /* set up yytext again */
1623 /* empty doc lines */
1624 add_to_cbuf(" *\n");
1631 BEGIN(CLASS_CODE_I);
1641 BEGIN(GTK_DOC_LINE);
1648 BEGIN(CLASS_CODE_I);
1656 before_comment = CLASS_CODE_I;
1663 BEGIN(CLASS_CODE_I);
1669 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
1670 (yy_c_buf_p) = yy_cp -= 1;
1671 YY_DO_BEFORE_ACTION; /* set up yytext again */
1676 add_to_cbuf(yytext);
1685 add_to_cbuf(yytext);
1689 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
1690 (yy_c_buf_p) = yy_cp -= 1;
1691 YY_DO_BEFORE_ACTION; /* set up yytext again */
1694 { add_to_cbuf(yytext); /*comment, ignore*/ }
1697 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
1698 (yy_c_buf_p) = yy_cp -= 1;
1699 YY_DO_BEFORE_ACTION; /* set up yytext again */
1702 { ; /*comment, ignore*/ }
1705 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
1706 (yy_c_buf_p) = yy_cp -= 1;
1707 YY_DO_BEFORE_ACTION; /* set up yytext again */
1710 { ; /*comment, ignore*/ }
1713 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
1714 (yy_c_buf_p) = yy_cp -= 1;
1715 YY_DO_BEFORE_ACTION; /* set up yytext again */
1718 { ; /*comment, ignore*/ }
1723 {BEGIN(COMMENT); before_comment = INITIAL; }
1729 add_to_cbuf(yytext);
1731 before_comment = C_CODE;
1737 {BEGIN(COMMENT); before_comment = CLASS_CODE; }
1742 {BEGIN(COMMENT); before_comment = CLASS_CODE_I; }
1747 {BEGIN(COMMENT); before_comment = PROPERTY_CODE_I; }
1753 if(before_comment == C_CODE) add_to_cbuf(yytext);
1754 BEGIN(before_comment);
1761 /* comment, ignore */
1762 if(before_comment == C_CODE) add_to_cbuf(yytext);
1766 /* rule 30 can match eol */
1770 /* comment, ignore */
1771 if(before_comment == C_CODE) add_to_cbuf(yytext);
1780 class_after_c = FALSE;
1783 ccode_line = line_no;
1792 class_after_c = FALSE;
1795 ccode_line = line_no;
1804 class_after_c = FALSE;
1807 ccode_line = line_no;
1816 class_after_c = FALSE;
1819 ccode_line = line_no;
1828 class_after_c = FALSE;
1831 ccode_line = line_no;
1840 class_after_c = FALSE;
1843 ccode_line = line_no;
1844 if(look_for_includes==0)
1845 look_for_includes=1;
1854 class_after_c = FALSE;
1857 ccode_line = line_no;
1867 if(look_for_includes==1)
1868 look_for_includes=0;
1875 { add_to_cbuf(yytext); }
1880 { add_to_cbuf(yytext); }
1885 { add_to_cbuf(yytext); }
1890 { add_to_cbuf(yytext); }
1895 { add_to_cbuf(yytext); }
1900 { add_to_cbuf(yytext); }
1905 { add_to_cbuf(yytext); }
1912 before_string = C_CODE;
1913 add_to_cbuf(yytext);
1921 before_string = PROPERTY_CODE_I;
1922 add_to_cbuf(yytext);
1928 { add_to_cbuf(yytext); }
1934 BEGIN(before_string);
1935 add_to_cbuf(yytext);
1936 if (before_string == PROPERTY_CODE_I) {
1937 yylval.id = cbuf->str;
1938 g_string_free (cbuf, FALSE);
1947 { add_to_cbuf(yytext); }
1950 /* rule 51 can match eol */
1953 { add_to_cbuf(yytext); }
1960 add_to_cbuf(yytext);
1968 if(parenth_depth<0) {
1970 } else if(parenth_depth==0 && class_after_c) {
1971 BEGIN(CLASS_CODE_I);
1976 add_to_cbuf(yytext);
1982 { add_to_cbuf(yytext); }
1985 /* rule 55 can match eol */
1988 { add_to_cbuf(yytext); }
1994 static int found_classes = 0;
1995 look_for_includes = 2;
1998 if(++found_classes > 1) {
1999 error_print(GOB_ERROR, line_no,
2000 "Only one class per file allowed");
2022 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
2023 (yy_c_buf_p) = yy_cp -= 1;
2024 YY_DO_BEFORE_ACTION; /* set up yytext again */
2028 int maj = 0, min = 0, pl = 0;
2029 int rmaj = 0, rmin = 0, rpl = 0;
2030 int effective_maj = 0;
2031 int effective_rmaj = 0;
2034 sscanf (VERSION, "%d.%d.%d", &rmaj, &rmin, &rpl);
2035 effective_rmaj = rmaj;
2037 effective_rmaj = rmaj + 1;
2039 p = strchr (yytext,'r');
2040 g_assert (p); /* we MUST have found it */
2041 sscanf (p, "requires %d.%d.%d", &maj, &min, &pl);
2042 effective_maj = maj;
2044 effective_maj = maj + 1;
2047 (rmaj == maj && rmin < min) ||
2048 (rmaj == maj && rmin == min && rpl < pl)) {
2049 error_printf (GOB_ERROR, line_no,
2050 "GOB version at least %d.%d.%d required "
2052 "To upgrade your gob, see: "
2053 "http://www.5z.com/jirka/gob.html",
2054 maj, min, pl, VERSION);
2057 if(effective_rmaj != effective_maj) {
2058 error_printf(GOB_ERROR, line_no,
2059 "GOB major version %d required "
2061 "To upgrade your gob, see: "
2062 "http://www.5z.com/jirka/gob.html",
2063 effective_maj, VERSION);
2073 error_printf(GOB_WARN, line_no,
2074 "'%s' keyword should not "
2075 "be used when generating "
2076 "C++ code", yytext);
2090 BEGIN(CLASS_STRING);
2091 before_string = CLASS_CODE;
2092 add_to_cbuf(yytext);
2098 { add_to_cbuf(yytext); }
2104 BEGIN(before_string);
2105 add_to_cbuf(yytext);
2106 yylval.id = cbuf->str;
2107 g_string_free (cbuf, FALSE);
2115 { add_to_cbuf(yytext); }
2118 /* rule 67 can match eol */
2121 { add_to_cbuf(yytext); }
2196 {yylval.line = line_no; return PUBLIC;}
2201 {yylval.line = line_no; return PRIVATE;}
2206 {yylval.line = line_no; return PROTECTED;}
2211 {yylval.line = line_no; return CLASSWIDE;}
2216 {yylval.line = line_no; return ARGUMENT;}
2221 {yylval.line = line_no; return VIRTUAL;}
2226 {yylval.line = line_no; return SIGNAL;}
2231 {yylval.line = line_no; return OVERRIDE;}
2237 yylval.line = line_no;
2238 BEGIN(PROPERTY_CODE);
2245 { yylval.line = line_no; return NICK; }
2250 { yylval.line = line_no; return BLURB; }
2255 { yylval.line = line_no; return MAXIMUM; }
2260 { yylval.line = line_no; return MINIMUM; }
2265 { yylval.line = line_no; return DEFAULT_VALUE; }
2270 { yylval.line = line_no; return FLAGS; }
2275 { yylval.line = line_no; return TYPE; }
2280 { yylval.line = line_no; return FLAGS_TYPE; }
2285 { yylval.line = line_no; return ENUM_TYPE; }
2290 { yylval.line = line_no; return PARAM_TYPE; }
2295 { yylval.line = line_no; return BOXED_TYPE; }
2300 { yylval.line = line_no; return OBJECT_TYPE; }
2306 yylval.line = line_no;
2307 property_paren_depth = 1;
2308 BEGIN(PROPERTY_CODE_I);
2316 yylval.line = line_no;
2317 property_paren_depth++;
2325 yylval.line = line_no;
2326 property_paren_depth--;
2327 if (property_paren_depth == 0) {
2328 BEGIN(CLASS_CODE_I);
2337 yylval.id = g_strdup(yytext);
2345 /* This is cpp kind of token thingie */
2347 yylval.id = g_strdup(yytext);
2358 /* this one is for a classname with a namespace */
2359 yylval.id = g_strdup(yytext);
2367 /* this is for a classname with an empty namespace */
2368 yylval.id = g_strdup(yytext);
2376 yylval.id = g_strdup(yytext);
2384 yylval.id = g_strdup(yytext);
2392 yylval.id = g_strdup(yytext);
2400 /* cheat for bitfield */
2401 yylval.id = g_strdup(yytext);
2409 BEGIN(CLASS_CODE_I);
2419 class_after_c = TRUE;
2420 yylval.line = line_no;
2422 ccode_line = line_no;
2443 yylval.line = line_no;
2448 /* rule 119 can match eol */
2454 *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
2455 (yy_c_buf_p) = yy_cp -= 1;
2456 YY_DO_BEFORE_ACTION; /* set up yytext again */
2462 p = strchr (yytext,'p');
2463 g_assert (p); /* we MUST have found it */
2464 sscanf (p, "prealloc %d", &t);
2473 #line 2474 "lexer.c"
2474 case YY_STATE_EOF(INITIAL):
2475 case YY_STATE_EOF(COMMENT):
2476 case YY_STATE_EOF(C_CODE):
2477 case YY_STATE_EOF(CODE_STRING):
2478 case YY_STATE_EOF(CLASS_CODE):
2479 case YY_STATE_EOF(CLASS_STRING):
2480 case YY_STATE_EOF(CLASS_CODE_I):
2481 case YY_STATE_EOF(PROPERTY_CODE):
2482 case YY_STATE_EOF(PROPERTY_CODE_I):
2483 case YY_STATE_EOF(GTK_DOC_BEFORE_NAME):
2484 case YY_STATE_EOF(GTK_DOC):
2485 case YY_STATE_EOF(GTK_DOC_LINE):
2488 case YY_END_OF_BUFFER:
2490 /* Amount of text matched not including the EOB char. */
2491 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
2493 /* Undo the effects of YY_DO_BEFORE_ACTION. */
2494 *yy_cp = (yy_hold_char);
2495 YY_RESTORE_YY_MORE_OFFSET
2497 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
2499 /* We're scanning a new file or input source. It's
2500 * possible that this happened because the user
2501 * just pointed yyin at a new source and called
2502 * yylex(). If so, then we have to assure
2503 * consistency between YY_CURRENT_BUFFER and our
2504 * globals. Here is the right place to do so, because
2505 * this is the first action (other than possibly a
2506 * back-up) that will match for the new input source.
2508 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
2509 YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
2510 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
2513 /* Note that here we test for yy_c_buf_p "<=" to the position
2514 * of the first EOB in the buffer, since yy_c_buf_p will
2515 * already have been incremented past the NUL character
2516 * (since all states make transitions on EOB to the
2517 * end-of-buffer state). Contrast this with the test
2520 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
2521 { /* This was really a NUL. */
2522 yy_state_type yy_next_state;
2524 (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
2526 yy_current_state = yy_get_previous_state( );
2528 /* Okay, we're now positioned to make the NUL
2529 * transition. We couldn't have
2530 * yy_get_previous_state() go ahead and do it
2531 * for us because it doesn't know how to deal
2532 * with the possibility of jamming (and we don't
2533 * want to build jamming into it because then it
2534 * will run more slowly).
2537 yy_next_state = yy_try_NUL_trans( yy_current_state );
2539 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
2541 if ( yy_next_state )
2543 /* Consume the NUL. */
2544 yy_cp = ++(yy_c_buf_p);
2545 yy_current_state = yy_next_state;
2551 yy_cp = (yy_c_buf_p);
2552 goto yy_find_action;
2556 else switch ( yy_get_next_buffer( ) )
2558 case EOB_ACT_END_OF_FILE:
2560 (yy_did_buffer_switch_on_eof) = 0;
2564 /* Note: because we've taken care in
2565 * yy_get_next_buffer() to have set up
2566 * yytext, we can now set up
2567 * yy_c_buf_p so that if some total
2568 * hoser (like flex itself) wants to
2569 * call the scanner after we return the
2570 * YY_NULL, it'll still work - another
2571 * YY_NULL will get returned.
2573 (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
2575 yy_act = YY_STATE_EOF(YY_START);
2581 if ( ! (yy_did_buffer_switch_on_eof) )
2587 case EOB_ACT_CONTINUE_SCAN:
2589 (yytext_ptr) + yy_amount_of_matched_text;
2591 yy_current_state = yy_get_previous_state( );
2593 yy_cp = (yy_c_buf_p);
2594 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
2597 case EOB_ACT_LAST_MATCH:
2599 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
2601 yy_current_state = yy_get_previous_state( );
2603 yy_cp = (yy_c_buf_p);
2604 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
2605 goto yy_find_action;
2612 "fatal flex scanner internal error--no action found" );
2613 } /* end of action switch */
2614 } /* end of scanning one token */
2615 } /* end of yylex */
2617 /* yy_get_next_buffer - try to read in a new buffer
2619 * Returns a code representing an action:
2620 * EOB_ACT_LAST_MATCH -
2621 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
2622 * EOB_ACT_END_OF_FILE - end of file
2624 static int yy_get_next_buffer (void)
2626 register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
2627 register char *source = (yytext_ptr);
2628 register int number_to_move, i;
2631 if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
2633 "fatal flex scanner internal error--end of buffer missed" );
2635 if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
2636 { /* Don't try to fill the buffer, so this is an EOF. */
2637 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
2639 /* We matched a single character, the EOB, so
2640 * treat this as a final EOF.
2642 return EOB_ACT_END_OF_FILE;
2647 /* We matched some text prior to the EOB, first
2650 return EOB_ACT_LAST_MATCH;
2654 /* Try to read more data. */
2656 /* First move last chars to start of buffer. */
2657 number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
2659 for ( i = 0; i < number_to_move; ++i )
2660 *(dest++) = *(source++);
2662 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
2663 /* don't do the read, it's not guaranteed to return an EOF,
2666 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
2671 YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
2673 while ( num_to_read <= 0 )
2674 { /* Not enough room in the buffer - grow it. */
2677 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
2681 if ( num_to_read > YY_READ_BUF_SIZE )
2682 num_to_read = YY_READ_BUF_SIZE;
2684 /* Read in more data. */
2685 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
2686 (yy_n_chars), (size_t) num_to_read );
2688 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
2691 if ( (yy_n_chars) == 0 )
2693 if ( number_to_move == YY_MORE_ADJ )
2695 ret_val = EOB_ACT_END_OF_FILE;
2701 ret_val = EOB_ACT_LAST_MATCH;
2702 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
2703 YY_BUFFER_EOF_PENDING;
2708 ret_val = EOB_ACT_CONTINUE_SCAN;
2710 if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
2711 /* Extend the array by 50%, plus the number we really need. */
2712 yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
2713 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size );
2714 if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
2715 YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
2718 (yy_n_chars) += number_to_move;
2719 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
2720 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
2722 (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
2727 /* yy_get_previous_state - get the state just before the EOB char was reached */
2729 static yy_state_type yy_get_previous_state (void)
2731 register yy_state_type yy_current_state;
2732 register char *yy_cp;
2734 yy_current_state = (yy_start);
2735 yy_current_state += YY_AT_BOL();
2737 (yy_state_ptr) = (yy_state_buf);
2738 *(yy_state_ptr)++ = yy_current_state;
2740 for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
2742 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
2743 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2745 yy_current_state = (int) yy_def[yy_current_state];
2746 if ( yy_current_state >= 561 )
2747 yy_c = yy_meta[(unsigned int) yy_c];
2749 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2750 *(yy_state_ptr)++ = yy_current_state;
2753 return yy_current_state;
2756 /* yy_try_NUL_trans - try to make a transition on the NUL character
2759 * next_state = yy_try_NUL_trans( current_state );
2761 static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
2763 register int yy_is_jam;
2765 register YY_CHAR yy_c = 1;
2766 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
2768 yy_current_state = (int) yy_def[yy_current_state];
2769 if ( yy_current_state >= 561 )
2770 yy_c = yy_meta[(unsigned int) yy_c];
2772 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
2773 yy_is_jam = (yy_current_state == 560);
2775 *(yy_state_ptr)++ = yy_current_state;
2777 return yy_is_jam ? 0 : yy_current_state;
2780 static void yyunput (int c, register char * yy_bp )
2782 register char *yy_cp;
2784 yy_cp = (yy_c_buf_p);
2786 /* undo effects of setting up yytext */
2787 *yy_cp = (yy_hold_char);
2789 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
2790 { /* need to shift things up to make room */
2791 /* +2 for EOB chars. */
2792 register int number_to_move = (yy_n_chars) + 2;
2793 register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
2794 YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
2795 register char *source =
2796 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
2798 while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
2799 *--dest = *--source;
2801 yy_cp += (int) (dest - source);
2802 yy_bp += (int) (dest - source);
2803 YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
2804 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
2806 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
2807 YY_FATAL_ERROR( "flex scanner push-back overflow" );
2810 *--yy_cp = (char) c;
2812 (yytext_ptr) = yy_bp;
2813 (yy_hold_char) = *yy_cp;
2814 (yy_c_buf_p) = yy_cp;
2819 static int yyinput (void)
2821 static int input (void)
2827 *(yy_c_buf_p) = (yy_hold_char);
2829 if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
2831 /* yy_c_buf_p now points to the character we want to return.
2832 * If this occurs *before* the EOB characters, then it's a
2833 * valid NUL; if not, then we've hit the end of the buffer.
2835 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
2836 /* This was really a NUL. */
2837 *(yy_c_buf_p) = '\0';
2840 { /* need more input */
2841 int offset = (yy_c_buf_p) - (yytext_ptr);
2844 switch ( yy_get_next_buffer( ) )
2846 case EOB_ACT_LAST_MATCH:
2847 /* This happens because yy_g_n_b()
2848 * sees that we've accumulated a
2849 * token and flags that we need to
2850 * try matching the token before
2851 * proceeding. But for input(),
2852 * there's no matching to consider.
2853 * So convert the EOB_ACT_LAST_MATCH
2854 * to EOB_ACT_END_OF_FILE.
2857 /* Reset buffer status. */
2862 case EOB_ACT_END_OF_FILE:
2867 if ( ! (yy_did_buffer_switch_on_eof) )
2876 case EOB_ACT_CONTINUE_SCAN:
2877 (yy_c_buf_p) = (yytext_ptr) + offset;
2883 c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */
2884 *(yy_c_buf_p) = '\0'; /* preserve yytext */
2885 (yy_hold_char) = *++(yy_c_buf_p);
2887 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n');
2891 #endif /* ifndef YY_NO_INPUT */
2893 /** Immediately switch to a different input stream.
2894 * @param input_file A readable stream.
2896 * @note This function does not reset the start condition to @c INITIAL .
2898 void yyrestart (FILE * input_file )
2901 if ( ! YY_CURRENT_BUFFER ){
2902 yyensure_buffer_stack ();
2903 YY_CURRENT_BUFFER_LVALUE =
2904 yy_create_buffer(yyin,YY_BUF_SIZE );
2907 yy_init_buffer(YY_CURRENT_BUFFER,input_file );
2908 yy_load_buffer_state( );
2911 /** Switch to a different input buffer.
2912 * @param new_buffer The new input buffer.
2915 void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer )
2918 /* TODO. We should be able to replace this entire function body
2920 * yypop_buffer_state();
2921 * yypush_buffer_state(new_buffer);
2923 yyensure_buffer_stack ();
2924 if ( YY_CURRENT_BUFFER == new_buffer )
2927 if ( YY_CURRENT_BUFFER )
2929 /* Flush out information for old buffer. */
2930 *(yy_c_buf_p) = (yy_hold_char);
2931 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
2932 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
2935 YY_CURRENT_BUFFER_LVALUE = new_buffer;
2936 yy_load_buffer_state( );
2938 /* We don't actually know whether we did this switch during
2939 * EOF (yywrap()) processing, but the only time this flag
2940 * is looked at is after yywrap() is called, so it's safe
2941 * to go ahead and always set it.
2943 (yy_did_buffer_switch_on_eof) = 1;
2946 static void yy_load_buffer_state (void)
2948 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
2949 (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
2950 yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
2951 (yy_hold_char) = *(yy_c_buf_p);
2954 /** Allocate and initialize an input buffer state.
2955 * @param file A readable stream.
2956 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
2958 * @return the allocated buffer state.
2960 YY_BUFFER_STATE yy_create_buffer (FILE * file, int size )
2964 b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) );
2966 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
2968 b->yy_buf_size = size;
2970 /* yy_ch_buf has to be 2 characters longer than the size given because
2971 * we need to put in 2 end-of-buffer characters.
2973 b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 );
2974 if ( ! b->yy_ch_buf )
2975 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
2977 b->yy_is_our_buffer = 1;
2979 yy_init_buffer(b,file );
2984 /** Destroy the buffer.
2985 * @param b a buffer created with yy_create_buffer()
2988 void yy_delete_buffer (YY_BUFFER_STATE b )
2994 if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
2995 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
2997 if ( b->yy_is_our_buffer )
2998 yyfree((void *) b->yy_ch_buf );
3000 yyfree((void *) b );
3004 extern int isatty (int );
3005 #endif /* __cplusplus */
3007 /* Initializes or reinitializes a buffer.
3008 * This function is sometimes called more than once on the same buffer,
3009 * such as during a yyrestart() or at EOF.
3011 static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file )
3016 yy_flush_buffer(b );
3018 b->yy_input_file = file;
3019 b->yy_fill_buffer = 1;
3021 /* If b is the current buffer, then yy_init_buffer was _probably_
3022 * called from yyrestart() or through yy_get_next_buffer.
3023 * In that case, we don't want to reset the lineno or column.
3025 if (b != YY_CURRENT_BUFFER){
3026 b->yy_bs_lineno = 1;
3027 b->yy_bs_column = 0;
3030 b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
3035 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
3036 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
3039 void yy_flush_buffer (YY_BUFFER_STATE b )
3046 /* We always need two end-of-buffer characters. The first causes
3047 * a transition to the end-of-buffer state. The second causes
3048 * a jam in that state.
3050 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
3051 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
3053 b->yy_buf_pos = &b->yy_ch_buf[0];
3056 b->yy_buffer_status = YY_BUFFER_NEW;
3058 if ( b == YY_CURRENT_BUFFER )
3059 yy_load_buffer_state( );
3062 /** Pushes the new state onto the stack. The new state becomes
3063 * the current state. This function will allocate the stack
3065 * @param new_buffer The new state.
3068 void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
3070 if (new_buffer == NULL)
3073 yyensure_buffer_stack();
3075 /* This block is copied from yy_switch_to_buffer. */
3076 if ( YY_CURRENT_BUFFER )
3078 /* Flush out information for old buffer. */
3079 *(yy_c_buf_p) = (yy_hold_char);
3080 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
3081 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
3084 /* Only push if top exists. Otherwise, replace top. */
3085 if (YY_CURRENT_BUFFER)
3086 (yy_buffer_stack_top)++;
3087 YY_CURRENT_BUFFER_LVALUE = new_buffer;
3089 /* copied from yy_switch_to_buffer. */
3090 yy_load_buffer_state( );
3091 (yy_did_buffer_switch_on_eof) = 1;
3094 /** Removes and deletes the top of the stack, if present.
3095 * The next element becomes the new top.
3098 void yypop_buffer_state (void)
3100 if (!YY_CURRENT_BUFFER)
3103 yy_delete_buffer(YY_CURRENT_BUFFER );
3104 YY_CURRENT_BUFFER_LVALUE = NULL;
3105 if ((yy_buffer_stack_top) > 0)
3106 --(yy_buffer_stack_top);
3108 if (YY_CURRENT_BUFFER) {
3109 yy_load_buffer_state( );
3110 (yy_did_buffer_switch_on_eof) = 1;
3114 /* Allocates the stack if it does not exist.
3115 * Guarantees space for at least one push.
3117 static void yyensure_buffer_stack (void)
3121 if (!(yy_buffer_stack)) {
3123 /* First allocation is just for 2 elements, since we don't know if this
3124 * scanner will even need a stack. We use 2 instead of 1 to avoid an
3125 * immediate realloc on the next call.
3128 (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
3129 (num_to_alloc * sizeof(struct yy_buffer_state*)
3131 if ( ! (yy_buffer_stack) )
3132 YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
3134 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
3136 (yy_buffer_stack_max) = num_to_alloc;
3137 (yy_buffer_stack_top) = 0;
3141 if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
3143 /* Increase the buffer to prepare for a possible push. */
3144 int grow_size = 8 /* arbitrary grow size */;
3146 num_to_alloc = (yy_buffer_stack_max) + grow_size;
3147 (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
3149 num_to_alloc * sizeof(struct yy_buffer_state*)
3151 if ( ! (yy_buffer_stack) )
3152 YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
3154 /* zero only the new slots.*/
3155 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
3156 (yy_buffer_stack_max) = num_to_alloc;
3160 /** Setup the input buffer state to scan directly from a user-specified character buffer.
3161 * @param base the character buffer
3162 * @param size the size in bytes of the character buffer
3164 * @return the newly allocated buffer state object.
3166 YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size )
3171 base[size-2] != YY_END_OF_BUFFER_CHAR ||
3172 base[size-1] != YY_END_OF_BUFFER_CHAR )
3173 /* They forgot to leave room for the EOB's. */
3176 b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) );
3178 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
3180 b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
3181 b->yy_buf_pos = b->yy_ch_buf = base;
3182 b->yy_is_our_buffer = 0;
3183 b->yy_input_file = 0;
3184 b->yy_n_chars = b->yy_buf_size;
3185 b->yy_is_interactive = 0;
3187 b->yy_fill_buffer = 0;
3188 b->yy_buffer_status = YY_BUFFER_NEW;
3190 yy_switch_to_buffer(b );
3195 /** Setup the input buffer state to scan a string. The next call to yylex() will
3196 * scan from a @e copy of @a str.
3197 * @param yystr a NUL-terminated string to scan
3199 * @return the newly allocated buffer state object.
3200 * @note If you want to scan bytes that may contain NUL values, then use
3201 * yy_scan_bytes() instead.
3203 YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
3206 return yy_scan_bytes(yystr,strlen(yystr) );
3209 /** Setup the input buffer state to scan the given bytes. The next call to yylex() will
3210 * scan from a @e copy of @a bytes.
3211 * @param yybytes the byte buffer to scan
3212 * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes.
3214 * @return the newly allocated buffer state object.
3216 YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len )
3223 /* Get memory for full buffer, including space for trailing EOB's. */
3224 n = _yybytes_len + 2;
3225 buf = (char *) yyalloc(n );
3227 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
3229 for ( i = 0; i < _yybytes_len; ++i )
3230 buf[i] = yybytes[i];
3232 buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
3234 b = yy_scan_buffer(buf,n );
3236 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
3238 /* It's okay to grow etc. this buffer, and we should throw it
3239 * away when we're done.
3241 b->yy_is_our_buffer = 1;
3246 #ifndef YY_EXIT_FAILURE
3247 #define YY_EXIT_FAILURE 2
3250 static void yy_fatal_error (yyconst char* msg )
3252 (void) fprintf( stderr, "%s\n", msg );
3253 exit( YY_EXIT_FAILURE );
3256 /* Redefine yyless() so it works in section 3 code. */
3262 /* Undo effects of setting up yytext. */ \
3263 int yyless_macro_arg = (n); \
3264 YY_LESS_LINENO(yyless_macro_arg);\
3265 yytext[yyleng] = (yy_hold_char); \
3266 (yy_c_buf_p) = yytext + yyless_macro_arg; \
3267 (yy_hold_char) = *(yy_c_buf_p); \
3268 *(yy_c_buf_p) = '\0'; \
3269 yyleng = yyless_macro_arg; \
3273 /* Accessor methods (get/set functions) to struct members. */
3275 /** Get the current line number.
3278 int yyget_lineno (void)
3284 /** Get the input stream.
3287 FILE *yyget_in (void)
3292 /** Get the output stream.
3295 FILE *yyget_out (void)
3300 /** Get the length of the current token.
3303 int yyget_leng (void)
3308 /** Get the current token.
3312 char *yyget_text (void)
3317 /** Set the current line number.
3318 * @param line_number
3321 void yyset_lineno (int line_number )
3324 yylineno = line_number;
3327 /** Set the input stream. This does not discard the current
3329 * @param in_str A readable stream.
3331 * @see yy_switch_to_buffer
3333 void yyset_in (FILE * in_str )
3338 void yyset_out (FILE * out_str )
3343 int yyget_debug (void)
3345 return yy_flex_debug;
3348 void yyset_debug (int bdebug )
3350 yy_flex_debug = bdebug ;
3353 static int yy_init_globals (void)
3355 /* Initialization is the same as for the non-reentrant scanner.
3356 * This function is called from yylex_destroy(), so don't allocate here.
3359 (yy_buffer_stack) = 0;
3360 (yy_buffer_stack_top) = 0;
3361 (yy_buffer_stack_max) = 0;
3362 (yy_c_buf_p) = (char *) 0;
3368 (yy_full_match) = 0;
3371 /* Defined in main.c */
3380 /* For future reference: Set errno on error, since we are called by
3386 /* yylex_destroy is for both reentrant and non-reentrant scanners. */
3387 int yylex_destroy (void)
3390 /* Pop the buffer stack, destroying each element. */
3391 while(YY_CURRENT_BUFFER){
3392 yy_delete_buffer(YY_CURRENT_BUFFER );
3393 YY_CURRENT_BUFFER_LVALUE = NULL;
3394 yypop_buffer_state();
3397 /* Destroy the stack itself. */
3398 yyfree((yy_buffer_stack) );
3399 (yy_buffer_stack) = NULL;
3401 yyfree ( (yy_state_buf) );
3402 (yy_state_buf) = NULL;
3404 /* Reset the globals. This is important in a non-reentrant scanner so the next time
3405 * yylex() is called, initialization will occur. */
3412 * Internal utility routines.
3416 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
3419 for ( i = 0; i < n; ++i )
3424 #ifdef YY_NEED_STRLEN
3425 static int yy_flex_strlen (yyconst char * s )
3428 for ( n = 0; s[n]; ++n )
3435 void *yyalloc (yy_size_t size )
3437 return (void *) malloc( size );
3440 void *yyrealloc (void * ptr, yy_size_t size )
3442 /* The cast to (char *) in the following accommodates both
3443 * implementations that use char* generic pointers, and those
3444 * that use void* generic pointers. It works with the latter
3445 * because both ANSI C and C++ allow castless assignment from
3446 * any pointer type to void*, and deal with argument conversions
3447 * as though doing an assignment.
3449 return (void *) realloc( (char *) ptr, size );
3452 void yyfree (void * ptr )
3454 free( (char *) ptr ); /* see yyrealloc() for (char *) cast */
3457 #define YYTABLES_NAME "yytables"