1 #line 2 "scripts/genksyms/lex.c"
3 #line 4 "scripts/genksyms/lex.c"
5 #define YY_INT_ALIGNED short int
7 /* A lexical scanner generated by flex */
12 /* %if-not-reentrant */
19 #define YY_FLEX_MAJOR_VERSION 2
20 #define YY_FLEX_MINOR_VERSION 5
21 #define YY_FLEX_SUBMINOR_VERSION 35
22 #if YY_FLEX_SUBMINOR_VERSION > 0
37 /* First, we deal with platform-specific or compiler-specific issues. */
39 /* begin standard C headers. */
47 /* %if-tables-serialization */
49 /* end standard C headers. */
52 /* flex integer type definitions */
57 /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
59 #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
61 /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
62 * if you want the limit (max/min) macros for int types.
64 #ifndef __STDC_LIMIT_MACROS
65 #define __STDC_LIMIT_MACROS 1
69 typedef int8_t flex_int8_t;
70 typedef uint8_t flex_uint8_t;
71 typedef int16_t flex_int16_t;
72 typedef uint16_t flex_uint16_t;
73 typedef int32_t flex_int32_t;
74 typedef uint32_t flex_uint32_t;
76 typedef signed char flex_int8_t;
77 typedef short int flex_int16_t;
78 typedef int flex_int32_t;
79 typedef unsigned char flex_uint8_t;
80 typedef unsigned short int flex_uint16_t;
81 typedef unsigned int flex_uint32_t;
84 /* Limits of integral types. */
86 #define INT8_MIN (-128)
89 #define INT16_MIN (-32767-1)
92 #define INT32_MIN (-2147483647-1)
95 #define INT8_MAX (127)
98 #define INT16_MAX (32767)
101 #define INT32_MAX (2147483647)
104 #define UINT8_MAX (255U)
107 #define UINT16_MAX (65535U)
110 #define UINT32_MAX (4294967295U)
113 #endif /* ! FLEXINT_H */
122 /* The "const" storage-class-modifier is valid. */
125 #else /* ! __cplusplus */
127 /* C99 requires __STDC__ to be defined as 1. */
128 #if defined (__STDC__)
132 #endif /* defined (__STDC__) */
133 #endif /* ! __cplusplus */
136 #define yyconst const
141 /* %not-for-header */
143 /* Returned upon end-of-file. */
147 /* %not-for-header */
149 /* Promotes a possibly negative, possibly signed char to an unsigned
150 * integer for use as an array index. If the signed char is negative,
151 * we want to instead treat it as an 8-bit unsigned char, hence the
154 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
160 /* %if-not-reentrant */
164 /* Enter a start condition. This macro really ought to take a parameter,
165 * but we do it the disgusting crufty way forced on us by the ()-less
166 * definition of BEGIN.
168 #define BEGIN (yy_start) = 1 + 2 *
170 /* Translate the current start state into a value that can be later handed
171 * to BEGIN to return to the state. The YYSTATE alias is for lex
174 #define YY_START (((yy_start) - 1) / 2)
175 #define YYSTATE YY_START
177 /* Action number for EOF rule of a given start state. */
178 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
180 /* Special action meaning "start processing a new file". */
181 #define YY_NEW_FILE yyrestart(yyin )
183 #define YY_END_OF_BUFFER_CHAR 0
185 /* Size of default input buffer. */
187 #define YY_BUF_SIZE 16384
190 /* The state buf must be large enough to hold one state per character in the main buffer.
192 #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
194 #ifndef YY_TYPEDEF_YY_BUFFER_STATE
195 #define YY_TYPEDEF_YY_BUFFER_STATE
196 typedef struct yy_buffer_state *YY_BUFFER_STATE;
199 /* %if-not-reentrant */
204 /* %if-not-reentrant */
205 extern FILE *yyin, *yyout;
209 #define EOB_ACT_CONTINUE_SCAN 0
210 #define EOB_ACT_END_OF_FILE 1
211 #define EOB_ACT_LAST_MATCH 2
213 #define YY_LESS_LINENO(n)
215 /* Return all but the first "n" matched characters back to the input stream. */
219 /* Undo effects of setting up yytext. */ \
220 int yyless_macro_arg = (n); \
221 YY_LESS_LINENO(yyless_macro_arg);\
222 *yy_cp = (yy_hold_char); \
223 YY_RESTORE_YY_MORE_OFFSET \
224 (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
225 YY_DO_BEFORE_ACTION; /* set up yytext again */ \
229 #define unput(c) yyunput( c, (yytext_ptr) )
231 #ifndef YY_TYPEDEF_YY_SIZE_T
232 #define YY_TYPEDEF_YY_SIZE_T
233 typedef size_t yy_size_t;
236 #ifndef YY_STRUCT_YY_BUFFER_STATE
237 #define YY_STRUCT_YY_BUFFER_STATE
238 struct yy_buffer_state
247 char *yy_ch_buf; /* input buffer */
248 char *yy_buf_pos; /* current position in input buffer */
250 /* Size of input buffer in bytes, not including room for EOB
253 yy_size_t yy_buf_size;
255 /* Number of characters read into yy_ch_buf, not including EOB
260 /* Whether we "own" the buffer - i.e., we know we created it,
261 * and can realloc() it to grow it, and should free() it to
264 int yy_is_our_buffer;
266 /* Whether this is an "interactive" input source; if so, and
267 * if we're using stdio for input, then we want to use getc()
268 * instead of fread(), to make sure we stop fetching input after
271 int yy_is_interactive;
273 /* Whether we're considered to be at the beginning of a line.
274 * If so, '^' rules will be active on the next match, otherwise
279 int yy_bs_lineno; /**< The line count. */
280 int yy_bs_column; /**< The column count. */
282 /* Whether to try to fill the input buffer when we reach the
287 int yy_buffer_status;
289 #define YY_BUFFER_NEW 0
290 #define YY_BUFFER_NORMAL 1
291 /* When an EOF's been seen but there's still some text to process
292 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
293 * shouldn't try reading from the input source any more. We might
294 * still have a bunch of tokens to match, though, because of
295 * possible backing-up.
297 * When we actually see the EOF, we change the status to "new"
298 * (via yyrestart()), so that the user can continue scanning by
299 * just pointing yyin at a new input file.
301 #define YY_BUFFER_EOF_PENDING 2
304 #endif /* !YY_STRUCT_YY_BUFFER_STATE */
306 /* %if-c-only Standard (non-C++) definition */
307 /* %not-for-header */
309 /* %if-not-reentrant */
311 /* Stack of input buffers. */
312 static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
313 static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
314 static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
320 /* We provide macros for accessing buffer states in case in the
321 * future we want to put the buffer states in a more general
324 * Returns the top of the stack, or NULL.
326 #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
327 ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
330 /* Same as previous macro, but useful when we know that the buffer stack is not
331 * NULL or when we need an lvalue. For internal use only.
333 #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
335 /* %if-c-only Standard (non-C++) definition */
337 /* %if-not-reentrant */
338 /* %not-for-header */
340 /* yy_hold_char holds the character lost when yytext is formed. */
341 static char yy_hold_char;
342 static int yy_n_chars; /* number of characters read into yy_ch_buf */
345 /* Points to current character in buffer. */
346 static char *yy_c_buf_p = (char *) 0;
347 static int yy_init = 0; /* whether we need to initialize */
348 static int yy_start = 0; /* start state number */
350 /* Flag which is used to allow yywrap()'s to do buffer switches
351 * instead of setting up a fresh yyin. A bit of a hack ...
353 static int yy_did_buffer_switch_on_eof;
358 void yyrestart (FILE *input_file );
359 void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer );
360 YY_BUFFER_STATE yy_create_buffer (FILE *file,int size );
361 void yy_delete_buffer (YY_BUFFER_STATE b );
362 void yy_flush_buffer (YY_BUFFER_STATE b );
363 void yypush_buffer_state (YY_BUFFER_STATE new_buffer );
364 void yypop_buffer_state (void );
366 static void yyensure_buffer_stack (void );
367 static void yy_load_buffer_state (void );
368 static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file );
370 #define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER )
372 YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size );
373 YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str );
374 YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len );
378 void *yyalloc (yy_size_t );
379 void *yyrealloc (void *,yy_size_t );
380 void yyfree (void * );
382 #define yy_new_buffer yy_create_buffer
384 #define yy_set_interactive(is_interactive) \
386 if ( ! YY_CURRENT_BUFFER ){ \
387 yyensure_buffer_stack (); \
388 YY_CURRENT_BUFFER_LVALUE = \
389 yy_create_buffer(yyin,YY_BUF_SIZE ); \
391 YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
394 #define yy_set_bol(at_bol) \
396 if ( ! YY_CURRENT_BUFFER ){\
397 yyensure_buffer_stack (); \
398 YY_CURRENT_BUFFER_LVALUE = \
399 yy_create_buffer(yyin,YY_BUF_SIZE ); \
401 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
404 #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
406 /* %% [1.0] yytext/yyin/yyout/yy_state_type/yylineno etc. def's & init go here */
407 /* Begin user sect3 */
410 #define YY_SKIP_YYWRAP
414 typedef unsigned char YY_CHAR;
416 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
418 typedef int yy_state_type;
425 #define yytext_ptr yytext
427 /* %if-c-only Standard (non-C++) definition */
429 static yy_state_type yy_get_previous_state (void );
430 static yy_state_type yy_try_NUL_trans (yy_state_type current_state );
431 static int yy_get_next_buffer (void );
432 static void yy_fatal_error (yyconst char msg[] );
436 /* Done after the current pattern has been matched and before the
437 * corresponding action - sets up yytext.
439 #define YY_DO_BEFORE_ACTION \
440 (yytext_ptr) = yy_bp; \
441 /* %% [2.0] code to fiddle yytext and yyleng for yymore() goes here \ */\
442 yyleng = (size_t) (yy_cp - yy_bp); \
443 (yy_hold_char) = *yy_cp; \
445 /* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\
446 (yy_c_buf_p) = yy_cp;
448 /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */
449 #define YY_NUM_RULES 13
450 #define YY_END_OF_BUFFER 14
451 /* This struct is not used in this scanner,
452 but its presence is necessary. */
455 flex_int32_t yy_verify;
458 static yyconst flex_int16_t yy_accept[76] =
460 0, 0, 0, 0, 14, 12, 4, 3, 12, 7,
461 12, 12, 7, 12, 12, 12, 12, 12, 9, 9,
462 12, 12, 12, 4, 0, 5, 0, 7, 0, 6,
463 0, 0, 0, 0, 0, 0, 2, 8, 10, 10,
464 9, 0, 0, 9, 9, 0, 9, 0, 0, 11,
465 0, 0, 0, 10, 0, 10, 9, 9, 0, 0,
466 0, 0, 0, 0, 0, 10, 10, 0, 0, 0,
470 static yyconst flex_int32_t yy_ec[256] =
472 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
473 4, 4, 4, 1, 1, 1, 1, 1, 1, 1,
474 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
475 1, 2, 1, 5, 6, 7, 8, 9, 10, 1,
476 1, 8, 11, 1, 12, 13, 8, 14, 15, 15,
477 15, 15, 15, 15, 15, 16, 16, 1, 1, 17,
478 18, 19, 1, 1, 20, 20, 20, 20, 21, 22,
479 7, 7, 7, 7, 7, 23, 7, 7, 7, 7,
480 7, 7, 7, 7, 24, 7, 7, 25, 7, 7,
481 1, 26, 1, 8, 7, 1, 20, 20, 20, 20,
483 21, 22, 7, 7, 7, 7, 7, 27, 7, 7,
484 7, 7, 7, 7, 7, 7, 24, 7, 7, 25,
485 7, 7, 1, 28, 1, 8, 1, 1, 1, 1,
486 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
487 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
488 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
489 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
490 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
491 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
492 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
494 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
495 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
496 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
497 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
498 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
502 static yyconst flex_int32_t yy_meta[29] =
504 1, 1, 2, 1, 1, 1, 3, 1, 1, 1,
505 4, 4, 5, 6, 6, 6, 1, 1, 1, 7,
506 8, 7, 3, 3, 3, 1, 3, 1
509 static yyconst flex_int16_t yy_base[88] =
511 0, 147, 21, 140, 145, 284, 39, 284, 26, 0,
512 32, 126, 40, 44, 115, 35, 36, 46, 50, 53,
513 39, 61, 54, 79, 65, 284, 0, 0, 66, 284,
514 0, 119, 79, 75, 123, 104, 284, 284, 107, 0,
515 79, 73, 76, 76, 66, 0, 0, 85, 86, 284,
516 133, 83, 91, 284, 99, 147, 284, 114, 122, 70,
517 107, 141, 172, 151, 135, 181, 284, 137, 114, 157,
518 149, 48, 45, 284, 284, 208, 214, 222, 230, 238,
519 246, 250, 255, 256, 261, 267, 275
522 static yyconst flex_int16_t yy_def[88] =
524 75, 1, 1, 3, 75, 75, 75, 75, 76, 77,
525 78, 75, 77, 79, 75, 75, 75, 75, 75, 19,
526 75, 75, 75, 75, 76, 75, 80, 77, 78, 75,
527 81, 75, 76, 78, 79, 79, 75, 75, 75, 39,
528 19, 82, 83, 75, 75, 84, 20, 76, 78, 75,
529 79, 51, 85, 75, 75, 75, 75, 84, 79, 51,
530 79, 79, 79, 51, 75, 75, 75, 86, 79, 63,
531 86, 87, 87, 75, 0, 75, 75, 75, 75, 75,
532 75, 75, 75, 75, 75, 75, 75
535 static yyconst flex_int16_t yy_nxt[313] =
537 6, 7, 8, 7, 9, 6, 10, 6, 6, 11,
538 6, 6, 12, 6, 6, 6, 6, 6, 6, 10,
539 10, 10, 13, 10, 10, 6, 10, 6, 15, 16,
540 26, 15, 17, 18, 19, 20, 20, 21, 15, 22,
541 24, 30, 24, 38, 33, 36, 37, 74, 23, 34,
542 74, 27, 38, 38, 38, 38, 38, 31, 32, 39,
543 39, 39, 40, 41, 41, 42, 47, 47, 47, 26,
544 43, 38, 44, 45, 46, 30, 44, 75, 38, 38,
545 24, 38, 24, 26, 30, 40, 55, 55, 57, 26,
546 27, 31, 57, 43, 35, 30, 64, 64, 64, 57,
548 31, 65, 65, 75, 27, 36, 37, 35, 59, 37,
549 27, 31, 56, 56, 56, 59, 37, 51, 52, 52,
550 39, 39, 39, 59, 37, 37, 68, 53, 54, 54,
551 69, 50, 38, 54, 59, 37, 44, 45, 32, 37,
552 44, 35, 59, 37, 75, 14, 60, 60, 66, 66,
553 66, 37, 14, 72, 75, 61, 62, 63, 59, 61,
554 56, 56, 56, 69, 64, 64, 64, 69, 67, 67,
555 75, 75, 75, 67, 37, 35, 75, 75, 75, 61,
556 62, 75, 75, 61, 75, 70, 70, 70, 75, 75,
557 75, 70, 70, 70, 66, 66, 66, 75, 75, 75,
559 75, 75, 54, 54, 75, 75, 75, 54, 25, 25,
560 25, 25, 25, 25, 25, 25, 28, 75, 75, 28,
561 28, 28, 29, 29, 29, 29, 29, 29, 29, 29,
562 35, 35, 35, 35, 35, 35, 35, 35, 48, 75,
563 48, 48, 48, 48, 48, 48, 49, 75, 49, 49,
564 49, 49, 49, 49, 42, 42, 75, 42, 56, 75,
565 56, 58, 58, 58, 66, 75, 66, 71, 71, 71,
566 71, 71, 71, 71, 71, 73, 73, 73, 73, 73,
567 73, 73, 73, 5, 75, 75, 75, 75, 75, 75,
568 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
570 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
574 static yyconst flex_int16_t yy_chk[313] =
576 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
577 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
578 1, 1, 1, 1, 1, 1, 1, 1, 3, 3,
579 9, 3, 3, 3, 3, 3, 3, 3, 3, 3,
580 7, 11, 7, 16, 13, 14, 14, 73, 3, 13,
581 72, 9, 16, 17, 17, 21, 21, 11, 18, 18,
582 18, 18, 19, 19, 19, 19, 20, 20, 20, 25,
583 19, 23, 19, 19, 19, 29, 19, 20, 22, 22,
584 24, 23, 24, 33, 34, 42, 43, 43, 45, 48,
585 25, 29, 45, 42, 60, 49, 52, 52, 52, 44,
587 34, 53, 53, 41, 33, 36, 36, 52, 61, 61,
588 48, 49, 55, 55, 55, 69, 69, 36, 36, 36,
589 39, 39, 39, 59, 59, 35, 59, 39, 39, 39,
590 61, 32, 15, 39, 51, 51, 58, 58, 12, 68,
591 58, 68, 62, 62, 5, 4, 51, 51, 65, 65,
592 65, 71, 2, 71, 0, 51, 51, 51, 70, 51,
593 56, 56, 56, 62, 64, 64, 64, 62, 56, 56,
594 0, 0, 0, 56, 63, 64, 0, 0, 0, 70,
595 70, 0, 0, 70, 0, 63, 63, 63, 0, 0,
596 0, 63, 63, 63, 66, 66, 66, 0, 0, 0,
598 0, 0, 66, 66, 0, 0, 0, 66, 76, 76,
599 76, 76, 76, 76, 76, 76, 77, 0, 0, 77,
600 77, 77, 78, 78, 78, 78, 78, 78, 78, 78,
601 79, 79, 79, 79, 79, 79, 79, 79, 80, 0,
602 80, 80, 80, 80, 80, 80, 81, 0, 81, 81,
603 81, 81, 81, 81, 82, 82, 0, 82, 83, 0,
604 83, 84, 84, 84, 85, 0, 85, 86, 86, 86,
605 86, 86, 86, 86, 86, 87, 87, 87, 87, 87,
606 87, 87, 87, 75, 75, 75, 75, 75, 75, 75,
607 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
609 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
613 static yy_state_type yy_last_accepting_state;
614 static char *yy_last_accepting_cpos;
616 extern int yy_flex_debug;
617 int yy_flex_debug = 1;
619 static yyconst flex_int16_t yy_rule_linenum[13] =
621 71, 72, 73, 76, 79, 80, 81, 87, 88, 89,
625 /* The intent behind this definition is that it'll catch
626 * any uses of REJECT which flex missed.
628 #define REJECT reject_used_but_not_detected
629 #define yymore() yymore_used_but_not_detected
630 #define YY_MORE_ADJ 0
631 #define YY_RESTORE_YY_MORE_OFFSET
633 #line 1 "scripts/genksyms/lex.l"
634 /* Lexical analysis for genksyms.
635 Copyright 1996, 1997 Linux International.
637 New implementation contributed by Richard Henderson <rth@tamu.edu>
638 Based on original work by Bjorn Ekwall <bj0rn@blox.se>
640 Taken from Linux modutils 2.4.22.
642 This program is free software; you can redistribute it and/or modify it
643 under the terms of the GNU General Public License as published by the
644 Free Software Foundation; either version 2 of the License, or (at your
645 option) any later version.
647 This program is distributed in the hope that it will be useful, but
648 WITHOUT ANY WARRANTY; without even the implied warranty of
649 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
650 General Public License for more details.
652 You should have received a copy of the GNU General Public License
653 along with this program; if not, write to the Free Software Foundation,
654 Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
655 #line 25 "scripts/genksyms/lex.l"
662 #include "genksyms.h"
665 /* We've got a two-level lexer here. We let flex do basic tokenization
666 and then we categorize those basic tokens in the second stage. */
667 #define YY_DECL static int yylex1(void)
669 /* Version 2 checksumming does proper tokenization; version 1 wasn't
670 quite so pedantic. */
672 /* We don't do multiple input files. */
673 #define YY_NO_INPUT 1
674 #line 675 "scripts/genksyms/lex.c"
679 #ifndef YY_NO_UNISTD_H
680 /* Special case for "unistd.h", since it is non-ANSI. We include it way
681 * down here because we want the user's section 1 to have been scanned first.
682 * The user has a chance to override it with an option.
691 #ifndef YY_EXTRA_TYPE
692 #define YY_EXTRA_TYPE void *
695 /* %if-c-only Reentrant structure and macros (non-C++). */
699 static int yy_init_globals (void );
704 /* %endif End reentrant structures and macros. */
706 /* Accessor methods to globals.
707 These are made visible to non-reentrant scanners for convenience. */
709 int yylex_destroy (void );
711 int yyget_debug (void );
713 void yyset_debug (int debug_flag );
715 YY_EXTRA_TYPE yyget_extra (void );
717 void yyset_extra (YY_EXTRA_TYPE user_defined );
719 FILE *yyget_in (void );
721 void yyset_in (FILE * in_str );
723 FILE *yyget_out (void );
725 void yyset_out (FILE * out_str );
727 int yyget_leng (void );
729 char *yyget_text (void );
731 int yyget_lineno (void );
733 void yyset_lineno (int line_number );
735 /* %if-bison-bridge */
738 /* Macros after this point can all be overridden by user definitions in
742 #ifndef YY_SKIP_YYWRAP
744 extern "C" int yywrap (void );
746 extern int yywrap (void );
750 /* %not-for-header */
752 static void yyunput (int c,char *buf_ptr );
759 static void yy_flex_strncpy (char *,yyconst char *,int );
762 #ifdef YY_NEED_STRLEN
763 static int yy_flex_strlen (yyconst char * );
767 /* %if-c-only Standard (non-C++) definition */
768 /* %not-for-header */
771 static int yyinput (void );
773 static int input (void );
784 /* Amount of stuff to slurp up with each read. */
785 #ifndef YY_READ_BUF_SIZE
786 #define YY_READ_BUF_SIZE 8192
789 /* Copy whatever the last rule matched to the standard output. */
791 /* %if-c-only Standard (non-C++) definition */
792 /* This used to be an fputs(), but since the string might contain NUL's,
793 * we now use fwrite().
795 #define ECHO fwrite( yytext, yyleng, 1, yyout )
797 /* %if-c++-only C++ definition */
801 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
802 * is returned in "result".
805 #define YY_INPUT(buf,result,max_size) \
806 /* %% [5.0] fread()/read() definition of YY_INPUT goes here unless we're doing C++ \ */\
807 if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
811 for ( n = 0; n < max_size && \
812 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
815 buf[n++] = (char) c; \
816 if ( c == EOF && ferror( yyin ) ) \
817 YY_FATAL_ERROR( "input in flex scanner failed" ); \
823 while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
825 if( errno != EINTR) \
827 YY_FATAL_ERROR( "input in flex scanner failed" ); \
835 /* %if-c++-only C++ definition \ */\
840 /* No semi-colon after return; correct usage is to write "yyterminate();" -
841 * we don't want an extra ';' after the "return" because that will cause
842 * some compilers to complain about unreachable statements.
845 #define yyterminate() return YY_NULL
848 /* Number of entries by which start-condition stack grows. */
849 #ifndef YY_START_STACK_INCR
850 #define YY_START_STACK_INCR 25
853 /* Report a fatal error. */
854 #ifndef YY_FATAL_ERROR
856 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
862 /* %if-tables-serialization structures and prototypes */
863 /* %not-for-header */
867 /* %not-for-header */
869 /* %tables-yydmap generated elements */
871 /* end tables serialization structures and prototypes */
875 /* Default declaration of generated scanner - a define so the user can
876 * easily add parameters.
879 #define YY_DECL_IS_OURS 1
880 /* %if-c-only Standard (non-C++) definition */
882 extern int yylex (void);
884 #define YY_DECL int yylex (void)
886 /* %if-c++-only C++ definition */
888 #endif /* !YY_DECL */
890 /* Code executed at the beginning of each rule, after yytext and yyleng
893 #ifndef YY_USER_ACTION
894 #define YY_USER_ACTION
897 /* Code executed at the end of each rule. */
899 #define YY_BREAK break;
902 /* %% [6.0] YY_RULE_SETUP definition goes here */
903 #define YY_RULE_SETUP \
905 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = \
906 (yytext[yyleng - 1] == '\n'); \
909 /* %not-for-header */
911 /** The main scanner function which does all the work.
915 register yy_state_type yy_current_state;
916 register char *yy_cp, *yy_bp;
919 /* %% [7.0] user's declarations go here */
920 #line 67 "scripts/genksyms/lex.l"
924 /* Keep track of our location in the original source files. */
925 #line 926 "scripts/genksyms/lex.c"
936 (yy_start) = 1; /* first start state */
952 if ( ! YY_CURRENT_BUFFER ) {
953 yyensure_buffer_stack ();
954 YY_CURRENT_BUFFER_LVALUE =
955 yy_create_buffer(yyin,YY_BUF_SIZE );
958 yy_load_buffer_state( );
961 while ( 1 ) /* loops until end-of-file is reached */
963 /* %% [8.0] yymore()-related code goes here */
964 yy_cp = (yy_c_buf_p);
966 /* Support of yytext. */
967 *yy_cp = (yy_hold_char);
969 /* yy_bp points to the position in yy_ch_buf of the start of
974 /* %% [9.0] code to set up and find next match goes here */
975 yy_current_state = (yy_start);
976 yy_current_state += YY_AT_BOL();
980 register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
981 if ( yy_accept[yy_current_state] )
983 (yy_last_accepting_state) = yy_current_state;
984 (yy_last_accepting_cpos) = yy_cp;
986 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
988 yy_current_state = (int) yy_def[yy_current_state];
989 if ( yy_current_state >= 76 )
990 yy_c = yy_meta[(unsigned int) yy_c];
992 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
995 while ( yy_base[yy_current_state] != 284 );
998 /* %% [10.0] code to find the action number goes here */
999 yy_act = yy_accept[yy_current_state];
1001 { /* have to back up */
1002 yy_cp = (yy_last_accepting_cpos);
1003 yy_current_state = (yy_last_accepting_state);
1004 yy_act = yy_accept[yy_current_state];
1007 YY_DO_BEFORE_ACTION;
1009 /* %% [11.0] code for yylineno update goes here */
1011 do_action: /* This label is used only to access EOF actions. */
1013 /* %% [12.0] debug code goes here */
1014 if ( yy_flex_debug )
1017 fprintf( stderr, "--scanner backing up\n" );
1018 else if ( yy_act < 13 )
1019 fprintf( stderr, "--accepting rule at line %ld (\"%s\")\n",
1020 (long)yy_rule_linenum[yy_act], yytext );
1021 else if ( yy_act == 13 )
1022 fprintf( stderr, "--accepting default rule (\"%s\")\n",
1024 else if ( yy_act == 14 )
1025 fprintf( stderr, "--(end of buffer or a NUL)\n" );
1027 fprintf( stderr, "--EOF (start condition %d)\n", YY_START );
1031 { /* beginning of action switch */
1032 /* %% [13.0] actions go here */
1033 case 0: /* must back up */
1034 /* undo the effects of YY_DO_BEFORE_ACTION */
1035 *yy_cp = (yy_hold_char);
1036 yy_cp = (yy_last_accepting_cpos);
1037 yy_current_state = (yy_last_accepting_state);
1038 goto yy_find_action;
1041 /* rule 1 can match eol */
1043 #line 71 "scripts/genksyms/lex.l"
1047 /* rule 2 can match eol */
1049 #line 72 "scripts/genksyms/lex.l"
1053 /* rule 3 can match eol */
1055 #line 73 "scripts/genksyms/lex.l"
1058 /* Ignore all other whitespace. */
1061 #line 76 "scripts/genksyms/lex.l"
1065 /* rule 5 can match eol */
1067 #line 79 "scripts/genksyms/lex.l"
1071 /* rule 6 can match eol */
1073 #line 80 "scripts/genksyms/lex.l"
1078 #line 81 "scripts/genksyms/lex.l"
1081 /* The Pedant requires that the other C multi-character tokens be
1082 recognized as tokens. We don't actually use them since we don't
1083 parse expressions, but we do want whitespace to be arranged
1084 around them properly. */
1087 #line 87 "scripts/genksyms/lex.l"
1092 #line 88 "scripts/genksyms/lex.l"
1097 #line 89 "scripts/genksyms/lex.l"
1102 #line 91 "scripts/genksyms/lex.l"
1105 /* All other tokens are single characters. */
1108 #line 94 "scripts/genksyms/lex.l"
1113 #line 97 "scripts/genksyms/lex.l"
1116 #line 1117 "scripts/genksyms/lex.c"
1117 case YY_STATE_EOF(INITIAL):
1118 case YY_STATE_EOF(V2_TOKENS):
1121 case YY_END_OF_BUFFER:
1123 /* Amount of text matched not including the EOB char. */
1124 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
1126 /* Undo the effects of YY_DO_BEFORE_ACTION. */
1127 *yy_cp = (yy_hold_char);
1128 YY_RESTORE_YY_MORE_OFFSET
1130 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
1132 /* We're scanning a new file or input source. It's
1133 * possible that this happened because the user
1134 * just pointed yyin at a new source and called
1135 * yylex(). If so, then we have to assure
1136 * consistency between YY_CURRENT_BUFFER and our
1137 * globals. Here is the right place to do so, because
1138 * this is the first action (other than possibly a
1139 * back-up) that will match for the new input source.
1141 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
1142 YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
1143 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
1146 /* Note that here we test for yy_c_buf_p "<=" to the position
1147 * of the first EOB in the buffer, since yy_c_buf_p will
1148 * already have been incremented past the NUL character
1149 * (since all states make transitions on EOB to the
1150 * end-of-buffer state). Contrast this with the test
1153 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
1154 { /* This was really a NUL. */
1155 yy_state_type yy_next_state;
1157 (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
1159 yy_current_state = yy_get_previous_state( );
1161 /* Okay, we're now positioned to make the NUL
1162 * transition. We couldn't have
1163 * yy_get_previous_state() go ahead and do it
1164 * for us because it doesn't know how to deal
1165 * with the possibility of jamming (and we don't
1166 * want to build jamming into it because then it
1167 * will run more slowly).
1170 yy_next_state = yy_try_NUL_trans( yy_current_state );
1172 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
1174 if ( yy_next_state )
1176 /* Consume the NUL. */
1177 yy_cp = ++(yy_c_buf_p);
1178 yy_current_state = yy_next_state;
1184 /* %% [14.0] code to do back-up for compressed tables and set up yy_cp goes here */
1185 yy_cp = (yy_c_buf_p);
1186 goto yy_find_action;
1190 else switch ( yy_get_next_buffer( ) )
1192 case EOB_ACT_END_OF_FILE:
1194 (yy_did_buffer_switch_on_eof) = 0;
1198 /* Note: because we've taken care in
1199 * yy_get_next_buffer() to have set up
1200 * yytext, we can now set up
1201 * yy_c_buf_p so that if some total
1202 * hoser (like flex itself) wants to
1203 * call the scanner after we return the
1204 * YY_NULL, it'll still work - another
1205 * YY_NULL will get returned.
1207 (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
1209 yy_act = YY_STATE_EOF(YY_START);
1215 if ( ! (yy_did_buffer_switch_on_eof) )
1221 case EOB_ACT_CONTINUE_SCAN:
1223 (yytext_ptr) + yy_amount_of_matched_text;
1225 yy_current_state = yy_get_previous_state( );
1227 yy_cp = (yy_c_buf_p);
1228 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
1231 case EOB_ACT_LAST_MATCH:
1233 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
1235 yy_current_state = yy_get_previous_state( );
1237 yy_cp = (yy_c_buf_p);
1238 yy_bp = (yytext_ptr) + YY_MORE_ADJ;
1239 goto yy_find_action;
1246 "fatal flex scanner internal error--no action found" );
1247 } /* end of action switch */
1248 } /* end of scanning one token */
1249 } /* end of yylex */
1250 /* %ok-for-header */
1253 /* %not-for-header */
1255 /* %ok-for-header */
1259 /* yy_get_next_buffer - try to read in a new buffer
1261 * Returns a code representing an action:
1262 * EOB_ACT_LAST_MATCH -
1263 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
1264 * EOB_ACT_END_OF_FILE - end of file
1267 static int yy_get_next_buffer (void)
1272 register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
1273 register char *source = (yytext_ptr);
1274 register int number_to_move, i;
1277 if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
1279 "fatal flex scanner internal error--end of buffer missed" );
1281 if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
1282 { /* Don't try to fill the buffer, so this is an EOF. */
1283 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
1285 /* We matched a single character, the EOB, so
1286 * treat this as a final EOF.
1288 return EOB_ACT_END_OF_FILE;
1293 /* We matched some text prior to the EOB, first
1296 return EOB_ACT_LAST_MATCH;
1300 /* Try to read more data. */
1302 /* First move last chars to start of buffer. */
1303 number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
1305 for ( i = 0; i < number_to_move; ++i )
1306 *(dest++) = *(source++);
1308 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
1309 /* don't do the read, it's not guaranteed to return an EOF,
1312 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
1317 YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
1319 while ( num_to_read <= 0 )
1320 { /* Not enough room in the buffer - grow it. */
1322 /* just a shorter name for the current buffer */
1323 YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
1325 int yy_c_buf_p_offset =
1326 (int) ((yy_c_buf_p) - b->yy_ch_buf);
1328 if ( b->yy_is_our_buffer )
1330 int new_size = b->yy_buf_size * 2;
1332 if ( new_size <= 0 )
1333 b->yy_buf_size += b->yy_buf_size / 8;
1335 b->yy_buf_size *= 2;
1337 b->yy_ch_buf = (char *)
1338 /* Include room in for 2 EOB chars. */
1339 yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 );
1342 /* Can't grow it, we don't own it. */
1345 if ( ! b->yy_ch_buf )
1347 "fatal error - scanner input buffer overflow" );
1349 (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
1351 num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
1356 if ( num_to_read > YY_READ_BUF_SIZE )
1357 num_to_read = YY_READ_BUF_SIZE;
1359 /* Read in more data. */
1360 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
1361 (yy_n_chars), (size_t) num_to_read );
1363 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
1366 if ( (yy_n_chars) == 0 )
1368 if ( number_to_move == YY_MORE_ADJ )
1370 ret_val = EOB_ACT_END_OF_FILE;
1376 ret_val = EOB_ACT_LAST_MATCH;
1377 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
1378 YY_BUFFER_EOF_PENDING;
1383 ret_val = EOB_ACT_CONTINUE_SCAN;
1385 if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
1386 /* Extend the array by 50%, plus the number we really need. */
1387 yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
1388 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size );
1389 if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
1390 YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
1393 (yy_n_chars) += number_to_move;
1394 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
1395 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
1397 (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
1402 /* yy_get_previous_state - get the state just before the EOB char was reached */
1405 /* %not-for-header */
1407 static yy_state_type yy_get_previous_state (void)
1412 register yy_state_type yy_current_state;
1413 register char *yy_cp;
1415 /* %% [15.0] code to get the start state into yy_current_state goes here */
1416 yy_current_state = (yy_start);
1417 yy_current_state += YY_AT_BOL();
1419 for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
1421 /* %% [16.0] code to find the next state goes here */
1422 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
1423 if ( yy_accept[yy_current_state] )
1425 (yy_last_accepting_state) = yy_current_state;
1426 (yy_last_accepting_cpos) = yy_cp;
1428 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1430 yy_current_state = (int) yy_def[yy_current_state];
1431 if ( yy_current_state >= 76 )
1432 yy_c = yy_meta[(unsigned int) yy_c];
1434 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1437 return yy_current_state;
1440 /* yy_try_NUL_trans - try to make a transition on the NUL character
1443 * next_state = yy_try_NUL_trans( current_state );
1446 static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
1451 register int yy_is_jam;
1452 /* %% [17.0] code to find the next state, and perhaps do backing up, goes here */
1453 register char *yy_cp = (yy_c_buf_p);
1455 register YY_CHAR yy_c = 1;
1456 if ( yy_accept[yy_current_state] )
1458 (yy_last_accepting_state) = yy_current_state;
1459 (yy_last_accepting_cpos) = yy_cp;
1461 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1463 yy_current_state = (int) yy_def[yy_current_state];
1464 if ( yy_current_state >= 76 )
1465 yy_c = yy_meta[(unsigned int) yy_c];
1467 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1468 yy_is_jam = (yy_current_state == 75);
1470 return yy_is_jam ? 0 : yy_current_state;
1475 static void yyunput (int c, register char * yy_bp )
1480 register char *yy_cp;
1482 yy_cp = (yy_c_buf_p);
1484 /* undo effects of setting up yytext */
1485 *yy_cp = (yy_hold_char);
1487 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
1488 { /* need to shift things up to make room */
1489 /* +2 for EOB chars. */
1490 register int number_to_move = (yy_n_chars) + 2;
1491 register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
1492 YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
1493 register char *source =
1494 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
1496 while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
1497 *--dest = *--source;
1499 yy_cp += (int) (dest - source);
1500 yy_bp += (int) (dest - source);
1501 YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
1502 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
1504 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
1505 YY_FATAL_ERROR( "flex scanner push-back overflow" );
1508 *--yy_cp = (char) c;
1510 /* %% [18.0] update yylineno here */
1512 (yytext_ptr) = yy_bp;
1513 (yy_hold_char) = *yy_cp;
1514 (yy_c_buf_p) = yy_cp;
1523 static int yyinput (void)
1525 static int input (void)
1534 *(yy_c_buf_p) = (yy_hold_char);
1536 if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
1538 /* yy_c_buf_p now points to the character we want to return.
1539 * If this occurs *before* the EOB characters, then it's a
1540 * valid NUL; if not, then we've hit the end of the buffer.
1542 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
1543 /* This was really a NUL. */
1544 *(yy_c_buf_p) = '\0';
1547 { /* need more input */
1548 int offset = (yy_c_buf_p) - (yytext_ptr);
1551 switch ( yy_get_next_buffer( ) )
1553 case EOB_ACT_LAST_MATCH:
1554 /* This happens because yy_g_n_b()
1555 * sees that we've accumulated a
1556 * token and flags that we need to
1557 * try matching the token before
1558 * proceeding. But for input(),
1559 * there's no matching to consider.
1560 * So convert the EOB_ACT_LAST_MATCH
1561 * to EOB_ACT_END_OF_FILE.
1564 /* Reset buffer status. */
1569 case EOB_ACT_END_OF_FILE:
1574 if ( ! (yy_did_buffer_switch_on_eof) )
1583 case EOB_ACT_CONTINUE_SCAN:
1584 (yy_c_buf_p) = (yytext_ptr) + offset;
1590 c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */
1591 *(yy_c_buf_p) = '\0'; /* preserve yytext */
1592 (yy_hold_char) = *++(yy_c_buf_p);
1594 /* %% [19.0] update BOL and yylineno */
1595 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = (c == '\n');
1600 #endif /* ifndef YY_NO_INPUT */
1603 /** Immediately switch to a different input stream.
1604 * @param input_file A readable stream.
1606 * @note This function does not reset the start condition to @c INITIAL .
1609 void yyrestart (FILE * input_file )
1615 if ( ! YY_CURRENT_BUFFER ){
1616 yyensure_buffer_stack ();
1617 YY_CURRENT_BUFFER_LVALUE =
1618 yy_create_buffer(yyin,YY_BUF_SIZE );
1621 yy_init_buffer(YY_CURRENT_BUFFER,input_file );
1622 yy_load_buffer_state( );
1625 /** Switch to a different input buffer.
1626 * @param new_buffer The new input buffer.
1630 void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer )
1636 /* TODO. We should be able to replace this entire function body
1638 * yypop_buffer_state();
1639 * yypush_buffer_state(new_buffer);
1641 yyensure_buffer_stack ();
1642 if ( YY_CURRENT_BUFFER == new_buffer )
1645 if ( YY_CURRENT_BUFFER )
1647 /* Flush out information for old buffer. */
1648 *(yy_c_buf_p) = (yy_hold_char);
1649 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
1650 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
1653 YY_CURRENT_BUFFER_LVALUE = new_buffer;
1654 yy_load_buffer_state( );
1656 /* We don't actually know whether we did this switch during
1657 * EOF (yywrap()) processing, but the only time this flag
1658 * is looked at is after yywrap() is called, so it's safe
1659 * to go ahead and always set it.
1661 (yy_did_buffer_switch_on_eof) = 1;
1665 static void yy_load_buffer_state (void)
1670 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
1671 (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
1672 yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
1673 (yy_hold_char) = *(yy_c_buf_p);
1676 /** Allocate and initialize an input buffer state.
1677 * @param file A readable stream.
1678 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
1680 * @return the allocated buffer state.
1683 YY_BUFFER_STATE yy_create_buffer (FILE * file, int size )
1690 b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) );
1692 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
1694 b->yy_buf_size = size;
1696 /* yy_ch_buf has to be 2 characters longer than the size given because
1697 * we need to put in 2 end-of-buffer characters.
1699 b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 );
1700 if ( ! b->yy_ch_buf )
1701 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
1703 b->yy_is_our_buffer = 1;
1705 yy_init_buffer(b,file );
1710 /** Destroy the buffer.
1711 * @param b a buffer created with yy_create_buffer()
1715 void yy_delete_buffer (YY_BUFFER_STATE b )
1724 if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
1725 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
1727 if ( b->yy_is_our_buffer )
1728 yyfree((void *) b->yy_ch_buf );
1730 yyfree((void *) b );
1736 extern int isatty (int );
1737 #endif /* __cplusplus */
1744 /* Initializes or reinitializes a buffer.
1745 * This function is sometimes called more than once on the same buffer,
1746 * such as during a yyrestart() or at EOF.
1749 static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file )
1757 yy_flush_buffer(b );
1759 b->yy_input_file = file;
1760 b->yy_fill_buffer = 1;
1762 /* If b is the current buffer, then yy_init_buffer was _probably_
1763 * called from yyrestart() or through yy_get_next_buffer.
1764 * In that case, we don't want to reset the lineno or column.
1766 if (b != YY_CURRENT_BUFFER){
1767 b->yy_bs_lineno = 1;
1768 b->yy_bs_column = 0;
1773 b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
1781 /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
1782 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
1786 void yy_flush_buffer (YY_BUFFER_STATE b )
1796 /* We always need two end-of-buffer characters. The first causes
1797 * a transition to the end-of-buffer state. The second causes
1798 * a jam in that state.
1800 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
1801 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
1803 b->yy_buf_pos = &b->yy_ch_buf[0];
1806 b->yy_buffer_status = YY_BUFFER_NEW;
1808 if ( b == YY_CURRENT_BUFFER )
1809 yy_load_buffer_state( );
1813 /** Pushes the new state onto the stack. The new state becomes
1814 * the current state. This function will allocate the stack
1816 * @param new_buffer The new state.
1820 void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
1825 if (new_buffer == NULL)
1828 yyensure_buffer_stack();
1830 /* This block is copied from yy_switch_to_buffer. */
1831 if ( YY_CURRENT_BUFFER )
1833 /* Flush out information for old buffer. */
1834 *(yy_c_buf_p) = (yy_hold_char);
1835 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
1836 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
1839 /* Only push if top exists. Otherwise, replace top. */
1840 if (YY_CURRENT_BUFFER)
1841 (yy_buffer_stack_top)++;
1842 YY_CURRENT_BUFFER_LVALUE = new_buffer;
1844 /* copied from yy_switch_to_buffer. */
1845 yy_load_buffer_state( );
1846 (yy_did_buffer_switch_on_eof) = 1;
1851 /** Removes and deletes the top of the stack, if present.
1852 * The next element becomes the new top.
1856 void yypop_buffer_state (void)
1861 if (!YY_CURRENT_BUFFER)
1864 yy_delete_buffer(YY_CURRENT_BUFFER );
1865 YY_CURRENT_BUFFER_LVALUE = NULL;
1866 if ((yy_buffer_stack_top) > 0)
1867 --(yy_buffer_stack_top);
1869 if (YY_CURRENT_BUFFER) {
1870 yy_load_buffer_state( );
1871 (yy_did_buffer_switch_on_eof) = 1;
1877 /* Allocates the stack if it does not exist.
1878 * Guarantees space for at least one push.
1881 static void yyensure_buffer_stack (void)
1888 if (!(yy_buffer_stack)) {
1890 /* First allocation is just for 2 elements, since we don't know if this
1891 * scanner will even need a stack. We use 2 instead of 1 to avoid an
1892 * immediate realloc on the next call.
1895 (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
1896 (num_to_alloc * sizeof(struct yy_buffer_state*)
1898 if ( ! (yy_buffer_stack) )
1899 YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
1901 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
1903 (yy_buffer_stack_max) = num_to_alloc;
1904 (yy_buffer_stack_top) = 0;
1908 if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
1910 /* Increase the buffer to prepare for a possible push. */
1911 int grow_size = 8 /* arbitrary grow size */;
1913 num_to_alloc = (yy_buffer_stack_max) + grow_size;
1914 (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
1916 num_to_alloc * sizeof(struct yy_buffer_state*)
1918 if ( ! (yy_buffer_stack) )
1919 YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
1921 /* zero only the new slots.*/
1922 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
1923 (yy_buffer_stack_max) = num_to_alloc;
1929 /** Setup the input buffer state to scan directly from a user-specified character buffer.
1930 * @param base the character buffer
1931 * @param size the size in bytes of the character buffer
1933 * @return the newly allocated buffer state object.
1935 YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size )
1940 base[size-2] != YY_END_OF_BUFFER_CHAR ||
1941 base[size-1] != YY_END_OF_BUFFER_CHAR )
1942 /* They forgot to leave room for the EOB's. */
1945 b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) );
1947 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
1949 b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
1950 b->yy_buf_pos = b->yy_ch_buf = base;
1951 b->yy_is_our_buffer = 0;
1952 b->yy_input_file = 0;
1953 b->yy_n_chars = b->yy_buf_size;
1954 b->yy_is_interactive = 0;
1956 b->yy_fill_buffer = 0;
1957 b->yy_buffer_status = YY_BUFFER_NEW;
1959 yy_switch_to_buffer(b );
1966 /** Setup the input buffer state to scan a string. The next call to yylex() will
1967 * scan from a @e copy of @a str.
1968 * @param yystr a NUL-terminated string to scan
1970 * @return the newly allocated buffer state object.
1971 * @note If you want to scan bytes that may contain NUL values, then use
1972 * yy_scan_bytes() instead.
1974 YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
1977 return yy_scan_bytes(yystr,strlen(yystr) );
1982 /** Setup the input buffer state to scan the given bytes. The next call to yylex() will
1983 * scan from a @e copy of @a bytes.
1984 * @param bytes the byte buffer to scan
1985 * @param len the number of bytes in the buffer pointed to by @a bytes.
1987 * @return the newly allocated buffer state object.
1989 YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len )
1996 /* Get memory for full buffer, including space for trailing EOB's. */
1997 n = _yybytes_len + 2;
1998 buf = (char *) yyalloc(n );
2000 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
2002 for ( i = 0; i < _yybytes_len; ++i )
2003 buf[i] = yybytes[i];
2005 buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
2007 b = yy_scan_buffer(buf,n );
2009 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
2011 /* It's okay to grow etc. this buffer, and we should throw it
2012 * away when we're done.
2014 b->yy_is_our_buffer = 1;
2020 #ifndef YY_EXIT_FAILURE
2021 #define YY_EXIT_FAILURE 2
2025 static void yy_fatal_error (yyconst char* msg )
2027 (void) fprintf( stderr, "%s\n", msg );
2028 exit( YY_EXIT_FAILURE );
2034 /* Redefine yyless() so it works in section 3 code. */
2040 /* Undo effects of setting up yytext. */ \
2041 int yyless_macro_arg = (n); \
2042 YY_LESS_LINENO(yyless_macro_arg);\
2043 yytext[yyleng] = (yy_hold_char); \
2044 (yy_c_buf_p) = yytext + yyless_macro_arg; \
2045 (yy_hold_char) = *(yy_c_buf_p); \
2046 *(yy_c_buf_p) = '\0'; \
2047 yyleng = yyless_macro_arg; \
2051 /* Accessor methods (get/set functions) to struct members. */
2057 /** Get the current line number.
2060 int yyget_lineno (void)
2066 /** Get the input stream.
2069 FILE *yyget_in (void)
2074 /** Get the output stream.
2077 FILE *yyget_out (void)
2082 /** Get the length of the current token.
2085 int yyget_leng (void)
2090 /** Get the current token.
2094 char *yyget_text (void)
2102 /** Set the current line number.
2103 * @param line_number
2106 void yyset_lineno (int line_number )
2109 yylineno = line_number;
2112 /** Set the input stream. This does not discard the current
2114 * @param in_str A readable stream.
2116 * @see yy_switch_to_buffer
2118 void yyset_in (FILE * in_str )
2123 void yyset_out (FILE * out_str )
2128 int yyget_debug (void)
2130 return yy_flex_debug;
2133 void yyset_debug (int bdebug )
2135 yy_flex_debug = bdebug ;
2141 /* %if-bison-bridge */
2143 /* %endif if-c-only */
2146 static int yy_init_globals (void)
2148 /* Initialization is the same as for the non-reentrant scanner.
2149 * This function is called from yylex_destroy(), so don't allocate here.
2152 (yy_buffer_stack) = 0;
2153 (yy_buffer_stack_top) = 0;
2154 (yy_buffer_stack_max) = 0;
2155 (yy_c_buf_p) = (char *) 0;
2159 /* Defined in main.c */
2168 /* For future reference: Set errno on error, since we are called by
2175 /* %if-c-only SNIP! this currently causes conflicts with the c++ scanner */
2176 /* yylex_destroy is for both reentrant and non-reentrant scanners. */
2177 int yylex_destroy (void)
2180 /* Pop the buffer stack, destroying each element. */
2181 while(YY_CURRENT_BUFFER){
2182 yy_delete_buffer(YY_CURRENT_BUFFER );
2183 YY_CURRENT_BUFFER_LVALUE = NULL;
2184 yypop_buffer_state();
2187 /* Destroy the stack itself. */
2188 yyfree((yy_buffer_stack) );
2189 (yy_buffer_stack) = NULL;
2191 /* Reset the globals. This is important in a non-reentrant scanner so the next time
2192 * yylex() is called, initialization will occur. */
2202 * Internal utility routines.
2206 static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
2209 for ( i = 0; i < n; ++i )
2214 #ifdef YY_NEED_STRLEN
2215 static int yy_flex_strlen (yyconst char * s )
2218 for ( n = 0; s[n]; ++n )
2225 void *yyalloc (yy_size_t size )
2227 return (void *) malloc( size );
2230 void *yyrealloc (void * ptr, yy_size_t size )
2232 /* The cast to (char *) in the following accommodates both
2233 * implementations that use char* generic pointers, and those
2234 * that use void* generic pointers. It works with the latter
2235 * because both ANSI C and C++ allow castless assignment from
2236 * any pointer type to void*, and deal with argument conversions
2237 * as though doing an assignment.
2239 return (void *) realloc( (char *) ptr, size );
2242 void yyfree (void * ptr )
2244 free( (char *) ptr ); /* see yyrealloc() for (char *) cast */
2247 /* %if-tables-serialization definitions */
2248 /* %define-yytables The name for this specific scanner's tables. */
2249 #define YYTABLES_NAME "yytables"
2252 /* %ok-for-header */
2254 #line 97 "scripts/genksyms/lex.l"
2258 /* Bring in the keyword recognizer. */
2260 #include "keywords.c"
2263 /* Macros to append to our phrase collection list. */
2265 #define _APP(T,L) do { \
2266 cur_node = next_node; \
2267 next_node = xmalloc(sizeof(*next_node)); \
2268 next_node->next = cur_node; \
2269 cur_node->string = memcpy(xmalloc(L+1), T, L+1); \
2270 cur_node->tag = SYM_NORMAL; \
2273 #define APP _APP(yytext, yyleng)
2276 /* The second stage lexer. Here we incorporate knowledge of the state
2277 of the parser to tailor the tokens that are returned. */
2283 ST_NOTSTARTED, ST_NORMAL, ST_ATTRIBUTE, ST_ASM, ST_BRACKET, ST_BRACE,
2284 ST_EXPRESSION, ST_TABLE_1, ST_TABLE_2, ST_TABLE_3, ST_TABLE_4,
2285 ST_TABLE_5, ST_TABLE_6
2286 } lexstate = ST_NOTSTARTED;
2288 static int suppress_type_lookup, dont_want_brace_phrase;
2289 static struct string_list *next_node;
2291 int token, count = 0;
2292 struct string_list *cur_node;
2294 if (lexstate == ST_NOTSTARTED)
2297 next_node = xmalloc(sizeof(*next_node));
2298 next_node->next = NULL;
2299 lexstate = ST_NORMAL;
2307 else if (token == FILENAME)
2311 /* Save the filename and line number for later error messages. */
2316 file = strchr(yytext, '\"')+1;
2317 e = strchr(file, '\"');
2319 cur_filename = memcpy(xmalloc(e-file+1), file, e-file+1);
2320 cur_line = atoi(yytext+2);
2333 const struct resword *r = is_reserved_word(yytext, yyleng);
2336 switch (token = r->token)
2338 case ATTRIBUTE_KEYW:
2339 lexstate = ST_ATTRIBUTE;
2349 dont_want_brace_phrase = 3;
2351 suppress_type_lookup = 2;
2354 case EXPORT_SYMBOL_KEYW:
2358 if (!suppress_type_lookup)
2360 struct symbol *sym = find_symbol(yytext, SYM_TYPEDEF);
2361 if (sym && sym->type == SYM_TYPEDEF)
2369 lexstate = ST_BRACKET;
2375 if (dont_want_brace_phrase)
2377 lexstate = ST_BRACE;
2383 lexstate = ST_EXPRESSION;
2403 lexstate = ST_NORMAL;
2404 token = ATTRIBUTE_PHRASE;
2423 lexstate = ST_NORMAL;
2443 lexstate = ST_NORMAL;
2444 token = BRACKET_PHRASE;
2463 lexstate = ST_NORMAL;
2464 token = BRACE_PHRASE;
2476 case '(': case '[': case '{':
2480 case ')': case ']': case '}':
2487 /* Put back the token we just read so's we can find it again
2488 after registering the expression. */
2491 lexstate = ST_NORMAL;
2492 token = EXPRESSION_PHRASE;
2507 if (token == IDENT && yyleng == 1 && yytext[0] == 'X')
2509 token = EXPORT_SYMBOL_KEYW;
2510 lexstate = ST_TABLE_5;
2514 lexstate = ST_TABLE_6;
2520 case '{': case '[': case '(':
2523 case '}': case ']': case ')':
2528 lexstate = ST_TABLE_2;
2538 lexstate = ST_NORMAL;
2546 lexstate = ST_TABLE_2;
2560 if (suppress_type_lookup > 0)
2561 --suppress_type_lookup;
2562 if (dont_want_brace_phrase > 0)
2563 --dont_want_brace_phrase;
2565 yylval = &next_node->next;