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