Home | History | Annotate | Line # | Download | only in elftosb2
      1  1.1  jkunz 
      2  1.1  jkunz 
      3  1.1  jkunz #define  YY_INT_ALIGNED short int
      4  1.1  jkunz 
      5  1.1  jkunz /* A lexical scanner generated by flex */
      6  1.1  jkunz 
      7  1.1  jkunz #define FLEX_SCANNER
      8  1.1  jkunz #define YY_FLEX_MAJOR_VERSION 2
      9  1.1  jkunz #define YY_FLEX_MINOR_VERSION 5
     10  1.1  jkunz #define YY_FLEX_SUBMINOR_VERSION 35
     11  1.1  jkunz #if YY_FLEX_SUBMINOR_VERSION > 0
     12  1.1  jkunz #define FLEX_BETA
     13  1.1  jkunz #endif
     14  1.1  jkunz 
     15  1.1  jkunz     /* The c++ scanner is a mess. The FlexLexer.h header file relies on the
     16  1.1  jkunz      * following macro. This is required in order to pass the c++-multiple-scanners
     17  1.1  jkunz      * test in the regression suite. We get reports that it breaks inheritance.
     18  1.1  jkunz      * We will address this in a future release of flex, or omit the C++ scanner
     19  1.1  jkunz      * altogether.
     20  1.1  jkunz      */
     21  1.1  jkunz     #define yyFlexLexer yyFlexLexer
     22  1.1  jkunz 
     23  1.1  jkunz /* First, we deal with  platform-specific or compiler-specific issues. */
     24  1.1  jkunz 
     25  1.1  jkunz /* begin standard C headers. */
     26  1.1  jkunz 
     27  1.1  jkunz /* end standard C headers. */
     28  1.1  jkunz 
     29  1.1  jkunz /* flex integer type definitions */
     30  1.1  jkunz 
     31  1.1  jkunz #ifndef FLEXINT_H
     32  1.1  jkunz #define FLEXINT_H
     33  1.1  jkunz 
     34  1.1  jkunz /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
     35  1.1  jkunz 
     36  1.1  jkunz #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
     37  1.1  jkunz 
     38  1.1  jkunz /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
     39  1.1  jkunz  * if you want the limit (max/min) macros for int types.
     40  1.1  jkunz  */
     41  1.1  jkunz #ifndef __STDC_LIMIT_MACROS
     42  1.1  jkunz #define __STDC_LIMIT_MACROS 1
     43  1.1  jkunz #endif
     44  1.1  jkunz 
     45  1.1  jkunz #include <inttypes.h>
     46  1.1  jkunz typedef int8_t flex_int8_t;
     47  1.1  jkunz typedef uint8_t flex_uint8_t;
     48  1.1  jkunz typedef int16_t flex_int16_t;
     49  1.1  jkunz typedef uint16_t flex_uint16_t;
     50  1.1  jkunz typedef int32_t flex_int32_t;
     51  1.1  jkunz typedef uint32_t flex_uint32_t;
     52  1.1  jkunz #else
     53  1.1  jkunz typedef signed char flex_int8_t;
     54  1.1  jkunz typedef short int flex_int16_t;
     55  1.1  jkunz typedef int flex_int32_t;
     56  1.1  jkunz typedef unsigned char flex_uint8_t;
     57  1.1  jkunz typedef unsigned short int flex_uint16_t;
     58  1.1  jkunz typedef unsigned int flex_uint32_t;
     59  1.1  jkunz #endif /* ! C99 */
     60  1.1  jkunz 
     61  1.1  jkunz /* Limits of integral types. */
     62  1.1  jkunz #ifndef INT8_MIN
     63  1.1  jkunz #define INT8_MIN               (-128)
     64  1.1  jkunz #endif
     65  1.1  jkunz #ifndef INT16_MIN
     66  1.1  jkunz #define INT16_MIN              (-32767-1)
     67  1.1  jkunz #endif
     68  1.1  jkunz #ifndef INT32_MIN
     69  1.1  jkunz #define INT32_MIN              (-2147483647-1)
     70  1.1  jkunz #endif
     71  1.1  jkunz #ifndef INT8_MAX
     72  1.1  jkunz #define INT8_MAX               (127)
     73  1.1  jkunz #endif
     74  1.1  jkunz #ifndef INT16_MAX
     75  1.1  jkunz #define INT16_MAX              (32767)
     76  1.1  jkunz #endif
     77  1.1  jkunz #ifndef INT32_MAX
     78  1.1  jkunz #define INT32_MAX              (2147483647)
     79  1.1  jkunz #endif
     80  1.1  jkunz #ifndef UINT8_MAX
     81  1.1  jkunz #define UINT8_MAX              (255U)
     82  1.1  jkunz #endif
     83  1.1  jkunz #ifndef UINT16_MAX
     84  1.1  jkunz #define UINT16_MAX             (65535U)
     85  1.1  jkunz #endif
     86  1.1  jkunz #ifndef UINT32_MAX
     87  1.1  jkunz #define UINT32_MAX             (4294967295U)
     88  1.1  jkunz #endif
     89  1.1  jkunz 
     90  1.1  jkunz #endif /* ! FLEXINT_H */
     91  1.1  jkunz 
     92  1.1  jkunz /* begin standard C++ headers. */
     93  1.1  jkunz #include <iostream>
     94  1.1  jkunz #include <errno.h>
     95  1.1  jkunz #include <cstdlib>
     96  1.1  jkunz #include <cstring>
     97  1.1  jkunz /* end standard C++ headers. */
     98  1.1  jkunz 
     99  1.1  jkunz #ifdef __cplusplus
    100  1.1  jkunz 
    101  1.1  jkunz /* The "const" storage-class-modifier is valid. */
    102  1.1  jkunz #define YY_USE_CONST
    103  1.1  jkunz 
    104  1.1  jkunz #else	/* ! __cplusplus */
    105  1.1  jkunz 
    106  1.1  jkunz /* C99 requires __STDC__ to be defined as 1. */
    107  1.1  jkunz #if defined (__STDC__)
    108  1.1  jkunz 
    109  1.1  jkunz #define YY_USE_CONST
    110  1.1  jkunz 
    111  1.1  jkunz #endif	/* defined (__STDC__) */
    112  1.1  jkunz #endif	/* ! __cplusplus */
    113  1.1  jkunz 
    114  1.1  jkunz #ifdef YY_USE_CONST
    115  1.1  jkunz #define yyconst const
    116  1.1  jkunz #else
    117  1.1  jkunz #define yyconst
    118  1.1  jkunz #endif
    119  1.1  jkunz 
    120  1.1  jkunz /* Returned upon end-of-file. */
    121  1.1  jkunz #define YY_NULL 0
    122  1.1  jkunz 
    123  1.1  jkunz /* Promotes a possibly negative, possibly signed char to an unsigned
    124  1.1  jkunz  * integer for use as an array index.  If the signed char is negative,
    125  1.1  jkunz  * we want to instead treat it as an 8-bit unsigned char, hence the
    126  1.1  jkunz  * double cast.
    127  1.1  jkunz  */
    128  1.1  jkunz #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
    129  1.1  jkunz 
    130  1.1  jkunz /* Enter a start condition.  This macro really ought to take a parameter,
    131  1.1  jkunz  * but we do it the disgusting crufty way forced on us by the ()-less
    132  1.1  jkunz  * definition of BEGIN.
    133  1.1  jkunz  */
    134  1.1  jkunz #define BEGIN (yy_start) = 1 + 2 *
    135  1.1  jkunz 
    136  1.1  jkunz /* Translate the current start state into a value that can be later handed
    137  1.1  jkunz  * to BEGIN to return to the state.  The YYSTATE alias is for lex
    138  1.1  jkunz  * compatibility.
    139  1.1  jkunz  */
    140  1.1  jkunz #define YY_START (((yy_start) - 1) / 2)
    141  1.1  jkunz #define YYSTATE YY_START
    142  1.1  jkunz 
    143  1.1  jkunz /* Action number for EOF rule of a given start state. */
    144  1.1  jkunz #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
    145  1.1  jkunz 
    146  1.1  jkunz /* Special action meaning "start processing a new file". */
    147  1.1  jkunz #define YY_NEW_FILE yyrestart( yyin  )
    148  1.1  jkunz 
    149  1.1  jkunz #define YY_END_OF_BUFFER_CHAR 0
    150  1.1  jkunz 
    151  1.1  jkunz /* Size of default input buffer. */
    152  1.1  jkunz #ifndef YY_BUF_SIZE
    153  1.1  jkunz #define YY_BUF_SIZE 16384
    154  1.1  jkunz #endif
    155  1.1  jkunz 
    156  1.1  jkunz /* The state buf must be large enough to hold one state per character in the main buffer.
    157  1.1  jkunz  */
    158  1.1  jkunz #define YY_STATE_BUF_SIZE   ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
    159  1.1  jkunz 
    160  1.1  jkunz #ifndef YY_TYPEDEF_YY_BUFFER_STATE
    161  1.1  jkunz #define YY_TYPEDEF_YY_BUFFER_STATE
    162  1.1  jkunz typedef struct yy_buffer_state *YY_BUFFER_STATE;
    163  1.1  jkunz #endif
    164  1.1  jkunz 
    165  1.1  jkunz #ifndef YY_TYPEDEF_YY_SIZE_T
    166  1.1  jkunz #define YY_TYPEDEF_YY_SIZE_T
    167  1.1  jkunz typedef size_t yy_size_t;
    168  1.1  jkunz #endif
    169  1.1  jkunz 
    170  1.1  jkunz extern yy_size_t yyleng;
    171  1.1  jkunz 
    172  1.1  jkunz #define EOB_ACT_CONTINUE_SCAN 0
    173  1.1  jkunz #define EOB_ACT_END_OF_FILE 1
    174  1.1  jkunz #define EOB_ACT_LAST_MATCH 2
    175  1.1  jkunz 
    176  1.1  jkunz     /* Note: We specifically omit the test for yy_rule_can_match_eol because it requires
    177  1.1  jkunz      *       access to the local variable yy_act. Since yyless() is a macro, it would break
    178  1.1  jkunz      *       existing scanners that call yyless() from OUTSIDE yylex.
    179  1.1  jkunz      *       One obvious solution it to make yy_act a global. I tried that, and saw
    180  1.1  jkunz      *       a 5% performance hit in a non-yylineno scanner, because yy_act is
    181  1.1  jkunz      *       normally declared as a register variable-- so it is not worth it.
    182  1.1  jkunz      */
    183  1.1  jkunz     #define  YY_LESS_LINENO(n) \
    184  1.1  jkunz             do { \
    185  1.1  jkunz                 int yyl;\
    186  1.1  jkunz                 for ( yyl = n; yyl < yyleng; ++yyl )\
    187  1.1  jkunz                     if ( yytext[yyl] == '\n' )\
    188  1.1  jkunz                         --yylineno;\
    189  1.1  jkunz             }while(0)
    190  1.1  jkunz 
    191  1.1  jkunz /* Return all but the first "n" matched characters back to the input stream. */
    192  1.1  jkunz #define yyless(n) \
    193  1.1  jkunz 	do \
    194  1.1  jkunz 		{ \
    195  1.1  jkunz 		/* Undo effects of setting up yytext. */ \
    196  1.1  jkunz         int yyless_macro_arg = (n); \
    197  1.1  jkunz         YY_LESS_LINENO(yyless_macro_arg);\
    198  1.1  jkunz 		*yy_cp = (yy_hold_char); \
    199  1.1  jkunz 		YY_RESTORE_YY_MORE_OFFSET \
    200  1.1  jkunz 		(yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
    201  1.1  jkunz 		YY_DO_BEFORE_ACTION; /* set up yytext again */ \
    202  1.1  jkunz 		} \
    203  1.1  jkunz 	while ( 0 )
    204  1.1  jkunz 
    205  1.1  jkunz #define unput(c) yyunput( c, (yytext_ptr)  )
    206  1.1  jkunz 
    207  1.1  jkunz #ifndef YY_STRUCT_YY_BUFFER_STATE
    208  1.1  jkunz #define YY_STRUCT_YY_BUFFER_STATE
    209  1.1  jkunz struct yy_buffer_state
    210  1.1  jkunz 	{
    211  1.1  jkunz 
    212  1.1  jkunz 	std::istream* yy_input_file;
    213  1.1  jkunz 
    214  1.1  jkunz 	char *yy_ch_buf;		/* input buffer */
    215  1.1  jkunz 	char *yy_buf_pos;		/* current position in input buffer */
    216  1.1  jkunz 
    217  1.1  jkunz 	/* Size of input buffer in bytes, not including room for EOB
    218  1.1  jkunz 	 * characters.
    219  1.1  jkunz 	 */
    220  1.1  jkunz 	yy_size_t yy_buf_size;
    221  1.1  jkunz 
    222  1.1  jkunz 	/* Number of characters read into yy_ch_buf, not including EOB
    223  1.1  jkunz 	 * characters.
    224  1.1  jkunz 	 */
    225  1.1  jkunz 	yy_size_t yy_n_chars;
    226  1.1  jkunz 
    227  1.1  jkunz 	/* Whether we "own" the buffer - i.e., we know we created it,
    228  1.1  jkunz 	 * and can realloc() it to grow it, and should free() it to
    229  1.1  jkunz 	 * delete it.
    230  1.1  jkunz 	 */
    231  1.1  jkunz 	int yy_is_our_buffer;
    232  1.1  jkunz 
    233  1.1  jkunz 	/* Whether this is an "interactive" input source; if so, and
    234  1.1  jkunz 	 * if we're using stdio for input, then we want to use getc()
    235  1.1  jkunz 	 * instead of fread(), to make sure we stop fetching input after
    236  1.1  jkunz 	 * each newline.
    237  1.1  jkunz 	 */
    238  1.1  jkunz 	int yy_is_interactive;
    239  1.1  jkunz 
    240  1.1  jkunz 	/* Whether we're considered to be at the beginning of a line.
    241  1.1  jkunz 	 * If so, '^' rules will be active on the next match, otherwise
    242  1.1  jkunz 	 * not.
    243  1.1  jkunz 	 */
    244  1.1  jkunz 	int yy_at_bol;
    245  1.1  jkunz 
    246  1.1  jkunz     int yy_bs_lineno; /**< The line count. */
    247  1.1  jkunz     int yy_bs_column; /**< The column count. */
    248  1.1  jkunz 
    249  1.1  jkunz 	/* Whether to try to fill the input buffer when we reach the
    250  1.1  jkunz 	 * end of it.
    251  1.1  jkunz 	 */
    252  1.1  jkunz 	int yy_fill_buffer;
    253  1.1  jkunz 
    254  1.1  jkunz 	int yy_buffer_status;
    255  1.1  jkunz 
    256  1.1  jkunz #define YY_BUFFER_NEW 0
    257  1.1  jkunz #define YY_BUFFER_NORMAL 1
    258  1.1  jkunz 	/* When an EOF's been seen but there's still some text to process
    259  1.1  jkunz 	 * then we mark the buffer as YY_EOF_PENDING, to indicate that we
    260  1.1  jkunz 	 * shouldn't try reading from the input source any more.  We might
    261  1.1  jkunz 	 * still have a bunch of tokens to match, though, because of
    262  1.1  jkunz 	 * possible backing-up.
    263  1.1  jkunz 	 *
    264  1.1  jkunz 	 * When we actually see the EOF, we change the status to "new"
    265  1.1  jkunz 	 * (via yyrestart()), so that the user can continue scanning by
    266  1.1  jkunz 	 * just pointing yyin at a new input file.
    267  1.1  jkunz 	 */
    268  1.1  jkunz #define YY_BUFFER_EOF_PENDING 2
    269  1.1  jkunz 
    270  1.1  jkunz 	};
    271  1.1  jkunz #endif /* !YY_STRUCT_YY_BUFFER_STATE */
    272  1.1  jkunz 
    273  1.1  jkunz /* We provide macros for accessing buffer states in case in the
    274  1.1  jkunz  * future we want to put the buffer states in a more general
    275  1.1  jkunz  * "scanner state".
    276  1.1  jkunz  *
    277  1.1  jkunz  * Returns the top of the stack, or NULL.
    278  1.1  jkunz  */
    279  1.1  jkunz #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
    280  1.1  jkunz                           ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
    281  1.1  jkunz                           : NULL)
    282  1.1  jkunz 
    283  1.1  jkunz /* Same as previous macro, but useful when we know that the buffer stack is not
    284  1.1  jkunz  * NULL or when we need an lvalue. For internal use only.
    285  1.1  jkunz  */
    286  1.1  jkunz #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
    287  1.1  jkunz 
    288  1.1  jkunz void *yyalloc (yy_size_t  );
    289  1.1  jkunz void *yyrealloc (void *,yy_size_t  );
    290  1.1  jkunz void yyfree (void *  );
    291  1.1  jkunz 
    292  1.1  jkunz #define yy_new_buffer yy_create_buffer
    293  1.1  jkunz 
    294  1.1  jkunz #define yy_set_interactive(is_interactive) \
    295  1.1  jkunz 	{ \
    296  1.1  jkunz 	if ( ! YY_CURRENT_BUFFER ){ \
    297  1.1  jkunz         yyensure_buffer_stack (); \
    298  1.1  jkunz 		YY_CURRENT_BUFFER_LVALUE =    \
    299  1.1  jkunz             yy_create_buffer( yyin, YY_BUF_SIZE ); \
    300  1.1  jkunz 	} \
    301  1.1  jkunz 	YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
    302  1.1  jkunz 	}
    303  1.1  jkunz 
    304  1.1  jkunz #define yy_set_bol(at_bol) \
    305  1.1  jkunz 	{ \
    306  1.1  jkunz 	if ( ! YY_CURRENT_BUFFER ){\
    307  1.1  jkunz         yyensure_buffer_stack (); \
    308  1.1  jkunz 		YY_CURRENT_BUFFER_LVALUE =    \
    309  1.1  jkunz             yy_create_buffer( yyin, YY_BUF_SIZE ); \
    310  1.1  jkunz 	} \
    311  1.1  jkunz 	YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
    312  1.1  jkunz 	}
    313  1.1  jkunz 
    314  1.1  jkunz #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
    315  1.1  jkunz 
    316  1.1  jkunz /* Begin user sect3 */
    317  1.1  jkunz #define YY_SKIP_YYWRAP
    318  1.1  jkunz 
    319  1.1  jkunz typedef unsigned char YY_CHAR;
    320  1.1  jkunz 
    321  1.1  jkunz #define yytext_ptr yytext
    322  1.1  jkunz 
    323  1.1  jkunz #include <FlexLexer.h>
    324  1.1  jkunz 
    325  1.1  jkunz int yyFlexLexer::yywrap() { return 1; }
    326  1.1  jkunz int yyFlexLexer::yylex()
    327  1.1  jkunz 	{
    328  1.1  jkunz 	LexerError( "yyFlexLexer::yylex invoked but %option yyclass used" );
    329  1.1  jkunz 	return 0;
    330  1.1  jkunz 	}
    331  1.1  jkunz 
    332  1.1  jkunz #define YY_DECL int ElftosbLexer::yylex()
    333  1.1  jkunz 
    334  1.1  jkunz /* Done after the current pattern has been matched and before the
    335  1.1  jkunz  * corresponding action - sets up yytext.
    336  1.1  jkunz  */
    337  1.1  jkunz #define YY_DO_BEFORE_ACTION \
    338  1.1  jkunz 	(yytext_ptr) = yy_bp; \
    339  1.1  jkunz 	yyleng = (size_t) (yy_cp - yy_bp); \
    340  1.1  jkunz 	(yy_hold_char) = *yy_cp; \
    341  1.1  jkunz 	*yy_cp = '\0'; \
    342  1.1  jkunz 	(yy_c_buf_p) = yy_cp;
    343  1.1  jkunz 
    344  1.1  jkunz #define YY_NUM_RULES 74
    345  1.1  jkunz #define YY_END_OF_BUFFER 75
    346  1.1  jkunz /* This struct is not used in this scanner,
    347  1.1  jkunz    but its presence is necessary. */
    348  1.1  jkunz struct yy_trans_info
    349  1.1  jkunz 	{
    350  1.1  jkunz 	flex_int32_t yy_verify;
    351  1.1  jkunz 	flex_int32_t yy_nxt;
    352  1.1  jkunz 	};
    353  1.1  jkunz static yyconst flex_int16_t yy_accept[218] =
    354  1.1  jkunz     {   0,
    355  1.1  jkunz         0,    0,    0,    0,    0,    0,   75,   73,   70,   71,
    356  1.1  jkunz        71,   64,   73,   73,   73,   49,   54,   73,   34,   35,
    357  1.1  jkunz        47,   45,   39,   46,   42,   48,   27,   27,   40,   41,
    358  1.1  jkunz        57,   38,   43,   26,   36,   37,   51,   26,   26,   26,
    359  1.1  jkunz        26,   26,   26,   26,   26,   26,   26,   26,   26,   26,
    360  1.1  jkunz        26,   26,   26,   26,   32,   55,   33,   50,   73,   73,
    361  1.1  jkunz        72,   70,   71,   72,   71,   61,    0,   65,    0,    0,
    362  1.1  jkunz        69,   29,   62,    0,    0,   56,   44,   30,    0,    0,
    363  1.1  jkunz        27,   27,    0,    0,   52,   59,   60,   58,   53,   26,
    364  1.1  jkunz        23,   26,   26,   26,   26,   26,   26,   26,   26,   26,
    365  1.1  jkunz 
    366  1.1  jkunz        26,   26,   13,   26,   26,   26,   26,   26,   25,   26,
    367  1.1  jkunz        26,   26,   26,   26,   26,   26,   26,   31,   63,   66,
    368  1.1  jkunz        67,   68,    0,    0,   28,    0,    0,   27,   27,   26,
    369  1.1  jkunz        26,   20,   26,   26,   26,   26,   26,   26,   26,   21,
    370  1.1  jkunz        26,   22,   26,   26,   26,   26,    8,   26,   26,   26,
    371  1.1  jkunz        26,   26,   24,    0,    0,   28,    0,    0,    0,   11,
    372  1.1  jkunz        26,   26,   14,   26,   26,   26,   26,    7,   16,   10,
    373  1.1  jkunz         9,   12,   26,   26,   26,   26,   26,    0,    0,    0,
    374  1.1  jkunz         0,   28,    0,   26,   26,   18,   26,   26,   26,   26,
    375  1.1  jkunz        26,   26,   26,   28,    0,   28,    0,   26,   26,    6,
    376  1.1  jkunz 
    377  1.1  jkunz        26,   26,   26,   19,   26,   26,    0,   26,   15,    4,
    378  1.1  jkunz         1,    5,    3,   17,   26,    2,    0
    379  1.1  jkunz     } ;
    380  1.1  jkunz 
    381  1.1  jkunz static yyconst flex_int32_t yy_ec[256] =
    382  1.1  jkunz     {   0,
    383  1.1  jkunz         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
    384  1.1  jkunz         1,    1,    4,    1,    1,    1,    1,    1,    1,    1,
    385  1.1  jkunz         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    386  1.1  jkunz         1,    2,    5,    6,    7,    8,    9,   10,   11,   12,
    387  1.1  jkunz        13,   14,   15,   16,   17,   18,   19,   20,   21,   22,
    388  1.1  jkunz        22,   22,   22,   22,   22,   22,   22,   23,   24,   25,
    389  1.1  jkunz        26,   27,   28,    1,   29,   29,   30,   29,   31,   29,
    390  1.1  jkunz        32,   33,   33,   33,   32,   33,   32,   33,   33,   33,
    391  1.1  jkunz        33,   33,   34,   33,   33,   33,   33,   33,   33,   33,
    392  1.1  jkunz        35,    1,   36,   37,   33,    1,   38,   39,   40,   41,
    393  1.1  jkunz 
    394  1.1  jkunz        42,   43,   44,   45,   46,   47,   33,   48,   49,   50,
    395  1.1  jkunz        51,   52,   33,   53,   54,   55,   56,   57,   58,   59,
    396  1.1  jkunz        60,   61,   62,   63,   64,   65,    1,    1,    1,    1,
    397  1.1  jkunz         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    398  1.1  jkunz         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    399  1.1  jkunz         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    400  1.1  jkunz         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    401  1.1  jkunz         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    402  1.1  jkunz         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    403  1.1  jkunz         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    404  1.1  jkunz 
    405  1.1  jkunz         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    406  1.1  jkunz         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    407  1.1  jkunz         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    408  1.1  jkunz         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    409  1.1  jkunz         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    410  1.1  jkunz         1,    1,    1,    1,    1
    411  1.1  jkunz     } ;
    412  1.1  jkunz 
    413  1.1  jkunz static yyconst flex_int32_t yy_meta[66] =
    414  1.1  jkunz     {   0,
    415  1.1  jkunz         1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
    416  1.1  jkunz         1,    1,    1,    3,    1,    1,    3,    3,    1,    4,
    417  1.1  jkunz         4,    4,    1,    1,    1,    1,    1,    3,    4,    4,
    418  1.1  jkunz         4,    5,    5,    5,    3,    3,    3,    4,    4,    4,
    419  1.1  jkunz         4,    4,    4,    5,    5,    5,    5,    5,    5,    5,
    420  1.1  jkunz         5,    5,    5,    5,    5,    5,    5,    5,    5,    5,
    421  1.1  jkunz         5,    1,    1,    1,    1
    422  1.1  jkunz     } ;
    423  1.1  jkunz 
    424  1.1  jkunz static yyconst flex_int16_t yy_base[231] =
    425  1.1  jkunz     {   0,
    426  1.1  jkunz         0,    0,   64,  127,   67,   73,  384,  385,  385,  385,
    427  1.1  jkunz       380,  356,   66,  378,    0,  385,  370,  348,  385,  385,
    428  1.1  jkunz       364,  385,  385,  385,  359,   59,   78,   94,  385,  385,
    429  1.1  jkunz        57,  350,   62,    0,  385,  385,  385,  191,   41,   69,
    430  1.1  jkunz        60,   74,  337,   75,  318,  322,  321,  320,  318,  331,
    431  1.1  jkunz        92,  315,  329,  324,  303,  301,  385,  385,    0,  299,
    432  1.1  jkunz       385,  385,  359,  342,  385,  385,  115,  385,  129,  357,
    433  1.1  jkunz       385,    0,  385,  111,  128,  385,  385,  385,  356,  121,
    434  1.1  jkunz       152,  385,   70,    0,  385,  385,  385,  385,  385,    0,
    435  1.1  jkunz       385,  310,  307,  315,  312,  300,  300,  297,  303,  302,
    436  1.1  jkunz 
    437  1.1  jkunz       298,  309,    0,  304,  291,  296,  306,  302,    0,  287,
    438  1.1  jkunz       283,  300,  278,  282,  281,  283,  281,  385,  385,  385,
    439  1.1  jkunz       385,  385,  145,  113,  130,  200,  202,  218,  148,  286,
    440  1.1  jkunz       279,    0,  286,  289,  279,  287,  274,  272,  277,    0,
    441  1.1  jkunz       274,    0,  272,  282,  280,  275,    0,  265,  277,  265,
    442  1.1  jkunz       275,  266,    0,  146,  284,  283,  102,  148,  210,    0,
    443  1.1  jkunz       258,  262,    0,  258,  257,  267,  266,    0,    0,    0,
    444  1.1  jkunz         0,    0,  256,  257,  247,  253,  242,  270,  153,  160,
    445  1.1  jkunz       211,  212,  213,  214,  209,    0,  199,  195,  196,  189,
    446  1.1  jkunz       194,  194,  185,  385,  200,  198,  151,  162,  148,    0,
    447  1.1  jkunz 
    448  1.1  jkunz       134,  132,  135,    0,  129,  111,  214,   90,    0,    0,
    449  1.1  jkunz         0,    0,    0,    0,   86,    0,  385,  256,  261,  266,
    450  1.1  jkunz       271,  274,  279,  281,   97,  286,   70,  291,  296,  301
    451  1.1  jkunz     } ;
    452  1.1  jkunz 
    453  1.1  jkunz static yyconst flex_int16_t yy_def[231] =
    454  1.1  jkunz     {   0,
    455  1.1  jkunz       217,    1,  218,  218,  219,  219,  217,  217,  217,  217,
    456  1.1  jkunz       217,  217,  220,  221,  222,  217,  217,  223,  217,  217,
    457  1.1  jkunz       217,  217,  217,  217,  217,  217,  217,  217,  217,  217,
    458  1.1  jkunz       217,  217,  217,  224,  217,  217,  217,  224,  224,  224,
    459  1.1  jkunz       224,  224,   38,  224,  224,  224,  224,  224,  224,  224,
    460  1.1  jkunz       224,  224,   38,  224,  217,  217,  217,  217,  225,  217,
    461  1.1  jkunz       217,  217,  217,  217,  217,  217,  220,  217,  220,  221,
    462  1.1  jkunz       217,  222,  217,  226,  226,  217,  217,  217,  221,  217,
    463  1.1  jkunz       217,  217,  217,  227,  217,  217,  217,  217,  217,  224,
    464  1.1  jkunz       217,  224,  224,  224,  224,  224,  224,  224,  224,  224,
    465  1.1  jkunz 
    466  1.1  jkunz       224,  224,  224,  224,  224,  224,  224,  224,  224,  224,
    467  1.1  jkunz       224,  224,  224,  224,  224,  224,  224,  217,  217,  217,
    468  1.1  jkunz       217,  217,  220,  228,  228,  228,  228,  217,  227,  224,
    469  1.1  jkunz       224,  224,  224,  224,  224,  224,  224,  224,  224,  224,
    470  1.1  jkunz       224,  224,  224,  224,  224,  224,  224,  224,  224,  224,
    471  1.1  jkunz       224,  224,  224,  220,  229,  229,  229,  229,  230,  224,
    472  1.1  jkunz       224,  224,  224,  224,  224,  224,  224,  224,  224,  224,
    473  1.1  jkunz       224,  224,  224,  224,  224,  224,  224,  217,  217,  217,
    474  1.1  jkunz       228,  228,  228,  224,  224,  224,  224,  224,  224,  224,
    475  1.1  jkunz       224,  224,  224,  217,  217,  229,  229,  224,  224,  224,
    476  1.1  jkunz 
    477  1.1  jkunz       224,  224,  224,  224,  224,  224,  228,  224,  224,  224,
    478  1.1  jkunz       224,  224,  224,  224,  224,  224,    0,  217,  217,  217,
    479  1.1  jkunz       217,  217,  217,  217,  217,  217,  217,  217,  217,  217
    480  1.1  jkunz     } ;
    481  1.1  jkunz 
    482  1.1  jkunz static yyconst flex_int16_t yy_nxt[451] =
    483  1.1  jkunz     {   0,
    484  1.1  jkunz         8,    9,   10,   11,   12,   13,   14,   15,   16,   17,
    485  1.1  jkunz        18,   19,   20,   21,   22,   23,   24,   25,   26,   27,
    486  1.1  jkunz        28,   28,   29,   30,   31,   32,   33,    8,   34,   34,
    487  1.1  jkunz        34,   34,   34,   34,   35,   36,   37,   34,   38,   39,
    488  1.1  jkunz        40,   41,   42,   34,   43,   44,   45,   46,   47,   48,
    489  1.1  jkunz        49,   34,   50,   51,   52,   34,   34,   53,   34,   54,
    490  1.1  jkunz        34,   55,   56,   57,   58,    9,   10,   11,   62,   10,
    491  1.1  jkunz        63,   68,   78,  129,   62,   10,   63,   79,   92,   80,
    492  1.1  jkunz        64,   85,   86,   59,   59,   59,   64,   88,   89,  128,
    493  1.1  jkunz       128,   93,   59,   59,   59,   80,   69,   81,   81,   81,
    494  1.1  jkunz 
    495  1.1  jkunz       120,   59,   59,   59,   59,   59,   59,   96,   94,   82,
    496  1.1  jkunz        95,   99,   97,   81,   81,   81,   83,  103,   98,  100,
    497  1.1  jkunz        68,  125,   80,  156,  104,   82,  101,   60,    9,   10,
    498  1.1  jkunz        11,  105,  179,  112,   68,  180,   84,  113,  125,  216,
    499  1.1  jkunz       156,  126,  114,  157,  215,   69,   59,   59,   59,   80,
    500  1.1  jkunz        68,   68,   82,   80,  214,   59,   59,   59,  126,   69,
    501  1.1  jkunz       157,  127,  123,  194,   59,   59,   59,   59,   59,   59,
    502  1.1  jkunz       194,   81,   81,   81,  154,   69,   69,  181,  179,   82,
    503  1.1  jkunz       207,  179,  213,   82,  212,  211,  195,  210,  209,  155,
    504  1.1  jkunz        60,   91,   91,   91,   91,   91,   91,   91,   91,   91,
    505  1.1  jkunz 
    506  1.1  jkunz        91,   91,   91,   91,   91,   91,   91,   91,   91,   91,
    507  1.1  jkunz       156,  208,  156,   91,   91,   91,   91,   91,   91,   80,
    508  1.1  jkunz       182,  196,  196,  196,  196,   91,   91,   91,  179,  178,
    509  1.1  jkunz       157,  159,  157,  158,  206,  205,  204,  128,  128,  203,
    510  1.1  jkunz       183,  157,  157,  157,  157,  202,  197,  201,  200,   82,
    511  1.1  jkunz       199,  198,   91,   91,   91,   91,    8,    8,    8,    8,
    512  1.1  jkunz         8,   61,   61,   61,   61,   61,   67,   67,   67,   67,
    513  1.1  jkunz        67,   70,   70,   70,   70,   70,   72,   72,   72,   74,
    514  1.1  jkunz       194,   74,   74,   74,   90,   90,  124,  193,  124,  124,
    515  1.1  jkunz       124,  155,  192,  155,  155,  155,  178,  191,  178,  178,
    516  1.1  jkunz 
    517  1.1  jkunz       178,  181,  190,  181,  181,  181,  189,  188,  109,  187,
    518  1.1  jkunz       186,  185,  184,  179,  179,  177,  153,  176,  175,  174,
    519  1.1  jkunz       173,  172,  171,  170,  169,  168,  167,  166,  165,  164,
    520  1.1  jkunz       163,  162,  161,  160,  153,  152,  151,  150,  149,  148,
    521  1.1  jkunz       147,  146,  145,  144,  143,  142,  141,  140,  139,  138,
    522  1.1  jkunz       137,  136,  135,  134,  133,  132,  131,  130,   71,   71,
    523  1.1  jkunz       122,   65,  121,  119,  118,  117,  116,  115,  111,  110,
    524  1.1  jkunz       109,  108,  107,  106,  102,   87,   77,   76,   75,   73,
    525  1.1  jkunz        71,   66,   65,  217,    7,  217,  217,  217,  217,  217,
    526  1.1  jkunz       217,  217,  217,  217,  217,  217,  217,  217,  217,  217,
    527  1.1  jkunz 
    528  1.1  jkunz       217,  217,  217,  217,  217,  217,  217,  217,  217,  217,
    529  1.1  jkunz       217,  217,  217,  217,  217,  217,  217,  217,  217,  217,
    530  1.1  jkunz       217,  217,  217,  217,  217,  217,  217,  217,  217,  217,
    531  1.1  jkunz       217,  217,  217,  217,  217,  217,  217,  217,  217,  217,
    532  1.1  jkunz       217,  217,  217,  217,  217,  217,  217,  217,  217,  217
    533  1.1  jkunz     } ;
    534  1.1  jkunz 
    535  1.1  jkunz static yyconst flex_int16_t yy_chk[451] =
    536  1.1  jkunz     {   0,
    537  1.1  jkunz         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    538  1.1  jkunz         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    539  1.1  jkunz         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    540  1.1  jkunz         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    541  1.1  jkunz         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    542  1.1  jkunz         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
    543  1.1  jkunz         1,    1,    1,    1,    1,    3,    3,    3,    5,    5,
    544  1.1  jkunz         5,   13,   26,  227,    6,    6,    6,   26,   39,   27,
    545  1.1  jkunz         5,   31,   31,    3,    3,    3,    6,   33,   33,   83,
    546  1.1  jkunz        83,   39,    3,    3,    3,   28,   13,   27,   27,   27,
    547  1.1  jkunz 
    548  1.1  jkunz       225,    3,    3,    3,    3,    3,    3,   41,   40,   27,
    549  1.1  jkunz        40,   42,   41,   28,   28,   28,   27,   44,   41,   42,
    550  1.1  jkunz        67,   74,   80,  124,   44,   28,   42,    3,    4,    4,
    551  1.1  jkunz         4,   44,  157,   51,   69,  157,   27,   51,   75,  215,
    552  1.1  jkunz       125,   74,   51,  124,  208,   67,    4,    4,    4,  129,
    553  1.1  jkunz       123,  154,   80,   81,  206,    4,    4,    4,   75,   69,
    554  1.1  jkunz       125,   75,   69,  179,    4,    4,    4,    4,    4,    4,
    555  1.1  jkunz       180,   81,   81,   81,  123,  123,  154,  158,  158,  129,
    556  1.1  jkunz       197,  197,  205,   81,  203,  202,  179,  201,  199,  180,
    557  1.1  jkunz         4,   38,   38,   38,   38,   38,   38,   38,   38,   38,
    558  1.1  jkunz 
    559  1.1  jkunz        38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
    560  1.1  jkunz       126,  198,  127,   38,   38,   38,   38,   38,   38,  128,
    561  1.1  jkunz       159,  181,  182,  183,  207,   38,   38,   38,  196,  195,
    562  1.1  jkunz       126,  127,  127,  126,  193,  192,  191,  128,  128,  190,
    563  1.1  jkunz       159,  181,  182,  183,  207,  189,  183,  188,  187,  128,
    564  1.1  jkunz       185,  184,   38,   38,   38,   38,  218,  218,  218,  218,
    565  1.1  jkunz       218,  219,  219,  219,  219,  219,  220,  220,  220,  220,
    566  1.1  jkunz       220,  221,  221,  221,  221,  221,  222,  222,  222,  223,
    567  1.1  jkunz       178,  223,  223,  223,  224,  224,  226,  177,  226,  226,
    568  1.1  jkunz       226,  228,  176,  228,  228,  228,  229,  175,  229,  229,
    569  1.1  jkunz 
    570  1.1  jkunz       229,  230,  174,  230,  230,  230,  173,  167,  166,  165,
    571  1.1  jkunz       164,  162,  161,  156,  155,  152,  151,  150,  149,  148,
    572  1.1  jkunz       146,  145,  144,  143,  141,  139,  138,  137,  136,  135,
    573  1.1  jkunz       134,  133,  131,  130,  117,  116,  115,  114,  113,  112,
    574  1.1  jkunz       111,  110,  108,  107,  106,  105,  104,  102,  101,  100,
    575  1.1  jkunz        99,   98,   97,   96,   95,   94,   93,   92,   79,   70,
    576  1.1  jkunz        64,   63,   60,   56,   55,   54,   53,   52,   50,   49,
    577  1.1  jkunz        48,   47,   46,   45,   43,   32,   25,   21,   18,   17,
    578  1.1  jkunz        14,   12,   11,    7,  217,  217,  217,  217,  217,  217,
    579  1.1  jkunz       217,  217,  217,  217,  217,  217,  217,  217,  217,  217,
    580  1.1  jkunz 
    581  1.1  jkunz       217,  217,  217,  217,  217,  217,  217,  217,  217,  217,
    582  1.1  jkunz       217,  217,  217,  217,  217,  217,  217,  217,  217,  217,
    583  1.1  jkunz       217,  217,  217,  217,  217,  217,  217,  217,  217,  217,
    584  1.1  jkunz       217,  217,  217,  217,  217,  217,  217,  217,  217,  217,
    585  1.1  jkunz       217,  217,  217,  217,  217,  217,  217,  217,  217,  217
    586  1.1  jkunz     } ;
    587  1.1  jkunz 
    588  1.1  jkunz /* Table of booleans, true if rule could match eol. */
    589  1.1  jkunz static yyconst flex_int32_t yy_rule_can_match_eol[75] =
    590  1.1  jkunz     {   0,
    591  1.1  jkunz 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    592  1.1  jkunz     0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    593  1.1  jkunz     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
    594  1.1  jkunz     0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0,     };
    595  1.1  jkunz 
    596  1.1  jkunz /* The intent behind this definition is that it'll catch
    597  1.1  jkunz  * any uses of REJECT which flex missed.
    598  1.1  jkunz  */
    599  1.1  jkunz #define REJECT reject_used_but_not_detected
    600  1.1  jkunz #define yymore() yymore_used_but_not_detected
    601  1.1  jkunz #define YY_MORE_ADJ 0
    602  1.1  jkunz #define YY_RESTORE_YY_MORE_OFFSET
    603  1.1  jkunz /* %option prefix="Elftosb" */
    604  1.1  jkunz #include "ElftosbLexer.h"
    605  1.1  jkunz #include <stdlib.h>
    606  1.1  jkunz #include <limits.h>
    607  1.1  jkunz #include <string>
    608  1.1  jkunz #include "HexValues.h"
    609  1.1  jkunz #include "Value.h"
    610  1.1  jkunz 
    611  1.1  jkunz using namespace elftosb;
    612  1.1  jkunz 
    613  1.1  jkunz //! Always executed before all other actions when a token is matched.
    614  1.1  jkunz //! This action just assign the first and last lines of the token to
    615  1.1  jkunz //! the current line. In most cases this is correct.
    616  1.1  jkunz #define YY_USER_ACTION	do {									\
    617  1.1  jkunz 							m_location.m_firstLine = m_line;		\
    618  1.1  jkunz 							m_location.m_lastLine = m_line;		\
    619  1.1  jkunz 						} while (0);
    620  1.1  jkunz 
    621  1.1  jkunz /* start conditions */
    622  1.1  jkunz 
    623  1.1  jkunz 
    624  1.1  jkunz #define INITIAL 0
    625  1.1  jkunz #define blob 1
    626  1.1  jkunz #define mlcmt 2
    627  1.1  jkunz 
    628  1.1  jkunz #ifndef YY_NO_UNISTD_H
    629  1.1  jkunz /* Special case for "unistd.h", since it is non-ANSI. We include it way
    630  1.1  jkunz  * down here because we want the user's section 1 to have been scanned first.
    631  1.1  jkunz  * The user has a chance to override it with an option.
    632  1.1  jkunz  */
    633  1.1  jkunz #include <unistd.h>
    634  1.1  jkunz #endif
    635  1.1  jkunz 
    636  1.1  jkunz #ifndef YY_EXTRA_TYPE
    637  1.1  jkunz #define YY_EXTRA_TYPE void *
    638  1.1  jkunz #endif
    639  1.1  jkunz 
    640  1.1  jkunz #ifndef yytext_ptr
    641  1.1  jkunz static void yy_flex_strncpy (char *,yyconst char *,int );
    642  1.1  jkunz #endif
    643  1.1  jkunz 
    644  1.1  jkunz #ifdef YY_NEED_STRLEN
    645  1.1  jkunz static int yy_flex_strlen (yyconst char * );
    646  1.1  jkunz #endif
    647  1.1  jkunz 
    648  1.1  jkunz #ifndef YY_NO_INPUT
    649  1.1  jkunz 
    650  1.1  jkunz #endif
    651  1.1  jkunz 
    652  1.1  jkunz /* Amount of stuff to slurp up with each read. */
    653  1.1  jkunz #ifndef YY_READ_BUF_SIZE
    654  1.1  jkunz #define YY_READ_BUF_SIZE 8192
    655  1.1  jkunz #endif
    656  1.1  jkunz 
    657  1.1  jkunz /* Copy whatever the last rule matched to the standard output. */
    658  1.1  jkunz #ifndef ECHO
    659  1.1  jkunz #define ECHO LexerOutput( yytext, yyleng )
    660  1.1  jkunz #endif
    661  1.1  jkunz 
    662  1.1  jkunz /* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
    663  1.1  jkunz  * is returned in "result".
    664  1.1  jkunz  */
    665  1.1  jkunz #ifndef YY_INPUT
    666  1.1  jkunz #define YY_INPUT(buf,result,max_size) \
    667  1.1  jkunz \
    668  1.1  jkunz 	if ( (result = LexerInput( (char *) buf, max_size )) < 0 ) \
    669  1.1  jkunz 		YY_FATAL_ERROR( "input in flex scanner failed" );
    670  1.1  jkunz 
    671  1.1  jkunz #endif
    672  1.1  jkunz 
    673  1.1  jkunz /* No semi-colon after return; correct usage is to write "yyterminate();" -
    674  1.1  jkunz  * we don't want an extra ';' after the "return" because that will cause
    675  1.1  jkunz  * some compilers to complain about unreachable statements.
    676  1.1  jkunz  */
    677  1.1  jkunz #ifndef yyterminate
    678  1.1  jkunz #define yyterminate() return YY_NULL
    679  1.1  jkunz #endif
    680  1.1  jkunz 
    681  1.1  jkunz /* Number of entries by which start-condition stack grows. */
    682  1.1  jkunz #ifndef YY_START_STACK_INCR
    683  1.1  jkunz #define YY_START_STACK_INCR 25
    684  1.1  jkunz #endif
    685  1.1  jkunz 
    686  1.1  jkunz /* Report a fatal error. */
    687  1.1  jkunz #ifndef YY_FATAL_ERROR
    688  1.1  jkunz #define YY_FATAL_ERROR(msg) LexerError( msg )
    689  1.1  jkunz #endif
    690  1.1  jkunz 
    691  1.1  jkunz /* end tables serialization structures and prototypes */
    692  1.1  jkunz 
    693  1.1  jkunz /* Default declaration of generated scanner - a define so the user can
    694  1.1  jkunz  * easily add parameters.
    695  1.1  jkunz  */
    696  1.1  jkunz #ifndef YY_DECL
    697  1.1  jkunz #define YY_DECL_IS_OURS 1
    698  1.1  jkunz #define YY_DECL int yyFlexLexer::yylex()
    699  1.1  jkunz #endif /* !YY_DECL */
    700  1.1  jkunz 
    701  1.1  jkunz /* Code executed at the beginning of each rule, after yytext and yyleng
    702  1.1  jkunz  * have been set up.
    703  1.1  jkunz  */
    704  1.1  jkunz #ifndef YY_USER_ACTION
    705  1.1  jkunz #define YY_USER_ACTION
    706  1.1  jkunz #endif
    707  1.1  jkunz 
    708  1.1  jkunz /* Code executed at the end of each rule. */
    709  1.1  jkunz #ifndef YY_BREAK
    710  1.1  jkunz #define YY_BREAK break;
    711  1.1  jkunz #endif
    712  1.1  jkunz 
    713  1.1  jkunz #define YY_RULE_SETUP \
    714  1.1  jkunz 	YY_USER_ACTION
    715  1.1  jkunz 
    716  1.1  jkunz /** The main scanner function which does all the work.
    717  1.1  jkunz  */
    718  1.1  jkunz YY_DECL
    719  1.1  jkunz {
    720  1.1  jkunz 	register yy_state_type yy_current_state;
    721  1.1  jkunz 	register char *yy_cp, *yy_bp;
    722  1.1  jkunz 	register int yy_act;
    723  1.1  jkunz 
    724  1.1  jkunz 
    725  1.1  jkunz 
    726  1.1  jkunz 
    727  1.1  jkunz 	if ( !(yy_init) )
    728  1.1  jkunz 		{
    729  1.1  jkunz 		(yy_init) = 1;
    730  1.1  jkunz 
    731  1.1  jkunz #ifdef YY_USER_INIT
    732  1.1  jkunz 		YY_USER_INIT;
    733  1.1  jkunz #endif
    734  1.1  jkunz 
    735  1.1  jkunz 		if ( ! (yy_start) )
    736  1.1  jkunz 			(yy_start) = 1;	/* first start state */
    737  1.1  jkunz 
    738  1.1  jkunz 		if ( ! yyin )
    739  1.1  jkunz 			yyin = & std::cin;
    740  1.1  jkunz 
    741  1.1  jkunz 		if ( ! yyout )
    742  1.1  jkunz 			yyout = & std::cout;
    743  1.1  jkunz 
    744  1.1  jkunz 		if ( ! YY_CURRENT_BUFFER ) {
    745  1.1  jkunz 			yyensure_buffer_stack ();
    746  1.1  jkunz 			YY_CURRENT_BUFFER_LVALUE =
    747  1.1  jkunz 				yy_create_buffer( yyin, YY_BUF_SIZE );
    748  1.1  jkunz 		}
    749  1.1  jkunz 
    750  1.1  jkunz 		yy_load_buffer_state(  );
    751  1.1  jkunz 		}
    752  1.1  jkunz 
    753  1.1  jkunz 	while ( 1 )		/* loops until end-of-file is reached */
    754  1.1  jkunz 		{
    755  1.1  jkunz 		yy_cp = (yy_c_buf_p);
    756  1.1  jkunz 
    757  1.1  jkunz 		/* Support of yytext. */
    758  1.1  jkunz 		*yy_cp = (yy_hold_char);
    759  1.1  jkunz 
    760  1.1  jkunz 		/* yy_bp points to the position in yy_ch_buf of the start of
    761  1.1  jkunz 		 * the current run.
    762  1.1  jkunz 		 */
    763  1.1  jkunz 		yy_bp = yy_cp;
    764  1.1  jkunz 
    765  1.1  jkunz 		yy_current_state = (yy_start);
    766  1.1  jkunz yy_match:
    767  1.1  jkunz 		do
    768  1.1  jkunz 			{
    769  1.1  jkunz 			register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
    770  1.1  jkunz 			if ( yy_accept[yy_current_state] )
    771  1.1  jkunz 				{
    772  1.1  jkunz 				(yy_last_accepting_state) = yy_current_state;
    773  1.1  jkunz 				(yy_last_accepting_cpos) = yy_cp;
    774  1.1  jkunz 				}
    775  1.1  jkunz 			while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
    776  1.1  jkunz 				{
    777  1.1  jkunz 				yy_current_state = (int) yy_def[yy_current_state];
    778  1.1  jkunz 				if ( yy_current_state >= 218 )
    779  1.1  jkunz 					yy_c = yy_meta[(unsigned int) yy_c];
    780  1.1  jkunz 				}
    781  1.1  jkunz 			yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
    782  1.1  jkunz 			++yy_cp;
    783  1.1  jkunz 			}
    784  1.1  jkunz 		while ( yy_current_state != 217 );
    785  1.1  jkunz 		yy_cp = (yy_last_accepting_cpos);
    786  1.1  jkunz 		yy_current_state = (yy_last_accepting_state);
    787  1.1  jkunz 
    788  1.1  jkunz yy_find_action:
    789  1.1  jkunz 		yy_act = yy_accept[yy_current_state];
    790  1.1  jkunz 
    791  1.1  jkunz 		YY_DO_BEFORE_ACTION;
    792  1.1  jkunz 
    793  1.1  jkunz 		if ( yy_act != YY_END_OF_BUFFER && yy_rule_can_match_eol[yy_act] )
    794  1.1  jkunz 			{
    795  1.1  jkunz 			int yyl;
    796  1.1  jkunz 			for ( yyl = 0; yyl < yyleng; ++yyl )
    797  1.1  jkunz 				if ( yytext[yyl] == '\n' )
    798  1.1  jkunz 
    799  1.1  jkunz     yylineno++;
    800  1.1  jkunz ;
    801  1.1  jkunz 			}
    802  1.1  jkunz 
    803  1.1  jkunz do_action:	/* This label is used only to access EOF actions. */
    804  1.1  jkunz 
    805  1.1  jkunz 		switch ( yy_act )
    806  1.1  jkunz 	{ /* beginning of action switch */
    807  1.1  jkunz 			case 0: /* must back up */
    808  1.1  jkunz 			/* undo the effects of YY_DO_BEFORE_ACTION */
    809  1.1  jkunz 			*yy_cp = (yy_hold_char);
    810  1.1  jkunz 			yy_cp = (yy_last_accepting_cpos);
    811  1.1  jkunz 			yy_current_state = (yy_last_accepting_state);
    812  1.1  jkunz 			goto yy_find_action;
    813  1.1  jkunz 
    814  1.1  jkunz case 1:
    815  1.1  jkunz YY_RULE_SETUP
    816  1.1  jkunz { return TOK_OPTIONS; }
    817  1.1  jkunz 	YY_BREAK
    818  1.1  jkunz case 2:
    819  1.1  jkunz YY_RULE_SETUP
    820  1.1  jkunz { return TOK_CONSTANTS; }
    821  1.1  jkunz 	YY_BREAK
    822  1.1  jkunz case 3:
    823  1.1  jkunz YY_RULE_SETUP
    824  1.1  jkunz { return TOK_SOURCES; }
    825  1.1  jkunz 	YY_BREAK
    826  1.1  jkunz case 4:
    827  1.1  jkunz YY_RULE_SETUP
    828  1.1  jkunz { return TOK_FILTERS; }
    829  1.1  jkunz 	YY_BREAK
    830  1.1  jkunz case 5:
    831  1.1  jkunz YY_RULE_SETUP
    832  1.1  jkunz { return TOK_SECTION; }
    833  1.1  jkunz 	YY_BREAK
    834  1.1  jkunz case 6:
    835  1.1  jkunz YY_RULE_SETUP
    836  1.1  jkunz { return TOK_EXTERN; }
    837  1.1  jkunz 	YY_BREAK
    838  1.1  jkunz case 7:
    839  1.1  jkunz YY_RULE_SETUP
    840  1.1  jkunz { return TOK_FROM; }
    841  1.1  jkunz 	YY_BREAK
    842  1.1  jkunz case 8:
    843  1.1  jkunz YY_RULE_SETUP
    844  1.1  jkunz { return TOK_RAW; }
    845  1.1  jkunz 	YY_BREAK
    846  1.1  jkunz case 9:
    847  1.1  jkunz YY_RULE_SETUP
    848  1.1  jkunz { return TOK_LOAD; }
    849  1.1  jkunz 	YY_BREAK
    850  1.1  jkunz case 10:
    851  1.1  jkunz YY_RULE_SETUP
    852  1.1  jkunz { return TOK_JUMP; }
    853  1.1  jkunz 	YY_BREAK
    854  1.1  jkunz case 11:
    855  1.1  jkunz YY_RULE_SETUP
    856  1.1  jkunz { return TOK_CALL; }
    857  1.1  jkunz 	YY_BREAK
    858  1.1  jkunz case 12:
    859  1.1  jkunz YY_RULE_SETUP
    860  1.1  jkunz { return TOK_MODE; }
    861  1.1  jkunz 	YY_BREAK
    862  1.1  jkunz case 13:
    863  1.1  jkunz YY_RULE_SETUP
    864  1.1  jkunz { return TOK_IF; }
    865  1.1  jkunz 	YY_BREAK
    866  1.1  jkunz case 14:
    867  1.1  jkunz YY_RULE_SETUP
    868  1.1  jkunz { return TOK_ELSE; }
    869  1.1  jkunz 	YY_BREAK
    870  1.1  jkunz case 15:
    871  1.1  jkunz YY_RULE_SETUP
    872  1.1  jkunz { return TOK_DEFINED; }
    873  1.1  jkunz 	YY_BREAK
    874  1.1  jkunz case 16:
    875  1.1  jkunz YY_RULE_SETUP
    876  1.1  jkunz { return TOK_INFO; }
    877  1.1  jkunz 	YY_BREAK
    878  1.1  jkunz case 17:
    879  1.1  jkunz YY_RULE_SETUP
    880  1.1  jkunz { return TOK_WARNING; }
    881  1.1  jkunz 	YY_BREAK
    882  1.1  jkunz case 18:
    883  1.1  jkunz YY_RULE_SETUP
    884  1.1  jkunz { return TOK_ERROR; }
    885  1.1  jkunz 	YY_BREAK
    886  1.1  jkunz case 19:
    887  1.1  jkunz YY_RULE_SETUP
    888  1.1  jkunz { return TOK_SIZEOF; }
    889  1.1  jkunz 	YY_BREAK
    890  1.1  jkunz case 20:
    891  1.1  jkunz YY_RULE_SETUP
    892  1.1  jkunz { return TOK_DCD; }
    893  1.1  jkunz 	YY_BREAK
    894  1.1  jkunz case 21:
    895  1.1  jkunz YY_RULE_SETUP
    896  1.1  jkunz { return TOK_HAB; }
    897  1.1  jkunz 	YY_BREAK
    898  1.1  jkunz case 22:
    899  1.1  jkunz YY_RULE_SETUP
    900  1.1  jkunz { return TOK_IVT; }
    901  1.1  jkunz 	YY_BREAK
    902  1.1  jkunz case 23:
    903  1.1  jkunz /* rule 23 can match eol */
    904  1.1  jkunz *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
    905  1.1  jkunz (yy_c_buf_p) = yy_cp = yy_bp + 1;
    906  1.1  jkunz YY_DO_BEFORE_ACTION; /* set up yytext again */
    907  1.1  jkunz YY_RULE_SETUP
    908  1.1  jkunz {	// must be followed by any non-ident char
    909  1.1  jkunz 										int_size_t theSize;
    910  1.1  jkunz 										switch (yytext[0])
    911  1.1  jkunz 										{
    912  1.1  jkunz 											case 'w':
    913  1.1  jkunz 												theSize = kWordSize;
    914  1.1  jkunz 												break;
    915  1.1  jkunz 											case 'h':
    916  1.1  jkunz 												theSize = kHalfWordSize;
    917  1.1  jkunz 												break;
    918  1.1  jkunz 											case 'b':
    919  1.1  jkunz 												theSize = kByteSize;
    920  1.1  jkunz 												break;
    921  1.1  jkunz 										}
    922  1.1  jkunz 										m_symbolValue.m_int = new elftosb::SizedIntegerValue(0, theSize);
    923  1.1  jkunz 										return TOK_INT_SIZE;
    924  1.1  jkunz 									}
    925  1.1  jkunz 	YY_BREAK
    926  1.1  jkunz case 24:
    927  1.1  jkunz YY_RULE_SETUP
    928  1.1  jkunz {
    929  1.1  jkunz 										m_symbolValue.m_int = new elftosb::SizedIntegerValue(1, kWordSize);
    930  1.1  jkunz 										return TOK_INT_LITERAL;
    931  1.1  jkunz 									}
    932  1.1  jkunz 	YY_BREAK
    933  1.1  jkunz case 25:
    934  1.1  jkunz YY_RULE_SETUP
    935  1.1  jkunz {
    936  1.1  jkunz 										m_symbolValue.m_int = new elftosb::SizedIntegerValue(0, kWordSize);
    937  1.1  jkunz 										return TOK_INT_LITERAL;
    938  1.1  jkunz 									}
    939  1.1  jkunz 	YY_BREAK
    940  1.1  jkunz case 26:
    941  1.1  jkunz YY_RULE_SETUP
    942  1.1  jkunz {
    943  1.1  jkunz 										m_symbolValue.m_str = new std::string(yytext);
    944  1.1  jkunz 										if (isSourceName(m_symbolValue.m_str))
    945  1.1  jkunz 										{
    946  1.1  jkunz 											return TOK_SOURCE_NAME;
    947  1.1  jkunz 										}
    948  1.1  jkunz 										else
    949  1.1  jkunz 										{
    950  1.1  jkunz 											return TOK_IDENT;
    951  1.1  jkunz 										}
    952  1.1  jkunz 									}
    953  1.1  jkunz 	YY_BREAK
    954  1.1  jkunz case 27:
    955  1.1  jkunz YY_RULE_SETUP
    956  1.1  jkunz {
    957  1.1  jkunz 										int base = 0;
    958  1.1  jkunz 										uint32_t value;
    959  1.1  jkunz 										int mult;
    960  1.1  jkunz 
    961  1.1  jkunz 										// check for binary number
    962  1.1  jkunz 										if (yytext[0] == '0' && yytext[1] == 'b')
    963  1.1  jkunz 										{
    964  1.1  jkunz 											base = 2;		// this is a binary number
    965  1.1  jkunz 											yytext += 2;	// skip over the "0b"
    966  1.1  jkunz 										}
    967  1.1  jkunz 
    968  1.1  jkunz 										// convert value
    969  1.1  jkunz 										value = (uint32_t)strtoul(yytext, NULL, base);
    970  1.1  jkunz 
    971  1.1  jkunz 										// find multiplier
    972  1.1  jkunz 										switch (yytext[strlen(yytext) - 1])
    973  1.1  jkunz 										{
    974  1.1  jkunz 											case 'G':
    975  1.1  jkunz 												mult = 1024 * 1024 * 1024;
    976  1.1  jkunz 												break;
    977  1.1  jkunz 											case 'M':
    978  1.1  jkunz 												mult = 1024 * 1024;
    979  1.1  jkunz 												break;
    980  1.1  jkunz 											case 'K':
    981  1.1  jkunz 												mult = 1024;
    982  1.1  jkunz 												break;
    983  1.1  jkunz 											default:
    984  1.1  jkunz 												mult = 1;
    985  1.1  jkunz 												break;
    986  1.1  jkunz 										}
    987  1.1  jkunz 
    988  1.1  jkunz 										// set resulting symbol value
    989  1.1  jkunz 										m_symbolValue.m_int = new elftosb::SizedIntegerValue(value * mult, kWordSize);
    990  1.1  jkunz 										return TOK_INT_LITERAL;
    991  1.1  jkunz 									}
    992  1.1  jkunz 	YY_BREAK
    993  1.1  jkunz case 28:
    994  1.1  jkunz YY_RULE_SETUP
    995  1.1  jkunz {
    996  1.1  jkunz 										uint32_t value = 0;
    997  1.1  jkunz 										int_size_t theSize;
    998  1.1  jkunz 										int len = strlen(yytext);
    999  1.1  jkunz 										if (len >= 3)
   1000  1.1  jkunz 										{
   1001  1.1  jkunz 											value = yytext[1];
   1002  1.1  jkunz 											theSize = kByteSize;
   1003  1.1  jkunz 										}
   1004  1.1  jkunz 										if (len >= 4)
   1005  1.1  jkunz 										{
   1006  1.1  jkunz 											value = (value << 8) | yytext[2];
   1007  1.1  jkunz 											theSize = kHalfWordSize;
   1008  1.1  jkunz 										}
   1009  1.1  jkunz 										if (len >= 6)
   1010  1.1  jkunz 										{
   1011  1.1  jkunz 											value = (value << 8) | yytext[3];
   1012  1.1  jkunz 											value = (value << 8) | yytext[4];
   1013  1.1  jkunz 											theSize = kWordSize;
   1014  1.1  jkunz 										}
   1015  1.1  jkunz 										m_symbolValue.m_int = new elftosb::SizedIntegerValue(value, theSize);
   1016  1.1  jkunz 										return TOK_INT_LITERAL;
   1017  1.1  jkunz 									}
   1018  1.1  jkunz 	YY_BREAK
   1019  1.1  jkunz case 29:
   1020  1.1  jkunz YY_RULE_SETUP
   1021  1.1  jkunz {
   1022  1.1  jkunz 										// remove $ from string
   1023  1.1  jkunz 										m_symbolValue.m_str = new std::string(&yytext[1]);
   1024  1.1  jkunz 										return TOK_SECTION_NAME;
   1025  1.1  jkunz 									}
   1026  1.1  jkunz 	YY_BREAK
   1027  1.1  jkunz case 30:
   1028  1.1  jkunz YY_RULE_SETUP
   1029  1.1  jkunz { BEGIN(mlcmt); }
   1030  1.1  jkunz 	YY_BREAK
   1031  1.1  jkunz case 31:
   1032  1.1  jkunz YY_RULE_SETUP
   1033  1.1  jkunz {
   1034  1.1  jkunz 										m_blob = new Blob();
   1035  1.1  jkunz 										m_blobFirstLine = yylineno;
   1036  1.1  jkunz 										BEGIN(blob);
   1037  1.1  jkunz 									}
   1038  1.1  jkunz 	YY_BREAK
   1039  1.1  jkunz case 32:
   1040  1.1  jkunz YY_RULE_SETUP
   1041  1.1  jkunz { return '{'; }
   1042  1.1  jkunz 	YY_BREAK
   1043  1.1  jkunz case 33:
   1044  1.1  jkunz YY_RULE_SETUP
   1045  1.1  jkunz { return '}'; }
   1046  1.1  jkunz 	YY_BREAK
   1047  1.1  jkunz case 34:
   1048  1.1  jkunz YY_RULE_SETUP
   1049  1.1  jkunz { return '('; }
   1050  1.1  jkunz 	YY_BREAK
   1051  1.1  jkunz case 35:
   1052  1.1  jkunz YY_RULE_SETUP
   1053  1.1  jkunz { return ')'; }
   1054  1.1  jkunz 	YY_BREAK
   1055  1.1  jkunz case 36:
   1056  1.1  jkunz YY_RULE_SETUP
   1057  1.1  jkunz { return '['; }
   1058  1.1  jkunz 	YY_BREAK
   1059  1.1  jkunz case 37:
   1060  1.1  jkunz YY_RULE_SETUP
   1061  1.1  jkunz { return ']'; }
   1062  1.1  jkunz 	YY_BREAK
   1063  1.1  jkunz case 38:
   1064  1.1  jkunz YY_RULE_SETUP
   1065  1.1  jkunz { return '='; }
   1066  1.1  jkunz 	YY_BREAK
   1067  1.1  jkunz case 39:
   1068  1.1  jkunz YY_RULE_SETUP
   1069  1.1  jkunz { return ','; }
   1070  1.1  jkunz 	YY_BREAK
   1071  1.1  jkunz case 40:
   1072  1.1  jkunz YY_RULE_SETUP
   1073  1.1  jkunz { return ':'; }
   1074  1.1  jkunz 	YY_BREAK
   1075  1.1  jkunz case 41:
   1076  1.1  jkunz YY_RULE_SETUP
   1077  1.1  jkunz { return ';'; }
   1078  1.1  jkunz 	YY_BREAK
   1079  1.1  jkunz case 42:
   1080  1.1  jkunz YY_RULE_SETUP
   1081  1.1  jkunz { return '.'; }
   1082  1.1  jkunz 	YY_BREAK
   1083  1.1  jkunz case 43:
   1084  1.1  jkunz YY_RULE_SETUP
   1085  1.1  jkunz { return '>'; }
   1086  1.1  jkunz 	YY_BREAK
   1087  1.1  jkunz case 44:
   1088  1.1  jkunz YY_RULE_SETUP
   1089  1.1  jkunz { return TOK_DOT_DOT; }
   1090  1.1  jkunz 	YY_BREAK
   1091  1.1  jkunz case 45:
   1092  1.1  jkunz YY_RULE_SETUP
   1093  1.1  jkunz { return '+'; }
   1094  1.1  jkunz 	YY_BREAK
   1095  1.1  jkunz case 46:
   1096  1.1  jkunz YY_RULE_SETUP
   1097  1.1  jkunz { return '-'; }
   1098  1.1  jkunz 	YY_BREAK
   1099  1.1  jkunz case 47:
   1100  1.1  jkunz YY_RULE_SETUP
   1101  1.1  jkunz { return '*'; }
   1102  1.1  jkunz 	YY_BREAK
   1103  1.1  jkunz case 48:
   1104  1.1  jkunz YY_RULE_SETUP
   1105  1.1  jkunz { return '/'; }
   1106  1.1  jkunz 	YY_BREAK
   1107  1.1  jkunz case 49:
   1108  1.1  jkunz YY_RULE_SETUP
   1109  1.1  jkunz { return '%'; }
   1110  1.1  jkunz 	YY_BREAK
   1111  1.1  jkunz case 50:
   1112  1.1  jkunz YY_RULE_SETUP
   1113  1.1  jkunz { return '~'; }
   1114  1.1  jkunz 	YY_BREAK
   1115  1.1  jkunz case 51:
   1116  1.1  jkunz YY_RULE_SETUP
   1117  1.1  jkunz { return '^'; }
   1118  1.1  jkunz 	YY_BREAK
   1119  1.1  jkunz case 52:
   1120  1.1  jkunz YY_RULE_SETUP
   1121  1.1  jkunz { return TOK_LSHIFT; }
   1122  1.1  jkunz 	YY_BREAK
   1123  1.1  jkunz case 53:
   1124  1.1  jkunz YY_RULE_SETUP
   1125  1.1  jkunz { return TOK_RSHIFT; }
   1126  1.1  jkunz 	YY_BREAK
   1127  1.1  jkunz case 54:
   1128  1.1  jkunz YY_RULE_SETUP
   1129  1.1  jkunz { return '&'; }
   1130  1.1  jkunz 	YY_BREAK
   1131  1.1  jkunz case 55:
   1132  1.1  jkunz YY_RULE_SETUP
   1133  1.1  jkunz { return '|'; }
   1134  1.1  jkunz 	YY_BREAK
   1135  1.1  jkunz case 56:
   1136  1.1  jkunz YY_RULE_SETUP
   1137  1.1  jkunz { return TOK_POWER; }
   1138  1.1  jkunz 	YY_BREAK
   1139  1.1  jkunz case 57:
   1140  1.1  jkunz YY_RULE_SETUP
   1141  1.1  jkunz { return '<'; }
   1142  1.1  jkunz 	YY_BREAK
   1143  1.1  jkunz case 58:
   1144  1.1  jkunz YY_RULE_SETUP
   1145  1.1  jkunz { return TOK_GEQ; }
   1146  1.1  jkunz 	YY_BREAK
   1147  1.1  jkunz case 59:
   1148  1.1  jkunz YY_RULE_SETUP
   1149  1.1  jkunz { return TOK_LEQ; }
   1150  1.1  jkunz 	YY_BREAK
   1151  1.1  jkunz case 60:
   1152  1.1  jkunz YY_RULE_SETUP
   1153  1.1  jkunz { return TOK_EQ; }
   1154  1.1  jkunz 	YY_BREAK
   1155  1.1  jkunz case 61:
   1156  1.1  jkunz YY_RULE_SETUP
   1157  1.1  jkunz { return TOK_NEQ; }
   1158  1.1  jkunz 	YY_BREAK
   1159  1.1  jkunz case 62:
   1160  1.1  jkunz YY_RULE_SETUP
   1161  1.1  jkunz { return TOK_AND; }
   1162  1.1  jkunz 	YY_BREAK
   1163  1.1  jkunz case 63:
   1164  1.1  jkunz YY_RULE_SETUP
   1165  1.1  jkunz { return TOK_OR; }
   1166  1.1  jkunz 	YY_BREAK
   1167  1.1  jkunz case 64:
   1168  1.1  jkunz YY_RULE_SETUP
   1169  1.1  jkunz { return '!'; }
   1170  1.1  jkunz 	YY_BREAK
   1171  1.1  jkunz case 65:
   1172  1.1  jkunz /* rule 65 can match eol */
   1173  1.1  jkunz YY_RULE_SETUP
   1174  1.1  jkunz {
   1175  1.1  jkunz 										// get rid of quotes
   1176  1.1  jkunz 										yytext++;
   1177  1.1  jkunz 										yytext[strlen(yytext) - 1] = 0;
   1178  1.1  jkunz //										processStringEscapes(yytext, yytext);
   1179  1.1  jkunz 										m_symbolValue.m_str = new std::string(yytext);
   1180  1.1  jkunz 										return TOK_STRING_LITERAL;
   1181  1.1  jkunz 									}
   1182  1.1  jkunz 	YY_BREAK
   1183  1.1  jkunz case 66:
   1184  1.1  jkunz YY_RULE_SETUP
   1185  1.1  jkunz {
   1186  1.1  jkunz 										uint8_t x = (hexCharToInt(yytext[0]) << 4) | hexCharToInt(yytext[1]);
   1187  1.1  jkunz 										m_blob->append(&x, 1);
   1188  1.1  jkunz 									}
   1189  1.1  jkunz 	YY_BREAK
   1190  1.1  jkunz case 67:
   1191  1.1  jkunz YY_RULE_SETUP
   1192  1.1  jkunz {
   1193  1.1  jkunz 										BEGIN(INITIAL);
   1194  1.1  jkunz 										m_symbolValue.m_blob = m_blob;
   1195  1.1  jkunz 										m_blob = NULL;
   1196  1.1  jkunz 										m_location.m_firstLine = m_blobFirstLine;
   1197  1.1  jkunz 										return TOK_BLOB;
   1198  1.1  jkunz 									}
   1199  1.1  jkunz 	YY_BREAK
   1200  1.1  jkunz case 68:
   1201  1.1  jkunz YY_RULE_SETUP
   1202  1.1  jkunz {
   1203  1.1  jkunz                                         // end of multi-line comment, return to initial state
   1204  1.1  jkunz                                         BEGIN(INITIAL);
   1205  1.1  jkunz                                     }
   1206  1.1  jkunz 	YY_BREAK
   1207  1.1  jkunz case 69:
   1208  1.1  jkunz *yy_cp = (yy_hold_char); /* undo effects of setting up yytext */
   1209  1.1  jkunz (yy_c_buf_p) = yy_cp -= 1;
   1210  1.1  jkunz YY_DO_BEFORE_ACTION; /* set up yytext again */
   1211  1.1  jkunz YY_RULE_SETUP
   1212  1.1  jkunz /* absorb single-line comment */
   1213  1.1  jkunz 	YY_BREAK
   1214  1.1  jkunz case 70:
   1215  1.1  jkunz YY_RULE_SETUP
   1216  1.1  jkunz /* eat up whitespace in all states */
   1217  1.1  jkunz 	YY_BREAK
   1218  1.1  jkunz case 71:
   1219  1.1  jkunz /* rule 71 can match eol */
   1220  1.1  jkunz YY_RULE_SETUP
   1221  1.1  jkunz {
   1222  1.1  jkunz 										/* eat up whitespace and count lines in all states */
   1223  1.1  jkunz 										m_line++;
   1224  1.1  jkunz 									}
   1225  1.1  jkunz 	YY_BREAK
   1226  1.1  jkunz case 72:
   1227  1.1  jkunz YY_RULE_SETUP
   1228  1.1  jkunz /* ignore all other chars in a multi-line comment */
   1229  1.1  jkunz 	YY_BREAK
   1230  1.1  jkunz case 73:
   1231  1.1  jkunz YY_RULE_SETUP
   1232  1.1  jkunz {
   1233  1.1  jkunz 										/* all other chars produce errors */
   1234  1.1  jkunz 										char msg[50];
   1235  1.1  jkunz 										sprintf(msg, "unexpected character '%c' on line %d", yytext[0], m_line);
   1236  1.1  jkunz 										LexerError(msg);
   1237  1.1  jkunz 									}
   1238  1.1  jkunz 	YY_BREAK
   1239  1.1  jkunz case 74:
   1240  1.1  jkunz YY_RULE_SETUP
   1241  1.1  jkunz ECHO;
   1242  1.1  jkunz 	YY_BREAK
   1243  1.1  jkunz case YY_STATE_EOF(INITIAL):
   1244  1.1  jkunz case YY_STATE_EOF(blob):
   1245  1.1  jkunz case YY_STATE_EOF(mlcmt):
   1246  1.1  jkunz 	yyterminate();
   1247  1.1  jkunz 
   1248  1.1  jkunz 	case YY_END_OF_BUFFER:
   1249  1.1  jkunz 		{
   1250  1.1  jkunz 		/* Amount of text matched not including the EOB char. */
   1251  1.1  jkunz 		int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
   1252  1.1  jkunz 
   1253  1.1  jkunz 		/* Undo the effects of YY_DO_BEFORE_ACTION. */
   1254  1.1  jkunz 		*yy_cp = (yy_hold_char);
   1255  1.1  jkunz 		YY_RESTORE_YY_MORE_OFFSET
   1256  1.1  jkunz 
   1257  1.1  jkunz 		if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
   1258  1.1  jkunz 			{
   1259  1.1  jkunz 			/* We're scanning a new file or input source.  It's
   1260  1.1  jkunz 			 * possible that this happened because the user
   1261  1.1  jkunz 			 * just pointed yyin at a new source and called
   1262  1.1  jkunz 			 * yylex().  If so, then we have to assure
   1263  1.1  jkunz 			 * consistency between YY_CURRENT_BUFFER and our
   1264  1.1  jkunz 			 * globals.  Here is the right place to do so, because
   1265  1.1  jkunz 			 * this is the first action (other than possibly a
   1266  1.1  jkunz 			 * back-up) that will match for the new input source.
   1267  1.1  jkunz 			 */
   1268  1.1  jkunz 			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
   1269  1.1  jkunz 			YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
   1270  1.1  jkunz 			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
   1271  1.1  jkunz 			}
   1272  1.1  jkunz 
   1273  1.1  jkunz 		/* Note that here we test for yy_c_buf_p "<=" to the position
   1274  1.1  jkunz 		 * of the first EOB in the buffer, since yy_c_buf_p will
   1275  1.1  jkunz 		 * already have been incremented past the NUL character
   1276  1.1  jkunz 		 * (since all states make transitions on EOB to the
   1277  1.1  jkunz 		 * end-of-buffer state).  Contrast this with the test
   1278  1.1  jkunz 		 * in input().
   1279  1.1  jkunz 		 */
   1280  1.1  jkunz 		if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
   1281  1.1  jkunz 			{ /* This was really a NUL. */
   1282  1.1  jkunz 			yy_state_type yy_next_state;
   1283  1.1  jkunz 
   1284  1.1  jkunz 			(yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
   1285  1.1  jkunz 
   1286  1.1  jkunz 			yy_current_state = yy_get_previous_state(  );
   1287  1.1  jkunz 
   1288  1.1  jkunz 			/* Okay, we're now positioned to make the NUL
   1289  1.1  jkunz 			 * transition.  We couldn't have
   1290  1.1  jkunz 			 * yy_get_previous_state() go ahead and do it
   1291  1.1  jkunz 			 * for us because it doesn't know how to deal
   1292  1.1  jkunz 			 * with the possibility of jamming (and we don't
   1293  1.1  jkunz 			 * want to build jamming into it because then it
   1294  1.1  jkunz 			 * will run more slowly).
   1295  1.1  jkunz 			 */
   1296  1.1  jkunz 
   1297  1.1  jkunz 			yy_next_state = yy_try_NUL_trans( yy_current_state );
   1298  1.1  jkunz 
   1299  1.1  jkunz 			yy_bp = (yytext_ptr) + YY_MORE_ADJ;
   1300  1.1  jkunz 
   1301  1.1  jkunz 			if ( yy_next_state )
   1302  1.1  jkunz 				{
   1303  1.1  jkunz 				/* Consume the NUL. */
   1304  1.1  jkunz 				yy_cp = ++(yy_c_buf_p);
   1305  1.1  jkunz 				yy_current_state = yy_next_state;
   1306  1.1  jkunz 				goto yy_match;
   1307  1.1  jkunz 				}
   1308  1.1  jkunz 
   1309  1.1  jkunz 			else
   1310  1.1  jkunz 				{
   1311  1.1  jkunz 				yy_cp = (yy_last_accepting_cpos);
   1312  1.1  jkunz 				yy_current_state = (yy_last_accepting_state);
   1313  1.1  jkunz 				goto yy_find_action;
   1314  1.1  jkunz 				}
   1315  1.1  jkunz 			}
   1316  1.1  jkunz 
   1317  1.1  jkunz 		else switch ( yy_get_next_buffer(  ) )
   1318  1.1  jkunz 			{
   1319  1.1  jkunz 			case EOB_ACT_END_OF_FILE:
   1320  1.1  jkunz 				{
   1321  1.1  jkunz 				(yy_did_buffer_switch_on_eof) = 0;
   1322  1.1  jkunz 
   1323  1.1  jkunz 				if ( yywrap(  ) )
   1324  1.1  jkunz 					{
   1325  1.1  jkunz 					/* Note: because we've taken care in
   1326  1.1  jkunz 					 * yy_get_next_buffer() to have set up
   1327  1.1  jkunz 					 * yytext, we can now set up
   1328  1.1  jkunz 					 * yy_c_buf_p so that if some total
   1329  1.1  jkunz 					 * hoser (like flex itself) wants to
   1330  1.1  jkunz 					 * call the scanner after we return the
   1331  1.1  jkunz 					 * YY_NULL, it'll still work - another
   1332  1.1  jkunz 					 * YY_NULL will get returned.
   1333  1.1  jkunz 					 */
   1334  1.1  jkunz 					(yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
   1335  1.1  jkunz 
   1336  1.1  jkunz 					yy_act = YY_STATE_EOF(YY_START);
   1337  1.1  jkunz 					goto do_action;
   1338  1.1  jkunz 					}
   1339  1.1  jkunz 
   1340  1.1  jkunz 				else
   1341  1.1  jkunz 					{
   1342  1.1  jkunz 					if ( ! (yy_did_buffer_switch_on_eof) )
   1343  1.1  jkunz 						YY_NEW_FILE;
   1344  1.1  jkunz 					}
   1345  1.1  jkunz 				break;
   1346  1.1  jkunz 				}
   1347  1.1  jkunz 
   1348  1.1  jkunz 			case EOB_ACT_CONTINUE_SCAN:
   1349  1.1  jkunz 				(yy_c_buf_p) =
   1350  1.1  jkunz 					(yytext_ptr) + yy_amount_of_matched_text;
   1351  1.1  jkunz 
   1352  1.1  jkunz 				yy_current_state = yy_get_previous_state(  );
   1353  1.1  jkunz 
   1354  1.1  jkunz 				yy_cp = (yy_c_buf_p);
   1355  1.1  jkunz 				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
   1356  1.1  jkunz 				goto yy_match;
   1357  1.1  jkunz 
   1358  1.1  jkunz 			case EOB_ACT_LAST_MATCH:
   1359  1.1  jkunz 				(yy_c_buf_p) =
   1360  1.1  jkunz 				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
   1361  1.1  jkunz 
   1362  1.1  jkunz 				yy_current_state = yy_get_previous_state(  );
   1363  1.1  jkunz 
   1364  1.1  jkunz 				yy_cp = (yy_c_buf_p);
   1365  1.1  jkunz 				yy_bp = (yytext_ptr) + YY_MORE_ADJ;
   1366  1.1  jkunz 				goto yy_find_action;
   1367  1.1  jkunz 			}
   1368  1.1  jkunz 		break;
   1369  1.1  jkunz 		}
   1370  1.1  jkunz 
   1371  1.1  jkunz 	default:
   1372  1.1  jkunz 		YY_FATAL_ERROR(
   1373  1.1  jkunz 			"fatal flex scanner internal error--no action found" );
   1374  1.1  jkunz 	} /* end of action switch */
   1375  1.1  jkunz 		} /* end of scanning one token */
   1376  1.1  jkunz } /* end of yylex */
   1377  1.1  jkunz 
   1378  1.1  jkunz /* The contents of this function are C++ specific, so the () macro is not used.
   1379  1.1  jkunz  */
   1380  1.1  jkunz yyFlexLexer::yyFlexLexer( std::istream* arg_yyin, std::ostream* arg_yyout )
   1381  1.1  jkunz {
   1382  1.1  jkunz 	yyin = arg_yyin;
   1383  1.1  jkunz 	yyout = arg_yyout;
   1384  1.1  jkunz 	yy_c_buf_p = 0;
   1385  1.1  jkunz 	yy_init = 0;
   1386  1.1  jkunz 	yy_start = 0;
   1387  1.1  jkunz 	yy_flex_debug = 0;
   1388  1.1  jkunz 	yylineno = 1;	// this will only get updated if %option yylineno
   1389  1.1  jkunz 
   1390  1.1  jkunz 	yy_did_buffer_switch_on_eof = 0;
   1391  1.1  jkunz 
   1392  1.1  jkunz 	yy_looking_for_trail_begin = 0;
   1393  1.1  jkunz 	yy_more_flag = 0;
   1394  1.1  jkunz 	yy_more_len = 0;
   1395  1.1  jkunz 	yy_more_offset = yy_prev_more_offset = 0;
   1396  1.1  jkunz 
   1397  1.1  jkunz 	yy_start_stack_ptr = yy_start_stack_depth = 0;
   1398  1.1  jkunz 	yy_start_stack = NULL;
   1399  1.1  jkunz 
   1400  1.1  jkunz 	yy_buffer_stack = 0;
   1401  1.1  jkunz 	yy_buffer_stack_top = 0;
   1402  1.1  jkunz 	yy_buffer_stack_max = 0;
   1403  1.1  jkunz 
   1404  1.1  jkunz 	yy_state_buf = 0;
   1405  1.1  jkunz 
   1406  1.1  jkunz }
   1407  1.1  jkunz 
   1408  1.1  jkunz /* The contents of this function are C++ specific, so the () macro is not used.
   1409  1.1  jkunz  */
   1410  1.1  jkunz yyFlexLexer::~yyFlexLexer()
   1411  1.1  jkunz {
   1412  1.1  jkunz 	delete [] yy_state_buf;
   1413  1.1  jkunz 	yyfree(yy_start_stack  );
   1414  1.1  jkunz 	yy_delete_buffer( YY_CURRENT_BUFFER );
   1415  1.1  jkunz 	yyfree(yy_buffer_stack  );
   1416  1.1  jkunz }
   1417  1.1  jkunz 
   1418  1.1  jkunz /* The contents of this function are C++ specific, so the () macro is not used.
   1419  1.1  jkunz  */
   1420  1.1  jkunz void yyFlexLexer::switch_streams( std::istream* new_in, std::ostream* new_out )
   1421  1.1  jkunz {
   1422  1.1  jkunz 	if ( new_in )
   1423  1.1  jkunz 		{
   1424  1.1  jkunz 		yy_delete_buffer( YY_CURRENT_BUFFER );
   1425  1.1  jkunz 		yy_switch_to_buffer( yy_create_buffer( new_in, YY_BUF_SIZE  ) );
   1426  1.1  jkunz 		}
   1427  1.1  jkunz 
   1428  1.1  jkunz 	if ( new_out )
   1429  1.1  jkunz 		yyout = new_out;
   1430  1.1  jkunz }
   1431  1.1  jkunz 
   1432  1.1  jkunz #ifdef YY_INTERACTIVE
   1433  1.1  jkunz int yyFlexLexer::LexerInput( char* buf, int /* max_size */ )
   1434  1.1  jkunz #else
   1435  1.1  jkunz int yyFlexLexer::LexerInput( char* buf, int max_size )
   1436  1.1  jkunz #endif
   1437  1.1  jkunz {
   1438  1.1  jkunz 	if ( yyin->eof() || yyin->fail() )
   1439  1.1  jkunz 		return 0;
   1440  1.1  jkunz 
   1441  1.1  jkunz #ifdef YY_INTERACTIVE
   1442  1.1  jkunz 	yyin->get( buf[0] );
   1443  1.1  jkunz 
   1444  1.1  jkunz 	if ( yyin->eof() )
   1445  1.1  jkunz 		return 0;
   1446  1.1  jkunz 
   1447  1.1  jkunz 	if ( yyin->bad() )
   1448  1.1  jkunz 		return -1;
   1449  1.1  jkunz 
   1450  1.1  jkunz 	return 1;
   1451  1.1  jkunz 
   1452  1.1  jkunz #else
   1453  1.1  jkunz 	(void) yyin->read( buf, max_size );
   1454  1.1  jkunz 
   1455  1.1  jkunz 	if ( yyin->bad() )
   1456  1.1  jkunz 		return -1;
   1457  1.1  jkunz 	else
   1458  1.1  jkunz 		return yyin->gcount();
   1459  1.1  jkunz #endif
   1460  1.1  jkunz }
   1461  1.1  jkunz 
   1462  1.1  jkunz void yyFlexLexer::LexerOutput( const char* buf, int size )
   1463  1.1  jkunz {
   1464  1.1  jkunz 	(void) yyout->write( buf, size );
   1465  1.1  jkunz }
   1466  1.1  jkunz 
   1467  1.1  jkunz /* yy_get_next_buffer - try to read in a new buffer
   1468  1.1  jkunz  *
   1469  1.1  jkunz  * Returns a code representing an action:
   1470  1.1  jkunz  *	EOB_ACT_LAST_MATCH -
   1471  1.1  jkunz  *	EOB_ACT_CONTINUE_SCAN - continue scanning from current position
   1472  1.1  jkunz  *	EOB_ACT_END_OF_FILE - end of file
   1473  1.1  jkunz  */
   1474  1.1  jkunz int yyFlexLexer::yy_get_next_buffer()
   1475  1.1  jkunz {
   1476  1.1  jkunz     	register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
   1477  1.1  jkunz 	register char *source = (yytext_ptr);
   1478  1.1  jkunz 	register int number_to_move, i;
   1479  1.1  jkunz 	int ret_val;
   1480  1.1  jkunz 
   1481  1.1  jkunz 	if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
   1482  1.1  jkunz 		YY_FATAL_ERROR(
   1483  1.1  jkunz 		"fatal flex scanner internal error--end of buffer missed" );
   1484  1.1  jkunz 
   1485  1.1  jkunz 	if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
   1486  1.1  jkunz 		{ /* Don't try to fill the buffer, so this is an EOF. */
   1487  1.1  jkunz 		if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
   1488  1.1  jkunz 			{
   1489  1.1  jkunz 			/* We matched a single character, the EOB, so
   1490  1.1  jkunz 			 * treat this as a final EOF.
   1491  1.1  jkunz 			 */
   1492  1.1  jkunz 			return EOB_ACT_END_OF_FILE;
   1493  1.1  jkunz 			}
   1494  1.1  jkunz 
   1495  1.1  jkunz 		else
   1496  1.1  jkunz 			{
   1497  1.1  jkunz 			/* We matched some text prior to the EOB, first
   1498  1.1  jkunz 			 * process it.
   1499  1.1  jkunz 			 */
   1500  1.1  jkunz 			return EOB_ACT_LAST_MATCH;
   1501  1.1  jkunz 			}
   1502  1.1  jkunz 		}
   1503  1.1  jkunz 
   1504  1.1  jkunz 	/* Try to read more data. */
   1505  1.1  jkunz 
   1506  1.1  jkunz 	/* First move last chars to start of buffer. */
   1507  1.1  jkunz 	number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
   1508  1.1  jkunz 
   1509  1.1  jkunz 	for ( i = 0; i < number_to_move; ++i )
   1510  1.1  jkunz 		*(dest++) = *(source++);
   1511  1.1  jkunz 
   1512  1.1  jkunz 	if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
   1513  1.1  jkunz 		/* don't do the read, it's not guaranteed to return an EOF,
   1514  1.1  jkunz 		 * just force an EOF
   1515  1.1  jkunz 		 */
   1516  1.1  jkunz 		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
   1517  1.1  jkunz 
   1518  1.1  jkunz 	else
   1519  1.1  jkunz 		{
   1520  1.1  jkunz 			yy_size_t num_to_read =
   1521  1.1  jkunz 			YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
   1522  1.1  jkunz 
   1523  1.1  jkunz 		while ( num_to_read <= 0 )
   1524  1.1  jkunz 			{ /* Not enough room in the buffer - grow it. */
   1525  1.1  jkunz 
   1526  1.1  jkunz 			/* just a shorter name for the current buffer */
   1527  1.1  jkunz 			YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
   1528  1.1  jkunz 
   1529  1.1  jkunz 			int yy_c_buf_p_offset =
   1530  1.1  jkunz 				(int) ((yy_c_buf_p) - b->yy_ch_buf);
   1531  1.1  jkunz 
   1532  1.1  jkunz 			if ( b->yy_is_our_buffer )
   1533  1.1  jkunz 				{
   1534  1.1  jkunz 				yy_size_t new_size = b->yy_buf_size * 2;
   1535  1.1  jkunz 
   1536  1.1  jkunz 				if ( new_size <= 0 )
   1537  1.1  jkunz 					b->yy_buf_size += b->yy_buf_size / 8;
   1538  1.1  jkunz 				else
   1539  1.1  jkunz 					b->yy_buf_size *= 2;
   1540  1.1  jkunz 
   1541  1.1  jkunz 				b->yy_ch_buf = (char *)
   1542  1.1  jkunz 					/* Include room in for 2 EOB chars. */
   1543  1.1  jkunz 					yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2  );
   1544  1.1  jkunz 				}
   1545  1.1  jkunz 			else
   1546  1.1  jkunz 				/* Can't grow it, we don't own it. */
   1547  1.1  jkunz 				b->yy_ch_buf = 0;
   1548  1.1  jkunz 
   1549  1.1  jkunz 			if ( ! b->yy_ch_buf )
   1550  1.1  jkunz 				YY_FATAL_ERROR(
   1551  1.1  jkunz 				"fatal error - scanner input buffer overflow" );
   1552  1.1  jkunz 
   1553  1.1  jkunz 			(yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
   1554  1.1  jkunz 
   1555  1.1  jkunz 			num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
   1556  1.1  jkunz 						number_to_move - 1;
   1557  1.1  jkunz 
   1558  1.1  jkunz 			}
   1559  1.1  jkunz 
   1560  1.1  jkunz 		if ( num_to_read > YY_READ_BUF_SIZE )
   1561  1.1  jkunz 			num_to_read = YY_READ_BUF_SIZE;
   1562  1.1  jkunz 
   1563  1.1  jkunz 		/* Read in more data. */
   1564  1.1  jkunz 		YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
   1565  1.1  jkunz 			(yy_n_chars), num_to_read );
   1566  1.1  jkunz 
   1567  1.1  jkunz 		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
   1568  1.1  jkunz 		}
   1569  1.1  jkunz 
   1570  1.1  jkunz 	if ( (yy_n_chars) == 0 )
   1571  1.1  jkunz 		{
   1572  1.1  jkunz 		if ( number_to_move == YY_MORE_ADJ )
   1573  1.1  jkunz 			{
   1574  1.1  jkunz 			ret_val = EOB_ACT_END_OF_FILE;
   1575  1.1  jkunz 			yyrestart( yyin  );
   1576  1.1  jkunz 			}
   1577  1.1  jkunz 
   1578  1.1  jkunz 		else
   1579  1.1  jkunz 			{
   1580  1.1  jkunz 			ret_val = EOB_ACT_LAST_MATCH;
   1581  1.1  jkunz 			YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
   1582  1.1  jkunz 				YY_BUFFER_EOF_PENDING;
   1583  1.1  jkunz 			}
   1584  1.1  jkunz 		}
   1585  1.1  jkunz 
   1586  1.1  jkunz 	else
   1587  1.1  jkunz 		ret_val = EOB_ACT_CONTINUE_SCAN;
   1588  1.1  jkunz 
   1589  1.1  jkunz 	if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
   1590  1.1  jkunz 		/* Extend the array by 50%, plus the number we really need. */
   1591  1.1  jkunz 		yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
   1592  1.1  jkunz 		YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size  );
   1593  1.1  jkunz 		if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
   1594  1.1  jkunz 			YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
   1595  1.1  jkunz 	}
   1596  1.1  jkunz 
   1597  1.1  jkunz 	(yy_n_chars) += number_to_move;
   1598  1.1  jkunz 	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
   1599  1.1  jkunz 	YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
   1600  1.1  jkunz 
   1601  1.1  jkunz 	(yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
   1602  1.1  jkunz 
   1603  1.1  jkunz 	return ret_val;
   1604  1.1  jkunz }
   1605  1.1  jkunz 
   1606  1.1  jkunz /* yy_get_previous_state - get the state just before the EOB char was reached */
   1607  1.1  jkunz 
   1608  1.1  jkunz     yy_state_type yyFlexLexer::yy_get_previous_state()
   1609  1.1  jkunz {
   1610  1.1  jkunz 	register yy_state_type yy_current_state;
   1611  1.1  jkunz 	register char *yy_cp;
   1612  1.1  jkunz 
   1613  1.1  jkunz 	yy_current_state = (yy_start);
   1614  1.1  jkunz 
   1615  1.1  jkunz 	for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
   1616  1.1  jkunz 		{
   1617  1.1  jkunz 		register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
   1618  1.1  jkunz 		if ( yy_accept[yy_current_state] )
   1619  1.1  jkunz 			{
   1620  1.1  jkunz 			(yy_last_accepting_state) = yy_current_state;
   1621  1.1  jkunz 			(yy_last_accepting_cpos) = yy_cp;
   1622  1.1  jkunz 			}
   1623  1.1  jkunz 		while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
   1624  1.1  jkunz 			{
   1625  1.1  jkunz 			yy_current_state = (int) yy_def[yy_current_state];
   1626  1.1  jkunz 			if ( yy_current_state >= 218 )
   1627  1.1  jkunz 				yy_c = yy_meta[(unsigned int) yy_c];
   1628  1.1  jkunz 			}
   1629  1.1  jkunz 		yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
   1630  1.1  jkunz 		}
   1631  1.1  jkunz 
   1632  1.1  jkunz 	return yy_current_state;
   1633  1.1  jkunz }
   1634  1.1  jkunz 
   1635  1.1  jkunz /* yy_try_NUL_trans - try to make a transition on the NUL character
   1636  1.1  jkunz  *
   1637  1.1  jkunz  * synopsis
   1638  1.1  jkunz  *	next_state = yy_try_NUL_trans( current_state );
   1639  1.1  jkunz  */
   1640  1.1  jkunz     yy_state_type yyFlexLexer::yy_try_NUL_trans( yy_state_type yy_current_state )
   1641  1.1  jkunz {
   1642  1.1  jkunz 	register int yy_is_jam;
   1643  1.1  jkunz     	register char *yy_cp = (yy_c_buf_p);
   1644  1.1  jkunz 
   1645  1.1  jkunz 	register YY_CHAR yy_c = 1;
   1646  1.1  jkunz 	if ( yy_accept[yy_current_state] )
   1647  1.1  jkunz 		{
   1648  1.1  jkunz 		(yy_last_accepting_state) = yy_current_state;
   1649  1.1  jkunz 		(yy_last_accepting_cpos) = yy_cp;
   1650  1.1  jkunz 		}
   1651  1.1  jkunz 	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
   1652  1.1  jkunz 		{
   1653  1.1  jkunz 		yy_current_state = (int) yy_def[yy_current_state];
   1654  1.1  jkunz 		if ( yy_current_state >= 218 )
   1655  1.1  jkunz 			yy_c = yy_meta[(unsigned int) yy_c];
   1656  1.1  jkunz 		}
   1657  1.1  jkunz 	yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
   1658  1.1  jkunz 	yy_is_jam = (yy_current_state == 217);
   1659  1.1  jkunz 
   1660  1.1  jkunz 	return yy_is_jam ? 0 : yy_current_state;
   1661  1.1  jkunz }
   1662  1.1  jkunz 
   1663  1.1  jkunz     void yyFlexLexer::yyunput( int c, register char* yy_bp)
   1664  1.1  jkunz {
   1665  1.1  jkunz 	register char *yy_cp;
   1666  1.1  jkunz 
   1667  1.1  jkunz     yy_cp = (yy_c_buf_p);
   1668  1.1  jkunz 
   1669  1.1  jkunz 	/* undo effects of setting up yytext */
   1670  1.1  jkunz 	*yy_cp = (yy_hold_char);
   1671  1.1  jkunz 
   1672  1.1  jkunz 	if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
   1673  1.1  jkunz 		{ /* need to shift things up to make room */
   1674  1.1  jkunz 		/* +2 for EOB chars. */
   1675  1.1  jkunz 		register yy_size_t number_to_move = (yy_n_chars) + 2;
   1676  1.1  jkunz 		register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
   1677  1.1  jkunz 					YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
   1678  1.1  jkunz 		register char *source =
   1679  1.1  jkunz 				&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
   1680  1.1  jkunz 
   1681  1.1  jkunz 		while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
   1682  1.1  jkunz 			*--dest = *--source;
   1683  1.1  jkunz 
   1684  1.1  jkunz 		yy_cp += (int) (dest - source);
   1685  1.1  jkunz 		yy_bp += (int) (dest - source);
   1686  1.1  jkunz 		YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
   1687  1.1  jkunz 			(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
   1688  1.1  jkunz 
   1689  1.1  jkunz 		if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
   1690  1.1  jkunz 			YY_FATAL_ERROR( "flex scanner push-back overflow" );
   1691  1.1  jkunz 		}
   1692  1.1  jkunz 
   1693  1.1  jkunz 	*--yy_cp = (char) c;
   1694  1.1  jkunz 
   1695  1.1  jkunz     if ( c == '\n' ){
   1696  1.1  jkunz         --yylineno;
   1697  1.1  jkunz     }
   1698  1.1  jkunz 
   1699  1.1  jkunz 	(yytext_ptr) = yy_bp;
   1700  1.1  jkunz 	(yy_hold_char) = *yy_cp;
   1701  1.1  jkunz 	(yy_c_buf_p) = yy_cp;
   1702  1.1  jkunz }
   1703  1.1  jkunz 
   1704  1.1  jkunz     int yyFlexLexer::yyinput()
   1705  1.1  jkunz {
   1706  1.1  jkunz 	int c;
   1707  1.1  jkunz 
   1708  1.1  jkunz 	*(yy_c_buf_p) = (yy_hold_char);
   1709  1.1  jkunz 
   1710  1.1  jkunz 	if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
   1711  1.1  jkunz 		{
   1712  1.1  jkunz 		/* yy_c_buf_p now points to the character we want to return.
   1713  1.1  jkunz 		 * If this occurs *before* the EOB characters, then it's a
   1714  1.1  jkunz 		 * valid NUL; if not, then we've hit the end of the buffer.
   1715  1.1  jkunz 		 */
   1716  1.1  jkunz 		if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
   1717  1.1  jkunz 			/* This was really a NUL. */
   1718  1.1  jkunz 			*(yy_c_buf_p) = '\0';
   1719  1.1  jkunz 
   1720  1.1  jkunz 		else
   1721  1.1  jkunz 			{ /* need more input */
   1722  1.1  jkunz 			yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
   1723  1.1  jkunz 			++(yy_c_buf_p);
   1724  1.1  jkunz 
   1725  1.1  jkunz 			switch ( yy_get_next_buffer(  ) )
   1726  1.1  jkunz 				{
   1727  1.1  jkunz 				case EOB_ACT_LAST_MATCH:
   1728  1.1  jkunz 					/* This happens because yy_g_n_b()
   1729  1.1  jkunz 					 * sees that we've accumulated a
   1730  1.1  jkunz 					 * token and flags that we need to
   1731  1.1  jkunz 					 * try matching the token before
   1732  1.1  jkunz 					 * proceeding.  But for input(),
   1733  1.1  jkunz 					 * there's no matching to consider.
   1734  1.1  jkunz 					 * So convert the EOB_ACT_LAST_MATCH
   1735  1.1  jkunz 					 * to EOB_ACT_END_OF_FILE.
   1736  1.1  jkunz 					 */
   1737  1.1  jkunz 
   1738  1.1  jkunz 					/* Reset buffer status. */
   1739  1.1  jkunz 					yyrestart( yyin );
   1740  1.1  jkunz 
   1741  1.1  jkunz 					/*FALLTHROUGH*/
   1742  1.1  jkunz 
   1743  1.1  jkunz 				case EOB_ACT_END_OF_FILE:
   1744  1.1  jkunz 					{
   1745  1.1  jkunz 					if ( yywrap(  ) )
   1746  1.1  jkunz 						return 0;
   1747  1.1  jkunz 
   1748  1.1  jkunz 					if ( ! (yy_did_buffer_switch_on_eof) )
   1749  1.1  jkunz 						YY_NEW_FILE;
   1750  1.1  jkunz #ifdef __cplusplus
   1751  1.1  jkunz 					return yyinput();
   1752  1.1  jkunz #else
   1753  1.1  jkunz 					return input();
   1754  1.1  jkunz #endif
   1755  1.1  jkunz 					}
   1756  1.1  jkunz 
   1757  1.1  jkunz 				case EOB_ACT_CONTINUE_SCAN:
   1758  1.1  jkunz 					(yy_c_buf_p) = (yytext_ptr) + offset;
   1759  1.1  jkunz 					break;
   1760  1.1  jkunz 				}
   1761  1.1  jkunz 			}
   1762  1.1  jkunz 		}
   1763  1.1  jkunz 
   1764  1.1  jkunz 	c = *(unsigned char *) (yy_c_buf_p);	/* cast for 8-bit char's */
   1765  1.1  jkunz 	*(yy_c_buf_p) = '\0';	/* preserve yytext */
   1766  1.1  jkunz 	(yy_hold_char) = *++(yy_c_buf_p);
   1767  1.1  jkunz 
   1768  1.1  jkunz 	if ( c == '\n' )
   1769  1.1  jkunz 
   1770  1.1  jkunz     yylineno++;
   1771  1.1  jkunz ;
   1772  1.1  jkunz 
   1773  1.1  jkunz 	return c;
   1774  1.1  jkunz }
   1775  1.1  jkunz 
   1776  1.1  jkunz /** Immediately switch to a different input stream.
   1777  1.1  jkunz  * @param input_file A readable stream.
   1778  1.1  jkunz  *
   1779  1.1  jkunz  * @note This function does not reset the start condition to @c INITIAL .
   1780  1.1  jkunz  */
   1781  1.1  jkunz     void yyFlexLexer::yyrestart( std::istream* input_file )
   1782  1.1  jkunz {
   1783  1.1  jkunz 
   1784  1.1  jkunz 	if ( ! YY_CURRENT_BUFFER ){
   1785  1.1  jkunz         yyensure_buffer_stack ();
   1786  1.1  jkunz 		YY_CURRENT_BUFFER_LVALUE =
   1787  1.1  jkunz             yy_create_buffer( yyin, YY_BUF_SIZE );
   1788  1.1  jkunz 	}
   1789  1.1  jkunz 
   1790  1.1  jkunz 	yy_init_buffer( YY_CURRENT_BUFFER, input_file );
   1791  1.1  jkunz 	yy_load_buffer_state(  );
   1792  1.1  jkunz }
   1793  1.1  jkunz 
   1794  1.1  jkunz /** Switch to a different input buffer.
   1795  1.1  jkunz  * @param new_buffer The new input buffer.
   1796  1.1  jkunz  *
   1797  1.1  jkunz  */
   1798  1.1  jkunz     void yyFlexLexer::yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
   1799  1.1  jkunz {
   1800  1.1  jkunz 
   1801  1.1  jkunz 	/* TODO. We should be able to replace this entire function body
   1802  1.1  jkunz 	 * with
   1803  1.1  jkunz 	 *		yypop_buffer_state();
   1804  1.1  jkunz 	 *		yypush_buffer_state(new_buffer);
   1805  1.1  jkunz      */
   1806  1.1  jkunz 	yyensure_buffer_stack ();
   1807  1.1  jkunz 	if ( YY_CURRENT_BUFFER == new_buffer )
   1808  1.1  jkunz 		return;
   1809  1.1  jkunz 
   1810  1.1  jkunz 	if ( YY_CURRENT_BUFFER )
   1811  1.1  jkunz 		{
   1812  1.1  jkunz 		/* Flush out information for old buffer. */
   1813  1.1  jkunz 		*(yy_c_buf_p) = (yy_hold_char);
   1814  1.1  jkunz 		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
   1815  1.1  jkunz 		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
   1816  1.1  jkunz 		}
   1817  1.1  jkunz 
   1818  1.1  jkunz 	YY_CURRENT_BUFFER_LVALUE = new_buffer;
   1819  1.1  jkunz 	yy_load_buffer_state(  );
   1820  1.1  jkunz 
   1821  1.1  jkunz 	/* We don't actually know whether we did this switch during
   1822  1.1  jkunz 	 * EOF (yywrap()) processing, but the only time this flag
   1823  1.1  jkunz 	 * is looked at is after yywrap() is called, so it's safe
   1824  1.1  jkunz 	 * to go ahead and always set it.
   1825  1.1  jkunz 	 */
   1826  1.1  jkunz 	(yy_did_buffer_switch_on_eof) = 1;
   1827  1.1  jkunz }
   1828  1.1  jkunz 
   1829  1.1  jkunz     void yyFlexLexer::yy_load_buffer_state()
   1830  1.1  jkunz {
   1831  1.1  jkunz     	(yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
   1832  1.1  jkunz 	(yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
   1833  1.1  jkunz 	yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
   1834  1.1  jkunz 	(yy_hold_char) = *(yy_c_buf_p);
   1835  1.1  jkunz }
   1836  1.1  jkunz 
   1837  1.1  jkunz /** Allocate and initialize an input buffer state.
   1838  1.1  jkunz  * @param file A readable stream.
   1839  1.1  jkunz  * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
   1840  1.1  jkunz  *
   1841  1.1  jkunz  * @return the allocated buffer state.
   1842  1.1  jkunz  */
   1843  1.1  jkunz     YY_BUFFER_STATE yyFlexLexer::yy_create_buffer( std::istream* file, int size )
   1844  1.1  jkunz {
   1845  1.1  jkunz 	YY_BUFFER_STATE b;
   1846  1.1  jkunz 
   1847  1.1  jkunz 	b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state )  );
   1848  1.1  jkunz 	if ( ! b )
   1849  1.1  jkunz 		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
   1850  1.1  jkunz 
   1851  1.1  jkunz 	b->yy_buf_size = size;
   1852  1.1  jkunz 
   1853  1.1  jkunz 	/* yy_ch_buf has to be 2 characters longer than the size given because
   1854  1.1  jkunz 	 * we need to put in 2 end-of-buffer characters.
   1855  1.1  jkunz 	 */
   1856  1.1  jkunz 	b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2  );
   1857  1.1  jkunz 	if ( ! b->yy_ch_buf )
   1858  1.1  jkunz 		YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
   1859  1.1  jkunz 
   1860  1.1  jkunz 	b->yy_is_our_buffer = 1;
   1861  1.1  jkunz 
   1862  1.1  jkunz 	yy_init_buffer( b, file );
   1863  1.1  jkunz 
   1864  1.1  jkunz 	return b;
   1865  1.1  jkunz }
   1866  1.1  jkunz 
   1867  1.1  jkunz /** Destroy the buffer.
   1868  1.1  jkunz  * @param b a buffer created with yy_create_buffer()
   1869  1.1  jkunz  *
   1870  1.1  jkunz  */
   1871  1.1  jkunz     void yyFlexLexer::yy_delete_buffer( YY_BUFFER_STATE b )
   1872  1.1  jkunz {
   1873  1.1  jkunz 
   1874  1.1  jkunz 	if ( ! b )
   1875  1.1  jkunz 		return;
   1876  1.1  jkunz 
   1877  1.1  jkunz 	if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
   1878  1.1  jkunz 		YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
   1879  1.1  jkunz 
   1880  1.1  jkunz 	if ( b->yy_is_our_buffer )
   1881  1.1  jkunz 		yyfree((void *) b->yy_ch_buf  );
   1882  1.1  jkunz 
   1883  1.1  jkunz 	yyfree((void *) b  );
   1884  1.1  jkunz }
   1885  1.1  jkunz 
   1886  1.1  jkunz /* Initializes or reinitializes a buffer.
   1887  1.1  jkunz  * This function is sometimes called more than once on the same buffer,
   1888  1.1  jkunz  * such as during a yyrestart() or at EOF.
   1889  1.1  jkunz  */
   1890  1.1  jkunz     void yyFlexLexer::yy_init_buffer( YY_BUFFER_STATE b, std::istream* file )
   1891  1.1  jkunz 
   1892  1.1  jkunz {
   1893  1.1  jkunz 	int oerrno = errno;
   1894  1.1  jkunz 
   1895  1.1  jkunz 	yy_flush_buffer( b );
   1896  1.1  jkunz 
   1897  1.1  jkunz 	b->yy_input_file = file;
   1898  1.1  jkunz 	b->yy_fill_buffer = 1;
   1899  1.1  jkunz 
   1900  1.1  jkunz     /* If b is the current buffer, then yy_init_buffer was _probably_
   1901  1.1  jkunz      * called from yyrestart() or through yy_get_next_buffer.
   1902  1.1  jkunz      * In that case, we don't want to reset the lineno or column.
   1903  1.1  jkunz      */
   1904  1.1  jkunz     if (b != YY_CURRENT_BUFFER){
   1905  1.1  jkunz         b->yy_bs_lineno = 1;
   1906  1.1  jkunz         b->yy_bs_column = 0;
   1907  1.1  jkunz     }
   1908  1.1  jkunz 
   1909  1.1  jkunz 	b->yy_is_interactive = 0;
   1910  1.1  jkunz 	errno = oerrno;
   1911  1.1  jkunz }
   1912  1.1  jkunz 
   1913  1.1  jkunz /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
   1914  1.1  jkunz  * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
   1915  1.1  jkunz  *
   1916  1.1  jkunz  */
   1917  1.1  jkunz     void yyFlexLexer::yy_flush_buffer( YY_BUFFER_STATE b )
   1918  1.1  jkunz {
   1919  1.1  jkunz     	if ( ! b )
   1920  1.1  jkunz 		return;
   1921  1.1  jkunz 
   1922  1.1  jkunz 	b->yy_n_chars = 0;
   1923  1.1  jkunz 
   1924  1.1  jkunz 	/* We always need two end-of-buffer characters.  The first causes
   1925  1.1  jkunz 	 * a transition to the end-of-buffer state.  The second causes
   1926  1.1  jkunz 	 * a jam in that state.
   1927  1.1  jkunz 	 */
   1928  1.1  jkunz 	b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
   1929  1.1  jkunz 	b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
   1930  1.1  jkunz 
   1931  1.1  jkunz 	b->yy_buf_pos = &b->yy_ch_buf[0];
   1932  1.1  jkunz 
   1933  1.1  jkunz 	b->yy_at_bol = 1;
   1934  1.1  jkunz 	b->yy_buffer_status = YY_BUFFER_NEW;
   1935  1.1  jkunz 
   1936  1.1  jkunz 	if ( b == YY_CURRENT_BUFFER )
   1937  1.1  jkunz 		yy_load_buffer_state(  );
   1938  1.1  jkunz }
   1939  1.1  jkunz 
   1940  1.1  jkunz /** Pushes the new state onto the stack. The new state becomes
   1941  1.1  jkunz  *  the current state. This function will allocate the stack
   1942  1.1  jkunz  *  if necessary.
   1943  1.1  jkunz  *  @param new_buffer The new state.
   1944  1.1  jkunz  *
   1945  1.1  jkunz  */
   1946  1.1  jkunz void yyFlexLexer::yypush_buffer_state (YY_BUFFER_STATE new_buffer)
   1947  1.1  jkunz {
   1948  1.1  jkunz     	if (new_buffer == NULL)
   1949  1.1  jkunz 		return;
   1950  1.1  jkunz 
   1951  1.1  jkunz 	yyensure_buffer_stack();
   1952  1.1  jkunz 
   1953  1.1  jkunz 	/* This block is copied from yy_switch_to_buffer. */
   1954  1.1  jkunz 	if ( YY_CURRENT_BUFFER )
   1955  1.1  jkunz 		{
   1956  1.1  jkunz 		/* Flush out information for old buffer. */
   1957  1.1  jkunz 		*(yy_c_buf_p) = (yy_hold_char);
   1958  1.1  jkunz 		YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
   1959  1.1  jkunz 		YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
   1960  1.1  jkunz 		}
   1961  1.1  jkunz 
   1962  1.1  jkunz 	/* Only push if top exists. Otherwise, replace top. */
   1963  1.1  jkunz 	if (YY_CURRENT_BUFFER)
   1964  1.1  jkunz 		(yy_buffer_stack_top)++;
   1965  1.1  jkunz 	YY_CURRENT_BUFFER_LVALUE = new_buffer;
   1966  1.1  jkunz 
   1967  1.1  jkunz 	/* copied from yy_switch_to_buffer. */
   1968  1.1  jkunz 	yy_load_buffer_state(  );
   1969  1.1  jkunz 	(yy_did_buffer_switch_on_eof) = 1;
   1970  1.1  jkunz }
   1971  1.1  jkunz 
   1972  1.1  jkunz /** Removes and deletes the top of the stack, if present.
   1973  1.1  jkunz  *  The next element becomes the new top.
   1974  1.1  jkunz  *
   1975  1.1  jkunz  */
   1976  1.1  jkunz void yyFlexLexer::yypop_buffer_state (void)
   1977  1.1  jkunz {
   1978  1.1  jkunz     	if (!YY_CURRENT_BUFFER)
   1979  1.1  jkunz 		return;
   1980  1.1  jkunz 
   1981  1.1  jkunz 	yy_delete_buffer(YY_CURRENT_BUFFER );
   1982  1.1  jkunz 	YY_CURRENT_BUFFER_LVALUE = NULL;
   1983  1.1  jkunz 	if ((yy_buffer_stack_top) > 0)
   1984  1.1  jkunz 		--(yy_buffer_stack_top);
   1985  1.1  jkunz 
   1986  1.1  jkunz 	if (YY_CURRENT_BUFFER) {
   1987  1.1  jkunz 		yy_load_buffer_state(  );
   1988  1.1  jkunz 		(yy_did_buffer_switch_on_eof) = 1;
   1989  1.1  jkunz 	}
   1990  1.1  jkunz }
   1991  1.1  jkunz 
   1992  1.1  jkunz /* Allocates the stack if it does not exist.
   1993  1.1  jkunz  *  Guarantees space for at least one push.
   1994  1.1  jkunz  */
   1995  1.1  jkunz void yyFlexLexer::yyensure_buffer_stack(void)
   1996  1.1  jkunz {
   1997  1.1  jkunz 	yy_size_t num_to_alloc;
   1998  1.1  jkunz 
   1999  1.1  jkunz 	if (!(yy_buffer_stack)) {
   2000  1.1  jkunz 
   2001  1.1  jkunz 		/* First allocation is just for 2 elements, since we don't know if this
   2002  1.1  jkunz 		 * scanner will even need a stack. We use 2 instead of 1 to avoid an
   2003  1.1  jkunz 		 * immediate realloc on the next call.
   2004  1.1  jkunz          */
   2005  1.1  jkunz 		num_to_alloc = 1;
   2006  1.1  jkunz 		(yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
   2007  1.1  jkunz 								(num_to_alloc * sizeof(struct yy_buffer_state*)
   2008  1.1  jkunz 								);
   2009  1.1  jkunz 		if ( ! (yy_buffer_stack) )
   2010  1.1  jkunz 			YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
   2011  1.1  jkunz 
   2012  1.1  jkunz 		memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
   2013  1.1  jkunz 
   2014  1.1  jkunz 		(yy_buffer_stack_max) = num_to_alloc;
   2015  1.1  jkunz 		(yy_buffer_stack_top) = 0;
   2016  1.1  jkunz 		return;
   2017  1.1  jkunz 	}
   2018  1.1  jkunz 
   2019  1.1  jkunz 	if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
   2020  1.1  jkunz 
   2021  1.1  jkunz 		/* Increase the buffer to prepare for a possible push. */
   2022  1.1  jkunz 		int grow_size = 8 /* arbitrary grow size */;
   2023  1.1  jkunz 
   2024  1.1  jkunz 		num_to_alloc = (yy_buffer_stack_max) + grow_size;
   2025  1.1  jkunz 		(yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc
   2026  1.1  jkunz 								((yy_buffer_stack),
   2027  1.1  jkunz 								num_to_alloc * sizeof(struct yy_buffer_state*)
   2028  1.1  jkunz 								);
   2029  1.1  jkunz 		if ( ! (yy_buffer_stack) )
   2030  1.1  jkunz 			YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
   2031  1.1  jkunz 
   2032  1.1  jkunz 		/* zero only the new slots.*/
   2033  1.1  jkunz 		memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
   2034  1.1  jkunz 		(yy_buffer_stack_max) = num_to_alloc;
   2035  1.1  jkunz 	}
   2036  1.1  jkunz }
   2037  1.1  jkunz 
   2038  1.1  jkunz     void yyFlexLexer::yy_push_state( int new_state )
   2039  1.1  jkunz {
   2040  1.1  jkunz     	if ( (yy_start_stack_ptr) >= (yy_start_stack_depth) )
   2041  1.1  jkunz 		{
   2042  1.1  jkunz 		yy_size_t new_size;
   2043  1.1  jkunz 
   2044  1.1  jkunz 		(yy_start_stack_depth) += YY_START_STACK_INCR;
   2045  1.1  jkunz 		new_size = (yy_start_stack_depth) * sizeof( int );
   2046  1.1  jkunz 
   2047  1.1  jkunz 		if ( ! (yy_start_stack) )
   2048  1.1  jkunz 			(yy_start_stack) = (int *) yyalloc(new_size  );
   2049  1.1  jkunz 
   2050  1.1  jkunz 		else
   2051  1.1  jkunz 			(yy_start_stack) = (int *) yyrealloc((void *) (yy_start_stack),new_size  );
   2052  1.1  jkunz 
   2053  1.1  jkunz 		if ( ! (yy_start_stack) )
   2054  1.1  jkunz 			YY_FATAL_ERROR( "out of memory expanding start-condition stack" );
   2055  1.1  jkunz 		}
   2056  1.1  jkunz 
   2057  1.1  jkunz 	(yy_start_stack)[(yy_start_stack_ptr)++] = YY_START;
   2058  1.1  jkunz 
   2059  1.1  jkunz 	BEGIN(new_state);
   2060  1.1  jkunz }
   2061  1.1  jkunz 
   2062  1.1  jkunz     void yyFlexLexer::yy_pop_state()
   2063  1.1  jkunz {
   2064  1.1  jkunz     	if ( --(yy_start_stack_ptr) < 0 )
   2065  1.1  jkunz 		YY_FATAL_ERROR( "start-condition stack underflow" );
   2066  1.1  jkunz 
   2067  1.1  jkunz 	BEGIN((yy_start_stack)[(yy_start_stack_ptr)]);
   2068  1.1  jkunz }
   2069  1.1  jkunz 
   2070  1.1  jkunz     int yyFlexLexer::yy_top_state()
   2071  1.1  jkunz {
   2072  1.1  jkunz     	return (yy_start_stack)[(yy_start_stack_ptr) - 1];
   2073  1.1  jkunz }
   2074  1.1  jkunz 
   2075  1.1  jkunz #ifndef YY_EXIT_FAILURE
   2076  1.1  jkunz #define YY_EXIT_FAILURE 2
   2077  1.1  jkunz #endif
   2078  1.1  jkunz 
   2079  1.1  jkunz void yyFlexLexer::LexerError( yyconst char msg[] )
   2080  1.1  jkunz {
   2081  1.1  jkunz     	std::cerr << msg << std::endl;
   2082  1.1  jkunz 	exit( YY_EXIT_FAILURE );
   2083  1.1  jkunz }
   2084  1.1  jkunz 
   2085  1.1  jkunz /* Redefine yyless() so it works in section 3 code. */
   2086  1.1  jkunz 
   2087  1.1  jkunz #undef yyless
   2088  1.1  jkunz #define yyless(n) \
   2089  1.1  jkunz 	do \
   2090  1.1  jkunz 		{ \
   2091  1.1  jkunz 		/* Undo effects of setting up yytext. */ \
   2092  1.1  jkunz         int yyless_macro_arg = (n); \
   2093  1.1  jkunz         YY_LESS_LINENO(yyless_macro_arg);\
   2094  1.1  jkunz 		yytext[yyleng] = (yy_hold_char); \
   2095  1.1  jkunz 		(yy_c_buf_p) = yytext + yyless_macro_arg; \
   2096  1.1  jkunz 		(yy_hold_char) = *(yy_c_buf_p); \
   2097  1.1  jkunz 		*(yy_c_buf_p) = '\0'; \
   2098  1.1  jkunz 		yyleng = yyless_macro_arg; \
   2099  1.1  jkunz 		} \
   2100  1.1  jkunz 	while ( 0 )
   2101  1.1  jkunz 
   2102  1.1  jkunz /* Accessor  methods (get/set functions) to struct members. */
   2103  1.1  jkunz 
   2104  1.1  jkunz /*
   2105  1.1  jkunz  * Internal utility routines.
   2106  1.1  jkunz  */
   2107  1.1  jkunz 
   2108  1.1  jkunz #ifndef yytext_ptr
   2109  1.1  jkunz static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
   2110  1.1  jkunz {
   2111  1.1  jkunz 	register int i;
   2112  1.1  jkunz 	for ( i = 0; i < n; ++i )
   2113  1.1  jkunz 		s1[i] = s2[i];
   2114  1.1  jkunz }
   2115  1.1  jkunz #endif
   2116  1.1  jkunz 
   2117  1.1  jkunz #ifdef YY_NEED_STRLEN
   2118  1.1  jkunz static int yy_flex_strlen (yyconst char * s )
   2119  1.1  jkunz {
   2120  1.1  jkunz 	register int n;
   2121  1.1  jkunz 	for ( n = 0; s[n]; ++n )
   2122  1.1  jkunz 		;
   2123  1.1  jkunz 
   2124  1.1  jkunz 	return n;
   2125  1.1  jkunz }
   2126  1.1  jkunz #endif
   2127  1.1  jkunz 
   2128  1.1  jkunz void *yyalloc (yy_size_t  size )
   2129  1.1  jkunz {
   2130  1.1  jkunz 	return (void *) malloc( size );
   2131  1.1  jkunz }
   2132  1.1  jkunz 
   2133  1.1  jkunz void *yyrealloc  (void * ptr, yy_size_t  size )
   2134  1.1  jkunz {
   2135  1.1  jkunz 	/* The cast to (char *) in the following accommodates both
   2136  1.1  jkunz 	 * implementations that use char* generic pointers, and those
   2137  1.1  jkunz 	 * that use void* generic pointers.  It works with the latter
   2138  1.1  jkunz 	 * because both ANSI C and C++ allow castless assignment from
   2139  1.1  jkunz 	 * any pointer type to void*, and deal with argument conversions
   2140  1.1  jkunz 	 * as though doing an assignment.
   2141  1.1  jkunz 	 */
   2142  1.1  jkunz 	return (void *) realloc( (char *) ptr, size );
   2143  1.1  jkunz }
   2144  1.1  jkunz 
   2145  1.1  jkunz void yyfree (void * ptr )
   2146  1.1  jkunz {
   2147  1.1  jkunz 	free( (char *) ptr );	/* see yyrealloc() for (char *) cast */
   2148  1.1  jkunz }
   2149  1.1  jkunz 
   2150  1.1  jkunz #define YYTABLES_NAME "yytables"
   2151  1.1  jkunz 
   2152  1.1  jkunz 
   2153  1.1  jkunz 
   2154  1.1  jkunz 
   2155  1.1  jkunz // verbatim code copied to the bottom of the output
   2156  1.1  jkunz 
   2157  1.1  jkunz 
   2158  1.1  jkunz 
   2159