OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [trunk/] [gnu-src/] [gdb-6.8/] [gdb/] [ada-lex.c] - Blame information for rev 631

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 24 jeremybenn
#line 2 "ada-lex.c"
2
/* A lexical scanner generated by flex */
3
 
4
/* Scanner skeleton version:
5
 * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $
6
 */
7
 
8
#define FLEX_SCANNER
9
#define YY_FLEX_MAJOR_VERSION 2
10
#define YY_FLEX_MINOR_VERSION 5
11
 
12
#include <stdio.h>
13
#include <unistd.h>
14
 
15
 
16
/* cfront 1.2 defines "c_plusplus" instead of "__cplusplus" */
17
#ifdef c_plusplus
18
#ifndef __cplusplus
19
#define __cplusplus
20
#endif
21
#endif
22
 
23
 
24
#ifdef __cplusplus
25
 
26
#include <stdlib.h>
27
 
28
/* Use prototypes in function declarations. */
29
#define YY_USE_PROTOS
30
 
31
/* The "const" storage-class-modifier is valid. */
32
#define YY_USE_CONST
33
 
34
#else   /* ! __cplusplus */
35
 
36
#if __STDC__
37
 
38
#define YY_USE_PROTOS
39
#define YY_USE_CONST
40
 
41
#endif  /* __STDC__ */
42
#endif  /* ! __cplusplus */
43
 
44
#ifdef __TURBOC__
45
 #pragma warn -rch
46
 #pragma warn -use
47
#include <io.h>
48
#include <stdlib.h>
49
#define YY_USE_CONST
50
#define YY_USE_PROTOS
51
#endif
52
 
53
#ifdef YY_USE_CONST
54
#define yyconst const
55
#else
56
#define yyconst
57
#endif
58
 
59
 
60
#ifdef YY_USE_PROTOS
61
#define YY_PROTO(proto) proto
62
#else
63
#define YY_PROTO(proto) ()
64
#endif
65
 
66
/* Returned upon end-of-file. */
67
#define YY_NULL 0
68
 
69
/* Promotes a possibly negative, possibly signed char to an unsigned
70
 * integer for use as an array index.  If the signed char is negative,
71
 * we want to instead treat it as an 8-bit unsigned char, hence the
72
 * double cast.
73
 */
74
#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c)
75
 
76
/* Enter a start condition.  This macro really ought to take a parameter,
77
 * but we do it the disgusting crufty way forced on us by the ()-less
78
 * definition of BEGIN.
79
 */
80
#define BEGIN yy_start = 1 + 2 *
81
 
82
/* Translate the current start state into a value that can be later handed
83
 * to BEGIN to return to the state.  The YYSTATE alias is for lex
84
 * compatibility.
85
 */
86
#define YY_START ((yy_start - 1) / 2)
87
#define YYSTATE YY_START
88
 
89
/* Action number for EOF rule of a given start state. */
90
#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
91
 
92
/* Special action meaning "start processing a new file". */
93
#define YY_NEW_FILE yyrestart( yyin )
94
 
95
#define YY_END_OF_BUFFER_CHAR 0
96
 
97
/* Size of default input buffer. */
98
#define YY_BUF_SIZE 16384
99
 
100
typedef struct yy_buffer_state *YY_BUFFER_STATE;
101
 
102
extern int yyleng;
103
extern FILE *yyin, *yyout;
104
 
105
#define EOB_ACT_CONTINUE_SCAN 0
106
#define EOB_ACT_END_OF_FILE 1
107
#define EOB_ACT_LAST_MATCH 2
108
 
109
/* The funky do-while in the following #define is used to turn the definition
110
 * int a single C statement (which needs a semi-colon terminator).  This
111
 * avoids problems with code like:
112
 *
113
 *      if ( condition_holds )
114
 *              yyless( 5 );
115
 *      else
116
 *              do_something_else();
117
 *
118
 * Prior to using the do-while the compiler would get upset at the
119
 * "else" because it interpreted the "if" statement as being all
120
 * done when it reached the ';' after the yyless() call.
121
 */
122
 
123
/* Return all but the first 'n' matched characters back to the input stream. */
124
 
125
#define yyless(n) \
126
        do \
127
                { \
128
                /* Undo effects of setting up yytext. */ \
129
                *yy_cp = yy_hold_char; \
130
                YY_RESTORE_YY_MORE_OFFSET \
131
                yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
132
                YY_DO_BEFORE_ACTION; /* set up yytext again */ \
133
                } \
134
        while ( 0 )
135
 
136
#define unput(c) yyunput( c, yytext_ptr )
137
 
138
/* The following is because we cannot portably get our hands on size_t
139
 * (without autoconf's help, which isn't available because we want
140
 * flex-generated scanners to compile on their own).
141
 */
142
typedef unsigned int yy_size_t;
143
 
144
 
145
struct yy_buffer_state
146
        {
147
        FILE *yy_input_file;
148
 
149
        char *yy_ch_buf;                /* input buffer */
150
        char *yy_buf_pos;               /* current position in input buffer */
151
 
152
        /* Size of input buffer in bytes, not including room for EOB
153
         * characters.
154
         */
155
        yy_size_t yy_buf_size;
156
 
157
        /* Number of characters read into yy_ch_buf, not including EOB
158
         * characters.
159
         */
160
        int yy_n_chars;
161
 
162
        /* Whether we "own" the buffer - i.e., we know we created it,
163
         * and can xrealloc() it to grow it, and should free() it to
164
         * delete it.
165
         */
166
        int yy_is_our_buffer;
167
 
168
        /* Whether this is an "interactive" input source; if so, and
169
         * if we're using stdio for input, then we want to use getc()
170
         * instead of fread(), to make sure we stop fetching input after
171
         * each newline.
172
         */
173
        int yy_is_interactive;
174
 
175
        /* Whether we're considered to be at the beginning of a line.
176
         * If so, '^' rules will be active on the next match, otherwise
177
         * not.
178
         */
179
        int yy_at_bol;
180
 
181
        /* Whether to try to fill the input buffer when we reach the
182
         * end of it.
183
         */
184
        int yy_fill_buffer;
185
 
186
        int yy_buffer_status;
187
#define YY_BUFFER_NEW 0
188
#define YY_BUFFER_NORMAL 1
189
        /* When an EOF's been seen but there's still some text to process
190
         * then we mark the buffer as YY_EOF_PENDING, to indicate that we
191
         * shouldn't try reading from the input source any more.  We might
192
         * still have a bunch of tokens to match, though, because of
193
         * possible backing-up.
194
         *
195
         * When we actually see the EOF, we change the status to "new"
196
         * (via yyrestart()), so that the user can continue scanning by
197
         * just pointing yyin at a new input file.
198
         */
199
#define YY_BUFFER_EOF_PENDING 2
200
        };
201
 
202
static YY_BUFFER_STATE yy_current_buffer = 0;
203
 
204
/* We provide macros for accessing buffer states in case in the
205
 * future we want to put the buffer states in a more general
206
 * "scanner state".
207
 */
208
#define YY_CURRENT_BUFFER yy_current_buffer
209
 
210
 
211
/* yy_hold_char holds the character lost when yytext is formed. */
212
static char yy_hold_char;
213
 
214
static int yy_n_chars;          /* number of characters read into yy_ch_buf */
215
 
216
 
217
int yyleng;
218
 
219
/* Points to current character in buffer. */
220
static char *yy_c_buf_p = (char *) 0;
221
static int yy_init = 1;         /* whether we need to initialize */
222
static int yy_start = 0; /* start state number */
223
 
224
/* Flag which is used to allow yywrap()'s to do buffer switches
225
 * instead of setting up a fresh yyin.  A bit of a hack ...
226
 */
227
static int yy_did_buffer_switch_on_eof;
228
 
229
void yyrestart YY_PROTO(( FILE *input_file ));
230
 
231
void yy_switch_to_buffer YY_PROTO(( YY_BUFFER_STATE new_buffer ));
232
void yy_load_buffer_state YY_PROTO(( void ));
233
YY_BUFFER_STATE yy_create_buffer YY_PROTO(( FILE *file, int size ));
234
void yy_delete_buffer YY_PROTO(( YY_BUFFER_STATE b ));
235
void yy_init_buffer YY_PROTO(( YY_BUFFER_STATE b, FILE *file ));
236
void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b ));
237
#define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
238
 
239
YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
240
YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
241
YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
242
 
243
static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
244
static void *yyxrealloc YY_PROTO(( void *, yy_size_t ));
245
static void yy_flex_free YY_PROTO(( void * ));
246
 
247
#define yy_new_buffer yy_create_buffer
248
 
249
#define yy_set_interactive(is_interactive) \
250
        { \
251
        if ( ! yy_current_buffer ) \
252
                yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
253
        yy_current_buffer->yy_is_interactive = is_interactive; \
254
        }
255
 
256
#define yy_set_bol(at_bol) \
257
        { \
258
        if ( ! yy_current_buffer ) \
259
                yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE ); \
260
        yy_current_buffer->yy_at_bol = at_bol; \
261
        }
262
 
263
#define YY_AT_BOL() (yy_current_buffer->yy_at_bol)
264
 
265
typedef unsigned char YY_CHAR;
266
FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
267
typedef int yy_state_type;
268
extern char *yytext;
269
#define yytext_ptr yytext
270
 
271
static yy_state_type yy_get_previous_state YY_PROTO(( void ));
272
static yy_state_type yy_try_NUL_trans YY_PROTO(( yy_state_type current_state ));
273
static int yy_get_next_buffer YY_PROTO(( void ));
274
static void yy_fatal_error YY_PROTO(( yyconst char msg[] ));
275
 
276
/* Done after the current pattern has been matched and before the
277
 * corresponding action - sets up yytext.
278
 */
279
#define YY_DO_BEFORE_ACTION \
280
        yytext_ptr = yy_bp; \
281
        yyleng = (int) (yy_cp - yy_bp); \
282
        yy_hold_char = *yy_cp; \
283
        *yy_cp = '\0'; \
284
        yy_c_buf_p = yy_cp;
285
 
286
#define YY_NUM_RULES 51
287
#define YY_END_OF_BUFFER 52
288
static yyconst short int yy_accept[182] =
289
    {   0,
290
        0,    0,    0,    0,   52,   50,    1,    1,   15,   49,
291
       39,   50,   41,   42,   39,   40,   39,   39,   39,    4,
292
        4,   39,   39,   39,   39,   48,   45,   45,   45,   45,
293
       45,   45,   45,   45,   45,   45,   38,    0,   14,    0,
294
       49,    0,    0,    0,    0,    0,    0,    0,   33,    2,
295
        0,   32,    0,   44,   44,   35,    0,    0,    4,    0,
296
        0,   47,   34,   36,    0,   31,   37,    0,    0,   45,
297
        0,   45,   45,   45,   45,   16,   20,   45,   45,   45,
298
       45,   25,   45,   45,   45,   45,    0,   14,    0,   12,
299
       12,    0,   30,    2,    0,   44,   44,    0,    9,    0,
300
 
301
        3,    7,    0,   45,    0,    0,    0,   45,   17,   18,
302
       45,   21,   22,   23,   45,   45,   27,   45,   29,    0,
303
        0,    0,    0,    0,    0,   44,   43,    6,    0,    0,
304
        9,    0,    3,    0,    0,    0,    0,    0,    0,    0,
305
        0,    0,    0,    0,    0,   45,   19,   24,   45,   28,
306
        0,   46,    0,    0,    0,    0,   45,    0,    0,    0,
307
        0,    0,    0,    0,   45,    0,    0,    5,   11,    0,
308
        8,   26,    0,    5,    0,    8,   13,    0,   10,   10,
309
 
310
    } ;
311
 
312
static yyconst int yy_ec[256] =
313
    {   0,
314
        1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
315
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
316
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
317
        1,    4,    5,    6,    7,    8,    5,    9,   10,   11,
318
       12,   13,   14,   15,   16,   17,   18,   19,   20,   20,
319
       20,   20,   20,   20,   20,   20,   20,   21,   22,   23,
320
       24,   25,    5,   26,   30,   31,   32,   33,   34,   35,
321
       36,   37,   38,   36,   36,   39,   40,   41,   42,   36,
322
       36,   43,   44,   45,   46,   36,   47,   48,   36,   36,
323
       27,    5,   28,    5,   29,    5,   30,   31,   32,   33,
324
 
325
       34,   35,   36,   37,   38,   36,   36,   39,   40,   41,
326
       42,   36,   36,   43,   44,   45,   46,   36,   47,   48,
327
       36,   36,   26,   22,   26,    5,    1,    1,    1,    1,
328
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
329
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
330
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
331
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
332
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
333
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
334
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
335
 
336
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
337
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
338
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
339
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
340
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
341
        1,    1,    1,    1,    1
342
    } ;
343
 
344
static yyconst int yy_meta[49] =
345
    {   0,
346
        1,    2,    3,    4,    5,    6,    7,    8,    5,    9,
347
        5,    5,    5,    5,    5,    5,   10,    5,   11,   11,
348
        5,    5,   12,   13,   14,    5,    5,    5,   15,   16,
349
       16,   16,   16,   16,   16,   17,   17,   17,   17,   17,
350
       17,   17,   17,   17,   17,   17,   17,   17
351
    } ;
352
 
353
static yyconst short int yy_base[203] =
354
    {   0,
355
        0,    0,  575,  568,  573,  712,  712,  712,   43,    0,
356
      712,   70,  712,  712,  559,  712,  554,  117,  544,  116,
357
      122,   29,  543,  541,  541,  712,   52,  150,   20,   91,
358
       26,  124,  118,   96,  107,  131,  191,  119,  712,  151,
359
        0,  238,  554,  546,  545,  543,   54,  277,  712,    0,
360
      324,  712,    0,    0,  495,  712,    0,   46,  323,  155,
361
        0,  712,  712,  712,  508,  712,  712,  184,  241,  712,
362
      330,  148,  215,  149,  216,  221,  222,  257,  258,  261,
363
      262,  223,  224,  298,  263,  315,  522,  525,  346,  357,
364
      712,  360,  511,    0,  485,    0,  469,  328,  343,  157,
365
 
366
      345,    0,  479,  366,  382,  397,    0,  397,  340,  356,
367
      378,  367,  385,  387,  392,  401,  393,  405,  410,  490,
368
        0,  445,  450,  448,  431,  712,    0,  418,    0,  436,
369
      435,  169,  441,  444,  118,  243,  331,  438,  432,  383,
370
      375,  361,  362,  347,  357,  455,  443,  444,  445,  446,
371
      338,  712,  345,  475,  337,  276,  488,  287,  267,  258,
372
      221,  210,  141,  146,  462,  140,  383,  480,  109,  121,
373
      482,  466,   42,  493,  359,  495,  514,  410,  500,  507,
374
      712,  533,  543,  559,  564,  580,  597,  600,  607,   47,
375
      512,  614,  630,  642,  648,  659,  661,  677,  514,  541,
376
 
377
      684,  695
378
    } ;
379
 
380
static yyconst short int yy_def[203] =
381
    {   0,
382
      181,    1,    1,    1,  181,  181,  181,  181,  182,  183,
383
      181,  181,  181,  181,  181,  181,  181,  184,  181,  181,
384
      181,  181,  185,  181,  181,  181,  186,  186,   28,   28,
385
       28,   28,   28,   28,   28,   28,  181,  182,  181,  182,
386
      183,   37,   37,   37,   42,  181,   42,   42,  181,  187,
387
      184,  181,  188,  189,  189,  181,  190,  181,  181,  181,
388
      191,  181,  181,  181,  192,  181,  181,  181,  181,  181,
389
      193,   28,   28,   28,   28,   28,   28,   28,   28,   28,
390
       28,   28,   28,   28,   28,   28,   48,  194,  181,  181,
391
      181,   42,   48,  187,  195,  189,  189,  196,  181,  181,
392
 
393
      181,  191,  192,  181,  193,  181,  197,  198,   28,   28,
394
       28,   28,   28,   28,   28,   28,   28,   28,   28,  181,
395
      199,  181,  181,   42,  195,  181,  189,  181,  200,  196,
396
      181,  181,  181,  181,  181,  181,  181,  181,  181,  181,
397
      181,  181,  181,  181,  201,  198,   28,   28,   28,   28,
398
      181,  181,   42,  181,  202,  181,  181,  181,  181,  181,
399
      181,  181,  181,  201,   28,   42,  181,  181,  181,  202,
400
      181,   28,   42,  181,  181,  181,  181,  181,  181,  181,
401
        0,  181,  181,  181,  181,  181,  181,  181,  181,  181,
402
      181,  181,  181,  181,  181,  181,  181,  181,  181,  181,
403
 
404
      181,  181
405
    } ;
406
 
407
static yyconst short int yy_nxt[761] =
408
    {   0,
409
        6,    7,    8,    7,    6,    9,    6,   10,   11,   12,
410
       13,   14,   15,   11,   16,   17,   18,   19,   20,   21,
411
       22,   11,   23,   24,   25,   26,   11,   11,   27,   28,
412
       27,   27,   27,   29,   27,   27,   27,   30,   27,   31,
413
       32,   33,   34,   27,   35,   27,   27,   36,   39,   62,
414
       72,  177,   63,   68,   68,   69,   72,   98,   75,   92,
415
       72,   70,   98,   90,   99,   99,   72,   78,   71,   40,
416
       42,   43,   43,   44,   45,   45,   45,   45,   45,   46,
417
       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
418
       45,   45,   45,   45,   45,   45,   47,   45,   45,   48,
419
 
420
       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
421
       48,   48,   48,   48,   48,   48,   48,   48,   51,   51,
422
       51,   72,   57,  157,   39,   76,   72,  169,   57,   84,
423
      134,   77,   58,   52,   59,   59,   72,   72,   58,   53,
424
       59,   59,  175,   85,   59,   40,   55,   72,   72,   60,
425
       59,   68,   68,   69,   72,   60,   88,   79,   72,   70,
426
       82,   72,   83,   61,   72,   80,   71,  173,  100,   81,
427
      157,   72,   86,  101,  101,  101,  101,   40,   72,   72,
428
       73,  110,  156,  134,  156,   68,   68,   68,   72,   72,
429
       74,   42,   43,   43,   43,   42,   42,   42,   42,   42,
430
 
431
       71,   42,   42,   42,   42,   42,   42,   42,   42,   42,
432
       42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
433
       87,   87,   87,   87,   87,   87,   87,   87,   87,   87,
434
       87,   87,   87,   87,   87,   87,   87,   87,   87,   42,
435
       42,   42,   68,   68,   69,   72,   72,   89,  157,  134,
436
       70,   72,   72,   72,   72,   72,   72,   71,  109,  111,
437
      116,   72,   72,   72,   72,  134,  134,   42,   42,   42,
438
       42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
439
       42,   42,   42,   42,   42,   42,   90,   72,   72,  112,
440
      134,   72,   72,   72,  171,  171,  118,   72,   72,  134,
441
 
442
      115,   72,   72,   72,  113,  114,   93,   93,   93,   93,
443
       93,   93,   93,   93,   93,   93,   93,   93,   93,   93,
444
       93,   93,   93,   93,   93,   51,   51,   51,   72,   57,
445
      134,  105,  105,  105,  128,  106,  157,  117,   72,   58,
446
      181,   59,   59,  169,  129,   72,   53,  122,  122,  122,
447
      166,   59,  107,   55,  134,   72,   60,  119,  122,  122,
448
      122,  131,  131,  133,  133,   38,  123,   68,   68,   69,
449
       72,  131,  178,  133,  178,   70,  132,  123,  124,  124,
450
       72,  157,   71,  105,  105,  105,   72,  106,  163,  124,
451
      124,  124,  124,  124,  124,  162,   72,   72,   68,   68,
452
 
453
       69,  168,  168,  134,  107,  134,   70,   72,   72,  135,
454
      134,  147,  134,   71,  136,   72,  161,   72,   72,  137,
455
      134,  138,   72,   72,  160,   72,  139,   72,  179,  179,
456
      148,   72,   72,   72,  149,   72,  140,  141,  142,  143,
457
       72,   72,  128,  157,  144,  150,  122,  122,  122,  157,
458
       72,  154,  129,  131,  131,  126,   68,   68,   69,  133,
459
      133,  134,  158,  131,   70,  123,  153,  153,  132,  133,
460
      152,   71,  159,   72,   72,   72,   72,  153,  153,  153,
461
      153,  153,  153,   72,   72,   72,   72,  165,  167,   68,
462
       68,   69,   72,  168,  168,  151,   72,   70,  174,  174,
463
 
464
      176,  176,   72,  104,   71,  172,   72,  127,  174,  126,
465
      176,  174,  174,  176,  176,  122,  122,  122,  180,  180,
466
       89,  174,  102,  176,  120,  180,  180,  102,  180,  120,
467
      120,   89,  104,   97,  123,  180,   38,   38,   38,   38,
468
       38,   38,   38,   38,   38,   38,   38,   38,   38,   38,
469
       41,  155,   91,   41,   90,   90,  155,   41,   41,   41,
470
       54,   54,   54,   89,   67,   66,   64,   56,   54,   50,
471
       54,   49,  181,   54,   54,   54,   65,   37,   65,   65,
472
       65,   72,   72,   72,   37,  181,  181,  181,   72,   72,
473
       72,  181,  181,  181,   72,   72,   72,   94,   94,  181,
474
 
475
       94,   94,   94,   94,   94,   94,   94,   94,   94,   94,
476
       94,   94,   94,   94,   95,   95,   95,   96,  181,  181,
477
      181,   96,   96,   96,  103,  181,  181,  103,  103,  103,
478
      103,  108,  108,  108,  181,  108,  181,  181,  181,  181,
479
      181,  108,  181,  181,  108,  108,  108,  121,  181,  181,
480
      181,  181,  121,  181,  181,  181,  181,  121,  125,  181,
481
      181,  125,  125,  125,  125,  130,  181,  181,  130,  130,
482
      181,  181,  181,  130,  130,  145,  145,  145,  146,  146,
483
      146,  181,  181,  181,  181,  146,  146,  146,  181,  181,
484
      181,  146,  146,  146,  164,  181,  181,  164,  164,  164,
485
 
486
      164,  170,  181,  181,  181,  170,  181,  181,  181,  170,
487
      170,    5,  181,  181,  181,  181,  181,  181,  181,  181,
488
      181,  181,  181,  181,  181,  181,  181,  181,  181,  181,
489
      181,  181,  181,  181,  181,  181,  181,  181,  181,  181,
490
      181,  181,  181,  181,  181,  181,  181,  181,  181,  181,
491
      181,  181,  181,  181,  181,  181,  181,  181,  181,  181
492
    } ;
493
 
494
static yyconst short int yy_chk[761] =
495
    {   0,
496
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
497
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
498
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
499
        1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
500
        1,    1,    1,    1,    1,    1,    1,    1,    9,   22,
501
       29,  173,   22,   27,   27,   27,   31,  190,   29,   47,
502
       29,   27,  190,   47,   58,   58,   31,   31,   27,    9,
503
       12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
504
       12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
505
       12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
506
 
507
       12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
508
       12,   12,   12,   12,   12,   12,   12,   12,   18,   18,
509
       18,   30,   20,  135,   38,   30,   34,  170,   21,   34,
510
      135,   30,   20,   18,   20,   20,   34,   35,   21,   18,
511
       21,   21,  169,   35,   20,   38,   18,   35,   33,   20,
512
       21,   28,   28,   28,   32,   21,   40,   32,   33,   28,
513
       33,   36,   33,   20,   32,   32,   28,  166,   60,   32,
514
      164,   36,   36,   60,   60,  100,  100,   40,   72,   74,
515
       28,   74,  132,  163,  132,   68,   68,   68,   72,   74,
516
       28,   37,   37,   37,   37,   37,   37,   37,   37,   37,
517
 
518
       68,   37,   37,   37,   37,   37,   37,   37,   37,   37,
519
       37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
520
       37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
521
       37,   37,   37,   37,   37,   37,   37,   37,   37,   42,
522
       42,   42,   69,   69,   69,   73,   75,   42,  136,  162,
523
       69,   76,   77,   82,   83,   73,   75,   69,   73,   75,
524
       83,   76,   77,   82,   83,  161,  136,   42,   42,   42,
525
       42,   42,   42,   42,   42,   42,   42,   42,   42,   42,
526
       42,   42,   42,   42,   42,   42,   48,   78,   79,   78,
527
      160,   80,   81,   85,  156,  156,   85,   78,   79,  159,
528
 
529
       81,   80,   81,   85,   79,   80,   48,   48,   48,   48,
530
       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
531
       48,   48,   48,   48,   48,   51,   51,   51,   84,   59,
532
      158,   71,   71,   71,   98,   71,  137,   84,   84,   59,
533
       51,   59,   59,  155,   98,   86,   51,   89,   89,   89,
534
      153,   59,   71,   51,  137,   86,   59,   86,   90,   90,
535
       90,   99,   99,  101,  101,  151,   89,  104,  104,  104,
536
      109,   99,  175,  101,  175,  104,   99,   90,   92,   92,
537
      109,  145,  104,  105,  105,  105,  110,  105,  144,   92,
538
       92,   92,   92,   92,   92,  143,  110,  112,  108,  108,
539
 
540
      108,  167,  167,  142,  105,  106,  108,  112,  111,  106,
541
      106,  111,  106,  108,  106,  113,  141,  114,  111,  106,
542
      106,  106,  115,  117,  140,  113,  106,  114,  178,  178,
543
      115,  116,  115,  117,  116,  118,  106,  106,  106,  106,
544
      119,  116,  130,  138,  106,  118,  122,  122,  122,  134,
545
      119,  128,  130,  131,  131,  125,  146,  146,  146,  133,
546
      133,  138,  139,  131,  146,  122,  124,  124,  131,  133,
547
      123,  146,  139,  147,  148,  149,  150,  124,  124,  124,
548
      124,  124,  124,  147,  148,  149,  150,  149,  154,  157,
549
      157,  157,  165,  154,  154,  120,  172,  157,  168,  168,
550
 
551
      171,  171,  165,  103,  157,  165,  172,   97,  168,   95,
552
      171,  174,  174,  176,  176,  177,  177,  177,  179,  179,
553
       93,  174,  191,  176,  199,  180,  180,  191,  179,  199,
554
       88,   87,   65,   55,  177,  180,  182,  182,  182,  182,
555
      182,  182,  182,  182,  182,  182,  182,  182,  182,  182,
556
      183,  200,   46,  183,   45,   44,  200,  183,  183,  183,
557
      184,  184,  184,   43,   25,   24,   23,   19,  184,   17,
558
      184,   15,    5,  184,  184,  184,  185,    4,  185,  185,
559
      185,  186,  186,  186,    3,    0,    0,    0,  186,  186,
560
      186,    0,    0,    0,  186,  186,  186,  187,  187,    0,
561
 
562
      187,  187,  187,  187,  187,  187,  187,  187,  187,  187,
563
      187,  187,  187,  187,  188,  188,  188,  189,    0,    0,
564
        0,  189,  189,  189,  192,    0,    0,  192,  192,  192,
565
      192,  193,  193,  193,    0,  193,    0,    0,    0,    0,
566
        0,  193,    0,    0,  193,  193,  193,  194,    0,    0,
567
        0,    0,  194,    0,    0,    0,    0,  194,  195,    0,
568
        0,  195,  195,  195,  195,  196,    0,    0,  196,  196,
569
        0,    0,    0,  196,  196,  197,  197,  197,  198,  198,
570
      198,    0,    0,    0,    0,  198,  198,  198,    0,    0,
571
        0,  198,  198,  198,  201,    0,    0,  201,  201,  201,
572
 
573
      201,  202,    0,    0,    0,  202,    0,    0,    0,  202,
574
      202,  181,  181,  181,  181,  181,  181,  181,  181,  181,
575
      181,  181,  181,  181,  181,  181,  181,  181,  181,  181,
576
      181,  181,  181,  181,  181,  181,  181,  181,  181,  181,
577
      181,  181,  181,  181,  181,  181,  181,  181,  181,  181,
578
      181,  181,  181,  181,  181,  181,  181,  181,  181,  181
579
    } ;
580
 
581
static yy_state_type yy_last_accepting_state;
582
static char *yy_last_accepting_cpos;
583
 
584
/* The intent behind this definition is that it'll catch
585
 * any uses of REJECT which flex missed.
586
 */
587
#define REJECT reject_used_but_not_detected
588
#define yymore() yymore_used_but_not_detected
589
#define YY_MORE_ADJ 0
590
#define YY_RESTORE_YY_MORE_OFFSET
591
char *yytext;
592
#line 1 "ada-lex.l"
593
#define INITIAL 0
594
/* FLEX lexer for Ada expressions, for GDB.
595
   Copyright (C) 1994, 1997, 1998, 2000, 2001, 2002, 2003, 2007, 2008
596
   Free Software Foundation, Inc.
597
 
598
This file is part of GDB.
599
 
600
This program is free software; you can redistribute it and/or modify
601
it under the terms of the GNU General Public License as published by
602
the Free Software Foundation; either version 2 of the License, or
603
(at your option) any later version.
604
 
605
This program is distributed in the hope that it will be useful,
606
but WITHOUT ANY WARRANTY; without even the implied warranty of
607
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
608
GNU General Public License for more details.
609
 
610
You should have received a copy of the GNU General Public License
611
along with this program; if not, write to the Free Software
612
Foundation, Inc., 51 Franklin Street, Fifth Floor,
613
Boston, MA 02110-1301, USA.  */
614
/*----------------------------------------------------------------------*/
615
/* The converted version of this file is to be included in ada-exp.y, */
616
/* the Ada parser for gdb.  The function yylex obtains characters from */
617
/* the global pointer lexptr.  It returns a syntactic category for */
618
/* each successive token and places a semantic value into yylval */
619
/* (ada-lval), defined by the parser.   */
620
#line 46 "ada-lex.l"
621
 
622
#define NUMERAL_WIDTH 256
623
#define LONGEST_SIGN ((ULONGEST) 1 << (sizeof(LONGEST) * HOST_CHAR_BIT - 1))
624
 
625
/* Temporary staging for numeric literals.  */
626
static char numbuf[NUMERAL_WIDTH];
627
 static void canonicalizeNumeral (char *s1, const char *);
628
static struct stoken processString (const char*, int);
629
static int processInt (const char *, const char *, const char *);
630
static int processReal (const char *);
631
static struct stoken processId (const char *, int);
632
static int processAttribute (const char *);
633
static int find_dot_all (const char *);
634
 
635
#undef YY_DECL
636
#define YY_DECL static int yylex ( void )
637
 
638
#undef YY_INPUT
639
#define YY_INPUT(BUF, RESULT, MAX_SIZE) \
640
    if ( *lexptr == '\000' ) \
641
      (RESULT) = YY_NULL; \
642
    else \
643
      { \
644
        *(BUF) = *lexptr; \
645
        (RESULT) = 1; \
646
        lexptr += 1; \
647
      }
648
 
649
static int find_dot_all (const char *);
650
 
651
#define BEFORE_QUAL_QUOTE 1
652
 
653
#line 654 "ada-lex.c"
654
 
655
/* Macros after this point can all be overridden by user definitions in
656
 * section 1.
657
 */
658
 
659
#ifndef YY_SKIP_YYWRAP
660
#ifdef __cplusplus
661
extern "C" int yywrap YY_PROTO(( void ));
662
#else
663
extern int yywrap YY_PROTO(( void ));
664
#endif
665
#endif
666
 
667
#ifndef YY_NO_UNPUT
668
static void yyunput YY_PROTO(( int c, char *buf_ptr ));
669
#endif
670
 
671
#ifndef yytext_ptr
672
static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
673
#endif
674
 
675
#ifdef YY_NEED_STRLEN
676
static int yy_flex_strlen YY_PROTO(( yyconst char * ));
677
#endif
678
 
679
#ifndef YY_NO_INPUT
680
#ifdef __cplusplus
681
static int yyinput YY_PROTO(( void ));
682
#else
683
static int input YY_PROTO(( void ));
684
#endif
685
#endif
686
 
687
#if YY_STACK_USED
688
static int yy_start_stack_ptr = 0;
689
static int yy_start_stack_depth = 0;
690
static int *yy_start_stack = 0;
691
#ifndef YY_NO_PUSH_STATE
692
static void yy_push_state YY_PROTO(( int new_state ));
693
#endif
694
#ifndef YY_NO_POP_STATE
695
static void yy_pop_state YY_PROTO(( void ));
696
#endif
697
#ifndef YY_NO_TOP_STATE
698
static int yy_top_state YY_PROTO(( void ));
699
#endif
700
 
701
#else
702
#define YY_NO_PUSH_STATE 1
703
#define YY_NO_POP_STATE 1
704
#define YY_NO_TOP_STATE 1
705
#endif
706
 
707
#ifdef YY_MALLOC_DECL
708
YY_MALLOC_DECL
709
#else
710
#if __STDC__
711
#ifndef __cplusplus
712
#include <stdlib.h>
713
#endif
714
#else
715
/* Just try to get by without declaring the routines.  This will fail
716
 * miserably on non-ANSI systems for which sizeof(size_t) != sizeof(int)
717
 * or sizeof(void*) != sizeof(int).
718
 */
719
#endif
720
#endif
721
 
722
/* Amount of stuff to slurp up with each read. */
723
#ifndef YY_READ_BUF_SIZE
724
#define YY_READ_BUF_SIZE 8192
725
#endif
726
 
727
/* Copy whatever the last rule matched to the standard output. */
728
 
729
#ifndef ECHO
730
/* This used to be an fputs(), but since the string might contain NUL's,
731
 * we now use fwrite().
732
 */
733
#define ECHO (void) fwrite( yytext, yyleng, 1, yyout )
734
#endif
735
 
736
/* Gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
737
 * is returned in "result".
738
 */
739
#ifndef YY_INPUT
740
#define YY_INPUT(buf,result,max_size) \
741
        if ( yy_current_buffer->yy_is_interactive ) \
742
                { \
743
                int c = '*', n; \
744
                for ( n = 0; n < max_size && \
745
                             (c = getc( yyin )) != EOF && c != '\n'; ++n ) \
746
                        buf[n] = (char) c; \
747
                if ( c == '\n' ) \
748
                        buf[n++] = (char) c; \
749
                if ( c == EOF && ferror( yyin ) ) \
750
                        YY_FATAL_ERROR( "input in flex scanner failed" ); \
751
                result = n; \
752
                } \
753
        else if ( ((result = fread( buf, 1, max_size, yyin )) == 0) \
754
                  && ferror( yyin ) ) \
755
                YY_FATAL_ERROR( "input in flex scanner failed" );
756
#endif
757
 
758
/* No semi-colon after return; correct usage is to write "yyterminate();" -
759
 * we don't want an extra ';' after the "return" because that will cause
760
 * some compilers to complain about unreachable statements.
761
 */
762
#ifndef yyterminate
763
#define yyterminate() return YY_NULL
764
#endif
765
 
766
/* Number of entries by which start-condition stack grows. */
767
#ifndef YY_START_STACK_INCR
768
#define YY_START_STACK_INCR 25
769
#endif
770
 
771
/* Report a fatal error. */
772
#ifndef YY_FATAL_ERROR
773
#define YY_FATAL_ERROR(msg) yy_fatal_error( msg )
774
#endif
775
 
776
/* Default declaration of generated scanner - a define so the user can
777
 * easily add parameters.
778
 */
779
#ifndef YY_DECL
780
#define YY_DECL int yylex YY_PROTO(( void ))
781
#endif
782
 
783
/* Code executed at the beginning of each rule, after yytext and yyleng
784
 * have been set up.
785
 */
786
#ifndef YY_USER_ACTION
787
#define YY_USER_ACTION
788
#endif
789
 
790
/* Code executed at the end of each rule. */
791
#ifndef YY_BREAK
792
#define YY_BREAK break;
793
#endif
794
 
795
#define YY_RULE_SETUP \
796
        YY_USER_ACTION
797
 
798
YY_DECL
799
        {
800
        register yy_state_type yy_current_state;
801
        register char *yy_cp = NULL, *yy_bp = NULL;
802
        register int yy_act;
803
 
804
#line 82 "ada-lex.l"
805
 
806
 
807
#line 808 "ada-lex.c"
808
 
809
        if ( yy_init )
810
                {
811
                yy_init = 0;
812
 
813
#ifdef YY_USER_INIT
814
                YY_USER_INIT;
815
#endif
816
 
817
                if ( ! yy_start )
818
                        yy_start = 1;   /* first start state */
819
 
820
                if ( ! yyin )
821
                        yyin = stdin;
822
 
823
                if ( ! yyout )
824
                        yyout = stdout;
825
 
826
                if ( ! yy_current_buffer )
827
                        yy_current_buffer =
828
                                yy_create_buffer( yyin, YY_BUF_SIZE );
829
 
830
                yy_load_buffer_state();
831
                }
832
 
833
        while ( 1 )             /* loops until end-of-file is reached */
834
                {
835
                yy_cp = yy_c_buf_p;
836
 
837
                /* Support of yytext. */
838
                *yy_cp = yy_hold_char;
839
 
840
                /* yy_bp points to the position in yy_ch_buf of the start of
841
                 * the current run.
842
                 */
843
                yy_bp = yy_cp;
844
 
845
                yy_current_state = yy_start;
846
yy_match:
847
                do
848
                        {
849
                        register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
850
                        if ( yy_accept[yy_current_state] )
851
                                {
852
                                yy_last_accepting_state = yy_current_state;
853
                                yy_last_accepting_cpos = yy_cp;
854
                                }
855
                        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
856
                                {
857
                                yy_current_state = (int) yy_def[yy_current_state];
858
                                if ( yy_current_state >= 182 )
859
                                        yy_c = yy_meta[(unsigned int) yy_c];
860
                                }
861
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
862
                        ++yy_cp;
863
                        }
864
                while ( yy_base[yy_current_state] != 712 );
865
 
866
yy_find_action:
867
                yy_act = yy_accept[yy_current_state];
868
                if ( yy_act == 0 )
869
                        { /* have to back up */
870
                        yy_cp = yy_last_accepting_cpos;
871
                        yy_current_state = yy_last_accepting_state;
872
                        yy_act = yy_accept[yy_current_state];
873
                        }
874
 
875
                YY_DO_BEFORE_ACTION;
876
 
877
 
878
do_action:      /* This label is used only to access EOF actions. */
879
 
880
 
881
                switch ( yy_act )
882
        { /* beginning of action switch */
883
                        case 0: /* must back up */
884
                        /* undo the effects of YY_DO_BEFORE_ACTION */
885
                        *yy_cp = yy_hold_char;
886
                        yy_cp = yy_last_accepting_cpos;
887
                        yy_current_state = yy_last_accepting_state;
888
                        goto yy_find_action;
889
 
890
case 1:
891
YY_RULE_SETUP
892
#line 84 "ada-lex.l"
893
{ }
894
        YY_BREAK
895
case 2:
896
YY_RULE_SETUP
897
#line 86 "ada-lex.l"
898
{ yyterminate(); }
899
        YY_BREAK
900
case 3:
901
YY_RULE_SETUP
902
#line 88 "ada-lex.l"
903
{
904
                   canonicalizeNumeral (numbuf, yytext);
905
                   return processInt (NULL, numbuf, strrchr(numbuf, 'e')+1);
906
                 }
907
        YY_BREAK
908
case 4:
909
YY_RULE_SETUP
910
#line 93 "ada-lex.l"
911
{
912
                   canonicalizeNumeral (numbuf, yytext);
913
                   return processInt (NULL, numbuf, NULL);
914
                 }
915
        YY_BREAK
916
case 5:
917
YY_RULE_SETUP
918
#line 98 "ada-lex.l"
919
{
920
                   canonicalizeNumeral (numbuf, yytext);
921
                   return processInt (numbuf,
922
                                      strchr (numbuf, '#') + 1,
923
                                      strrchr(numbuf, '#') + 1);
924
                 }
925
        YY_BREAK
926
case 6:
927
YY_RULE_SETUP
928
#line 105 "ada-lex.l"
929
{
930
                   canonicalizeNumeral (numbuf, yytext);
931
                   return processInt (numbuf, strchr (numbuf, '#') + 1, NULL);
932
                 }
933
        YY_BREAK
934
case 7:
935
YY_RULE_SETUP
936
#line 110 "ada-lex.l"
937
{
938
                  canonicalizeNumeral (numbuf, yytext+2);
939
                  return processInt ("16#", numbuf, NULL);
940
                }
941
        YY_BREAK
942
case 8:
943
YY_RULE_SETUP
944
#line 116 "ada-lex.l"
945
{
946
                   canonicalizeNumeral (numbuf, yytext);
947
                   return processReal (numbuf);
948
                }
949
        YY_BREAK
950
case 9:
951
YY_RULE_SETUP
952
#line 121 "ada-lex.l"
953
{
954
                   canonicalizeNumeral (numbuf, yytext);
955
                   return processReal (numbuf);
956
                }
957
        YY_BREAK
958
case 10:
959
YY_RULE_SETUP
960
#line 126 "ada-lex.l"
961
{
962
                   error (_("Based real literals not implemented yet."));
963
                }
964
        YY_BREAK
965
case 11:
966
YY_RULE_SETUP
967
#line 130 "ada-lex.l"
968
{
969
                   error (_("Based real literals not implemented yet."));
970
                }
971
        YY_BREAK
972
case 12:
973
YY_RULE_SETUP
974
#line 134 "ada-lex.l"
975
{
976
                   yylval.typed_val.type = type_char ();
977
                   yylval.typed_val.val = yytext[1];
978
                   return CHARLIT;
979
                }
980
        YY_BREAK
981
case 13:
982
YY_RULE_SETUP
983
#line 140 "ada-lex.l"
984
{
985
                   int v;
986
                   yylval.typed_val.type = type_char ();
987
                   sscanf (yytext+3, "%2x", &v);
988
                   yylval.typed_val.val = v;
989
                   return CHARLIT;
990
                }
991
        YY_BREAK
992
case 14:
993
YY_RULE_SETUP
994
#line 148 "ada-lex.l"
995
{
996
                   yylval.sval = processString (yytext+1, yyleng-2);
997
                   return STRING;
998
                }
999
        YY_BREAK
1000
case 15:
1001
YY_RULE_SETUP
1002
#line 153 "ada-lex.l"
1003
{
1004
                   error (_("ill-formed or non-terminated string literal"));
1005
                }
1006
        YY_BREAK
1007
case 16:
1008
YY_RULE_SETUP
1009
#line 158 "ada-lex.l"
1010
{
1011
                  while (*lexptr != 'i' && *lexptr != 'I')
1012
                    lexptr -= 1;
1013
                  yyrestart(NULL);
1014
                  return 0;
1015
                }
1016
        YY_BREAK
1017
/* ADA KEYWORDS */
1018
case 17:
1019
YY_RULE_SETUP
1020
#line 167 "ada-lex.l"
1021
{ return ABS; }
1022
        YY_BREAK
1023
case 18:
1024
YY_RULE_SETUP
1025
#line 168 "ada-lex.l"
1026
{ return _AND_; }
1027
        YY_BREAK
1028
case 19:
1029
YY_RULE_SETUP
1030
#line 169 "ada-lex.l"
1031
{ return ELSE; }
1032
        YY_BREAK
1033
case 20:
1034
YY_RULE_SETUP
1035
#line 170 "ada-lex.l"
1036
{ return IN; }
1037
        YY_BREAK
1038
case 21:
1039
YY_RULE_SETUP
1040
#line 171 "ada-lex.l"
1041
{ return MOD; }
1042
        YY_BREAK
1043
case 22:
1044
YY_RULE_SETUP
1045
#line 172 "ada-lex.l"
1046
{ return NEW; }
1047
        YY_BREAK
1048
case 23:
1049
YY_RULE_SETUP
1050
#line 173 "ada-lex.l"
1051
{ return NOT; }
1052
        YY_BREAK
1053
case 24:
1054
YY_RULE_SETUP
1055
#line 174 "ada-lex.l"
1056
{ return NULL_PTR; }
1057
        YY_BREAK
1058
case 25:
1059
YY_RULE_SETUP
1060
#line 175 "ada-lex.l"
1061
{ return OR; }
1062
        YY_BREAK
1063
case 26:
1064
YY_RULE_SETUP
1065
#line 176 "ada-lex.l"
1066
{ return OTHERS; }
1067
        YY_BREAK
1068
case 27:
1069
YY_RULE_SETUP
1070
#line 177 "ada-lex.l"
1071
{ return REM; }
1072
        YY_BREAK
1073
case 28:
1074
YY_RULE_SETUP
1075
#line 178 "ada-lex.l"
1076
{ return THEN; }
1077
        YY_BREAK
1078
case 29:
1079
YY_RULE_SETUP
1080
#line 179 "ada-lex.l"
1081
{ return XOR; }
1082
        YY_BREAK
1083
/* ATTRIBUTES */
1084
case 30:
1085
YY_RULE_SETUP
1086
#line 183 "ada-lex.l"
1087
{ return processAttribute (yytext+1); }
1088
        YY_BREAK
1089
/* PUNCTUATION */
1090
case 31:
1091
YY_RULE_SETUP
1092
#line 187 "ada-lex.l"
1093
{ return ARROW; }
1094
        YY_BREAK
1095
case 32:
1096
YY_RULE_SETUP
1097
#line 188 "ada-lex.l"
1098
{ return DOTDOT; }
1099
        YY_BREAK
1100
case 33:
1101
YY_RULE_SETUP
1102
#line 189 "ada-lex.l"
1103
{ return STARSTAR; }
1104
        YY_BREAK
1105
case 34:
1106
YY_RULE_SETUP
1107
#line 190 "ada-lex.l"
1108
{ return ASSIGN; }
1109
        YY_BREAK
1110
case 35:
1111
YY_RULE_SETUP
1112
#line 191 "ada-lex.l"
1113
{ return NOTEQUAL; }
1114
        YY_BREAK
1115
case 36:
1116
YY_RULE_SETUP
1117
#line 192 "ada-lex.l"
1118
{ return LEQ; }
1119
        YY_BREAK
1120
case 37:
1121
YY_RULE_SETUP
1122
#line 193 "ada-lex.l"
1123
{ return GEQ; }
1124
        YY_BREAK
1125
case 38:
1126
YY_RULE_SETUP
1127
#line 195 "ada-lex.l"
1128
{ BEGIN INITIAL; return '\''; }
1129
        YY_BREAK
1130
case 39:
1131
YY_RULE_SETUP
1132
#line 197 "ada-lex.l"
1133
{ return yytext[0]; }
1134
        YY_BREAK
1135
case 40:
1136
YY_RULE_SETUP
1137
#line 199 "ada-lex.l"
1138
{ if (paren_depth == 0 && comma_terminates)
1139
                    {
1140
                      lexptr -= 1;
1141
                      yyrestart(NULL);
1142
                      return 0;
1143
                    }
1144
                  else
1145
                    return ',';
1146
                }
1147
        YY_BREAK
1148
case 41:
1149
YY_RULE_SETUP
1150
#line 209 "ada-lex.l"
1151
{ paren_depth += 1; return '('; }
1152
        YY_BREAK
1153
case 42:
1154
YY_RULE_SETUP
1155
#line 210 "ada-lex.l"
1156
{ if (paren_depth == 0)
1157
                    {
1158
                      lexptr -= 1;
1159
                      yyrestart(NULL);
1160
                      return 0;
1161
                    }
1162
                  else
1163
                    {
1164
                      paren_depth -= 1;
1165
                      return ')';
1166
                    }
1167
                }
1168
        YY_BREAK
1169
case 43:
1170
YY_RULE_SETUP
1171
#line 223 "ada-lex.l"
1172
{ return DOT_ALL; }
1173
        YY_BREAK
1174
case 44:
1175
YY_RULE_SETUP
1176
#line 225 "ada-lex.l"
1177
{
1178
                  yylval.sval = processId (yytext+1, yyleng-1);
1179
                  return DOT_ID;
1180
                }
1181
        YY_BREAK
1182
case 45:
1183
YY_RULE_SETUP
1184
#line 230 "ada-lex.l"
1185
{
1186
                  int all_posn = find_dot_all (yytext);
1187
 
1188
                  if (all_posn == -1 && yytext[yyleng-1] == '\'')
1189
                    {
1190
                      BEGIN BEFORE_QUAL_QUOTE;
1191
                      yyless (yyleng-1);
1192
                    }
1193
                  else if (all_posn >= 0)
1194
                    yyless (all_posn);
1195
                  yylval.sval = processId (yytext, yyleng);
1196
                  return NAME;
1197
               }
1198
        YY_BREAK
1199
/* GDB EXPRESSION CONSTRUCTS  */
1200
case 46:
1201
YY_RULE_SETUP
1202
#line 247 "ada-lex.l"
1203
{
1204
                  yyless (yyleng - 2);
1205
                  yylval.sval = processId (yytext, yyleng);
1206
                  return NAME;
1207
                }
1208
        YY_BREAK
1209
case 47:
1210
YY_RULE_SETUP
1211
#line 253 "ada-lex.l"
1212
{ return COLONCOLON; }
1213
        YY_BREAK
1214
case 48:
1215
YY_RULE_SETUP
1216
#line 255 "ada-lex.l"
1217
{ return yytext[0]; }
1218
        YY_BREAK
1219
/* REGISTERS AND GDB CONVENIENCE VARIABLES */
1220
case 49:
1221
YY_RULE_SETUP
1222
#line 259 "ada-lex.l"
1223
{
1224
                  yylval.sval.ptr = yytext;
1225
                  yylval.sval.length = yyleng;
1226
                  return SPECIAL_VARIABLE;
1227
                }
1228
        YY_BREAK
1229
/* CATCH-ALL ERROR CASE */
1230
case 50:
1231
YY_RULE_SETUP
1232
#line 267 "ada-lex.l"
1233
{ error (_("Invalid character '%s' in expression."), yytext); }
1234
        YY_BREAK
1235
case 51:
1236
YY_RULE_SETUP
1237
#line 268 "ada-lex.l"
1238
YY_FATAL_ERROR( "flex scanner jammed" );
1239
        YY_BREAK
1240
#line 1241 "ada-lex.c"
1241
case YY_STATE_EOF(INITIAL):
1242
case YY_STATE_EOF(BEFORE_QUAL_QUOTE):
1243
        yyterminate();
1244
 
1245
        case YY_END_OF_BUFFER:
1246
                {
1247
                /* Amount of text matched not including the EOB char. */
1248
                int yy_amount_of_matched_text = (int) (yy_cp - yytext_ptr) - 1;
1249
 
1250
                /* Undo the effects of YY_DO_BEFORE_ACTION. */
1251
                *yy_cp = yy_hold_char;
1252
                YY_RESTORE_YY_MORE_OFFSET
1253
 
1254
                if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
1255
                        {
1256
                        /* We're scanning a new file or input source.  It's
1257
                         * possible that this happened because the user
1258
                         * just pointed yyin at a new source and called
1259
                         * yylex().  If so, then we have to assure
1260
                         * consistency between yy_current_buffer and our
1261
                         * globals.  Here is the right place to do so, because
1262
                         * this is the first action (other than possibly a
1263
                         * back-up) that will match for the new input source.
1264
                         */
1265
                        yy_n_chars = yy_current_buffer->yy_n_chars;
1266
                        yy_current_buffer->yy_input_file = yyin;
1267
                        yy_current_buffer->yy_buffer_status = YY_BUFFER_NORMAL;
1268
                        }
1269
 
1270
                /* Note that here we test for yy_c_buf_p "<=" to the position
1271
                 * of the first EOB in the buffer, since yy_c_buf_p will
1272
                 * already have been incremented past the NUL character
1273
                 * (since all states make transitions on EOB to the
1274
                 * end-of-buffer state).  Contrast this with the test
1275
                 * in input().
1276
                 */
1277
                if ( yy_c_buf_p <= &yy_current_buffer->yy_ch_buf[yy_n_chars] )
1278
                        { /* This was really a NUL. */
1279
                        yy_state_type yy_next_state;
1280
 
1281
                        yy_c_buf_p = yytext_ptr + yy_amount_of_matched_text;
1282
 
1283
                        yy_current_state = yy_get_previous_state();
1284
 
1285
                        /* Okay, we're now positioned to make the NUL
1286
                         * transition.  We couldn't have
1287
                         * yy_get_previous_state() go ahead and do it
1288
                         * for us because it doesn't know how to deal
1289
                         * with the possibility of jamming (and we don't
1290
                         * want to build jamming into it because then it
1291
                         * will run more slowly).
1292
                         */
1293
 
1294
                        yy_next_state = yy_try_NUL_trans( yy_current_state );
1295
 
1296
                        yy_bp = yytext_ptr + YY_MORE_ADJ;
1297
 
1298
                        if ( yy_next_state )
1299
                                {
1300
                                /* Consume the NUL. */
1301
                                yy_cp = ++yy_c_buf_p;
1302
                                yy_current_state = yy_next_state;
1303
                                goto yy_match;
1304
                                }
1305
 
1306
                        else
1307
                                {
1308
                                yy_cp = yy_c_buf_p;
1309
                                goto yy_find_action;
1310
                                }
1311
                        }
1312
 
1313
                else switch ( yy_get_next_buffer() )
1314
                        {
1315
                        case EOB_ACT_END_OF_FILE:
1316
                                {
1317
                                yy_did_buffer_switch_on_eof = 0;
1318
 
1319
                                if ( yywrap() )
1320
                                        {
1321
                                        /* Note: because we've taken care in
1322
                                         * yy_get_next_buffer() to have set up
1323
                                         * yytext, we can now set up
1324
                                         * yy_c_buf_p so that if some total
1325
                                         * hoser (like flex itself) wants to
1326
                                         * call the scanner after we return the
1327
                                         * YY_NULL, it'll still work - another
1328
                                         * YY_NULL will get returned.
1329
                                         */
1330
                                        yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
1331
 
1332
                                        yy_act = YY_STATE_EOF(YY_START);
1333
                                        goto do_action;
1334
                                        }
1335
 
1336
                                else
1337
                                        {
1338
                                        if ( ! yy_did_buffer_switch_on_eof )
1339
                                                YY_NEW_FILE;
1340
                                        }
1341
                                break;
1342
                                }
1343
 
1344
                        case EOB_ACT_CONTINUE_SCAN:
1345
                                yy_c_buf_p =
1346
                                        yytext_ptr + yy_amount_of_matched_text;
1347
 
1348
                                yy_current_state = yy_get_previous_state();
1349
 
1350
                                yy_cp = yy_c_buf_p;
1351
                                yy_bp = yytext_ptr + YY_MORE_ADJ;
1352
                                goto yy_match;
1353
 
1354
                        case EOB_ACT_LAST_MATCH:
1355
                                yy_c_buf_p =
1356
                                &yy_current_buffer->yy_ch_buf[yy_n_chars];
1357
 
1358
                                yy_current_state = yy_get_previous_state();
1359
 
1360
                                yy_cp = yy_c_buf_p;
1361
                                yy_bp = yytext_ptr + YY_MORE_ADJ;
1362
                                goto yy_find_action;
1363
                        }
1364
                break;
1365
                }
1366
 
1367
        default:
1368
                YY_FATAL_ERROR(
1369
                        "fatal flex scanner internal error--no action found" );
1370
        } /* end of action switch */
1371
                } /* end of scanning one token */
1372
        } /* end of yylex */
1373
 
1374
 
1375
/* yy_get_next_buffer - try to read in a new buffer
1376
 *
1377
 * Returns a code representing an action:
1378
 *      EOB_ACT_LAST_MATCH -
1379
 *      EOB_ACT_CONTINUE_SCAN - continue scanning from current position
1380
 *      EOB_ACT_END_OF_FILE - end of file
1381
 */
1382
 
1383
static int yy_get_next_buffer()
1384
        {
1385
        register char *dest = yy_current_buffer->yy_ch_buf;
1386
        register char *source = yytext_ptr;
1387
        register int number_to_move, i;
1388
        int ret_val;
1389
 
1390
        if ( yy_c_buf_p > &yy_current_buffer->yy_ch_buf[yy_n_chars + 1] )
1391
                YY_FATAL_ERROR(
1392
                "fatal flex scanner internal error--end of buffer missed" );
1393
 
1394
        if ( yy_current_buffer->yy_fill_buffer == 0 )
1395
                { /* Don't try to fill the buffer, so this is an EOF. */
1396
                if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
1397
                        {
1398
                        /* We matched a single character, the EOB, so
1399
                         * treat this as a final EOF.
1400
                         */
1401
                        return EOB_ACT_END_OF_FILE;
1402
                        }
1403
 
1404
                else
1405
                        {
1406
                        /* We matched some text prior to the EOB, first
1407
                         * process it.
1408
                         */
1409
                        return EOB_ACT_LAST_MATCH;
1410
                        }
1411
                }
1412
 
1413
        /* Try to read more data. */
1414
 
1415
        /* First move last chars to start of buffer. */
1416
        number_to_move = (int) (yy_c_buf_p - yytext_ptr) - 1;
1417
 
1418
        for ( i = 0; i < number_to_move; ++i )
1419
                *(dest++) = *(source++);
1420
 
1421
        if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_EOF_PENDING )
1422
                /* don't do the read, it's not guaranteed to return an EOF,
1423
                 * just force an EOF
1424
                 */
1425
                yy_current_buffer->yy_n_chars = yy_n_chars = 0;
1426
 
1427
        else
1428
                {
1429
                int num_to_read =
1430
                        yy_current_buffer->yy_buf_size - number_to_move - 1;
1431
 
1432
                while ( num_to_read <= 0 )
1433
                        { /* Not enough room in the buffer - grow it. */
1434
#ifdef YY_USES_REJECT
1435
                        YY_FATAL_ERROR(
1436
"input buffer overflow, can't enlarge buffer because scanner uses REJECT" );
1437
#else
1438
 
1439
                        /* just a shorter name for the current buffer */
1440
                        YY_BUFFER_STATE b = yy_current_buffer;
1441
 
1442
                        int yy_c_buf_p_offset =
1443
                                (int) (yy_c_buf_p - b->yy_ch_buf);
1444
 
1445
                        if ( b->yy_is_our_buffer )
1446
                                {
1447
                                int new_size = b->yy_buf_size * 2;
1448
 
1449
                                if ( new_size <= 0 )
1450
                                        b->yy_buf_size += b->yy_buf_size / 8;
1451
                                else
1452
                                        b->yy_buf_size *= 2;
1453
 
1454
                                b->yy_ch_buf = (char *)
1455
                                        /* Include room in for 2 EOB chars. */
1456
                                        yyxrealloc( (void *) b->yy_ch_buf,
1457
                                                         b->yy_buf_size + 2 );
1458
                                }
1459
                        else
1460
                                /* Can't grow it, we don't own it. */
1461
                                b->yy_ch_buf = 0;
1462
 
1463
                        if ( ! b->yy_ch_buf )
1464
                                YY_FATAL_ERROR(
1465
                                "fatal error - scanner input buffer overflow" );
1466
 
1467
                        yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset];
1468
 
1469
                        num_to_read = yy_current_buffer->yy_buf_size -
1470
                                                number_to_move - 1;
1471
#endif
1472
                        }
1473
 
1474
                if ( num_to_read > YY_READ_BUF_SIZE )
1475
                        num_to_read = YY_READ_BUF_SIZE;
1476
 
1477
                /* Read in more data. */
1478
                YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
1479
                        yy_n_chars, num_to_read );
1480
 
1481
                yy_current_buffer->yy_n_chars = yy_n_chars;
1482
                }
1483
 
1484
        if ( yy_n_chars == 0 )
1485
                {
1486
                if ( number_to_move == YY_MORE_ADJ )
1487
                        {
1488
                        ret_val = EOB_ACT_END_OF_FILE;
1489
                        yyrestart( yyin );
1490
                        }
1491
 
1492
                else
1493
                        {
1494
                        ret_val = EOB_ACT_LAST_MATCH;
1495
                        yy_current_buffer->yy_buffer_status =
1496
                                YY_BUFFER_EOF_PENDING;
1497
                        }
1498
                }
1499
 
1500
        else
1501
                ret_val = EOB_ACT_CONTINUE_SCAN;
1502
 
1503
        yy_n_chars += number_to_move;
1504
        yy_current_buffer->yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
1505
        yy_current_buffer->yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
1506
 
1507
        yytext_ptr = &yy_current_buffer->yy_ch_buf[0];
1508
 
1509
        return ret_val;
1510
        }
1511
 
1512
 
1513
/* yy_get_previous_state - get the state just before the EOB char was reached */
1514
 
1515
static yy_state_type yy_get_previous_state()
1516
        {
1517
        register yy_state_type yy_current_state;
1518
        register char *yy_cp;
1519
 
1520
        yy_current_state = yy_start;
1521
 
1522
        for ( yy_cp = yytext_ptr + YY_MORE_ADJ; yy_cp < yy_c_buf_p; ++yy_cp )
1523
                {
1524
                register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1);
1525
                if ( yy_accept[yy_current_state] )
1526
                        {
1527
                        yy_last_accepting_state = yy_current_state;
1528
                        yy_last_accepting_cpos = yy_cp;
1529
                        }
1530
                while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1531
                        {
1532
                        yy_current_state = (int) yy_def[yy_current_state];
1533
                        if ( yy_current_state >= 182 )
1534
                                yy_c = yy_meta[(unsigned int) yy_c];
1535
                        }
1536
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1537
                }
1538
 
1539
        return yy_current_state;
1540
        }
1541
 
1542
 
1543
/* yy_try_NUL_trans - try to make a transition on the NUL character
1544
 *
1545
 * synopsis
1546
 *      next_state = yy_try_NUL_trans( current_state );
1547
 */
1548
 
1549
#ifdef YY_USE_PROTOS
1550
static yy_state_type yy_try_NUL_trans( yy_state_type yy_current_state )
1551
#else
1552
static yy_state_type yy_try_NUL_trans( yy_current_state )
1553
yy_state_type yy_current_state;
1554
#endif
1555
        {
1556
        register int yy_is_jam;
1557
        register char *yy_cp = yy_c_buf_p;
1558
 
1559
        register YY_CHAR yy_c = 1;
1560
        if ( yy_accept[yy_current_state] )
1561
                {
1562
                yy_last_accepting_state = yy_current_state;
1563
                yy_last_accepting_cpos = yy_cp;
1564
                }
1565
        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
1566
                {
1567
                yy_current_state = (int) yy_def[yy_current_state];
1568
                if ( yy_current_state >= 182 )
1569
                        yy_c = yy_meta[(unsigned int) yy_c];
1570
                }
1571
        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
1572
        yy_is_jam = (yy_current_state == 181);
1573
 
1574
        return yy_is_jam ? 0 : yy_current_state;
1575
        }
1576
 
1577
 
1578
#ifndef YY_NO_UNPUT
1579
#ifdef YY_USE_PROTOS
1580
static void yyunput( int c, register char *yy_bp )
1581
#else
1582
static void yyunput( c, yy_bp )
1583
int c;
1584
register char *yy_bp;
1585
#endif
1586
        {
1587
        register char *yy_cp = yy_c_buf_p;
1588
 
1589
        /* undo effects of setting up yytext */
1590
        *yy_cp = yy_hold_char;
1591
 
1592
        if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
1593
                { /* need to shift things up to make room */
1594
                /* +2 for EOB chars. */
1595
                register int number_to_move = yy_n_chars + 2;
1596
                register char *dest = &yy_current_buffer->yy_ch_buf[
1597
                                        yy_current_buffer->yy_buf_size + 2];
1598
                register char *source =
1599
                                &yy_current_buffer->yy_ch_buf[number_to_move];
1600
 
1601
                while ( source > yy_current_buffer->yy_ch_buf )
1602
                        *--dest = *--source;
1603
 
1604
                yy_cp += (int) (dest - source);
1605
                yy_bp += (int) (dest - source);
1606
                yy_current_buffer->yy_n_chars =
1607
                        yy_n_chars = yy_current_buffer->yy_buf_size;
1608
 
1609
                if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
1610
                        YY_FATAL_ERROR( "flex scanner push-back overflow" );
1611
                }
1612
 
1613
        *--yy_cp = (char) c;
1614
 
1615
 
1616
        yytext_ptr = yy_bp;
1617
        yy_hold_char = *yy_cp;
1618
        yy_c_buf_p = yy_cp;
1619
        }
1620
#endif  /* ifndef YY_NO_UNPUT */
1621
 
1622
 
1623
#ifndef YY_NO_INPUT
1624
#ifdef __cplusplus
1625
static int yyinput()
1626
#else
1627
static int input()
1628
#endif
1629
        {
1630
        int c;
1631
 
1632
        *yy_c_buf_p = yy_hold_char;
1633
 
1634
        if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
1635
                {
1636
                /* yy_c_buf_p now points to the character we want to return.
1637
                 * If this occurs *before* the EOB characters, then it's a
1638
                 * valid NUL; if not, then we've hit the end of the buffer.
1639
                 */
1640
                if ( yy_c_buf_p < &yy_current_buffer->yy_ch_buf[yy_n_chars] )
1641
                        /* This was really a NUL. */
1642
                        *yy_c_buf_p = '\0';
1643
 
1644
                else
1645
                        { /* need more input */
1646
                        int offset = yy_c_buf_p - yytext_ptr;
1647
                        ++yy_c_buf_p;
1648
 
1649
                        switch ( yy_get_next_buffer() )
1650
                                {
1651
                                case EOB_ACT_LAST_MATCH:
1652
                                        /* This happens because yy_g_n_b()
1653
                                         * sees that we've accumulated a
1654
                                         * token and flags that we need to
1655
                                         * try matching the token before
1656
                                         * proceeding.  But for input(),
1657
                                         * there's no matching to consider.
1658
                                         * So convert the EOB_ACT_LAST_MATCH
1659
                                         * to EOB_ACT_END_OF_FILE.
1660
                                         */
1661
 
1662
                                        /* Reset buffer status. */
1663
                                        yyrestart( yyin );
1664
 
1665
                                        /* fall through */
1666
 
1667
                                case EOB_ACT_END_OF_FILE:
1668
                                        {
1669
                                        if ( yywrap() )
1670
                                                return EOF;
1671
 
1672
                                        if ( ! yy_did_buffer_switch_on_eof )
1673
                                                YY_NEW_FILE;
1674
#ifdef __cplusplus
1675
                                        return yyinput();
1676
#else
1677
                                        return input();
1678
#endif
1679
                                        }
1680
 
1681
                                case EOB_ACT_CONTINUE_SCAN:
1682
                                        yy_c_buf_p = yytext_ptr + offset;
1683
                                        break;
1684
                                }
1685
                        }
1686
                }
1687
 
1688
        c = *(unsigned char *) yy_c_buf_p;      /* cast for 8-bit char's */
1689
        *yy_c_buf_p = '\0';     /* preserve yytext */
1690
        yy_hold_char = *++yy_c_buf_p;
1691
 
1692
 
1693
        return c;
1694
        }
1695
#endif /* YY_NO_INPUT */
1696
 
1697
#ifdef YY_USE_PROTOS
1698
void yyrestart( FILE *input_file )
1699
#else
1700
void yyrestart( input_file )
1701
FILE *input_file;
1702
#endif
1703
        {
1704
        if ( ! yy_current_buffer )
1705
                yy_current_buffer = yy_create_buffer( yyin, YY_BUF_SIZE );
1706
 
1707
        yy_init_buffer( yy_current_buffer, input_file );
1708
        yy_load_buffer_state();
1709
        }
1710
 
1711
 
1712
#ifdef YY_USE_PROTOS
1713
void yy_switch_to_buffer( YY_BUFFER_STATE new_buffer )
1714
#else
1715
void yy_switch_to_buffer( new_buffer )
1716
YY_BUFFER_STATE new_buffer;
1717
#endif
1718
        {
1719
        if ( yy_current_buffer == new_buffer )
1720
                return;
1721
 
1722
        if ( yy_current_buffer )
1723
                {
1724
                /* Flush out information for old buffer. */
1725
                *yy_c_buf_p = yy_hold_char;
1726
                yy_current_buffer->yy_buf_pos = yy_c_buf_p;
1727
                yy_current_buffer->yy_n_chars = yy_n_chars;
1728
                }
1729
 
1730
        yy_current_buffer = new_buffer;
1731
        yy_load_buffer_state();
1732
 
1733
        /* We don't actually know whether we did this switch during
1734
         * EOF (yywrap()) processing, but the only time this flag
1735
         * is looked at is after yywrap() is called, so it's safe
1736
         * to go ahead and always set it.
1737
         */
1738
        yy_did_buffer_switch_on_eof = 1;
1739
        }
1740
 
1741
 
1742
#ifdef YY_USE_PROTOS
1743
void yy_load_buffer_state( void )
1744
#else
1745
void yy_load_buffer_state()
1746
#endif
1747
        {
1748
        yy_n_chars = yy_current_buffer->yy_n_chars;
1749
        yytext_ptr = yy_c_buf_p = yy_current_buffer->yy_buf_pos;
1750
        yyin = yy_current_buffer->yy_input_file;
1751
        yy_hold_char = *yy_c_buf_p;
1752
        }
1753
 
1754
 
1755
#ifdef YY_USE_PROTOS
1756
YY_BUFFER_STATE yy_create_buffer( FILE *file, int size )
1757
#else
1758
YY_BUFFER_STATE yy_create_buffer( file, size )
1759
FILE *file;
1760
int size;
1761
#endif
1762
        {
1763
        YY_BUFFER_STATE b;
1764
 
1765
        b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
1766
        if ( ! b )
1767
                YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
1768
 
1769
        b->yy_buf_size = size;
1770
 
1771
        /* yy_ch_buf has to be 2 characters longer than the size given because
1772
         * we need to put in 2 end-of-buffer characters.
1773
         */
1774
        b->yy_ch_buf = (char *) yy_flex_alloc( b->yy_buf_size + 2 );
1775
        if ( ! b->yy_ch_buf )
1776
                YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" );
1777
 
1778
        b->yy_is_our_buffer = 1;
1779
 
1780
        yy_init_buffer( b, file );
1781
 
1782
        return b;
1783
        }
1784
 
1785
 
1786
#ifdef YY_USE_PROTOS
1787
void yy_delete_buffer( YY_BUFFER_STATE b )
1788
#else
1789
void yy_delete_buffer( b )
1790
YY_BUFFER_STATE b;
1791
#endif
1792
        {
1793
        if ( ! b )
1794
                return;
1795
 
1796
        if ( b == yy_current_buffer )
1797
                yy_current_buffer = (YY_BUFFER_STATE) 0;
1798
 
1799
        if ( b->yy_is_our_buffer )
1800
                yy_flex_free( (void *) b->yy_ch_buf );
1801
 
1802
        yy_flex_free( (void *) b );
1803
        }
1804
 
1805
 
1806
 
1807
#ifdef YY_USE_PROTOS
1808
void yy_init_buffer( YY_BUFFER_STATE b, FILE *file )
1809
#else
1810
void yy_init_buffer( b, file )
1811
YY_BUFFER_STATE b;
1812
FILE *file;
1813
#endif
1814
 
1815
 
1816
        {
1817
        yy_flush_buffer( b );
1818
 
1819
        b->yy_input_file = file;
1820
        b->yy_fill_buffer = 1;
1821
 
1822
#if YY_ALWAYS_INTERACTIVE
1823
        b->yy_is_interactive = 1;
1824
#else
1825
#if YY_NEVER_INTERACTIVE
1826
        b->yy_is_interactive = 0;
1827
#else
1828
        b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0;
1829
#endif
1830
#endif
1831
        }
1832
 
1833
 
1834
#ifdef YY_USE_PROTOS
1835
void yy_flush_buffer( YY_BUFFER_STATE b )
1836
#else
1837
void yy_flush_buffer( b )
1838
YY_BUFFER_STATE b;
1839
#endif
1840
 
1841
        {
1842
        if ( ! b )
1843
                return;
1844
 
1845
        b->yy_n_chars = 0;
1846
 
1847
        /* We always need two end-of-buffer characters.  The first causes
1848
         * a transition to the end-of-buffer state.  The second causes
1849
         * a jam in that state.
1850
         */
1851
        b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR;
1852
        b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR;
1853
 
1854
        b->yy_buf_pos = &b->yy_ch_buf[0];
1855
 
1856
        b->yy_at_bol = 1;
1857
        b->yy_buffer_status = YY_BUFFER_NEW;
1858
 
1859
        if ( b == yy_current_buffer )
1860
                yy_load_buffer_state();
1861
        }
1862
 
1863
 
1864
#ifndef YY_NO_SCAN_BUFFER
1865
#ifdef YY_USE_PROTOS
1866
YY_BUFFER_STATE yy_scan_buffer( char *base, yy_size_t size )
1867
#else
1868
YY_BUFFER_STATE yy_scan_buffer( base, size )
1869
char *base;
1870
yy_size_t size;
1871
#endif
1872
        {
1873
        YY_BUFFER_STATE b;
1874
 
1875
        if ( size < 2 ||
1876
             base[size-2] != YY_END_OF_BUFFER_CHAR ||
1877
             base[size-1] != YY_END_OF_BUFFER_CHAR )
1878
                /* They forgot to leave room for the EOB's. */
1879
                return 0;
1880
 
1881
        b = (YY_BUFFER_STATE) yy_flex_alloc( sizeof( struct yy_buffer_state ) );
1882
        if ( ! b )
1883
                YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" );
1884
 
1885
        b->yy_buf_size = size - 2;      /* "- 2" to take care of EOB's */
1886
        b->yy_buf_pos = b->yy_ch_buf = base;
1887
        b->yy_is_our_buffer = 0;
1888
        b->yy_input_file = 0;
1889
        b->yy_n_chars = b->yy_buf_size;
1890
        b->yy_is_interactive = 0;
1891
        b->yy_at_bol = 1;
1892
        b->yy_fill_buffer = 0;
1893
        b->yy_buffer_status = YY_BUFFER_NEW;
1894
 
1895
        yy_switch_to_buffer( b );
1896
 
1897
        return b;
1898
        }
1899
#endif
1900
 
1901
 
1902
#ifndef YY_NO_SCAN_STRING
1903
#ifdef YY_USE_PROTOS
1904
YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
1905
#else
1906
YY_BUFFER_STATE yy_scan_string( yy_str )
1907
yyconst char *yy_str;
1908
#endif
1909
        {
1910
        int len;
1911
        for ( len = 0; yy_str[len]; ++len )
1912
                ;
1913
 
1914
        return yy_scan_bytes( yy_str, len );
1915
        }
1916
#endif
1917
 
1918
 
1919
#ifndef YY_NO_SCAN_BYTES
1920
#ifdef YY_USE_PROTOS
1921
YY_BUFFER_STATE yy_scan_bytes( yyconst char *bytes, int len )
1922
#else
1923
YY_BUFFER_STATE yy_scan_bytes( bytes, len )
1924
yyconst char *bytes;
1925
int len;
1926
#endif
1927
        {
1928
        YY_BUFFER_STATE b;
1929
        char *buf;
1930
        yy_size_t n;
1931
        int i;
1932
 
1933
        /* Get memory for full buffer, including space for trailing EOB's. */
1934
        n = len + 2;
1935
        buf = (char *) yy_flex_alloc( n );
1936
        if ( ! buf )
1937
                YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" );
1938
 
1939
        for ( i = 0; i < len; ++i )
1940
                buf[i] = bytes[i];
1941
 
1942
        buf[len] = buf[len+1] = YY_END_OF_BUFFER_CHAR;
1943
 
1944
        b = yy_scan_buffer( buf, n );
1945
        if ( ! b )
1946
                YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" );
1947
 
1948
        /* It's okay to grow etc. this buffer, and we should throw it
1949
         * away when we're done.
1950
         */
1951
        b->yy_is_our_buffer = 1;
1952
 
1953
        return b;
1954
        }
1955
#endif
1956
 
1957
 
1958
#ifndef YY_NO_PUSH_STATE
1959
#ifdef YY_USE_PROTOS
1960
static void yy_push_state( int new_state )
1961
#else
1962
static void yy_push_state( new_state )
1963
int new_state;
1964
#endif
1965
        {
1966
        if ( yy_start_stack_ptr >= yy_start_stack_depth )
1967
                {
1968
                yy_size_t new_size;
1969
 
1970
                yy_start_stack_depth += YY_START_STACK_INCR;
1971
                new_size = yy_start_stack_depth * sizeof( int );
1972
 
1973
                if ( ! yy_start_stack )
1974
                        yy_start_stack = (int *) yy_flex_alloc( new_size );
1975
 
1976
                else
1977
                        yy_start_stack = (int *) yyxrealloc(
1978
                                        (void *) yy_start_stack, new_size );
1979
 
1980
                if ( ! yy_start_stack )
1981
                        YY_FATAL_ERROR(
1982
                        "out of memory expanding start-condition stack" );
1983
                }
1984
 
1985
        yy_start_stack[yy_start_stack_ptr++] = YY_START;
1986
 
1987
        BEGIN(new_state);
1988
        }
1989
#endif
1990
 
1991
 
1992
#ifndef YY_NO_POP_STATE
1993
static void yy_pop_state()
1994
        {
1995
        if ( --yy_start_stack_ptr < 0 )
1996
                YY_FATAL_ERROR( "start-condition stack underflow" );
1997
 
1998
        BEGIN(yy_start_stack[yy_start_stack_ptr]);
1999
        }
2000
#endif
2001
 
2002
 
2003
#ifndef YY_NO_TOP_STATE
2004
static int yy_top_state()
2005
        {
2006
        return yy_start_stack[yy_start_stack_ptr - 1];
2007
        }
2008
#endif
2009
 
2010
#ifndef YY_EXIT_FAILURE
2011
#define YY_EXIT_FAILURE 2
2012
#endif
2013
 
2014
#ifdef YY_USE_PROTOS
2015
static void yy_fatal_error( yyconst char msg[] )
2016
#else
2017
static void yy_fatal_error( msg )
2018
char msg[];
2019
#endif
2020
        {
2021
        (void) fprintf( stderr, "%s\n", msg );
2022
        exit( YY_EXIT_FAILURE );
2023
        }
2024
 
2025
 
2026
 
2027
/* Redefine yyless() so it works in section 3 code. */
2028
 
2029
#undef yyless
2030
#define yyless(n) \
2031
        do \
2032
                { \
2033
                /* Undo effects of setting up yytext. */ \
2034
                yytext[yyleng] = yy_hold_char; \
2035
                yy_c_buf_p = yytext + n; \
2036
                yy_hold_char = *yy_c_buf_p; \
2037
                *yy_c_buf_p = '\0'; \
2038
                yyleng = n; \
2039
                } \
2040
        while ( 0 )
2041
 
2042
 
2043
/* Internal utility routines. */
2044
 
2045
#ifndef yytext_ptr
2046
#ifdef YY_USE_PROTOS
2047
static void yy_flex_strncpy( char *s1, yyconst char *s2, int n )
2048
#else
2049
static void yy_flex_strncpy( s1, s2, n )
2050
char *s1;
2051
yyconst char *s2;
2052
int n;
2053
#endif
2054
        {
2055
        register int i;
2056
        for ( i = 0; i < n; ++i )
2057
                s1[i] = s2[i];
2058
        }
2059
#endif
2060
 
2061
#ifdef YY_NEED_STRLEN
2062
#ifdef YY_USE_PROTOS
2063
static int yy_flex_strlen( yyconst char *s )
2064
#else
2065
static int yy_flex_strlen( s )
2066
yyconst char *s;
2067
#endif
2068
        {
2069
        register int n;
2070
        for ( n = 0; s[n]; ++n )
2071
                ;
2072
 
2073
        return n;
2074
        }
2075
#endif
2076
 
2077
 
2078
#ifdef YY_USE_PROTOS
2079
static void *yy_flex_alloc( yy_size_t size )
2080
#else
2081
static void *yy_flex_alloc( size )
2082
yy_size_t size;
2083
#endif
2084
        {
2085
        return (void *) xmalloc( size );
2086
        }
2087
 
2088
#ifdef YY_USE_PROTOS
2089
static void *yyxrealloc( void *ptr, yy_size_t size )
2090
#else
2091
static void *yyxrealloc( ptr, size )
2092
void *ptr;
2093
yy_size_t size;
2094
#endif
2095
        {
2096
        /* The cast to (char *) in the following accommodates both
2097
         * implementations that use char* generic pointers, and those
2098
         * that use void* generic pointers.  It works with the latter
2099
         * because both ANSI C and C++ allow castless assignment from
2100
         * any pointer type to void*, and deal with argument conversions
2101
         * as though doing an assignment.
2102
         */
2103
        return (void *) xrealloc( (char *) ptr, size );
2104
        }
2105
 
2106
#ifdef YY_USE_PROTOS
2107
static void yy_flex_free( void *ptr )
2108
#else
2109
static void yy_flex_free( ptr )
2110
void *ptr;
2111
#endif
2112
        {
2113
        free( ptr );
2114
        }
2115
 
2116
#if YY_MAIN
2117
int main()
2118
        {
2119
        yylex();
2120
        return 0;
2121
        }
2122
#endif
2123
#line 268 "ada-lex.l"
2124
 
2125
 
2126
#include <ctype.h>
2127
#include "gdb_string.h"
2128
 
2129
/* Initialize the lexer for processing new expression. */
2130
 
2131
void
2132
lexer_init (FILE *inp)
2133
{
2134
  BEGIN INITIAL;
2135
  yyrestart (inp);
2136
}
2137
 
2138
 
2139
/* Copy S2 to S1, removing all underscores, and downcasing all letters.  */
2140
 
2141
static void
2142
canonicalizeNumeral (char *s1, const char *s2)
2143
{
2144
  for (; *s2 != '\000'; s2 += 1)
2145
    {
2146
      if (*s2 != '_')
2147
        {
2148
          *s1 = tolower(*s2);
2149
          s1 += 1;
2150
        }
2151
    }
2152
  s1[0] = '\000';
2153
}
2154
 
2155
/* Interprets the prefix of NUM that consists of digits of the given BASE
2156
   as an integer of that BASE, with the string EXP as an exponent.
2157
   Puts value in yylval, and returns INT, if the string is valid.  Causes
2158
   an error if the number is improperly formated.   BASE, if NULL, defaults
2159
   to "10", and EXP to "1".  The EXP does not contain a leading 'e' or 'E'.
2160
 */
2161
 
2162
static int
2163
processInt (const char *base0, const char *num0, const char *exp0)
2164
{
2165
  ULONGEST result;
2166
  long exp;
2167
  int base;
2168
 
2169
  char *trailer;
2170
 
2171
  if (base0 == NULL)
2172
    base = 10;
2173
  else
2174
    {
2175
      base = strtol (base0, (char **) NULL, 10);
2176
      if (base < 2 || base > 16)
2177
        error (_("Invalid base: %d."), base);
2178
    }
2179
 
2180
  if (exp0 == NULL)
2181
    exp = 0;
2182
  else
2183
    exp = strtol(exp0, (char **) NULL, 10);
2184
 
2185
  errno = 0;
2186
  result = strtoulst (num0, (const char **) &trailer, base);
2187
  if (errno == ERANGE)
2188
    error (_("Integer literal out of range"));
2189
  if (isxdigit(*trailer))
2190
    error (_("Invalid digit `%c' in based literal"), *trailer);
2191
 
2192
  while (exp > 0)
2193
    {
2194
      if (result > (ULONG_MAX / base))
2195
        error (_("Integer literal out of range"));
2196
      result *= base;
2197
      exp -= 1;
2198
    }
2199
 
2200
  if ((result >> (gdbarch_int_bit (current_gdbarch)-1)) == 0)
2201
    yylval.typed_val.type = type_int ();
2202
  else if ((result >> (gdbarch_long_bit (current_gdbarch)-1)) == 0)
2203
    yylval.typed_val.type = type_long ();
2204
  else if (((result >> (gdbarch_long_bit (current_gdbarch)-1)) >> 1) == 0)
2205
    {
2206
      /* We have a number representable as an unsigned integer quantity.
2207
         For consistency with the C treatment, we will treat it as an
2208
         anonymous modular (unsigned) quantity.  Alas, the types are such
2209
         that we need to store .val as a signed quantity.  Sorry
2210
         for the mess, but C doesn't officially guarantee that a simple
2211
         assignment does the trick (no, it doesn't; read the reference manual).
2212
       */
2213
      yylval.typed_val.type = builtin_type_unsigned_long;
2214
      if (result & LONGEST_SIGN)
2215
        yylval.typed_val.val =
2216
          (LONGEST) (result & ~LONGEST_SIGN)
2217
          - (LONGEST_SIGN>>1) - (LONGEST_SIGN>>1);
2218
      else
2219
        yylval.typed_val.val = (LONGEST) result;
2220
      return INT;
2221
    }
2222
  else
2223
    yylval.typed_val.type = type_long_long ();
2224
 
2225
  yylval.typed_val.val = (LONGEST) result;
2226
  return INT;
2227
}
2228
 
2229
static int
2230
processReal (const char *num0)
2231
{
2232
  sscanf (num0, "%" DOUBLEST_SCAN_FORMAT, &yylval.typed_val_float.dval);
2233
 
2234
  yylval.typed_val_float.type = type_float ();
2235
  if (sizeof(DOUBLEST) >= gdbarch_double_bit (current_gdbarch)
2236
                            / TARGET_CHAR_BIT)
2237
    yylval.typed_val_float.type = type_double ();
2238
  if (sizeof(DOUBLEST) >= gdbarch_long_double_bit (current_gdbarch)
2239
                            / TARGET_CHAR_BIT)
2240
    yylval.typed_val_float.type = type_long_double ();
2241
 
2242
  return FLOAT;
2243
}
2244
 
2245
 
2246
/* Store a canonicalized version of NAME0[0..LEN-1] in yylval.ssym.  The
2247
   resulting string is valid until the next call to ada_parse.  It differs
2248
   from NAME0 in that:
2249
    + Characters between '...' or <...> are transfered verbatim to
2250
      yylval.ssym.
2251
    + <, >, and trailing "'" characters in quoted sequences are removed
2252
      (a leading quote is preserved to indicate that the name is not to be
2253
      GNAT-encoded).
2254
    + Unquoted whitespace is removed.
2255
    + Unquoted alphabetic characters are mapped to lower case.
2256
   Result is returned as a struct stoken, but for convenience, the string
2257
   is also null-terminated.  Result string valid until the next call of
2258
   ada_parse.
2259
 */
2260
static struct stoken
2261
processId (const char *name0, int len)
2262
{
2263
  char *name = obstack_alloc (&temp_parse_space, len + 11);
2264
  int i0, i;
2265
  struct stoken result;
2266
 
2267
  while (len > 0 && isspace (name0[len-1]))
2268
    len -= 1;
2269
  i = i0 = 0;
2270
  while (i0 < len)
2271
    {
2272
      if (isalnum (name0[i0]))
2273
        {
2274
          name[i] = tolower (name0[i0]);
2275
          i += 1; i0 += 1;
2276
        }
2277
      else switch (name0[i0])
2278
        {
2279
        default:
2280
          name[i] = name0[i0];
2281
          i += 1; i0 += 1;
2282
          break;
2283
        case ' ': case '\t':
2284
          i0 += 1;
2285
          break;
2286
        case '\'':
2287
          do
2288
            {
2289
              name[i] = name0[i0];
2290
              i += 1; i0 += 1;
2291
            }
2292
          while (i0 < len && name0[i0] != '\'');
2293
          i0 += 1;
2294
          break;
2295
        case '<':
2296
          i0 += 1;
2297
          while (i0 < len && name0[i0] != '>')
2298
            {
2299
              name[i] = name0[i0];
2300
              i += 1; i0 += 1;
2301
            }
2302
          i0 += 1;
2303
          break;
2304
        }
2305
    }
2306
  name[i] = '\000';
2307
 
2308
  result.ptr = name;
2309
  result.length = i;
2310
  return result;
2311
}
2312
 
2313
/* Return TEXT[0..LEN-1], a string literal without surrounding quotes,
2314
   with special hex character notations replaced with characters.
2315
   Result valid until the next call to ada_parse.  */
2316
 
2317
static struct stoken
2318
processString (const char *text, int len)
2319
{
2320
  const char *p;
2321
  char *q;
2322
  const char *lim = text + len;
2323
  struct stoken result;
2324
 
2325
  q = result.ptr = obstack_alloc (&temp_parse_space, len);
2326
  p = text;
2327
  while (p < lim)
2328
    {
2329
      if (p[0] == '[' && p[1] == '"' && p+2 < lim)
2330
         {
2331
           if (p[2] == '"')  /* "...["""]... */
2332
             {
2333
               *q = '"';
2334
               p += 4;
2335
             }
2336
           else
2337
             {
2338
               int chr;
2339
               sscanf (p+2, "%2x", &chr);
2340
               *q = (char) chr;
2341
               p += 5;
2342
             }
2343
         }
2344
       else
2345
         *q = *p;
2346
       q += 1;
2347
       p += 1;
2348
     }
2349
  result.length = q - result.ptr;
2350
  return result;
2351
}
2352
 
2353
/* Returns the position within STR of the '.' in a
2354
   '.{WHITE}*all' component of a dotted name, or -1 if there is none.
2355
   Note: we actually don't need this routine, since 'all' can never be an
2356
   Ada identifier.  Thus, looking up foo.all or foo.all.x as a name
2357
   must fail, and will eventually be interpreted as (foo).all or
2358
   (foo).all.x.  However, this does avoid an extraneous lookup. */
2359
 
2360
static int
2361
find_dot_all (const char *str)
2362
{
2363
  int i;
2364
  for (i = 0; str[i] != '\000'; i += 1)
2365
    {
2366
      if (str[i] == '.')
2367
        {
2368
          int i0 = i;
2369
          do
2370
            i += 1;
2371
          while (isspace (str[i]));
2372
          if (strncmp (str+i, "all", 3) == 0
2373
              && ! isalnum (str[i+3]) && str[i+3] != '_')
2374
            return i0;
2375
        }
2376
    }
2377
  return -1;
2378
}
2379
 
2380
/* Returns non-zero iff string SUBSEQ matches a subsequence of STR, ignoring
2381
   case.  */
2382
 
2383
static int
2384
subseqMatch (const char *subseq, const char *str)
2385
{
2386
  if (subseq[0] == '\0')
2387
    return 1;
2388
  else if (str[0] == '\0')
2389
    return 0;
2390
  else if (tolower (subseq[0]) == tolower (str[0]))
2391
    return subseqMatch (subseq+1, str+1) || subseqMatch (subseq, str+1);
2392
  else
2393
    return subseqMatch (subseq, str+1);
2394
}
2395
 
2396
 
2397
static struct { const char *name; int code; }
2398
attributes[] = {
2399
  { "address", TICK_ADDRESS },
2400
  { "unchecked_access", TICK_ACCESS },
2401
  { "unrestricted_access", TICK_ACCESS },
2402
  { "access", TICK_ACCESS },
2403
  { "first", TICK_FIRST },
2404
  { "last", TICK_LAST },
2405
  { "length", TICK_LENGTH },
2406
  { "max", TICK_MAX },
2407
  { "min", TICK_MIN },
2408
  { "modulus", TICK_MODULUS },
2409
  { "pos", TICK_POS },
2410
  { "range", TICK_RANGE },
2411
  { "size", TICK_SIZE },
2412
  { "tag", TICK_TAG },
2413
  { "val", TICK_VAL },
2414
  { NULL, -1 }
2415
};
2416
 
2417
/* Return the syntactic code corresponding to the attribute name or
2418
   abbreviation STR.  */
2419
 
2420
static int
2421
processAttribute (const char *str)
2422
{
2423
  int i, k;
2424
 
2425
  for (i = 0; attributes[i].code != -1; i += 1)
2426
    if (strcasecmp (str, attributes[i].name) == 0)
2427
      return attributes[i].code;
2428
 
2429
  for (i = 0, k = -1; attributes[i].code != -1; i += 1)
2430
    if (subseqMatch (str, attributes[i].name))
2431
      {
2432
        if (k == -1)
2433
          k = i;
2434
        else
2435
          error (_("ambiguous attribute name: `%s'"), str);
2436
      }
2437
  if (k == -1)
2438
    error (_("unrecognized attribute: `%s'"), str);
2439
 
2440
  return attributes[k].code;
2441
}
2442
 
2443
int
2444
yywrap(void)
2445
{
2446
  return 1;
2447
}
2448
 
2449
/* Dummy definition to suppress warnings about unused static definitions. */
2450
typedef void (*dummy_function) ();
2451
dummy_function ada_flex_use[] =
2452
{
2453
  (dummy_function) yyunput
2454
};

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.