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