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