1 2#line 3 "bfin-lex.c" 3 4#define YY_INT_ALIGNED short int 5 6/* A lexical scanner generated by flex */ 7 8#define FLEX_SCANNER 9#define YY_FLEX_MAJOR_VERSION 2 10#define YY_FLEX_MINOR_VERSION 5 11#define YY_FLEX_SUBMINOR_VERSION 35 12#if YY_FLEX_SUBMINOR_VERSION > 0 13#define FLEX_BETA 14#endif 15 16/* First, we deal with platform-specific or compiler-specific issues. */ 17 18/* begin standard C headers. */ 19#include <stdio.h> 20#include <string.h> 21#include <errno.h> 22#include <stdlib.h> 23 24/* end standard C headers. */ 25 26/* flex integer type definitions */ 27 28#ifndef FLEXINT_H 29#define FLEXINT_H 30 31/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */ 32 33#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L 34 35/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, 36 * if you want the limit (max/min) macros for int types. 37 */ 38#ifndef __STDC_LIMIT_MACROS 39#define __STDC_LIMIT_MACROS 1 40#endif 41 42#include <inttypes.h> 43typedef int8_t flex_int8_t; 44typedef uint8_t flex_uint8_t; 45typedef int16_t flex_int16_t; 46typedef uint16_t flex_uint16_t; 47typedef int32_t flex_int32_t; 48typedef uint32_t flex_uint32_t; 49typedef uint64_t flex_uint64_t; 50#else 51typedef signed char flex_int8_t; 52typedef short int flex_int16_t; 53typedef int flex_int32_t; 54typedef unsigned char flex_uint8_t; 55typedef unsigned short int flex_uint16_t; 56typedef unsigned int flex_uint32_t; 57#endif /* ! C99 */ 58 59/* Limits of integral types. */ 60#ifndef INT8_MIN 61#define INT8_MIN (-128) 62#endif 63#ifndef INT16_MIN 64#define INT16_MIN (-32767-1) 65#endif 66#ifndef INT32_MIN 67#define INT32_MIN (-2147483647-1) 68#endif 69#ifndef INT8_MAX 70#define INT8_MAX (127) 71#endif 72#ifndef INT16_MAX 73#define INT16_MAX (32767) 74#endif 75#ifndef INT32_MAX 76#define INT32_MAX (2147483647) 77#endif 78#ifndef UINT8_MAX 79#define UINT8_MAX (255U) 80#endif 81#ifndef UINT16_MAX 82#define UINT16_MAX (65535U) 83#endif 84#ifndef UINT32_MAX 85#define UINT32_MAX (4294967295U) 86#endif 87 88#endif /* ! FLEXINT_H */ 89 90#ifdef __cplusplus 91 92/* The "const" storage-class-modifier is valid. */ 93#define YY_USE_CONST 94 95#else /* ! __cplusplus */ 96 97/* C99 requires __STDC__ to be defined as 1. */ 98#if defined (__STDC__) 99 100#define YY_USE_CONST 101 102#endif /* defined (__STDC__) */ 103#endif /* ! __cplusplus */ 104 105#ifdef YY_USE_CONST 106#define yyconst const 107#else 108#define yyconst 109#endif 110 111/* Returned upon end-of-file. */ 112#define YY_NULL 0 113 114/* Promotes a possibly negative, possibly signed char to an unsigned 115 * integer for use as an array index. If the signed char is negative, 116 * we want to instead treat it as an 8-bit unsigned char, hence the 117 * double cast. 118 */ 119#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) 120 121/* Enter a start condition. This macro really ought to take a parameter, 122 * but we do it the disgusting crufty way forced on us by the ()-less 123 * definition of BEGIN. 124 */ 125#define BEGIN (yy_start) = 1 + 2 * 126 127/* Translate the current start state into a value that can be later handed 128 * to BEGIN to return to the state. The YYSTATE alias is for lex 129 * compatibility. 130 */ 131#define YY_START (((yy_start) - 1) / 2) 132#define YYSTATE YY_START 133 134/* Action number for EOF rule of a given start state. */ 135#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) 136 137/* Special action meaning "start processing a new file". */ 138#define YY_NEW_FILE yyrestart(yyin ) 139 140#define YY_END_OF_BUFFER_CHAR 0 141 142/* Size of default input buffer. */ 143#ifndef YY_BUF_SIZE 144#define YY_BUF_SIZE 16384 145#endif 146 147/* The state buf must be large enough to hold one state per character in the main buffer. 148 */ 149#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) 150 151#ifndef YY_TYPEDEF_YY_BUFFER_STATE 152#define YY_TYPEDEF_YY_BUFFER_STATE 153typedef struct yy_buffer_state *YY_BUFFER_STATE; 154#endif 155 156#ifndef YY_TYPEDEF_YY_SIZE_T 157#define YY_TYPEDEF_YY_SIZE_T 158typedef size_t yy_size_t; 159#endif 160 161extern yy_size_t yyleng; 162 163extern FILE *yyin, *yyout; 164 165#define EOB_ACT_CONTINUE_SCAN 0 166#define EOB_ACT_END_OF_FILE 1 167#define EOB_ACT_LAST_MATCH 2 168 169 #define YY_LESS_LINENO(n) 170 171/* Return all but the first "n" matched characters back to the input stream. */ 172#define yyless(n) \ 173 do \ 174 { \ 175 /* Undo effects of setting up yytext. */ \ 176 int yyless_macro_arg = (n); \ 177 YY_LESS_LINENO(yyless_macro_arg);\ 178 *yy_cp = (yy_hold_char); \ 179 YY_RESTORE_YY_MORE_OFFSET \ 180 (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ 181 YY_DO_BEFORE_ACTION; /* set up yytext again */ \ 182 } \ 183 while ( 0 ) 184 185#define unput(c) yyunput( c, (yytext_ptr) ) 186 187#ifndef YY_STRUCT_YY_BUFFER_STATE 188#define YY_STRUCT_YY_BUFFER_STATE 189struct yy_buffer_state 190 { 191 FILE *yy_input_file; 192 193 char *yy_ch_buf; /* input buffer */ 194 char *yy_buf_pos; /* current position in input buffer */ 195 196 /* Size of input buffer in bytes, not including room for EOB 197 * characters. 198 */ 199 yy_size_t yy_buf_size; 200 201 /* Number of characters read into yy_ch_buf, not including EOB 202 * characters. 203 */ 204 yy_size_t yy_n_chars; 205 206 /* Whether we "own" the buffer - i.e., we know we created it, 207 * and can realloc() it to grow it, and should free() it to 208 * delete it. 209 */ 210 int yy_is_our_buffer; 211 212 /* Whether this is an "interactive" input source; if so, and 213 * if we're using stdio for input, then we want to use getc() 214 * instead of fread(), to make sure we stop fetching input after 215 * each newline. 216 */ 217 int yy_is_interactive; 218 219 /* Whether we're considered to be at the beginning of a line. 220 * If so, '^' rules will be active on the next match, otherwise 221 * not. 222 */ 223 int yy_at_bol; 224 225 int yy_bs_lineno; /**< The line count. */ 226 int yy_bs_column; /**< The column count. */ 227 228 /* Whether to try to fill the input buffer when we reach the 229 * end of it. 230 */ 231 int yy_fill_buffer; 232 233 int yy_buffer_status; 234 235#define YY_BUFFER_NEW 0 236#define YY_BUFFER_NORMAL 1 237 /* When an EOF's been seen but there's still some text to process 238 * then we mark the buffer as YY_EOF_PENDING, to indicate that we 239 * shouldn't try reading from the input source any more. We might 240 * still have a bunch of tokens to match, though, because of 241 * possible backing-up. 242 * 243 * When we actually see the EOF, we change the status to "new" 244 * (via yyrestart()), so that the user can continue scanning by 245 * just pointing yyin at a new input file. 246 */ 247#define YY_BUFFER_EOF_PENDING 2 248 249 }; 250#endif /* !YY_STRUCT_YY_BUFFER_STATE */ 251 252/* Stack of input buffers. */ 253static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ 254static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ 255static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */ 256 257/* We provide macros for accessing buffer states in case in the 258 * future we want to put the buffer states in a more general 259 * "scanner state". 260 * 261 * Returns the top of the stack, or NULL. 262 */ 263#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ 264 ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ 265 : NULL) 266 267/* Same as previous macro, but useful when we know that the buffer stack is not 268 * NULL or when we need an lvalue. For internal use only. 269 */ 270#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] 271 272/* yy_hold_char holds the character lost when yytext is formed. */ 273static char yy_hold_char; 274static yy_size_t yy_n_chars; /* number of characters read into yy_ch_buf */ 275yy_size_t yyleng; 276 277/* Points to current character in buffer. */ 278static char *yy_c_buf_p = (char *) 0; 279static int yy_init = 0; /* whether we need to initialize */ 280static int yy_start = 0; /* start state number */ 281 282/* Flag which is used to allow yywrap()'s to do buffer switches 283 * instead of setting up a fresh yyin. A bit of a hack ... 284 */ 285static int yy_did_buffer_switch_on_eof; 286 287void yyrestart (FILE *input_file ); 288void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ); 289YY_BUFFER_STATE yy_create_buffer (FILE *file,int size ); 290void yy_delete_buffer (YY_BUFFER_STATE b ); 291void yy_flush_buffer (YY_BUFFER_STATE b ); 292void yypush_buffer_state (YY_BUFFER_STATE new_buffer ); 293void yypop_buffer_state (void ); 294 295static void yyensure_buffer_stack (void ); 296static void yy_load_buffer_state (void ); 297static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file ); 298 299#define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER ) 300 301YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size ); 302YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str ); 303YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len ); 304 305void *yyalloc (yy_size_t ); 306void *yyrealloc (void *,yy_size_t ); 307void yyfree (void * ); 308 309#define yy_new_buffer yy_create_buffer 310 311#define yy_set_interactive(is_interactive) \ 312 { \ 313 if ( ! YY_CURRENT_BUFFER ){ \ 314 yyensure_buffer_stack (); \ 315 YY_CURRENT_BUFFER_LVALUE = \ 316 yy_create_buffer(yyin,YY_BUF_SIZE ); \ 317 } \ 318 YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ 319 } 320 321#define yy_set_bol(at_bol) \ 322 { \ 323 if ( ! YY_CURRENT_BUFFER ){\ 324 yyensure_buffer_stack (); \ 325 YY_CURRENT_BUFFER_LVALUE = \ 326 yy_create_buffer(yyin,YY_BUF_SIZE ); \ 327 } \ 328 YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ 329 } 330 331#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) 332 333/* Begin user sect3 */ 334 335#define yywrap(n) 1 336#define YY_SKIP_YYWRAP 337 338typedef unsigned char YY_CHAR; 339 340FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0; 341 342typedef int yy_state_type; 343 344extern int yylineno; 345 346int yylineno = 1; 347 348extern char *yytext; 349#define yytext_ptr yytext 350 351static yy_state_type yy_get_previous_state (void ); 352static yy_state_type yy_try_NUL_trans (yy_state_type current_state ); 353static int yy_get_next_buffer (void ); 354static void yy_fatal_error (yyconst char msg[] ); 355 356/* Done after the current pattern has been matched and before the 357 * corresponding action - sets up yytext. 358 */ 359#define YY_DO_BEFORE_ACTION \ 360 (yytext_ptr) = yy_bp; \ 361 yyleng = (yy_size_t) (yy_cp - yy_bp); \ 362 (yy_hold_char) = *yy_cp; \ 363 *yy_cp = '\0'; \ 364 (yy_c_buf_p) = yy_cp; 365 366#define YY_NUM_RULES 239 367#define YY_END_OF_BUFFER 240 368/* This struct is not used in this scanner, 369 but its presence is necessary. */ 370struct yy_trans_info 371 { 372 flex_int32_t yy_verify; 373 flex_int32_t yy_nxt; 374 }; 375static yyconst flex_int16_t yy_accept[571] = 376 { 0, 377 0, 0, 0, 0, 0, 0, 240, 238, 236, 236, 378 221, 234, 220, 219, 201, 202, 217, 215, 212, 211, 379 204, 233, 233, 203, 222, 200, 196, 238, 225, 234, 380 147, 234, 234, 234, 234, 234, 234, 234, 234, 234, 381 234, 234, 234, 234, 54, 234, 234, 234, 12, 10, 382 190, 189, 188, 186, 184, 234, 234, 234, 234, 234, 383 70, 19, 18, 8, 7, 234, 218, 216, 214, 213, 384 0, 210, 205, 0, 0, 0, 233, 235, 0, 199, 385 197, 223, 195, 194, 179, 176, 234, 234, 234, 149, 386 152, 234, 234, 148, 0, 146, 234, 139, 234, 234, 387 388 135, 234, 125, 234, 123, 234, 234, 234, 234, 234, 389 234, 234, 103, 102, 101, 234, 100, 99, 234, 234, 390 97, 234, 95, 94, 93, 91, 234, 85, 234, 234, 391 77, 86, 234, 71, 69, 234, 234, 234, 234, 65, 392 234, 234, 234, 59, 234, 56, 234, 234, 53, 234, 393 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 394 234, 25, 234, 234, 234, 234, 234, 15, 14, 234, 395 234, 159, 234, 234, 187, 185, 224, 234, 234, 95, 396 234, 234, 234, 206, 208, 207, 209, 0, 0, 233, 397 233, 198, 192, 193, 234, 234, 234, 172, 153, 154, 398 399 234, 234, 163, 164, 234, 155, 157, 233, 234, 234, 400 234, 234, 234, 234, 124, 234, 234, 119, 234, 234, 401 234, 234, 234, 234, 234, 234, 234, 180, 98, 234, 402 234, 234, 234, 234, 234, 80, 83, 78, 81, 234, 403 234, 234, 79, 82, 234, 67, 66, 234, 63, 62, 404 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 405 44, 39, 38, 37, 36, 35, 34, 234, 32, 31, 406 234, 234, 234, 234, 234, 234, 234, 21, 234, 234, 407 16, 13, 234, 234, 9, 234, 234, 234, 234, 234, 408 234, 237, 191, 171, 169, 178, 177, 170, 168, 175, 409 410 174, 234, 234, 234, 234, 234, 156, 158, 145, 234, 411 234, 234, 234, 138, 137, 234, 127, 234, 234, 118, 412 234, 234, 234, 234, 111, 110, 234, 234, 234, 234, 413 234, 234, 234, 105, 104, 234, 234, 234, 96, 234, 414 92, 89, 84, 74, 234, 234, 68, 64, 234, 61, 415 60, 58, 57, 234, 55, 45, 234, 50, 47, 49, 416 46, 48, 234, 234, 43, 42, 234, 234, 234, 234, 417 234, 234, 27, 24, 23, 234, 234, 234, 234, 234, 418 234, 229, 234, 228, 234, 234, 173, 234, 234, 234, 419 161, 234, 234, 234, 234, 234, 234, 234, 234, 234, 420 421 234, 122, 234, 117, 116, 234, 234, 234, 234, 234, 422 234, 234, 234, 108, 234, 234, 234, 234, 234, 234, 423 234, 234, 234, 234, 2, 183, 52, 41, 40, 234, 424 33, 234, 234, 234, 30, 234, 22, 234, 234, 234, 425 234, 232, 234, 234, 234, 234, 234, 234, 165, 162, 426 144, 143, 142, 141, 140, 234, 234, 234, 234, 126, 427 121, 234, 234, 234, 234, 234, 51, 234, 234, 107, 428 234, 234, 234, 234, 234, 88, 87, 90, 234, 234, 429 73, 72, 234, 29, 234, 234, 234, 20, 234, 234, 430 151, 234, 230, 234, 227, 234, 166, 167, 234, 234, 431 432 234, 234, 234, 234, 120, 234, 114, 113, 234, 234, 433 234, 5, 106, 234, 181, 234, 234, 234, 234, 160, 434 28, 234, 234, 17, 11, 234, 234, 150, 234, 234, 435 134, 133, 132, 129, 234, 115, 234, 6, 109, 234, 436 234, 3, 234, 76, 1, 26, 231, 226, 136, 130, 437 131, 234, 234, 234, 234, 234, 128, 234, 234, 4, 438 75, 234, 234, 112, 234, 234, 234, 234, 182, 0 439 } ; 440 441static yyconst flex_int32_t yy_ec[256] = 442 { 0, 443 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 444 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 445 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 446 1, 2, 4, 1, 5, 6, 7, 8, 1, 9, 447 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 448 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 449 30, 31, 1, 32, 33, 34, 35, 36, 37, 38, 450 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 451 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 452 59, 1, 60, 61, 62, 1, 33, 34, 35, 36, 453 454 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 455 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 456 57, 58, 1, 63, 1, 64, 1, 6, 6, 6, 457 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 458 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 459 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 460 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 461 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 462 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 463 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 464 465 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 466 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 467 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 468 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 469 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 470 6, 6, 6, 6, 6 471 } ; 472 473static yyconst flex_int32_t yy_meta[65] = 474 { 0, 475 1, 1, 2, 1, 1, 3, 1, 1, 1, 1, 476 1, 1, 1, 1, 4, 1, 5, 5, 5, 5, 477 5, 5, 5, 5, 5, 5, 1, 1, 1, 1, 478 1, 1, 6, 7, 6, 6, 6, 7, 3, 3, 479 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 480 3, 3, 3, 3, 3, 4, 3, 3, 1, 1, 481 1, 3, 1, 1 482 } ; 483 484static yyconst flex_int16_t yy_base[577] = 485 { 0, 486 0, 0, 27, 28, 32, 40, 666, 667, 667, 667, 487 667, 0, 667, 635, 667, 667, 634, 67, 667, 56, 488 652, 67, 72, 667, 667, 44, 63, 631, 667, 114, 489 168, 67, 99, 33, 89, 70, 111, 157, 608, 209, 490 161, 48, 98, 245, 279, 313, 101, 609, 84, 639, 491 667, 667, 628, 90, 667, 152, 77, 616, 606, 75, 492 235, 0, 175, 0, 0, 0, 667, 667, 667, 667, 493 115, 667, 667, 142, 644, 0, 74, 667, 0, 624, 494 667, 667, 667, 131, 638, 637, 120, 152, 610, 0, 495 0, 190, 165, 0, 0, 635, 597, 0, 611, 600, 496 497 594, 601, 0, 603, 0, 586, 607, 602, 592, 96, 498 586, 169, 623, 591, 0, 584, 0, 0, 583, 597, 499 618, 588, 0, 0, 580, 0, 585, 614, 172, 174, 500 0, 581, 161, 205, 612, 570, 579, 577, 151, 0, 501 576, 585, 569, 605, 584, 0, 566, 571, 601, 574, 502 562, 577, 560, 236, 561, 577, 562, 187, 556, 566, 503 567, 590, 547, 562, 551, 550, 547, 0, 0, 551, 504 546, 0, 562, 577, 667, 667, 667, 542, 550, 549, 505 546, 195, 547, 667, 667, 667, 667, 579, 148, 0, 506 0, 667, 667, 559, 193, 195, 538, 0, 525, 0, 507 508 547, 544, 0, 0, 551, 532, 531, 0, 230, 234, 509 527, 530, 542, 534, 0, 531, 532, 271, 528, 541, 510 196, 222, 242, 540, 522, 244, 536, 552, 0, 519, 511 265, 531, 548, 518, 270, 0, 0, 0, 0, 517, 512 512, 522, 0, 0, 273, 0, 0, 514, 0, 0, 513 525, 509, 524, 275, 515, 509, 504, 284, 504, 293, 514 318, 0, 0, 0, 0, 0, 0, 508, 0, 0, 515 503, 501, 501, 512, 503, 283, 502, 0, 512, 494, 516 0, 0, 483, 497, 0, 492, 505, 488, 497, 501, 517 497, 526, 667, 0, 0, 0, 0, 0, 0, 0, 518 519 0, 484, 500, 488, 495, 480, 0, 0, 0, 487, 520 477, 492, 232, 0, 477, 294, 512, 491, 488, 289, 521 479, 490, 471, 477, 0, 0, 487, 486, 462, 464, 522 464, 479, 481, 0, 0, 477, 488, 461, 0, 448, 523 0, 494, 0, 446, 454, 468, 0, 0, 468, 0, 524 0, 0, 0, 469, 0, 0, 466, 0, 0, 0, 525 0, 0, 483, 484, 0, 0, 455, 463, 463, 445, 526 459, 443, 460, 0, 0, 458, 454, 440, 445, 441, 527 448, 425, 435, 0, 448, 438, 0, 436, 338, 430, 528 0, 431, 424, 427, 434, 425, 436, 427, 441, 427, 529 530 416, 0, 420, 0, 0, 422, 425, 427, 428, 413, 531 413, 429, 412, 0, 420, 426, 423, 414, 423, 407, 532 315, 177, 408, 403, 0, 0, 0, 0, 0, 407, 533 0, 413, 419, 400, 0, 409, 0, 410, 411, 414, 534 389, 404, 404, 391, 399, 393, 417, 418, 0, 0, 535 0, 0, 0, 0, 0, 397, 302, 402, 388, 0, 536 416, 390, 381, 380, 385, 379, 0, 381, 391, 0, 537 375, 375, 404, 391, 386, 0, 0, 0, 385, 375, 538 0, 0, 384, 0, 367, 381, 365, 0, 364, 359, 539 0, 368, 0, 378, 0, 355, 0, 0, 373, 86, 540 541 362, 361, 365, 374, 0, 350, 0, 0, 368, 367, 542 351, 0, 0, 356, 0, 335, 330, 339, 341, 0, 543 0, 324, 324, 0, 0, 320, 333, 0, 320, 246, 544 0, 0, 0, 0, 334, 0, 312, 0, 0, 305, 545 309, 0, 314, 0, 0, 0, 0, 0, 0, 0, 546 0, 309, 310, 304, 303, 292, 0, 287, 261, 0, 547 0, 255, 241, 0, 254, 214, 186, 185, 0, 667, 548 378, 382, 389, 179, 392, 395 549 } ; 550 551static yyconst flex_int16_t yy_def[577] = 552 { 0, 553 570, 1, 1, 1, 1, 1, 570, 570, 570, 570, 554 570, 571, 570, 570, 570, 570, 570, 570, 570, 570, 555 570, 572, 572, 570, 570, 570, 570, 570, 570, 571, 556 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 557 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 558 570, 570, 570, 570, 570, 571, 38, 40, 44, 571, 559 571, 46, 571, 571, 571, 571, 570, 570, 570, 570, 560 570, 570, 570, 570, 573, 574, 23, 570, 575, 570, 561 570, 570, 570, 570, 571, 571, 571, 571, 571, 571, 562 571, 571, 571, 571, 576, 571, 571, 571, 571, 571, 563 564 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 565 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 566 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 567 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 568 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 569 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 570 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 571 571, 571, 571, 571, 570, 570, 570, 571, 571, 571, 572 571, 571, 571, 570, 570, 570, 570, 573, 573, 574, 573 575, 570, 570, 570, 571, 571, 571, 571, 571, 571, 574 575 571, 571, 571, 571, 571, 571, 571, 576, 571, 571, 576 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 577 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 578 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 579 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 580 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 581 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 582 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 583 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 584 571, 573, 570, 571, 571, 571, 571, 571, 571, 571, 585 586 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 587 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 588 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 589 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 590 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 591 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 592 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 593 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 594 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 595 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 596 597 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 598 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 599 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 600 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 601 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 602 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 603 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 604 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 605 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 606 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 607 608 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 609 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 610 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 611 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 612 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 613 571, 571, 571, 571, 571, 571, 571, 571, 571, 571, 614 571, 571, 571, 571, 571, 571, 571, 571, 571, 0, 615 570, 570, 570, 570, 570, 570 616 } ; 617 618static yyconst flex_int16_t yy_nxt[732] = 619 { 0, 620 8, 9, 10, 11, 8, 12, 13, 14, 15, 16, 621 17, 18, 19, 20, 12, 21, 22, 23, 23, 23, 622 23, 23, 23, 23, 23, 23, 24, 25, 26, 27, 623 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 624 38, 39, 12, 40, 41, 42, 43, 44, 12, 45, 625 46, 47, 48, 49, 50, 12, 12, 12, 51, 52, 626 53, 12, 54, 55, 56, 56, 82, 57, 57, 72, 627 58, 58, 80, 81, 59, 59, 61, 111, 69, 60, 628 60, 76, 62, 63, 61, 73, 570, 64, 112, 65, 629 62, 63, 83, 95, 139, 64, 70, 65, 140, 102, 630 631 78, 103, 95, 95, 78, 78, 115, 570, 530, 78, 632 104, 570, 179, 105, 180, 95, 116, 106, 74, 176, 633 183, 117, 79, 107, 171, 170, 184, 570, 185, 71, 634 85, 86, 108, 531, 172, 109, 113, 166, 167, 110, 635 168, 114, 141, 142, 169, 173, 220, 87, 88, 221, 636 143, 118, 177, 186, 119, 187, 95, 89, 189, 90, 637 193, 194, 91, 292, 92, 120, 197, 93, 199, 200, 638 198, 94, 95, 121, 121, 121, 121, 135, 135, 135, 639 135, 206, 207, 190, 96, 96, 96, 96, 236, 237, 640 238, 239, 122, 136, 123, 178, 124, 241, 249, 113, 641 642 242, 137, 250, 223, 114, 569, 138, 125, 97, 126, 643 479, 166, 167, 480, 168, 98, 224, 99, 169, 271, 644 225, 243, 244, 100, 101, 128, 128, 128, 128, 202, 645 568, 290, 294, 203, 298, 272, 295, 567, 299, 204, 646 257, 205, 129, 130, 325, 131, 326, 296, 297, 300, 647 301, 135, 135, 135, 135, 132, 327, 328, 329, 133, 648 134, 144, 144, 144, 144, 144, 144, 136, 310, 309, 649 395, 566, 263, 309, 330, 137, 264, 145, 311, 146, 650 138, 265, 396, 334, 312, 313, 266, 335, 147, 331, 651 550, 267, 565, 551, 148, 149, 149, 149, 149, 149, 652 653 149, 149, 149, 320, 339, 321, 564, 563, 339, 343, 654 322, 150, 347, 343, 352, 151, 347, 356, 352, 500, 655 501, 502, 374, 356, 152, 153, 375, 356, 404, 358, 656 154, 155, 405, 359, 562, 363, 364, 561, 360, 560, 657 398, 399, 559, 361, 558, 156, 400, 157, 362, 158, 658 159, 557, 160, 161, 556, 447, 448, 365, 476, 555, 659 162, 366, 449, 163, 164, 477, 554, 553, 552, 165, 660 478, 549, 548, 547, 546, 545, 544, 543, 542, 367, 661 66, 66, 66, 66, 66, 77, 77, 541, 77, 188, 662 540, 188, 188, 188, 188, 188, 191, 191, 191, 208, 663 664 208, 208, 539, 538, 537, 536, 535, 534, 533, 532, 665 529, 528, 527, 526, 525, 524, 523, 522, 521, 520, 666 519, 518, 517, 516, 515, 514, 513, 512, 511, 510, 667 509, 508, 507, 506, 505, 504, 503, 499, 498, 497, 668 496, 495, 494, 493, 492, 491, 490, 489, 488, 487, 669 486, 485, 484, 483, 482, 481, 475, 474, 473, 472, 670 471, 470, 469, 468, 467, 466, 465, 464, 463, 462, 671 461, 460, 459, 458, 457, 456, 455, 454, 453, 452, 672 451, 450, 446, 445, 444, 443, 420, 442, 441, 440, 673 439, 438, 437, 436, 435, 434, 433, 432, 431, 430, 674 675 429, 428, 427, 426, 425, 424, 423, 422, 421, 420, 676 419, 418, 417, 416, 415, 414, 413, 412, 411, 410, 677 409, 408, 407, 406, 403, 402, 401, 397, 394, 393, 678 392, 391, 390, 389, 388, 387, 189, 386, 385, 384, 679 383, 382, 381, 380, 379, 378, 377, 376, 373, 372, 680 371, 370, 369, 368, 357, 355, 354, 353, 351, 350, 681 349, 348, 346, 345, 344, 342, 341, 340, 338, 337, 682 336, 333, 332, 324, 323, 319, 318, 317, 316, 315, 683 314, 308, 307, 306, 305, 304, 303, 302, 293, 189, 684 291, 289, 288, 287, 286, 285, 284, 283, 282, 281, 685 686 280, 279, 278, 277, 276, 275, 274, 273, 270, 269, 687 268, 262, 261, 260, 259, 258, 257, 256, 255, 254, 688 253, 252, 251, 248, 247, 246, 245, 240, 235, 234, 689 233, 232, 231, 230, 229, 228, 227, 226, 222, 219, 690 218, 217, 216, 215, 214, 213, 212, 211, 210, 209, 691 201, 196, 195, 192, 189, 182, 181, 175, 174, 170, 692 127, 84, 75, 68, 67, 570, 7, 570, 570, 570, 693 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 694 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 695 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 696 697 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 698 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 699 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 700 570 701 } ; 702 703static yyconst flex_int16_t yy_chk[732] = 704 { 0, 705 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 706 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 707 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 708 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 709 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 710 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 711 1, 1, 1, 1, 3, 4, 27, 3, 4, 20, 712 3, 4, 26, 26, 3, 4, 5, 34, 18, 3, 713 4, 22, 5, 5, 6, 20, 23, 5, 34, 5, 714 6, 6, 27, 35, 42, 6, 18, 6, 42, 32, 715 716 22, 32, 43, 33, 22, 23, 36, 77, 500, 23, 717 32, 77, 57, 32, 57, 37, 36, 32, 20, 54, 718 60, 36, 22, 32, 49, 60, 71, 23, 71, 18, 719 30, 30, 33, 500, 49, 33, 35, 47, 47, 33, 720 47, 35, 43, 43, 47, 49, 110, 30, 30, 110, 721 43, 37, 54, 74, 37, 74, 56, 30, 189, 30, 722 84, 84, 30, 189, 30, 37, 87, 30, 88, 88, 723 87, 30, 31, 38, 38, 38, 38, 41, 41, 41, 724 41, 93, 93, 574, 31, 31, 31, 31, 129, 129, 725 130, 130, 38, 41, 38, 56, 38, 133, 139, 56, 726 727 133, 41, 139, 112, 56, 568, 41, 38, 31, 38, 728 422, 63, 63, 422, 63, 31, 112, 31, 63, 158, 729 112, 134, 134, 31, 31, 40, 40, 40, 40, 92, 730 567, 182, 195, 92, 196, 158, 195, 566, 196, 92, 731 182, 92, 40, 40, 221, 40, 221, 195, 195, 196, 732 196, 61, 61, 61, 61, 40, 222, 222, 222, 40, 733 40, 44, 44, 44, 44, 44, 44, 61, 210, 209, 734 313, 565, 154, 209, 223, 61, 154, 44, 210, 44, 735 61, 154, 313, 226, 210, 210, 154, 226, 44, 223, 736 530, 154, 563, 530, 44, 45, 45, 45, 45, 45, 737 738 45, 45, 45, 218, 231, 218, 562, 559, 231, 235, 739 218, 45, 245, 235, 254, 45, 245, 258, 254, 457, 740 457, 457, 276, 258, 45, 45, 276, 258, 320, 260, 741 45, 46, 320, 260, 558, 261, 261, 556, 260, 555, 742 316, 316, 554, 260, 553, 46, 316, 46, 260, 46, 743 46, 552, 46, 46, 543, 389, 389, 261, 421, 541, 744 46, 261, 389, 46, 46, 421, 540, 537, 535, 46, 745 421, 529, 527, 526, 523, 522, 519, 518, 517, 261, 746 571, 571, 571, 571, 571, 572, 572, 516, 572, 573, 747 514, 573, 573, 573, 573, 573, 575, 575, 575, 576, 748 749 576, 576, 511, 510, 509, 506, 504, 503, 502, 501, 750 499, 496, 494, 492, 490, 489, 487, 486, 485, 483, 751 480, 479, 475, 474, 473, 472, 471, 469, 468, 466, 752 465, 464, 463, 462, 461, 459, 458, 456, 448, 447, 753 446, 445, 444, 443, 442, 441, 440, 439, 438, 436, 754 434, 433, 432, 430, 424, 423, 420, 419, 418, 417, 755 416, 415, 413, 412, 411, 410, 409, 408, 407, 406, 756 403, 401, 400, 399, 398, 397, 396, 395, 394, 393, 757 392, 390, 388, 386, 385, 383, 382, 381, 380, 379, 758 378, 377, 376, 373, 372, 371, 370, 369, 368, 367, 759 760 364, 363, 357, 354, 349, 346, 345, 344, 342, 340, 761 338, 337, 336, 333, 332, 331, 330, 329, 328, 327, 762 324, 323, 322, 321, 319, 318, 317, 315, 312, 311, 763 310, 306, 305, 304, 303, 302, 292, 291, 290, 289, 764 288, 287, 286, 284, 283, 280, 279, 277, 275, 274, 765 273, 272, 271, 268, 259, 257, 256, 255, 253, 252, 766 251, 248, 242, 241, 240, 234, 233, 232, 230, 228, 767 227, 225, 224, 220, 219, 217, 216, 214, 213, 212, 768 211, 207, 206, 205, 202, 201, 199, 197, 194, 188, 769 183, 181, 180, 179, 178, 174, 173, 171, 170, 167, 770 771 166, 165, 164, 163, 162, 161, 160, 159, 157, 156, 772 155, 153, 152, 151, 150, 149, 148, 147, 145, 144, 773 143, 142, 141, 138, 137, 136, 135, 132, 128, 127, 774 125, 122, 121, 120, 119, 116, 114, 113, 111, 109, 775 108, 107, 106, 104, 102, 101, 100, 99, 97, 96, 776 89, 86, 85, 80, 75, 59, 58, 53, 50, 48, 777 39, 28, 21, 17, 14, 7, 570, 570, 570, 570, 778 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 779 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 780 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 781 782 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 783 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 784 570, 570, 570, 570, 570, 570, 570, 570, 570, 570, 785 570 786 } ; 787 788static yy_state_type yy_last_accepting_state; 789static char *yy_last_accepting_cpos; 790 791extern int yy_flex_debug; 792int yy_flex_debug = 0; 793 794/* The intent behind this definition is that it'll catch 795 * any uses of REJECT which flex missed. 796 */ 797#define REJECT reject_used_but_not_detected 798#define yymore() yymore_used_but_not_detected 799#define YY_MORE_ADJ 0 800#define YY_RESTORE_YY_MORE_OFFSET 801char *yytext; 802#line 1 "./config/bfin-lex.l" 803/* bfin-lex.l ADI Blackfin lexer 804 Copyright (C) 2005-2017 Free Software Foundation, Inc. 805 806 This file is part of GAS, the GNU Assembler. 807 808 GAS is free software; you can redistribute it and/or modify 809 it under the terms of the GNU General Public License as published by 810 the Free Software Foundation; either version 3, or (at your option) 811 any later version. 812 813 GAS is distributed in the hope that it will be useful, 814 but WITHOUT ANY WARRANTY; without even the implied warranty of 815 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 816 GNU General Public License for more details. 817 818 You should have received a copy of the GNU General Public License 819 along with GAS; see the file COPYING. If not, write to the Free 820 Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA 821 02110-1301, USA. */ 822#line 23 "./config/bfin-lex.l" 823 824#include "as.h" 825#include "bfin-defs.h" 826#include "bfin-parse.h" 827 828static long parse_int (char **end); 829static int parse_halfreg (Register *r, int cl, char *hr); 830static int parse_reg (Register *r, int type, char *rt); 831int yylex (void); 832 833#define _REG yylval.reg 834 835 836/* Define Start States ... Actually we will use exclusion. 837 If no start state is specified it should match any state 838 and <INITIAL> would match some keyword rules only with 839 initial. */ 840 841 842#line 843 "bfin-lex.c" 843 844#define INITIAL 0 845#define KEYWORD 1 846#define FLAGS 2 847 848#ifndef YY_NO_UNISTD_H 849/* Special case for "unistd.h", since it is non-ANSI. We include it way 850 * down here because we want the user's section 1 to have been scanned first. 851 * The user has a chance to override it with an option. 852 */ 853#include <unistd.h> 854#endif 855 856#ifndef YY_EXTRA_TYPE 857#define YY_EXTRA_TYPE void * 858#endif 859 860static int yy_init_globals (void ); 861 862/* Accessor methods to globals. 863 These are made visible to non-reentrant scanners for convenience. */ 864 865int yylex_destroy (void ); 866 867int yyget_debug (void ); 868 869void yyset_debug (int debug_flag ); 870 871YY_EXTRA_TYPE yyget_extra (void ); 872 873void yyset_extra (YY_EXTRA_TYPE user_defined ); 874 875FILE *yyget_in (void ); 876 877void yyset_in (FILE * in_str ); 878 879FILE *yyget_out (void ); 880 881void yyset_out (FILE * out_str ); 882 883yy_size_t yyget_leng (void ); 884 885char *yyget_text (void ); 886 887int yyget_lineno (void ); 888 889void yyset_lineno (int line_number ); 890 891/* Macros after this point can all be overridden by user definitions in 892 * section 1. 893 */ 894 895#ifndef YY_SKIP_YYWRAP 896#ifdef __cplusplus 897extern "C" int yywrap (void ); 898#else 899extern int yywrap (void ); 900#endif 901#endif 902 903 static void yyunput (int c,char *buf_ptr ); 904 905#ifndef yytext_ptr 906static void yy_flex_strncpy (char *,yyconst char *,int ); 907#endif 908 909#ifdef YY_NEED_STRLEN 910static int yy_flex_strlen (yyconst char * ); 911#endif 912 913#ifndef YY_NO_INPUT 914 915#ifdef __cplusplus 916static int yyinput (void ); 917#else 918static int input (void ); 919#endif 920 921#endif 922 923/* Amount of stuff to slurp up with each read. */ 924#ifndef YY_READ_BUF_SIZE 925#define YY_READ_BUF_SIZE 8192 926#endif 927 928/* Copy whatever the last rule matched to the standard output. */ 929#ifndef ECHO 930/* This used to be an fputs(), but since the string might contain NUL's, 931 * we now use fwrite(). 932 */ 933#define ECHO fwrite( yytext, yyleng, 1, yyout ) 934#endif 935 936/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, 937 * is returned in "result". 938 */ 939#ifndef YY_INPUT 940#define YY_INPUT(buf,result,max_size) \ 941 if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ 942 { \ 943 int c = '*'; \ 944 yy_size_t n; \ 945 for ( n = 0; n < max_size && \ 946 (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ 947 buf[n] = (char) c; \ 948 if ( c == '\n' ) \ 949 buf[n++] = (char) c; \ 950 if ( c == EOF && ferror( yyin ) ) \ 951 YY_FATAL_ERROR( "input in flex scanner failed" ); \ 952 result = n; \ 953 } \ 954 else \ 955 { \ 956 errno=0; \ 957 while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ 958 { \ 959 if( errno != EINTR) \ 960 { \ 961 YY_FATAL_ERROR( "input in flex scanner failed" ); \ 962 break; \ 963 } \ 964 errno=0; \ 965 clearerr(yyin); \ 966 } \ 967 }\ 968\ 969 970#endif 971 972/* No semi-colon after return; correct usage is to write "yyterminate();" - 973 * we don't want an extra ';' after the "return" because that will cause 974 * some compilers to complain about unreachable statements. 975 */ 976#ifndef yyterminate 977#define yyterminate() return YY_NULL 978#endif 979 980/* Number of entries by which start-condition stack grows. */ 981#ifndef YY_START_STACK_INCR 982#define YY_START_STACK_INCR 25 983#endif 984 985/* Report a fatal error. */ 986#ifndef YY_FATAL_ERROR 987#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) 988#endif 989 990/* end tables serialization structures and prototypes */ 991 992/* Default declaration of generated scanner - a define so the user can 993 * easily add parameters. 994 */ 995#ifndef YY_DECL 996#define YY_DECL_IS_OURS 1 997 998extern int yylex (void); 999 1000#define YY_DECL int yylex (void) 1001#endif /* !YY_DECL */ 1002 1003/* Code executed at the beginning of each rule, after yytext and yyleng 1004 * have been set up. 1005 */ 1006#ifndef YY_USER_ACTION 1007#define YY_USER_ACTION 1008#endif 1009 1010/* Code executed at the end of each rule. */ 1011#ifndef YY_BREAK 1012#define YY_BREAK break; 1013#endif 1014 1015#define YY_RULE_SETUP \ 1016 YY_USER_ACTION 1017 1018/** The main scanner function which does all the work. 1019 */ 1020YY_DECL 1021{ 1022 register yy_state_type yy_current_state; 1023 register char *yy_cp, *yy_bp; 1024 register int yy_act; 1025 1026#line 45 "./config/bfin-lex.l" 1027 1028#line 1029 "bfin-lex.c" 1029 1030 if ( !(yy_init) ) 1031 { 1032 (yy_init) = 1; 1033 1034#ifdef YY_USER_INIT 1035 YY_USER_INIT; 1036#endif 1037 1038 if ( ! (yy_start) ) 1039 (yy_start) = 1; /* first start state */ 1040 1041 if ( ! yyin ) 1042 yyin = stdin; 1043 1044 if ( ! yyout ) 1045 yyout = stdout; 1046 1047 if ( ! YY_CURRENT_BUFFER ) { 1048 yyensure_buffer_stack (); 1049 YY_CURRENT_BUFFER_LVALUE = 1050 yy_create_buffer(yyin,YY_BUF_SIZE ); 1051 } 1052 1053 yy_load_buffer_state( ); 1054 } 1055 1056 while ( 1 ) /* loops until end-of-file is reached */ 1057 { 1058 yy_cp = (yy_c_buf_p); 1059 1060 /* Support of yytext. */ 1061 *yy_cp = (yy_hold_char); 1062 1063 /* yy_bp points to the position in yy_ch_buf of the start of 1064 * the current run. 1065 */ 1066 yy_bp = yy_cp; 1067 1068 yy_current_state = (yy_start); 1069yy_match: 1070 do 1071 { 1072 register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; 1073 if ( yy_accept[yy_current_state] ) 1074 { 1075 (yy_last_accepting_state) = yy_current_state; 1076 (yy_last_accepting_cpos) = yy_cp; 1077 } 1078 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) 1079 { 1080 yy_current_state = (int) yy_def[yy_current_state]; 1081 if ( yy_current_state >= 571 ) 1082 yy_c = yy_meta[(unsigned int) yy_c]; 1083 } 1084 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; 1085 ++yy_cp; 1086 } 1087 while ( yy_base[yy_current_state] != 667 ); 1088 1089yy_find_action: 1090 yy_act = yy_accept[yy_current_state]; 1091 if ( yy_act == 0 ) 1092 { /* have to back up */ 1093 yy_cp = (yy_last_accepting_cpos); 1094 yy_current_state = (yy_last_accepting_state); 1095 yy_act = yy_accept[yy_current_state]; 1096 } 1097 1098 YY_DO_BEFORE_ACTION; 1099 1100do_action: /* This label is used only to access EOF actions. */ 1101 1102 switch ( yy_act ) 1103 { /* beginning of action switch */ 1104 case 0: /* must back up */ 1105 /* undo the effects of YY_DO_BEFORE_ACTION */ 1106 *yy_cp = (yy_hold_char); 1107 yy_cp = (yy_last_accepting_cpos); 1108 yy_current_state = (yy_last_accepting_state); 1109 goto yy_find_action; 1110 1111case 1: 1112YY_RULE_SETUP 1113#line 46 "./config/bfin-lex.l" 1114_REG.regno = REG_sftreset; return REG; 1115 YY_BREAK 1116case 2: 1117YY_RULE_SETUP 1118#line 47 "./config/bfin-lex.l" 1119_REG.regno = REG_omode; return REG; 1120 YY_BREAK 1121case 3: 1122YY_RULE_SETUP 1123#line 48 "./config/bfin-lex.l" 1124_REG.regno = REG_idle_req; return REG; 1125 YY_BREAK 1126case 4: 1127YY_RULE_SETUP 1128#line 49 "./config/bfin-lex.l" 1129_REG.regno = REG_hwerrcause; return REG; 1130 YY_BREAK 1131case 5: 1132YY_RULE_SETUP 1133#line 50 "./config/bfin-lex.l" 1134_REG.regno = REG_excause; return REG; 1135 YY_BREAK 1136case 6: 1137YY_RULE_SETUP 1138#line 51 "./config/bfin-lex.l" 1139_REG.regno = REG_emucause; return REG; 1140 YY_BREAK 1141case 7: 1142YY_RULE_SETUP 1143#line 52 "./config/bfin-lex.l" 1144return Z; 1145 YY_BREAK 1146case 8: 1147YY_RULE_SETUP 1148#line 53 "./config/bfin-lex.l" 1149return X; 1150 YY_BREAK 1151case 9: 1152YY_RULE_SETUP 1153#line 54 "./config/bfin-lex.l" 1154yylval.value = M_W32; return MMOD; 1155 YY_BREAK 1156case 10: 1157YY_RULE_SETUP 1158#line 55 "./config/bfin-lex.l" 1159return W; 1160 YY_BREAK 1161case 11: 1162YY_RULE_SETUP 1163#line 56 "./config/bfin-lex.l" 1164return VIT_MAX; 1165 YY_BREAK 1166case 12: 1167YY_RULE_SETUP 1168#line 57 "./config/bfin-lex.l" 1169return V; /* Special: V is a statflag and a modifier. */ 1170 YY_BREAK 1171case 13: 1172YY_RULE_SETUP 1173#line 58 "./config/bfin-lex.l" 1174_REG.regno = REG_USP; return REG; 1175 YY_BREAK 1176case 14: 1177YY_RULE_SETUP 1178#line 59 "./config/bfin-lex.l" 1179return TL; 1180 YY_BREAK 1181case 15: 1182YY_RULE_SETUP 1183#line 60 "./config/bfin-lex.l" 1184return TH; 1185 YY_BREAK 1186case 16: 1187YY_RULE_SETUP 1188#line 61 "./config/bfin-lex.l" 1189yylval.value = M_TFU; return MMOD; 1190 YY_BREAK 1191case 17: 1192YY_RULE_SETUP 1193#line 62 "./config/bfin-lex.l" 1194return TESTSET; 1195 YY_BREAK 1196case 18: 1197YY_RULE_SETUP 1198#line 63 "./config/bfin-lex.l" 1199yylval.value = M_T; return MMOD; 1200 YY_BREAK 1201case 19: 1202YY_RULE_SETUP 1203#line 64 "./config/bfin-lex.l" 1204return S; 1205 YY_BREAK 1206case 20: 1207YY_RULE_SETUP 1208#line 65 "./config/bfin-lex.l" 1209_REG.regno = REG_SYSCFG; return REG; 1210 YY_BREAK 1211case 21: 1212YY_RULE_SETUP 1213#line 66 "./config/bfin-lex.l" 1214return STI; 1215 YY_BREAK 1216case 22: 1217YY_RULE_SETUP 1218#line 67 "./config/bfin-lex.l" 1219return SSYNC; 1220 YY_BREAK 1221case 23: 1222YY_RULE_SETUP 1223#line 68 "./config/bfin-lex.l" 1224_REG.regno = REG_SP; _REG.flags = F_REG_LOW; return HALF_REG; 1225 YY_BREAK 1226case 24: 1227YY_RULE_SETUP 1228#line 69 "./config/bfin-lex.l" 1229_REG.regno = REG_SP; _REG.flags = F_REG_HIGH; return HALF_REG; 1230 YY_BREAK 1231case 25: 1232YY_RULE_SETUP 1233#line 70 "./config/bfin-lex.l" 1234_REG.regno = REG_SP; return REG; 1235 YY_BREAK 1236case 26: 1237YY_RULE_SETUP 1238#line 71 "./config/bfin-lex.l" 1239return SIGNBITS; 1240 YY_BREAK 1241case 27: 1242YY_RULE_SETUP 1243#line 72 "./config/bfin-lex.l" 1244return SIGN; 1245 YY_BREAK 1246case 28: 1247YY_RULE_SETUP 1248#line 73 "./config/bfin-lex.l" 1249_REG.regno = REG_SEQSTAT; return REG; 1250 YY_BREAK 1251case 29: 1252YY_RULE_SETUP 1253#line 74 "./config/bfin-lex.l" 1254return SEARCH; 1255 YY_BREAK 1256case 30: 1257YY_RULE_SETUP 1258#line 75 "./config/bfin-lex.l" 1259return SHIFT; 1260 YY_BREAK 1261case 31: 1262YY_RULE_SETUP 1263#line 76 "./config/bfin-lex.l" 1264return SCO; 1265 YY_BREAK 1266case 32: 1267YY_RULE_SETUP 1268#line 78 "./config/bfin-lex.l" 1269return SAA; 1270 YY_BREAK 1271case 33: 1272YY_RULE_SETUP 1273#line 79 "./config/bfin-lex.l" 1274yylval.value = M_S2RND; return MMOD; 1275 YY_BREAK 1276case 34: 1277YY_RULE_SETUP 1278#line 80 "./config/bfin-lex.l" 1279return RTX; 1280 YY_BREAK 1281case 35: 1282YY_RULE_SETUP 1283#line 81 "./config/bfin-lex.l" 1284return RTS; 1285 YY_BREAK 1286case 36: 1287YY_RULE_SETUP 1288#line 82 "./config/bfin-lex.l" 1289return RTN; 1290 YY_BREAK 1291case 37: 1292YY_RULE_SETUP 1293#line 83 "./config/bfin-lex.l" 1294return RTI; 1295 YY_BREAK 1296case 38: 1297YY_RULE_SETUP 1298#line 84 "./config/bfin-lex.l" 1299return RTE; 1300 YY_BREAK 1301case 39: 1302YY_RULE_SETUP 1303#line 85 "./config/bfin-lex.l" 1304return ROT; 1305 YY_BREAK 1306case 40: 1307YY_RULE_SETUP 1308#line 86 "./config/bfin-lex.l" 1309return RND20; 1310 YY_BREAK 1311case 41: 1312YY_RULE_SETUP 1313#line 87 "./config/bfin-lex.l" 1314return RND12; 1315 YY_BREAK 1316case 42: 1317YY_RULE_SETUP 1318#line 88 "./config/bfin-lex.l" 1319return RNDL; 1320 YY_BREAK 1321case 43: 1322YY_RULE_SETUP 1323#line 89 "./config/bfin-lex.l" 1324return RNDH; 1325 YY_BREAK 1326case 44: 1327YY_RULE_SETUP 1328#line 90 "./config/bfin-lex.l" 1329return RND; 1330 YY_BREAK 1331case 45: 1332YY_RULE_SETUP 1333#line 92 "./config/bfin-lex.l" 1334return parse_halfreg(&yylval.reg, T_REG_R, yytext); 1335 YY_BREAK 1336case 46: 1337YY_RULE_SETUP 1338#line 94 "./config/bfin-lex.l" 1339_REG.regno = REG_RETS; return REG; 1340 YY_BREAK 1341case 47: 1342YY_RULE_SETUP 1343#line 95 "./config/bfin-lex.l" 1344_REG.regno = REG_RETI; return REG; 1345 YY_BREAK 1346case 48: 1347YY_RULE_SETUP 1348#line 96 "./config/bfin-lex.l" 1349_REG.regno = REG_RETX; return REG; 1350 YY_BREAK 1351case 49: 1352YY_RULE_SETUP 1353#line 97 "./config/bfin-lex.l" 1354_REG.regno = REG_RETN; return REG; 1355 YY_BREAK 1356case 50: 1357YY_RULE_SETUP 1358#line 98 "./config/bfin-lex.l" 1359_REG.regno = REG_RETE; return REG; 1360 YY_BREAK 1361case 51: 1362YY_RULE_SETUP 1363#line 99 "./config/bfin-lex.l" 1364_REG.regno = REG_EMUDAT; return REG; 1365 YY_BREAK 1366case 52: 1367YY_RULE_SETUP 1368#line 100 "./config/bfin-lex.l" 1369return RAISE; 1370 YY_BREAK 1371case 53: 1372YY_RULE_SETUP 1373#line 102 "./config/bfin-lex.l" 1374return parse_reg (&yylval.reg, T_REG_R, yytext); 1375 YY_BREAK 1376case 54: 1377YY_RULE_SETUP 1378#line 104 "./config/bfin-lex.l" 1379return R; 1380 YY_BREAK 1381case 55: 1382YY_RULE_SETUP 1383#line 105 "./config/bfin-lex.l" 1384return PRNT; 1385 YY_BREAK 1386case 56: 1387YY_RULE_SETUP 1388#line 106 "./config/bfin-lex.l" 1389return PC; 1390 YY_BREAK 1391case 57: 1392YY_RULE_SETUP 1393#line 107 "./config/bfin-lex.l" 1394return PACK; 1395 YY_BREAK 1396case 58: 1397YY_RULE_SETUP 1398#line 109 "./config/bfin-lex.l" 1399return parse_halfreg (&yylval.reg, T_REG_P, yytext); 1400 YY_BREAK 1401case 59: 1402YY_RULE_SETUP 1403#line 110 "./config/bfin-lex.l" 1404return parse_reg (&yylval.reg, T_REG_P, yytext); 1405 YY_BREAK 1406case 60: 1407YY_RULE_SETUP 1408#line 112 "./config/bfin-lex.l" 1409return OUTC; 1410 YY_BREAK 1411case 61: 1412YY_RULE_SETUP 1413#line 113 "./config/bfin-lex.l" 1414return ONES; 1415 YY_BREAK 1416case 62: 1417YY_RULE_SETUP 1418#line 115 "./config/bfin-lex.l" 1419return NOT; 1420 YY_BREAK 1421case 63: 1422YY_RULE_SETUP 1423#line 116 "./config/bfin-lex.l" 1424return NOP; 1425 YY_BREAK 1426case 64: 1427YY_RULE_SETUP 1428#line 117 "./config/bfin-lex.l" 1429return MNOP; 1430 YY_BREAK 1431case 65: 1432YY_RULE_SETUP 1433#line 118 "./config/bfin-lex.l" 1434return NS; 1435 YY_BREAK 1436case 66: 1437YY_RULE_SETUP 1438#line 121 "./config/bfin-lex.l" 1439return MIN; 1440 YY_BREAK 1441case 67: 1442YY_RULE_SETUP 1443#line 122 "./config/bfin-lex.l" 1444return MAX; 1445 YY_BREAK 1446case 68: 1447YY_RULE_SETUP 1448#line 124 "./config/bfin-lex.l" 1449return parse_halfreg (&yylval.reg, T_REG_M, yytext); 1450 YY_BREAK 1451case 69: 1452YY_RULE_SETUP 1453#line 125 "./config/bfin-lex.l" 1454return parse_reg (&yylval.reg, T_REG_M, yytext); 1455 YY_BREAK 1456case 70: 1457YY_RULE_SETUP 1458#line 127 "./config/bfin-lex.l" 1459return M; 1460 YY_BREAK 1461case 71: 1462YY_RULE_SETUP 1463#line 128 "./config/bfin-lex.l" 1464return LT; 1465 YY_BREAK 1466case 72: 1467YY_RULE_SETUP 1468#line 129 "./config/bfin-lex.l" 1469return LSHIFT; 1470 YY_BREAK 1471case 73: 1472YY_RULE_SETUP 1473#line 130 "./config/bfin-lex.l" 1474return LSETUP; 1475 YY_BREAK 1476case 74: 1477YY_RULE_SETUP 1478#line 131 "./config/bfin-lex.l" 1479return LOOP; 1480 YY_BREAK 1481case 75: 1482YY_RULE_SETUP 1483#line 132 "./config/bfin-lex.l" 1484return LOOP_BEGIN; 1485 YY_BREAK 1486case 76: 1487YY_RULE_SETUP 1488#line 133 "./config/bfin-lex.l" 1489return LOOP_END; 1490 YY_BREAK 1491case 77: 1492YY_RULE_SETUP 1493#line 135 "./config/bfin-lex.l" 1494return LE; 1495 YY_BREAK 1496case 78: 1497YY_RULE_SETUP 1498#line 136 "./config/bfin-lex.l" 1499_REG.regno = REG_LC0; return REG; 1500 YY_BREAK 1501case 79: 1502YY_RULE_SETUP 1503#line 137 "./config/bfin-lex.l" 1504_REG.regno = REG_LT0; return REG; 1505 YY_BREAK 1506case 80: 1507YY_RULE_SETUP 1508#line 138 "./config/bfin-lex.l" 1509_REG.regno = REG_LB0; return REG; 1510 YY_BREAK 1511case 81: 1512YY_RULE_SETUP 1513#line 139 "./config/bfin-lex.l" 1514_REG.regno = REG_LC1; return REG; 1515 YY_BREAK 1516case 82: 1517YY_RULE_SETUP 1518#line 140 "./config/bfin-lex.l" 1519_REG.regno = REG_LT1; return REG; 1520 YY_BREAK 1521case 83: 1522YY_RULE_SETUP 1523#line 141 "./config/bfin-lex.l" 1524_REG.regno = REG_LB1; return REG; 1525 YY_BREAK 1526case 84: 1527YY_RULE_SETUP 1528#line 143 "./config/bfin-lex.l" 1529return parse_halfreg (&yylval.reg, T_REG_L, yytext); 1530 YY_BREAK 1531case 85: 1532YY_RULE_SETUP 1533#line 144 "./config/bfin-lex.l" 1534return parse_reg (&yylval.reg, T_REG_L, yytext); 1535 YY_BREAK 1536case 86: 1537YY_RULE_SETUP 1538#line 145 "./config/bfin-lex.l" 1539return LO; 1540 YY_BREAK 1541case 87: 1542YY_RULE_SETUP 1543#line 146 "./config/bfin-lex.l" 1544{ BEGIN 0; return JUMP_DOT_S;} 1545 YY_BREAK 1546case 88: 1547YY_RULE_SETUP 1548#line 147 "./config/bfin-lex.l" 1549{ BEGIN 0; return JUMP_DOT_L;} 1550 YY_BREAK 1551case 89: 1552YY_RULE_SETUP 1553#line 148 "./config/bfin-lex.l" 1554{ BEGIN 0; return JUMP;} 1555 YY_BREAK 1556case 90: 1557YY_RULE_SETUP 1558#line 149 "./config/bfin-lex.l" 1559{ BEGIN 0; return JUMP_DOT_L; } 1560 YY_BREAK 1561case 91: 1562YY_RULE_SETUP 1563#line 150 "./config/bfin-lex.l" 1564yylval.value = M_IU; return MMOD; 1565 YY_BREAK 1566case 92: 1567YY_RULE_SETUP 1568#line 151 "./config/bfin-lex.l" 1569yylval.value = M_ISS2; return MMOD; 1570 YY_BREAK 1571case 93: 1572YY_RULE_SETUP 1573#line 152 "./config/bfin-lex.l" 1574yylval.value = M_IS; return MMOD; 1575 YY_BREAK 1576case 94: 1577YY_RULE_SETUP 1578#line 153 "./config/bfin-lex.l" 1579yylval.value = M_IH; return MMOD; 1580 YY_BREAK 1581case 95: 1582YY_RULE_SETUP 1583#line 154 "./config/bfin-lex.l" 1584return IF; 1585 YY_BREAK 1586case 96: 1587YY_RULE_SETUP 1588#line 155 "./config/bfin-lex.l" 1589return parse_halfreg (&yylval.reg, T_REG_I, yytext); 1590 YY_BREAK 1591case 97: 1592YY_RULE_SETUP 1593#line 156 "./config/bfin-lex.l" 1594return parse_reg (&yylval.reg, T_REG_I, yytext); 1595 YY_BREAK 1596case 98: 1597YY_RULE_SETUP 1598#line 157 "./config/bfin-lex.l" 1599return HLT; 1600 YY_BREAK 1601case 99: 1602YY_RULE_SETUP 1603#line 158 "./config/bfin-lex.l" 1604return HI; 1605 YY_BREAK 1606case 100: 1607YY_RULE_SETUP 1608#line 159 "./config/bfin-lex.l" 1609return GT; 1610 YY_BREAK 1611case 101: 1612YY_RULE_SETUP 1613#line 160 "./config/bfin-lex.l" 1614return GE; 1615 YY_BREAK 1616case 102: 1617YY_RULE_SETUP 1618#line 161 "./config/bfin-lex.l" 1619yylval.value = M_FU; return MMOD; 1620 YY_BREAK 1621case 103: 1622YY_RULE_SETUP 1623#line 162 "./config/bfin-lex.l" 1624_REG.regno = REG_FP; return REG; 1625 YY_BREAK 1626case 104: 1627YY_RULE_SETUP 1628#line 163 "./config/bfin-lex.l" 1629_REG.regno = REG_FP; _REG.flags = F_REG_LOW; return HALF_REG; 1630 YY_BREAK 1631case 105: 1632YY_RULE_SETUP 1633#line 164 "./config/bfin-lex.l" 1634_REG.regno = REG_FP; _REG.flags = F_REG_HIGH; return HALF_REG; 1635 YY_BREAK 1636case 106: 1637YY_RULE_SETUP 1638#line 166 "./config/bfin-lex.l" 1639return EXTRACT; 1640 YY_BREAK 1641case 107: 1642YY_RULE_SETUP 1643#line 167 "./config/bfin-lex.l" 1644return EXPADJ; 1645 YY_BREAK 1646case 108: 1647YY_RULE_SETUP 1648#line 168 "./config/bfin-lex.l" 1649return EXCPT; 1650 YY_BREAK 1651case 109: 1652YY_RULE_SETUP 1653#line 169 "./config/bfin-lex.l" 1654return EMUEXCPT; 1655 YY_BREAK 1656case 110: 1657YY_RULE_SETUP 1658#line 170 "./config/bfin-lex.l" 1659return DIVS; 1660 YY_BREAK 1661case 111: 1662YY_RULE_SETUP 1663#line 171 "./config/bfin-lex.l" 1664return DIVQ; 1665 YY_BREAK 1666case 112: 1667YY_RULE_SETUP 1668#line 172 "./config/bfin-lex.l" 1669return DISALGNEXCPT; 1670 YY_BREAK 1671case 113: 1672YY_RULE_SETUP 1673#line 173 "./config/bfin-lex.l" 1674return DEPOSIT; 1675 YY_BREAK 1676case 114: 1677YY_RULE_SETUP 1678#line 174 "./config/bfin-lex.l" 1679return DBGHALT; 1680 YY_BREAK 1681case 115: 1682YY_RULE_SETUP 1683#line 175 "./config/bfin-lex.l" 1684return DBGCMPLX; 1685 YY_BREAK 1686case 116: 1687YY_RULE_SETUP 1688#line 176 "./config/bfin-lex.l" 1689return DBGAL; 1690 YY_BREAK 1691case 117: 1692YY_RULE_SETUP 1693#line 177 "./config/bfin-lex.l" 1694return DBGAH; 1695 YY_BREAK 1696case 118: 1697YY_RULE_SETUP 1698#line 178 "./config/bfin-lex.l" 1699return DBGA; 1700 YY_BREAK 1701case 119: 1702YY_RULE_SETUP 1703#line 179 "./config/bfin-lex.l" 1704return DBG; 1705 YY_BREAK 1706case 120: 1707YY_RULE_SETUP 1708#line 180 "./config/bfin-lex.l" 1709{ _REG.regno = REG_CYCLES2; return REG; } 1710 YY_BREAK 1711case 121: 1712YY_RULE_SETUP 1713#line 181 "./config/bfin-lex.l" 1714{ _REG.regno = REG_CYCLES; return REG; } 1715 YY_BREAK 1716case 122: 1717YY_RULE_SETUP 1718#line 182 "./config/bfin-lex.l" 1719return CSYNC; 1720 YY_BREAK 1721case 123: 1722YY_RULE_SETUP 1723#line 183 "./config/bfin-lex.l" 1724return CO; 1725 YY_BREAK 1726case 124: 1727YY_RULE_SETUP 1728#line 184 "./config/bfin-lex.l" 1729return CLI; 1730 YY_BREAK 1731case 125: 1732YY_RULE_SETUP 1733#line 186 "./config/bfin-lex.l" 1734_REG.regno = REG_CC; return CCREG; 1735 YY_BREAK 1736case 126: 1737YY_RULE_SETUP 1738#line 187 "./config/bfin-lex.l" 1739{ BEGIN 0; return CALL;} 1740 YY_BREAK 1741case 127: 1742YY_RULE_SETUP 1743#line 188 "./config/bfin-lex.l" 1744{ BEGIN 0; return CALL;} 1745 YY_BREAK 1746case 128: 1747YY_RULE_SETUP 1748#line 189 "./config/bfin-lex.l" 1749return BYTEUNPACK; 1750 YY_BREAK 1751case 129: 1752YY_RULE_SETUP 1753#line 190 "./config/bfin-lex.l" 1754return BYTEPACK; 1755 YY_BREAK 1756case 130: 1757YY_RULE_SETUP 1758#line 191 "./config/bfin-lex.l" 1759return BYTEOP16M; 1760 YY_BREAK 1761case 131: 1762YY_RULE_SETUP 1763#line 192 "./config/bfin-lex.l" 1764return BYTEOP16P; 1765 YY_BREAK 1766case 132: 1767YY_RULE_SETUP 1768#line 193 "./config/bfin-lex.l" 1769return BYTEOP3P; 1770 YY_BREAK 1771case 133: 1772YY_RULE_SETUP 1773#line 194 "./config/bfin-lex.l" 1774return BYTEOP2P; 1775 YY_BREAK 1776case 134: 1777YY_RULE_SETUP 1778#line 195 "./config/bfin-lex.l" 1779return BYTEOP1P; 1780 YY_BREAK 1781case 135: 1782YY_RULE_SETUP 1783#line 196 "./config/bfin-lex.l" 1784return BY; 1785 YY_BREAK 1786case 136: 1787YY_RULE_SETUP 1788#line 197 "./config/bfin-lex.l" 1789return BXORSHIFT; 1790 YY_BREAK 1791case 137: 1792YY_RULE_SETUP 1793#line 198 "./config/bfin-lex.l" 1794return BXOR; 1795 YY_BREAK 1796case 138: 1797YY_RULE_SETUP 1798#line 200 "./config/bfin-lex.l" 1799return BREV; 1800 YY_BREAK 1801case 139: 1802YY_RULE_SETUP 1803#line 201 "./config/bfin-lex.l" 1804return BP; 1805 YY_BREAK 1806case 140: 1807YY_RULE_SETUP 1808#line 202 "./config/bfin-lex.l" 1809return BITTST; 1810 YY_BREAK 1811case 141: 1812YY_RULE_SETUP 1813#line 203 "./config/bfin-lex.l" 1814return BITTGL; 1815 YY_BREAK 1816case 142: 1817YY_RULE_SETUP 1818#line 204 "./config/bfin-lex.l" 1819return BITSET; 1820 YY_BREAK 1821case 143: 1822YY_RULE_SETUP 1823#line 205 "./config/bfin-lex.l" 1824return BITMUX; 1825 YY_BREAK 1826case 144: 1827YY_RULE_SETUP 1828#line 206 "./config/bfin-lex.l" 1829return BITCLR; 1830 YY_BREAK 1831case 145: 1832YY_RULE_SETUP 1833#line 207 "./config/bfin-lex.l" 1834return parse_halfreg (&yylval.reg, T_REG_B, yytext); 1835 YY_BREAK 1836case 146: 1837YY_RULE_SETUP 1838#line 208 "./config/bfin-lex.l" 1839return parse_reg (&yylval.reg, T_REG_B, yytext); 1840 YY_BREAK 1841case 147: 1842YY_RULE_SETUP 1843#line 209 "./config/bfin-lex.l" 1844return B; 1845 YY_BREAK 1846case 148: 1847YY_RULE_SETUP 1848#line 210 "./config/bfin-lex.l" 1849_REG.regno = S_AZ; return STATUS_REG; 1850 YY_BREAK 1851case 149: 1852YY_RULE_SETUP 1853#line 211 "./config/bfin-lex.l" 1854_REG.regno = S_AN; return STATUS_REG; 1855 YY_BREAK 1856case 150: 1857YY_RULE_SETUP 1858#line 212 "./config/bfin-lex.l" 1859_REG.regno = S_AC0_COPY; return STATUS_REG; 1860 YY_BREAK 1861case 151: 1862YY_RULE_SETUP 1863#line 213 "./config/bfin-lex.l" 1864_REG.regno = S_V_COPY; return STATUS_REG; 1865 YY_BREAK 1866case 152: 1867YY_RULE_SETUP 1868#line 214 "./config/bfin-lex.l" 1869_REG.regno = S_AQ; return STATUS_REG; 1870 YY_BREAK 1871case 153: 1872YY_RULE_SETUP 1873#line 215 "./config/bfin-lex.l" 1874_REG.regno = S_AC0; return STATUS_REG; 1875 YY_BREAK 1876case 154: 1877YY_RULE_SETUP 1878#line 216 "./config/bfin-lex.l" 1879_REG.regno = S_AC1; return STATUS_REG; 1880 YY_BREAK 1881case 155: 1882YY_RULE_SETUP 1883#line 217 "./config/bfin-lex.l" 1884_REG.regno = S_AV0; return STATUS_REG; 1885 YY_BREAK 1886case 156: 1887YY_RULE_SETUP 1888#line 218 "./config/bfin-lex.l" 1889_REG.regno = S_AV0S; return STATUS_REG; 1890 YY_BREAK 1891case 157: 1892YY_RULE_SETUP 1893#line 219 "./config/bfin-lex.l" 1894_REG.regno = S_AV1; return STATUS_REG; 1895 YY_BREAK 1896case 158: 1897YY_RULE_SETUP 1898#line 220 "./config/bfin-lex.l" 1899_REG.regno = S_AV1S; return STATUS_REG; 1900 YY_BREAK 1901case 159: 1902YY_RULE_SETUP 1903#line 221 "./config/bfin-lex.l" 1904_REG.regno = S_VS; return STATUS_REG; 1905 YY_BREAK 1906case 160: 1907YY_RULE_SETUP 1908#line 222 "./config/bfin-lex.l" 1909_REG.regno = S_RND_MOD; return STATUS_REG; 1910 YY_BREAK 1911case 161: 1912YY_RULE_SETUP 1913#line 225 "./config/bfin-lex.l" 1914_REG.regno = REG_ASTAT; return REG; 1915 YY_BREAK 1916case 162: 1917YY_RULE_SETUP 1918#line 226 "./config/bfin-lex.l" 1919return ASHIFT; 1920 YY_BREAK 1921case 163: 1922YY_RULE_SETUP 1923#line 227 "./config/bfin-lex.l" 1924return ASL; 1925 YY_BREAK 1926case 164: 1927YY_RULE_SETUP 1928#line 228 "./config/bfin-lex.l" 1929return ASR; 1930 YY_BREAK 1931case 165: 1932YY_RULE_SETUP 1933#line 229 "./config/bfin-lex.l" 1934return ALIGN8; 1935 YY_BREAK 1936case 166: 1937YY_RULE_SETUP 1938#line 230 "./config/bfin-lex.l" 1939return ALIGN16; 1940 YY_BREAK 1941case 167: 1942YY_RULE_SETUP 1943#line 231 "./config/bfin-lex.l" 1944return ALIGN24; 1945 YY_BREAK 1946case 168: 1947YY_RULE_SETUP 1948#line 232 "./config/bfin-lex.l" 1949return A_ONE_DOT_L; 1950 YY_BREAK 1951case 169: 1952YY_RULE_SETUP 1953#line 233 "./config/bfin-lex.l" 1954return A_ZERO_DOT_L; 1955 YY_BREAK 1956case 170: 1957YY_RULE_SETUP 1958#line 234 "./config/bfin-lex.l" 1959return A_ONE_DOT_H; 1960 YY_BREAK 1961case 171: 1962YY_RULE_SETUP 1963#line 235 "./config/bfin-lex.l" 1964return A_ZERO_DOT_H; 1965 YY_BREAK 1966case 172: 1967YY_RULE_SETUP 1968#line 236 "./config/bfin-lex.l" 1969return ABS; 1970 YY_BREAK 1971case 173: 1972YY_RULE_SETUP 1973#line 237 "./config/bfin-lex.l" 1974return ABORT; 1975 YY_BREAK 1976case 174: 1977YY_RULE_SETUP 1978#line 238 "./config/bfin-lex.l" 1979_REG.regno = REG_A1x; return REG; 1980 YY_BREAK 1981case 175: 1982YY_RULE_SETUP 1983#line 239 "./config/bfin-lex.l" 1984_REG.regno = REG_A1w; return REG; 1985 YY_BREAK 1986case 176: 1987YY_RULE_SETUP 1988#line 240 "./config/bfin-lex.l" 1989_REG.regno = REG_A1; return REG_A_DOUBLE_ONE; 1990 YY_BREAK 1991case 177: 1992YY_RULE_SETUP 1993#line 241 "./config/bfin-lex.l" 1994_REG.regno = REG_A0x; return REG; 1995 YY_BREAK 1996case 178: 1997YY_RULE_SETUP 1998#line 242 "./config/bfin-lex.l" 1999_REG.regno = REG_A0w; return REG; 2000 YY_BREAK 2001case 179: 2002YY_RULE_SETUP 2003#line 243 "./config/bfin-lex.l" 2004_REG.regno = REG_A0; return REG_A_DOUBLE_ZERO; 2005 YY_BREAK 2006case 180: 2007YY_RULE_SETUP 2008#line 244 "./config/bfin-lex.l" 2009return GOT; 2010 YY_BREAK 2011case 181: 2012YY_RULE_SETUP 2013#line 245 "./config/bfin-lex.l" 2014return GOT17M4; 2015 YY_BREAK 2016case 182: 2017YY_RULE_SETUP 2018#line 246 "./config/bfin-lex.l" 2019return FUNCDESC_GOT17M4; 2020 YY_BREAK 2021case 183: 2022YY_RULE_SETUP 2023#line 247 "./config/bfin-lex.l" 2024return PLTPC; 2025 YY_BREAK 2026case 184: 2027YY_RULE_SETUP 2028#line 250 "./config/bfin-lex.l" 2029return TILDA; 2030 YY_BREAK 2031case 185: 2032YY_RULE_SETUP 2033#line 251 "./config/bfin-lex.l" 2034return _BAR_ASSIGN; 2035 YY_BREAK 2036case 186: 2037YY_RULE_SETUP 2038#line 252 "./config/bfin-lex.l" 2039return BAR; 2040 YY_BREAK 2041case 187: 2042YY_RULE_SETUP 2043#line 253 "./config/bfin-lex.l" 2044return _CARET_ASSIGN; 2045 YY_BREAK 2046case 188: 2047YY_RULE_SETUP 2048#line 254 "./config/bfin-lex.l" 2049return CARET; 2050 YY_BREAK 2051case 189: 2052YY_RULE_SETUP 2053#line 255 "./config/bfin-lex.l" 2054return RBRACK; 2055 YY_BREAK 2056case 190: 2057YY_RULE_SETUP 2058#line 256 "./config/bfin-lex.l" 2059return LBRACK; 2060 YY_BREAK 2061case 191: 2062YY_RULE_SETUP 2063#line 257 "./config/bfin-lex.l" 2064return _GREATER_GREATER_GREATER_THAN_ASSIGN; 2065 YY_BREAK 2066case 192: 2067YY_RULE_SETUP 2068#line 258 "./config/bfin-lex.l" 2069return _GREATER_GREATER_ASSIGN; 2070 YY_BREAK 2071case 193: 2072YY_RULE_SETUP 2073#line 259 "./config/bfin-lex.l" 2074return _GREATER_GREATER_GREATER; 2075 YY_BREAK 2076case 194: 2077YY_RULE_SETUP 2078#line 260 "./config/bfin-lex.l" 2079return GREATER_GREATER; 2080 YY_BREAK 2081case 195: 2082YY_RULE_SETUP 2083#line 261 "./config/bfin-lex.l" 2084return _ASSIGN_ASSIGN; 2085 YY_BREAK 2086case 196: 2087YY_RULE_SETUP 2088#line 262 "./config/bfin-lex.l" 2089return ASSIGN; 2090 YY_BREAK 2091case 197: 2092YY_RULE_SETUP 2093#line 263 "./config/bfin-lex.l" 2094return _LESS_THAN_ASSIGN; 2095 YY_BREAK 2096case 198: 2097YY_RULE_SETUP 2098#line 264 "./config/bfin-lex.l" 2099return _LESS_LESS_ASSIGN; 2100 YY_BREAK 2101case 199: 2102YY_RULE_SETUP 2103#line 265 "./config/bfin-lex.l" 2104return LESS_LESS; 2105 YY_BREAK 2106case 200: 2107YY_RULE_SETUP 2108#line 266 "./config/bfin-lex.l" 2109return LESS_THAN; 2110 YY_BREAK 2111case 201: 2112YY_RULE_SETUP 2113#line 267 "./config/bfin-lex.l" 2114BEGIN(FLAGS); return LPAREN; 2115 YY_BREAK 2116case 202: 2117YY_RULE_SETUP 2118#line 268 "./config/bfin-lex.l" 2119BEGIN(INITIAL); return RPAREN; 2120 YY_BREAK 2121case 203: 2122YY_RULE_SETUP 2123#line 269 "./config/bfin-lex.l" 2124return COLON; 2125 YY_BREAK 2126case 204: 2127YY_RULE_SETUP 2128#line 270 "./config/bfin-lex.l" 2129return SLASH; 2130 YY_BREAK 2131case 205: 2132YY_RULE_SETUP 2133#line 271 "./config/bfin-lex.l" 2134return _MINUS_ASSIGN; 2135 YY_BREAK 2136case 206: 2137YY_RULE_SETUP 2138#line 272 "./config/bfin-lex.l" 2139return _PLUS_BAR_PLUS; 2140 YY_BREAK 2141case 207: 2142YY_RULE_SETUP 2143#line 273 "./config/bfin-lex.l" 2144return _MINUS_BAR_PLUS; 2145 YY_BREAK 2146case 208: 2147YY_RULE_SETUP 2148#line 274 "./config/bfin-lex.l" 2149return _PLUS_BAR_MINUS; 2150 YY_BREAK 2151case 209: 2152YY_RULE_SETUP 2153#line 275 "./config/bfin-lex.l" 2154return _MINUS_BAR_MINUS; 2155 YY_BREAK 2156case 210: 2157YY_RULE_SETUP 2158#line 276 "./config/bfin-lex.l" 2159return _MINUS_MINUS; 2160 YY_BREAK 2161case 211: 2162YY_RULE_SETUP 2163#line 277 "./config/bfin-lex.l" 2164return MINUS; 2165 YY_BREAK 2166case 212: 2167YY_RULE_SETUP 2168#line 278 "./config/bfin-lex.l" 2169return COMMA; 2170 YY_BREAK 2171case 213: 2172YY_RULE_SETUP 2173#line 279 "./config/bfin-lex.l" 2174return _PLUS_ASSIGN; 2175 YY_BREAK 2176case 214: 2177YY_RULE_SETUP 2178#line 280 "./config/bfin-lex.l" 2179return _PLUS_PLUS; 2180 YY_BREAK 2181case 215: 2182YY_RULE_SETUP 2183#line 281 "./config/bfin-lex.l" 2184return PLUS; 2185 YY_BREAK 2186case 216: 2187YY_RULE_SETUP 2188#line 282 "./config/bfin-lex.l" 2189return _STAR_ASSIGN; 2190 YY_BREAK 2191case 217: 2192YY_RULE_SETUP 2193#line 283 "./config/bfin-lex.l" 2194return STAR; 2195 YY_BREAK 2196case 218: 2197YY_RULE_SETUP 2198#line 284 "./config/bfin-lex.l" 2199return _AMPERSAND_ASSIGN; 2200 YY_BREAK 2201case 219: 2202YY_RULE_SETUP 2203#line 285 "./config/bfin-lex.l" 2204return AMPERSAND; 2205 YY_BREAK 2206case 220: 2207YY_RULE_SETUP 2208#line 286 "./config/bfin-lex.l" 2209return PERCENT; 2210 YY_BREAK 2211case 221: 2212YY_RULE_SETUP 2213#line 287 "./config/bfin-lex.l" 2214return BANG; 2215 YY_BREAK 2216case 222: 2217YY_RULE_SETUP 2218#line 288 "./config/bfin-lex.l" 2219return SEMICOLON; 2220 YY_BREAK 2221case 223: 2222YY_RULE_SETUP 2223#line 289 "./config/bfin-lex.l" 2224return _ASSIGN_BANG; 2225 YY_BREAK 2226case 224: 2227YY_RULE_SETUP 2228#line 290 "./config/bfin-lex.l" 2229return DOUBLE_BAR; 2230 YY_BREAK 2231case 225: 2232YY_RULE_SETUP 2233#line 291 "./config/bfin-lex.l" 2234return AT; 2235 YY_BREAK 2236case 226: 2237YY_RULE_SETUP 2238#line 292 "./config/bfin-lex.l" 2239return PREFETCH; 2240 YY_BREAK 2241case 227: 2242YY_RULE_SETUP 2243#line 293 "./config/bfin-lex.l" 2244return UNLINK; 2245 YY_BREAK 2246case 228: 2247YY_RULE_SETUP 2248#line 294 "./config/bfin-lex.l" 2249return LINK; 2250 YY_BREAK 2251case 229: 2252YY_RULE_SETUP 2253#line 295 "./config/bfin-lex.l" 2254return IDLE; 2255 YY_BREAK 2256case 230: 2257YY_RULE_SETUP 2258#line 296 "./config/bfin-lex.l" 2259return IFLUSH; 2260 YY_BREAK 2261case 231: 2262YY_RULE_SETUP 2263#line 297 "./config/bfin-lex.l" 2264return FLUSHINV; 2265 YY_BREAK 2266case 232: 2267YY_RULE_SETUP 2268#line 298 "./config/bfin-lex.l" 2269return FLUSH; 2270 YY_BREAK 2271case 233: 2272YY_RULE_SETUP 2273#line 299 "./config/bfin-lex.l" 2274{ 2275 yylval.value = parse_int (&yytext); 2276 return NUMBER; 2277 } 2278 YY_BREAK 2279case 234: 2280YY_RULE_SETUP 2281#line 303 "./config/bfin-lex.l" 2282{ 2283 yylval.symbol = symbol_find_or_make (yytext); 2284 symbol_mark_used (yylval.symbol); 2285 return SYMBOL; 2286 } 2287 YY_BREAK 2288case 235: 2289YY_RULE_SETUP 2290#line 308 "./config/bfin-lex.l" 2291{ 2292 char *name; 2293 char *ref = strdup (yytext); 2294 if (ref[1] == 'b' || ref[1] == 'B') 2295 { 2296 name = fb_label_name ((int) (ref[0] - '0'), 0); 2297 yylval.symbol = symbol_find (name); 2298 2299 if ((yylval.symbol != NULL) 2300 && (S_IS_DEFINED (yylval.symbol))) 2301 return SYMBOL; 2302 as_bad ("backward reference to unknown label %d:", 2303 (int) (ref[0] - '0')); 2304 } 2305 else if (ref[1] == 'f' || ref[1] == 'F') 2306 { 2307 /* Forward reference. Expect symbol to be undefined or 2308 unknown. undefined: seen it before. unknown: never seen 2309 it before. 2310 2311 Construct a local label name, then an undefined symbol. 2312 Just return it as never seen before. */ 2313 2314 name = fb_label_name ((int) (ref[0] - '0'), 1); 2315 yylval.symbol = symbol_find_or_make (name); 2316 /* We have no need to check symbol properties. */ 2317 return SYMBOL; 2318 } 2319 } 2320 YY_BREAK 2321case 236: 2322/* rule 236 can match eol */ 2323YY_RULE_SETUP 2324#line 337 "./config/bfin-lex.l" 2325; 2326 YY_BREAK 2327case 237: 2328YY_RULE_SETUP 2329#line 338 "./config/bfin-lex.l" 2330; 2331 YY_BREAK 2332case 238: 2333YY_RULE_SETUP 2334#line 339 "./config/bfin-lex.l" 2335return yytext[0]; 2336 YY_BREAK 2337case 239: 2338YY_RULE_SETUP 2339#line 340 "./config/bfin-lex.l" 2340ECHO; 2341 YY_BREAK 2342#line 2343 "bfin-lex.c" 2343case YY_STATE_EOF(INITIAL): 2344case YY_STATE_EOF(KEYWORD): 2345case YY_STATE_EOF(FLAGS): 2346 yyterminate(); 2347 2348 case YY_END_OF_BUFFER: 2349 { 2350 /* Amount of text matched not including the EOB char. */ 2351 int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; 2352 2353 /* Undo the effects of YY_DO_BEFORE_ACTION. */ 2354 *yy_cp = (yy_hold_char); 2355 YY_RESTORE_YY_MORE_OFFSET 2356 2357 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) 2358 { 2359 /* We're scanning a new file or input source. It's 2360 * possible that this happened because the user 2361 * just pointed yyin at a new source and called 2362 * yylex(). If so, then we have to assure 2363 * consistency between YY_CURRENT_BUFFER and our 2364 * globals. Here is the right place to do so, because 2365 * this is the first action (other than possibly a 2366 * back-up) that will match for the new input source. 2367 */ 2368 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; 2369 YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; 2370 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; 2371 } 2372 2373 /* Note that here we test for yy_c_buf_p "<=" to the position 2374 * of the first EOB in the buffer, since yy_c_buf_p will 2375 * already have been incremented past the NUL character 2376 * (since all states make transitions on EOB to the 2377 * end-of-buffer state). Contrast this with the test 2378 * in input(). 2379 */ 2380 if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) 2381 { /* This was really a NUL. */ 2382 yy_state_type yy_next_state; 2383 2384 (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; 2385 2386 yy_current_state = yy_get_previous_state( ); 2387 2388 /* Okay, we're now positioned to make the NUL 2389 * transition. We couldn't have 2390 * yy_get_previous_state() go ahead and do it 2391 * for us because it doesn't know how to deal 2392 * with the possibility of jamming (and we don't 2393 * want to build jamming into it because then it 2394 * will run more slowly). 2395 */ 2396 2397 yy_next_state = yy_try_NUL_trans( yy_current_state ); 2398 2399 yy_bp = (yytext_ptr) + YY_MORE_ADJ; 2400 2401 if ( yy_next_state ) 2402 { 2403 /* Consume the NUL. */ 2404 yy_cp = ++(yy_c_buf_p); 2405 yy_current_state = yy_next_state; 2406 goto yy_match; 2407 } 2408 2409 else 2410 { 2411 yy_cp = (yy_c_buf_p); 2412 goto yy_find_action; 2413 } 2414 } 2415 2416 else switch ( yy_get_next_buffer( ) ) 2417 { 2418 case EOB_ACT_END_OF_FILE: 2419 { 2420 (yy_did_buffer_switch_on_eof) = 0; 2421 2422 if ( yywrap( ) ) 2423 { 2424 /* Note: because we've taken care in 2425 * yy_get_next_buffer() to have set up 2426 * yytext, we can now set up 2427 * yy_c_buf_p so that if some total 2428 * hoser (like flex itself) wants to 2429 * call the scanner after we return the 2430 * YY_NULL, it'll still work - another 2431 * YY_NULL will get returned. 2432 */ 2433 (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; 2434 2435 yy_act = YY_STATE_EOF(YY_START); 2436 goto do_action; 2437 } 2438 2439 else 2440 { 2441 if ( ! (yy_did_buffer_switch_on_eof) ) 2442 YY_NEW_FILE; 2443 } 2444 break; 2445 } 2446 2447 case EOB_ACT_CONTINUE_SCAN: 2448 (yy_c_buf_p) = 2449 (yytext_ptr) + yy_amount_of_matched_text; 2450 2451 yy_current_state = yy_get_previous_state( ); 2452 2453 yy_cp = (yy_c_buf_p); 2454 yy_bp = (yytext_ptr) + YY_MORE_ADJ; 2455 goto yy_match; 2456 2457 case EOB_ACT_LAST_MATCH: 2458 (yy_c_buf_p) = 2459 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; 2460 2461 yy_current_state = yy_get_previous_state( ); 2462 2463 yy_cp = (yy_c_buf_p); 2464 yy_bp = (yytext_ptr) + YY_MORE_ADJ; 2465 goto yy_find_action; 2466 } 2467 break; 2468 } 2469 2470 default: 2471 YY_FATAL_ERROR( 2472 "fatal flex scanner internal error--no action found" ); 2473 } /* end of action switch */ 2474 } /* end of scanning one token */ 2475} /* end of yylex */ 2476 2477/* yy_get_next_buffer - try to read in a new buffer 2478 * 2479 * Returns a code representing an action: 2480 * EOB_ACT_LAST_MATCH - 2481 * EOB_ACT_CONTINUE_SCAN - continue scanning from current position 2482 * EOB_ACT_END_OF_FILE - end of file 2483 */ 2484static int yy_get_next_buffer (void) 2485{ 2486 register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; 2487 register char *source = (yytext_ptr); 2488 register int number_to_move, i; 2489 int ret_val; 2490 2491 if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) 2492 YY_FATAL_ERROR( 2493 "fatal flex scanner internal error--end of buffer missed" ); 2494 2495 if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) 2496 { /* Don't try to fill the buffer, so this is an EOF. */ 2497 if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) 2498 { 2499 /* We matched a single character, the EOB, so 2500 * treat this as a final EOF. 2501 */ 2502 return EOB_ACT_END_OF_FILE; 2503 } 2504 2505 else 2506 { 2507 /* We matched some text prior to the EOB, first 2508 * process it. 2509 */ 2510 return EOB_ACT_LAST_MATCH; 2511 } 2512 } 2513 2514 /* Try to read more data. */ 2515 2516 /* First move last chars to start of buffer. */ 2517 number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1; 2518 2519 for ( i = 0; i < number_to_move; ++i ) 2520 *(dest++) = *(source++); 2521 2522 if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) 2523 /* don't do the read, it's not guaranteed to return an EOF, 2524 * just force an EOF 2525 */ 2526 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; 2527 2528 else 2529 { 2530 yy_size_t num_to_read = 2531 YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; 2532 2533 while ( num_to_read <= 0 ) 2534 { /* Not enough room in the buffer - grow it. */ 2535 2536 /* just a shorter name for the current buffer */ 2537 YY_BUFFER_STATE b = YY_CURRENT_BUFFER; 2538 2539 int yy_c_buf_p_offset = 2540 (int) ((yy_c_buf_p) - b->yy_ch_buf); 2541 2542 if ( b->yy_is_our_buffer ) 2543 { 2544 yy_size_t new_size = b->yy_buf_size * 2; 2545 2546 if ( new_size <= 0 ) 2547 b->yy_buf_size += b->yy_buf_size / 8; 2548 else 2549 b->yy_buf_size *= 2; 2550 2551 b->yy_ch_buf = (char *) 2552 /* Include room in for 2 EOB chars. */ 2553 yyrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ); 2554 } 2555 else 2556 /* Can't grow it, we don't own it. */ 2557 b->yy_ch_buf = 0; 2558 2559 if ( ! b->yy_ch_buf ) 2560 YY_FATAL_ERROR( 2561 "fatal error - scanner input buffer overflow" ); 2562 2563 (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; 2564 2565 num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - 2566 number_to_move - 1; 2567 2568 } 2569 2570 if ( num_to_read > YY_READ_BUF_SIZE ) 2571 num_to_read = YY_READ_BUF_SIZE; 2572 2573 /* Read in more data. */ 2574 YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), 2575 (yy_n_chars), num_to_read ); 2576 2577 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); 2578 } 2579 2580 if ( (yy_n_chars) == 0 ) 2581 { 2582 if ( number_to_move == YY_MORE_ADJ ) 2583 { 2584 ret_val = EOB_ACT_END_OF_FILE; 2585 yyrestart(yyin ); 2586 } 2587 2588 else 2589 { 2590 ret_val = EOB_ACT_LAST_MATCH; 2591 YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = 2592 YY_BUFFER_EOF_PENDING; 2593 } 2594 } 2595 2596 else 2597 ret_val = EOB_ACT_CONTINUE_SCAN; 2598 2599 if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { 2600 /* Extend the array by 50%, plus the number we really need. */ 2601 yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); 2602 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ); 2603 if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) 2604 YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); 2605 } 2606 2607 (yy_n_chars) += number_to_move; 2608 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; 2609 YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; 2610 2611 (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; 2612 2613 return ret_val; 2614} 2615 2616/* yy_get_previous_state - get the state just before the EOB char was reached */ 2617 2618 static yy_state_type yy_get_previous_state (void) 2619{ 2620 register yy_state_type yy_current_state; 2621 register char *yy_cp; 2622 2623 yy_current_state = (yy_start); 2624 2625 for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) 2626 { 2627 register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); 2628 if ( yy_accept[yy_current_state] ) 2629 { 2630 (yy_last_accepting_state) = yy_current_state; 2631 (yy_last_accepting_cpos) = yy_cp; 2632 } 2633 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) 2634 { 2635 yy_current_state = (int) yy_def[yy_current_state]; 2636 if ( yy_current_state >= 571 ) 2637 yy_c = yy_meta[(unsigned int) yy_c]; 2638 } 2639 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; 2640 } 2641 2642 return yy_current_state; 2643} 2644 2645/* yy_try_NUL_trans - try to make a transition on the NUL character 2646 * 2647 * synopsis 2648 * next_state = yy_try_NUL_trans( current_state ); 2649 */ 2650 static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) 2651{ 2652 register int yy_is_jam; 2653 register char *yy_cp = (yy_c_buf_p); 2654 2655 register YY_CHAR yy_c = 1; 2656 if ( yy_accept[yy_current_state] ) 2657 { 2658 (yy_last_accepting_state) = yy_current_state; 2659 (yy_last_accepting_cpos) = yy_cp; 2660 } 2661 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) 2662 { 2663 yy_current_state = (int) yy_def[yy_current_state]; 2664 if ( yy_current_state >= 571 ) 2665 yy_c = yy_meta[(unsigned int) yy_c]; 2666 } 2667 yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; 2668 yy_is_jam = (yy_current_state == 570); 2669 2670 return yy_is_jam ? 0 : yy_current_state; 2671} 2672 2673 static void yyunput (int c, register char * yy_bp ) 2674{ 2675 register char *yy_cp; 2676 2677 yy_cp = (yy_c_buf_p); 2678 2679 /* undo effects of setting up yytext */ 2680 *yy_cp = (yy_hold_char); 2681 2682 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) 2683 { /* need to shift things up to make room */ 2684 /* +2 for EOB chars. */ 2685 register yy_size_t number_to_move = (yy_n_chars) + 2; 2686 register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ 2687 YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; 2688 register char *source = 2689 &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; 2690 2691 while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) 2692 *--dest = *--source; 2693 2694 yy_cp += (int) (dest - source); 2695 yy_bp += (int) (dest - source); 2696 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = 2697 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size; 2698 2699 if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) 2700 YY_FATAL_ERROR( "flex scanner push-back overflow" ); 2701 } 2702 2703 *--yy_cp = (char) c; 2704 2705 (yytext_ptr) = yy_bp; 2706 (yy_hold_char) = *yy_cp; 2707 (yy_c_buf_p) = yy_cp; 2708} 2709 2710#ifndef YY_NO_INPUT 2711#ifdef __cplusplus 2712 static int yyinput (void) 2713#else 2714 static int input (void) 2715#endif 2716 2717{ 2718 int c; 2719 2720 *(yy_c_buf_p) = (yy_hold_char); 2721 2722 if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) 2723 { 2724 /* yy_c_buf_p now points to the character we want to return. 2725 * If this occurs *before* the EOB characters, then it's a 2726 * valid NUL; if not, then we've hit the end of the buffer. 2727 */ 2728 if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) 2729 /* This was really a NUL. */ 2730 *(yy_c_buf_p) = '\0'; 2731 2732 else 2733 { /* need more input */ 2734 yy_size_t offset = (yy_c_buf_p) - (yytext_ptr); 2735 ++(yy_c_buf_p); 2736 2737 switch ( yy_get_next_buffer( ) ) 2738 { 2739 case EOB_ACT_LAST_MATCH: 2740 /* This happens because yy_g_n_b() 2741 * sees that we've accumulated a 2742 * token and flags that we need to 2743 * try matching the token before 2744 * proceeding. But for input(), 2745 * there's no matching to consider. 2746 * So convert the EOB_ACT_LAST_MATCH 2747 * to EOB_ACT_END_OF_FILE. 2748 */ 2749 2750 /* Reset buffer status. */ 2751 yyrestart(yyin ); 2752 2753 /*FALLTHROUGH*/ 2754 2755 case EOB_ACT_END_OF_FILE: 2756 { 2757 if ( yywrap( ) ) 2758 return 0; 2759 2760 if ( ! (yy_did_buffer_switch_on_eof) ) 2761 YY_NEW_FILE; 2762#ifdef __cplusplus 2763 return yyinput(); 2764#else 2765 return input(); 2766#endif 2767 } 2768 2769 case EOB_ACT_CONTINUE_SCAN: 2770 (yy_c_buf_p) = (yytext_ptr) + offset; 2771 break; 2772 } 2773 } 2774 } 2775 2776 c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ 2777 *(yy_c_buf_p) = '\0'; /* preserve yytext */ 2778 (yy_hold_char) = *++(yy_c_buf_p); 2779 2780 return c; 2781} 2782#endif /* ifndef YY_NO_INPUT */ 2783 2784/** Immediately switch to a different input stream. 2785 * @param input_file A readable stream. 2786 * 2787 * @note This function does not reset the start condition to @c INITIAL . 2788 */ 2789 void yyrestart (FILE * input_file ) 2790{ 2791 2792 if ( ! YY_CURRENT_BUFFER ){ 2793 yyensure_buffer_stack (); 2794 YY_CURRENT_BUFFER_LVALUE = 2795 yy_create_buffer(yyin,YY_BUF_SIZE ); 2796 } 2797 2798 yy_init_buffer(YY_CURRENT_BUFFER,input_file ); 2799 yy_load_buffer_state( ); 2800} 2801 2802/** Switch to a different input buffer. 2803 * @param new_buffer The new input buffer. 2804 * 2805 */ 2806 void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) 2807{ 2808 2809 /* TODO. We should be able to replace this entire function body 2810 * with 2811 * yypop_buffer_state(); 2812 * yypush_buffer_state(new_buffer); 2813 */ 2814 yyensure_buffer_stack (); 2815 if ( YY_CURRENT_BUFFER == new_buffer ) 2816 return; 2817 2818 if ( YY_CURRENT_BUFFER ) 2819 { 2820 /* Flush out information for old buffer. */ 2821 *(yy_c_buf_p) = (yy_hold_char); 2822 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); 2823 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); 2824 } 2825 2826 YY_CURRENT_BUFFER_LVALUE = new_buffer; 2827 yy_load_buffer_state( ); 2828 2829 /* We don't actually know whether we did this switch during 2830 * EOF (yywrap()) processing, but the only time this flag 2831 * is looked at is after yywrap() is called, so it's safe 2832 * to go ahead and always set it. 2833 */ 2834 (yy_did_buffer_switch_on_eof) = 1; 2835} 2836 2837static void yy_load_buffer_state (void) 2838{ 2839 (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; 2840 (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; 2841 yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; 2842 (yy_hold_char) = *(yy_c_buf_p); 2843} 2844 2845/** Allocate and initialize an input buffer state. 2846 * @param file A readable stream. 2847 * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. 2848 * 2849 * @return the allocated buffer state. 2850 */ 2851 YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) 2852{ 2853 YY_BUFFER_STATE b; 2854 2855 b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); 2856 if ( ! b ) 2857 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); 2858 2859 b->yy_buf_size = size; 2860 2861 /* yy_ch_buf has to be 2 characters longer than the size given because 2862 * we need to put in 2 end-of-buffer characters. 2863 */ 2864 b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 ); 2865 if ( ! b->yy_ch_buf ) 2866 YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); 2867 2868 b->yy_is_our_buffer = 1; 2869 2870 yy_init_buffer(b,file ); 2871 2872 return b; 2873} 2874 2875/** Destroy the buffer. 2876 * @param b a buffer created with yy_create_buffer() 2877 * 2878 */ 2879 void yy_delete_buffer (YY_BUFFER_STATE b ) 2880{ 2881 2882 if ( ! b ) 2883 return; 2884 2885 if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ 2886 YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; 2887 2888 if ( b->yy_is_our_buffer ) 2889 yyfree((void *) b->yy_ch_buf ); 2890 2891 yyfree((void *) b ); 2892} 2893 2894#ifndef __cplusplus 2895extern int isatty (int ); 2896#endif /* __cplusplus */ 2897 2898/* Initializes or reinitializes a buffer. 2899 * This function is sometimes called more than once on the same buffer, 2900 * such as during a yyrestart() or at EOF. 2901 */ 2902 static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) 2903 2904{ 2905 int oerrno = errno; 2906 2907 yy_flush_buffer(b ); 2908 2909 b->yy_input_file = file; 2910 b->yy_fill_buffer = 1; 2911 2912 /* If b is the current buffer, then yy_init_buffer was _probably_ 2913 * called from yyrestart() or through yy_get_next_buffer. 2914 * In that case, we don't want to reset the lineno or column. 2915 */ 2916 if (b != YY_CURRENT_BUFFER){ 2917 b->yy_bs_lineno = 1; 2918 b->yy_bs_column = 0; 2919 } 2920 2921 b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; 2922 2923 errno = oerrno; 2924} 2925 2926/** Discard all buffered characters. On the next scan, YY_INPUT will be called. 2927 * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. 2928 * 2929 */ 2930 void yy_flush_buffer (YY_BUFFER_STATE b ) 2931{ 2932 if ( ! b ) 2933 return; 2934 2935 b->yy_n_chars = 0; 2936 2937 /* We always need two end-of-buffer characters. The first causes 2938 * a transition to the end-of-buffer state. The second causes 2939 * a jam in that state. 2940 */ 2941 b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; 2942 b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; 2943 2944 b->yy_buf_pos = &b->yy_ch_buf[0]; 2945 2946 b->yy_at_bol = 1; 2947 b->yy_buffer_status = YY_BUFFER_NEW; 2948 2949 if ( b == YY_CURRENT_BUFFER ) 2950 yy_load_buffer_state( ); 2951} 2952 2953/** Pushes the new state onto the stack. The new state becomes 2954 * the current state. This function will allocate the stack 2955 * if necessary. 2956 * @param new_buffer The new state. 2957 * 2958 */ 2959void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) 2960{ 2961 if (new_buffer == NULL) 2962 return; 2963 2964 yyensure_buffer_stack(); 2965 2966 /* This block is copied from yy_switch_to_buffer. */ 2967 if ( YY_CURRENT_BUFFER ) 2968 { 2969 /* Flush out information for old buffer. */ 2970 *(yy_c_buf_p) = (yy_hold_char); 2971 YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); 2972 YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); 2973 } 2974 2975 /* Only push if top exists. Otherwise, replace top. */ 2976 if (YY_CURRENT_BUFFER) 2977 (yy_buffer_stack_top)++; 2978 YY_CURRENT_BUFFER_LVALUE = new_buffer; 2979 2980 /* copied from yy_switch_to_buffer. */ 2981 yy_load_buffer_state( ); 2982 (yy_did_buffer_switch_on_eof) = 1; 2983} 2984 2985/** Removes and deletes the top of the stack, if present. 2986 * The next element becomes the new top. 2987 * 2988 */ 2989void yypop_buffer_state (void) 2990{ 2991 if (!YY_CURRENT_BUFFER) 2992 return; 2993 2994 yy_delete_buffer(YY_CURRENT_BUFFER ); 2995 YY_CURRENT_BUFFER_LVALUE = NULL; 2996 if ((yy_buffer_stack_top) > 0) 2997 --(yy_buffer_stack_top); 2998 2999 if (YY_CURRENT_BUFFER) { 3000 yy_load_buffer_state( ); 3001 (yy_did_buffer_switch_on_eof) = 1; 3002 } 3003} 3004 3005/* Allocates the stack if it does not exist. 3006 * Guarantees space for at least one push. 3007 */ 3008static void yyensure_buffer_stack (void) 3009{ 3010 yy_size_t num_to_alloc; 3011 3012 if (!(yy_buffer_stack)) { 3013 3014 /* First allocation is just for 2 elements, since we don't know if this 3015 * scanner will even need a stack. We use 2 instead of 1 to avoid an 3016 * immediate realloc on the next call. 3017 */ 3018 num_to_alloc = 1; 3019 (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc 3020 (num_to_alloc * sizeof(struct yy_buffer_state*) 3021 ); 3022 if ( ! (yy_buffer_stack) ) 3023 YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); 3024 3025 memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); 3026 3027 (yy_buffer_stack_max) = num_to_alloc; 3028 (yy_buffer_stack_top) = 0; 3029 return; 3030 } 3031 3032 if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ 3033 3034 /* Increase the buffer to prepare for a possible push. */ 3035 int grow_size = 8 /* arbitrary grow size */; 3036 3037 num_to_alloc = (yy_buffer_stack_max) + grow_size; 3038 (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc 3039 ((yy_buffer_stack), 3040 num_to_alloc * sizeof(struct yy_buffer_state*) 3041 ); 3042 if ( ! (yy_buffer_stack) ) 3043 YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); 3044 3045 /* zero only the new slots.*/ 3046 memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); 3047 (yy_buffer_stack_max) = num_to_alloc; 3048 } 3049} 3050 3051/** Setup the input buffer state to scan directly from a user-specified character buffer. 3052 * @param base the character buffer 3053 * @param size the size in bytes of the character buffer 3054 * 3055 * @return the newly allocated buffer state object. 3056 */ 3057YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) 3058{ 3059 YY_BUFFER_STATE b; 3060 3061 if ( size < 2 || 3062 base[size-2] != YY_END_OF_BUFFER_CHAR || 3063 base[size-1] != YY_END_OF_BUFFER_CHAR ) 3064 /* They forgot to leave room for the EOB's. */ 3065 return 0; 3066 3067 b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) ); 3068 if ( ! b ) 3069 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); 3070 3071 b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ 3072 b->yy_buf_pos = b->yy_ch_buf = base; 3073 b->yy_is_our_buffer = 0; 3074 b->yy_input_file = 0; 3075 b->yy_n_chars = b->yy_buf_size; 3076 b->yy_is_interactive = 0; 3077 b->yy_at_bol = 1; 3078 b->yy_fill_buffer = 0; 3079 b->yy_buffer_status = YY_BUFFER_NEW; 3080 3081 yy_switch_to_buffer(b ); 3082 3083 return b; 3084} 3085 3086/** Setup the input buffer state to scan a string. The next call to yylex() will 3087 * scan from a @e copy of @a str. 3088 * @param yystr a NUL-terminated string to scan 3089 * 3090 * @return the newly allocated buffer state object. 3091 * @note If you want to scan bytes that may contain NUL values, then use 3092 * yy_scan_bytes() instead. 3093 */ 3094YY_BUFFER_STATE yy_scan_string (yyconst char * yystr ) 3095{ 3096 3097 return yy_scan_bytes(yystr,strlen(yystr) ); 3098} 3099 3100/** Setup the input buffer state to scan the given bytes. The next call to yylex() will 3101 * scan from a @e copy of @a bytes. 3102 * @param bytes the byte buffer to scan 3103 * @param len the number of bytes in the buffer pointed to by @a bytes. 3104 * 3105 * @return the newly allocated buffer state object. 3106 */ 3107YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, yy_size_t _yybytes_len ) 3108{ 3109 YY_BUFFER_STATE b; 3110 char *buf; 3111 yy_size_t n, i; 3112 3113 /* Get memory for full buffer, including space for trailing EOB's. */ 3114 n = _yybytes_len + 2; 3115 buf = (char *) yyalloc(n ); 3116 if ( ! buf ) 3117 YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); 3118 3119 for ( i = 0; i < _yybytes_len; ++i ) 3120 buf[i] = yybytes[i]; 3121 3122 buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; 3123 3124 b = yy_scan_buffer(buf,n ); 3125 if ( ! b ) 3126 YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); 3127 3128 /* It's okay to grow etc. this buffer, and we should throw it 3129 * away when we're done. 3130 */ 3131 b->yy_is_our_buffer = 1; 3132 3133 return b; 3134} 3135 3136#ifndef YY_EXIT_FAILURE 3137#define YY_EXIT_FAILURE 2 3138#endif 3139 3140static void yy_fatal_error (yyconst char* msg ) 3141{ 3142 (void) fprintf( stderr, "%s\n", msg ); 3143 exit( YY_EXIT_FAILURE ); 3144} 3145 3146/* Redefine yyless() so it works in section 3 code. */ 3147 3148#undef yyless 3149#define yyless(n) \ 3150 do \ 3151 { \ 3152 /* Undo effects of setting up yytext. */ \ 3153 int yyless_macro_arg = (n); \ 3154 YY_LESS_LINENO(yyless_macro_arg);\ 3155 yytext[yyleng] = (yy_hold_char); \ 3156 (yy_c_buf_p) = yytext + yyless_macro_arg; \ 3157 (yy_hold_char) = *(yy_c_buf_p); \ 3158 *(yy_c_buf_p) = '\0'; \ 3159 yyleng = yyless_macro_arg; \ 3160 } \ 3161 while ( 0 ) 3162 3163/* Accessor methods (get/set functions) to struct members. */ 3164 3165/** Get the current line number. 3166 * 3167 */ 3168int yyget_lineno (void) 3169{ 3170 3171 return yylineno; 3172} 3173 3174/** Get the input stream. 3175 * 3176 */ 3177FILE *yyget_in (void) 3178{ 3179 return yyin; 3180} 3181 3182/** Get the output stream. 3183 * 3184 */ 3185FILE *yyget_out (void) 3186{ 3187 return yyout; 3188} 3189 3190/** Get the length of the current token. 3191 * 3192 */ 3193yy_size_t yyget_leng (void) 3194{ 3195 return yyleng; 3196} 3197 3198/** Get the current token. 3199 * 3200 */ 3201 3202char *yyget_text (void) 3203{ 3204 return yytext; 3205} 3206 3207/** Set the current line number. 3208 * @param line_number 3209 * 3210 */ 3211void yyset_lineno (int line_number ) 3212{ 3213 3214 yylineno = line_number; 3215} 3216 3217/** Set the input stream. This does not discard the current 3218 * input buffer. 3219 * @param in_str A readable stream. 3220 * 3221 * @see yy_switch_to_buffer 3222 */ 3223void yyset_in (FILE * in_str ) 3224{ 3225 yyin = in_str ; 3226} 3227 3228void yyset_out (FILE * out_str ) 3229{ 3230 yyout = out_str ; 3231} 3232 3233int yyget_debug (void) 3234{ 3235 return yy_flex_debug; 3236} 3237 3238void yyset_debug (int bdebug ) 3239{ 3240 yy_flex_debug = bdebug ; 3241} 3242 3243static int yy_init_globals (void) 3244{ 3245 /* Initialization is the same as for the non-reentrant scanner. 3246 * This function is called from yylex_destroy(), so don't allocate here. 3247 */ 3248 3249 (yy_buffer_stack) = 0; 3250 (yy_buffer_stack_top) = 0; 3251 (yy_buffer_stack_max) = 0; 3252 (yy_c_buf_p) = (char *) 0; 3253 (yy_init) = 0; 3254 (yy_start) = 0; 3255 3256/* Defined in main.c */ 3257#ifdef YY_STDINIT 3258 yyin = stdin; 3259 yyout = stdout; 3260#else 3261 yyin = (FILE *) 0; 3262 yyout = (FILE *) 0; 3263#endif 3264 3265 /* For future reference: Set errno on error, since we are called by 3266 * yylex_init() 3267 */ 3268 return 0; 3269} 3270 3271/* yylex_destroy is for both reentrant and non-reentrant scanners. */ 3272int yylex_destroy (void) 3273{ 3274 3275 /* Pop the buffer stack, destroying each element. */ 3276 while(YY_CURRENT_BUFFER){ 3277 yy_delete_buffer(YY_CURRENT_BUFFER ); 3278 YY_CURRENT_BUFFER_LVALUE = NULL; 3279 yypop_buffer_state(); 3280 } 3281 3282 /* Destroy the stack itself. */ 3283 yyfree((yy_buffer_stack) ); 3284 (yy_buffer_stack) = NULL; 3285 3286 /* Reset the globals. This is important in a non-reentrant scanner so the next time 3287 * yylex() is called, initialization will occur. */ 3288 yy_init_globals( ); 3289 3290 return 0; 3291} 3292 3293/* 3294 * Internal utility routines. 3295 */ 3296 3297#ifndef yytext_ptr 3298static void yy_flex_strncpy (char* s1, yyconst char * s2, int n ) 3299{ 3300 register int i; 3301 for ( i = 0; i < n; ++i ) 3302 s1[i] = s2[i]; 3303} 3304#endif 3305 3306#ifdef YY_NEED_STRLEN 3307static int yy_flex_strlen (yyconst char * s ) 3308{ 3309 register int n; 3310 for ( n = 0; s[n]; ++n ) 3311 ; 3312 3313 return n; 3314} 3315#endif 3316 3317void *yyalloc (yy_size_t size ) 3318{ 3319 return (void *) malloc( size ); 3320} 3321 3322void *yyrealloc (void * ptr, yy_size_t size ) 3323{ 3324 /* The cast to (char *) in the following accommodates both 3325 * implementations that use char* generic pointers, and those 3326 * that use void* generic pointers. It works with the latter 3327 * because both ANSI C and C++ allow castless assignment from 3328 * any pointer type to void*, and deal with argument conversions 3329 * as though doing an assignment. 3330 */ 3331 return (void *) realloc( (char *) ptr, size ); 3332} 3333 3334void yyfree (void * ptr ) 3335{ 3336 free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ 3337} 3338 3339#define YYTABLES_NAME "yytables" 3340 3341#line 340 "./config/bfin-lex.l" 3342 3343 3344static long parse_int (char **end) 3345{ 3346 char fmt = '\0'; 3347 int not_done = 1; 3348 int shiftvalue = 0; 3349 char * char_bag; 3350 long value = 0; 3351 char *arg = *end; 3352 3353 while (*arg && *arg == ' ') 3354 arg++; 3355 3356 switch (*arg) 3357 { 3358 case '1': 3359 case '2': 3360 case '3': 3361 case '4': 3362 case '5': 3363 case '6': 3364 case '7': 3365 case '8': 3366 case '9': 3367 fmt = 'd'; 3368 break; 3369 3370 case '0': /* Accept different formatted integers hex octal and binary. */ 3371 { 3372 char c = *++arg; 3373 arg++; 3374 if (c == 'x' || c == 'X') /* Hex input. */ 3375 fmt = 'h'; 3376 else if (c == 'b' || c == 'B') 3377 fmt = 'b'; 3378 else if (c == '.') 3379 fmt = 'f'; 3380 else 3381 { /* Octal. */ 3382 arg--; 3383 fmt = 'o'; 3384 } 3385 break; 3386 } 3387 3388 case 'd': 3389 case 'D': 3390 case 'h': 3391 case 'H': 3392 case 'o': 3393 case 'O': 3394 case 'b': 3395 case 'B': 3396 case 'f': 3397 case 'F': 3398 { 3399 fmt = *arg++; 3400 if (*arg == '#') 3401 arg++; 3402 } 3403 } 3404 3405 switch (fmt) 3406 { 3407 case 'h': 3408 case 'H': 3409 shiftvalue = 4; 3410 char_bag = "0123456789ABCDEFabcdef"; 3411 break; 3412 3413 case 'o': 3414 case 'O': 3415 shiftvalue = 3; 3416 char_bag = "01234567"; 3417 break; 3418 3419 case 'b': 3420 case 'B': 3421 shiftvalue = 1; 3422 char_bag = "01"; 3423 break; 3424 3425/* The assembler allows for fractional constants to be created 3426 by either the 0.xxxx or the f#xxxx format 3427 3428 i.e. 0.5 would result in 0x4000 3429 3430 note .5 would result in the identifier .5. 3431 3432 The assembler converts to fractional format 1.15 by the simple rule: 3433 3434 value = (short) (finput * (1 << 15)). */ 3435 3436 case 'f': 3437 case 'F': 3438 { 3439 float fval = 0.0; 3440 float pos = 10.0; 3441 while (1) 3442 { 3443 int c; 3444 c = *arg++; 3445 3446 if (c >= '0' && c <= '9') 3447 { 3448 float digit = (c - '0') / pos; 3449 fval = fval + digit; 3450 pos = pos * 10.0; 3451 } 3452 else 3453 { 3454 *--arg = c; 3455 value = (short) (fval * (1 << 15)); 3456 break; 3457 } 3458 } 3459 *end = arg+1; 3460 return value; 3461 } 3462 3463 case 'd': 3464 case 'D': 3465 default: 3466 { 3467 while (1) 3468 { 3469 char c; 3470 c = *arg++; 3471 if (c >= '0' && c <= '9') 3472 value = (value * 10) + (c - '0'); 3473 else 3474 { 3475 /* Constants that are suffixed with k|K are multiplied by 1024 3476 This suffix is only allowed on decimal constants. */ 3477 if (c == 'k' || c == 'K') 3478 value *= 1024; 3479 else 3480 *--arg = c; 3481 break; 3482 } 3483 } 3484 *end = arg+1; 3485 return value; 3486 } 3487 } 3488 3489 while (not_done) 3490 { 3491 char c; 3492 c = *arg++; 3493 if (c == 0 || !strchr (char_bag, c)) 3494 { 3495 not_done = 0; 3496 *--arg = c; 3497 } 3498 else 3499 { 3500 if (c >= 'a' && c <= 'z') 3501 c = c - ('a' - '9') + 1; 3502 else if (c >= 'A' && c <= 'Z') 3503 c = c - ('A' - '9') + 1; 3504 3505 c -= '0'; 3506 value = (value << shiftvalue) + c; 3507 } 3508 } 3509 *end = arg+1; 3510 return value; 3511} 3512 3513 3514static int parse_reg (Register *r, int cl, char *rt) 3515{ 3516 r->regno = cl | (rt[1] - '0'); 3517 r->flags = F_REG_NONE; 3518 return REG; 3519} 3520 3521static int parse_halfreg (Register *r, int cl, char *rt) 3522{ 3523 r->regno = cl | (rt[1] - '0'); 3524 3525 switch (rt[3]) 3526 { 3527 case 'b': 3528 case 'B': 3529 return BYTE_DREG; 3530 3531 case 'l': 3532 case 'L': 3533 r->flags = F_REG_LOW; 3534 break; 3535 3536 case 'h': 3537 case 'H': 3538 r->flags = F_REG_HIGH; 3539 break; 3540 } 3541 3542 return HALF_REG; 3543} 3544 3545/* Our start state is KEYWORD as we have 3546 command keywords such as PREFETCH. */ 3547 3548void 3549set_start_state (void) 3550{ 3551 BEGIN KEYWORD; 3552} 3553 3554