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