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