1 /* A lexical scanner generated by flex */ 2 3 /* Scanner skeleton version: 4 * $Header: /home/cvs/src/gnu/usr.bin/binutils/binutils/deflex.c,v 1.2 2004/11/02 20:45:16 miod Exp $ 5 */ 6 7 #define FLEX_SCANNER 8 #define YY_FLEX_MAJOR_VERSION 2 9 #define YY_FLEX_MINOR_VERSION 5 10 11 #include <stdio.h> 12 #include <errno.h> 13 14 /* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */ 15 #ifdef c_plusplus 16 #ifndef __cplusplus 17 #define __cplusplus 18 #endif 19 #endif 20 21 22 #ifdef __cplusplus 23 24 #include <stdlib.h> 25 #ifndef _WIN32 26 #include <unistd.h> 27 #endif 28 29 /* Use prototypes in function declarations. */ 30 #define YY_USE_PROTOS 31 32 /* The "const" storage-class-modifier is valid. */ 33 #define YY_USE_CONST 34 35 #else /* ! __cplusplus */ 36 37 #if __STDC__ 38 39 #define YY_USE_PROTOS 40 #define YY_USE_CONST 41 42 #endif /* __STDC__ */ 43 #endif /* ! __cplusplus */ 44 45 #ifdef __TURBOC__ 46 #pragma warn -rch 47 #pragma warn -use 48 #include <io.h> 49 #include <stdlib.h> 50 #define YY_USE_CONST 51 #define YY_USE_PROTOS 52 #endif 53 54 #ifdef YY_USE_CONST 55 #define yyconst const 56 #else 57 #define yyconst 58 #endif 59 60 61 #ifdef YY_USE_PROTOS 62 #define YY_PROTO(proto) proto 63 #else 64 #define YY_PROTO(proto) () 65 #endif 66 67 68 /* Returned upon end-of-file. */ 69 #define YY_NULL 0 70 71 /* Promotes a possibly negative, possibly signed char to an unsigned 72 * integer for use as an array index. If the signed char is negative, 73 * we want to instead treat it as an 8-bit unsigned char, hence the 74 * double cast. 75 */ 76 #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) 77 78 /* Enter a start condition. This macro really ought to take a parameter, 79 * but we do it the disgusting crufty way forced on us by the ()-less 80 * definition of BEGIN. 81 */ 82 #define BEGIN yy_start = 1 + 2 * 83 84 /* Translate the current start state into a value that can be later handed 85 * to BEGIN to return to the state. The YYSTATE alias is for lex 86 * compatibility. 87 */ 88 #define YY_START ((yy_start - 1) / 2) 89 #define YYSTATE YY_START 90 91 /* Action number for EOF rule of a given start state. */ 92 #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) 93 94 /* Special action meaning "start processing a new file". */ 95 #define YY_NEW_FILE yyrestart( yyin ) 96 97 #define YY_END_OF_BUFFER_CHAR 0 98 99 /* Size of default input buffer. */ 100 #define YY_BUF_SIZE 16384 101 102 typedef struct yy_buffer_state *YY_BUFFER_STATE; 103 104 extern int yyleng; 105 extern FILE *yyin, *yyout; 106 107 #define EOB_ACT_CONTINUE_SCAN 0 108 #define EOB_ACT_END_OF_FILE 1 109 #define EOB_ACT_LAST_MATCH 2 110 111 /* The funky do-while in the following #define is used to turn the definition 112 * int a single C statement (which needs a semi-colon terminator). This 113 * avoids problems with code like: 114 * 115 * if ( condition_holds ) 116 * yyless( 5 ); 117 * else 118 * do_something_else(); 119 * 120 * Prior to using the do-while the compiler would get upset at the 121 * "else" because it interpreted the "if" statement as being all 122 * done when it reached the ';' after the yyless() call. 123 */ 124 125 /* Return all but the first 'n' matched characters back to the input stream. */ 126 127 #define yyless(n) \ 128 do \ 129 { \ 130 /* Undo effects of setting up yytext. */ \ 131 *yy_cp = yy_hold_char; \ 132 YY_RESTORE_YY_MORE_OFFSET \ 133 yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \ 134 YY_DO_BEFORE_ACTION; /* set up yytext again */ \ 135 } \ 136 while ( 0 ) 137 138 #define unput(c) yyunput( c, yytext_ptr ) 139 140 /* The following is because we cannot portably get our hands on size_t 141 * (without autoconf's help, which isn't available because we want 142 * flex-generated scanners to compile on their own). 143 */ 144 typedef unsigned int yy_size_t; 145 146 147 struct yy_buffer_state 148 { 149 FILE *yy_input_file; 150 151 char *yy_ch_buf; /* input buffer */ 152 char *yy_buf_pos; /* current position in input buffer */ 153 154 /* Size of input buffer in bytes, not including room for EOB 155 * characters. 156 */ 157 yy_size_t yy_buf_size; 158 159 /* Number of characters read into yy_ch_buf, not including EOB 160 * characters. 161 */ 162 int yy_n_chars; 163 164 /* Whether we "own" the buffer - i.e., we know we created it, 165 * and can realloc() it to grow it, and should free() it to 166 * delete it. 167 */ 168 int yy_is_our_buffer; 169 170 /* Whether this is an "interactive" input source; if so, and 171 * if we're using stdio for input, then we want to use getc() 172 * instead of fread(), to make sure we stop fetching input after 173 * each newline. 174 */ 175 int yy_is_interactive; 176 177 /* Whether we're considered to be at the beginning of a line. 178 * If so, '^' rules will be active on the next match, otherwise 179 * not. 180 */ 181 int yy_at_bol; 182 183 /* Whether to try to fill the input buffer when we reach the 184 * end of it. 185 */ 186 int yy_fill_buffer; 187 188 int yy_buffer_status; 189 #define YY_BUFFER_NEW 0 190 #define YY_BUFFER_NORMAL 1 191 /* When an EOF's been seen but there's still some text to process 192 * then we mark the buffer as YY_EOF_PENDING, to indicate that we 193 * shouldn't try reading from the input source any more. We might 194 * still have a bunch of tokens to match, though, because of 195 * possible backing-up. 196 * 197 * When we actually see the EOF, we change the status to "new" 198 * (via yyrestart()), so that the user can continue scanning by 199 * just pointing yyin at a new input file. 200 */ 201 #define YY_BUFFER_EOF_PENDING 2 202 }; 203 204 static YY_BUFFER_STATE yy_current_buffer = 0; 205 206 /* We provide macros for accessing buffer states in case in the 207 * future we want to put the buffer states in a more general 208 * "scanner state". 209 */ 210 #define YY_CURRENT_BUFFER yy_current_buffer 211 212 213 /* yy_hold_char holds the character lost when yytext is formed. */ 214 static char yy_hold_char; 215 216 static int yy_n_chars; /* number of characters read into yy_ch_buf */ 217 218 219 int yyleng; 220 221 /* Points to current character in buffer. */ 222 static char *yy_c_buf_p = (char *) 0; 223 static int yy_init = 1; /* whether we need to initialize */ 224 static int yy_start = 0; /* start state number */ 225 226 /* Flag which is used to allow yywrap()'s to do buffer switches 227 * instead of setting up a fresh yyin. A bit of a hack ... 228 */ 229 static int yy_did_buffer_switch_on_eof; 230 231 void yyrestart YY_PROTO(( FILE *input_file )); 232 233 void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer )); 234 void yy_load_buffer_state YY_PROTO(( void )); 235 YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size )); 236 void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b )); 237 void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file )); 238 void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b )); 239 #define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer ) 240 241 YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size )); 242 YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str )); 243 YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len )); 244 245 static void *yy_flex_alloc YY_PROTO(( yy_size_t )); 246 static void *yy_flex_realloc YY_PROTO(( void *, yy_size_t )); 247 static void yy_flex_free YY_PROTO(( void * )); 248 249 #define yy_new_buffer yy_create_buffer 250 251 #define yy_set_interactive(is_interactive) \ 252 { \ 253 if ( ! yy_current_buffer ) \ 254 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ 255 yy_current_buffer->yy_is_interactive = is_interactive; \ 256 } 257 258 #define yy_set_bol(at_bol) \ 259 { \ 260 if ( ! yy_current_buffer ) \ 261 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \ 262 yy_current_buffer->yy_at_bol = at_bol; \ 263 } 264 265 #define YY_AT_BOL() (yy_current_buffer->yy_at_bol) 266 267 typedef unsigned char YY_CHAR; 268 FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; 269 typedef int yy_state_type; 270 extern char *yytext; 271 #define yytext_ptr yytext 272 273 static yy_state_type yy_get_previous_state YY_PROTO(( void )); 274 static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state )); 275 static int yy_get_next_buffer YY_PROTO(( void )); 276 static void yy_fatal_error YY_PROTO(( yyconst char msg[] )); 277 278 /* Done after the current pattern has been matched and before the 279 * corresponding action - sets up yytext. 280 */ 281 #define YY_DO_BEFORE_ACTION \ 282 yytext_ptr = yy_bp; \ 283 yyleng = (int) (yy_cp - yy_bp); \ 284 yy_hold_char = *yy_cp; \ 285 *yy_cp = '\0'; \ 286 yy_c_buf_p = yy_cp; 287 288 #define YY_NUM_RULES 40 289 #define YY_END_OF_BUFFER 41 290 static yyconst short int yy_accept[197] = 291 { 0, 292 0, 0, 41, 40, 34, 35, 33, 40, 28, 40, 293 31, 39, 37, 27, 32, 36, 38, 28, 28, 28, 294 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 295 28, 28, 0, 29, 28, 0, 30, 31, 27, 32, 296 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 297 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 298 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 299 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 300 28, 28, 28, 28, 28, 12, 6, 28, 7, 28, 301 28, 28, 28, 28, 28, 28, 28, 1, 28, 28, 302 303 28, 16, 28, 28, 28, 28, 28, 28, 28, 28, 304 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 305 28, 28, 28, 28, 28, 28, 28, 28, 28, 17, 306 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 307 14, 28, 28, 28, 19, 21, 28, 28, 28, 28, 308 28, 28, 18, 9, 28, 10, 28, 28, 2, 28, 309 28, 15, 28, 28, 28, 28, 11, 13, 28, 5, 310 28, 28, 22, 28, 8, 28, 28, 28, 28, 28, 311 28, 20, 4, 28, 28, 28, 24, 28, 26, 28, 312 3, 28, 28, 23, 25, 0 313 314 } ; 315 316 static yyconst int yy_ec[256] = 317 { 0, 318 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 319 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 320 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 321 1, 4, 1, 5, 1, 6, 1, 1, 7, 1, 322 1, 8, 1, 9, 6, 10, 11, 12, 12, 12, 323 12, 12, 12, 12, 12, 12, 12, 6, 13, 1, 324 14, 1, 6, 15, 16, 17, 18, 19, 20, 21, 325 22, 23, 24, 6, 25, 26, 27, 28, 29, 30, 326 6, 31, 32, 33, 34, 35, 36, 37, 38, 39, 327 1, 1, 1, 1, 6, 1, 21, 21, 21, 21, 328 329 21, 21, 6, 6, 6, 6, 6, 6, 6, 6, 330 6, 6, 6, 6, 6, 6, 6, 6, 6, 21, 331 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 332 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 333 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 334 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 335 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 336 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 337 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 338 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 339 340 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 341 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 342 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 343 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 344 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 345 1, 1, 1, 1, 1 346 } ; 347 348 static yyconst int yy_meta[40] = 349 { 0, 350 1, 1, 2, 1, 1, 3, 1, 1, 1, 1, 351 4, 5, 1, 1, 4, 6, 6, 6, 6, 6, 352 6, 3, 3, 3, 3, 3, 3, 3, 3, 3, 353 3, 3, 3, 3, 3, 3, 3, 3, 3 354 } ; 355 356 static yyconst short int yy_base[204] = 357 { 0, 358 0, 0, 228, 229, 229, 229, 229, 222, 0, 219, 359 0, 229, 229, 0, 0, 229, 0, 209, 195, 24, 360 186, 202, 14, 197, 186, 27, 188, 198, 25, 197, 361 196, 184, 209, 229, 0, 206, 229, 0, 0, 0, 362 0, 180, 27, 178, 178, 27, 193, 178, 183, 189, 363 179, 177, 175, 178, 185, 182, 183, 170, 181, 165, 364 164, 170, 173, 172, 159, 174, 171, 170, 158, 156, 365 156, 151, 152, 149, 161, 34, 145, 160, 145, 146, 366 154, 157, 147, 141, 139, 0, 0, 138, 0, 139, 367 135, 137, 135, 135, 29, 149, 140, 0, 136, 139, 368 369 145, 0, 136, 139, 132, 132, 30, 132, 135, 138, 370 129, 119, 118, 126, 116, 122, 119, 115, 115, 124, 371 127, 109, 112, 121, 119, 106, 111, 108, 106, 0, 372 106, 103, 112, 99, 91, 97, 99, 95, 88, 99, 373 0, 93, 103, 94, 0, 0, 97, 91, 87, 90, 374 84, 83, 0, 0, 95, 0, 97, 80, 0, 92, 375 91, 0, 78, 70, 91, 74, 0, 0, 82, 0, 376 89, 88, 0, 84, 0, 82, 85, 83, 69, 66, 377 56, 0, 0, 39, 36, 35, 0, 44, 0, 43, 378 0, 40, 39, 0, 0, 229, 66, 70, 76, 82, 379 380 84, 90, 94 381 } ; 382 383 static yyconst short int yy_def[204] = 384 { 0, 385 196, 1, 196, 196, 196, 196, 196, 197, 198, 199, 386 200, 196, 196, 201, 202, 196, 203, 198, 198, 198, 387 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 388 198, 198, 197, 196, 198, 199, 196, 200, 201, 202, 389 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 390 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 391 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 392 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 393 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 394 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 395 396 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 397 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 398 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 399 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 400 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 401 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 402 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 403 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 404 198, 198, 198, 198, 198, 198, 198, 198, 198, 198, 405 198, 198, 198, 198, 198, 0, 196, 196, 196, 196, 406 407 196, 196, 196 408 } ; 409 410 static yyconst short int yy_nxt[269] = 411 { 0, 412 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 413 4, 14, 15, 16, 17, 9, 18, 19, 20, 21, 414 9, 9, 22, 23, 9, 24, 25, 26, 9, 27, 415 28, 29, 30, 9, 31, 32, 9, 9, 9, 44, 416 48, 49, 52, 45, 56, 64, 68, 57, 58, 99, 417 116, 127, 117, 128, 65, 53, 69, 59, 195, 194, 418 193, 192, 191, 190, 189, 100, 33, 33, 33, 33, 419 33, 33, 35, 35, 35, 35, 36, 36, 36, 36, 420 36, 36, 38, 188, 38, 38, 38, 38, 39, 39, 421 40, 187, 40, 40, 40, 40, 41, 186, 185, 41, 422 423 184, 183, 182, 181, 180, 179, 178, 177, 176, 175, 424 174, 173, 172, 171, 170, 169, 168, 167, 166, 165, 425 164, 163, 162, 161, 160, 159, 158, 157, 156, 155, 426 154, 153, 152, 151, 150, 149, 148, 147, 146, 145, 427 144, 143, 142, 141, 140, 139, 138, 137, 136, 135, 428 134, 133, 132, 131, 130, 129, 126, 125, 124, 123, 429 122, 121, 120, 119, 118, 115, 114, 113, 112, 111, 430 110, 109, 108, 107, 106, 105, 104, 103, 102, 101, 431 98, 97, 96, 95, 94, 93, 92, 91, 90, 89, 432 88, 87, 86, 85, 84, 83, 82, 81, 80, 79, 433 434 78, 77, 76, 75, 74, 73, 72, 71, 70, 67, 435 66, 63, 37, 34, 62, 61, 60, 55, 54, 51, 436 50, 47, 46, 43, 42, 37, 34, 196, 3, 196, 437 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 438 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 439 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 440 196, 196, 196, 196, 196, 196, 196, 196 441 } ; 442 443 static yyconst short int yy_chk[269] = 444 { 0, 445 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 446 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 447 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 448 1, 1, 1, 1, 1, 1, 1, 1, 1, 20, 449 23, 23, 26, 20, 29, 43, 46, 29, 29, 76, 450 95, 107, 95, 107, 43, 26, 46, 29, 193, 192, 451 190, 188, 186, 185, 184, 76, 197, 197, 197, 197, 452 197, 197, 198, 198, 198, 198, 199, 199, 199, 199, 453 199, 199, 200, 181, 200, 200, 200, 200, 201, 201, 454 202, 180, 202, 202, 202, 202, 203, 179, 178, 203, 455 456 177, 176, 174, 172, 171, 169, 166, 165, 164, 163, 457 161, 160, 158, 157, 155, 152, 151, 150, 149, 148, 458 147, 144, 143, 142, 140, 139, 138, 137, 136, 135, 459 134, 133, 132, 131, 129, 128, 127, 126, 125, 124, 460 123, 122, 121, 120, 119, 118, 117, 116, 115, 114, 461 113, 112, 111, 110, 109, 108, 106, 105, 104, 103, 462 101, 100, 99, 97, 96, 94, 93, 92, 91, 90, 463 88, 85, 84, 83, 82, 81, 80, 79, 78, 77, 464 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, 465 65, 64, 63, 62, 61, 60, 59, 58, 57, 56, 466 467 55, 54, 53, 52, 51, 50, 49, 48, 47, 45, 468 44, 42, 36, 33, 32, 31, 30, 28, 27, 25, 469 24, 22, 21, 19, 18, 10, 8, 3, 196, 196, 470 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 471 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 472 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, 473 196, 196, 196, 196, 196, 196, 196, 196 474 } ; 475 476 static yy_state_type yy_last_accepting_state; 477 static char *yy_last_accepting_cpos; 478 479 /* The intent behind this definition is that it'll catch 480 * any uses of REJECT which flex missed. 481 */ 482 #define REJECT reject_used_but_not_detected 483 #define yymore() yymore_used_but_not_detected 484 #define YY_MORE_ADJ 0 485 #define YY_RESTORE_YY_MORE_OFFSET 486 char *yytext; 487 #line 1 "deflex.l" 488 #define INITIAL 0 489 #line 2 "deflex.l" 490 491 /* Copyright 1995, 1997, 1998, 1999, 2002, 2003, 2004 492 Free Software Foundation, Inc. 493 494 This file is part of GNU Binutils. 495 496 This program is free software; you can redistribute it and/or modify 497 it under the terms of the GNU General Public License as published by 498 the Free Software Foundation; either version 2 of the License, or 499 (at your option) any later version. 500 501 This program is distributed in the hope that it will be useful, 502 but WITHOUT ANY WARRANTY; without even the implied warranty of 503 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 504 GNU General Public License for more details. 505 506 You should have received a copy of the GNU General Public License 507 along with this program; if not, write to the Free Software 508 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ 509 510 511 /* Contributed by Steve Chamberlain: sac@cygnus.com */ 512 513 #define DONTDECLARE_MALLOC 514 #include "libiberty.h" 515 #include "defparse.h" 516 #include "dlltool.h" 517 518 int linenumber; 519 520 #line 521 "lex.yy.c" 521 522 /* Macros after this point can all be overridden by user definitions in 523 * section 1. 524 */ 525 526 #ifndef YY_SKIP_YYWRAP 527 #ifdef __cplusplus 528 extern "C" int yywrap YY_PROTO(( void )); 529 #else 530 extern int yywrap YY_PROTO(( void )); 531 #endif 532 #endif 533 534 #ifndef YY_NO_UNPUT 535 static void yyunput YY_PROTO(( int c, char *buf_ptr )); 536 #endif 537 538 #ifndef yytext_ptr 539 static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int )); 540 #endif 541 542 #ifdef YY_NEED_STRLEN 543 static int yy_flex_strlen YY_PROTO(( yyconst char * )); 544 #endif 545 546 #ifndef YY_NO_INPUT 547 #ifdef __cplusplus 548 static int yyinput YY_PROTO(( void )); 549 #else 550 static int input YY_PROTO(( void )); 551 #endif 552 #endif 553 554 #if YY_STACK_USED 555 static int yy_start_stack_ptr = 0; 556 static int yy_start_stack_depth = 0; 557 static int *yy_start_stack = 0; 558 #ifndef YY_NO_PUSH_STATE 559 static void yy_push_state YY_PROTO(( int new_state )); 560 #endif 561 #ifndef YY_NO_POP_STATE 562 static void yy_pop_state YY_PROTO(( void )); 563 #endif 564 #ifndef YY_NO_TOP_STATE 565 static int yy_top_state YY_PROTO(( void )); 566 #endif 567 568 #else 569 #define YY_NO_PUSH_STATE 1 570 #define YY_NO_POP_STATE 1 571 #define YY_NO_TOP_STATE 1 572 #endif 573 574 #ifdef YY_MALLOC_DECL 575 YY_MALLOC_DECL 576 #else 577 #if __STDC__ 578 #ifndef __cplusplus 579 #include <stdlib.h> 580 #endif 581 #else 582 /* Just try to get by without declaring the routines. This will fail 583 * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int) 584 * or sizeof(void*) != sizeof(int). 585 */ 586 #endif 587 #endif 588 589 /* Amount of stuff to slurp up with each read. */ 590 #ifndef YY_READ_BUF_SIZE 591 #define YY_READ_BUF_SIZE 8192 592 #endif 593 594 /* Copy whatever the last rule matched to the standard output. */ 595 596 #ifndef ECHO 597 /* This used to be an fputs(), but since the string might contain NUL's, 598 * we now use fwrite(). 599 */ 600 #define ECHO (void) fwrite( yytext, yyleng, 1, yyout ) 601 #endif 602 603 /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, 604 * is returned in "result". 605 */ 606 #ifndef YY_INPUT 607 #define YY_INPUT(buf,result,max_size) \ 608 if ( yy_current_buffer->yy_is_interactive ) \ 609 { \ 610 int c = '*', n; \ 611 for ( n = 0; n < max_size && \ 612 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ 613 buf[n] = (char) c; \ 614 if ( c == '\n' ) \ 615 buf[n++] = (char) c; \ 616 if ( c == EOF && ferror( yyin ) ) \ 617 YY_FATAL_ERROR( "input in flex scanner failed" ); \ 618 result = n; \ 619 } \ 620 else \ 621 { \ 622 errno=0; \ 623 while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ 624 { \ 625 if( errno != EINTR) \ 626 { \ 627 YY_FATAL_ERROR( "input in flex scanner failed" ); \ 628 break; \ 629 } \ 630 errno=0; \ 631 clearerr(yyin); \ 632 } \ 633 } 634 #endif 635 636 /* No semi-colon after return; correct usage is to write "yyterminate();" - 637 * we don't want an extra ';' after the "return" because that will cause 638 * some compilers to complain about unreachable statements. 639 */ 640 #ifndef yyterminate 641 #define yyterminate() return YY_NULL 642 #endif 643 644 /* Number of entries by which start-condition stack grows. */ 645 #ifndef YY_START_STACK_INCR 646 #define YY_START_STACK_INCR 25 647 #endif 648 649 /* Report a fatal error. */ 650 #ifndef YY_FATAL_ERROR 651 #define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) 652 #endif 653 654 /* Default declaration of generated scanner - a define so the user can 655 * easily add parameters. 656 */ 657 #ifndef YY_DECL 658 #define YY_DECL int yylex YY_PROTO(( void )) 659 #endif 660 661 /* Code executed at the beginning of each rule, after yytext and yyleng 662 * have been set up. 663 */ 664 #ifndef YY_USER_ACTION 665 #define YY_USER_ACTION 666 #endif 667 668 /* Code executed at the end of each rule. */ 669 #ifndef YY_BREAK 670 #define YY_BREAK break; 671 #endif 672 673 #define YY_RULE_SETUP \ 674 YY_USER_ACTION 675 676 YY_DECL 677 { 678 register yy_state_type yy_current_state; 679 register char *yy_cp, *yy_bp; 680 register int yy_act; 681 682 #line 33 "deflex.l" 683 684 #line 685 "lex.yy.c" 685 686 if ( yy_init ) 687 { 688 yy_init = 0; 689 690 #ifdef YY_USER_INIT 691 YY_USER_INIT; 692 #endif 693 694 if ( ! yy_start ) 695 yy_start = 1; /* first start state */ 696 697 if ( ! yyin ) 698 yyin = stdin; 699 700 if ( ! yyout ) 701 yyout = stdout; 702 703 if ( ! yy_current_buffer ) 704 yy_current_buffer = 705 yy_create_buffer( yyin, YY_BUF_SIZE ); 706 707 yy_load_buffer_state(); 708 } 709 710 while ( 1 ) /* loops until end-of-file is reached */ 711 { 712 yy_cp = yy_c_buf_p; 713 714 /* Support of yytext. */ 715 *yy_cp = yy_hold_char; 716 717 /* yy_bp points to the position in yy_ch_buf of the start of 718 * the current run. 719 */ 720 yy_bp = yy_cp; 721 722 yy_current_state = yy_start; 723 yy_match: 724 do 725 { 726 register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; 727 if ( yy_accept[yy_current_state] ) 728 { 729 yy_last_accepting_state = yy_current_state; 730 yy_last_accepting_cpos = yy_cp; 731 } 732 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) 733 { 734 yy_current_state = (int) yy_def[yy_current_state]; 735 if ( yy_current_state >= 197 ) 736 yy_c = yy_meta[(unsigned int) yy_c]; 737 } 738 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; 739 ++yy_cp; 740 } 741 while ( yy_base[yy_current_state] != 229 ); 742 743 yy_find_action: 744 yy_act = yy_accept[yy_current_state]; 745 if ( yy_act == 0 ) 746 { /* have to back up */ 747 yy_cp = yy_last_accepting_cpos; 748 yy_current_state = yy_last_accepting_state; 749 yy_act = yy_accept[yy_current_state]; 750 } 751 752 YY_DO_BEFORE_ACTION; 753 754 755 do_action: /* This label is used only to access EOF actions. */ 756 757 758 switch ( yy_act ) 759 { /* beginning of action switch */ 760 case 0: /* must back up */ 761 /* undo the effects of YY_DO_BEFORE_ACTION */ 762 *yy_cp = yy_hold_char; 763 yy_cp = yy_last_accepting_cpos; 764 yy_current_state = yy_last_accepting_state; 765 goto yy_find_action; 766 767 case 1: 768 YY_RULE_SETUP 769 #line 34 "deflex.l" 770 { return NAME;} 771 YY_BREAK 772 case 2: 773 YY_RULE_SETUP 774 #line 35 "deflex.l" 775 { return LIBRARY;} 776 YY_BREAK 777 case 3: 778 YY_RULE_SETUP 779 #line 36 "deflex.l" 780 { return DESCRIPTION;} 781 YY_BREAK 782 case 4: 783 YY_RULE_SETUP 784 #line 37 "deflex.l" 785 { return STACKSIZE;} 786 YY_BREAK 787 case 5: 788 YY_RULE_SETUP 789 #line 38 "deflex.l" 790 { return HEAPSIZE;} 791 YY_BREAK 792 case 6: 793 YY_RULE_SETUP 794 #line 39 "deflex.l" 795 { return CODE;} 796 YY_BREAK 797 case 7: 798 YY_RULE_SETUP 799 #line 40 "deflex.l" 800 { return DATA;} 801 YY_BREAK 802 case 8: 803 YY_RULE_SETUP 804 #line 41 "deflex.l" 805 { return SECTIONS;} 806 YY_BREAK 807 case 9: 808 YY_RULE_SETUP 809 #line 42 "deflex.l" 810 { return EXPORTS;} 811 YY_BREAK 812 case 10: 813 YY_RULE_SETUP 814 #line 43 "deflex.l" 815 { return IMPORTS;} 816 YY_BREAK 817 case 11: 818 YY_RULE_SETUP 819 #line 44 "deflex.l" 820 { return VERSIONK;} 821 YY_BREAK 822 case 12: 823 YY_RULE_SETUP 824 #line 45 "deflex.l" 825 { return BASE;} 826 YY_BREAK 827 case 13: 828 YY_RULE_SETUP 829 #line 46 "deflex.l" 830 { return CONSTANT; } 831 YY_BREAK 832 case 14: 833 YY_RULE_SETUP 834 #line 47 "deflex.l" 835 { return NONAME; } 836 YY_BREAK 837 case 15: 838 YY_RULE_SETUP 839 #line 48 "deflex.l" 840 { return PRIVATE; } 841 YY_BREAK 842 case 16: 843 YY_RULE_SETUP 844 #line 49 "deflex.l" 845 { return READ;} 846 YY_BREAK 847 case 17: 848 YY_RULE_SETUP 849 #line 50 "deflex.l" 850 { return WRITE;} 851 YY_BREAK 852 case 18: 853 YY_RULE_SETUP 854 #line 51 "deflex.l" 855 { return EXECUTE;} 856 YY_BREAK 857 case 19: 858 YY_RULE_SETUP 859 #line 52 "deflex.l" 860 { return SHARED;} 861 YY_BREAK 862 case 20: 863 YY_RULE_SETUP 864 #line 53 "deflex.l" 865 { return NONSHARED;} 866 YY_BREAK 867 case 21: 868 YY_RULE_SETUP 869 #line 54 "deflex.l" 870 { return SINGLE;} 871 YY_BREAK 872 case 22: 873 YY_RULE_SETUP 874 #line 55 "deflex.l" 875 { return MULTIPLE;} 876 YY_BREAK 877 case 23: 878 YY_RULE_SETUP 879 #line 56 "deflex.l" 880 { return INITINSTANCE;} 881 YY_BREAK 882 case 24: 883 YY_RULE_SETUP 884 #line 57 "deflex.l" 885 { return INITGLOBAL;} 886 YY_BREAK 887 case 25: 888 YY_RULE_SETUP 889 #line 58 "deflex.l" 890 { return TERMINSTANCE;} 891 YY_BREAK 892 case 26: 893 YY_RULE_SETUP 894 #line 59 "deflex.l" 895 { return TERMGLOBAL;} 896 YY_BREAK 897 case 27: 898 YY_RULE_SETUP 899 #line 61 "deflex.l" 900 { yylval.number = strtol (yytext,0,0); 901 return NUMBER; } 902 YY_BREAK 903 case 28: 904 YY_RULE_SETUP 905 #line 64 "deflex.l" 906 { 907 yylval.id = xstrdup (yytext); 908 return ID; 909 } 910 YY_BREAK 911 case 29: 912 YY_RULE_SETUP 913 #line 69 "deflex.l" 914 { 915 yylval.id = xstrdup (yytext+1); 916 yylval.id[yyleng-2] = 0; 917 return ID; 918 } 919 YY_BREAK 920 case 30: 921 YY_RULE_SETUP 922 #line 75 "deflex.l" 923 { 924 yylval.id = xstrdup (yytext+1); 925 yylval.id[yyleng-2] = 0; 926 return ID; 927 } 928 YY_BREAK 929 case 31: 930 YY_RULE_SETUP 931 #line 80 "deflex.l" 932 { } 933 YY_BREAK 934 case 32: 935 YY_RULE_SETUP 936 #line 81 "deflex.l" 937 { } 938 YY_BREAK 939 case 33: 940 YY_RULE_SETUP 941 #line 82 "deflex.l" 942 { } 943 YY_BREAK 944 case 34: 945 YY_RULE_SETUP 946 #line 83 "deflex.l" 947 { } 948 YY_BREAK 949 case 35: 950 YY_RULE_SETUP 951 #line 84 "deflex.l" 952 { linenumber ++ ;} 953 YY_BREAK 954 case 36: 955 YY_RULE_SETUP 956 #line 85 "deflex.l" 957 { return '=';} 958 YY_BREAK 959 case 37: 960 YY_RULE_SETUP 961 #line 86 "deflex.l" 962 { return '.';} 963 YY_BREAK 964 case 38: 965 YY_RULE_SETUP 966 #line 87 "deflex.l" 967 { return '@';} 968 YY_BREAK 969 case 39: 970 YY_RULE_SETUP 971 #line 88 "deflex.l" 972 { return ',';} 973 YY_BREAK 974 case 40: 975 YY_RULE_SETUP 976 #line 89 "deflex.l" 977 ECHO; 978 YY_BREAK 979 #line 980 "lex.yy.c" 980 case YY_STATE_EOF(INITIAL): 981 yyterminate(); 982 983 case YY_END_OF_BUFFER: 984 { 985 /* Amount of text matched not including the EOB char. */ 986 int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1; 987 988 /* Undo the effects of YY_DO_BEFORE_ACTION. */ 989 *yy_cp = yy_hold_char; 990 YY_RESTORE_YY_MORE_OFFSET 991 992 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW ) 993 { 994 /* We're scanning a new file or input source. It's 995 * possible that this happened because the user 996 * just pointed yyin at a new source and called 997 * yylex(). If so, then we have to assure 998 * consistency between yy_current_buffer and our 999 * globals. Here is the right place to do so, because 1000 * this is the first action (other than possibly a 1001 * back-up) that will match for the new input source. 1002 */ 1003 yy_n_chars = yy_current_buffer->yy_n_chars; 1004 yy_current_buffer->yy_input_file = yyin; 1005 yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL; 1006 } 1007 1008 /* Note that here we test for yy_c_buf_p "<=" to the position 1009 * of the first EOB in the buffer, since yy_c_buf_p will 1010 * already have been incremented past the NUL character 1011 * (since all states make transitions on EOB to the 1012 * end-of-buffer state). Contrast this with the test 1013 * in input(). 1014 */ 1015 if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] ) 1016 { /* This was really a NUL. */ 1017 yy_state_type yy_next_state; 1018 1019 yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text; 1020 1021 yy_current_state = yy_get_previous_state(); 1022 1023 /* Okay, we're now positioned to make the NUL 1024 * transition. We couldn't have 1025 * yy_get_previous_state() go ahead and do it 1026 * for us because it doesn't know how to deal 1027 * with the possibility of jamming (and we don't 1028 * want to build jamming into it because then it 1029 * will run more slowly). 1030 */ 1031 1032 yy_next_state = yy_try_NUL_trans( yy_current_state ); 1033 1034 yy_bp = yytext_ptr + YY_MORE_ADJ; 1035 1036 if ( yy_next_state ) 1037 { 1038 /* Consume the NUL. */ 1039 yy_cp = ++yy_c_buf_p; 1040 yy_current_state = yy_next_state; 1041 goto yy_match; 1042 } 1043 1044 else 1045 { 1046 yy_cp = yy_c_buf_p; 1047 goto yy_find_action; 1048 } 1049 } 1050 1051 else switch ( yy_get_next_buffer() ) 1052 { 1053 case EOB_ACT_END_OF_FILE: 1054 { 1055 yy_did_buffer_switch_on_eof = 0; 1056 1057 if ( yywrap() ) 1058 { 1059 /* Note: because we've taken care in 1060 * yy_get_next_buffer() to have set up 1061 * yytext, we can now set up 1062 * yy_c_buf_p so that if some total 1063 * hoser (like flex itself) wants to 1064 * call the scanner after we return the 1065 * YY_NULL, it'll still work - another 1066 * YY_NULL will get returned. 1067 */ 1068 yy_c_buf_p = yytext_ptr + YY_MORE_ADJ; 1069 1070 yy_act = YY_STATE_EOF(YY_START); 1071 goto do_action; 1072 } 1073 1074 else 1075 { 1076 if ( ! yy_did_buffer_switch_on_eof ) 1077 YY_NEW_FILE; 1078 } 1079 break; 1080 } 1081 1082 case EOB_ACT_CONTINUE_SCAN: 1083 yy_c_buf_p = 1084 yytext_ptr + yy_amount_of_matched_text; 1085 1086 yy_current_state = yy_get_previous_state(); 1087 1088 yy_cp = yy_c_buf_p; 1089 yy_bp = yytext_ptr + YY_MORE_ADJ; 1090 goto yy_match; 1091 1092 case EOB_ACT_LAST_MATCH: 1093 yy_c_buf_p = 1094 &yy_current_buffer->yy_ch_buf[yy_n_chars]; 1095 1096 yy_current_state = yy_get_previous_state(); 1097 1098 yy_cp = yy_c_buf_p; 1099 yy_bp = yytext_ptr + YY_MORE_ADJ; 1100 goto yy_find_action; 1101 } 1102 break; 1103 } 1104 1105 default: 1106 YY_FATAL_ERROR( 1107 "fatal flex scanner internal error--no action found" ); 1108 } /* end of action switch */ 1109 } /* end of scanning one token */ 1110 } /* end of yylex */ 1111 1112 1113 /* yy_get_next_buffer - try to read in a new buffer 1114 * 1115 * Returns a code representing an action: 1116 * EOB_ACT_LAST_MATCH - 1117 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position 1118 * EOB_ACT_END_OF_FILE - end of file 1119 */ 1120 1121 static int yy_get_next_buffer() 1122 { 1123 register char *dest = yy_current_buffer->yy_ch_buf; 1124 register char *source = yytext_ptr; 1125 register int number_to_move, i; 1126 int ret_val; 1127 1128 if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] ) 1129 YY_FATAL_ERROR( 1130 "fatal flex scanner internal error--end of buffer missed" ); 1131 1132 if ( yy_current_buffer->yy_fill_buffer == 0 ) 1133 { /* Don't try to fill the buffer, so this is an EOF. */ 1134 if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 ) 1135 { 1136 /* We matched a single character, the EOB, so 1137 * treat this as a final EOF. 1138 */ 1139 return EOB_ACT_END_OF_FILE; 1140 } 1141 1142 else 1143 { 1144 /* We matched some text prior to the EOB, first 1145 * process it. 1146 */ 1147 return EOB_ACT_LAST_MATCH; 1148 } 1149 } 1150 1151 /* Try to read more data. */ 1152 1153 /* First move last chars to start of buffer. */ 1154 number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1; 1155 1156 for ( i = 0; i < number_to_move; ++i ) 1157 *(dest++) = *(source++); 1158 1159 if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING ) 1160 /* don't do the read, it's not guaranteed to return an EOF, 1161 * just force an EOF 1162 */ 1163 yy_current_buffer->yy_n_chars = yy_n_chars = 0; 1164 1165 else 1166 { 1167 int num_to_read = 1168 yy_current_buffer->yy_buf_size - number_to_move - 1; 1169 1170 while ( num_to_read <= 0 ) 1171 { /* Not enough room in the buffer - grow it. */ 1172 #ifdef YY_USES_REJECT 1173 YY_FATAL_ERROR( 1174 "input buffer overflow, can't enlarge buffer because scanner uses REJECT" ); 1175 #else 1176 1177 /* just a shorter name for the current buffer */ 1178 YY_BUFFER_STATE b = yy_current_buffer; 1179 1180 int yy_c_buf_p_offset = 1181 (int) (yy_c_buf_p - b->yy_ch_buf); 1182 1183 if ( b->yy_is_our_buffer ) 1184 { 1185 int new_size = b->yy_buf_size * 2; 1186 1187 if ( new_size <= 0 ) 1188 b->yy_buf_size += b->yy_buf_size / 8; 1189 else 1190 b->yy_buf_size *= 2; 1191 1192 b->yy_ch_buf = (char *) 1193 /* Include room in for 2 EOB chars. */ 1194 yy_flex_realloc( (void *) b->yy_ch_buf, 1195 b->yy_buf_size + 2 ); 1196 } 1197 else 1198 /* Can't grow it, we don't own it. */ 1199 b->yy_ch_buf = 0; 1200 1201 if ( ! b->yy_ch_buf ) 1202 YY_FATAL_ERROR( 1203 "fatal error - scanner input buffer overflow" ); 1204 1205 yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; 1206 1207 num_to_read = yy_current_buffer->yy_buf_size - 1208 number_to_move - 1; 1209 #endif 1210 } 1211 1212 if ( num_to_read > YY_READ_BUF_SIZE ) 1213 num_to_read = YY_READ_BUF_SIZE; 1214 1215 /* Read in more data. */ 1216 YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]), 1217 yy_n_chars, num_to_read ); 1218 1219 yy_current_buffer->yy_n_chars = yy_n_chars; 1220 } 1221 1222 if ( yy_n_chars == 0 ) 1223 { 1224 if ( number_to_move == YY_MORE_ADJ ) 1225 { 1226 ret_val = EOB_ACT_END_OF_FILE; 1227 yyrestart( yyin ); 1228 } 1229 1230 else 1231 { 1232 ret_val = EOB_ACT_LAST_MATCH; 1233 yy_current_buffer->yy_buffer_status = 1234 YY_BUFFER_EOF_PENDING; 1235 } 1236 } 1237 1238 else 1239 ret_val = EOB_ACT_CONTINUE_SCAN; 1240 1241 yy_n_chars += number_to_move; 1242 yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR; 1243 yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; 1244 1245 yytext_ptr = &yy_current_buffer->yy_ch_buf[0]; 1246 1247 return ret_val; 1248 } 1249 1250 1251 /* yy_get_previous_state - get the state just before the EOB char was reached */ 1252 1253 static yy_state_type yy_get_previous_state() 1254 { 1255 register yy_state_type yy_current_state; 1256 register char *yy_cp; 1257 1258 yy_current_state = yy_start; 1259 1260 for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp ) 1261 { 1262 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); 1263 if ( yy_accept[yy_current_state] ) 1264 { 1265 yy_last_accepting_state = yy_current_state; 1266 yy_last_accepting_cpos = yy_cp; 1267 } 1268 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) 1269 { 1270 yy_current_state = (int) yy_def[yy_current_state]; 1271 if ( yy_current_state >= 197 ) 1272 yy_c = yy_meta[(unsigned int) yy_c]; 1273 } 1274 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; 1275 } 1276 1277 return yy_current_state; 1278 } 1279 1280 1281 /* yy_try_NUL_trans - try to make a transition on the NUL character 1282 * 1283 * synopsis 1284 * next_state = yy_try_NUL_trans( current_state ); 1285 */ 1286 1287 #ifdef YY_USE_PROTOS 1288 static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state ) 1289 #else 1290 static yy_state_type yy_try_NUL_trans( yy_current_state ) 1291 yy_state_type yy_current_state; 1292 #endif 1293 { 1294 register int yy_is_jam; 1295 register char *yy_cp = yy_c_buf_p; 1296 1297 register YY_CHAR yy_c = 1; 1298 if ( yy_accept[yy_current_state] ) 1299 { 1300 yy_last_accepting_state = yy_current_state; 1301 yy_last_accepting_cpos = yy_cp; 1302 } 1303 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) 1304 { 1305 yy_current_state = (int) yy_def[yy_current_state]; 1306 if ( yy_current_state >= 197 ) 1307 yy_c = yy_meta[(unsigned int) yy_c]; 1308 } 1309 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; 1310 yy_is_jam = (yy_current_state == 196); 1311 1312 return yy_is_jam ? 0 : yy_current_state; 1313 } 1314 1315 1316 #ifndef YY_NO_UNPUT 1317 #ifdef YY_USE_PROTOS 1318 static void yyunput( int c, register char *yy_bp ) 1319 #else 1320 static void yyunput( c, yy_bp ) 1321 int c; 1322 register char *yy_bp; 1323 #endif 1324 { 1325 register char *yy_cp = yy_c_buf_p; 1326 1327 /* undo effects of setting up yytext */ 1328 *yy_cp = yy_hold_char; 1329 1330 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) 1331 { /* need to shift things up to make room */ 1332 /* +2 for EOB chars. */ 1333 register int number_to_move = yy_n_chars + 2; 1334 register char *dest = &yy_current_buffer->yy_ch_buf[ 1335 yy_current_buffer->yy_buf_size + 2]; 1336 register char *source = 1337 &yy_current_buffer->yy_ch_buf[number_to_move]; 1338 1339 while ( source > yy_current_buffer->yy_ch_buf ) 1340 *--dest = *--source; 1341 1342 yy_cp += (int) (dest - source); 1343 yy_bp += (int) (dest - source); 1344 yy_current_buffer->yy_n_chars = 1345 yy_n_chars = yy_current_buffer->yy_buf_size; 1346 1347 if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) 1348 YY_FATAL_ERROR( "flex scanner push-back overflow" ); 1349 } 1350 1351 *--yy_cp = (char) c; 1352 1353 1354 yytext_ptr = yy_bp; 1355 yy_hold_char = *yy_cp; 1356 yy_c_buf_p = yy_cp; 1357 } 1358 #endif /* ifndef YY_NO_UNPUT */ 1359 1360 1361 #ifdef __cplusplus 1362 static int yyinput() 1363 #else 1364 static int input() 1365 #endif 1366 { 1367 int c; 1368 1369 *yy_c_buf_p = yy_hold_char; 1370 1371 if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR ) 1372 { 1373 /* yy_c_buf_p now points to the character we want to return. 1374 * If this occurs *before* the EOB characters, then it's a 1375 * valid NUL; if not, then we've hit the end of the buffer. 1376 */ 1377 if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] ) 1378 /* This was really a NUL. */ 1379 *yy_c_buf_p = '\0'; 1380 1381 else 1382 { /* need more input */ 1383 int offset = yy_c_buf_p - yytext_ptr; 1384 ++yy_c_buf_p; 1385 1386 switch ( yy_get_next_buffer() ) 1387 { 1388 case EOB_ACT_LAST_MATCH: 1389 /* This happens because yy_g_n_b() 1390 * sees that we've accumulated a 1391 * token and flags that we need to 1392 * try matching the token before 1393 * proceeding. But for input(), 1394 * there's no matching to consider. 1395 * So convert the EOB_ACT_LAST_MATCH 1396 * to EOB_ACT_END_OF_FILE. 1397 */ 1398 1399 /* Reset buffer status. */ 1400 yyrestart( yyin ); 1401 1402 /* fall through */ 1403 1404 case EOB_ACT_END_OF_FILE: 1405 { 1406 if ( yywrap() ) 1407 return EOF; 1408 1409 if ( ! yy_did_buffer_switch_on_eof ) 1410 YY_NEW_FILE; 1411 #ifdef __cplusplus 1412 return yyinput(); 1413 #else 1414 return input(); 1415 #endif 1416 } 1417 1418 case EOB_ACT_CONTINUE_SCAN: 1419 yy_c_buf_p = yytext_ptr + offset; 1420 break; 1421 } 1422 } 1423 } 1424 1425 c = *(unsigned char *) yy_c_buf_p; /* cast for 8-bit char's */ 1426 *yy_c_buf_p = '\0'; /* preserve yytext */ 1427 yy_hold_char = *++yy_c_buf_p; 1428 1429 1430 return c; 1431 } 1432 1433 1434 #ifdef YY_USE_PROTOS 1435 void yyrestart( FILE *input_file ) 1436 #else 1437 void yyrestart( input_file ) 1438 FILE *input_file; 1439 #endif 1440 { 1441 if ( ! yy_current_buffer ) 1442 yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); 1443 1444 yy_init_buffer( yy_current_buffer, input_file ); 1445 yy_load_buffer_state(); 1446 } 1447 1448 1449 #ifdef YY_USE_PROTOS 1450 void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer ) 1451 #else 1452 void yy_switch_to_buffer( new_buffer ) 1453 YY_BUFFER_STATE new_buffer; 1454 #endif 1455 { 1456 if ( yy_current_buffer == new_buffer ) 1457 return; 1458 1459 if ( yy_current_buffer ) 1460 { 1461 /* Flush out information for old buffer. */ 1462 *yy_c_buf_p = yy_hold_char; 1463 yy_current_buffer->yy_buf_pos = yy_c_buf_p; 1464 yy_current_buffer->yy_n_chars = yy_n_chars; 1465 } 1466 1467 yy_current_buffer = new_buffer; 1468 yy_load_buffer_state(); 1469 1470 /* We don't actually know whether we did this switch during 1471 * EOF (yywrap()) processing, but the only time this flag 1472 * is looked at is after yywrap() is called, so it's safe 1473 * to go ahead and always set it. 1474 */ 1475 yy_did_buffer_switch_on_eof = 1; 1476 } 1477 1478 1479 #ifdef YY_USE_PROTOS 1480 void yy_load_buffer_state( void ) 1481 #else 1482 void yy_load_buffer_state() 1483 #endif 1484 { 1485 yy_n_chars = yy_current_buffer->yy_n_chars; 1486 yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos; 1487 yyin = yy_current_buffer->yy_input_file; 1488 yy_hold_char = *yy_c_buf_p; 1489 } 1490 1491 1492 #ifdef YY_USE_PROTOS 1493 YY_BUFFER_STATE yy_create_buffer( FILE *file, int size ) 1494 #else 1495 YY_BUFFER_STATE yy_create_buffer( file, size ) 1496 FILE *file; 1497 int size; 1498 #endif 1499 { 1500 YY_BUFFER_STATE b; 1501 1502 b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); 1503 if ( ! b ) 1504 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); 1505 1506 b->yy_buf_size = size; 1507 1508 /* yy_ch_buf has to be 2 characters longer than the size given because 1509 * we need to put in 2 end-of-buffer characters. 1510 */ 1511 b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 ); 1512 if ( ! b->yy_ch_buf ) 1513 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); 1514 1515 b->yy_is_our_buffer = 1; 1516 1517 yy_init_buffer( b, file ); 1518 1519 return b; 1520 } 1521 1522 1523 #ifdef YY_USE_PROTOS 1524 void yy_delete_buffer( YY_BUFFER_STATE b ) 1525 #else 1526 void yy_delete_buffer( b ) 1527 YY_BUFFER_STATE b; 1528 #endif 1529 { 1530 if ( ! b ) 1531 return; 1532 1533 if ( b == yy_current_buffer ) 1534 yy_current_buffer = (YY_BUFFER_STATE) 0; 1535 1536 if ( b->yy_is_our_buffer ) 1537 yy_flex_free( (void *) b->yy_ch_buf ); 1538 1539 yy_flex_free( (void *) b ); 1540 } 1541 1542 1543 #ifndef _WIN32 1544 #include <unistd.h> 1545 #else 1546 #ifndef YY_ALWAYS_INTERACTIVE 1547 #ifndef YY_NEVER_INTERACTIVE 1548 extern int isatty YY_PROTO(( int )); 1549 #endif 1550 #endif 1551 #endif 1552 1553 #ifdef YY_USE_PROTOS 1554 void yy_init_buffer( YY_BUFFER_STATE b, FILE *file ) 1555 #else 1556 void yy_init_buffer( b, file ) 1557 YY_BUFFER_STATE b; 1558 FILE *file; 1559 #endif 1560 1561 1562 { 1563 yy_flush_buffer( b ); 1564 1565 b->yy_input_file = file; 1566 b->yy_fill_buffer = 1; 1567 1568 #if YY_ALWAYS_INTERACTIVE 1569 b->yy_is_interactive = 1; 1570 #else 1571 #if YY_NEVER_INTERACTIVE 1572 b->yy_is_interactive = 0; 1573 #else 1574 b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; 1575 #endif 1576 #endif 1577 } 1578 1579 1580 #ifdef YY_USE_PROTOS 1581 void yy_flush_buffer( YY_BUFFER_STATE b ) 1582 #else 1583 void yy_flush_buffer( b ) 1584 YY_BUFFER_STATE b; 1585 #endif 1586 1587 { 1588 if ( ! b ) 1589 return; 1590 1591 b->yy_n_chars = 0; 1592 1593 /* We always need two end-of-buffer characters. The first causes 1594 * a transition to the end-of-buffer state. The second causes 1595 * a jam in that state. 1596 */ 1597 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; 1598 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; 1599 1600 b->yy_buf_pos = &b->yy_ch_buf[0]; 1601 1602 b->yy_at_bol = 1; 1603 b->yy_buffer_status = YY_BUFFER_NEW; 1604 1605 if ( b == yy_current_buffer ) 1606 yy_load_buffer_state(); 1607 } 1608 1609 1610 #ifndef YY_NO_SCAN_BUFFER 1611 #ifdef YY_USE_PROTOS 1612 YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size ) 1613 #else 1614 YY_BUFFER_STATE yy_scan_buffer( base, size ) 1615 char *base; 1616 yy_size_t size; 1617 #endif 1618 { 1619 YY_BUFFER_STATE b; 1620 1621 if ( size < 2 || 1622 base[size-2] != YY_END_OF_BUFFER_CHAR || 1623 base[size-1] != YY_END_OF_BUFFER_CHAR ) 1624 /* They forgot to leave room for the EOB's. */ 1625 return 0; 1626 1627 b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) ); 1628 if ( ! b ) 1629 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); 1630 1631 b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ 1632 b->yy_buf_pos = b->yy_ch_buf = base; 1633 b->yy_is_our_buffer = 0; 1634 b->yy_input_file = 0; 1635 b->yy_n_chars = b->yy_buf_size; 1636 b->yy_is_interactive = 0; 1637 b->yy_at_bol = 1; 1638 b->yy_fill_buffer = 0; 1639 b->yy_buffer_status = YY_BUFFER_NEW; 1640 1641 yy_switch_to_buffer( b ); 1642 1643 return b; 1644 } 1645 #endif 1646 1647 1648 #ifndef YY_NO_SCAN_STRING 1649 #ifdef YY_USE_PROTOS 1650 YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str ) 1651 #else 1652 YY_BUFFER_STATE yy_scan_string( yy_str ) 1653 yyconst char *yy_str; 1654 #endif 1655 { 1656 int len; 1657 for ( len = 0; yy_str[len]; ++len ) 1658 ; 1659 1660 return yy_scan_bytes( yy_str, len ); 1661 } 1662 #endif 1663 1664 1665 #ifndef YY_NO_SCAN_BYTES 1666 #ifdef YY_USE_PROTOS 1667 YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len ) 1668 #else 1669 YY_BUFFER_STATE yy_scan_bytes( bytes, len ) 1670 yyconst char *bytes; 1671 int len; 1672 #endif 1673 { 1674 YY_BUFFER_STATE b; 1675 char *buf; 1676 yy_size_t n; 1677 int i; 1678 1679 /* Get memory for full buffer, including space for trailing EOB's. */ 1680 n = len + 2; 1681 buf = (char *) yy_flex_alloc( n ); 1682 if ( ! buf ) 1683 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); 1684 1685 for ( i = 0; i < len; ++i ) 1686 buf[i] = bytes[i]; 1687 1688 buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR; 1689 1690 b = yy_scan_buffer( buf, n ); 1691 if ( ! b ) 1692 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); 1693 1694 /* It's okay to grow etc. this buffer, and we should throw it 1695 * away when we're done. 1696 */ 1697 b->yy_is_our_buffer = 1; 1698 1699 return b; 1700 } 1701 #endif 1702 1703 1704 #ifndef YY_NO_PUSH_STATE 1705 #ifdef YY_USE_PROTOS 1706 static void yy_push_state( int new_state ) 1707 #else 1708 static void yy_push_state( new_state ) 1709 int new_state; 1710 #endif 1711 { 1712 if ( yy_start_stack_ptr >= yy_start_stack_depth ) 1713 { 1714 yy_size_t new_size; 1715 1716 yy_start_stack_depth += YY_START_STACK_INCR; 1717 new_size = yy_start_stack_depth * sizeof( int ); 1718 1719 if ( ! yy_start_stack ) 1720 yy_start_stack = (int *) yy_flex_alloc( new_size ); 1721 1722 else 1723 yy_start_stack = (int *) yy_flex_realloc( 1724 (void *) yy_start_stack, new_size ); 1725 1726 if ( ! yy_start_stack ) 1727 YY_FATAL_ERROR( 1728 "out of memory expanding start-condition stack" ); 1729 } 1730 1731 yy_start_stack[yy_start_stack_ptr++] = YY_START; 1732 1733 BEGIN(new_state); 1734 } 1735 #endif 1736 1737 1738 #ifndef YY_NO_POP_STATE 1739 static void yy_pop_state() 1740 { 1741 if ( --yy_start_stack_ptr < 0 ) 1742 YY_FATAL_ERROR( "start-condition stack underflow" ); 1743 1744 BEGIN(yy_start_stack[yy_start_stack_ptr]); 1745 } 1746 #endif 1747 1748 1749 #ifndef YY_NO_TOP_STATE 1750 static int yy_top_state() 1751 { 1752 return yy_start_stack[yy_start_stack_ptr - 1]; 1753 } 1754 #endif 1755 1756 #ifndef YY_EXIT_FAILURE 1757 #define YY_EXIT_FAILURE 2 1758 #endif 1759 1760 #ifdef YY_USE_PROTOS 1761 static void yy_fatal_error( yyconst char msg[] ) 1762 #else 1763 static void yy_fatal_error( msg ) 1764 char msg[]; 1765 #endif 1766 { 1767 (void) fprintf( stderr, "%s\n", msg ); 1768 exit( YY_EXIT_FAILURE ); 1769 } 1770 1771 1772 1773 /* Redefine yyless() so it works in section 3 code. */ 1774 1775 #undef yyless 1776 #define yyless(n) \ 1777 do \ 1778 { \ 1779 /* Undo effects of setting up yytext. */ \ 1780 yytext[yyleng] = yy_hold_char; \ 1781 yy_c_buf_p = yytext + n; \ 1782 yy_hold_char = *yy_c_buf_p; \ 1783 *yy_c_buf_p = '\0'; \ 1784 yyleng = n; \ 1785 } \ 1786 while ( 0 ) 1787 1788 1789 /* Internal utility routines. */ 1790 1791 #ifndef yytext_ptr 1792 #ifdef YY_USE_PROTOS 1793 static void yy_flex_strncpy( char *s1, yyconst char *s2, int n ) 1794 #else 1795 static void yy_flex_strncpy( s1, s2, n ) 1796 char *s1; 1797 yyconst char *s2; 1798 int n; 1799 #endif 1800 { 1801 register int i; 1802 for ( i = 0; i < n; ++i ) 1803 s1[i] = s2[i]; 1804 } 1805 #endif 1806 1807 #ifdef YY_NEED_STRLEN 1808 #ifdef YY_USE_PROTOS 1809 static int yy_flex_strlen( yyconst char *s ) 1810 #else 1811 static int yy_flex_strlen( s ) 1812 yyconst char *s; 1813 #endif 1814 { 1815 register int n; 1816 for ( n = 0; s[n]; ++n ) 1817 ; 1818 1819 return n; 1820 } 1821 #endif 1822 1823 1824 #ifdef YY_USE_PROTOS 1825 static void *yy_flex_alloc( yy_size_t size ) 1826 #else 1827 static void *yy_flex_alloc( size ) 1828 yy_size_t size; 1829 #endif 1830 { 1831 return (void *) malloc( size ); 1832 } 1833 1834 #ifdef YY_USE_PROTOS 1835 static void *yy_flex_realloc( void *ptr, yy_size_t size ) 1836 #else 1837 static void *yy_flex_realloc( ptr, size ) 1838 void *ptr; 1839 yy_size_t size; 1840 #endif 1841 { 1842 /* The cast to (char *) in the following accommodates both 1843 * implementations that use char* generic pointers, and those 1844 * that use void* generic pointers. It works with the latter 1845 * because both ANSI C and C++ allow castless assignment from 1846 * any pointer type to void*, and deal with argument conversions 1847 * as though doing an assignment. 1848 */ 1849 return (void *) realloc( (char *) ptr, size ); 1850 } 1851 1852 #ifdef YY_USE_PROTOS 1853 static void yy_flex_free( void *ptr ) 1854 #else 1855 static void yy_flex_free( ptr ) 1856 void *ptr; 1857 #endif 1858 { 1859 free( ptr ); 1860 } 1861 1862 #if YY_MAIN 1863 int main() 1864 { 1865 yylex(); 1866 return 0; 1867 } 1868 #endif 1869 #line 89 "deflex.l" 1870 1871 #ifndef yywrap 1872 /* Needed for lex, though not flex. */ 1873 int yywrap(void) { return 1; } 1874 #endif 1875