15796c8dcSSimon Schubert #line 2 "ada-lex.c"
25796c8dcSSimon Schubert
3*ef5ccd6cSJohn Marino #line 4 "ada-lex.c"
4*ef5ccd6cSJohn Marino
5*ef5ccd6cSJohn Marino #define YY_INT_ALIGNED short int
6*ef5ccd6cSJohn Marino
7*ef5ccd6cSJohn Marino /* A lexical scanner generated by flex */
85796c8dcSSimon Schubert
95796c8dcSSimon Schubert #define FLEX_SCANNER
105796c8dcSSimon Schubert #define YY_FLEX_MAJOR_VERSION 2
115796c8dcSSimon Schubert #define YY_FLEX_MINOR_VERSION 5
12*ef5ccd6cSJohn Marino #define YY_FLEX_SUBMINOR_VERSION 35
13*ef5ccd6cSJohn Marino #if YY_FLEX_SUBMINOR_VERSION > 0
14*ef5ccd6cSJohn Marino #define FLEX_BETA
15*ef5ccd6cSJohn Marino #endif
165796c8dcSSimon Schubert
17*ef5ccd6cSJohn Marino /* First, we deal with platform-specific or compiler-specific issues. */
18*ef5ccd6cSJohn Marino
19*ef5ccd6cSJohn Marino /* begin standard C headers. */
205796c8dcSSimon Schubert #include <stdio.h>
21*ef5ccd6cSJohn Marino #include <string.h>
22*ef5ccd6cSJohn Marino #include <errno.h>
235796c8dcSSimon Schubert #include <stdlib.h>
245796c8dcSSimon Schubert
25*ef5ccd6cSJohn Marino /* end standard C headers. */
26*ef5ccd6cSJohn Marino
27*ef5ccd6cSJohn Marino /* flex integer type definitions */
28*ef5ccd6cSJohn Marino
29*ef5ccd6cSJohn Marino #ifndef FLEXINT_H
30*ef5ccd6cSJohn Marino #define FLEXINT_H
31*ef5ccd6cSJohn Marino
32*ef5ccd6cSJohn Marino /* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
33*ef5ccd6cSJohn Marino
34*ef5ccd6cSJohn Marino #if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
35*ef5ccd6cSJohn Marino
36*ef5ccd6cSJohn Marino /* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
37*ef5ccd6cSJohn Marino * if you want the limit (max/min) macros for int types.
38*ef5ccd6cSJohn Marino */
39*ef5ccd6cSJohn Marino #ifndef __STDC_LIMIT_MACROS
40*ef5ccd6cSJohn Marino #define __STDC_LIMIT_MACROS 1
41*ef5ccd6cSJohn Marino #endif
42*ef5ccd6cSJohn Marino
43*ef5ccd6cSJohn Marino #include <inttypes.h>
44*ef5ccd6cSJohn Marino typedef int8_t flex_int8_t;
45*ef5ccd6cSJohn Marino typedef uint8_t flex_uint8_t;
46*ef5ccd6cSJohn Marino typedef int16_t flex_int16_t;
47*ef5ccd6cSJohn Marino typedef uint16_t flex_uint16_t;
48*ef5ccd6cSJohn Marino typedef int32_t flex_int32_t;
49*ef5ccd6cSJohn Marino typedef uint32_t flex_uint32_t;
50*ef5ccd6cSJohn Marino #else
51*ef5ccd6cSJohn Marino typedef signed char flex_int8_t;
52*ef5ccd6cSJohn Marino typedef short int flex_int16_t;
53*ef5ccd6cSJohn Marino typedef int flex_int32_t;
54*ef5ccd6cSJohn Marino typedef unsigned char flex_uint8_t;
55*ef5ccd6cSJohn Marino typedef unsigned short int flex_uint16_t;
56*ef5ccd6cSJohn Marino typedef unsigned int flex_uint32_t;
57*ef5ccd6cSJohn Marino #endif /* ! C99 */
58*ef5ccd6cSJohn Marino
59*ef5ccd6cSJohn Marino /* Limits of integral types. */
60*ef5ccd6cSJohn Marino #ifndef INT8_MIN
61*ef5ccd6cSJohn Marino #define INT8_MIN (-128)
62*ef5ccd6cSJohn Marino #endif
63*ef5ccd6cSJohn Marino #ifndef INT16_MIN
64*ef5ccd6cSJohn Marino #define INT16_MIN (-32767-1)
65*ef5ccd6cSJohn Marino #endif
66*ef5ccd6cSJohn Marino #ifndef INT32_MIN
67*ef5ccd6cSJohn Marino #define INT32_MIN (-2147483647-1)
68*ef5ccd6cSJohn Marino #endif
69*ef5ccd6cSJohn Marino #ifndef INT8_MAX
70*ef5ccd6cSJohn Marino #define INT8_MAX (127)
71*ef5ccd6cSJohn Marino #endif
72*ef5ccd6cSJohn Marino #ifndef INT16_MAX
73*ef5ccd6cSJohn Marino #define INT16_MAX (32767)
74*ef5ccd6cSJohn Marino #endif
75*ef5ccd6cSJohn Marino #ifndef INT32_MAX
76*ef5ccd6cSJohn Marino #define INT32_MAX (2147483647)
77*ef5ccd6cSJohn Marino #endif
78*ef5ccd6cSJohn Marino #ifndef UINT8_MAX
79*ef5ccd6cSJohn Marino #define UINT8_MAX (255U)
80*ef5ccd6cSJohn Marino #endif
81*ef5ccd6cSJohn Marino #ifndef UINT16_MAX
82*ef5ccd6cSJohn Marino #define UINT16_MAX (65535U)
83*ef5ccd6cSJohn Marino #endif
84*ef5ccd6cSJohn Marino #ifndef UINT32_MAX
85*ef5ccd6cSJohn Marino #define UINT32_MAX (4294967295U)
86*ef5ccd6cSJohn Marino #endif
87*ef5ccd6cSJohn Marino
88*ef5ccd6cSJohn Marino #endif /* ! FLEXINT_H */
89*ef5ccd6cSJohn Marino
90*ef5ccd6cSJohn Marino #ifdef __cplusplus
915796c8dcSSimon Schubert
925796c8dcSSimon Schubert /* The "const" storage-class-modifier is valid. */
935796c8dcSSimon Schubert #define YY_USE_CONST
945796c8dcSSimon Schubert
955796c8dcSSimon Schubert #else /* ! __cplusplus */
965796c8dcSSimon Schubert
97*ef5ccd6cSJohn Marino /* C99 requires __STDC__ to be defined as 1. */
98*ef5ccd6cSJohn Marino #if defined (__STDC__)
995796c8dcSSimon Schubert
1005796c8dcSSimon Schubert #define YY_USE_CONST
1015796c8dcSSimon Schubert
102*ef5ccd6cSJohn Marino #endif /* defined (__STDC__) */
1035796c8dcSSimon Schubert #endif /* ! __cplusplus */
1045796c8dcSSimon Schubert
1055796c8dcSSimon Schubert #ifdef YY_USE_CONST
1065796c8dcSSimon Schubert #define yyconst const
1075796c8dcSSimon Schubert #else
1085796c8dcSSimon Schubert #define yyconst
1095796c8dcSSimon Schubert #endif
1105796c8dcSSimon Schubert
1115796c8dcSSimon Schubert /* Returned upon end-of-file. */
1125796c8dcSSimon Schubert #define YY_NULL 0
1135796c8dcSSimon Schubert
1145796c8dcSSimon Schubert /* Promotes a possibly negative, possibly signed char to an unsigned
1155796c8dcSSimon Schubert * integer for use as an array index. If the signed char is negative,
1165796c8dcSSimon Schubert * we want to instead treat it as an 8-bit unsigned char, hence the
1175796c8dcSSimon Schubert * double cast.
1185796c8dcSSimon Schubert */
1195796c8dcSSimon Schubert #define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
1205796c8dcSSimon Schubert
1215796c8dcSSimon Schubert /* Enter a start condition. This macro really ought to take a parameter,
1225796c8dcSSimon Schubert * but we do it the disgusting crufty way forced on us by the ()-less
1235796c8dcSSimon Schubert * definition of BEGIN.
1245796c8dcSSimon Schubert */
125*ef5ccd6cSJohn Marino #define BEGIN (yy_start) = 1 + 2 *
1265796c8dcSSimon Schubert
1275796c8dcSSimon Schubert /* Translate the current start state into a value that can be later handed
1285796c8dcSSimon Schubert * to BEGIN to return to the state. The YYSTATE alias is for lex
1295796c8dcSSimon Schubert * compatibility.
1305796c8dcSSimon Schubert */
131*ef5ccd6cSJohn Marino #define YY_START (((yy_start) - 1) / 2)
1325796c8dcSSimon Schubert #define YYSTATE YY_START
1335796c8dcSSimon Schubert
1345796c8dcSSimon Schubert /* Action number for EOF rule of a given start state. */
1355796c8dcSSimon Schubert #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
1365796c8dcSSimon Schubert
1375796c8dcSSimon Schubert /* Special action meaning "start processing a new file". */
1385796c8dcSSimon Schubert #define YY_NEW_FILE yyrestart(yyin )
1395796c8dcSSimon Schubert
1405796c8dcSSimon Schubert #define YY_END_OF_BUFFER_CHAR 0
1415796c8dcSSimon Schubert
1425796c8dcSSimon Schubert /* Size of default input buffer. */
143*ef5ccd6cSJohn Marino #ifndef YY_BUF_SIZE
1445796c8dcSSimon Schubert #define YY_BUF_SIZE 16384
145*ef5ccd6cSJohn Marino #endif
1465796c8dcSSimon Schubert
147*ef5ccd6cSJohn Marino /* The state buf must be large enough to hold one state per character in the main buffer.
148*ef5ccd6cSJohn Marino */
149*ef5ccd6cSJohn Marino #define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type))
150*ef5ccd6cSJohn Marino
151*ef5ccd6cSJohn Marino #ifndef YY_TYPEDEF_YY_BUFFER_STATE
152*ef5ccd6cSJohn Marino #define YY_TYPEDEF_YY_BUFFER_STATE
1535796c8dcSSimon Schubert typedef struct yy_buffer_state *YY_BUFFER_STATE;
154*ef5ccd6cSJohn Marino #endif
1555796c8dcSSimon Schubert
1565796c8dcSSimon Schubert extern int yyleng;
157*ef5ccd6cSJohn Marino
1585796c8dcSSimon Schubert extern FILE *yyin, *yyout;
1595796c8dcSSimon Schubert
1605796c8dcSSimon Schubert #define EOB_ACT_CONTINUE_SCAN 0
1615796c8dcSSimon Schubert #define EOB_ACT_END_OF_FILE 1
1625796c8dcSSimon Schubert #define EOB_ACT_LAST_MATCH 2
1635796c8dcSSimon Schubert
164*ef5ccd6cSJohn Marino #define YY_LESS_LINENO(n)
1655796c8dcSSimon Schubert
166*ef5ccd6cSJohn Marino /* Return all but the first "n" matched characters back to the input stream. */
1675796c8dcSSimon Schubert #define yyless(n) \
1685796c8dcSSimon Schubert do \
1695796c8dcSSimon Schubert { \
1705796c8dcSSimon Schubert /* Undo effects of setting up yytext. */ \
171*ef5ccd6cSJohn Marino int yyless_macro_arg = (n); \
172*ef5ccd6cSJohn Marino YY_LESS_LINENO(yyless_macro_arg);\
173*ef5ccd6cSJohn Marino *yy_cp = (yy_hold_char); \
1745796c8dcSSimon Schubert YY_RESTORE_YY_MORE_OFFSET \
175*ef5ccd6cSJohn Marino (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \
1765796c8dcSSimon Schubert YY_DO_BEFORE_ACTION; /* set up yytext again */ \
1775796c8dcSSimon Schubert } \
1785796c8dcSSimon Schubert while ( 0 )
1795796c8dcSSimon Schubert
180*ef5ccd6cSJohn Marino #define unput(c) yyunput( c, (yytext_ptr) )
1815796c8dcSSimon Schubert
182*ef5ccd6cSJohn Marino #ifndef YY_TYPEDEF_YY_SIZE_T
183*ef5ccd6cSJohn Marino #define YY_TYPEDEF_YY_SIZE_T
184*ef5ccd6cSJohn Marino typedef size_t yy_size_t;
185*ef5ccd6cSJohn Marino #endif
1865796c8dcSSimon Schubert
187*ef5ccd6cSJohn Marino #ifndef YY_STRUCT_YY_BUFFER_STATE
188*ef5ccd6cSJohn Marino #define YY_STRUCT_YY_BUFFER_STATE
1895796c8dcSSimon Schubert struct yy_buffer_state
1905796c8dcSSimon Schubert {
1915796c8dcSSimon Schubert FILE *yy_input_file;
1925796c8dcSSimon Schubert
1935796c8dcSSimon Schubert char *yy_ch_buf; /* input buffer */
1945796c8dcSSimon Schubert char *yy_buf_pos; /* current position in input buffer */
1955796c8dcSSimon Schubert
1965796c8dcSSimon Schubert /* Size of input buffer in bytes, not including room for EOB
1975796c8dcSSimon Schubert * characters.
1985796c8dcSSimon Schubert */
1995796c8dcSSimon Schubert yy_size_t yy_buf_size;
2005796c8dcSSimon Schubert
2015796c8dcSSimon Schubert /* Number of characters read into yy_ch_buf, not including EOB
2025796c8dcSSimon Schubert * characters.
2035796c8dcSSimon Schubert */
2045796c8dcSSimon Schubert int yy_n_chars;
2055796c8dcSSimon Schubert
2065796c8dcSSimon Schubert /* Whether we "own" the buffer - i.e., we know we created it,
2075796c8dcSSimon Schubert * and can xrealloc() it to grow it, and should xfree() it to
2085796c8dcSSimon Schubert * delete it.
2095796c8dcSSimon Schubert */
2105796c8dcSSimon Schubert int yy_is_our_buffer;
2115796c8dcSSimon Schubert
2125796c8dcSSimon Schubert /* Whether this is an "interactive" input source; if so, and
2135796c8dcSSimon Schubert * if we're using stdio for input, then we want to use getc()
2145796c8dcSSimon Schubert * instead of fread(), to make sure we stop fetching input after
2155796c8dcSSimon Schubert * each newline.
2165796c8dcSSimon Schubert */
2175796c8dcSSimon Schubert int yy_is_interactive;
2185796c8dcSSimon Schubert
2195796c8dcSSimon Schubert /* Whether we're considered to be at the beginning of a line.
2205796c8dcSSimon Schubert * If so, '^' rules will be active on the next match, otherwise
2215796c8dcSSimon Schubert * not.
2225796c8dcSSimon Schubert */
2235796c8dcSSimon Schubert int yy_at_bol;
2245796c8dcSSimon Schubert
225*ef5ccd6cSJohn Marino int yy_bs_lineno; /**< The line count. */
226*ef5ccd6cSJohn Marino int yy_bs_column; /**< The column count. */
227*ef5ccd6cSJohn Marino
2285796c8dcSSimon Schubert /* Whether to try to fill the input buffer when we reach the
2295796c8dcSSimon Schubert * end of it.
2305796c8dcSSimon Schubert */
2315796c8dcSSimon Schubert int yy_fill_buffer;
2325796c8dcSSimon Schubert
2335796c8dcSSimon Schubert int yy_buffer_status;
234*ef5ccd6cSJohn Marino
2355796c8dcSSimon Schubert #define YY_BUFFER_NEW 0
2365796c8dcSSimon Schubert #define YY_BUFFER_NORMAL 1
2375796c8dcSSimon Schubert /* When an EOF's been seen but there's still some text to process
2385796c8dcSSimon Schubert * then we mark the buffer as YY_EOF_PENDING, to indicate that we
2395796c8dcSSimon Schubert * shouldn't try reading from the input source any more. We might
2405796c8dcSSimon Schubert * still have a bunch of tokens to match, though, because of
2415796c8dcSSimon Schubert * possible backing-up.
2425796c8dcSSimon Schubert *
2435796c8dcSSimon Schubert * When we actually see the EOF, we change the status to "new"
2445796c8dcSSimon Schubert * (via yyrestart()), so that the user can continue scanning by
2455796c8dcSSimon Schubert * just pointing yyin at a new input file.
2465796c8dcSSimon Schubert */
2475796c8dcSSimon Schubert #define YY_BUFFER_EOF_PENDING 2
2485796c8dcSSimon Schubert
249*ef5ccd6cSJohn Marino };
250*ef5ccd6cSJohn Marino #endif /* !YY_STRUCT_YY_BUFFER_STATE */
251*ef5ccd6cSJohn Marino
252*ef5ccd6cSJohn Marino /* Stack of input buffers. */
253*ef5ccd6cSJohn Marino static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */
254*ef5ccd6cSJohn Marino static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */
255*ef5ccd6cSJohn Marino static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as an array. */
2565796c8dcSSimon Schubert
2575796c8dcSSimon Schubert /* We provide macros for accessing buffer states in case in the
2585796c8dcSSimon Schubert * future we want to put the buffer states in a more general
2595796c8dcSSimon Schubert * "scanner state".
260*ef5ccd6cSJohn Marino *
261*ef5ccd6cSJohn Marino * Returns the top of the stack, or NULL.
2625796c8dcSSimon Schubert */
263*ef5ccd6cSJohn Marino #define YY_CURRENT_BUFFER ( (yy_buffer_stack) \
264*ef5ccd6cSJohn Marino ? (yy_buffer_stack)[(yy_buffer_stack_top)] \
265*ef5ccd6cSJohn Marino : NULL)
2665796c8dcSSimon Schubert
267*ef5ccd6cSJohn Marino /* Same as previous macro, but useful when we know that the buffer stack is not
268*ef5ccd6cSJohn Marino * NULL or when we need an lvalue. For internal use only.
269*ef5ccd6cSJohn Marino */
270*ef5ccd6cSJohn Marino #define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)]
2715796c8dcSSimon Schubert
2725796c8dcSSimon Schubert /* yy_hold_char holds the character lost when yytext is formed. */
2735796c8dcSSimon Schubert static char yy_hold_char;
2745796c8dcSSimon Schubert static int yy_n_chars; /* number of characters read into yy_ch_buf */
2755796c8dcSSimon Schubert int yyleng;
2765796c8dcSSimon Schubert
2775796c8dcSSimon Schubert /* Points to current character in buffer. */
2785796c8dcSSimon Schubert static char *yy_c_buf_p = (char *) 0;
279*ef5ccd6cSJohn Marino static int yy_init = 0; /* whether we need to initialize */
2805796c8dcSSimon Schubert static int yy_start = 0; /* start state number */
2815796c8dcSSimon Schubert
2825796c8dcSSimon Schubert /* Flag which is used to allow yywrap()'s to do buffer switches
2835796c8dcSSimon Schubert * instead of setting up a fresh yyin. A bit of a hack ...
2845796c8dcSSimon Schubert */
2855796c8dcSSimon Schubert static int yy_did_buffer_switch_on_eof;
2865796c8dcSSimon Schubert
287*ef5ccd6cSJohn Marino void yyrestart (FILE *input_file );
288*ef5ccd6cSJohn Marino void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer );
289*ef5ccd6cSJohn Marino YY_BUFFER_STATE yy_create_buffer (FILE *file,int size );
290*ef5ccd6cSJohn Marino void yy_delete_buffer (YY_BUFFER_STATE b );
291*ef5ccd6cSJohn Marino void yy_flush_buffer (YY_BUFFER_STATE b );
292*ef5ccd6cSJohn Marino void yypush_buffer_state (YY_BUFFER_STATE new_buffer );
293*ef5ccd6cSJohn Marino void yypop_buffer_state (void );
2945796c8dcSSimon Schubert
295*ef5ccd6cSJohn Marino static void yyensure_buffer_stack (void );
296*ef5ccd6cSJohn Marino static void yy_load_buffer_state (void );
297*ef5ccd6cSJohn Marino static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file );
2985796c8dcSSimon Schubert
299*ef5ccd6cSJohn Marino #define YY_FLUSH_BUFFER yy_flush_buffer(YY_CURRENT_BUFFER )
3005796c8dcSSimon Schubert
301*ef5ccd6cSJohn Marino YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size );
302*ef5ccd6cSJohn Marino YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str );
303*ef5ccd6cSJohn Marino YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len );
304*ef5ccd6cSJohn Marino
305*ef5ccd6cSJohn Marino void *yyalloc (yy_size_t );
306*ef5ccd6cSJohn Marino void *yyxrealloc (void *,yy_size_t );
307*ef5ccd6cSJohn Marino void yyfree (void * );
3085796c8dcSSimon Schubert
3095796c8dcSSimon Schubert #define yy_new_buffer yy_create_buffer
3105796c8dcSSimon Schubert
3115796c8dcSSimon Schubert #define yy_set_interactive(is_interactive) \
3125796c8dcSSimon Schubert { \
313*ef5ccd6cSJohn Marino if ( ! YY_CURRENT_BUFFER ){ \
314*ef5ccd6cSJohn Marino yyensure_buffer_stack (); \
315*ef5ccd6cSJohn Marino YY_CURRENT_BUFFER_LVALUE = \
316*ef5ccd6cSJohn Marino yy_create_buffer(yyin,YY_BUF_SIZE ); \
317*ef5ccd6cSJohn Marino } \
318*ef5ccd6cSJohn Marino YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \
3195796c8dcSSimon Schubert }
3205796c8dcSSimon Schubert
3215796c8dcSSimon Schubert #define yy_set_bol(at_bol) \
3225796c8dcSSimon Schubert { \
323*ef5ccd6cSJohn Marino if ( ! YY_CURRENT_BUFFER ){\
324*ef5ccd6cSJohn Marino yyensure_buffer_stack (); \
325*ef5ccd6cSJohn Marino YY_CURRENT_BUFFER_LVALUE = \
326*ef5ccd6cSJohn Marino yy_create_buffer(yyin,YY_BUF_SIZE ); \
327*ef5ccd6cSJohn Marino } \
328*ef5ccd6cSJohn Marino YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \
3295796c8dcSSimon Schubert }
3305796c8dcSSimon Schubert
331*ef5ccd6cSJohn Marino #define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol)
332*ef5ccd6cSJohn Marino
333*ef5ccd6cSJohn Marino /* Begin user sect3 */
3345796c8dcSSimon Schubert
3355796c8dcSSimon Schubert typedef unsigned char YY_CHAR;
336*ef5ccd6cSJohn Marino
3375796c8dcSSimon Schubert FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
338*ef5ccd6cSJohn Marino
3395796c8dcSSimon Schubert typedef int yy_state_type;
340*ef5ccd6cSJohn Marino
341*ef5ccd6cSJohn Marino extern int yylineno;
342*ef5ccd6cSJohn Marino
343*ef5ccd6cSJohn Marino int yylineno = 1;
344*ef5ccd6cSJohn Marino
3455796c8dcSSimon Schubert extern char *yytext;
3465796c8dcSSimon Schubert #define yytext_ptr yytext
3475796c8dcSSimon Schubert
348*ef5ccd6cSJohn Marino static yy_state_type yy_get_previous_state (void );
349*ef5ccd6cSJohn Marino static yy_state_type yy_try_NUL_trans (yy_state_type current_state );
350*ef5ccd6cSJohn Marino static int yy_get_next_buffer (void );
351*ef5ccd6cSJohn Marino static void yy_fatal_error (yyconst char msg[] );
3525796c8dcSSimon Schubert
3535796c8dcSSimon Schubert /* Done after the current pattern has been matched and before the
3545796c8dcSSimon Schubert * corresponding action - sets up yytext.
3555796c8dcSSimon Schubert */
3565796c8dcSSimon Schubert #define YY_DO_BEFORE_ACTION \
357*ef5ccd6cSJohn Marino (yytext_ptr) = yy_bp; \
358*ef5ccd6cSJohn Marino yyleng = (size_t) (yy_cp - yy_bp); \
359*ef5ccd6cSJohn Marino (yy_hold_char) = *yy_cp; \
3605796c8dcSSimon Schubert *yy_cp = '\0'; \
361*ef5ccd6cSJohn Marino (yy_c_buf_p) = yy_cp;
3625796c8dcSSimon Schubert
363*ef5ccd6cSJohn Marino #define YY_NUM_RULES 55
364*ef5ccd6cSJohn Marino #define YY_END_OF_BUFFER 56
365*ef5ccd6cSJohn Marino /* This struct is not used in this scanner,
366*ef5ccd6cSJohn Marino but its presence is necessary. */
367*ef5ccd6cSJohn Marino struct yy_trans_info
368*ef5ccd6cSJohn Marino {
369*ef5ccd6cSJohn Marino flex_int32_t yy_verify;
370*ef5ccd6cSJohn Marino flex_int32_t yy_nxt;
371*ef5ccd6cSJohn Marino };
372*ef5ccd6cSJohn Marino static yyconst flex_int16_t yy_accept[207] =
3735796c8dcSSimon Schubert { 0,
374*ef5ccd6cSJohn Marino 0, 0, 0, 0, 56, 54, 1, 1, 15, 53,
375*ef5ccd6cSJohn Marino 43, 54, 45, 46, 43, 44, 43, 43, 43, 4,
376*ef5ccd6cSJohn Marino 4, 43, 43, 43, 43, 52, 49, 49, 49, 49,
377*ef5ccd6cSJohn Marino 49, 49, 49, 49, 49, 49, 49, 42, 0, 14,
378*ef5ccd6cSJohn Marino 0, 53, 0, 0, 0, 0, 0, 0, 0, 37,
379*ef5ccd6cSJohn Marino 2, 0, 36, 0, 48, 48, 39, 0, 0, 4,
380*ef5ccd6cSJohn Marino 0, 0, 51, 38, 40, 0, 35, 41, 0, 0,
381*ef5ccd6cSJohn Marino 49, 0, 49, 49, 49, 49, 49, 16, 22, 49,
382*ef5ccd6cSJohn Marino 49, 49, 49, 27, 49, 49, 49, 49, 49, 49,
383*ef5ccd6cSJohn Marino 0, 14, 0, 12, 12, 34, 0, 2, 0, 48,
3845796c8dcSSimon Schubert
385*ef5ccd6cSJohn Marino 48, 0, 9, 0, 3, 7, 0, 49, 0, 0,
386*ef5ccd6cSJohn Marino 0, 49, 19, 20, 49, 49, 23, 24, 25, 49,
387*ef5ccd6cSJohn Marino 49, 29, 49, 49, 49, 49, 31, 0, 0, 0,
388*ef5ccd6cSJohn Marino 0, 0, 0, 48, 47, 6, 0, 0, 9, 0,
389cf7f2e2dSJohn Marino 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,
390*ef5ccd6cSJohn Marino 0, 0, 0, 49, 21, 49, 26, 49, 17, 30,
391*ef5ccd6cSJohn Marino 49, 32, 0, 50, 0, 0, 0, 0, 49, 0,
392*ef5ccd6cSJohn Marino 0, 0, 0, 0, 0, 0, 0, 33, 49, 49,
393*ef5ccd6cSJohn Marino 0, 0, 5, 11, 0, 8, 0, 0, 0, 0,
394*ef5ccd6cSJohn Marino 0, 0, 28, 49, 0, 5, 0, 8, 0, 0,
395cf7f2e2dSJohn Marino
396*ef5ccd6cSJohn Marino 13, 0, 18, 10, 10, 0
3975796c8dcSSimon Schubert } ;
3985796c8dcSSimon Schubert
399*ef5ccd6cSJohn Marino static yyconst flex_int32_t yy_ec[256] =
4005796c8dcSSimon Schubert { 0,
4015796c8dcSSimon Schubert 1, 1, 1, 1, 1, 1, 1, 1, 2, 3,
4025796c8dcSSimon Schubert 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
4035796c8dcSSimon Schubert 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
4045796c8dcSSimon Schubert 1, 4, 5, 6, 7, 8, 5, 9, 10, 11,
4055796c8dcSSimon Schubert 12, 13, 14, 15, 16, 17, 18, 19, 20, 20,
4065796c8dcSSimon Schubert 20, 20, 20, 20, 20, 20, 20, 21, 22, 23,
407*ef5ccd6cSJohn Marino 24, 25, 5, 26, 27, 28, 29, 30, 31, 32,
408*ef5ccd6cSJohn Marino 33, 34, 35, 33, 36, 37, 38, 39, 40, 33,
409*ef5ccd6cSJohn Marino 33, 41, 42, 43, 44, 33, 45, 46, 33, 33,
410*ef5ccd6cSJohn Marino 47, 5, 48, 5, 49, 5, 50, 51, 29, 52,
4115796c8dcSSimon Schubert
412*ef5ccd6cSJohn Marino 53, 54, 33, 55, 56, 33, 57, 58, 59, 60,
413*ef5ccd6cSJohn Marino 61, 33, 33, 62, 63, 64, 65, 33, 66, 67,
414*ef5ccd6cSJohn Marino 33, 33, 26, 22, 26, 5, 1, 1, 1, 1,
4155796c8dcSSimon Schubert 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
4165796c8dcSSimon Schubert 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
4175796c8dcSSimon Schubert 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
4185796c8dcSSimon Schubert 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
4195796c8dcSSimon Schubert 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
4205796c8dcSSimon Schubert 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
4215796c8dcSSimon Schubert 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
4225796c8dcSSimon Schubert
4235796c8dcSSimon Schubert 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
4245796c8dcSSimon Schubert 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
4255796c8dcSSimon Schubert 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
4265796c8dcSSimon Schubert 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
4275796c8dcSSimon Schubert 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
4285796c8dcSSimon Schubert 1, 1, 1, 1, 1
4295796c8dcSSimon Schubert } ;
4305796c8dcSSimon Schubert
431*ef5ccd6cSJohn Marino static yyconst flex_int32_t yy_meta[68] =
4325796c8dcSSimon Schubert { 0,
4335796c8dcSSimon Schubert 1, 2, 3, 4, 5, 6, 7, 8, 5, 9,
4345796c8dcSSimon Schubert 5, 5, 5, 5, 5, 5, 10, 5, 11, 11,
435*ef5ccd6cSJohn Marino 5, 5, 12, 13, 14, 5, 15, 15, 15, 15,
436*ef5ccd6cSJohn Marino 15, 15, 16, 16, 16, 16, 16, 16, 16, 16,
437*ef5ccd6cSJohn Marino 16, 16, 16, 16, 16, 16, 5, 5, 17, 15,
438*ef5ccd6cSJohn Marino 15, 15, 15, 15, 16, 16, 16, 16, 16, 16,
439*ef5ccd6cSJohn Marino 16, 16, 16, 16, 16, 16, 16
4405796c8dcSSimon Schubert } ;
4415796c8dcSSimon Schubert
442*ef5ccd6cSJohn Marino static yyconst flex_int16_t yy_base[229] =
4435796c8dcSSimon Schubert { 0,
444*ef5ccd6cSJohn Marino 0, 0, 649, 638, 646, 1252, 1252, 1252, 62, 0,
445*ef5ccd6cSJohn Marino 1252, 109, 1252, 1252, 623, 1252, 619, 175, 606, 174,
446*ef5ccd6cSJohn Marino 180, 48, 604, 592, 590, 1252, 204, 71, 214, 186,
447*ef5ccd6cSJohn Marino 235, 244, 304, 256, 39, 368, 40, 430, 179, 1252,
448*ef5ccd6cSJohn Marino 195, 0, 602, 595, 592, 585, 574, 497, 72, 1252,
449*ef5ccd6cSJohn Marino 0, 273, 1252, 0, 39, 0, 1252, 0, 66, 262,
450*ef5ccd6cSJohn Marino 75, 0, 1252, 1252, 1252, 557, 1252, 1252, 284, 300,
451*ef5ccd6cSJohn Marino 1252, 322, 329, 349, 358, 377, 339, 396, 412, 563,
452*ef5ccd6cSJohn Marino 566, 575, 584, 587, 569, 596, 623, 616, 576, 617,
453*ef5ccd6cSJohn Marino 571, 568, 334, 380, 1252, 562, 677, 0, 403, 0,
4545796c8dcSSimon Schubert
455*ef5ccd6cSJohn Marino 40, 89, 642, 71, 163, 0, 401, 672, 401, 723,
456*ef5ccd6cSJohn Marino 0, 708, 741, 750, 637, 776, 785, 794, 797, 806,
457*ef5ccd6cSJohn Marino 775, 827, 831, 843, 818, 819, 883, 415, 0, 712,
458*ef5ccd6cSJohn Marino 399, 885, 352, 1252, 0, 191, 0, 202, 772, 170,
459*ef5ccd6cSJohn Marino 243, 334, 222, 244, 247, 259, 766, 47, 209, 216,
460*ef5ccd6cSJohn Marino 203, 251, 302, 892, 916, 890, 942, 715, 946, 958,
461*ef5ccd6cSJohn Marino 930, 974, 274, 1252, 93, 344, 278, 310, 979, 256,
462*ef5ccd6cSJohn Marino 264, 337, 270, 274, 352, 355, 215, 984, 995, 1000,
463*ef5ccd6cSJohn Marino 299, 354, 589, 355, 223, 603, 209, 204, 198, 189,
464*ef5ccd6cSJohn Marino 174, 101, 1004, 1016, 92, 634, 411, 644, 872, 1021,
4655796c8dcSSimon Schubert
466*ef5ccd6cSJohn Marino 717, 373, 1252, 793, 832, 1252, 1055, 1065, 1081, 1086,
467*ef5ccd6cSJohn Marino 1102, 1119, 1136, 1139, 1146, 339, 560, 1153, 1169, 1181,
468*ef5ccd6cSJohn Marino 1186, 1197, 1200, 1216, 634, 645, 1223, 1234
4695796c8dcSSimon Schubert } ;
4705796c8dcSSimon Schubert
471*ef5ccd6cSJohn Marino static yyconst flex_int16_t yy_def[229] =
4725796c8dcSSimon Schubert { 0,
473*ef5ccd6cSJohn Marino 206, 1, 1, 1, 206, 206, 206, 206, 207, 208,
474*ef5ccd6cSJohn Marino 206, 206, 206, 206, 206, 206, 206, 209, 206, 206,
475*ef5ccd6cSJohn Marino 206, 206, 210, 206, 206, 206, 211, 211, 211, 211,
476*ef5ccd6cSJohn Marino 211, 211, 211, 211, 33, 211, 33, 206, 207, 206,
477*ef5ccd6cSJohn Marino 207, 208, 212, 38, 38, 212, 206, 206, 212, 206,
478*ef5ccd6cSJohn Marino 213, 209, 206, 214, 215, 215, 206, 216, 206, 206,
479*ef5ccd6cSJohn Marino 206, 217, 206, 206, 206, 218, 206, 206, 206, 206,
480*ef5ccd6cSJohn Marino 206, 219, 211, 211, 211, 211, 211, 211, 211, 211,
481*ef5ccd6cSJohn Marino 211, 211, 211, 211, 36, 211, 211, 36, 33, 36,
482*ef5ccd6cSJohn Marino 48, 220, 206, 206, 206, 48, 212, 213, 221, 215,
4835796c8dcSSimon Schubert
484*ef5ccd6cSJohn Marino 215, 222, 206, 206, 206, 217, 218, 206, 219, 206,
485*ef5ccd6cSJohn Marino 223, 224, 211, 211, 33, 211, 211, 211, 211, 211,
486*ef5ccd6cSJohn Marino 33, 211, 211, 211, 33, 33, 211, 206, 225, 206,
487*ef5ccd6cSJohn Marino 206, 97, 221, 206, 215, 206, 226, 222, 206, 206,
488*ef5ccd6cSJohn Marino 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
489*ef5ccd6cSJohn Marino 206, 206, 227, 224, 211, 33, 211, 36, 211, 211,
490*ef5ccd6cSJohn Marino 36, 211, 206, 206, 212, 206, 228, 206, 206, 206,
491*ef5ccd6cSJohn Marino 206, 206, 206, 206, 206, 206, 227, 211, 211, 211,
492*ef5ccd6cSJohn Marino 212, 206, 206, 206, 228, 206, 206, 206, 206, 206,
493*ef5ccd6cSJohn Marino 206, 206, 211, 211, 212, 206, 206, 206, 206, 206,
4945796c8dcSSimon Schubert
495*ef5ccd6cSJohn Marino 206, 206, 206, 206, 206, 0, 206, 206, 206, 206,
496*ef5ccd6cSJohn Marino 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
497*ef5ccd6cSJohn Marino 206, 206, 206, 206, 206, 206, 206, 206
4985796c8dcSSimon Schubert } ;
4995796c8dcSSimon Schubert
500*ef5ccd6cSJohn Marino static yyconst flex_int16_t yy_nxt[1320] =
5015796c8dcSSimon Schubert { 0,
5025796c8dcSSimon Schubert 6, 7, 8, 7, 6, 9, 6, 10, 11, 12,
5035796c8dcSSimon Schubert 13, 14, 15, 11, 16, 17, 18, 19, 20, 21,
504*ef5ccd6cSJohn Marino 22, 11, 23, 24, 25, 26, 27, 28, 28, 28,
505*ef5ccd6cSJohn Marino 29, 30, 28, 28, 31, 28, 28, 32, 33, 34,
506*ef5ccd6cSJohn Marino 35, 28, 36, 28, 28, 37, 11, 11, 28, 27,
507*ef5ccd6cSJohn Marino 28, 28, 29, 30, 28, 31, 28, 28, 32, 33,
508*ef5ccd6cSJohn Marino 34, 35, 28, 36, 28, 28, 37, 40, 63, 86,
509*ef5ccd6cSJohn Marino 73, 64, 69, 69, 70, 101, 135, 97, 73, 90,
510*ef5ccd6cSJohn Marino 71, 94, 73, 73, 103, 103, 172, 72, 104, 105,
511*ef5ccd6cSJohn Marino 105, 86, 73, 105, 105, 136, 101, 135, 181, 73,
5125796c8dcSSimon Schubert
513*ef5ccd6cSJohn Marino 90, 201, 93, 73, 73, 137, 169, 172, 41, 43,
514*ef5ccd6cSJohn Marino 44, 44, 45, 46, 46, 46, 46, 46, 47, 46,
515*ef5ccd6cSJohn Marino 46, 46, 46, 46, 46, 46, 46, 46, 46, 46,
516*ef5ccd6cSJohn Marino 46, 46, 46, 46, 46, 48, 48, 48, 48, 48,
517*ef5ccd6cSJohn Marino 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
518*ef5ccd6cSJohn Marino 48, 48, 48, 48, 48, 49, 46, 46, 48, 48,
519*ef5ccd6cSJohn Marino 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
520*ef5ccd6cSJohn Marino 48, 48, 48, 48, 48, 48, 52, 52, 52, 169,
521*ef5ccd6cSJohn Marino 58, 141, 141, 168, 40, 168, 58, 69, 69, 70,
522*ef5ccd6cSJohn Marino 59, 53, 60, 60, 169, 71, 59, 54, 60, 60,
5235796c8dcSSimon Schubert
524*ef5ccd6cSJohn Marino 92, 55, 72, 169, 61, 69, 69, 70, 136, 169,
525*ef5ccd6cSJohn Marino 61, 141, 77, 71, 169, 69, 69, 70, 137, 62,
526*ef5ccd6cSJohn Marino 72, 166, 60, 71, 55, 41, 61, 169, 60, 184,
527*ef5ccd6cSJohn Marino 72, 74, 61, 175, 142, 77, 69, 69, 70, 169,
528*ef5ccd6cSJohn Marino 62, 41, 75, 166, 71, 69, 69, 70, 173, 169,
529*ef5ccd6cSJohn Marino 76, 72, 169, 71, 74, 175, 174, 69, 69, 70,
530*ef5ccd6cSJohn Marino 72, 141, 141, 75, 169, 71, 78, 142, 58, 173,
531*ef5ccd6cSJohn Marino 142, 76, 72, 79, 52, 52, 52, 174, 59, 169,
532*ef5ccd6cSJohn Marino 60, 60, 142, 80, 184, 69, 69, 69, 78, 206,
533*ef5ccd6cSJohn Marino 176, 141, 61, 188, 79, 54, 84, 187, 85, 55,
534*ef5ccd6cSJohn Marino
535*ef5ccd6cSJohn Marino 72, 69, 69, 70, 80, 69, 69, 70, 93, 71,
536*ef5ccd6cSJohn Marino 60, 176, 190, 71, 61, 188, 72, 84, 187, 85,
537*ef5ccd6cSJohn Marino 72, 39, 55, 109, 109, 109, 169, 110, 186, 186,
538*ef5ccd6cSJohn Marino 69, 69, 70, 190, 81, 130, 130, 130, 71, 169,
539*ef5ccd6cSJohn Marino 69, 69, 70, 82, 111, 72, 195, 83, 71, 102,
540*ef5ccd6cSJohn Marino 69, 69, 70, 102, 131, 72, 81, 182, 71, 69,
541*ef5ccd6cSJohn Marino 69, 70, 183, 183, 82, 72, 189, 71, 83, 69,
542*ef5ccd6cSJohn Marino 69, 70, 183, 183, 72, 116, 134, 71, 69, 69,
543*ef5ccd6cSJohn Marino 70, 130, 130, 130, 72, 197, 71, 114, 189, 191,
544*ef5ccd6cSJohn Marino 113, 204, 204, 72, 87, 192, 116, 69, 69, 70,
545*ef5ccd6cSJohn Marino
546*ef5ccd6cSJohn Marino 131, 88, 109, 109, 109, 71, 110, 197, 89, 114,
547*ef5ccd6cSJohn Marino 191, 113, 72, 69, 69, 70, 192, 87, 115, 164,
548*ef5ccd6cSJohn Marino 163, 71, 88, 111, 202, 108, 202, 134, 72, 89,
549*ef5ccd6cSJohn Marino 43, 44, 44, 44, 43, 43, 43, 43, 43, 115,
5505796c8dcSSimon Schubert 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
551*ef5ccd6cSJohn Marino 43, 43, 43, 43, 43, 43, 91, 91, 91, 91,
552cf7f2e2dSJohn Marino 91, 91, 91, 91, 91, 91, 91, 91, 91, 91,
553*ef5ccd6cSJohn Marino 91, 91, 91, 91, 91, 91, 43, 43, 43, 91,
554*ef5ccd6cSJohn Marino 91, 91, 91, 91, 91, 91, 91, 91, 91, 91,
555*ef5ccd6cSJohn Marino 91, 91, 91, 91, 91, 91, 91, 43, 43, 43,
556*ef5ccd6cSJohn Marino
557*ef5ccd6cSJohn Marino 43, 43, 43, 43, 43, 43, 94, 43, 43, 43,
5585796c8dcSSimon Schubert 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
559*ef5ccd6cSJohn Marino 43, 43, 43, 96, 96, 96, 96, 96, 96, 96,
560*ef5ccd6cSJohn Marino 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
561*ef5ccd6cSJohn Marino 96, 96, 96, 43, 43, 43, 96, 96, 96, 96,
562*ef5ccd6cSJohn Marino 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
563*ef5ccd6cSJohn Marino 96, 96, 96, 96, 69, 69, 70, 69, 69, 70,
564*ef5ccd6cSJohn Marino 106, 93, 71, 128, 106, 71, 69, 69, 70, 72,
565*ef5ccd6cSJohn Marino 93, 108, 72, 95, 71, 69, 69, 70, 69, 69,
566*ef5ccd6cSJohn Marino 70, 72, 117, 71, 94, 73, 71, 69, 69, 70,
5675796c8dcSSimon Schubert
568*ef5ccd6cSJohn Marino 72, 94, 121, 72, 93, 71, 73, 196, 196, 73,
569*ef5ccd6cSJohn Marino 118, 93, 72, 68, 117, 73, 67, 119, 73, 126,
570*ef5ccd6cSJohn Marino 120, 198, 198, 121, 69, 69, 70, 65, 73, 57,
571*ef5ccd6cSJohn Marino 73, 118, 71, 122, 51, 50, 73, 196, 119, 72,
572*ef5ccd6cSJohn Marino 126, 120, 73, 73, 128, 206, 124, 38, 128, 73,
573*ef5ccd6cSJohn Marino 73, 198, 196, 196, 122, 167, 125, 127, 38, 167,
574*ef5ccd6cSJohn Marino 139, 139, 198, 198, 123, 73, 73, 155, 124, 206,
575*ef5ccd6cSJohn Marino 73, 73, 140, 69, 69, 70, 73, 125, 127, 206,
576*ef5ccd6cSJohn Marino 73, 71, 196, 206, 206, 123, 93, 206, 72, 155,
577*ef5ccd6cSJohn Marino 139, 206, 198, 206, 140, 132, 132, 73, 206, 206,
5785796c8dcSSimon Schubert
579*ef5ccd6cSJohn Marino 206, 73, 206, 132, 132, 132, 132, 132, 132, 69,
580*ef5ccd6cSJohn Marino 69, 70, 206, 130, 130, 130, 206, 71, 130, 130,
581*ef5ccd6cSJohn Marino 130, 206, 206, 206, 72, 206, 132, 132, 132, 132,
582*ef5ccd6cSJohn Marino 132, 142, 131, 206, 206, 143, 142, 131, 142, 206,
583*ef5ccd6cSJohn Marino 144, 73, 69, 69, 70, 145, 142, 146, 73, 147,
584*ef5ccd6cSJohn Marino 71, 69, 69, 70, 206, 179, 206, 72, 206, 71,
585*ef5ccd6cSJohn Marino 148, 149, 150, 151, 73, 206, 72, 206, 152, 73,
586*ef5ccd6cSJohn Marino 206, 206, 147, 206, 206, 206, 179, 69, 69, 70,
587*ef5ccd6cSJohn Marino 206, 148, 149, 150, 151, 71, 69, 69, 70, 152,
588*ef5ccd6cSJohn Marino 139, 139, 72, 170, 71, 69, 69, 70, 69, 69,
5895796c8dcSSimon Schubert
590*ef5ccd6cSJohn Marino 70, 72, 140, 71, 171, 158, 71, 69, 69, 70,
591*ef5ccd6cSJohn Marino 72, 205, 205, 72, 73, 71, 170, 156, 73, 206,
592*ef5ccd6cSJohn Marino 139, 206, 72, 206, 140, 171, 206, 158, 69, 69,
593*ef5ccd6cSJohn Marino 70, 206, 69, 69, 70, 73, 71, 206, 156, 73,
594*ef5ccd6cSJohn Marino 71, 205, 157, 72, 69, 69, 70, 72, 161, 162,
595*ef5ccd6cSJohn Marino 205, 205, 71, 206, 206, 206, 206, 73, 73, 72,
596*ef5ccd6cSJohn Marino 206, 73, 73, 157, 206, 206, 159, 206, 206, 206,
597*ef5ccd6cSJohn Marino 161, 162, 206, 199, 199, 199, 206, 206, 73, 73,
598*ef5ccd6cSJohn Marino 205, 160, 73, 73, 69, 69, 70, 159, 72, 206,
599*ef5ccd6cSJohn Marino 203, 203, 71, 69, 69, 70, 206, 206, 206, 72,
6005796c8dcSSimon Schubert
601*ef5ccd6cSJohn Marino 206, 71, 160, 165, 165, 206, 206, 206, 72, 206,
602*ef5ccd6cSJohn Marino 206, 165, 165, 165, 165, 165, 165, 69, 69, 70,
603*ef5ccd6cSJohn Marino 178, 206, 206, 206, 206, 71, 206, 206, 206, 73,
604*ef5ccd6cSJohn Marino 206, 206, 72, 73, 165, 165, 165, 165, 165, 206,
605*ef5ccd6cSJohn Marino 206, 206, 178, 69, 69, 70, 206, 69, 69, 70,
606*ef5ccd6cSJohn Marino 73, 71, 206, 206, 73, 71, 180, 206, 72, 69,
607*ef5ccd6cSJohn Marino 69, 70, 72, 73, 206, 206, 206, 71, 206, 206,
608*ef5ccd6cSJohn Marino 73, 206, 206, 206, 72, 69, 69, 70, 206, 180,
609*ef5ccd6cSJohn Marino 69, 69, 70, 71, 73, 69, 69, 70, 71, 206,
610*ef5ccd6cSJohn Marino 72, 73, 206, 71, 206, 72, 69, 69, 70, 206,
611*ef5ccd6cSJohn Marino
612*ef5ccd6cSJohn Marino 72, 69, 69, 70, 71, 69, 69, 70, 206, 71,
613*ef5ccd6cSJohn Marino 206, 72, 206, 71, 206, 206, 72, 199, 199, 200,
614*ef5ccd6cSJohn Marino 72, 206, 199, 199, 200, 71, 206, 206, 206, 194,
615*ef5ccd6cSJohn Marino 71, 206, 72, 206, 206, 206, 193, 72, 206, 203,
616*ef5ccd6cSJohn Marino 203, 206, 206, 206, 206, 206, 206, 206, 206, 206,
617*ef5ccd6cSJohn Marino 206, 194, 206, 206, 206, 206, 206, 193, 39, 39,
618*ef5ccd6cSJohn Marino 39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
619*ef5ccd6cSJohn Marino 39, 39, 42, 206, 206, 42, 206, 206, 206, 42,
620*ef5ccd6cSJohn Marino 42, 42, 56, 56, 56, 206, 206, 206, 206, 206,
621*ef5ccd6cSJohn Marino 56, 206, 56, 206, 206, 56, 56, 56, 66, 206,
622*ef5ccd6cSJohn Marino
623*ef5ccd6cSJohn Marino 66, 66, 66, 73, 73, 73, 206, 206, 206, 206,
624*ef5ccd6cSJohn Marino 73, 73, 73, 206, 206, 206, 73, 73, 73, 43,
625*ef5ccd6cSJohn Marino 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
626*ef5ccd6cSJohn Marino 43, 43, 43, 43, 43, 43, 98, 98, 206, 98,
627cf7f2e2dSJohn Marino 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,
628*ef5ccd6cSJohn Marino 98, 98, 98, 99, 99, 99, 100, 206, 206, 206,
629*ef5ccd6cSJohn Marino 100, 100, 100, 107, 206, 206, 107, 107, 107, 107,
630*ef5ccd6cSJohn Marino 112, 112, 112, 206, 112, 206, 206, 206, 206, 206,
631*ef5ccd6cSJohn Marino 112, 206, 206, 112, 112, 112, 129, 206, 206, 206,
632*ef5ccd6cSJohn Marino 206, 129, 206, 206, 206, 129, 133, 206, 206, 133,
6335796c8dcSSimon Schubert
634*ef5ccd6cSJohn Marino 133, 133, 133, 138, 206, 206, 138, 138, 206, 206,
635*ef5ccd6cSJohn Marino 206, 138, 206, 138, 153, 153, 153, 154, 154, 154,
636*ef5ccd6cSJohn Marino 206, 206, 206, 206, 154, 154, 154, 206, 206, 206,
637*ef5ccd6cSJohn Marino 154, 154, 154, 177, 206, 206, 177, 177, 177, 177,
638*ef5ccd6cSJohn Marino 185, 206, 206, 206, 185, 206, 206, 206, 185, 206,
639*ef5ccd6cSJohn Marino 185, 5, 206, 206, 206, 206, 206, 206, 206, 206,
640*ef5ccd6cSJohn Marino 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
641*ef5ccd6cSJohn Marino 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
642*ef5ccd6cSJohn Marino 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
643*ef5ccd6cSJohn Marino 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
644cf7f2e2dSJohn Marino
645*ef5ccd6cSJohn Marino 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
646*ef5ccd6cSJohn Marino 206, 206, 206, 206, 206, 206, 206, 206, 206
6475796c8dcSSimon Schubert } ;
6485796c8dcSSimon Schubert
649*ef5ccd6cSJohn Marino static yyconst flex_int16_t yy_chk[1320] =
6505796c8dcSSimon Schubert { 0,
6515796c8dcSSimon Schubert 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6525796c8dcSSimon Schubert 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6535796c8dcSSimon Schubert 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
6545796c8dcSSimon Schubert 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
655*ef5ccd6cSJohn Marino 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
656*ef5ccd6cSJohn Marino 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
657*ef5ccd6cSJohn Marino 1, 1, 1, 1, 1, 1, 1, 9, 22, 35,
658*ef5ccd6cSJohn Marino 37, 22, 28, 28, 28, 55, 101, 49, 35, 37,
659*ef5ccd6cSJohn Marino 28, 49, 35, 37, 59, 59, 148, 28, 61, 104,
660*ef5ccd6cSJohn Marino 104, 35, 37, 61, 61, 102, 55, 101, 165, 35,
6615796c8dcSSimon Schubert
662*ef5ccd6cSJohn Marino 37, 195, 165, 35, 37, 102, 192, 148, 9, 12,
6635796c8dcSSimon Schubert 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
664cf7f2e2dSJohn Marino 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
665*ef5ccd6cSJohn Marino 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
666*ef5ccd6cSJohn Marino 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
667*ef5ccd6cSJohn Marino 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
668*ef5ccd6cSJohn Marino 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
669*ef5ccd6cSJohn Marino 12, 12, 12, 12, 12, 12, 18, 18, 18, 191,
670*ef5ccd6cSJohn Marino 20, 105, 105, 140, 39, 140, 21, 30, 30, 30,
671*ef5ccd6cSJohn Marino 20, 18, 20, 20, 190, 30, 21, 18, 21, 21,
6725796c8dcSSimon Schubert
673*ef5ccd6cSJohn Marino 41, 18, 30, 189, 20, 27, 27, 27, 138, 188,
674*ef5ccd6cSJohn Marino 21, 105, 30, 27, 187, 29, 29, 29, 138, 20,
675*ef5ccd6cSJohn Marino 27, 136, 20, 29, 18, 39, 20, 143, 21, 185,
676*ef5ccd6cSJohn Marino 29, 27, 21, 151, 143, 30, 31, 31, 31, 177,
677*ef5ccd6cSJohn Marino 20, 41, 27, 136, 31, 32, 32, 32, 149, 144,
678*ef5ccd6cSJohn Marino 29, 31, 145, 32, 27, 151, 150, 34, 34, 34,
679*ef5ccd6cSJohn Marino 32, 141, 141, 27, 146, 34, 31, 144, 60, 149,
680*ef5ccd6cSJohn Marino 145, 29, 34, 31, 52, 52, 52, 150, 60, 174,
681*ef5ccd6cSJohn Marino 60, 60, 146, 32, 167, 69, 69, 69, 31, 52,
682*ef5ccd6cSJohn Marino 152, 141, 60, 171, 31, 52, 34, 170, 34, 52,
683*ef5ccd6cSJohn Marino
684*ef5ccd6cSJohn Marino 69, 70, 70, 70, 32, 33, 33, 33, 181, 70,
685*ef5ccd6cSJohn Marino 60, 152, 173, 33, 60, 171, 70, 34, 170, 34,
686*ef5ccd6cSJohn Marino 33, 163, 52, 72, 72, 72, 153, 72, 168, 168,
687*ef5ccd6cSJohn Marino 73, 73, 73, 173, 33, 93, 93, 93, 73, 142,
688*ef5ccd6cSJohn Marino 77, 77, 77, 33, 72, 73, 181, 33, 77, 216,
689*ef5ccd6cSJohn Marino 74, 74, 74, 216, 93, 77, 33, 166, 74, 75,
690*ef5ccd6cSJohn Marino 75, 75, 166, 166, 33, 74, 172, 75, 33, 36,
691*ef5ccd6cSJohn Marino 36, 36, 182, 182, 75, 77, 133, 36, 76, 76,
692*ef5ccd6cSJohn Marino 76, 94, 94, 94, 36, 184, 76, 75, 172, 175,
693*ef5ccd6cSJohn Marino 74, 202, 202, 76, 36, 176, 77, 78, 78, 78,
694*ef5ccd6cSJohn Marino
695*ef5ccd6cSJohn Marino 94, 36, 109, 109, 109, 78, 109, 184, 36, 75,
696*ef5ccd6cSJohn Marino 175, 74, 78, 79, 79, 79, 176, 36, 76, 131,
697*ef5ccd6cSJohn Marino 128, 79, 36, 109, 197, 107, 197, 99, 79, 36,
698*ef5ccd6cSJohn Marino 38, 38, 38, 38, 38, 38, 38, 38, 38, 76,
6995796c8dcSSimon Schubert 38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
7005796c8dcSSimon Schubert 38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
701cf7f2e2dSJohn Marino 38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
702*ef5ccd6cSJohn Marino 38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
703*ef5ccd6cSJohn Marino 38, 38, 38, 38, 38, 38, 38, 38, 38, 38,
704*ef5ccd6cSJohn Marino 38, 38, 38, 38, 38, 38, 38, 48, 48, 48,
7055796c8dcSSimon Schubert
706*ef5ccd6cSJohn Marino 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
707*ef5ccd6cSJohn Marino 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
708*ef5ccd6cSJohn Marino 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
709*ef5ccd6cSJohn Marino 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
710*ef5ccd6cSJohn Marino 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
711*ef5ccd6cSJohn Marino 48, 48, 48, 48, 48, 48, 48, 48, 48, 48,
712*ef5ccd6cSJohn Marino 48, 48, 48, 48, 80, 80, 80, 81, 81, 81,
713*ef5ccd6cSJohn Marino 217, 96, 80, 92, 217, 81, 82, 82, 82, 80,
714*ef5ccd6cSJohn Marino 91, 66, 81, 47, 82, 83, 83, 83, 84, 84,
715*ef5ccd6cSJohn Marino 84, 82, 80, 83, 46, 85, 84, 86, 86, 86,
7165796c8dcSSimon Schubert
717*ef5ccd6cSJohn Marino 83, 45, 85, 84, 44, 86, 89, 183, 183, 85,
718*ef5ccd6cSJohn Marino 81, 43, 86, 25, 80, 89, 24, 82, 85, 89,
719*ef5ccd6cSJohn Marino 83, 186, 186, 85, 87, 87, 87, 23, 89, 19,
720*ef5ccd6cSJohn Marino 85, 81, 87, 86, 17, 15, 89, 183, 82, 87,
721*ef5ccd6cSJohn Marino 89, 83, 88, 90, 225, 5, 88, 4, 225, 88,
722*ef5ccd6cSJohn Marino 90, 186, 196, 196, 86, 226, 88, 90, 3, 226,
723*ef5ccd6cSJohn Marino 103, 103, 198, 198, 87, 88, 90, 115, 88, 0,
724*ef5ccd6cSJohn Marino 88, 90, 103, 108, 108, 108, 115, 88, 90, 0,
725*ef5ccd6cSJohn Marino 115, 108, 196, 0, 0, 87, 97, 0, 108, 115,
726*ef5ccd6cSJohn Marino 103, 0, 198, 0, 103, 97, 97, 115, 0, 0,
7275796c8dcSSimon Schubert
728*ef5ccd6cSJohn Marino 0, 115, 0, 97, 97, 97, 97, 97, 97, 112,
729*ef5ccd6cSJohn Marino 112, 112, 0, 130, 130, 130, 0, 112, 201, 201,
730*ef5ccd6cSJohn Marino 201, 0, 0, 0, 112, 0, 97, 97, 97, 97,
731*ef5ccd6cSJohn Marino 97, 110, 130, 0, 0, 110, 110, 201, 110, 0,
732*ef5ccd6cSJohn Marino 110, 158, 113, 113, 113, 110, 110, 110, 158, 110,
733*ef5ccd6cSJohn Marino 113, 114, 114, 114, 0, 158, 0, 113, 0, 114,
734*ef5ccd6cSJohn Marino 110, 110, 110, 110, 158, 0, 114, 0, 110, 158,
735*ef5ccd6cSJohn Marino 0, 0, 110, 0, 0, 0, 158, 116, 116, 116,
736*ef5ccd6cSJohn Marino 0, 110, 110, 110, 110, 116, 117, 117, 117, 110,
737*ef5ccd6cSJohn Marino 139, 139, 116, 147, 117, 118, 118, 118, 119, 119,
7385796c8dcSSimon Schubert
739*ef5ccd6cSJohn Marino 119, 117, 139, 118, 147, 121, 119, 120, 120, 120,
740*ef5ccd6cSJohn Marino 118, 204, 204, 119, 121, 120, 147, 116, 121, 0,
741*ef5ccd6cSJohn Marino 139, 0, 120, 0, 139, 147, 0, 121, 122, 122,
742*ef5ccd6cSJohn Marino 122, 0, 123, 123, 123, 121, 122, 0, 116, 121,
743*ef5ccd6cSJohn Marino 123, 204, 120, 122, 124, 124, 124, 123, 125, 126,
744*ef5ccd6cSJohn Marino 205, 205, 124, 0, 0, 0, 0, 125, 126, 124,
745*ef5ccd6cSJohn Marino 0, 125, 126, 120, 0, 0, 123, 0, 0, 0,
746*ef5ccd6cSJohn Marino 125, 126, 0, 199, 199, 199, 0, 0, 125, 126,
747*ef5ccd6cSJohn Marino 205, 124, 125, 126, 127, 127, 127, 123, 199, 0,
748*ef5ccd6cSJohn Marino 199, 199, 127, 154, 154, 154, 0, 0, 0, 127,
7495796c8dcSSimon Schubert
750*ef5ccd6cSJohn Marino 0, 154, 124, 132, 132, 0, 0, 0, 154, 0,
751*ef5ccd6cSJohn Marino 0, 132, 132, 132, 132, 132, 132, 155, 155, 155,
752*ef5ccd6cSJohn Marino 156, 0, 0, 0, 0, 155, 0, 0, 0, 156,
753*ef5ccd6cSJohn Marino 0, 0, 155, 156, 132, 132, 132, 132, 132, 0,
754*ef5ccd6cSJohn Marino 0, 0, 156, 157, 157, 157, 0, 159, 159, 159,
755*ef5ccd6cSJohn Marino 156, 157, 0, 0, 156, 159, 161, 0, 157, 160,
756*ef5ccd6cSJohn Marino 160, 160, 159, 161, 0, 0, 0, 160, 0, 0,
757*ef5ccd6cSJohn Marino 161, 0, 0, 0, 160, 162, 162, 162, 0, 161,
758*ef5ccd6cSJohn Marino 169, 169, 169, 162, 161, 178, 178, 178, 169, 0,
759*ef5ccd6cSJohn Marino 162, 161, 0, 178, 0, 169, 179, 179, 179, 0,
760cf7f2e2dSJohn Marino
761*ef5ccd6cSJohn Marino 178, 180, 180, 180, 179, 193, 193, 193, 0, 180,
762*ef5ccd6cSJohn Marino 0, 179, 0, 193, 0, 0, 180, 194, 194, 194,
763*ef5ccd6cSJohn Marino 193, 0, 200, 200, 200, 194, 0, 0, 0, 180,
764*ef5ccd6cSJohn Marino 200, 0, 194, 0, 0, 0, 179, 200, 0, 200,
765*ef5ccd6cSJohn Marino 200, 0, 0, 0, 0, 0, 0, 0, 0, 0,
766*ef5ccd6cSJohn Marino 0, 180, 0, 0, 0, 0, 0, 179, 207, 207,
767*ef5ccd6cSJohn Marino 207, 207, 207, 207, 207, 207, 207, 207, 207, 207,
768*ef5ccd6cSJohn Marino 207, 207, 208, 0, 0, 208, 0, 0, 0, 208,
769*ef5ccd6cSJohn Marino 208, 208, 209, 209, 209, 0, 0, 0, 0, 0,
770*ef5ccd6cSJohn Marino 209, 0, 209, 0, 0, 209, 209, 209, 210, 0,
771*ef5ccd6cSJohn Marino
772*ef5ccd6cSJohn Marino 210, 210, 210, 211, 211, 211, 0, 0, 0, 0,
773*ef5ccd6cSJohn Marino 211, 211, 211, 0, 0, 0, 211, 211, 211, 212,
774*ef5ccd6cSJohn Marino 212, 212, 212, 212, 212, 212, 212, 212, 212, 212,
775*ef5ccd6cSJohn Marino 212, 212, 212, 212, 212, 212, 213, 213, 0, 213,
776*ef5ccd6cSJohn Marino 213, 213, 213, 213, 213, 213, 213, 213, 213, 213,
777*ef5ccd6cSJohn Marino 213, 213, 213, 214, 214, 214, 215, 0, 0, 0,
778*ef5ccd6cSJohn Marino 215, 215, 215, 218, 0, 0, 218, 218, 218, 218,
779*ef5ccd6cSJohn Marino 219, 219, 219, 0, 219, 0, 0, 0, 0, 0,
780*ef5ccd6cSJohn Marino 219, 0, 0, 219, 219, 219, 220, 0, 0, 0,
781*ef5ccd6cSJohn Marino 0, 220, 0, 0, 0, 220, 221, 0, 0, 221,
782*ef5ccd6cSJohn Marino
783*ef5ccd6cSJohn Marino 221, 221, 221, 222, 0, 0, 222, 222, 0, 0,
784*ef5ccd6cSJohn Marino 0, 222, 0, 222, 223, 223, 223, 224, 224, 224,
785*ef5ccd6cSJohn Marino 0, 0, 0, 0, 224, 224, 224, 0, 0, 0,
786*ef5ccd6cSJohn Marino 224, 224, 224, 227, 0, 0, 227, 227, 227, 227,
787*ef5ccd6cSJohn Marino 228, 0, 0, 0, 228, 0, 0, 0, 228, 0,
788*ef5ccd6cSJohn Marino 228, 206, 206, 206, 206, 206, 206, 206, 206, 206,
789*ef5ccd6cSJohn Marino 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
790*ef5ccd6cSJohn Marino 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
791*ef5ccd6cSJohn Marino 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
792*ef5ccd6cSJohn Marino 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
793*ef5ccd6cSJohn Marino
794*ef5ccd6cSJohn Marino 206, 206, 206, 206, 206, 206, 206, 206, 206, 206,
795*ef5ccd6cSJohn Marino 206, 206, 206, 206, 206, 206, 206, 206, 206
7965796c8dcSSimon Schubert } ;
7975796c8dcSSimon Schubert
7985796c8dcSSimon Schubert static yy_state_type yy_last_accepting_state;
7995796c8dcSSimon Schubert static char *yy_last_accepting_cpos;
8005796c8dcSSimon Schubert
801*ef5ccd6cSJohn Marino extern int yy_flex_debug;
802*ef5ccd6cSJohn Marino int yy_flex_debug = 0;
803*ef5ccd6cSJohn Marino
8045796c8dcSSimon Schubert /* The intent behind this definition is that it'll catch
8055796c8dcSSimon Schubert * any uses of REJECT which flex missed.
8065796c8dcSSimon Schubert */
8075796c8dcSSimon Schubert #define REJECT reject_used_but_not_detected
8085796c8dcSSimon Schubert #define yymore() yymore_used_but_not_detected
8095796c8dcSSimon Schubert #define YY_MORE_ADJ 0
8105796c8dcSSimon Schubert #define YY_RESTORE_YY_MORE_OFFSET
8115796c8dcSSimon Schubert char *yytext;
8125796c8dcSSimon Schubert #line 1 "ada-lex.l"
8135796c8dcSSimon Schubert /* FLEX lexer for Ada expressions, for GDB.
814*ef5ccd6cSJohn Marino Copyright (C) 1994-2013 Free Software Foundation, Inc.
8155796c8dcSSimon Schubert
8165796c8dcSSimon Schubert This file is part of GDB.
8175796c8dcSSimon Schubert
8185796c8dcSSimon Schubert This program is free software; you can redistribute it and/or modify
8195796c8dcSSimon Schubert it under the terms of the GNU General Public License as published by
8205796c8dcSSimon Schubert the Free Software Foundation; either version 3 of the License, or
8215796c8dcSSimon Schubert (at your option) any later version.
8225796c8dcSSimon Schubert
8235796c8dcSSimon Schubert This program is distributed in the hope that it will be useful,
8245796c8dcSSimon Schubert but WITHOUT ANY WARRANTY; without even the implied warranty of
8255796c8dcSSimon Schubert MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8265796c8dcSSimon Schubert GNU General Public License for more details.
8275796c8dcSSimon Schubert
8285796c8dcSSimon Schubert You should have received a copy of the GNU General Public License
8295796c8dcSSimon Schubert along with this program. If not, see <http://www.gnu.org/licenses/>. */
8305796c8dcSSimon Schubert /*----------------------------------------------------------------------*/
8315796c8dcSSimon Schubert /* The converted version of this file is to be included in ada-exp.y, */
8325796c8dcSSimon Schubert /* the Ada parser for gdb. The function yylex obtains characters from */
8335796c8dcSSimon Schubert /* the global pointer lexptr. It returns a syntactic category for */
8345796c8dcSSimon Schubert /* each successive token and places a semantic value into yylval */
8355796c8dcSSimon Schubert /* (ada-lval), defined by the parser. */
836*ef5ccd6cSJohn Marino #line 43 "ada-lex.l"
8375796c8dcSSimon Schubert
8385796c8dcSSimon Schubert #define NUMERAL_WIDTH 256
8395796c8dcSSimon Schubert #define LONGEST_SIGN ((ULONGEST) 1 << (sizeof(LONGEST) * HOST_CHAR_BIT - 1))
8405796c8dcSSimon Schubert
8415796c8dcSSimon Schubert /* Temporary staging for numeric literals. */
8425796c8dcSSimon Schubert static char numbuf[NUMERAL_WIDTH];
8435796c8dcSSimon Schubert static void canonicalizeNumeral (char *s1, const char *);
8445796c8dcSSimon Schubert static struct stoken processString (const char*, int);
8455796c8dcSSimon Schubert static int processInt (const char *, const char *, const char *);
8465796c8dcSSimon Schubert static int processReal (const char *);
8475796c8dcSSimon Schubert static struct stoken processId (const char *, int);
8485796c8dcSSimon Schubert static int processAttribute (const char *);
8495796c8dcSSimon Schubert static int find_dot_all (const char *);
850*ef5ccd6cSJohn Marino static void rewind_to_char (int);
8515796c8dcSSimon Schubert
8525796c8dcSSimon Schubert #undef YY_DECL
8535796c8dcSSimon Schubert #define YY_DECL static int yylex ( void )
8545796c8dcSSimon Schubert
855cf7f2e2dSJohn Marino /* Flex generates a static function "input" which is not used.
856cf7f2e2dSJohn Marino Defining YY_NO_INPUT comments it out. */
857cf7f2e2dSJohn Marino #define YY_NO_INPUT
858cf7f2e2dSJohn Marino
8595796c8dcSSimon Schubert #undef YY_INPUT
8605796c8dcSSimon Schubert #define YY_INPUT(BUF, RESULT, MAX_SIZE) \
8615796c8dcSSimon Schubert if ( *lexptr == '\000' ) \
8625796c8dcSSimon Schubert (RESULT) = YY_NULL; \
8635796c8dcSSimon Schubert else \
8645796c8dcSSimon Schubert { \
8655796c8dcSSimon Schubert *(BUF) = *lexptr; \
8665796c8dcSSimon Schubert (RESULT) = 1; \
8675796c8dcSSimon Schubert lexptr += 1; \
8685796c8dcSSimon Schubert }
8695796c8dcSSimon Schubert
8705796c8dcSSimon Schubert static int find_dot_all (const char *);
8715796c8dcSSimon Schubert
872*ef5ccd6cSJohn Marino
873*ef5ccd6cSJohn Marino #line 874 "ada-lex.c"
874*ef5ccd6cSJohn Marino
875*ef5ccd6cSJohn Marino #define INITIAL 0
8765796c8dcSSimon Schubert #define BEFORE_QUAL_QUOTE 1
8775796c8dcSSimon Schubert
878*ef5ccd6cSJohn Marino #ifndef YY_NO_UNISTD_H
879*ef5ccd6cSJohn Marino /* Special case for "unistd.h", since it is non-ANSI. We include it way
880*ef5ccd6cSJohn Marino * down here because we want the user's section 1 to have been scanned first.
881*ef5ccd6cSJohn Marino * The user has a chance to override it with an option.
882*ef5ccd6cSJohn Marino */
883*ef5ccd6cSJohn Marino #include <unistd.h>
884*ef5ccd6cSJohn Marino #endif
885*ef5ccd6cSJohn Marino
886*ef5ccd6cSJohn Marino #ifndef YY_EXTRA_TYPE
887*ef5ccd6cSJohn Marino #define YY_EXTRA_TYPE void *
888*ef5ccd6cSJohn Marino #endif
889*ef5ccd6cSJohn Marino
890*ef5ccd6cSJohn Marino static int yy_init_globals (void );
891*ef5ccd6cSJohn Marino
892*ef5ccd6cSJohn Marino /* Accessor methods to globals.
893*ef5ccd6cSJohn Marino These are made visible to non-reentrant scanners for convenience. */
894*ef5ccd6cSJohn Marino
895*ef5ccd6cSJohn Marino int yylex_destroy (void );
896*ef5ccd6cSJohn Marino
897*ef5ccd6cSJohn Marino int yyget_debug (void );
898*ef5ccd6cSJohn Marino
899*ef5ccd6cSJohn Marino void yyset_debug (int debug_flag );
900*ef5ccd6cSJohn Marino
901*ef5ccd6cSJohn Marino YY_EXTRA_TYPE yyget_extra (void );
902*ef5ccd6cSJohn Marino
903*ef5ccd6cSJohn Marino void yyset_extra (YY_EXTRA_TYPE user_defined );
904*ef5ccd6cSJohn Marino
905*ef5ccd6cSJohn Marino FILE *yyget_in (void );
906*ef5ccd6cSJohn Marino
907*ef5ccd6cSJohn Marino void yyset_in (FILE * in_str );
908*ef5ccd6cSJohn Marino
909*ef5ccd6cSJohn Marino FILE *yyget_out (void );
910*ef5ccd6cSJohn Marino
911*ef5ccd6cSJohn Marino void yyset_out (FILE * out_str );
912*ef5ccd6cSJohn Marino
913*ef5ccd6cSJohn Marino int yyget_leng (void );
914*ef5ccd6cSJohn Marino
915*ef5ccd6cSJohn Marino char *yyget_text (void );
916*ef5ccd6cSJohn Marino
917*ef5ccd6cSJohn Marino int yyget_lineno (void );
918*ef5ccd6cSJohn Marino
919*ef5ccd6cSJohn Marino void yyset_lineno (int line_number );
9205796c8dcSSimon Schubert
9215796c8dcSSimon Schubert /* Macros after this point can all be overridden by user definitions in
9225796c8dcSSimon Schubert * section 1.
9235796c8dcSSimon Schubert */
9245796c8dcSSimon Schubert
9255796c8dcSSimon Schubert #ifndef YY_SKIP_YYWRAP
9265796c8dcSSimon Schubert #ifdef __cplusplus
927*ef5ccd6cSJohn Marino extern "C" int yywrap (void );
9285796c8dcSSimon Schubert #else
929*ef5ccd6cSJohn Marino extern int yywrap (void );
9305796c8dcSSimon Schubert #endif
9315796c8dcSSimon Schubert #endif
9325796c8dcSSimon Schubert
933*ef5ccd6cSJohn Marino static void yyunput (int c,char *buf_ptr );
9345796c8dcSSimon Schubert
9355796c8dcSSimon Schubert #ifndef yytext_ptr
936*ef5ccd6cSJohn Marino static void yy_flex_strncpy (char *,yyconst char *,int );
9375796c8dcSSimon Schubert #endif
9385796c8dcSSimon Schubert
9395796c8dcSSimon Schubert #ifdef YY_NEED_STRLEN
940*ef5ccd6cSJohn Marino static int yy_flex_strlen (yyconst char * );
9415796c8dcSSimon Schubert #endif
9425796c8dcSSimon Schubert
9435796c8dcSSimon Schubert #ifndef YY_NO_INPUT
944*ef5ccd6cSJohn Marino
9455796c8dcSSimon Schubert #ifdef __cplusplus
946*ef5ccd6cSJohn Marino static int yyinput (void );
9475796c8dcSSimon Schubert #else
948*ef5ccd6cSJohn Marino static int input (void );
9495796c8dcSSimon Schubert #endif
9505796c8dcSSimon Schubert
9515796c8dcSSimon Schubert #endif
9525796c8dcSSimon Schubert
9535796c8dcSSimon Schubert /* Amount of stuff to slurp up with each read. */
9545796c8dcSSimon Schubert #ifndef YY_READ_BUF_SIZE
9555796c8dcSSimon Schubert #define YY_READ_BUF_SIZE 8192
9565796c8dcSSimon Schubert #endif
9575796c8dcSSimon Schubert
9585796c8dcSSimon Schubert /* Copy whatever the last rule matched to the standard output. */
9595796c8dcSSimon Schubert #ifndef ECHO
9605796c8dcSSimon Schubert /* This used to be an fputs(), but since the string might contain NUL's,
9615796c8dcSSimon Schubert * we now use fwrite().
9625796c8dcSSimon Schubert */
963*ef5ccd6cSJohn Marino #define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0)
9645796c8dcSSimon Schubert #endif
9655796c8dcSSimon Schubert
9665796c8dcSSimon Schubert /* Gets input and stuffs it into "buf". number of characters read, or YY_NULL,
9675796c8dcSSimon Schubert * is returned in "result".
9685796c8dcSSimon Schubert */
9695796c8dcSSimon Schubert #ifndef YY_INPUT
9705796c8dcSSimon Schubert #define YY_INPUT(buf,result,max_size) \
971*ef5ccd6cSJohn Marino if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \
9725796c8dcSSimon Schubert { \
973*ef5ccd6cSJohn Marino int c = '*'; \
974*ef5ccd6cSJohn Marino unsigned n; \
9755796c8dcSSimon Schubert for ( n = 0; n < max_size && \
9765796c8dcSSimon Schubert (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
9775796c8dcSSimon Schubert buf[n] = (char) c; \
9785796c8dcSSimon Schubert if ( c == '\n' ) \
9795796c8dcSSimon Schubert buf[n++] = (char) c; \
9805796c8dcSSimon Schubert if ( c == EOF && ferror( yyin ) ) \
9815796c8dcSSimon Schubert YY_FATAL_ERROR( "input in flex scanner failed" ); \
9825796c8dcSSimon Schubert result = n; \
9835796c8dcSSimon Schubert } \
984*ef5ccd6cSJohn Marino else \
985*ef5ccd6cSJohn Marino { \
986*ef5ccd6cSJohn Marino errno=0; \
987*ef5ccd6cSJohn Marino while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \
988*ef5ccd6cSJohn Marino { \
989*ef5ccd6cSJohn Marino if( errno != EINTR) \
990*ef5ccd6cSJohn Marino { \
991*ef5ccd6cSJohn Marino YY_FATAL_ERROR( "input in flex scanner failed" ); \
992*ef5ccd6cSJohn Marino break; \
993*ef5ccd6cSJohn Marino } \
994*ef5ccd6cSJohn Marino errno=0; \
995*ef5ccd6cSJohn Marino clearerr(yyin); \
996*ef5ccd6cSJohn Marino } \
997*ef5ccd6cSJohn Marino }\
998*ef5ccd6cSJohn Marino \
999*ef5ccd6cSJohn Marino
10005796c8dcSSimon Schubert #endif
10015796c8dcSSimon Schubert
10025796c8dcSSimon Schubert /* No semi-colon after return; correct usage is to write "yyterminate();" -
10035796c8dcSSimon Schubert * we don't want an extra ';' after the "return" because that will cause
10045796c8dcSSimon Schubert * some compilers to complain about unreachable statements.
10055796c8dcSSimon Schubert */
10065796c8dcSSimon Schubert #ifndef yyterminate
10075796c8dcSSimon Schubert #define yyterminate() return YY_NULL
10085796c8dcSSimon Schubert #endif
10095796c8dcSSimon Schubert
10105796c8dcSSimon Schubert /* Number of entries by which start-condition stack grows. */
10115796c8dcSSimon Schubert #ifndef YY_START_STACK_INCR
10125796c8dcSSimon Schubert #define YY_START_STACK_INCR 25
10135796c8dcSSimon Schubert #endif
10145796c8dcSSimon Schubert
10155796c8dcSSimon Schubert /* Report a fatal error. */
10165796c8dcSSimon Schubert #ifndef YY_FATAL_ERROR
10175796c8dcSSimon Schubert #define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
10185796c8dcSSimon Schubert #endif
10195796c8dcSSimon Schubert
1020*ef5ccd6cSJohn Marino /* end tables serialization structures and prototypes */
1021*ef5ccd6cSJohn Marino
10225796c8dcSSimon Schubert /* Default declaration of generated scanner - a define so the user can
10235796c8dcSSimon Schubert * easily add parameters.
10245796c8dcSSimon Schubert */
10255796c8dcSSimon Schubert #ifndef YY_DECL
1026*ef5ccd6cSJohn Marino #define YY_DECL_IS_OURS 1
1027*ef5ccd6cSJohn Marino
1028*ef5ccd6cSJohn Marino extern int yylex (void);
1029*ef5ccd6cSJohn Marino
1030*ef5ccd6cSJohn Marino #define YY_DECL int yylex (void)
1031*ef5ccd6cSJohn Marino #endif /* !YY_DECL */
10325796c8dcSSimon Schubert
10335796c8dcSSimon Schubert /* Code executed at the beginning of each rule, after yytext and yyleng
10345796c8dcSSimon Schubert * have been set up.
10355796c8dcSSimon Schubert */
10365796c8dcSSimon Schubert #ifndef YY_USER_ACTION
10375796c8dcSSimon Schubert #define YY_USER_ACTION
10385796c8dcSSimon Schubert #endif
10395796c8dcSSimon Schubert
10405796c8dcSSimon Schubert /* Code executed at the end of each rule. */
10415796c8dcSSimon Schubert #ifndef YY_BREAK
10425796c8dcSSimon Schubert #define YY_BREAK break;
10435796c8dcSSimon Schubert #endif
10445796c8dcSSimon Schubert
10455796c8dcSSimon Schubert #define YY_RULE_SETUP \
10465796c8dcSSimon Schubert YY_USER_ACTION
10475796c8dcSSimon Schubert
1048*ef5ccd6cSJohn Marino /** The main scanner function which does all the work.
1049*ef5ccd6cSJohn Marino */
10505796c8dcSSimon Schubert YY_DECL
10515796c8dcSSimon Schubert {
10525796c8dcSSimon Schubert register yy_state_type yy_current_state;
1053*ef5ccd6cSJohn Marino register char *yy_cp, *yy_bp;
10545796c8dcSSimon Schubert register int yy_act;
10555796c8dcSSimon Schubert
1056cf7f2e2dSJohn Marino #line 84 "ada-lex.l"
10575796c8dcSSimon Schubert
10585796c8dcSSimon Schubert
1059*ef5ccd6cSJohn Marino #line 1060 "ada-lex.c"
10605796c8dcSSimon Schubert
1061*ef5ccd6cSJohn Marino if ( !(yy_init) )
10625796c8dcSSimon Schubert {
1063*ef5ccd6cSJohn Marino (yy_init) = 1;
10645796c8dcSSimon Schubert
10655796c8dcSSimon Schubert #ifdef YY_USER_INIT
10665796c8dcSSimon Schubert YY_USER_INIT;
10675796c8dcSSimon Schubert #endif
10685796c8dcSSimon Schubert
1069*ef5ccd6cSJohn Marino if ( ! (yy_start) )
1070*ef5ccd6cSJohn Marino (yy_start) = 1; /* first start state */
10715796c8dcSSimon Schubert
10725796c8dcSSimon Schubert if ( ! yyin )
10735796c8dcSSimon Schubert yyin = stdin;
10745796c8dcSSimon Schubert
10755796c8dcSSimon Schubert if ( ! yyout )
10765796c8dcSSimon Schubert yyout = stdout;
10775796c8dcSSimon Schubert
1078*ef5ccd6cSJohn Marino if ( ! YY_CURRENT_BUFFER ) {
1079*ef5ccd6cSJohn Marino yyensure_buffer_stack ();
1080*ef5ccd6cSJohn Marino YY_CURRENT_BUFFER_LVALUE =
10815796c8dcSSimon Schubert yy_create_buffer(yyin,YY_BUF_SIZE );
1082*ef5ccd6cSJohn Marino }
10835796c8dcSSimon Schubert
10845796c8dcSSimon Schubert yy_load_buffer_state( );
10855796c8dcSSimon Schubert }
10865796c8dcSSimon Schubert
10875796c8dcSSimon Schubert while ( 1 ) /* loops until end-of-file is reached */
10885796c8dcSSimon Schubert {
1089*ef5ccd6cSJohn Marino yy_cp = (yy_c_buf_p);
10905796c8dcSSimon Schubert
10915796c8dcSSimon Schubert /* Support of yytext. */
1092*ef5ccd6cSJohn Marino *yy_cp = (yy_hold_char);
10935796c8dcSSimon Schubert
10945796c8dcSSimon Schubert /* yy_bp points to the position in yy_ch_buf of the start of
10955796c8dcSSimon Schubert * the current run.
10965796c8dcSSimon Schubert */
10975796c8dcSSimon Schubert yy_bp = yy_cp;
10985796c8dcSSimon Schubert
1099*ef5ccd6cSJohn Marino yy_current_state = (yy_start);
11005796c8dcSSimon Schubert yy_match:
11015796c8dcSSimon Schubert do
11025796c8dcSSimon Schubert {
11035796c8dcSSimon Schubert register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
11045796c8dcSSimon Schubert if ( yy_accept[yy_current_state] )
11055796c8dcSSimon Schubert {
1106*ef5ccd6cSJohn Marino (yy_last_accepting_state) = yy_current_state;
1107*ef5ccd6cSJohn Marino (yy_last_accepting_cpos) = yy_cp;
11085796c8dcSSimon Schubert }
11095796c8dcSSimon Schubert while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
11105796c8dcSSimon Schubert {
11115796c8dcSSimon Schubert yy_current_state = (int) yy_def[yy_current_state];
1112*ef5ccd6cSJohn Marino if ( yy_current_state >= 207 )
11135796c8dcSSimon Schubert yy_c = yy_meta[(unsigned int) yy_c];
11145796c8dcSSimon Schubert }
11155796c8dcSSimon Schubert yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
11165796c8dcSSimon Schubert ++yy_cp;
11175796c8dcSSimon Schubert }
1118*ef5ccd6cSJohn Marino while ( yy_base[yy_current_state] != 1252 );
11195796c8dcSSimon Schubert
11205796c8dcSSimon Schubert yy_find_action:
11215796c8dcSSimon Schubert yy_act = yy_accept[yy_current_state];
11225796c8dcSSimon Schubert if ( yy_act == 0 )
11235796c8dcSSimon Schubert { /* have to back up */
1124*ef5ccd6cSJohn Marino yy_cp = (yy_last_accepting_cpos);
1125*ef5ccd6cSJohn Marino yy_current_state = (yy_last_accepting_state);
11265796c8dcSSimon Schubert yy_act = yy_accept[yy_current_state];
11275796c8dcSSimon Schubert }
11285796c8dcSSimon Schubert
11295796c8dcSSimon Schubert YY_DO_BEFORE_ACTION;
11305796c8dcSSimon Schubert
11315796c8dcSSimon Schubert do_action: /* This label is used only to access EOF actions. */
11325796c8dcSSimon Schubert
11335796c8dcSSimon Schubert switch ( yy_act )
11345796c8dcSSimon Schubert { /* beginning of action switch */
11355796c8dcSSimon Schubert case 0: /* must back up */
11365796c8dcSSimon Schubert /* undo the effects of YY_DO_BEFORE_ACTION */
1137*ef5ccd6cSJohn Marino *yy_cp = (yy_hold_char);
1138*ef5ccd6cSJohn Marino yy_cp = (yy_last_accepting_cpos);
1139*ef5ccd6cSJohn Marino yy_current_state = (yy_last_accepting_state);
11405796c8dcSSimon Schubert goto yy_find_action;
11415796c8dcSSimon Schubert
11425796c8dcSSimon Schubert case 1:
1143*ef5ccd6cSJohn Marino /* rule 1 can match eol */
11445796c8dcSSimon Schubert YY_RULE_SETUP
1145cf7f2e2dSJohn Marino #line 86 "ada-lex.l"
11465796c8dcSSimon Schubert { }
11475796c8dcSSimon Schubert YY_BREAK
11485796c8dcSSimon Schubert case 2:
11495796c8dcSSimon Schubert YY_RULE_SETUP
1150cf7f2e2dSJohn Marino #line 88 "ada-lex.l"
11515796c8dcSSimon Schubert { yyterminate(); }
11525796c8dcSSimon Schubert YY_BREAK
11535796c8dcSSimon Schubert case 3:
11545796c8dcSSimon Schubert YY_RULE_SETUP
1155cf7f2e2dSJohn Marino #line 90 "ada-lex.l"
11565796c8dcSSimon Schubert {
11575796c8dcSSimon Schubert canonicalizeNumeral (numbuf, yytext);
11585796c8dcSSimon Schubert return processInt (NULL, numbuf, strrchr(numbuf, 'e')+1);
11595796c8dcSSimon Schubert }
11605796c8dcSSimon Schubert YY_BREAK
11615796c8dcSSimon Schubert case 4:
11625796c8dcSSimon Schubert YY_RULE_SETUP
1163cf7f2e2dSJohn Marino #line 95 "ada-lex.l"
11645796c8dcSSimon Schubert {
11655796c8dcSSimon Schubert canonicalizeNumeral (numbuf, yytext);
11665796c8dcSSimon Schubert return processInt (NULL, numbuf, NULL);
11675796c8dcSSimon Schubert }
11685796c8dcSSimon Schubert YY_BREAK
11695796c8dcSSimon Schubert case 5:
11705796c8dcSSimon Schubert YY_RULE_SETUP
1171cf7f2e2dSJohn Marino #line 100 "ada-lex.l"
11725796c8dcSSimon Schubert {
11735796c8dcSSimon Schubert canonicalizeNumeral (numbuf, yytext);
11745796c8dcSSimon Schubert return processInt (numbuf,
11755796c8dcSSimon Schubert strchr (numbuf, '#') + 1,
11765796c8dcSSimon Schubert strrchr(numbuf, '#') + 1);
11775796c8dcSSimon Schubert }
11785796c8dcSSimon Schubert YY_BREAK
11795796c8dcSSimon Schubert case 6:
11805796c8dcSSimon Schubert YY_RULE_SETUP
1181cf7f2e2dSJohn Marino #line 107 "ada-lex.l"
11825796c8dcSSimon Schubert {
11835796c8dcSSimon Schubert canonicalizeNumeral (numbuf, yytext);
11845796c8dcSSimon Schubert return processInt (numbuf, strchr (numbuf, '#') + 1, NULL);
11855796c8dcSSimon Schubert }
11865796c8dcSSimon Schubert YY_BREAK
11875796c8dcSSimon Schubert case 7:
11885796c8dcSSimon Schubert YY_RULE_SETUP
1189cf7f2e2dSJohn Marino #line 112 "ada-lex.l"
11905796c8dcSSimon Schubert {
11915796c8dcSSimon Schubert canonicalizeNumeral (numbuf, yytext+2);
11925796c8dcSSimon Schubert return processInt ("16#", numbuf, NULL);
11935796c8dcSSimon Schubert }
11945796c8dcSSimon Schubert YY_BREAK
11955796c8dcSSimon Schubert case 8:
11965796c8dcSSimon Schubert YY_RULE_SETUP
1197cf7f2e2dSJohn Marino #line 118 "ada-lex.l"
11985796c8dcSSimon Schubert {
11995796c8dcSSimon Schubert canonicalizeNumeral (numbuf, yytext);
12005796c8dcSSimon Schubert return processReal (numbuf);
12015796c8dcSSimon Schubert }
12025796c8dcSSimon Schubert YY_BREAK
12035796c8dcSSimon Schubert case 9:
12045796c8dcSSimon Schubert YY_RULE_SETUP
1205cf7f2e2dSJohn Marino #line 123 "ada-lex.l"
12065796c8dcSSimon Schubert {
12075796c8dcSSimon Schubert canonicalizeNumeral (numbuf, yytext);
12085796c8dcSSimon Schubert return processReal (numbuf);
12095796c8dcSSimon Schubert }
12105796c8dcSSimon Schubert YY_BREAK
12115796c8dcSSimon Schubert case 10:
12125796c8dcSSimon Schubert YY_RULE_SETUP
1213cf7f2e2dSJohn Marino #line 128 "ada-lex.l"
12145796c8dcSSimon Schubert {
12155796c8dcSSimon Schubert error (_("Based real literals not implemented yet."));
12165796c8dcSSimon Schubert }
12175796c8dcSSimon Schubert YY_BREAK
12185796c8dcSSimon Schubert case 11:
12195796c8dcSSimon Schubert YY_RULE_SETUP
1220cf7f2e2dSJohn Marino #line 132 "ada-lex.l"
12215796c8dcSSimon Schubert {
12225796c8dcSSimon Schubert error (_("Based real literals not implemented yet."));
12235796c8dcSSimon Schubert }
12245796c8dcSSimon Schubert YY_BREAK
12255796c8dcSSimon Schubert case 12:
12265796c8dcSSimon Schubert YY_RULE_SETUP
1227cf7f2e2dSJohn Marino #line 136 "ada-lex.l"
12285796c8dcSSimon Schubert {
12295796c8dcSSimon Schubert yylval.typed_val.type = type_char ();
12305796c8dcSSimon Schubert yylval.typed_val.val = yytext[1];
12315796c8dcSSimon Schubert return CHARLIT;
12325796c8dcSSimon Schubert }
12335796c8dcSSimon Schubert YY_BREAK
12345796c8dcSSimon Schubert case 13:
12355796c8dcSSimon Schubert YY_RULE_SETUP
1236cf7f2e2dSJohn Marino #line 142 "ada-lex.l"
12375796c8dcSSimon Schubert {
12385796c8dcSSimon Schubert int v;
12395796c8dcSSimon Schubert yylval.typed_val.type = type_char ();
12405796c8dcSSimon Schubert sscanf (yytext+3, "%2x", &v);
12415796c8dcSSimon Schubert yylval.typed_val.val = v;
12425796c8dcSSimon Schubert return CHARLIT;
12435796c8dcSSimon Schubert }
12445796c8dcSSimon Schubert YY_BREAK
12455796c8dcSSimon Schubert case 14:
12465796c8dcSSimon Schubert YY_RULE_SETUP
1247cf7f2e2dSJohn Marino #line 150 "ada-lex.l"
12485796c8dcSSimon Schubert {
12495796c8dcSSimon Schubert yylval.sval = processString (yytext+1, yyleng-2);
12505796c8dcSSimon Schubert return STRING;
12515796c8dcSSimon Schubert }
12525796c8dcSSimon Schubert YY_BREAK
12535796c8dcSSimon Schubert case 15:
12545796c8dcSSimon Schubert YY_RULE_SETUP
1255cf7f2e2dSJohn Marino #line 155 "ada-lex.l"
12565796c8dcSSimon Schubert {
12575796c8dcSSimon Schubert error (_("ill-formed or non-terminated string literal"));
12585796c8dcSSimon Schubert }
12595796c8dcSSimon Schubert YY_BREAK
12605796c8dcSSimon Schubert case 16:
12615796c8dcSSimon Schubert YY_RULE_SETUP
1262cf7f2e2dSJohn Marino #line 160 "ada-lex.l"
12635796c8dcSSimon Schubert {
1264*ef5ccd6cSJohn Marino rewind_to_char ('i');
12655796c8dcSSimon Schubert return 0;
12665796c8dcSSimon Schubert }
12675796c8dcSSimon Schubert YY_BREAK
12685796c8dcSSimon Schubert case 17:
12695796c8dcSSimon Schubert YY_RULE_SETUP
1270*ef5ccd6cSJohn Marino #line 165 "ada-lex.l"
1271*ef5ccd6cSJohn Marino {
1272*ef5ccd6cSJohn Marino rewind_to_char ('t');
1273*ef5ccd6cSJohn Marino return 0;
1274*ef5ccd6cSJohn Marino }
1275*ef5ccd6cSJohn Marino YY_BREAK
1276*ef5ccd6cSJohn Marino case 18:
1277*ef5ccd6cSJohn Marino /* rule 18 can match eol */
1278*ef5ccd6cSJohn Marino YY_RULE_SETUP
1279*ef5ccd6cSJohn Marino #line 170 "ada-lex.l"
1280cf7f2e2dSJohn Marino {
1281cf7f2e2dSJohn Marino /* This keyword signals the end of the expression and
1282cf7f2e2dSJohn Marino will be processed separately. */
1283*ef5ccd6cSJohn Marino rewind_to_char ('t');
1284cf7f2e2dSJohn Marino return 0;
1285cf7f2e2dSJohn Marino }
12865796c8dcSSimon Schubert YY_BREAK
1287cf7f2e2dSJohn Marino /* ADA KEYWORDS */
12885796c8dcSSimon Schubert case 19:
12895796c8dcSSimon Schubert YY_RULE_SETUP
1290cf7f2e2dSJohn Marino #line 179 "ada-lex.l"
1291*ef5ccd6cSJohn Marino { return ABS; }
12925796c8dcSSimon Schubert YY_BREAK
12935796c8dcSSimon Schubert case 20:
12945796c8dcSSimon Schubert YY_RULE_SETUP
1295cf7f2e2dSJohn Marino #line 180 "ada-lex.l"
1296*ef5ccd6cSJohn Marino { return _AND_; }
12975796c8dcSSimon Schubert YY_BREAK
12985796c8dcSSimon Schubert case 21:
12995796c8dcSSimon Schubert YY_RULE_SETUP
1300cf7f2e2dSJohn Marino #line 181 "ada-lex.l"
1301*ef5ccd6cSJohn Marino { return ELSE; }
13025796c8dcSSimon Schubert YY_BREAK
13035796c8dcSSimon Schubert case 22:
13045796c8dcSSimon Schubert YY_RULE_SETUP
1305cf7f2e2dSJohn Marino #line 182 "ada-lex.l"
1306*ef5ccd6cSJohn Marino { return IN; }
13075796c8dcSSimon Schubert YY_BREAK
13085796c8dcSSimon Schubert case 23:
13095796c8dcSSimon Schubert YY_RULE_SETUP
1310cf7f2e2dSJohn Marino #line 183 "ada-lex.l"
1311*ef5ccd6cSJohn Marino { return MOD; }
13125796c8dcSSimon Schubert YY_BREAK
13135796c8dcSSimon Schubert case 24:
13145796c8dcSSimon Schubert YY_RULE_SETUP
1315cf7f2e2dSJohn Marino #line 184 "ada-lex.l"
1316*ef5ccd6cSJohn Marino { return NEW; }
13175796c8dcSSimon Schubert YY_BREAK
13185796c8dcSSimon Schubert case 25:
13195796c8dcSSimon Schubert YY_RULE_SETUP
1320cf7f2e2dSJohn Marino #line 185 "ada-lex.l"
1321*ef5ccd6cSJohn Marino { return NOT; }
13225796c8dcSSimon Schubert YY_BREAK
13235796c8dcSSimon Schubert case 26:
13245796c8dcSSimon Schubert YY_RULE_SETUP
1325cf7f2e2dSJohn Marino #line 186 "ada-lex.l"
1326*ef5ccd6cSJohn Marino { return NULL_PTR; }
13275796c8dcSSimon Schubert YY_BREAK
13285796c8dcSSimon Schubert case 27:
13295796c8dcSSimon Schubert YY_RULE_SETUP
1330cf7f2e2dSJohn Marino #line 187 "ada-lex.l"
1331*ef5ccd6cSJohn Marino { return OR; }
13325796c8dcSSimon Schubert YY_BREAK
13335796c8dcSSimon Schubert case 28:
13345796c8dcSSimon Schubert YY_RULE_SETUP
1335cf7f2e2dSJohn Marino #line 188 "ada-lex.l"
1336*ef5ccd6cSJohn Marino { return OTHERS; }
13375796c8dcSSimon Schubert YY_BREAK
13385796c8dcSSimon Schubert case 29:
13395796c8dcSSimon Schubert YY_RULE_SETUP
1340cf7f2e2dSJohn Marino #line 189 "ada-lex.l"
1341*ef5ccd6cSJohn Marino { return REM; }
1342cf7f2e2dSJohn Marino YY_BREAK
1343cf7f2e2dSJohn Marino case 30:
1344cf7f2e2dSJohn Marino YY_RULE_SETUP
1345cf7f2e2dSJohn Marino #line 190 "ada-lex.l"
1346*ef5ccd6cSJohn Marino { return THEN; }
1347*ef5ccd6cSJohn Marino YY_BREAK
1348*ef5ccd6cSJohn Marino case 31:
1349*ef5ccd6cSJohn Marino YY_RULE_SETUP
1350*ef5ccd6cSJohn Marino #line 191 "ada-lex.l"
13515796c8dcSSimon Schubert { return XOR; }
13525796c8dcSSimon Schubert YY_BREAK
13535796c8dcSSimon Schubert /* BOOLEAN "KEYWORDS" */
13545796c8dcSSimon Schubert /* True and False are not keywords in Ada, but rather enumeration constants.
13555796c8dcSSimon Schubert However, the boolean type is no longer represented as an enum, so True
13565796c8dcSSimon Schubert and False are no longer defined in symbol tables. We compromise by
13575796c8dcSSimon Schubert making them keywords (when bare). */
1358cf7f2e2dSJohn Marino case 32:
1359cf7f2e2dSJohn Marino YY_RULE_SETUP
1360cf7f2e2dSJohn Marino #line 200 "ada-lex.l"
1361*ef5ccd6cSJohn Marino { return TRUEKEYWORD; }
1362*ef5ccd6cSJohn Marino YY_BREAK
1363*ef5ccd6cSJohn Marino case 33:
1364*ef5ccd6cSJohn Marino YY_RULE_SETUP
1365*ef5ccd6cSJohn Marino #line 201 "ada-lex.l"
13665796c8dcSSimon Schubert { return FALSEKEYWORD; }
13675796c8dcSSimon Schubert YY_BREAK
13685796c8dcSSimon Schubert /* ATTRIBUTES */
1369*ef5ccd6cSJohn Marino case 34:
1370*ef5ccd6cSJohn Marino /* rule 34 can match eol */
13715796c8dcSSimon Schubert YY_RULE_SETUP
1372*ef5ccd6cSJohn Marino #line 205 "ada-lex.l"
13735796c8dcSSimon Schubert { return processAttribute (yytext+1); }
13745796c8dcSSimon Schubert YY_BREAK
13755796c8dcSSimon Schubert /* PUNCTUATION */
13765796c8dcSSimon Schubert case 35:
13775796c8dcSSimon Schubert YY_RULE_SETUP
1378cf7f2e2dSJohn Marino #line 209 "ada-lex.l"
1379*ef5ccd6cSJohn Marino { return ARROW; }
13805796c8dcSSimon Schubert YY_BREAK
13815796c8dcSSimon Schubert case 36:
13825796c8dcSSimon Schubert YY_RULE_SETUP
1383cf7f2e2dSJohn Marino #line 210 "ada-lex.l"
1384*ef5ccd6cSJohn Marino { return DOTDOT; }
13855796c8dcSSimon Schubert YY_BREAK
13865796c8dcSSimon Schubert case 37:
13875796c8dcSSimon Schubert YY_RULE_SETUP
1388cf7f2e2dSJohn Marino #line 211 "ada-lex.l"
1389*ef5ccd6cSJohn Marino { return STARSTAR; }
13905796c8dcSSimon Schubert YY_BREAK
13915796c8dcSSimon Schubert case 38:
13925796c8dcSSimon Schubert YY_RULE_SETUP
1393cf7f2e2dSJohn Marino #line 212 "ada-lex.l"
1394*ef5ccd6cSJohn Marino { return ASSIGN; }
13955796c8dcSSimon Schubert YY_BREAK
13965796c8dcSSimon Schubert case 39:
13975796c8dcSSimon Schubert YY_RULE_SETUP
1398cf7f2e2dSJohn Marino #line 213 "ada-lex.l"
1399*ef5ccd6cSJohn Marino { return NOTEQUAL; }
14005796c8dcSSimon Schubert YY_BREAK
14015796c8dcSSimon Schubert case 40:
14025796c8dcSSimon Schubert YY_RULE_SETUP
1403cf7f2e2dSJohn Marino #line 214 "ada-lex.l"
1404*ef5ccd6cSJohn Marino { return LEQ; }
14055796c8dcSSimon Schubert YY_BREAK
14065796c8dcSSimon Schubert case 41:
14075796c8dcSSimon Schubert YY_RULE_SETUP
1408*ef5ccd6cSJohn Marino #line 215 "ada-lex.l"
1409*ef5ccd6cSJohn Marino { return GEQ; }
14105796c8dcSSimon Schubert YY_BREAK
14115796c8dcSSimon Schubert case 42:
14125796c8dcSSimon Schubert YY_RULE_SETUP
1413*ef5ccd6cSJohn Marino #line 217 "ada-lex.l"
1414*ef5ccd6cSJohn Marino { BEGIN INITIAL; return '\''; }
1415cf7f2e2dSJohn Marino YY_BREAK
1416cf7f2e2dSJohn Marino case 43:
1417cf7f2e2dSJohn Marino YY_RULE_SETUP
1418*ef5ccd6cSJohn Marino #line 219 "ada-lex.l"
1419*ef5ccd6cSJohn Marino { return yytext[0]; }
1420*ef5ccd6cSJohn Marino YY_BREAK
1421*ef5ccd6cSJohn Marino case 44:
1422*ef5ccd6cSJohn Marino YY_RULE_SETUP
1423*ef5ccd6cSJohn Marino #line 221 "ada-lex.l"
14245796c8dcSSimon Schubert { if (paren_depth == 0 && comma_terminates)
14255796c8dcSSimon Schubert {
1426*ef5ccd6cSJohn Marino rewind_to_char (',');
14275796c8dcSSimon Schubert return 0;
14285796c8dcSSimon Schubert }
14295796c8dcSSimon Schubert else
14305796c8dcSSimon Schubert return ',';
14315796c8dcSSimon Schubert }
14325796c8dcSSimon Schubert YY_BREAK
1433*ef5ccd6cSJohn Marino case 45:
14345796c8dcSSimon Schubert YY_RULE_SETUP
1435cf7f2e2dSJohn Marino #line 230 "ada-lex.l"
1436cf7f2e2dSJohn Marino { paren_depth += 1; return '('; }
1437cf7f2e2dSJohn Marino YY_BREAK
1438*ef5ccd6cSJohn Marino case 46:
1439cf7f2e2dSJohn Marino YY_RULE_SETUP
1440cf7f2e2dSJohn Marino #line 231 "ada-lex.l"
14415796c8dcSSimon Schubert { if (paren_depth == 0)
14425796c8dcSSimon Schubert {
1443*ef5ccd6cSJohn Marino rewind_to_char (')');
14445796c8dcSSimon Schubert return 0;
14455796c8dcSSimon Schubert }
14465796c8dcSSimon Schubert else
14475796c8dcSSimon Schubert {
14485796c8dcSSimon Schubert paren_depth -= 1;
14495796c8dcSSimon Schubert return ')';
14505796c8dcSSimon Schubert }
14515796c8dcSSimon Schubert }
14525796c8dcSSimon Schubert YY_BREAK
1453*ef5ccd6cSJohn Marino case 47:
1454*ef5ccd6cSJohn Marino /* rule 47 can match eol */
14555796c8dcSSimon Schubert YY_RULE_SETUP
1456*ef5ccd6cSJohn Marino #line 243 "ada-lex.l"
1457cf7f2e2dSJohn Marino { return DOT_ALL; }
1458cf7f2e2dSJohn Marino YY_BREAK
1459*ef5ccd6cSJohn Marino case 48:
1460*ef5ccd6cSJohn Marino /* rule 48 can match eol */
1461cf7f2e2dSJohn Marino YY_RULE_SETUP
1462*ef5ccd6cSJohn Marino #line 245 "ada-lex.l"
14635796c8dcSSimon Schubert {
14645796c8dcSSimon Schubert yylval.sval = processId (yytext+1, yyleng-1);
14655796c8dcSSimon Schubert return DOT_ID;
14665796c8dcSSimon Schubert }
14675796c8dcSSimon Schubert YY_BREAK
1468*ef5ccd6cSJohn Marino case 49:
1469*ef5ccd6cSJohn Marino /* rule 49 can match eol */
14705796c8dcSSimon Schubert YY_RULE_SETUP
1471*ef5ccd6cSJohn Marino #line 250 "ada-lex.l"
14725796c8dcSSimon Schubert {
14735796c8dcSSimon Schubert int all_posn = find_dot_all (yytext);
14745796c8dcSSimon Schubert
14755796c8dcSSimon Schubert if (all_posn == -1 && yytext[yyleng-1] == '\'')
14765796c8dcSSimon Schubert {
14775796c8dcSSimon Schubert BEGIN BEFORE_QUAL_QUOTE;
14785796c8dcSSimon Schubert yyless (yyleng-1);
14795796c8dcSSimon Schubert }
14805796c8dcSSimon Schubert else if (all_posn >= 0)
14815796c8dcSSimon Schubert yyless (all_posn);
14825796c8dcSSimon Schubert yylval.sval = processId (yytext, yyleng);
14835796c8dcSSimon Schubert return NAME;
14845796c8dcSSimon Schubert }
14855796c8dcSSimon Schubert YY_BREAK
14865796c8dcSSimon Schubert /* GDB EXPRESSION CONSTRUCTS */
1487*ef5ccd6cSJohn Marino case 50:
1488*ef5ccd6cSJohn Marino /* rule 50 can match eol */
14895796c8dcSSimon Schubert YY_RULE_SETUP
1490*ef5ccd6cSJohn Marino #line 267 "ada-lex.l"
14915796c8dcSSimon Schubert {
14925796c8dcSSimon Schubert yyless (yyleng - 2);
14935796c8dcSSimon Schubert yylval.sval = processId (yytext, yyleng);
14945796c8dcSSimon Schubert return NAME;
14955796c8dcSSimon Schubert }
14965796c8dcSSimon Schubert YY_BREAK
1497cf7f2e2dSJohn Marino case 51:
1498cf7f2e2dSJohn Marino YY_RULE_SETUP
1499*ef5ccd6cSJohn Marino #line 273 "ada-lex.l"
1500*ef5ccd6cSJohn Marino { return COLONCOLON; }
1501*ef5ccd6cSJohn Marino YY_BREAK
1502*ef5ccd6cSJohn Marino case 52:
1503*ef5ccd6cSJohn Marino YY_RULE_SETUP
1504*ef5ccd6cSJohn Marino #line 275 "ada-lex.l"
15055796c8dcSSimon Schubert { return yytext[0]; }
15065796c8dcSSimon Schubert YY_BREAK
15075796c8dcSSimon Schubert /* REGISTERS AND GDB CONVENIENCE VARIABLES */
1508*ef5ccd6cSJohn Marino case 53:
15095796c8dcSSimon Schubert YY_RULE_SETUP
1510*ef5ccd6cSJohn Marino #line 279 "ada-lex.l"
15115796c8dcSSimon Schubert {
15125796c8dcSSimon Schubert yylval.sval.ptr = yytext;
15135796c8dcSSimon Schubert yylval.sval.length = yyleng;
15145796c8dcSSimon Schubert return SPECIAL_VARIABLE;
15155796c8dcSSimon Schubert }
15165796c8dcSSimon Schubert YY_BREAK
15175796c8dcSSimon Schubert /* CATCH-ALL ERROR CASE */
1518cf7f2e2dSJohn Marino case 54:
1519cf7f2e2dSJohn Marino YY_RULE_SETUP
1520*ef5ccd6cSJohn Marino #line 287 "ada-lex.l"
1521*ef5ccd6cSJohn Marino { error (_("Invalid character '%s' in expression."), yytext); }
1522*ef5ccd6cSJohn Marino YY_BREAK
1523*ef5ccd6cSJohn Marino case 55:
1524*ef5ccd6cSJohn Marino YY_RULE_SETUP
1525*ef5ccd6cSJohn Marino #line 288 "ada-lex.l"
15265796c8dcSSimon Schubert YY_FATAL_ERROR( "flex scanner jammed" );
15275796c8dcSSimon Schubert YY_BREAK
1528*ef5ccd6cSJohn Marino #line 1529 "ada-lex.c"
15295796c8dcSSimon Schubert case YY_STATE_EOF(INITIAL):
15305796c8dcSSimon Schubert case YY_STATE_EOF(BEFORE_QUAL_QUOTE):
15315796c8dcSSimon Schubert yyterminate();
15325796c8dcSSimon Schubert
15335796c8dcSSimon Schubert case YY_END_OF_BUFFER:
15345796c8dcSSimon Schubert {
15355796c8dcSSimon Schubert /* Amount of text matched not including the EOB char. */
1536*ef5ccd6cSJohn Marino int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1;
15375796c8dcSSimon Schubert
15385796c8dcSSimon Schubert /* Undo the effects of YY_DO_BEFORE_ACTION. */
1539*ef5ccd6cSJohn Marino *yy_cp = (yy_hold_char);
15405796c8dcSSimon Schubert YY_RESTORE_YY_MORE_OFFSET
15415796c8dcSSimon Schubert
1542*ef5ccd6cSJohn Marino if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW )
15435796c8dcSSimon Schubert {
15445796c8dcSSimon Schubert /* We're scanning a new file or input source. It's
15455796c8dcSSimon Schubert * possible that this happened because the user
15465796c8dcSSimon Schubert * just pointed yyin at a new source and called
15475796c8dcSSimon Schubert * yylex(). If so, then we have to assure
1548*ef5ccd6cSJohn Marino * consistency between YY_CURRENT_BUFFER and our
15495796c8dcSSimon Schubert * globals. Here is the right place to do so, because
15505796c8dcSSimon Schubert * this is the first action (other than possibly a
15515796c8dcSSimon Schubert * back-up) that will match for the new input source.
15525796c8dcSSimon Schubert */
1553*ef5ccd6cSJohn Marino (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
1554*ef5ccd6cSJohn Marino YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin;
1555*ef5ccd6cSJohn Marino YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL;
15565796c8dcSSimon Schubert }
15575796c8dcSSimon Schubert
15585796c8dcSSimon Schubert /* Note that here we test for yy_c_buf_p "<=" to the position
15595796c8dcSSimon Schubert * of the first EOB in the buffer, since yy_c_buf_p will
15605796c8dcSSimon Schubert * already have been incremented past the NUL character
15615796c8dcSSimon Schubert * (since all states make transitions on EOB to the
15625796c8dcSSimon Schubert * end-of-buffer state). Contrast this with the test
15635796c8dcSSimon Schubert * in input().
15645796c8dcSSimon Schubert */
1565*ef5ccd6cSJohn Marino if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
15665796c8dcSSimon Schubert { /* This was really a NUL. */
15675796c8dcSSimon Schubert yy_state_type yy_next_state;
15685796c8dcSSimon Schubert
1569*ef5ccd6cSJohn Marino (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text;
15705796c8dcSSimon Schubert
15715796c8dcSSimon Schubert yy_current_state = yy_get_previous_state( );
15725796c8dcSSimon Schubert
15735796c8dcSSimon Schubert /* Okay, we're now positioned to make the NUL
15745796c8dcSSimon Schubert * transition. We couldn't have
15755796c8dcSSimon Schubert * yy_get_previous_state() go ahead and do it
15765796c8dcSSimon Schubert * for us because it doesn't know how to deal
15775796c8dcSSimon Schubert * with the possibility of jamming (and we don't
15785796c8dcSSimon Schubert * want to build jamming into it because then it
15795796c8dcSSimon Schubert * will run more slowly).
15805796c8dcSSimon Schubert */
15815796c8dcSSimon Schubert
15825796c8dcSSimon Schubert yy_next_state = yy_try_NUL_trans( yy_current_state );
15835796c8dcSSimon Schubert
1584*ef5ccd6cSJohn Marino yy_bp = (yytext_ptr) + YY_MORE_ADJ;
15855796c8dcSSimon Schubert
15865796c8dcSSimon Schubert if ( yy_next_state )
15875796c8dcSSimon Schubert {
15885796c8dcSSimon Schubert /* Consume the NUL. */
1589*ef5ccd6cSJohn Marino yy_cp = ++(yy_c_buf_p);
15905796c8dcSSimon Schubert yy_current_state = yy_next_state;
15915796c8dcSSimon Schubert goto yy_match;
15925796c8dcSSimon Schubert }
15935796c8dcSSimon Schubert
15945796c8dcSSimon Schubert else
15955796c8dcSSimon Schubert {
1596*ef5ccd6cSJohn Marino yy_cp = (yy_c_buf_p);
15975796c8dcSSimon Schubert goto yy_find_action;
15985796c8dcSSimon Schubert }
15995796c8dcSSimon Schubert }
16005796c8dcSSimon Schubert
16015796c8dcSSimon Schubert else switch ( yy_get_next_buffer( ) )
16025796c8dcSSimon Schubert {
16035796c8dcSSimon Schubert case EOB_ACT_END_OF_FILE:
16045796c8dcSSimon Schubert {
1605*ef5ccd6cSJohn Marino (yy_did_buffer_switch_on_eof) = 0;
16065796c8dcSSimon Schubert
16075796c8dcSSimon Schubert if ( yywrap( ) )
16085796c8dcSSimon Schubert {
16095796c8dcSSimon Schubert /* Note: because we've taken care in
16105796c8dcSSimon Schubert * yy_get_next_buffer() to have set up
16115796c8dcSSimon Schubert * yytext, we can now set up
16125796c8dcSSimon Schubert * yy_c_buf_p so that if some total
16135796c8dcSSimon Schubert * hoser (like flex itself) wants to
16145796c8dcSSimon Schubert * call the scanner after we return the
16155796c8dcSSimon Schubert * YY_NULL, it'll still work - another
16165796c8dcSSimon Schubert * YY_NULL will get returned.
16175796c8dcSSimon Schubert */
1618*ef5ccd6cSJohn Marino (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ;
16195796c8dcSSimon Schubert
16205796c8dcSSimon Schubert yy_act = YY_STATE_EOF(YY_START);
16215796c8dcSSimon Schubert goto do_action;
16225796c8dcSSimon Schubert }
16235796c8dcSSimon Schubert
16245796c8dcSSimon Schubert else
16255796c8dcSSimon Schubert {
1626*ef5ccd6cSJohn Marino if ( ! (yy_did_buffer_switch_on_eof) )
16275796c8dcSSimon Schubert YY_NEW_FILE;
16285796c8dcSSimon Schubert }
16295796c8dcSSimon Schubert break;
16305796c8dcSSimon Schubert }
16315796c8dcSSimon Schubert
16325796c8dcSSimon Schubert case EOB_ACT_CONTINUE_SCAN:
1633*ef5ccd6cSJohn Marino (yy_c_buf_p) =
1634*ef5ccd6cSJohn Marino (yytext_ptr) + yy_amount_of_matched_text;
16355796c8dcSSimon Schubert
16365796c8dcSSimon Schubert yy_current_state = yy_get_previous_state( );
16375796c8dcSSimon Schubert
1638*ef5ccd6cSJohn Marino yy_cp = (yy_c_buf_p);
1639*ef5ccd6cSJohn Marino yy_bp = (yytext_ptr) + YY_MORE_ADJ;
16405796c8dcSSimon Schubert goto yy_match;
16415796c8dcSSimon Schubert
16425796c8dcSSimon Schubert case EOB_ACT_LAST_MATCH:
1643*ef5ccd6cSJohn Marino (yy_c_buf_p) =
1644*ef5ccd6cSJohn Marino &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)];
16455796c8dcSSimon Schubert
16465796c8dcSSimon Schubert yy_current_state = yy_get_previous_state( );
16475796c8dcSSimon Schubert
1648*ef5ccd6cSJohn Marino yy_cp = (yy_c_buf_p);
1649*ef5ccd6cSJohn Marino yy_bp = (yytext_ptr) + YY_MORE_ADJ;
16505796c8dcSSimon Schubert goto yy_find_action;
16515796c8dcSSimon Schubert }
16525796c8dcSSimon Schubert break;
16535796c8dcSSimon Schubert }
16545796c8dcSSimon Schubert
16555796c8dcSSimon Schubert default:
16565796c8dcSSimon Schubert YY_FATAL_ERROR(
16575796c8dcSSimon Schubert "fatal flex scanner internal error--no action found" );
16585796c8dcSSimon Schubert } /* end of action switch */
16595796c8dcSSimon Schubert } /* end of scanning one token */
16605796c8dcSSimon Schubert } /* end of yylex */
16615796c8dcSSimon Schubert
16625796c8dcSSimon Schubert /* yy_get_next_buffer - try to read in a new buffer
16635796c8dcSSimon Schubert *
16645796c8dcSSimon Schubert * Returns a code representing an action:
16655796c8dcSSimon Schubert * EOB_ACT_LAST_MATCH -
16665796c8dcSSimon Schubert * EOB_ACT_CONTINUE_SCAN - continue scanning from current position
16675796c8dcSSimon Schubert * EOB_ACT_END_OF_FILE - end of file
16685796c8dcSSimon Schubert */
yy_get_next_buffer(void)1669*ef5ccd6cSJohn Marino static int yy_get_next_buffer (void)
16705796c8dcSSimon Schubert {
1671*ef5ccd6cSJohn Marino register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf;
1672*ef5ccd6cSJohn Marino register char *source = (yytext_ptr);
16735796c8dcSSimon Schubert register int number_to_move, i;
16745796c8dcSSimon Schubert int ret_val;
16755796c8dcSSimon Schubert
1676*ef5ccd6cSJohn Marino if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] )
16775796c8dcSSimon Schubert YY_FATAL_ERROR(
16785796c8dcSSimon Schubert "fatal flex scanner internal error--end of buffer missed" );
16795796c8dcSSimon Schubert
1680*ef5ccd6cSJohn Marino if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 )
16815796c8dcSSimon Schubert { /* Don't try to fill the buffer, so this is an EOF. */
1682*ef5ccd6cSJohn Marino if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 )
16835796c8dcSSimon Schubert {
16845796c8dcSSimon Schubert /* We matched a single character, the EOB, so
16855796c8dcSSimon Schubert * treat this as a final EOF.
16865796c8dcSSimon Schubert */
16875796c8dcSSimon Schubert return EOB_ACT_END_OF_FILE;
16885796c8dcSSimon Schubert }
16895796c8dcSSimon Schubert
16905796c8dcSSimon Schubert else
16915796c8dcSSimon Schubert {
16925796c8dcSSimon Schubert /* We matched some text prior to the EOB, first
16935796c8dcSSimon Schubert * process it.
16945796c8dcSSimon Schubert */
16955796c8dcSSimon Schubert return EOB_ACT_LAST_MATCH;
16965796c8dcSSimon Schubert }
16975796c8dcSSimon Schubert }
16985796c8dcSSimon Schubert
16995796c8dcSSimon Schubert /* Try to read more data. */
17005796c8dcSSimon Schubert
17015796c8dcSSimon Schubert /* First move last chars to start of buffer. */
1702*ef5ccd6cSJohn Marino number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr)) - 1;
17035796c8dcSSimon Schubert
17045796c8dcSSimon Schubert for ( i = 0; i < number_to_move; ++i )
17055796c8dcSSimon Schubert *(dest++) = *(source++);
17065796c8dcSSimon Schubert
1707*ef5ccd6cSJohn Marino if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING )
17085796c8dcSSimon Schubert /* don't do the read, it's not guaranteed to return an EOF,
17095796c8dcSSimon Schubert * just force an EOF
17105796c8dcSSimon Schubert */
1711*ef5ccd6cSJohn Marino YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0;
17125796c8dcSSimon Schubert
17135796c8dcSSimon Schubert else
17145796c8dcSSimon Schubert {
17155796c8dcSSimon Schubert int num_to_read =
1716*ef5ccd6cSJohn Marino YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1;
17175796c8dcSSimon Schubert
17185796c8dcSSimon Schubert while ( num_to_read <= 0 )
17195796c8dcSSimon Schubert { /* Not enough room in the buffer - grow it. */
17205796c8dcSSimon Schubert
17215796c8dcSSimon Schubert /* just a shorter name for the current buffer */
1722*ef5ccd6cSJohn Marino YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
17235796c8dcSSimon Schubert
17245796c8dcSSimon Schubert int yy_c_buf_p_offset =
1725*ef5ccd6cSJohn Marino (int) ((yy_c_buf_p) - b->yy_ch_buf);
17265796c8dcSSimon Schubert
17275796c8dcSSimon Schubert if ( b->yy_is_our_buffer )
17285796c8dcSSimon Schubert {
17295796c8dcSSimon Schubert int new_size = b->yy_buf_size * 2;
17305796c8dcSSimon Schubert
17315796c8dcSSimon Schubert if ( new_size <= 0 )
17325796c8dcSSimon Schubert b->yy_buf_size += b->yy_buf_size / 8;
17335796c8dcSSimon Schubert else
17345796c8dcSSimon Schubert b->yy_buf_size *= 2;
17355796c8dcSSimon Schubert
17365796c8dcSSimon Schubert b->yy_ch_buf = (char *)
17375796c8dcSSimon Schubert /* Include room in for 2 EOB chars. */
1738*ef5ccd6cSJohn Marino yyxrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 );
17395796c8dcSSimon Schubert }
17405796c8dcSSimon Schubert else
17415796c8dcSSimon Schubert /* Can't grow it, we don't own it. */
17425796c8dcSSimon Schubert b->yy_ch_buf = 0;
17435796c8dcSSimon Schubert
17445796c8dcSSimon Schubert if ( ! b->yy_ch_buf )
17455796c8dcSSimon Schubert YY_FATAL_ERROR(
17465796c8dcSSimon Schubert "fatal error - scanner input buffer overflow" );
17475796c8dcSSimon Schubert
1748*ef5ccd6cSJohn Marino (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset];
17495796c8dcSSimon Schubert
1750*ef5ccd6cSJohn Marino num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size -
17515796c8dcSSimon Schubert number_to_move - 1;
1752*ef5ccd6cSJohn Marino
17535796c8dcSSimon Schubert }
17545796c8dcSSimon Schubert
17555796c8dcSSimon Schubert if ( num_to_read > YY_READ_BUF_SIZE )
17565796c8dcSSimon Schubert num_to_read = YY_READ_BUF_SIZE;
17575796c8dcSSimon Schubert
17585796c8dcSSimon Schubert /* Read in more data. */
1759*ef5ccd6cSJohn Marino YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
1760*ef5ccd6cSJohn Marino (yy_n_chars), (size_t) num_to_read );
17615796c8dcSSimon Schubert
1762*ef5ccd6cSJohn Marino YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
17635796c8dcSSimon Schubert }
17645796c8dcSSimon Schubert
1765*ef5ccd6cSJohn Marino if ( (yy_n_chars) == 0 )
17665796c8dcSSimon Schubert {
17675796c8dcSSimon Schubert if ( number_to_move == YY_MORE_ADJ )
17685796c8dcSSimon Schubert {
17695796c8dcSSimon Schubert ret_val = EOB_ACT_END_OF_FILE;
17705796c8dcSSimon Schubert yyrestart(yyin );
17715796c8dcSSimon Schubert }
17725796c8dcSSimon Schubert
17735796c8dcSSimon Schubert else
17745796c8dcSSimon Schubert {
17755796c8dcSSimon Schubert ret_val = EOB_ACT_LAST_MATCH;
1776*ef5ccd6cSJohn Marino YY_CURRENT_BUFFER_LVALUE->yy_buffer_status =
17775796c8dcSSimon Schubert YY_BUFFER_EOF_PENDING;
17785796c8dcSSimon Schubert }
17795796c8dcSSimon Schubert }
17805796c8dcSSimon Schubert
17815796c8dcSSimon Schubert else
17825796c8dcSSimon Schubert ret_val = EOB_ACT_CONTINUE_SCAN;
17835796c8dcSSimon Schubert
1784*ef5ccd6cSJohn Marino if ((yy_size_t) ((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) {
1785*ef5ccd6cSJohn Marino /* Extend the array by 50%, plus the number we really need. */
1786*ef5ccd6cSJohn Marino yy_size_t new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1);
1787*ef5ccd6cSJohn Marino YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyxrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size );
1788*ef5ccd6cSJohn Marino if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
1789*ef5ccd6cSJohn Marino YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" );
1790*ef5ccd6cSJohn Marino }
17915796c8dcSSimon Schubert
1792*ef5ccd6cSJohn Marino (yy_n_chars) += number_to_move;
1793*ef5ccd6cSJohn Marino YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR;
1794*ef5ccd6cSJohn Marino YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR;
1795*ef5ccd6cSJohn Marino
1796*ef5ccd6cSJohn Marino (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0];
17975796c8dcSSimon Schubert
17985796c8dcSSimon Schubert return ret_val;
17995796c8dcSSimon Schubert }
18005796c8dcSSimon Schubert
18015796c8dcSSimon Schubert /* yy_get_previous_state - get the state just before the EOB char was reached */
18025796c8dcSSimon Schubert
yy_get_previous_state(void)1803*ef5ccd6cSJohn Marino static yy_state_type yy_get_previous_state (void)
18045796c8dcSSimon Schubert {
18055796c8dcSSimon Schubert register yy_state_type yy_current_state;
18065796c8dcSSimon Schubert register char *yy_cp;
18075796c8dcSSimon Schubert
1808*ef5ccd6cSJohn Marino yy_current_state = (yy_start);
18095796c8dcSSimon Schubert
1810*ef5ccd6cSJohn Marino for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
18115796c8dcSSimon Schubert {
18125796c8dcSSimon Schubert register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
18135796c8dcSSimon Schubert if ( yy_accept[yy_current_state] )
18145796c8dcSSimon Schubert {
1815*ef5ccd6cSJohn Marino (yy_last_accepting_state) = yy_current_state;
1816*ef5ccd6cSJohn Marino (yy_last_accepting_cpos) = yy_cp;
18175796c8dcSSimon Schubert }
18185796c8dcSSimon Schubert while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
18195796c8dcSSimon Schubert {
18205796c8dcSSimon Schubert yy_current_state = (int) yy_def[yy_current_state];
1821*ef5ccd6cSJohn Marino if ( yy_current_state >= 207 )
18225796c8dcSSimon Schubert yy_c = yy_meta[(unsigned int) yy_c];
18235796c8dcSSimon Schubert }
18245796c8dcSSimon Schubert yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
18255796c8dcSSimon Schubert }
18265796c8dcSSimon Schubert
18275796c8dcSSimon Schubert return yy_current_state;
18285796c8dcSSimon Schubert }
18295796c8dcSSimon Schubert
18305796c8dcSSimon Schubert /* yy_try_NUL_trans - try to make a transition on the NUL character
18315796c8dcSSimon Schubert *
18325796c8dcSSimon Schubert * synopsis
18335796c8dcSSimon Schubert * next_state = yy_try_NUL_trans( current_state );
18345796c8dcSSimon Schubert */
yy_try_NUL_trans(yy_state_type yy_current_state)18355796c8dcSSimon Schubert static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state )
18365796c8dcSSimon Schubert {
18375796c8dcSSimon Schubert register int yy_is_jam;
1838*ef5ccd6cSJohn Marino register char *yy_cp = (yy_c_buf_p);
18395796c8dcSSimon Schubert
18405796c8dcSSimon Schubert register YY_CHAR yy_c = 1;
18415796c8dcSSimon Schubert if ( yy_accept[yy_current_state] )
18425796c8dcSSimon Schubert {
1843*ef5ccd6cSJohn Marino (yy_last_accepting_state) = yy_current_state;
1844*ef5ccd6cSJohn Marino (yy_last_accepting_cpos) = yy_cp;
18455796c8dcSSimon Schubert }
18465796c8dcSSimon Schubert while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
18475796c8dcSSimon Schubert {
18485796c8dcSSimon Schubert yy_current_state = (int) yy_def[yy_current_state];
1849*ef5ccd6cSJohn Marino if ( yy_current_state >= 207 )
18505796c8dcSSimon Schubert yy_c = yy_meta[(unsigned int) yy_c];
18515796c8dcSSimon Schubert }
18525796c8dcSSimon Schubert yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1853*ef5ccd6cSJohn Marino yy_is_jam = (yy_current_state == 206);
18545796c8dcSSimon Schubert
18555796c8dcSSimon Schubert return yy_is_jam ? 0 : yy_current_state;
18565796c8dcSSimon Schubert }
18575796c8dcSSimon Schubert
yyunput(int c,register char * yy_bp)18585796c8dcSSimon Schubert static void yyunput (int c, register char * yy_bp )
18595796c8dcSSimon Schubert {
1860*ef5ccd6cSJohn Marino register char *yy_cp;
1861*ef5ccd6cSJohn Marino
1862*ef5ccd6cSJohn Marino yy_cp = (yy_c_buf_p);
18635796c8dcSSimon Schubert
18645796c8dcSSimon Schubert /* undo effects of setting up yytext */
1865*ef5ccd6cSJohn Marino *yy_cp = (yy_hold_char);
18665796c8dcSSimon Schubert
1867*ef5ccd6cSJohn Marino if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
18685796c8dcSSimon Schubert { /* need to shift things up to make room */
18695796c8dcSSimon Schubert /* +2 for EOB chars. */
1870*ef5ccd6cSJohn Marino register int number_to_move = (yy_n_chars) + 2;
1871*ef5ccd6cSJohn Marino register char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[
1872*ef5ccd6cSJohn Marino YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2];
18735796c8dcSSimon Schubert register char *source =
1874*ef5ccd6cSJohn Marino &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move];
18755796c8dcSSimon Schubert
1876*ef5ccd6cSJohn Marino while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf )
18775796c8dcSSimon Schubert *--dest = *--source;
18785796c8dcSSimon Schubert
18795796c8dcSSimon Schubert yy_cp += (int) (dest - source);
18805796c8dcSSimon Schubert yy_bp += (int) (dest - source);
1881*ef5ccd6cSJohn Marino YY_CURRENT_BUFFER_LVALUE->yy_n_chars =
1882*ef5ccd6cSJohn Marino (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_buf_size;
18835796c8dcSSimon Schubert
1884*ef5ccd6cSJohn Marino if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 )
18855796c8dcSSimon Schubert YY_FATAL_ERROR( "flex scanner push-back overflow" );
18865796c8dcSSimon Schubert }
18875796c8dcSSimon Schubert
18885796c8dcSSimon Schubert *--yy_cp = (char) c;
18895796c8dcSSimon Schubert
1890*ef5ccd6cSJohn Marino (yytext_ptr) = yy_bp;
1891*ef5ccd6cSJohn Marino (yy_hold_char) = *yy_cp;
1892*ef5ccd6cSJohn Marino (yy_c_buf_p) = yy_cp;
18935796c8dcSSimon Schubert }
18945796c8dcSSimon Schubert
18955796c8dcSSimon Schubert #ifndef YY_NO_INPUT
18965796c8dcSSimon Schubert #ifdef __cplusplus
yyinput(void)1897*ef5ccd6cSJohn Marino static int yyinput (void)
18985796c8dcSSimon Schubert #else
1899*ef5ccd6cSJohn Marino static int input (void)
19005796c8dcSSimon Schubert #endif
1901*ef5ccd6cSJohn Marino
19025796c8dcSSimon Schubert {
19035796c8dcSSimon Schubert int c;
19045796c8dcSSimon Schubert
1905*ef5ccd6cSJohn Marino *(yy_c_buf_p) = (yy_hold_char);
19065796c8dcSSimon Schubert
1907*ef5ccd6cSJohn Marino if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR )
19085796c8dcSSimon Schubert {
19095796c8dcSSimon Schubert /* yy_c_buf_p now points to the character we want to return.
19105796c8dcSSimon Schubert * If this occurs *before* the EOB characters, then it's a
19115796c8dcSSimon Schubert * valid NUL; if not, then we've hit the end of the buffer.
19125796c8dcSSimon Schubert */
1913*ef5ccd6cSJohn Marino if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] )
19145796c8dcSSimon Schubert /* This was really a NUL. */
1915*ef5ccd6cSJohn Marino *(yy_c_buf_p) = '\0';
19165796c8dcSSimon Schubert
19175796c8dcSSimon Schubert else
19185796c8dcSSimon Schubert { /* need more input */
1919*ef5ccd6cSJohn Marino int offset = (yy_c_buf_p) - (yytext_ptr);
1920*ef5ccd6cSJohn Marino ++(yy_c_buf_p);
19215796c8dcSSimon Schubert
19225796c8dcSSimon Schubert switch ( yy_get_next_buffer( ) )
19235796c8dcSSimon Schubert {
19245796c8dcSSimon Schubert case EOB_ACT_LAST_MATCH:
19255796c8dcSSimon Schubert /* This happens because yy_g_n_b()
19265796c8dcSSimon Schubert * sees that we've accumulated a
19275796c8dcSSimon Schubert * token and flags that we need to
19285796c8dcSSimon Schubert * try matching the token before
19295796c8dcSSimon Schubert * proceeding. But for input(),
19305796c8dcSSimon Schubert * there's no matching to consider.
19315796c8dcSSimon Schubert * So convert the EOB_ACT_LAST_MATCH
19325796c8dcSSimon Schubert * to EOB_ACT_END_OF_FILE.
19335796c8dcSSimon Schubert */
19345796c8dcSSimon Schubert
19355796c8dcSSimon Schubert /* Reset buffer status. */
19365796c8dcSSimon Schubert yyrestart(yyin );
19375796c8dcSSimon Schubert
1938*ef5ccd6cSJohn Marino /*FALLTHROUGH*/
19395796c8dcSSimon Schubert
19405796c8dcSSimon Schubert case EOB_ACT_END_OF_FILE:
19415796c8dcSSimon Schubert {
19425796c8dcSSimon Schubert if ( yywrap( ) )
19435796c8dcSSimon Schubert return EOF;
19445796c8dcSSimon Schubert
1945*ef5ccd6cSJohn Marino if ( ! (yy_did_buffer_switch_on_eof) )
19465796c8dcSSimon Schubert YY_NEW_FILE;
19475796c8dcSSimon Schubert #ifdef __cplusplus
19485796c8dcSSimon Schubert return yyinput();
19495796c8dcSSimon Schubert #else
19505796c8dcSSimon Schubert return input();
19515796c8dcSSimon Schubert #endif
19525796c8dcSSimon Schubert }
19535796c8dcSSimon Schubert
19545796c8dcSSimon Schubert case EOB_ACT_CONTINUE_SCAN:
1955*ef5ccd6cSJohn Marino (yy_c_buf_p) = (yytext_ptr) + offset;
19565796c8dcSSimon Schubert break;
19575796c8dcSSimon Schubert }
19585796c8dcSSimon Schubert }
19595796c8dcSSimon Schubert }
19605796c8dcSSimon Schubert
1961*ef5ccd6cSJohn Marino c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */
1962*ef5ccd6cSJohn Marino *(yy_c_buf_p) = '\0'; /* preserve yytext */
1963*ef5ccd6cSJohn Marino (yy_hold_char) = *++(yy_c_buf_p);
19645796c8dcSSimon Schubert
19655796c8dcSSimon Schubert return c;
19665796c8dcSSimon Schubert }
1967*ef5ccd6cSJohn Marino #endif /* ifndef YY_NO_INPUT */
19685796c8dcSSimon Schubert
1969*ef5ccd6cSJohn Marino /** Immediately switch to a different input stream.
1970*ef5ccd6cSJohn Marino * @param input_file A readable stream.
1971*ef5ccd6cSJohn Marino *
1972*ef5ccd6cSJohn Marino * @note This function does not reset the start condition to @c INITIAL .
1973*ef5ccd6cSJohn Marino */
yyrestart(FILE * input_file)19745796c8dcSSimon Schubert void yyrestart (FILE * input_file )
19755796c8dcSSimon Schubert {
19765796c8dcSSimon Schubert
1977*ef5ccd6cSJohn Marino if ( ! YY_CURRENT_BUFFER ){
1978*ef5ccd6cSJohn Marino yyensure_buffer_stack ();
1979*ef5ccd6cSJohn Marino YY_CURRENT_BUFFER_LVALUE =
1980*ef5ccd6cSJohn Marino yy_create_buffer(yyin,YY_BUF_SIZE );
1981*ef5ccd6cSJohn Marino }
1982*ef5ccd6cSJohn Marino
1983*ef5ccd6cSJohn Marino yy_init_buffer(YY_CURRENT_BUFFER,input_file );
19845796c8dcSSimon Schubert yy_load_buffer_state( );
19855796c8dcSSimon Schubert }
19865796c8dcSSimon Schubert
1987*ef5ccd6cSJohn Marino /** Switch to a different input buffer.
1988*ef5ccd6cSJohn Marino * @param new_buffer The new input buffer.
1989*ef5ccd6cSJohn Marino *
1990*ef5ccd6cSJohn Marino */
yy_switch_to_buffer(YY_BUFFER_STATE new_buffer)19915796c8dcSSimon Schubert void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer )
19925796c8dcSSimon Schubert {
1993*ef5ccd6cSJohn Marino
1994*ef5ccd6cSJohn Marino /* TODO. We should be able to replace this entire function body
1995*ef5ccd6cSJohn Marino * with
1996*ef5ccd6cSJohn Marino * yypop_buffer_state();
1997*ef5ccd6cSJohn Marino * yypush_buffer_state(new_buffer);
1998*ef5ccd6cSJohn Marino */
1999*ef5ccd6cSJohn Marino yyensure_buffer_stack ();
2000*ef5ccd6cSJohn Marino if ( YY_CURRENT_BUFFER == new_buffer )
20015796c8dcSSimon Schubert return;
20025796c8dcSSimon Schubert
2003*ef5ccd6cSJohn Marino if ( YY_CURRENT_BUFFER )
20045796c8dcSSimon Schubert {
20055796c8dcSSimon Schubert /* Flush out information for old buffer. */
2006*ef5ccd6cSJohn Marino *(yy_c_buf_p) = (yy_hold_char);
2007*ef5ccd6cSJohn Marino YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
2008*ef5ccd6cSJohn Marino YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
20095796c8dcSSimon Schubert }
20105796c8dcSSimon Schubert
2011*ef5ccd6cSJohn Marino YY_CURRENT_BUFFER_LVALUE = new_buffer;
20125796c8dcSSimon Schubert yy_load_buffer_state( );
20135796c8dcSSimon Schubert
20145796c8dcSSimon Schubert /* We don't actually know whether we did this switch during
20155796c8dcSSimon Schubert * EOF (yywrap()) processing, but the only time this flag
20165796c8dcSSimon Schubert * is looked at is after yywrap() is called, so it's safe
20175796c8dcSSimon Schubert * to go ahead and always set it.
20185796c8dcSSimon Schubert */
2019*ef5ccd6cSJohn Marino (yy_did_buffer_switch_on_eof) = 1;
20205796c8dcSSimon Schubert }
20215796c8dcSSimon Schubert
yy_load_buffer_state(void)2022*ef5ccd6cSJohn Marino static void yy_load_buffer_state (void)
20235796c8dcSSimon Schubert {
2024*ef5ccd6cSJohn Marino (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars;
2025*ef5ccd6cSJohn Marino (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos;
2026*ef5ccd6cSJohn Marino yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file;
2027*ef5ccd6cSJohn Marino (yy_hold_char) = *(yy_c_buf_p);
20285796c8dcSSimon Schubert }
20295796c8dcSSimon Schubert
2030*ef5ccd6cSJohn Marino /** Allocate and initialize an input buffer state.
2031*ef5ccd6cSJohn Marino * @param file A readable stream.
2032*ef5ccd6cSJohn Marino * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE.
2033*ef5ccd6cSJohn Marino *
2034*ef5ccd6cSJohn Marino * @return the allocated buffer state.
2035*ef5ccd6cSJohn Marino */
yy_create_buffer(FILE * file,int size)20365796c8dcSSimon Schubert YY_BUFFER_STATE yy_create_buffer (FILE * file, int size )
20375796c8dcSSimon Schubert {
20385796c8dcSSimon Schubert YY_BUFFER_STATE b;
20395796c8dcSSimon Schubert
2040*ef5ccd6cSJohn Marino b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) );
20415796c8dcSSimon Schubert if ( ! b )
20425796c8dcSSimon Schubert YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
20435796c8dcSSimon Schubert
20445796c8dcSSimon Schubert b->yy_buf_size = size;
20455796c8dcSSimon Schubert
20465796c8dcSSimon Schubert /* yy_ch_buf has to be 2 characters longer than the size given because
20475796c8dcSSimon Schubert * we need to put in 2 end-of-buffer characters.
20485796c8dcSSimon Schubert */
2049*ef5ccd6cSJohn Marino b->yy_ch_buf = (char *) yyalloc(b->yy_buf_size + 2 );
20505796c8dcSSimon Schubert if ( ! b->yy_ch_buf )
20515796c8dcSSimon Schubert YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
20525796c8dcSSimon Schubert
20535796c8dcSSimon Schubert b->yy_is_our_buffer = 1;
20545796c8dcSSimon Schubert
20555796c8dcSSimon Schubert yy_init_buffer(b,file );
20565796c8dcSSimon Schubert
20575796c8dcSSimon Schubert return b;
20585796c8dcSSimon Schubert }
20595796c8dcSSimon Schubert
2060*ef5ccd6cSJohn Marino /** Destroy the buffer.
2061*ef5ccd6cSJohn Marino * @param b a buffer created with yy_create_buffer()
2062*ef5ccd6cSJohn Marino *
2063*ef5ccd6cSJohn Marino */
yy_delete_buffer(YY_BUFFER_STATE b)20645796c8dcSSimon Schubert void yy_delete_buffer (YY_BUFFER_STATE b )
20655796c8dcSSimon Schubert {
2066*ef5ccd6cSJohn Marino
20675796c8dcSSimon Schubert if ( ! b )
20685796c8dcSSimon Schubert return;
20695796c8dcSSimon Schubert
2070*ef5ccd6cSJohn Marino if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */
2071*ef5ccd6cSJohn Marino YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0;
20725796c8dcSSimon Schubert
20735796c8dcSSimon Schubert if ( b->yy_is_our_buffer )
2074*ef5ccd6cSJohn Marino yyfree((void *) b->yy_ch_buf );
20755796c8dcSSimon Schubert
2076*ef5ccd6cSJohn Marino yyfree((void *) b );
20775796c8dcSSimon Schubert }
20785796c8dcSSimon Schubert
2079*ef5ccd6cSJohn Marino #ifndef __cplusplus
2080*ef5ccd6cSJohn Marino extern int isatty (int );
2081*ef5ccd6cSJohn Marino #endif /* __cplusplus */
20825796c8dcSSimon Schubert
2083*ef5ccd6cSJohn Marino /* Initializes or reinitializes a buffer.
2084*ef5ccd6cSJohn Marino * This function is sometimes called more than once on the same buffer,
2085*ef5ccd6cSJohn Marino * such as during a yyrestart() or at EOF.
2086*ef5ccd6cSJohn Marino */
yy_init_buffer(YY_BUFFER_STATE b,FILE * file)2087*ef5ccd6cSJohn Marino static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file )
20885796c8dcSSimon Schubert
20895796c8dcSSimon Schubert {
2090*ef5ccd6cSJohn Marino int oerrno = errno;
2091*ef5ccd6cSJohn Marino
20925796c8dcSSimon Schubert yy_flush_buffer(b );
20935796c8dcSSimon Schubert
20945796c8dcSSimon Schubert b->yy_input_file = file;
20955796c8dcSSimon Schubert b->yy_fill_buffer = 1;
20965796c8dcSSimon Schubert
2097*ef5ccd6cSJohn Marino /* If b is the current buffer, then yy_init_buffer was _probably_
2098*ef5ccd6cSJohn Marino * called from yyrestart() or through yy_get_next_buffer.
2099*ef5ccd6cSJohn Marino * In that case, we don't want to reset the lineno or column.
2100*ef5ccd6cSJohn Marino */
2101*ef5ccd6cSJohn Marino if (b != YY_CURRENT_BUFFER){
2102*ef5ccd6cSJohn Marino b->yy_bs_lineno = 1;
2103*ef5ccd6cSJohn Marino b->yy_bs_column = 0;
21045796c8dcSSimon Schubert }
21055796c8dcSSimon Schubert
2106*ef5ccd6cSJohn Marino b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
21075796c8dcSSimon Schubert
2108*ef5ccd6cSJohn Marino errno = oerrno;
2109*ef5ccd6cSJohn Marino }
2110*ef5ccd6cSJohn Marino
2111*ef5ccd6cSJohn Marino /** Discard all buffered characters. On the next scan, YY_INPUT will be called.
2112*ef5ccd6cSJohn Marino * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER.
2113*ef5ccd6cSJohn Marino *
2114*ef5ccd6cSJohn Marino */
yy_flush_buffer(YY_BUFFER_STATE b)21155796c8dcSSimon Schubert void yy_flush_buffer (YY_BUFFER_STATE b )
21165796c8dcSSimon Schubert {
21175796c8dcSSimon Schubert if ( ! b )
21185796c8dcSSimon Schubert return;
21195796c8dcSSimon Schubert
21205796c8dcSSimon Schubert b->yy_n_chars = 0;
21215796c8dcSSimon Schubert
21225796c8dcSSimon Schubert /* We always need two end-of-buffer characters. The first causes
21235796c8dcSSimon Schubert * a transition to the end-of-buffer state. The second causes
21245796c8dcSSimon Schubert * a jam in that state.
21255796c8dcSSimon Schubert */
21265796c8dcSSimon Schubert b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
21275796c8dcSSimon Schubert b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
21285796c8dcSSimon Schubert
21295796c8dcSSimon Schubert b->yy_buf_pos = &b->yy_ch_buf[0];
21305796c8dcSSimon Schubert
21315796c8dcSSimon Schubert b->yy_at_bol = 1;
21325796c8dcSSimon Schubert b->yy_buffer_status = YY_BUFFER_NEW;
21335796c8dcSSimon Schubert
2134*ef5ccd6cSJohn Marino if ( b == YY_CURRENT_BUFFER )
21355796c8dcSSimon Schubert yy_load_buffer_state( );
21365796c8dcSSimon Schubert }
21375796c8dcSSimon Schubert
2138*ef5ccd6cSJohn Marino /** Pushes the new state onto the stack. The new state becomes
2139*ef5ccd6cSJohn Marino * the current state. This function will allocate the stack
2140*ef5ccd6cSJohn Marino * if necessary.
2141*ef5ccd6cSJohn Marino * @param new_buffer The new state.
2142*ef5ccd6cSJohn Marino *
2143*ef5ccd6cSJohn Marino */
yypush_buffer_state(YY_BUFFER_STATE new_buffer)2144*ef5ccd6cSJohn Marino void yypush_buffer_state (YY_BUFFER_STATE new_buffer )
2145*ef5ccd6cSJohn Marino {
2146*ef5ccd6cSJohn Marino if (new_buffer == NULL)
2147*ef5ccd6cSJohn Marino return;
21485796c8dcSSimon Schubert
2149*ef5ccd6cSJohn Marino yyensure_buffer_stack();
2150*ef5ccd6cSJohn Marino
2151*ef5ccd6cSJohn Marino /* This block is copied from yy_switch_to_buffer. */
2152*ef5ccd6cSJohn Marino if ( YY_CURRENT_BUFFER )
2153*ef5ccd6cSJohn Marino {
2154*ef5ccd6cSJohn Marino /* Flush out information for old buffer. */
2155*ef5ccd6cSJohn Marino *(yy_c_buf_p) = (yy_hold_char);
2156*ef5ccd6cSJohn Marino YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p);
2157*ef5ccd6cSJohn Marino YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
2158*ef5ccd6cSJohn Marino }
2159*ef5ccd6cSJohn Marino
2160*ef5ccd6cSJohn Marino /* Only push if top exists. Otherwise, replace top. */
2161*ef5ccd6cSJohn Marino if (YY_CURRENT_BUFFER)
2162*ef5ccd6cSJohn Marino (yy_buffer_stack_top)++;
2163*ef5ccd6cSJohn Marino YY_CURRENT_BUFFER_LVALUE = new_buffer;
2164*ef5ccd6cSJohn Marino
2165*ef5ccd6cSJohn Marino /* copied from yy_switch_to_buffer. */
2166*ef5ccd6cSJohn Marino yy_load_buffer_state( );
2167*ef5ccd6cSJohn Marino (yy_did_buffer_switch_on_eof) = 1;
2168*ef5ccd6cSJohn Marino }
2169*ef5ccd6cSJohn Marino
2170*ef5ccd6cSJohn Marino /** Removes and deletes the top of the stack, if present.
2171*ef5ccd6cSJohn Marino * The next element becomes the new top.
2172*ef5ccd6cSJohn Marino *
2173*ef5ccd6cSJohn Marino */
yypop_buffer_state(void)2174*ef5ccd6cSJohn Marino void yypop_buffer_state (void)
2175*ef5ccd6cSJohn Marino {
2176*ef5ccd6cSJohn Marino if (!YY_CURRENT_BUFFER)
2177*ef5ccd6cSJohn Marino return;
2178*ef5ccd6cSJohn Marino
2179*ef5ccd6cSJohn Marino yy_delete_buffer(YY_CURRENT_BUFFER );
2180*ef5ccd6cSJohn Marino YY_CURRENT_BUFFER_LVALUE = NULL;
2181*ef5ccd6cSJohn Marino if ((yy_buffer_stack_top) > 0)
2182*ef5ccd6cSJohn Marino --(yy_buffer_stack_top);
2183*ef5ccd6cSJohn Marino
2184*ef5ccd6cSJohn Marino if (YY_CURRENT_BUFFER) {
2185*ef5ccd6cSJohn Marino yy_load_buffer_state( );
2186*ef5ccd6cSJohn Marino (yy_did_buffer_switch_on_eof) = 1;
2187*ef5ccd6cSJohn Marino }
2188*ef5ccd6cSJohn Marino }
2189*ef5ccd6cSJohn Marino
2190*ef5ccd6cSJohn Marino /* Allocates the stack if it does not exist.
2191*ef5ccd6cSJohn Marino * Guarantees space for at least one push.
2192*ef5ccd6cSJohn Marino */
yyensure_buffer_stack(void)2193*ef5ccd6cSJohn Marino static void yyensure_buffer_stack (void)
2194*ef5ccd6cSJohn Marino {
2195*ef5ccd6cSJohn Marino int num_to_alloc;
2196*ef5ccd6cSJohn Marino
2197*ef5ccd6cSJohn Marino if (!(yy_buffer_stack)) {
2198*ef5ccd6cSJohn Marino
2199*ef5ccd6cSJohn Marino /* First allocation is just for 2 elements, since we don't know if this
2200*ef5ccd6cSJohn Marino * scanner will even need a stack. We use 2 instead of 1 to avoid an
2201*ef5ccd6cSJohn Marino * immediate xrealloc on the next call.
2202*ef5ccd6cSJohn Marino */
2203*ef5ccd6cSJohn Marino num_to_alloc = 1;
2204*ef5ccd6cSJohn Marino (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc
2205*ef5ccd6cSJohn Marino (num_to_alloc * sizeof(struct yy_buffer_state*)
2206*ef5ccd6cSJohn Marino );
2207*ef5ccd6cSJohn Marino if ( ! (yy_buffer_stack) )
2208*ef5ccd6cSJohn Marino YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
2209*ef5ccd6cSJohn Marino
2210*ef5ccd6cSJohn Marino memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*));
2211*ef5ccd6cSJohn Marino
2212*ef5ccd6cSJohn Marino (yy_buffer_stack_max) = num_to_alloc;
2213*ef5ccd6cSJohn Marino (yy_buffer_stack_top) = 0;
2214*ef5ccd6cSJohn Marino return;
2215*ef5ccd6cSJohn Marino }
2216*ef5ccd6cSJohn Marino
2217*ef5ccd6cSJohn Marino if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){
2218*ef5ccd6cSJohn Marino
2219*ef5ccd6cSJohn Marino /* Increase the buffer to prepare for a possible push. */
2220*ef5ccd6cSJohn Marino int grow_size = 8 /* arbitrary grow size */;
2221*ef5ccd6cSJohn Marino
2222*ef5ccd6cSJohn Marino num_to_alloc = (yy_buffer_stack_max) + grow_size;
2223*ef5ccd6cSJohn Marino (yy_buffer_stack) = (struct yy_buffer_state**)yyxrealloc
2224*ef5ccd6cSJohn Marino ((yy_buffer_stack),
2225*ef5ccd6cSJohn Marino num_to_alloc * sizeof(struct yy_buffer_state*)
2226*ef5ccd6cSJohn Marino );
2227*ef5ccd6cSJohn Marino if ( ! (yy_buffer_stack) )
2228*ef5ccd6cSJohn Marino YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" );
2229*ef5ccd6cSJohn Marino
2230*ef5ccd6cSJohn Marino /* zero only the new slots.*/
2231*ef5ccd6cSJohn Marino memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*));
2232*ef5ccd6cSJohn Marino (yy_buffer_stack_max) = num_to_alloc;
2233*ef5ccd6cSJohn Marino }
2234*ef5ccd6cSJohn Marino }
2235*ef5ccd6cSJohn Marino
2236*ef5ccd6cSJohn Marino /** Setup the input buffer state to scan directly from a user-specified character buffer.
2237*ef5ccd6cSJohn Marino * @param base the character buffer
2238*ef5ccd6cSJohn Marino * @param size the size in bytes of the character buffer
2239*ef5ccd6cSJohn Marino *
2240*ef5ccd6cSJohn Marino * @return the newly allocated buffer state object.
2241*ef5ccd6cSJohn Marino */
yy_scan_buffer(char * base,yy_size_t size)22425796c8dcSSimon Schubert YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size )
22435796c8dcSSimon Schubert {
22445796c8dcSSimon Schubert YY_BUFFER_STATE b;
22455796c8dcSSimon Schubert
22465796c8dcSSimon Schubert if ( size < 2 ||
22475796c8dcSSimon Schubert base[size-2] != YY_END_OF_BUFFER_CHAR ||
22485796c8dcSSimon Schubert base[size-1] != YY_END_OF_BUFFER_CHAR )
22495796c8dcSSimon Schubert /* They forgot to leave room for the EOB's. */
22505796c8dcSSimon Schubert return 0;
22515796c8dcSSimon Schubert
2252*ef5ccd6cSJohn Marino b = (YY_BUFFER_STATE) yyalloc(sizeof( struct yy_buffer_state ) );
22535796c8dcSSimon Schubert if ( ! b )
22545796c8dcSSimon Schubert YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
22555796c8dcSSimon Schubert
22565796c8dcSSimon Schubert b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */
22575796c8dcSSimon Schubert b->yy_buf_pos = b->yy_ch_buf = base;
22585796c8dcSSimon Schubert b->yy_is_our_buffer = 0;
22595796c8dcSSimon Schubert b->yy_input_file = 0;
22605796c8dcSSimon Schubert b->yy_n_chars = b->yy_buf_size;
22615796c8dcSSimon Schubert b->yy_is_interactive = 0;
22625796c8dcSSimon Schubert b->yy_at_bol = 1;
22635796c8dcSSimon Schubert b->yy_fill_buffer = 0;
22645796c8dcSSimon Schubert b->yy_buffer_status = YY_BUFFER_NEW;
22655796c8dcSSimon Schubert
22665796c8dcSSimon Schubert yy_switch_to_buffer(b );
22675796c8dcSSimon Schubert
22685796c8dcSSimon Schubert return b;
22695796c8dcSSimon Schubert }
22705796c8dcSSimon Schubert
2271*ef5ccd6cSJohn Marino /** Setup the input buffer state to scan a string. The next call to yylex() will
2272*ef5ccd6cSJohn Marino * scan from a @e copy of @a str.
2273*ef5ccd6cSJohn Marino * @param yystr a NUL-terminated string to scan
2274*ef5ccd6cSJohn Marino *
2275*ef5ccd6cSJohn Marino * @return the newly allocated buffer state object.
2276*ef5ccd6cSJohn Marino * @note If you want to scan bytes that may contain NUL values, then use
2277*ef5ccd6cSJohn Marino * yy_scan_bytes() instead.
2278*ef5ccd6cSJohn Marino */
yy_scan_string(yyconst char * yystr)2279*ef5ccd6cSJohn Marino YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
22805796c8dcSSimon Schubert {
22815796c8dcSSimon Schubert
2282*ef5ccd6cSJohn Marino return yy_scan_bytes(yystr,strlen(yystr) );
22835796c8dcSSimon Schubert }
22845796c8dcSSimon Schubert
2285*ef5ccd6cSJohn Marino /** Setup the input buffer state to scan the given bytes. The next call to yylex() will
2286*ef5ccd6cSJohn Marino * scan from a @e copy of @a bytes.
2287*ef5ccd6cSJohn Marino * @param bytes the byte buffer to scan
2288*ef5ccd6cSJohn Marino * @param len the number of bytes in the buffer pointed to by @a bytes.
2289*ef5ccd6cSJohn Marino *
2290*ef5ccd6cSJohn Marino * @return the newly allocated buffer state object.
2291*ef5ccd6cSJohn Marino */
yy_scan_bytes(yyconst char * yybytes,int _yybytes_len)2292*ef5ccd6cSJohn Marino YY_BUFFER_STATE yy_scan_bytes (yyconst char * yybytes, int _yybytes_len )
22935796c8dcSSimon Schubert {
22945796c8dcSSimon Schubert YY_BUFFER_STATE b;
22955796c8dcSSimon Schubert char *buf;
22965796c8dcSSimon Schubert yy_size_t n;
22975796c8dcSSimon Schubert int i;
22985796c8dcSSimon Schubert
22995796c8dcSSimon Schubert /* Get memory for full buffer, including space for trailing EOB's. */
2300*ef5ccd6cSJohn Marino n = _yybytes_len + 2;
2301*ef5ccd6cSJohn Marino buf = (char *) yyalloc(n );
23025796c8dcSSimon Schubert if ( ! buf )
23035796c8dcSSimon Schubert YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
23045796c8dcSSimon Schubert
2305*ef5ccd6cSJohn Marino for ( i = 0; i < _yybytes_len; ++i )
2306*ef5ccd6cSJohn Marino buf[i] = yybytes[i];
23075796c8dcSSimon Schubert
2308*ef5ccd6cSJohn Marino buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR;
23095796c8dcSSimon Schubert
23105796c8dcSSimon Schubert b = yy_scan_buffer(buf,n );
23115796c8dcSSimon Schubert if ( ! b )
23125796c8dcSSimon Schubert YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
23135796c8dcSSimon Schubert
23145796c8dcSSimon Schubert /* It's okay to grow etc. this buffer, and we should throw it
23155796c8dcSSimon Schubert * away when we're done.
23165796c8dcSSimon Schubert */
23175796c8dcSSimon Schubert b->yy_is_our_buffer = 1;
23185796c8dcSSimon Schubert
23195796c8dcSSimon Schubert return b;
23205796c8dcSSimon Schubert }
23215796c8dcSSimon Schubert
23225796c8dcSSimon Schubert #ifndef YY_EXIT_FAILURE
23235796c8dcSSimon Schubert #define YY_EXIT_FAILURE 2
23245796c8dcSSimon Schubert #endif
23255796c8dcSSimon Schubert
yy_fatal_error(yyconst char * msg)2326*ef5ccd6cSJohn Marino static void yy_fatal_error (yyconst char* msg )
23275796c8dcSSimon Schubert {
23285796c8dcSSimon Schubert (void) fprintf( stderr, "%s\n", msg );
23295796c8dcSSimon Schubert exit( YY_EXIT_FAILURE );
23305796c8dcSSimon Schubert }
23315796c8dcSSimon Schubert
23325796c8dcSSimon Schubert /* Redefine yyless() so it works in section 3 code. */
23335796c8dcSSimon Schubert
23345796c8dcSSimon Schubert #undef yyless
23355796c8dcSSimon Schubert #define yyless(n) \
23365796c8dcSSimon Schubert do \
23375796c8dcSSimon Schubert { \
23385796c8dcSSimon Schubert /* Undo effects of setting up yytext. */ \
2339*ef5ccd6cSJohn Marino int yyless_macro_arg = (n); \
2340*ef5ccd6cSJohn Marino YY_LESS_LINENO(yyless_macro_arg);\
2341*ef5ccd6cSJohn Marino yytext[yyleng] = (yy_hold_char); \
2342*ef5ccd6cSJohn Marino (yy_c_buf_p) = yytext + yyless_macro_arg; \
2343*ef5ccd6cSJohn Marino (yy_hold_char) = *(yy_c_buf_p); \
2344*ef5ccd6cSJohn Marino *(yy_c_buf_p) = '\0'; \
2345*ef5ccd6cSJohn Marino yyleng = yyless_macro_arg; \
23465796c8dcSSimon Schubert } \
23475796c8dcSSimon Schubert while ( 0 )
23485796c8dcSSimon Schubert
2349*ef5ccd6cSJohn Marino /* Accessor methods (get/set functions) to struct members. */
23505796c8dcSSimon Schubert
2351*ef5ccd6cSJohn Marino /** Get the current line number.
2352*ef5ccd6cSJohn Marino *
2353*ef5ccd6cSJohn Marino */
yyget_lineno(void)2354*ef5ccd6cSJohn Marino int yyget_lineno (void)
2355*ef5ccd6cSJohn Marino {
2356*ef5ccd6cSJohn Marino
2357*ef5ccd6cSJohn Marino return yylineno;
2358*ef5ccd6cSJohn Marino }
2359*ef5ccd6cSJohn Marino
2360*ef5ccd6cSJohn Marino /** Get the input stream.
2361*ef5ccd6cSJohn Marino *
2362*ef5ccd6cSJohn Marino */
yyget_in(void)2363*ef5ccd6cSJohn Marino FILE *yyget_in (void)
2364*ef5ccd6cSJohn Marino {
2365*ef5ccd6cSJohn Marino return yyin;
2366*ef5ccd6cSJohn Marino }
2367*ef5ccd6cSJohn Marino
2368*ef5ccd6cSJohn Marino /** Get the output stream.
2369*ef5ccd6cSJohn Marino *
2370*ef5ccd6cSJohn Marino */
yyget_out(void)2371*ef5ccd6cSJohn Marino FILE *yyget_out (void)
2372*ef5ccd6cSJohn Marino {
2373*ef5ccd6cSJohn Marino return yyout;
2374*ef5ccd6cSJohn Marino }
2375*ef5ccd6cSJohn Marino
2376*ef5ccd6cSJohn Marino /** Get the length of the current token.
2377*ef5ccd6cSJohn Marino *
2378*ef5ccd6cSJohn Marino */
yyget_leng(void)2379*ef5ccd6cSJohn Marino int yyget_leng (void)
2380*ef5ccd6cSJohn Marino {
2381*ef5ccd6cSJohn Marino return yyleng;
2382*ef5ccd6cSJohn Marino }
2383*ef5ccd6cSJohn Marino
2384*ef5ccd6cSJohn Marino /** Get the current token.
2385*ef5ccd6cSJohn Marino *
2386*ef5ccd6cSJohn Marino */
2387*ef5ccd6cSJohn Marino
yyget_text(void)2388*ef5ccd6cSJohn Marino char *yyget_text (void)
2389*ef5ccd6cSJohn Marino {
2390*ef5ccd6cSJohn Marino return yytext;
2391*ef5ccd6cSJohn Marino }
2392*ef5ccd6cSJohn Marino
2393*ef5ccd6cSJohn Marino /** Set the current line number.
2394*ef5ccd6cSJohn Marino * @param line_number
2395*ef5ccd6cSJohn Marino *
2396*ef5ccd6cSJohn Marino */
yyset_lineno(int line_number)2397*ef5ccd6cSJohn Marino void yyset_lineno (int line_number )
2398*ef5ccd6cSJohn Marino {
2399*ef5ccd6cSJohn Marino
2400*ef5ccd6cSJohn Marino yylineno = line_number;
2401*ef5ccd6cSJohn Marino }
2402*ef5ccd6cSJohn Marino
2403*ef5ccd6cSJohn Marino /** Set the input stream. This does not discard the current
2404*ef5ccd6cSJohn Marino * input buffer.
2405*ef5ccd6cSJohn Marino * @param in_str A readable stream.
2406*ef5ccd6cSJohn Marino *
2407*ef5ccd6cSJohn Marino * @see yy_switch_to_buffer
2408*ef5ccd6cSJohn Marino */
yyset_in(FILE * in_str)2409*ef5ccd6cSJohn Marino void yyset_in (FILE * in_str )
2410*ef5ccd6cSJohn Marino {
2411*ef5ccd6cSJohn Marino yyin = in_str ;
2412*ef5ccd6cSJohn Marino }
2413*ef5ccd6cSJohn Marino
yyset_out(FILE * out_str)2414*ef5ccd6cSJohn Marino void yyset_out (FILE * out_str )
2415*ef5ccd6cSJohn Marino {
2416*ef5ccd6cSJohn Marino yyout = out_str ;
2417*ef5ccd6cSJohn Marino }
2418*ef5ccd6cSJohn Marino
yyget_debug(void)2419*ef5ccd6cSJohn Marino int yyget_debug (void)
2420*ef5ccd6cSJohn Marino {
2421*ef5ccd6cSJohn Marino return yy_flex_debug;
2422*ef5ccd6cSJohn Marino }
2423*ef5ccd6cSJohn Marino
yyset_debug(int bdebug)2424*ef5ccd6cSJohn Marino void yyset_debug (int bdebug )
2425*ef5ccd6cSJohn Marino {
2426*ef5ccd6cSJohn Marino yy_flex_debug = bdebug ;
2427*ef5ccd6cSJohn Marino }
2428*ef5ccd6cSJohn Marino
yy_init_globals(void)2429*ef5ccd6cSJohn Marino static int yy_init_globals (void)
2430*ef5ccd6cSJohn Marino {
2431*ef5ccd6cSJohn Marino /* Initialization is the same as for the non-reentrant scanner.
2432*ef5ccd6cSJohn Marino * This function is called from yylex_destroy(), so don't allocate here.
2433*ef5ccd6cSJohn Marino */
2434*ef5ccd6cSJohn Marino
2435*ef5ccd6cSJohn Marino (yy_buffer_stack) = 0;
2436*ef5ccd6cSJohn Marino (yy_buffer_stack_top) = 0;
2437*ef5ccd6cSJohn Marino (yy_buffer_stack_max) = 0;
2438*ef5ccd6cSJohn Marino (yy_c_buf_p) = (char *) 0;
2439*ef5ccd6cSJohn Marino (yy_init) = 0;
2440*ef5ccd6cSJohn Marino (yy_start) = 0;
2441*ef5ccd6cSJohn Marino
2442*ef5ccd6cSJohn Marino /* Defined in main.c */
2443*ef5ccd6cSJohn Marino #ifdef YY_STDINIT
2444*ef5ccd6cSJohn Marino yyin = stdin;
2445*ef5ccd6cSJohn Marino yyout = stdout;
2446*ef5ccd6cSJohn Marino #else
2447*ef5ccd6cSJohn Marino yyin = (FILE *) 0;
2448*ef5ccd6cSJohn Marino yyout = (FILE *) 0;
2449*ef5ccd6cSJohn Marino #endif
2450*ef5ccd6cSJohn Marino
2451*ef5ccd6cSJohn Marino /* For future reference: Set errno on error, since we are called by
2452*ef5ccd6cSJohn Marino * yylex_init()
2453*ef5ccd6cSJohn Marino */
2454*ef5ccd6cSJohn Marino return 0;
2455*ef5ccd6cSJohn Marino }
2456*ef5ccd6cSJohn Marino
2457*ef5ccd6cSJohn Marino /* yylex_destroy is for both reentrant and non-reentrant scanners. */
yylex_destroy(void)2458*ef5ccd6cSJohn Marino int yylex_destroy (void)
2459*ef5ccd6cSJohn Marino {
2460*ef5ccd6cSJohn Marino
2461*ef5ccd6cSJohn Marino /* Pop the buffer stack, destroying each element. */
2462*ef5ccd6cSJohn Marino while(YY_CURRENT_BUFFER){
2463*ef5ccd6cSJohn Marino yy_delete_buffer(YY_CURRENT_BUFFER );
2464*ef5ccd6cSJohn Marino YY_CURRENT_BUFFER_LVALUE = NULL;
2465*ef5ccd6cSJohn Marino yypop_buffer_state();
2466*ef5ccd6cSJohn Marino }
2467*ef5ccd6cSJohn Marino
2468*ef5ccd6cSJohn Marino /* Destroy the stack itself. */
2469*ef5ccd6cSJohn Marino yyfree((yy_buffer_stack) );
2470*ef5ccd6cSJohn Marino (yy_buffer_stack) = NULL;
2471*ef5ccd6cSJohn Marino
2472*ef5ccd6cSJohn Marino /* Reset the globals. This is important in a non-reentrant scanner so the next time
2473*ef5ccd6cSJohn Marino * yylex() is called, initialization will occur. */
2474*ef5ccd6cSJohn Marino yy_init_globals( );
2475*ef5ccd6cSJohn Marino
2476*ef5ccd6cSJohn Marino return 0;
2477*ef5ccd6cSJohn Marino }
2478*ef5ccd6cSJohn Marino
2479*ef5ccd6cSJohn Marino /*
2480*ef5ccd6cSJohn Marino * Internal utility routines.
2481*ef5ccd6cSJohn Marino */
24825796c8dcSSimon Schubert
24835796c8dcSSimon Schubert #ifndef yytext_ptr
yy_flex_strncpy(char * s1,yyconst char * s2,int n)24845796c8dcSSimon Schubert static void yy_flex_strncpy (char* s1, yyconst char * s2, int n )
24855796c8dcSSimon Schubert {
24865796c8dcSSimon Schubert register int i;
24875796c8dcSSimon Schubert for ( i = 0; i < n; ++i )
24885796c8dcSSimon Schubert s1[i] = s2[i];
24895796c8dcSSimon Schubert }
24905796c8dcSSimon Schubert #endif
24915796c8dcSSimon Schubert
24925796c8dcSSimon Schubert #ifdef YY_NEED_STRLEN
yy_flex_strlen(yyconst char * s)24935796c8dcSSimon Schubert static int yy_flex_strlen (yyconst char * s )
24945796c8dcSSimon Schubert {
24955796c8dcSSimon Schubert register int n;
24965796c8dcSSimon Schubert for ( n = 0; s[n]; ++n )
24975796c8dcSSimon Schubert ;
24985796c8dcSSimon Schubert
24995796c8dcSSimon Schubert return n;
25005796c8dcSSimon Schubert }
25015796c8dcSSimon Schubert #endif
25025796c8dcSSimon Schubert
yyalloc(yy_size_t size)2503*ef5ccd6cSJohn Marino void *yyalloc (yy_size_t size )
25045796c8dcSSimon Schubert {
25055796c8dcSSimon Schubert return (void *) xmalloc( size );
25065796c8dcSSimon Schubert }
25075796c8dcSSimon Schubert
yyxrealloc(void * ptr,yy_size_t size)2508*ef5ccd6cSJohn Marino void *yyxrealloc (void * ptr, yy_size_t size )
25095796c8dcSSimon Schubert {
25105796c8dcSSimon Schubert /* The cast to (char *) in the following accommodates both
25115796c8dcSSimon Schubert * implementations that use char* generic pointers, and those
25125796c8dcSSimon Schubert * that use void* generic pointers. It works with the latter
25135796c8dcSSimon Schubert * because both ANSI C and C++ allow castless assignment from
25145796c8dcSSimon Schubert * any pointer type to void*, and deal with argument conversions
25155796c8dcSSimon Schubert * as though doing an assignment.
25165796c8dcSSimon Schubert */
25175796c8dcSSimon Schubert return (void *) xrealloc( (char *) ptr, size );
25185796c8dcSSimon Schubert }
25195796c8dcSSimon Schubert
yyfree(void * ptr)2520*ef5ccd6cSJohn Marino void yyfree (void * ptr )
25215796c8dcSSimon Schubert {
2522*ef5ccd6cSJohn Marino xfree( (char *) ptr ); /* see yyxrealloc() for (char *) cast */
25235796c8dcSSimon Schubert }
25245796c8dcSSimon Schubert
2525*ef5ccd6cSJohn Marino #define YYTABLES_NAME "yytables"
2526*ef5ccd6cSJohn Marino
2527*ef5ccd6cSJohn Marino #line 288 "ada-lex.l"
2528*ef5ccd6cSJohn Marino
25295796c8dcSSimon Schubert
25305796c8dcSSimon Schubert
25315796c8dcSSimon Schubert #include <ctype.h>
25325796c8dcSSimon Schubert #include "gdb_string.h"
25335796c8dcSSimon Schubert
25345796c8dcSSimon Schubert /* Initialize the lexer for processing new expression. */
25355796c8dcSSimon Schubert
2536*ef5ccd6cSJohn Marino static void
lexer_init(FILE * inp)25375796c8dcSSimon Schubert lexer_init (FILE *inp)
25385796c8dcSSimon Schubert {
25395796c8dcSSimon Schubert BEGIN INITIAL;
25405796c8dcSSimon Schubert yyrestart (inp);
25415796c8dcSSimon Schubert }
25425796c8dcSSimon Schubert
25435796c8dcSSimon Schubert
25445796c8dcSSimon Schubert /* Copy S2 to S1, removing all underscores, and downcasing all letters. */
25455796c8dcSSimon Schubert
25465796c8dcSSimon Schubert static void
canonicalizeNumeral(char * s1,const char * s2)25475796c8dcSSimon Schubert canonicalizeNumeral (char *s1, const char *s2)
25485796c8dcSSimon Schubert {
25495796c8dcSSimon Schubert for (; *s2 != '\000'; s2 += 1)
25505796c8dcSSimon Schubert {
25515796c8dcSSimon Schubert if (*s2 != '_')
25525796c8dcSSimon Schubert {
25535796c8dcSSimon Schubert *s1 = tolower(*s2);
25545796c8dcSSimon Schubert s1 += 1;
25555796c8dcSSimon Schubert }
25565796c8dcSSimon Schubert }
25575796c8dcSSimon Schubert s1[0] = '\000';
25585796c8dcSSimon Schubert }
25595796c8dcSSimon Schubert
25605796c8dcSSimon Schubert /* Interprets the prefix of NUM that consists of digits of the given BASE
25615796c8dcSSimon Schubert as an integer of that BASE, with the string EXP as an exponent.
25625796c8dcSSimon Schubert Puts value in yylval, and returns INT, if the string is valid. Causes
25635796c8dcSSimon Schubert an error if the number is improperly formated. BASE, if NULL, defaults
25645796c8dcSSimon Schubert to "10", and EXP to "1". The EXP does not contain a leading 'e' or 'E'.
25655796c8dcSSimon Schubert */
25665796c8dcSSimon Schubert
25675796c8dcSSimon Schubert static int
processInt(const char * base0,const char * num0,const char * exp0)25685796c8dcSSimon Schubert processInt (const char *base0, const char *num0, const char *exp0)
25695796c8dcSSimon Schubert {
25705796c8dcSSimon Schubert ULONGEST result;
25715796c8dcSSimon Schubert long exp;
25725796c8dcSSimon Schubert int base;
25735796c8dcSSimon Schubert
25745796c8dcSSimon Schubert char *trailer;
25755796c8dcSSimon Schubert
25765796c8dcSSimon Schubert if (base0 == NULL)
25775796c8dcSSimon Schubert base = 10;
25785796c8dcSSimon Schubert else
25795796c8dcSSimon Schubert {
25805796c8dcSSimon Schubert base = strtol (base0, (char **) NULL, 10);
25815796c8dcSSimon Schubert if (base < 2 || base > 16)
25825796c8dcSSimon Schubert error (_("Invalid base: %d."), base);
25835796c8dcSSimon Schubert }
25845796c8dcSSimon Schubert
25855796c8dcSSimon Schubert if (exp0 == NULL)
25865796c8dcSSimon Schubert exp = 0;
25875796c8dcSSimon Schubert else
25885796c8dcSSimon Schubert exp = strtol(exp0, (char **) NULL, 10);
25895796c8dcSSimon Schubert
25905796c8dcSSimon Schubert errno = 0;
25915796c8dcSSimon Schubert result = strtoulst (num0, (const char **) &trailer, base);
25925796c8dcSSimon Schubert if (errno == ERANGE)
25935796c8dcSSimon Schubert error (_("Integer literal out of range"));
25945796c8dcSSimon Schubert if (isxdigit(*trailer))
25955796c8dcSSimon Schubert error (_("Invalid digit `%c' in based literal"), *trailer);
25965796c8dcSSimon Schubert
25975796c8dcSSimon Schubert while (exp > 0)
25985796c8dcSSimon Schubert {
25995796c8dcSSimon Schubert if (result > (ULONG_MAX / base))
26005796c8dcSSimon Schubert error (_("Integer literal out of range"));
26015796c8dcSSimon Schubert result *= base;
26025796c8dcSSimon Schubert exp -= 1;
26035796c8dcSSimon Schubert }
26045796c8dcSSimon Schubert
26055796c8dcSSimon Schubert if ((result >> (gdbarch_int_bit (parse_gdbarch)-1)) == 0)
26065796c8dcSSimon Schubert yylval.typed_val.type = type_int ();
26075796c8dcSSimon Schubert else if ((result >> (gdbarch_long_bit (parse_gdbarch)-1)) == 0)
26085796c8dcSSimon Schubert yylval.typed_val.type = type_long ();
26095796c8dcSSimon Schubert else if (((result >> (gdbarch_long_bit (parse_gdbarch)-1)) >> 1) == 0)
26105796c8dcSSimon Schubert {
26115796c8dcSSimon Schubert /* We have a number representable as an unsigned integer quantity.
26125796c8dcSSimon Schubert For consistency with the C treatment, we will treat it as an
26135796c8dcSSimon Schubert anonymous modular (unsigned) quantity. Alas, the types are such
26145796c8dcSSimon Schubert that we need to store .val as a signed quantity. Sorry
26155796c8dcSSimon Schubert for the mess, but C doesn't officially guarantee that a simple
26165796c8dcSSimon Schubert assignment does the trick (no, it doesn't; read the reference manual).
26175796c8dcSSimon Schubert */
26185796c8dcSSimon Schubert yylval.typed_val.type
26195796c8dcSSimon Schubert = builtin_type (parse_gdbarch)->builtin_unsigned_long;
26205796c8dcSSimon Schubert if (result & LONGEST_SIGN)
26215796c8dcSSimon Schubert yylval.typed_val.val =
26225796c8dcSSimon Schubert (LONGEST) (result & ~LONGEST_SIGN)
26235796c8dcSSimon Schubert - (LONGEST_SIGN>>1) - (LONGEST_SIGN>>1);
26245796c8dcSSimon Schubert else
26255796c8dcSSimon Schubert yylval.typed_val.val = (LONGEST) result;
26265796c8dcSSimon Schubert return INT;
26275796c8dcSSimon Schubert }
26285796c8dcSSimon Schubert else
26295796c8dcSSimon Schubert yylval.typed_val.type = type_long_long ();
26305796c8dcSSimon Schubert
26315796c8dcSSimon Schubert yylval.typed_val.val = (LONGEST) result;
26325796c8dcSSimon Schubert return INT;
26335796c8dcSSimon Schubert }
26345796c8dcSSimon Schubert
26355796c8dcSSimon Schubert static int
processReal(const char * num0)26365796c8dcSSimon Schubert processReal (const char *num0)
26375796c8dcSSimon Schubert {
26385796c8dcSSimon Schubert sscanf (num0, "%" DOUBLEST_SCAN_FORMAT, &yylval.typed_val_float.dval);
26395796c8dcSSimon Schubert
26405796c8dcSSimon Schubert yylval.typed_val_float.type = type_float ();
26415796c8dcSSimon Schubert if (sizeof(DOUBLEST) >= gdbarch_double_bit (parse_gdbarch)
26425796c8dcSSimon Schubert / TARGET_CHAR_BIT)
26435796c8dcSSimon Schubert yylval.typed_val_float.type = type_double ();
26445796c8dcSSimon Schubert if (sizeof(DOUBLEST) >= gdbarch_long_double_bit (parse_gdbarch)
26455796c8dcSSimon Schubert / TARGET_CHAR_BIT)
26465796c8dcSSimon Schubert yylval.typed_val_float.type = type_long_double ();
26475796c8dcSSimon Schubert
26485796c8dcSSimon Schubert return FLOAT;
26495796c8dcSSimon Schubert }
26505796c8dcSSimon Schubert
26515796c8dcSSimon Schubert
26525796c8dcSSimon Schubert /* Store a canonicalized version of NAME0[0..LEN-1] in yylval.ssym. The
2653*ef5ccd6cSJohn Marino resulting string is valid until the next call to ada_parse. If
2654*ef5ccd6cSJohn Marino NAME0 contains the substring "___", it is assumed to be already
2655*ef5ccd6cSJohn Marino encoded and the resulting name is equal to it. Otherwise, it differs
26565796c8dcSSimon Schubert from NAME0 in that:
26575796c8dcSSimon Schubert + Characters between '...' or <...> are transfered verbatim to
26585796c8dcSSimon Schubert yylval.ssym.
26595796c8dcSSimon Schubert + <, >, and trailing "'" characters in quoted sequences are removed
26605796c8dcSSimon Schubert (a leading quote is preserved to indicate that the name is not to be
26615796c8dcSSimon Schubert GNAT-encoded).
26625796c8dcSSimon Schubert + Unquoted whitespace is removed.
26635796c8dcSSimon Schubert + Unquoted alphabetic characters are mapped to lower case.
26645796c8dcSSimon Schubert Result is returned as a struct stoken, but for convenience, the string
26655796c8dcSSimon Schubert is also null-terminated. Result string valid until the next call of
26665796c8dcSSimon Schubert ada_parse.
26675796c8dcSSimon Schubert */
26685796c8dcSSimon Schubert static struct stoken
processId(const char * name0,int len)26695796c8dcSSimon Schubert processId (const char *name0, int len)
26705796c8dcSSimon Schubert {
26715796c8dcSSimon Schubert char *name = obstack_alloc (&temp_parse_space, len + 11);
26725796c8dcSSimon Schubert int i0, i;
26735796c8dcSSimon Schubert struct stoken result;
26745796c8dcSSimon Schubert
2675*ef5ccd6cSJohn Marino result.ptr = name;
26765796c8dcSSimon Schubert while (len > 0 && isspace (name0[len-1]))
26775796c8dcSSimon Schubert len -= 1;
2678*ef5ccd6cSJohn Marino
2679*ef5ccd6cSJohn Marino if (strstr (name0, "___") != NULL)
2680*ef5ccd6cSJohn Marino {
2681*ef5ccd6cSJohn Marino strncpy (name, name0, len);
2682*ef5ccd6cSJohn Marino name[len] = '\000';
2683*ef5ccd6cSJohn Marino result.length = len;
2684*ef5ccd6cSJohn Marino return result;
2685*ef5ccd6cSJohn Marino }
2686*ef5ccd6cSJohn Marino
26875796c8dcSSimon Schubert i = i0 = 0;
26885796c8dcSSimon Schubert while (i0 < len)
26895796c8dcSSimon Schubert {
26905796c8dcSSimon Schubert if (isalnum (name0[i0]))
26915796c8dcSSimon Schubert {
26925796c8dcSSimon Schubert name[i] = tolower (name0[i0]);
26935796c8dcSSimon Schubert i += 1; i0 += 1;
26945796c8dcSSimon Schubert }
26955796c8dcSSimon Schubert else switch (name0[i0])
26965796c8dcSSimon Schubert {
26975796c8dcSSimon Schubert default:
26985796c8dcSSimon Schubert name[i] = name0[i0];
26995796c8dcSSimon Schubert i += 1; i0 += 1;
27005796c8dcSSimon Schubert break;
27015796c8dcSSimon Schubert case ' ': case '\t':
27025796c8dcSSimon Schubert i0 += 1;
27035796c8dcSSimon Schubert break;
27045796c8dcSSimon Schubert case '\'':
27055796c8dcSSimon Schubert do
27065796c8dcSSimon Schubert {
27075796c8dcSSimon Schubert name[i] = name0[i0];
27085796c8dcSSimon Schubert i += 1; i0 += 1;
27095796c8dcSSimon Schubert }
27105796c8dcSSimon Schubert while (i0 < len && name0[i0] != '\'');
27115796c8dcSSimon Schubert i0 += 1;
27125796c8dcSSimon Schubert break;
27135796c8dcSSimon Schubert case '<':
27145796c8dcSSimon Schubert i0 += 1;
27155796c8dcSSimon Schubert while (i0 < len && name0[i0] != '>')
27165796c8dcSSimon Schubert {
27175796c8dcSSimon Schubert name[i] = name0[i0];
27185796c8dcSSimon Schubert i += 1; i0 += 1;
27195796c8dcSSimon Schubert }
27205796c8dcSSimon Schubert i0 += 1;
27215796c8dcSSimon Schubert break;
27225796c8dcSSimon Schubert }
27235796c8dcSSimon Schubert }
27245796c8dcSSimon Schubert name[i] = '\000';
27255796c8dcSSimon Schubert
27265796c8dcSSimon Schubert result.length = i;
27275796c8dcSSimon Schubert return result;
27285796c8dcSSimon Schubert }
27295796c8dcSSimon Schubert
27305796c8dcSSimon Schubert /* Return TEXT[0..LEN-1], a string literal without surrounding quotes,
27315796c8dcSSimon Schubert with special hex character notations replaced with characters.
27325796c8dcSSimon Schubert Result valid until the next call to ada_parse. */
27335796c8dcSSimon Schubert
27345796c8dcSSimon Schubert static struct stoken
processString(const char * text,int len)27355796c8dcSSimon Schubert processString (const char *text, int len)
27365796c8dcSSimon Schubert {
27375796c8dcSSimon Schubert const char *p;
27385796c8dcSSimon Schubert char *q;
27395796c8dcSSimon Schubert const char *lim = text + len;
27405796c8dcSSimon Schubert struct stoken result;
27415796c8dcSSimon Schubert
27425796c8dcSSimon Schubert q = result.ptr = obstack_alloc (&temp_parse_space, len);
27435796c8dcSSimon Schubert p = text;
27445796c8dcSSimon Schubert while (p < lim)
27455796c8dcSSimon Schubert {
27465796c8dcSSimon Schubert if (p[0] == '[' && p[1] == '"' && p+2 < lim)
27475796c8dcSSimon Schubert {
27485796c8dcSSimon Schubert if (p[2] == '"') /* "...["""]... */
27495796c8dcSSimon Schubert {
27505796c8dcSSimon Schubert *q = '"';
27515796c8dcSSimon Schubert p += 4;
27525796c8dcSSimon Schubert }
27535796c8dcSSimon Schubert else
27545796c8dcSSimon Schubert {
27555796c8dcSSimon Schubert int chr;
27565796c8dcSSimon Schubert sscanf (p+2, "%2x", &chr);
27575796c8dcSSimon Schubert *q = (char) chr;
27585796c8dcSSimon Schubert p += 5;
27595796c8dcSSimon Schubert }
27605796c8dcSSimon Schubert }
27615796c8dcSSimon Schubert else
27625796c8dcSSimon Schubert *q = *p;
27635796c8dcSSimon Schubert q += 1;
27645796c8dcSSimon Schubert p += 1;
27655796c8dcSSimon Schubert }
27665796c8dcSSimon Schubert result.length = q - result.ptr;
27675796c8dcSSimon Schubert return result;
27685796c8dcSSimon Schubert }
27695796c8dcSSimon Schubert
27705796c8dcSSimon Schubert /* Returns the position within STR of the '.' in a
27715796c8dcSSimon Schubert '.{WHITE}*all' component of a dotted name, or -1 if there is none.
27725796c8dcSSimon Schubert Note: we actually don't need this routine, since 'all' can never be an
27735796c8dcSSimon Schubert Ada identifier. Thus, looking up foo.all or foo.all.x as a name
27745796c8dcSSimon Schubert must fail, and will eventually be interpreted as (foo).all or
27755796c8dcSSimon Schubert (foo).all.x. However, this does avoid an extraneous lookup. */
27765796c8dcSSimon Schubert
27775796c8dcSSimon Schubert static int
find_dot_all(const char * str)27785796c8dcSSimon Schubert find_dot_all (const char *str)
27795796c8dcSSimon Schubert {
27805796c8dcSSimon Schubert int i;
27815796c8dcSSimon Schubert for (i = 0; str[i] != '\000'; i += 1)
27825796c8dcSSimon Schubert {
27835796c8dcSSimon Schubert if (str[i] == '.')
27845796c8dcSSimon Schubert {
27855796c8dcSSimon Schubert int i0 = i;
27865796c8dcSSimon Schubert do
27875796c8dcSSimon Schubert i += 1;
27885796c8dcSSimon Schubert while (isspace (str[i]));
27895796c8dcSSimon Schubert if (strncmp (str+i, "all", 3) == 0
27905796c8dcSSimon Schubert && ! isalnum (str[i+3]) && str[i+3] != '_')
27915796c8dcSSimon Schubert return i0;
27925796c8dcSSimon Schubert }
27935796c8dcSSimon Schubert }
27945796c8dcSSimon Schubert return -1;
27955796c8dcSSimon Schubert }
27965796c8dcSSimon Schubert
27975796c8dcSSimon Schubert /* Returns non-zero iff string SUBSEQ matches a subsequence of STR, ignoring
27985796c8dcSSimon Schubert case. */
27995796c8dcSSimon Schubert
28005796c8dcSSimon Schubert static int
subseqMatch(const char * subseq,const char * str)28015796c8dcSSimon Schubert subseqMatch (const char *subseq, const char *str)
28025796c8dcSSimon Schubert {
28035796c8dcSSimon Schubert if (subseq[0] == '\0')
28045796c8dcSSimon Schubert return 1;
28055796c8dcSSimon Schubert else if (str[0] == '\0')
28065796c8dcSSimon Schubert return 0;
28075796c8dcSSimon Schubert else if (tolower (subseq[0]) == tolower (str[0]))
28085796c8dcSSimon Schubert return subseqMatch (subseq+1, str+1) || subseqMatch (subseq, str+1);
28095796c8dcSSimon Schubert else
28105796c8dcSSimon Schubert return subseqMatch (subseq, str+1);
28115796c8dcSSimon Schubert }
28125796c8dcSSimon Schubert
28135796c8dcSSimon Schubert
28145796c8dcSSimon Schubert static struct { const char *name; int code; }
28155796c8dcSSimon Schubert attributes[] = {
28165796c8dcSSimon Schubert { "address", TICK_ADDRESS },
28175796c8dcSSimon Schubert { "unchecked_access", TICK_ACCESS },
28185796c8dcSSimon Schubert { "unrestricted_access", TICK_ACCESS },
28195796c8dcSSimon Schubert { "access", TICK_ACCESS },
28205796c8dcSSimon Schubert { "first", TICK_FIRST },
28215796c8dcSSimon Schubert { "last", TICK_LAST },
28225796c8dcSSimon Schubert { "length", TICK_LENGTH },
28235796c8dcSSimon Schubert { "max", TICK_MAX },
28245796c8dcSSimon Schubert { "min", TICK_MIN },
28255796c8dcSSimon Schubert { "modulus", TICK_MODULUS },
28265796c8dcSSimon Schubert { "pos", TICK_POS },
28275796c8dcSSimon Schubert { "range", TICK_RANGE },
28285796c8dcSSimon Schubert { "size", TICK_SIZE },
28295796c8dcSSimon Schubert { "tag", TICK_TAG },
28305796c8dcSSimon Schubert { "val", TICK_VAL },
28315796c8dcSSimon Schubert { NULL, -1 }
28325796c8dcSSimon Schubert };
28335796c8dcSSimon Schubert
28345796c8dcSSimon Schubert /* Return the syntactic code corresponding to the attribute name or
28355796c8dcSSimon Schubert abbreviation STR. */
28365796c8dcSSimon Schubert
28375796c8dcSSimon Schubert static int
processAttribute(const char * str)28385796c8dcSSimon Schubert processAttribute (const char *str)
28395796c8dcSSimon Schubert {
28405796c8dcSSimon Schubert int i, k;
28415796c8dcSSimon Schubert
28425796c8dcSSimon Schubert for (i = 0; attributes[i].code != -1; i += 1)
28435796c8dcSSimon Schubert if (strcasecmp (str, attributes[i].name) == 0)
28445796c8dcSSimon Schubert return attributes[i].code;
28455796c8dcSSimon Schubert
28465796c8dcSSimon Schubert for (i = 0, k = -1; attributes[i].code != -1; i += 1)
28475796c8dcSSimon Schubert if (subseqMatch (str, attributes[i].name))
28485796c8dcSSimon Schubert {
28495796c8dcSSimon Schubert if (k == -1)
28505796c8dcSSimon Schubert k = i;
28515796c8dcSSimon Schubert else
28525796c8dcSSimon Schubert error (_("ambiguous attribute name: `%s'"), str);
28535796c8dcSSimon Schubert }
28545796c8dcSSimon Schubert if (k == -1)
28555796c8dcSSimon Schubert error (_("unrecognized attribute: `%s'"), str);
28565796c8dcSSimon Schubert
28575796c8dcSSimon Schubert return attributes[k].code;
28585796c8dcSSimon Schubert }
28595796c8dcSSimon Schubert
2860*ef5ccd6cSJohn Marino /* Back up lexptr by yyleng and then to the rightmost occurrence of
2861*ef5ccd6cSJohn Marino character CH, case-folded (there must be one). WARNING: since
2862*ef5ccd6cSJohn Marino lexptr points to the next input character that Flex has not yet
2863*ef5ccd6cSJohn Marino transferred to its internal buffer, the use of this function
2864*ef5ccd6cSJohn Marino depends on the assumption that Flex calls YY_INPUT only when it is
2865*ef5ccd6cSJohn Marino logically necessary to do so (thus, there is no reading ahead
2866*ef5ccd6cSJohn Marino farther than needed to identify the next token.) */
2867*ef5ccd6cSJohn Marino
2868*ef5ccd6cSJohn Marino static void
rewind_to_char(int ch)2869*ef5ccd6cSJohn Marino rewind_to_char (int ch)
2870*ef5ccd6cSJohn Marino {
2871*ef5ccd6cSJohn Marino lexptr -= yyleng;
2872*ef5ccd6cSJohn Marino while (toupper (*lexptr) != toupper (ch))
2873*ef5ccd6cSJohn Marino lexptr -= 1;
2874*ef5ccd6cSJohn Marino yyrestart (NULL);
2875*ef5ccd6cSJohn Marino }
2876*ef5ccd6cSJohn Marino
28775796c8dcSSimon Schubert int
yywrap(void)28785796c8dcSSimon Schubert yywrap(void)
28795796c8dcSSimon Schubert {
28805796c8dcSSimon Schubert return 1;
28815796c8dcSSimon Schubert }
28825796c8dcSSimon Schubert
28835796c8dcSSimon Schubert /* Dummy definition to suppress warnings about unused static definitions. */
28845796c8dcSSimon Schubert typedef void (*dummy_function) ();
28855796c8dcSSimon Schubert dummy_function ada_flex_use[] =
28865796c8dcSSimon Schubert {
28875796c8dcSSimon Schubert (dummy_function) yyunput
28885796c8dcSSimon Schubert };
2889*ef5ccd6cSJohn Marino
2890