Upgrade GDB from 7.4.1 to 7.6.1 on the vendor branch
[dragonfly.git] / contrib / gdb-7 / gdb / ada-exp.c
1
2 /* A Bison parser, made by GNU Bison 2.4.1.  */
3
4 /* Skeleton implementation for Bison's Yacc-like parsers in C
5    
6       Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
7    Free Software Foundation, Inc.
8    
9    This program is free software: you can redistribute it and/or modify
10    it under the terms of the GNU General Public License as published by
11    the Free Software Foundation, either version 3 of the License, or
12    (at your option) any later version.
13    
14    This program is distributed in the hope that it will be useful,
15    but WITHOUT ANY WARRANTY; without even the implied warranty of
16    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17    GNU General Public License for more details.
18    
19    You should have received a copy of the GNU General Public License
20    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
21
22 /* As a special exception, you may create a larger work that contains
23    part or all of the Bison parser skeleton and distribute that work
24    under terms of your choice, so long as that work isn't itself a
25    parser generator using the skeleton or a modified version thereof
26    as a parser skeleton.  Alternatively, if you modify or redistribute
27    the parser skeleton itself, you may (at your option) remove this
28    special exception, which will cause the skeleton and the resulting
29    Bison output files to be licensed under the GNU General Public
30    License without this special exception.
31    
32    This special exception was added by the Free Software Foundation in
33    version 2.2 of Bison.  */
34
35 /* C LALR(1) parser skeleton written by Richard Stallman, by
36    simplifying the original so-called "semantic" parser.  */
37
38 /* All symbols defined below should begin with yy or YY, to avoid
39    infringing on user name space.  This should be done even for local
40    variables, as they might otherwise be expanded by user macros.
41    There are some unavoidable exceptions within include files to
42    define necessary library symbols; they are noted "INFRINGES ON
43    USER NAME SPACE" below.  */
44
45 /* Identify Bison output.  */
46 #define YYBISON 1
47
48 /* Bison version.  */
49 #define YYBISON_VERSION "2.4.1"
50
51 /* Skeleton name.  */
52 #define YYSKELETON_NAME "yacc.c"
53
54 /* Pure parsers.  */
55 #define YYPURE 0
56
57 /* Push parsers.  */
58 #define YYPUSH 0
59
60 /* Pull parsers.  */
61 #define YYPULL 1
62
63 /* Using locations.  */
64 #define YYLSP_NEEDED 0
65
66
67
68 /* Copy the first part of user declarations.  */
69
70 /* Line 189 of yacc.c  */
71 #line 36 "ada-exp.y"
72
73
74 #include "defs.h"
75 #include "gdb_string.h"
76 #include <ctype.h>
77 #include "expression.h"
78 #include "value.h"
79 #include "parser-defs.h"
80 #include "language.h"
81 #include "ada-lang.h"
82 #include "bfd.h" /* Required by objfiles.h.  */
83 #include "symfile.h" /* Required by objfiles.h.  */
84 #include "objfiles.h" /* For have_full_symbols and have_partial_symbols */
85 #include "frame.h"
86 #include "block.h"
87
88 #define parse_type builtin_type (parse_gdbarch)
89
90 /* Remap normal yacc parser interface names (yyparse, yylex, yyerror, etc),
91    as well as gratuitiously global symbol names, so we can have multiple
92    yacc generated parsers in gdb.  These are only the variables
93    produced by yacc.  If other parser generators (bison, byacc, etc) produce
94    additional global names that conflict at link time, then those parser
95    generators need to be fixed instead of adding those names to this list.  */
96
97 /* NOTE: This is clumsy, especially since BISON and FLEX provide --prefix
98    options.  I presume we are maintaining it to accommodate systems
99    without BISON?  (PNH) */
100
101 #define yymaxdepth ada_maxdepth
102 #define yyparse _ada_parse      /* ada_parse calls this after  initialization */
103 #define yylex   ada_lex
104 #define yyerror ada_error
105 #define yylval  ada_lval
106 #define yychar  ada_char
107 #define yydebug ada_debug
108 #define yypact  ada_pact
109 #define yyr1    ada_r1
110 #define yyr2    ada_r2
111 #define yydef   ada_def
112 #define yychk   ada_chk
113 #define yypgo   ada_pgo
114 #define yyact   ada_act
115 #define yyexca  ada_exca
116 #define yyerrflag ada_errflag
117 #define yynerrs ada_nerrs
118 #define yyps    ada_ps
119 #define yypv    ada_pv
120 #define yys     ada_s
121 #define yy_yys  ada_yys
122 #define yystate ada_state
123 #define yytmp   ada_tmp
124 #define yyv     ada_v
125 #define yy_yyv  ada_yyv
126 #define yyval   ada_val
127 #define yylloc  ada_lloc
128 #define yyreds  ada_reds                /* With YYDEBUG defined */
129 #define yytoks  ada_toks                /* With YYDEBUG defined */
130 #define yyname  ada_name                /* With YYDEBUG defined */
131 #define yyrule  ada_rule                /* With YYDEBUG defined */
132 #define yyss    ada_yyss
133 #define yysslim ada_yysslim
134 #define yyssp   ada_yyssp
135 #define yystacksize ada_yystacksize
136 #define yyvs    ada_yyvs
137 #define yyvsp   ada_yyvsp
138
139 #ifndef YYDEBUG
140 #define YYDEBUG 1               /* Default to yydebug support */
141 #endif
142
143 #define YYFPRINTF parser_fprintf
144
145 struct name_info {
146   struct symbol *sym;
147   struct minimal_symbol *msym;
148   struct block *block;
149   struct stoken stoken;
150 };
151
152 static struct stoken empty_stoken = { "", 0 };
153
154 /* If expression is in the context of TYPE'(...), then TYPE, else
155  * NULL.  */
156 static struct type *type_qualifier;
157
158 int yyparse (void);
159
160 static int yylex (void);
161
162 void yyerror (char *);
163
164 static struct stoken string_to_operator (struct stoken);
165
166 static void write_int (LONGEST, struct type *);
167
168 static void write_object_renaming (const struct block *, const char *, int,
169                                    const char *, int);
170
171 static struct type* write_var_or_type (const struct block *, struct stoken);
172
173 static void write_name_assoc (struct stoken);
174
175 static void write_exp_op_with_string (enum exp_opcode, struct stoken);
176
177 static struct block *block_lookup (struct block *, char *);
178
179 static LONGEST convert_char_literal (struct type *, LONGEST);
180
181 static void write_ambiguous_var (const struct block *, char *, int);
182
183 static struct type *type_int (void);
184
185 static struct type *type_long (void);
186
187 static struct type *type_long_long (void);
188
189 static struct type *type_float (void);
190
191 static struct type *type_double (void);
192
193 static struct type *type_long_double (void);
194
195 static struct type *type_char (void);
196
197 static struct type *type_boolean (void);
198
199 static struct type *type_system_address (void);
200
201
202
203 /* Line 189 of yacc.c  */
204 #line 205 "ada-exp.c"
205
206 /* Enabling traces.  */
207 #ifndef YYDEBUG
208 # define YYDEBUG 0
209 #endif
210
211 /* Enabling verbose error messages.  */
212 #ifdef YYERROR_VERBOSE
213 # undef YYERROR_VERBOSE
214 # define YYERROR_VERBOSE 1
215 #else
216 # define YYERROR_VERBOSE 0
217 #endif
218
219 /* Enabling the token table.  */
220 #ifndef YYTOKEN_TABLE
221 # define YYTOKEN_TABLE 0
222 #endif
223
224
225 /* Tokens.  */
226 #ifndef YYTOKENTYPE
227 # define YYTOKENTYPE
228    /* Put the tokens into the symbol table, so that GDB and other debuggers
229       know about them.  */
230    enum yytokentype {
231      INT = 258,
232      NULL_PTR = 259,
233      CHARLIT = 260,
234      FLOAT = 261,
235      TRUEKEYWORD = 262,
236      FALSEKEYWORD = 263,
237      COLONCOLON = 264,
238      STRING = 265,
239      NAME = 266,
240      DOT_ID = 267,
241      DOT_ALL = 268,
242      SPECIAL_VARIABLE = 269,
243      ASSIGN = 270,
244      ELSE = 271,
245      THEN = 272,
246      XOR = 273,
247      OR = 274,
248      _AND_ = 275,
249      DOTDOT = 276,
250      IN = 277,
251      GEQ = 278,
252      LEQ = 279,
253      NOTEQUAL = 280,
254      UNARY = 281,
255      REM = 282,
256      MOD = 283,
257      NOT = 284,
258      ABS = 285,
259      STARSTAR = 286,
260      VAR = 287,
261      ARROW = 288,
262      TICK_LENGTH = 289,
263      TICK_LAST = 290,
264      TICK_FIRST = 291,
265      TICK_ADDRESS = 292,
266      TICK_ACCESS = 293,
267      TICK_MODULUS = 294,
268      TICK_MIN = 295,
269      TICK_MAX = 296,
270      TICK_VAL = 297,
271      TICK_TAG = 298,
272      TICK_SIZE = 299,
273      TICK_RANGE = 300,
274      TICK_POS = 301,
275      NEW = 302,
276      OTHERS = 303
277    };
278 #endif
279 /* Tokens.  */
280 #define INT 258
281 #define NULL_PTR 259
282 #define CHARLIT 260
283 #define FLOAT 261
284 #define TRUEKEYWORD 262
285 #define FALSEKEYWORD 263
286 #define COLONCOLON 264
287 #define STRING 265
288 #define NAME 266
289 #define DOT_ID 267
290 #define DOT_ALL 268
291 #define SPECIAL_VARIABLE 269
292 #define ASSIGN 270
293 #define ELSE 271
294 #define THEN 272
295 #define XOR 273
296 #define OR 274
297 #define _AND_ 275
298 #define DOTDOT 276
299 #define IN 277
300 #define GEQ 278
301 #define LEQ 279
302 #define NOTEQUAL 280
303 #define UNARY 281
304 #define REM 282
305 #define MOD 283
306 #define NOT 284
307 #define ABS 285
308 #define STARSTAR 286
309 #define VAR 287
310 #define ARROW 288
311 #define TICK_LENGTH 289
312 #define TICK_LAST 290
313 #define TICK_FIRST 291
314 #define TICK_ADDRESS 292
315 #define TICK_ACCESS 293
316 #define TICK_MODULUS 294
317 #define TICK_MIN 295
318 #define TICK_MAX 296
319 #define TICK_VAL 297
320 #define TICK_TAG 298
321 #define TICK_SIZE 299
322 #define TICK_RANGE 300
323 #define TICK_POS 301
324 #define NEW 302
325 #define OTHERS 303
326
327
328
329
330 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
331 typedef union YYSTYPE
332 {
333
334 /* Line 214 of yacc.c  */
335 #line 168 "ada-exp.y"
336
337     LONGEST lval;
338     struct {
339       LONGEST val;
340       struct type *type;
341     } typed_val;
342     struct {
343       DOUBLEST dval;
344       struct type *type;
345     } typed_val_float;
346     struct type *tval;
347     struct stoken sval;
348     struct block *bval;
349     struct internalvar *ivar;
350   
351
352
353 /* Line 214 of yacc.c  */
354 #line 355 "ada-exp.c"
355 } YYSTYPE;
356 # define YYSTYPE_IS_TRIVIAL 1
357 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
358 # define YYSTYPE_IS_DECLARED 1
359 #endif
360
361
362 /* Copy the second part of user declarations.  */
363
364
365 /* Line 264 of yacc.c  */
366 #line 367 "ada-exp.c"
367
368 #ifdef short
369 # undef short
370 #endif
371
372 #ifdef YYTYPE_UINT8
373 typedef YYTYPE_UINT8 yytype_uint8;
374 #else
375 typedef unsigned char yytype_uint8;
376 #endif
377
378 #ifdef YYTYPE_INT8
379 typedef YYTYPE_INT8 yytype_int8;
380 #elif (defined __STDC__ || defined __C99__FUNC__ \
381      || defined __cplusplus || defined _MSC_VER)
382 typedef signed char yytype_int8;
383 #else
384 typedef short int yytype_int8;
385 #endif
386
387 #ifdef YYTYPE_UINT16
388 typedef YYTYPE_UINT16 yytype_uint16;
389 #else
390 typedef unsigned short int yytype_uint16;
391 #endif
392
393 #ifdef YYTYPE_INT16
394 typedef YYTYPE_INT16 yytype_int16;
395 #else
396 typedef short int yytype_int16;
397 #endif
398
399 #ifndef YYSIZE_T
400 # ifdef __SIZE_TYPE__
401 #  define YYSIZE_T __SIZE_TYPE__
402 # elif defined size_t
403 #  define YYSIZE_T size_t
404 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
405      || defined __cplusplus || defined _MSC_VER)
406 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
407 #  define YYSIZE_T size_t
408 # else
409 #  define YYSIZE_T unsigned int
410 # endif
411 #endif
412
413 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
414
415 #ifndef YY_
416 # if YYENABLE_NLS
417 #  if ENABLE_NLS
418 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
419 #   define YY_(msgid) dgettext ("bison-runtime", msgid)
420 #  endif
421 # endif
422 # ifndef YY_
423 #  define YY_(msgid) msgid
424 # endif
425 #endif
426
427 /* Suppress unused-variable warnings by "using" E.  */
428 #if ! defined lint || defined __GNUC__
429 # define YYUSE(e) ((void) (e))
430 #else
431 # define YYUSE(e) /* empty */
432 #endif
433
434 /* Identity function, used to suppress warnings about constant conditions.  */
435 #ifndef lint
436 # define YYID(n) (n)
437 #else
438 #if (defined __STDC__ || defined __C99__FUNC__ \
439      || defined __cplusplus || defined _MSC_VER)
440 static int
441 YYID (int yyi)
442 #else
443 static int
444 YYID (yyi)
445     int yyi;
446 #endif
447 {
448   return yyi;
449 }
450 #endif
451
452 #if ! defined yyoverflow || YYERROR_VERBOSE
453
454 /* The parser invokes alloca or xmalloc; define the necessary symbols.  */
455
456 # ifdef YYSTACK_USE_ALLOCA
457 #  if YYSTACK_USE_ALLOCA
458 #   ifdef __GNUC__
459 #    define YYSTACK_ALLOC __builtin_alloca
460 #   elif defined __BUILTIN_VA_ARG_INCR
461 #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
462 #   elif defined _AIX
463 #    define YYSTACK_ALLOC __alloca
464 #   elif defined _MSC_VER
465 #    define alloca _alloca
466 #   else
467 #    define YYSTACK_ALLOC alloca
468 #    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
469      || defined __cplusplus || defined _MSC_VER)
470 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
471 #     ifndef _STDLIB_H
472 #      define _STDLIB_H 1
473 #     endif
474 #    endif
475 #   endif
476 #  endif
477 # endif
478
479 # ifdef YYSTACK_ALLOC
480    /* Pacify GCC's `empty if-body' warning.  */
481 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
482 #  ifndef YYSTACK_ALLOC_MAXIMUM
483     /* The OS might guarantee only one guard page at the bottom of the stack,
484        and a page size can be as small as 4096 bytes.  So we cannot safely
485        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
486        to allow for a few compiler-allocated temporary stack slots.  */
487 #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
488 #  endif
489 # else
490 #  define YYSTACK_ALLOC YYMALLOC
491 #  define YYSTACK_FREE YYFREE
492 #  ifndef YYSTACK_ALLOC_MAXIMUM
493 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
494 #  endif
495 #  if (defined __cplusplus && ! defined _STDLIB_H \
496        && ! ((defined YYMALLOC || defined xmalloc) \
497              && (defined YYFREE || defined xfree)))
498 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
499 #   ifndef _STDLIB_H
500 #    define _STDLIB_H 1
501 #   endif
502 #  endif
503 #  ifndef YYMALLOC
504 #   define YYMALLOC xmalloc
505 #   if ! defined xmalloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
506      || defined __cplusplus || defined _MSC_VER)
507 void *xmalloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
508 #   endif
509 #  endif
510 #  ifndef YYFREE
511 #   define YYFREE xfree
512 #   if ! defined xfree && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
513      || defined __cplusplus || defined _MSC_VER)
514 void xfree (void *); /* INFRINGES ON USER NAME SPACE */
515 #   endif
516 #  endif
517 # endif
518 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
519
520
521 #if (! defined yyoverflow \
522      && (! defined __cplusplus \
523          || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
524
525 /* A type that is properly aligned for any stack member.  */
526 union yyalloc
527 {
528   yytype_int16 yyss_alloc;
529   YYSTYPE yyvs_alloc;
530 };
531
532 /* The size of the maximum gap between one aligned stack and the next.  */
533 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
534
535 /* The size of an array large to enough to hold all stacks, each with
536    N elements.  */
537 # define YYSTACK_BYTES(N) \
538      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \
539       + YYSTACK_GAP_MAXIMUM)
540
541 /* Copy COUNT objects from FROM to TO.  The source and destination do
542    not overlap.  */
543 # ifndef YYCOPY
544 #  if defined __GNUC__ && 1 < __GNUC__
545 #   define YYCOPY(To, From, Count) \
546       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
547 #  else
548 #   define YYCOPY(To, From, Count)              \
549       do                                        \
550         {                                       \
551           YYSIZE_T yyi;                         \
552           for (yyi = 0; yyi < (Count); yyi++)   \
553             (To)[yyi] = (From)[yyi];            \
554         }                                       \
555       while (YYID (0))
556 #  endif
557 # endif
558
559 /* Relocate STACK from its old location to the new one.  The
560    local variables YYSIZE and YYSTACKSIZE give the old and new number of
561    elements in the stack, and YYPTR gives the new location of the
562    stack.  Advance YYPTR to a properly aligned location for the next
563    stack.  */
564 # define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
565     do                                                                  \
566       {                                                                 \
567         YYSIZE_T yynewbytes;                                            \
568         YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
569         Stack = &yyptr->Stack_alloc;                                    \
570         yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
571         yyptr += yynewbytes / sizeof (*yyptr);                          \
572       }                                                                 \
573     while (YYID (0))
574
575 #endif
576
577 /* YYFINAL -- State number of the termination state.  */
578 #define YYFINAL  57
579 /* YYLAST -- Last index in YYTABLE.  */
580 #define YYLAST   770
581
582 /* YYNTOKENS -- Number of terminals.  */
583 #define YYNTOKENS  69
584 /* YYNNTS -- Number of nonterminals.  */
585 #define YYNNTS  31
586 /* YYNRULES -- Number of rules.  */
587 #define YYNRULES  122
588 /* YYNRULES -- Number of states.  */
589 #define YYNSTATES  233
590
591 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
592 #define YYUNDEFTOK  2
593 #define YYMAXUTOK   303
594
595 #define YYTRANSLATE(YYX)                                                \
596   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
597
598 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
599 static const yytype_uint8 yytranslate[] =
600 {
601        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
602        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
603        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
604        2,     2,     2,     2,     2,     2,     2,     2,    32,    64,
605       58,    63,    34,    30,    65,    31,    57,    35,     2,     2,
606        2,     2,     2,     2,     2,     2,     2,     2,     2,    62,
607       22,    21,    23,     2,    29,     2,     2,     2,     2,     2,
608        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
609        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
610        2,    59,     2,    68,     2,     2,     2,     2,     2,     2,
611        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
612        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
613        2,     2,     2,    66,    42,    67,     2,     2,     2,     2,
614        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
615        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
616        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
617        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
618        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
619        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
620        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
621        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
622        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
623        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
624        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
625        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
626        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
627        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
628       15,    16,    17,    18,    19,    20,    24,    25,    26,    27,
629       28,    33,    36,    37,    38,    39,    40,    41,    43,    44,
630       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
631       55,    56,    60,    61
632 };
633
634 #if YYDEBUG
635 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
636    YYRHS.  */
637 static const yytype_uint16 yyprhs[] =
638 {
639        0,     0,     3,     5,     7,    11,    15,    18,    21,    26,
640       31,    32,    40,    41,    48,    55,    59,    61,    63,    65,
641       67,    70,    73,    76,    79,    80,    82,    86,    90,    96,
642      101,   105,   109,   113,   117,   121,   125,   129,   133,   137,
643      139,   143,   147,   151,   157,   163,   167,   174,   181,   186,
644      190,   194,   198,   200,   202,   204,   206,   208,   210,   214,
645      218,   223,   228,   232,   236,   241,   246,   250,   254,   257,
646      260,   264,   268,   272,   275,   278,   286,   294,   300,   306,
647      309,   310,   314,   316,   318,   319,   321,   323,   325,   327,
648      329,   331,   333,   336,   338,   341,   344,   348,   351,   355,
649      359,   361,   364,   367,   370,   374,   376,   378,   382,   386,
650      388,   389,   394,   398,   399,   406,   407,   412,   416,   417,
651      424,   427,   430
652 };
653
654 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
655 static const yytype_int8 yyrhs[] =
656 {
657       70,     0,    -1,    71,    -1,    78,    -1,    71,    62,    78,
658       -1,    72,    15,    78,    -1,    72,    13,    -1,    72,    12,
659       -1,    72,    58,    76,    63,    -1,    87,    58,    76,    63,
660       -1,    -1,    87,    64,    74,    73,    58,    78,    63,    -1,
661       -1,    72,    58,    75,    24,    75,    63,    -1,    87,    58,
662       75,    24,    75,    63,    -1,    58,    71,    63,    -1,    87,
663       -1,    14,    -1,    89,    -1,    72,    -1,    31,    75,    -1,
664       30,    75,    -1,    38,    75,    -1,    39,    75,    -1,    -1,
665       78,    -1,    11,    43,    78,    -1,    76,    65,    78,    -1,
666       76,    65,    11,    43,    78,    -1,    66,    87,    67,    72,
667       -1,    75,    40,    75,    -1,    75,    34,    75,    -1,    75,
668       35,    75,    -1,    75,    36,    75,    -1,    75,    37,    75,
669       -1,    75,    29,    75,    -1,    75,    30,    75,    -1,    75,
670       32,    75,    -1,    75,    31,    75,    -1,    75,    -1,    75,
671       21,    75,    -1,    75,    28,    75,    -1,    75,    27,    75,
672       -1,    75,    25,    75,    24,    75,    -1,    75,    25,    72,
673       55,    84,    -1,    75,    25,    87,    -1,    75,    38,    25,
674       75,    24,    75,    -1,    75,    38,    25,    72,    55,    84,
675       -1,    75,    38,    25,    87,    -1,    75,    26,    75,    -1,
676       75,    22,    75,    -1,    75,    23,    75,    -1,    77,    -1,
677       79,    -1,    80,    -1,    81,    -1,    82,    -1,    83,    -1,
678       77,    20,    77,    -1,    79,    20,    77,    -1,    77,    20,
679       17,    77,    -1,    80,    20,    17,    77,    -1,    77,    19,
680       77,    -1,    81,    19,    77,    -1,    77,    19,    16,    77,
681       -1,    82,    19,    16,    77,    -1,    77,    18,    77,    -1,
682       83,    18,    77,    -1,    72,    48,    -1,    72,    47,    -1,
683       72,    46,    84,    -1,    72,    45,    84,    -1,    72,    44,
684       84,    -1,    72,    54,    -1,    72,    53,    -1,    86,    50,
685       58,    78,    65,    78,    63,    -1,    86,    51,    58,    78,
686       65,    78,    63,    -1,    86,    56,    58,    78,    63,    -1,
687       85,    52,    58,    78,    63,    -1,    85,    49,    -1,    -1,
688       58,     3,    63,    -1,    87,    -1,    85,    -1,    -1,     3,
689       -1,     5,    -1,     6,    -1,     4,    -1,    10,    -1,     7,
690       -1,     8,    -1,    60,    11,    -1,    11,    -1,    88,    11,
691       -1,    11,    48,    -1,    88,    11,    48,    -1,    11,     9,
692       -1,    88,    11,     9,    -1,    58,    90,    63,    -1,    92,
693       -1,    91,    78,    -1,    91,    92,    -1,    78,    65,    -1,
694       91,    78,    65,    -1,    93,    -1,    94,    -1,    94,    65,
695       92,    -1,    61,    43,    78,    -1,    95,    -1,    -1,    11,
696       43,    96,    78,    -1,    75,    43,    78,    -1,    -1,    75,
697       24,    75,    43,    97,    78,    -1,    -1,    11,    42,    98,
698       95,    -1,    75,    42,    95,    -1,    -1,    75,    24,    75,
699       42,    99,    95,    -1,    34,    72,    -1,    32,    72,    -1,
700       72,    59,    78,    68,    -1
701 };
702
703 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
704 static const yytype_uint16 yyrline[] =
705 {
706        0,   233,   233,   237,   238,   240,   245,   249,   253,   259,
707      278,   278,   290,   294,   296,   304,   315,   325,   329,   332,
708      335,   339,   343,   347,   351,   354,   356,   358,   360,   364,
709      377,   381,   385,   389,   393,   397,   401,   405,   409,   413,
710      416,   420,   424,   428,   430,   435,   443,   447,   453,   464,
711      468,   472,   476,   477,   478,   479,   480,   481,   485,   487,
712      492,   494,   499,   501,   506,   508,   512,   514,   526,   528,
713      534,   537,   540,   543,   545,   547,   549,   551,   553,   555,
714      559,   561,   566,   576,   578,   584,   588,   595,   603,   607,
715      613,   615,   619,   623,   625,   627,   635,   646,   648,   653,
716      662,   663,   669,   674,   680,   689,   690,   691,   695,   700,
717      715,   714,   717,   720,   719,   725,   724,   727,   730,   729,
718      737,   739,   741
719 };
720 #endif
721
722 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
723 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
724    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
725 static const char *const yytname[] =
726 {
727   "$end", "error", "$undefined", "INT", "NULL_PTR", "CHARLIT", "FLOAT",
728   "TRUEKEYWORD", "FALSEKEYWORD", "COLONCOLON", "STRING", "NAME", "DOT_ID",
729   "DOT_ALL", "SPECIAL_VARIABLE", "ASSIGN", "ELSE", "THEN", "XOR", "OR",
730   "_AND_", "'='", "'<'", "'>'", "DOTDOT", "IN", "GEQ", "LEQ", "NOTEQUAL",
731   "'@'", "'+'", "'-'", "'&'", "UNARY", "'*'", "'/'", "REM", "MOD", "NOT",
732   "ABS", "STARSTAR", "VAR", "'|'", "ARROW", "TICK_LENGTH", "TICK_LAST",
733   "TICK_FIRST", "TICK_ADDRESS", "TICK_ACCESS", "TICK_MODULUS", "TICK_MIN",
734   "TICK_MAX", "TICK_VAL", "TICK_TAG", "TICK_SIZE", "TICK_RANGE",
735   "TICK_POS", "'.'", "'('", "'['", "NEW", "OTHERS", "';'", "')'", "'\\''",
736   "','", "'{'", "'}'", "']'", "$accept", "start", "exp1", "primary", "$@1",
737   "save_qualifier", "simple_exp", "arglist", "relation", "exp", "and_exp",
738   "and_then_exp", "or_exp", "or_else_exp", "xor_exp", "tick_arglist",
739   "type_prefix", "opt_type_prefix", "var_or_type", "block", "aggregate",
740   "aggregate_component_list", "positional_list", "component_groups",
741   "others", "component_group", "component_associations", "$@2", "$@3",
742   "$@4", "$@5", 0
743 };
744 #endif
745
746 # ifdef YYPRINT
747 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
748    token YYLEX-NUM.  */
749 static const yytype_uint16 yytoknum[] =
750 {
751        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
752      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
753      275,    61,    60,    62,   276,   277,   278,   279,   280,    64,
754       43,    45,    38,   281,    42,    47,   282,   283,   284,   285,
755      286,   287,   124,   288,   289,   290,   291,   292,   293,   294,
756      295,   296,   297,   298,   299,   300,   301,    46,    40,    91,
757      302,   303,    59,    41,    39,    44,   123,   125,    93
758 };
759 # endif
760
761 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
762 static const yytype_uint8 yyr1[] =
763 {
764        0,    69,    70,    71,    71,    71,    72,    72,    72,    72,
765       73,    72,    74,    72,    72,    72,    72,    72,    72,    75,
766       75,    75,    75,    75,    76,    76,    76,    76,    76,    72,
767       75,    75,    75,    75,    75,    75,    75,    75,    75,    77,
768       77,    77,    77,    77,    77,    77,    77,    77,    77,    77,
769       77,    77,    78,    78,    78,    78,    78,    78,    79,    79,
770       80,    80,    81,    81,    82,    82,    83,    83,    72,    72,
771       72,    72,    72,    72,    72,    72,    72,    72,    72,    72,
772       84,    84,    85,    86,    86,    72,    72,    72,    72,    72,
773       72,    72,    72,    87,    87,    87,    87,    88,    88,    89,
774       90,    90,    90,    91,    91,    92,    92,    92,    93,    94,
775       96,    95,    95,    97,    95,    98,    95,    95,    99,    95,
776       72,    72,    72
777 };
778
779 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
780 static const yytype_uint8 yyr2[] =
781 {
782        0,     2,     1,     1,     3,     3,     2,     2,     4,     4,
783        0,     7,     0,     6,     6,     3,     1,     1,     1,     1,
784        2,     2,     2,     2,     0,     1,     3,     3,     5,     4,
785        3,     3,     3,     3,     3,     3,     3,     3,     3,     1,
786        3,     3,     3,     5,     5,     3,     6,     6,     4,     3,
787        3,     3,     1,     1,     1,     1,     1,     1,     3,     3,
788        4,     4,     3,     3,     4,     4,     3,     3,     2,     2,
789        3,     3,     3,     2,     2,     7,     7,     5,     5,     2,
790        0,     3,     1,     1,     0,     1,     1,     1,     1,     1,
791        1,     1,     2,     1,     2,     2,     3,     2,     3,     3,
792        1,     2,     2,     2,     3,     1,     1,     3,     3,     1,
793        0,     4,     3,     0,     6,     0,     4,     3,     0,     6,
794        2,     2,     4
795 };
796
797 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
798    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
799    means the default is an error.  */
800 static const yytype_uint8 yydefact[] =
801 {
802       84,    85,    88,    86,    87,    90,    91,    89,    93,    17,
803       84,    84,    84,    84,    84,    84,    84,     0,     0,     0,
804        2,    19,    39,    52,     3,    53,    54,    55,    56,    57,
805       83,     0,    16,     0,    18,    97,    95,    19,    21,    20,
806      121,   120,    22,    23,    93,     0,     0,    39,     3,     0,
807       84,   100,   105,   106,   109,    92,     0,     1,    84,     7,
808        6,    84,    80,    80,    80,    69,    68,    74,    73,    84,
809       84,    84,    84,    84,    84,    84,    84,    84,    84,    84,
810       84,    84,    84,    84,    84,    84,     0,    84,    84,    84,
811       84,    84,     0,    84,     0,    84,    79,     0,     0,     0,
812        0,    84,    12,    94,   115,   110,    84,    15,    84,    84,
813       84,   103,    99,   101,   102,    84,    84,     4,     5,     0,
814       72,    71,    70,    93,    39,     0,    25,     0,    40,    50,
815       51,    19,     0,    16,    49,    42,    41,    35,    36,    38,
816       37,    31,    32,    33,    34,    84,    30,    66,    84,    62,
817       84,    58,    59,    84,    63,    84,    67,    84,    84,    84,
818       84,    39,     0,    10,    98,    96,    84,    84,   108,     0,
819        0,   117,   112,   104,   107,    29,     0,    84,    84,     8,
820       84,   122,    80,    84,    19,     0,    16,    64,    60,    61,
821       65,     0,     0,     0,     0,    84,     9,     0,   116,   111,
822      118,   113,    81,    26,     0,    93,    27,    44,    43,    80,
823       84,    78,    84,    84,    77,     0,    84,    84,    84,    13,
824       84,    47,    46,     0,     0,    14,     0,   119,   114,    28,
825       75,    76,    11
826 };
827
828 /* YYDEFGOTO[NTERM-NUM].  */
829 static const yytype_int16 yydefgoto[] =
830 {
831       -1,    19,    20,    37,   197,   163,    22,   125,    23,   126,
832       25,    26,    27,    28,    29,   120,    30,    31,    32,    33,
833       34,    49,    50,    51,    52,    53,    54,   167,   218,   166,
834      217
835 };
836
837 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
838    STATE-NUM.  */
839 #define YYPACT_NINF -104
840 static const yytype_int16 yypact[] =
841 {
842      424,  -104,  -104,  -104,  -104,  -104,  -104,  -104,    16,  -104,
843      424,   424,   118,   118,   424,   424,   286,    -7,     6,    31,
844      -26,   501,   674,    20,  -104,    28,    32,    22,    34,    42,
845      -44,   -21,    84,    57,  -104,  -104,  -104,   558,    63,    63,
846       -3,    -3,    63,    63,    23,    26,   -36,   611,     9,    27,
847      286,  -104,  -104,    29,  -104,  -104,    25,  -104,   424,  -104,
848     -104,   424,    35,    35,    35,  -104,  -104,  -104,  -104,   274,
849      424,   424,   424,   424,   424,   424,   424,   424,   424,   424,
850      424,   424,   424,   424,   424,   424,    71,   424,   424,   350,
851      387,   424,    91,   424,    85,   424,  -104,    53,    58,    59,
852       60,   274,  -104,    19,  -104,  -104,   424,  -104,   424,   461,
853      424,  -104,  -104,    50,  -104,   286,   118,  -104,  -104,   124,
854     -104,  -104,  -104,     3,   634,   -52,  -104,    70,   719,   719,
855      719,   521,   166,   173,   719,   719,   719,   730,    63,    63,
856       63,    99,    99,    99,    99,   424,    99,  -104,   424,  -104,
857      424,  -104,  -104,   424,  -104,   424,  -104,   424,   424,   424,
858      424,   654,   -41,  -104,  -104,  -104,   461,   424,  -104,   704,
859      689,  -104,  -104,  -104,  -104,    -3,    68,   424,   424,  -104,
860      498,  -104,    35,   424,   538,   215,   208,  -104,  -104,  -104,
861     -104,    78,    79,    80,    83,   424,  -104,    93,  -104,  -104,
862     -104,  -104,  -104,  -104,   339,    14,  -104,  -104,   719,    35,
863      424,  -104,   424,   424,  -104,   589,   424,   461,   424,  -104,
864      424,  -104,   719,    90,    92,  -104,    98,  -104,  -104,  -104,
865     -104,  -104,  -104
866 };
867
868 /* YYPGOTO[NTERM-NUM].  */
869 static const yytype_int8 yypgoto[] =
870 {
871     -104,  -104,   127,    21,  -104,  -104,     4,    55,   -46,     0,
872     -104,  -104,  -104,  -104,  -104,   -62,  -104,  -104,   -15,  -104,
873     -104,  -104,  -104,   -43,  -104,  -104,  -103,  -104,  -104,  -104,
874     -104
875 };
876
877 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
878    positive, shift that token.  If negative, reduce the rule which
879    number is the opposite.  If zero, do what YYDEFACT says.
880    If YYTABLE_NINF, syntax error.  */
881 #define YYTABLE_NINF -83
882 static const yytype_int16 yytable[] =
883 {
884       24,   121,   122,    56,    55,    96,   171,   114,    97,    59,
885       60,   179,    35,   180,    38,    39,    48,     8,    42,    43,
886       47,    21,   196,    35,   180,    35,    58,   107,   164,    98,
887       99,    57,    35,    40,    41,   100,    58,    21,    88,    89,
888       90,    93,   147,   149,   151,   152,   177,   154,    91,   156,
889      113,    36,    92,    94,    47,    69,    70,   220,   117,   133,
890       95,   118,    36,   198,    36,   104,   105,   165,   103,   106,
891      127,    36,   174,   124,   111,   128,   129,   130,   132,   134,
892      135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
893      112,   146,   116,   119,   115,   131,   145,    82,    83,    84,
894       85,   155,   187,    87,   188,   161,   168,   189,   153,   190,
895      172,   157,   169,   170,   227,   173,   158,   159,   160,   170,
896      207,     1,     2,     3,     4,     5,     6,   176,     7,     8,
897      186,   202,     9,   -82,   -82,   -82,   -82,   175,   181,    87,
898      -82,   211,   101,    46,   212,   213,   214,   221,   102,   185,
899       12,   216,    13,   230,     0,   231,   162,   191,   192,   193,
900      194,   232,     0,     0,     0,     0,   184,   199,     0,     0,
901      170,     0,     0,   -45,     0,     0,    16,   203,    17,     0,
902      206,     0,   204,     0,    18,     0,     0,   208,     0,     0,
903      183,   -45,   -45,   -45,     0,    78,    79,    80,    81,   215,
904       82,    83,    84,    85,     0,     0,    87,     0,   -48,     0,
905        0,     0,   223,   224,   222,     0,   226,     0,   228,     0,
906      229,   170,   -82,   -82,   -82,   -82,   -48,   -48,   -48,   -82,
907        0,   101,     0,     0,     0,   -45,   -45,   102,   -45,   210,
908        0,   -45,     0,     0,    78,    79,    80,    81,     0,    82,
909       83,    84,    85,     0,     0,    87,     0,   -82,   -82,   -82,
910      -82,     0,     0,     0,   -82,     0,   101,     0,     0,     0,
911      -48,   -48,   102,   -48,     0,     0,   -48,     1,     2,     3,
912        4,     5,     6,     0,     7,   123,     0,     0,     9,     1,
913        2,     3,     4,     5,     6,     0,     7,    44,     0,     0,
914        9,     0,     0,     0,    10,    11,    12,     0,    13,     0,
915        0,     0,    14,    15,     0,     0,    10,    11,    12,     0,
916       13,     0,     0,     0,    14,    15,     0,     0,     0,     0,
917        0,     0,    16,     0,    17,     0,     0,   -24,     0,   -24,
918       18,     0,     0,     0,    16,     0,    17,    45,     0,     0,
919        0,     0,    18,     1,     2,     3,     4,     5,     6,     0,
920        7,     8,     0,     0,     9,     0,   148,     0,    78,    79,
921       80,    81,     0,    82,    83,    84,    85,     0,     0,    87,
922       10,    11,    12,     0,    13,     0,     0,     0,    14,    15,
923        1,     2,     3,     4,     5,     6,     0,     7,     8,     0,
924        0,     9,   219,     0,   150,     0,     0,     0,    16,     0,
925       17,     0,     0,     0,     0,     0,    18,    10,    11,    12,
926        0,    13,     0,     0,     0,    14,    15,     1,     2,     3,
927        4,     5,     6,     0,     7,     8,     0,     0,     9,     0,
928        0,     0,     0,     0,     0,    16,     0,    17,     0,     0,
929        0,     0,     0,    18,    10,    11,    12,     0,    13,     0,
930        0,     0,    14,    15,     1,     2,     3,     4,     5,     6,
931        0,     7,    44,     0,     0,     9,     0,     0,     0,     0,
932        0,     0,    16,     0,    17,     0,     0,     0,     0,     0,
933       18,    10,    11,    12,     0,    13,     0,     0,     0,    14,
934       15,     1,     2,     3,     4,     5,     6,     0,     7,   205,
935        0,     0,     9,    59,    60,     0,    61,     0,     0,    16,
936        0,    17,     0,     0,     0,     0,     0,    18,    10,    11,
937       12,     0,    13,    59,    60,     0,    14,    15,     0,     0,
938        0,     0,     0,     0,     0,    62,    63,    64,    65,    66,
939       59,    60,     0,     0,    67,    68,    16,     0,    17,    69,
940       70,     0,     0,     0,    18,    62,    63,    64,    65,    66,
941       59,    60,     0,     0,    67,    68,   182,     0,     0,    69,
942       70,     0,    62,    63,    64,    65,    66,     0,     0,     0,
943        0,    67,    68,   209,     0,     0,    69,    70,     0,     0,
944        0,     0,    62,    63,    64,    65,    66,     0,     0,     0,
945        0,    67,    68,     0,     0,     0,    69,    70,    78,    79,
946       80,    81,     0,    82,    83,    84,    85,     0,     0,    87,
947        0,     0,    71,    72,    73,   108,    74,    75,    76,    77,
948       78,    79,    80,    81,     0,    82,    83,    84,    85,    86,
949        0,    87,   225,   109,   110,    71,    72,    73,   178,    74,
950       75,    76,    77,    78,    79,    80,    81,     0,    82,    83,
951       84,    85,    86,     0,    87,    71,    72,    73,   195,    74,
952       75,    76,    77,    78,    79,    80,    81,     0,    82,    83,
953       84,    85,    86,     0,    87,    71,    72,    73,     0,    74,
954       75,    76,    77,    78,    79,    80,    81,     0,    82,    83,
955       84,    85,    86,   108,    87,     0,     0,     0,    78,    79,
956       80,    81,     0,    82,    83,    84,    85,     0,     0,    87,
957        0,   109,   110,    78,    79,    80,    81,     0,    82,    83,
958       84,    85,     0,     0,    87,     0,   200,   201,    78,    79,
959       80,    81,     0,    82,    83,    84,    85,     0,     0,    87,
960       79,    80,    81,     0,    82,    83,    84,    85,     0,     0,
961       87
962 };
963
964 static const yytype_int16 yycheck[] =
965 {
966        0,    63,    64,    18,    11,    49,   109,    50,    52,    12,
967       13,    63,     9,    65,    10,    11,    16,    11,    14,    15,
968       16,     0,    63,     9,    65,     9,    62,    63,     9,    50,
969       51,     0,     9,    12,    13,    56,    62,    16,    18,    19,
970       20,    19,    88,    89,    90,    91,    43,    93,    20,    95,
971       50,    48,    20,    19,    50,    58,    59,    43,    58,    74,
972       18,    61,    48,   166,    48,    42,    43,    48,    11,    43,
973       70,    48,   115,    69,    65,    71,    72,    73,    74,    75,
974       76,    77,    78,    79,    80,    81,    82,    83,    84,    85,
975       63,    87,    67,    58,    65,    74,    25,    34,    35,    36,
976       37,    16,   148,    40,   150,   101,   106,   153,    17,   155,
977      110,    58,   108,   109,   217,    65,    58,    58,    58,   115,
978      182,     3,     4,     5,     6,     7,     8,     3,    10,    11,
979      145,    63,    14,    49,    50,    51,    52,   116,    68,    40,
980       56,    63,    58,    16,    65,    65,    63,   209,    64,   145,
981       32,    58,    34,    63,    -1,    63,   101,   157,   158,   159,
982      160,    63,    -1,    -1,    -1,    -1,   145,   167,    -1,    -1,
983      166,    -1,    -1,     0,    -1,    -1,    58,   177,    60,    -1,
984      180,    -1,   178,    -1,    66,    -1,    -1,   183,    -1,    -1,
985       24,    18,    19,    20,    -1,    29,    30,    31,    32,   195,
986       34,    35,    36,    37,    -1,    -1,    40,    -1,     0,    -1,
987       -1,    -1,   212,   213,   210,    -1,   216,    -1,   218,    -1,
988      220,   217,    49,    50,    51,    52,    18,    19,    20,    56,
989       -1,    58,    -1,    -1,    -1,    62,    63,    64,    65,    24,
990       -1,    68,    -1,    -1,    29,    30,    31,    32,    -1,    34,
991       35,    36,    37,    -1,    -1,    40,    -1,    49,    50,    51,
992       52,    -1,    -1,    -1,    56,    -1,    58,    -1,    -1,    -1,
993       62,    63,    64,    65,    -1,    -1,    68,     3,     4,     5,
994        6,     7,     8,    -1,    10,    11,    -1,    -1,    14,     3,
995        4,     5,     6,     7,     8,    -1,    10,    11,    -1,    -1,
996       14,    -1,    -1,    -1,    30,    31,    32,    -1,    34,    -1,
997       -1,    -1,    38,    39,    -1,    -1,    30,    31,    32,    -1,
998       34,    -1,    -1,    -1,    38,    39,    -1,    -1,    -1,    -1,
999       -1,    -1,    58,    -1,    60,    -1,    -1,    63,    -1,    65,
1000       66,    -1,    -1,    -1,    58,    -1,    60,    61,    -1,    -1,
1001       -1,    -1,    66,     3,     4,     5,     6,     7,     8,    -1,
1002       10,    11,    -1,    -1,    14,    -1,    16,    -1,    29,    30,
1003       31,    32,    -1,    34,    35,    36,    37,    -1,    -1,    40,
1004       30,    31,    32,    -1,    34,    -1,    -1,    -1,    38,    39,
1005        3,     4,     5,     6,     7,     8,    -1,    10,    11,    -1,
1006       -1,    14,    63,    -1,    17,    -1,    -1,    -1,    58,    -1,
1007       60,    -1,    -1,    -1,    -1,    -1,    66,    30,    31,    32,
1008       -1,    34,    -1,    -1,    -1,    38,    39,     3,     4,     5,
1009        6,     7,     8,    -1,    10,    11,    -1,    -1,    14,    -1,
1010       -1,    -1,    -1,    -1,    -1,    58,    -1,    60,    -1,    -1,
1011       -1,    -1,    -1,    66,    30,    31,    32,    -1,    34,    -1,
1012       -1,    -1,    38,    39,     3,     4,     5,     6,     7,     8,
1013       -1,    10,    11,    -1,    -1,    14,    -1,    -1,    -1,    -1,
1014       -1,    -1,    58,    -1,    60,    -1,    -1,    -1,    -1,    -1,
1015       66,    30,    31,    32,    -1,    34,    -1,    -1,    -1,    38,
1016       39,     3,     4,     5,     6,     7,     8,    -1,    10,    11,
1017       -1,    -1,    14,    12,    13,    -1,    15,    -1,    -1,    58,
1018       -1,    60,    -1,    -1,    -1,    -1,    -1,    66,    30,    31,
1019       32,    -1,    34,    12,    13,    -1,    38,    39,    -1,    -1,
1020       -1,    -1,    -1,    -1,    -1,    44,    45,    46,    47,    48,
1021       12,    13,    -1,    -1,    53,    54,    58,    -1,    60,    58,
1022       59,    -1,    -1,    -1,    66,    44,    45,    46,    47,    48,
1023       12,    13,    -1,    -1,    53,    54,    55,    -1,    -1,    58,
1024       59,    -1,    44,    45,    46,    47,    48,    -1,    -1,    -1,
1025       -1,    53,    54,    55,    -1,    -1,    58,    59,    -1,    -1,
1026       -1,    -1,    44,    45,    46,    47,    48,    -1,    -1,    -1,
1027       -1,    53,    54,    -1,    -1,    -1,    58,    59,    29,    30,
1028       31,    32,    -1,    34,    35,    36,    37,    -1,    -1,    40,
1029       -1,    -1,    21,    22,    23,    24,    25,    26,    27,    28,
1030       29,    30,    31,    32,    -1,    34,    35,    36,    37,    38,
1031       -1,    40,    63,    42,    43,    21,    22,    23,    24,    25,
1032       26,    27,    28,    29,    30,    31,    32,    -1,    34,    35,
1033       36,    37,    38,    -1,    40,    21,    22,    23,    24,    25,
1034       26,    27,    28,    29,    30,    31,    32,    -1,    34,    35,
1035       36,    37,    38,    -1,    40,    21,    22,    23,    -1,    25,
1036       26,    27,    28,    29,    30,    31,    32,    -1,    34,    35,
1037       36,    37,    38,    24,    40,    -1,    -1,    -1,    29,    30,
1038       31,    32,    -1,    34,    35,    36,    37,    -1,    -1,    40,
1039       -1,    42,    43,    29,    30,    31,    32,    -1,    34,    35,
1040       36,    37,    -1,    -1,    40,    -1,    42,    43,    29,    30,
1041       31,    32,    -1,    34,    35,    36,    37,    -1,    -1,    40,
1042       30,    31,    32,    -1,    34,    35,    36,    37,    -1,    -1,
1043       40
1044 };
1045
1046 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1047    symbol of state STATE-NUM.  */
1048 static const yytype_uint8 yystos[] =
1049 {
1050        0,     3,     4,     5,     6,     7,     8,    10,    11,    14,
1051       30,    31,    32,    34,    38,    39,    58,    60,    66,    70,
1052       71,    72,    75,    77,    78,    79,    80,    81,    82,    83,
1053       85,    86,    87,    88,    89,     9,    48,    72,    75,    75,
1054       72,    72,    75,    75,    11,    61,    71,    75,    78,    90,
1055       91,    92,    93,    94,    95,    11,    87,     0,    62,    12,
1056       13,    15,    44,    45,    46,    47,    48,    53,    54,    58,
1057       59,    21,    22,    23,    25,    26,    27,    28,    29,    30,
1058       31,    32,    34,    35,    36,    37,    38,    40,    18,    19,
1059       20,    20,    20,    19,    19,    18,    49,    52,    50,    51,
1060       56,    58,    64,    11,    42,    43,    43,    63,    24,    42,
1061       43,    65,    63,    78,    92,    65,    67,    78,    78,    58,
1062       84,    84,    84,    11,    75,    76,    78,    78,    75,    75,
1063       75,    72,    75,    87,    75,    75,    75,    75,    75,    75,
1064       75,    75,    75,    75,    75,    25,    75,    77,    16,    77,
1065       17,    77,    77,    17,    77,    16,    77,    58,    58,    58,
1066       58,    75,    76,    74,     9,    48,    98,    96,    78,    75,
1067       75,    95,    78,    65,    92,    72,     3,    43,    24,    63,
1068       65,    68,    55,    24,    72,    75,    87,    77,    77,    77,
1069       77,    78,    78,    78,    78,    24,    63,    73,    95,    78,
1070       42,    43,    63,    78,    75,    11,    78,    84,    75,    55,
1071       24,    63,    65,    65,    63,    75,    58,    99,    97,    63,
1072       43,    84,    75,    78,    78,    63,    78,    95,    78,    78,
1073       63,    63,    63
1074 };
1075
1076 #define yyerrok         (yyerrstatus = 0)
1077 #define yyclearin       (yychar = YYEMPTY)
1078 #define YYEMPTY         (-2)
1079 #define YYEOF           0
1080
1081 #define YYACCEPT        goto yyacceptlab
1082 #define YYABORT         goto yyabortlab
1083 #define YYERROR         goto yyerrorlab
1084
1085
1086 /* Like YYERROR except do call yyerror.  This remains here temporarily
1087    to ease the transition to the new meaning of YYERROR, for GCC.
1088    Once GCC version 2 has supplanted version 1, this can go.  */
1089
1090 #define YYFAIL          goto yyerrlab
1091
1092 #define YYRECOVERING()  (!!yyerrstatus)
1093
1094 #define YYBACKUP(Token, Value)                                  \
1095 do                                                              \
1096   if (yychar == YYEMPTY && yylen == 1)                          \
1097     {                                                           \
1098       yychar = (Token);                                         \
1099       yylval = (Value);                                         \
1100       yytoken = YYTRANSLATE (yychar);                           \
1101       YYPOPSTACK (1);                                           \
1102       goto yybackup;                                            \
1103     }                                                           \
1104   else                                                          \
1105     {                                                           \
1106       yyerror (YY_("syntax error: cannot back up")); \
1107       YYERROR;                                                  \
1108     }                                                           \
1109 while (YYID (0))
1110
1111
1112 #define YYTERROR        1
1113 #define YYERRCODE       256
1114
1115
1116 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
1117    If N is 0, then set CURRENT to the empty location which ends
1118    the previous symbol: RHS[0] (always defined).  */
1119
1120 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
1121 #ifndef YYLLOC_DEFAULT
1122 # define YYLLOC_DEFAULT(Current, Rhs, N)                                \
1123     do                                                                  \
1124       if (YYID (N))                                                    \
1125         {                                                               \
1126           (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;        \
1127           (Current).first_column = YYRHSLOC (Rhs, 1).first_column;      \
1128           (Current).last_line    = YYRHSLOC (Rhs, N).last_line;         \
1129           (Current).last_column  = YYRHSLOC (Rhs, N).last_column;       \
1130         }                                                               \
1131       else                                                              \
1132         {                                                               \
1133           (Current).first_line   = (Current).last_line   =              \
1134             YYRHSLOC (Rhs, 0).last_line;                                \
1135           (Current).first_column = (Current).last_column =              \
1136             YYRHSLOC (Rhs, 0).last_column;                              \
1137         }                                                               \
1138     while (YYID (0))
1139 #endif
1140
1141
1142 /* YY_LOCATION_PRINT -- Print the location on the stream.
1143    This macro was not mandated originally: define only if we know
1144    we won't break user code: when these are the locations we know.  */
1145
1146 #ifndef YY_LOCATION_PRINT
1147 # if YYLTYPE_IS_TRIVIAL
1148 #  define YY_LOCATION_PRINT(File, Loc)                  \
1149      fprintf (File, "%d.%d-%d.%d",                      \
1150               (Loc).first_line, (Loc).first_column,     \
1151               (Loc).last_line,  (Loc).last_column)
1152 # else
1153 #  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
1154 # endif
1155 #endif
1156
1157
1158 /* YYLEX -- calling `yylex' with the right arguments.  */
1159
1160 #ifdef YYLEX_PARAM
1161 # define YYLEX yylex (YYLEX_PARAM)
1162 #else
1163 # define YYLEX yylex ()
1164 #endif
1165
1166 /* Enable debugging if requested.  */
1167 #if YYDEBUG
1168
1169 # ifndef YYFPRINTF
1170 #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
1171 #  define YYFPRINTF fprintf
1172 # endif
1173
1174 # define YYDPRINTF(Args)                        \
1175 do {                                            \
1176   if (yydebug)                                  \
1177     YYFPRINTF Args;                             \
1178 } while (YYID (0))
1179
1180 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
1181 do {                                                                      \
1182   if (yydebug)                                                            \
1183     {                                                                     \
1184       YYFPRINTF (stderr, "%s ", Title);                                   \
1185       yy_symbol_print (stderr,                                            \
1186                   Type, Value); \
1187       YYFPRINTF (stderr, "\n");                                           \
1188     }                                                                     \
1189 } while (YYID (0))
1190
1191
1192 /*--------------------------------.
1193 | Print this symbol on YYOUTPUT.  |
1194 `--------------------------------*/
1195
1196 /*ARGSUSED*/
1197 #if (defined __STDC__ || defined __C99__FUNC__ \
1198      || defined __cplusplus || defined _MSC_VER)
1199 static void
1200 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
1201 #else
1202 static void
1203 yy_symbol_value_print (yyoutput, yytype, yyvaluep)
1204     FILE *yyoutput;
1205     int yytype;
1206     YYSTYPE const * const yyvaluep;
1207 #endif
1208 {
1209   if (!yyvaluep)
1210     return;
1211 # ifdef YYPRINT
1212   if (yytype < YYNTOKENS)
1213     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
1214 # else
1215   YYUSE (yyoutput);
1216 # endif
1217   switch (yytype)
1218     {
1219       default:
1220         break;
1221     }
1222 }
1223
1224
1225 /*--------------------------------.
1226 | Print this symbol on YYOUTPUT.  |
1227 `--------------------------------*/
1228
1229 #if (defined __STDC__ || defined __C99__FUNC__ \
1230      || defined __cplusplus || defined _MSC_VER)
1231 static void
1232 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
1233 #else
1234 static void
1235 yy_symbol_print (yyoutput, yytype, yyvaluep)
1236     FILE *yyoutput;
1237     int yytype;
1238     YYSTYPE const * const yyvaluep;
1239 #endif
1240 {
1241   if (yytype < YYNTOKENS)
1242     YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
1243   else
1244     YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
1245
1246   yy_symbol_value_print (yyoutput, yytype, yyvaluep);
1247   YYFPRINTF (yyoutput, ")");
1248 }
1249
1250 /*------------------------------------------------------------------.
1251 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
1252 | TOP (included).                                                   |
1253 `------------------------------------------------------------------*/
1254
1255 #if (defined __STDC__ || defined __C99__FUNC__ \
1256      || defined __cplusplus || defined _MSC_VER)
1257 static void
1258 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
1259 #else
1260 static void
1261 yy_stack_print (yybottom, yytop)
1262     yytype_int16 *yybottom;
1263     yytype_int16 *yytop;
1264 #endif
1265 {
1266   YYFPRINTF (stderr, "Stack now");
1267   for (; yybottom <= yytop; yybottom++)
1268     {
1269       int yybot = *yybottom;
1270       YYFPRINTF (stderr, " %d", yybot);
1271     }
1272   YYFPRINTF (stderr, "\n");
1273 }
1274
1275 # define YY_STACK_PRINT(Bottom, Top)                            \
1276 do {                                                            \
1277   if (yydebug)                                                  \
1278     yy_stack_print ((Bottom), (Top));                           \
1279 } while (YYID (0))
1280
1281
1282 /*------------------------------------------------.
1283 | Report that the YYRULE is going to be reduced.  |
1284 `------------------------------------------------*/
1285
1286 #if (defined __STDC__ || defined __C99__FUNC__ \
1287      || defined __cplusplus || defined _MSC_VER)
1288 static void
1289 yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
1290 #else
1291 static void
1292 yy_reduce_print (yyvsp, yyrule)
1293     YYSTYPE *yyvsp;
1294     int yyrule;
1295 #endif
1296 {
1297   int yynrhs = yyr2[yyrule];
1298   int yyi;
1299   unsigned long int yylno = yyrline[yyrule];
1300   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
1301              yyrule - 1, yylno);
1302   /* The symbols being reduced.  */
1303   for (yyi = 0; yyi < yynrhs; yyi++)
1304     {
1305       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
1306       yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
1307                        &(yyvsp[(yyi + 1) - (yynrhs)])
1308                                        );
1309       YYFPRINTF (stderr, "\n");
1310     }
1311 }
1312
1313 # define YY_REDUCE_PRINT(Rule)          \
1314 do {                                    \
1315   if (yydebug)                          \
1316     yy_reduce_print (yyvsp, Rule); \
1317 } while (YYID (0))
1318
1319 /* Nonzero means print parse trace.  It is left uninitialized so that
1320    multiple parsers can coexist.  */
1321 int yydebug;
1322 #else /* !YYDEBUG */
1323 # define YYDPRINTF(Args)
1324 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
1325 # define YY_STACK_PRINT(Bottom, Top)
1326 # define YY_REDUCE_PRINT(Rule)
1327 #endif /* !YYDEBUG */
1328
1329
1330 /* YYINITDEPTH -- initial size of the parser's stacks.  */
1331 #ifndef YYINITDEPTH
1332 # define YYINITDEPTH 200
1333 #endif
1334
1335 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1336    if the built-in stack extension method is used).
1337
1338    Do not make this value too large; the results are undefined if
1339    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
1340    evaluated with infinite-precision integer arithmetic.  */
1341
1342 #ifndef YYMAXDEPTH
1343 # define YYMAXDEPTH 10000
1344 #endif
1345
1346 \f
1347
1348 #if YYERROR_VERBOSE
1349
1350 # ifndef yystrlen
1351 #  if defined __GLIBC__ && defined _STRING_H
1352 #   define yystrlen strlen
1353 #  else
1354 /* Return the length of YYSTR.  */
1355 #if (defined __STDC__ || defined __C99__FUNC__ \
1356      || defined __cplusplus || defined _MSC_VER)
1357 static YYSIZE_T
1358 yystrlen (const char *yystr)
1359 #else
1360 static YYSIZE_T
1361 yystrlen (yystr)
1362     const char *yystr;
1363 #endif
1364 {
1365   YYSIZE_T yylen;
1366   for (yylen = 0; yystr[yylen]; yylen++)
1367     continue;
1368   return yylen;
1369 }
1370 #  endif
1371 # endif
1372
1373 # ifndef yystpcpy
1374 #  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
1375 #   define yystpcpy stpcpy
1376 #  else
1377 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1378    YYDEST.  */
1379 #if (defined __STDC__ || defined __C99__FUNC__ \
1380      || defined __cplusplus || defined _MSC_VER)
1381 static char *
1382 yystpcpy (char *yydest, const char *yysrc)
1383 #else
1384 static char *
1385 yystpcpy (yydest, yysrc)
1386     char *yydest;
1387     const char *yysrc;
1388 #endif
1389 {
1390   char *yyd = yydest;
1391   const char *yys = yysrc;
1392
1393   while ((*yyd++ = *yys++) != '\0')
1394     continue;
1395
1396   return yyd - 1;
1397 }
1398 #  endif
1399 # endif
1400
1401 # ifndef yytnamerr
1402 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1403    quotes and backslashes, so that it's suitable for yyerror.  The
1404    heuristic is that double-quoting is unnecessary unless the string
1405    contains an apostrophe, a comma, or backslash (other than
1406    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
1407    null, do not copy; instead, return the length of what the result
1408    would have been.  */
1409 static YYSIZE_T
1410 yytnamerr (char *yyres, const char *yystr)
1411 {
1412   if (*yystr == '"')
1413     {
1414       YYSIZE_T yyn = 0;
1415       char const *yyp = yystr;
1416
1417       for (;;)
1418         switch (*++yyp)
1419           {
1420           case '\'':
1421           case ',':
1422             goto do_not_strip_quotes;
1423
1424           case '\\':
1425             if (*++yyp != '\\')
1426               goto do_not_strip_quotes;
1427             /* Fall through.  */
1428           default:
1429             if (yyres)
1430               yyres[yyn] = *yyp;
1431             yyn++;
1432             break;
1433
1434           case '"':
1435             if (yyres)
1436               yyres[yyn] = '\0';
1437             return yyn;
1438           }
1439     do_not_strip_quotes: ;
1440     }
1441
1442   if (! yyres)
1443     return yystrlen (yystr);
1444
1445   return yystpcpy (yyres, yystr) - yyres;
1446 }
1447 # endif
1448
1449 /* Copy into YYRESULT an error message about the unexpected token
1450    YYCHAR while in state YYSTATE.  Return the number of bytes copied,
1451    including the terminating null byte.  If YYRESULT is null, do not
1452    copy anything; just return the number of bytes that would be
1453    copied.  As a special case, return 0 if an ordinary "syntax error"
1454    message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
1455    size calculation.  */
1456 static YYSIZE_T
1457 yysyntax_error (char *yyresult, int yystate, int yychar)
1458 {
1459   int yyn = yypact[yystate];
1460
1461   if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
1462     return 0;
1463   else
1464     {
1465       int yytype = YYTRANSLATE (yychar);
1466       YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
1467       YYSIZE_T yysize = yysize0;
1468       YYSIZE_T yysize1;
1469       int yysize_overflow = 0;
1470       enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
1471       char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
1472       int yyx;
1473
1474 # if 0
1475       /* This is so xgettext sees the translatable formats that are
1476          constructed on the fly.  */
1477       YY_("syntax error, unexpected %s");
1478       YY_("syntax error, unexpected %s, expecting %s");
1479       YY_("syntax error, unexpected %s, expecting %s or %s");
1480       YY_("syntax error, unexpected %s, expecting %s or %s or %s");
1481       YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
1482 # endif
1483       char *yyfmt;
1484       char const *yyf;
1485       static char const yyunexpected[] = "syntax error, unexpected %s";
1486       static char const yyexpecting[] = ", expecting %s";
1487       static char const yyor[] = " or %s";
1488       char yyformat[sizeof yyunexpected
1489                     + sizeof yyexpecting - 1
1490                     + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
1491                        * (sizeof yyor - 1))];
1492       char const *yyprefix = yyexpecting;
1493
1494       /* Start YYX at -YYN if negative to avoid negative indexes in
1495          YYCHECK.  */
1496       int yyxbegin = yyn < 0 ? -yyn : 0;
1497
1498       /* Stay within bounds of both yycheck and yytname.  */
1499       int yychecklim = YYLAST - yyn + 1;
1500       int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1501       int yycount = 1;
1502
1503       yyarg[0] = yytname[yytype];
1504       yyfmt = yystpcpy (yyformat, yyunexpected);
1505
1506       for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1507         if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
1508           {
1509             if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1510               {
1511                 yycount = 1;
1512                 yysize = yysize0;
1513                 yyformat[sizeof yyunexpected - 1] = '\0';
1514                 break;
1515               }
1516             yyarg[yycount++] = yytname[yyx];
1517             yysize1 = yysize + yytnamerr (0, yytname[yyx]);
1518             yysize_overflow |= (yysize1 < yysize);
1519             yysize = yysize1;
1520             yyfmt = yystpcpy (yyfmt, yyprefix);
1521             yyprefix = yyor;
1522           }
1523
1524       yyf = YY_(yyformat);
1525       yysize1 = yysize + yystrlen (yyf);
1526       yysize_overflow |= (yysize1 < yysize);
1527       yysize = yysize1;
1528
1529       if (yysize_overflow)
1530         return YYSIZE_MAXIMUM;
1531
1532       if (yyresult)
1533         {
1534           /* Avoid sprintf, as that infringes on the user's name space.
1535              Don't have undefined behavior even if the translation
1536              produced a string with the wrong number of "%s"s.  */
1537           char *yyp = yyresult;
1538           int yyi = 0;
1539           while ((*yyp = *yyf) != '\0')
1540             {
1541               if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
1542                 {
1543                   yyp += yytnamerr (yyp, yyarg[yyi++]);
1544                   yyf += 2;
1545                 }
1546               else
1547                 {
1548                   yyp++;
1549                   yyf++;
1550                 }
1551             }
1552         }
1553       return yysize;
1554     }
1555 }
1556 #endif /* YYERROR_VERBOSE */
1557 \f
1558
1559 /*-----------------------------------------------.
1560 | Release the memory associated to this symbol.  |
1561 `-----------------------------------------------*/
1562
1563 /*ARGSUSED*/
1564 #if (defined __STDC__ || defined __C99__FUNC__ \
1565      || defined __cplusplus || defined _MSC_VER)
1566 static void
1567 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
1568 #else
1569 static void
1570 yydestruct (yymsg, yytype, yyvaluep)
1571     const char *yymsg;
1572     int yytype;
1573     YYSTYPE *yyvaluep;
1574 #endif
1575 {
1576   YYUSE (yyvaluep);
1577
1578   if (!yymsg)
1579     yymsg = "Deleting";
1580   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1581
1582   switch (yytype)
1583     {
1584
1585       default:
1586         break;
1587     }
1588 }
1589
1590 /* Prevent warnings from -Wmissing-prototypes.  */
1591 #ifdef YYPARSE_PARAM
1592 #if defined __STDC__ || defined __cplusplus
1593 int yyparse (void *YYPARSE_PARAM);
1594 #else
1595 int yyparse ();
1596 #endif
1597 #else /* ! YYPARSE_PARAM */
1598 #if defined __STDC__ || defined __cplusplus
1599 int yyparse (void);
1600 #else
1601 int yyparse ();
1602 #endif
1603 #endif /* ! YYPARSE_PARAM */
1604
1605
1606 /* The lookahead symbol.  */
1607 int yychar;
1608
1609 /* The semantic value of the lookahead symbol.  */
1610 YYSTYPE yylval;
1611
1612 /* Number of syntax errors so far.  */
1613 int yynerrs;
1614
1615
1616
1617 /*-------------------------.
1618 | yyparse or yypush_parse.  |
1619 `-------------------------*/
1620
1621 #ifdef YYPARSE_PARAM
1622 #if (defined __STDC__ || defined __C99__FUNC__ \
1623      || defined __cplusplus || defined _MSC_VER)
1624 int
1625 yyparse (void *YYPARSE_PARAM)
1626 #else
1627 int
1628 yyparse (YYPARSE_PARAM)
1629     void *YYPARSE_PARAM;
1630 #endif
1631 #else /* ! YYPARSE_PARAM */
1632 #if (defined __STDC__ || defined __C99__FUNC__ \
1633      || defined __cplusplus || defined _MSC_VER)
1634 int
1635 yyparse (void)
1636 #else
1637 int
1638 yyparse ()
1639
1640 #endif
1641 #endif
1642 {
1643
1644
1645     int yystate;
1646     /* Number of tokens to shift before error messages enabled.  */
1647     int yyerrstatus;
1648
1649     /* The stacks and their tools:
1650        `yyss': related to states.
1651        `yyvs': related to semantic values.
1652
1653        Refer to the stacks thru separate pointers, to allow yyoverflow
1654        to xreallocate them elsewhere.  */
1655
1656     /* The state stack.  */
1657     yytype_int16 yyssa[YYINITDEPTH];
1658     yytype_int16 *yyss;
1659     yytype_int16 *yyssp;
1660
1661     /* The semantic value stack.  */
1662     YYSTYPE yyvsa[YYINITDEPTH];
1663     YYSTYPE *yyvs;
1664     YYSTYPE *yyvsp;
1665
1666     YYSIZE_T yystacksize;
1667
1668   int yyn;
1669   int yyresult;
1670   /* Lookahead token as an internal (translated) token number.  */
1671   int yytoken;
1672   /* The variables used to return semantic value and location from the
1673      action routines.  */
1674   YYSTYPE yyval;
1675
1676 #if YYERROR_VERBOSE
1677   /* Buffer for error messages, and its allocated size.  */
1678   char yymsgbuf[128];
1679   char *yymsg = yymsgbuf;
1680   YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
1681 #endif
1682
1683 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N))
1684
1685   /* The number of symbols on the RHS of the reduced rule.
1686      Keep to zero when no symbol should be popped.  */
1687   int yylen = 0;
1688
1689   yytoken = 0;
1690   yyss = yyssa;
1691   yyvs = yyvsa;
1692   yystacksize = YYINITDEPTH;
1693
1694   YYDPRINTF ((stderr, "Starting parse\n"));
1695
1696   yystate = 0;
1697   yyerrstatus = 0;
1698   yynerrs = 0;
1699   yychar = YYEMPTY; /* Cause a token to be read.  */
1700
1701   /* Initialize stack pointers.
1702      Waste one element of value and location stack
1703      so that they stay on the same level as the state stack.
1704      The wasted elements are never initialized.  */
1705   yyssp = yyss;
1706   yyvsp = yyvs;
1707
1708   goto yysetstate;
1709
1710 /*------------------------------------------------------------.
1711 | yynewstate -- Push a new state, which is found in yystate.  |
1712 `------------------------------------------------------------*/
1713  yynewstate:
1714   /* In all cases, when you get here, the value and location stacks
1715      have just been pushed.  So pushing a state here evens the stacks.  */
1716   yyssp++;
1717
1718  yysetstate:
1719   *yyssp = yystate;
1720
1721   if (yyss + yystacksize - 1 <= yyssp)
1722     {
1723       /* Get the current used size of the three stacks, in elements.  */
1724       YYSIZE_T yysize = yyssp - yyss + 1;
1725
1726 #ifdef yyoverflow
1727       {
1728         /* Give user a chance to xreallocate the stack.  Use copies of
1729            these so that the &'s don't force the real ones into
1730            memory.  */
1731         YYSTYPE *yyvs1 = yyvs;
1732         yytype_int16 *yyss1 = yyss;
1733
1734         /* Each stack pointer address is followed by the size of the
1735            data in use in that stack, in bytes.  This used to be a
1736            conditional around just the two extra args, but that might
1737            be undefined if yyoverflow is a macro.  */
1738         yyoverflow (YY_("memory exhausted"),
1739                     &yyss1, yysize * sizeof (*yyssp),
1740                     &yyvs1, yysize * sizeof (*yyvsp),
1741                     &yystacksize);
1742
1743         yyss = yyss1;
1744         yyvs = yyvs1;
1745       }
1746 #else /* no yyoverflow */
1747 # ifndef YYSTACK_RELOCATE
1748       goto yyexhaustedlab;
1749 # else
1750       /* Extend the stack our own way.  */
1751       if (YYMAXDEPTH <= yystacksize)
1752         goto yyexhaustedlab;
1753       yystacksize *= 2;
1754       if (YYMAXDEPTH < yystacksize)
1755         yystacksize = YYMAXDEPTH;
1756
1757       {
1758         yytype_int16 *yyss1 = yyss;
1759         union yyalloc *yyptr =
1760           (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1761         if (! yyptr)
1762           goto yyexhaustedlab;
1763         YYSTACK_RELOCATE (yyss_alloc, yyss);
1764         YYSTACK_RELOCATE (yyvs_alloc, yyvs);
1765 #  undef YYSTACK_RELOCATE
1766         if (yyss1 != yyssa)
1767           YYSTACK_FREE (yyss1);
1768       }
1769 # endif
1770 #endif /* no yyoverflow */
1771
1772       yyssp = yyss + yysize - 1;
1773       yyvsp = yyvs + yysize - 1;
1774
1775       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1776                   (unsigned long int) yystacksize));
1777
1778       if (yyss + yystacksize - 1 <= yyssp)
1779         YYABORT;
1780     }
1781
1782   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1783
1784   if (yystate == YYFINAL)
1785     YYACCEPT;
1786
1787   goto yybackup;
1788
1789 /*-----------.
1790 | yybackup.  |
1791 `-----------*/
1792 yybackup:
1793
1794   /* Do appropriate processing given the current state.  Read a
1795      lookahead token if we need one and don't already have one.  */
1796
1797   /* First try to decide what to do without reference to lookahead token.  */
1798   yyn = yypact[yystate];
1799   if (yyn == YYPACT_NINF)
1800     goto yydefault;
1801
1802   /* Not known => get a lookahead token if don't already have one.  */
1803
1804   /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
1805   if (yychar == YYEMPTY)
1806     {
1807       YYDPRINTF ((stderr, "Reading a token: "));
1808       yychar = YYLEX;
1809     }
1810
1811   if (yychar <= YYEOF)
1812     {
1813       yychar = yytoken = YYEOF;
1814       YYDPRINTF ((stderr, "Now at end of input.\n"));
1815     }
1816   else
1817     {
1818       yytoken = YYTRANSLATE (yychar);
1819       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
1820     }
1821
1822   /* If the proper action on seeing token YYTOKEN is to reduce or to
1823      detect an error, take that action.  */
1824   yyn += yytoken;
1825   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1826     goto yydefault;
1827   yyn = yytable[yyn];
1828   if (yyn <= 0)
1829     {
1830       if (yyn == 0 || yyn == YYTABLE_NINF)
1831         goto yyerrlab;
1832       yyn = -yyn;
1833       goto yyreduce;
1834     }
1835
1836   /* Count tokens shifted since error; after three, turn off error
1837      status.  */
1838   if (yyerrstatus)
1839     yyerrstatus--;
1840
1841   /* Shift the lookahead token.  */
1842   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1843
1844   /* Discard the shifted token.  */
1845   yychar = YYEMPTY;
1846
1847   yystate = yyn;
1848   *++yyvsp = yylval;
1849
1850   goto yynewstate;
1851
1852
1853 /*-----------------------------------------------------------.
1854 | yydefault -- do the default action for the current state.  |
1855 `-----------------------------------------------------------*/
1856 yydefault:
1857   yyn = yydefact[yystate];
1858   if (yyn == 0)
1859     goto yyerrlab;
1860   goto yyreduce;
1861
1862
1863 /*-----------------------------.
1864 | yyreduce -- Do a reduction.  |
1865 `-----------------------------*/
1866 yyreduce:
1867   /* yyn is the number of a rule to reduce with.  */
1868   yylen = yyr2[yyn];
1869
1870   /* If YYLEN is nonzero, implement the default value of the action:
1871      `$$ = $1'.
1872
1873      Otherwise, the following line sets YYVAL to garbage.
1874      This behavior is undocumented and Bison
1875      users should not rely upon it.  Assigning to YYVAL
1876      unconditionally makes the parser a bit smaller, and it avoids a
1877      GCC warning that YYVAL may be used uninitialized.  */
1878   yyval = yyvsp[1-yylen];
1879
1880
1881   YY_REDUCE_PRINT (yyn);
1882   switch (yyn)
1883     {
1884         case 4:
1885
1886 /* Line 1455 of yacc.c  */
1887 #line 239 "ada-exp.y"
1888     { write_exp_elt_opcode (BINOP_COMMA); }
1889     break;
1890
1891   case 5:
1892
1893 /* Line 1455 of yacc.c  */
1894 #line 241 "ada-exp.y"
1895     { write_exp_elt_opcode (BINOP_ASSIGN); }
1896     break;
1897
1898   case 6:
1899
1900 /* Line 1455 of yacc.c  */
1901 #line 246 "ada-exp.y"
1902     { write_exp_elt_opcode (UNOP_IND); }
1903     break;
1904
1905   case 7:
1906
1907 /* Line 1455 of yacc.c  */
1908 #line 250 "ada-exp.y"
1909     { write_exp_op_with_string (STRUCTOP_STRUCT, (yyvsp[(2) - (2)].sval)); }
1910     break;
1911
1912   case 8:
1913
1914 /* Line 1455 of yacc.c  */
1915 #line 254 "ada-exp.y"
1916     {
1917                           write_exp_elt_opcode (OP_FUNCALL);
1918                           write_exp_elt_longcst ((yyvsp[(3) - (4)].lval));
1919                           write_exp_elt_opcode (OP_FUNCALL);
1920                         }
1921     break;
1922
1923   case 9:
1924
1925 /* Line 1455 of yacc.c  */
1926 #line 260 "ada-exp.y"
1927     {
1928                           if ((yyvsp[(1) - (4)].tval) != NULL)
1929                             {
1930                               if ((yyvsp[(3) - (4)].lval) != 1)
1931                                 error (_("Invalid conversion"));
1932                               write_exp_elt_opcode (UNOP_CAST);
1933                               write_exp_elt_type ((yyvsp[(1) - (4)].tval));
1934                               write_exp_elt_opcode (UNOP_CAST);
1935                             }
1936                           else
1937                             {
1938                               write_exp_elt_opcode (OP_FUNCALL);
1939                               write_exp_elt_longcst ((yyvsp[(3) - (4)].lval));
1940                               write_exp_elt_opcode (OP_FUNCALL);
1941                             }
1942                         }
1943     break;
1944
1945   case 10:
1946
1947 /* Line 1455 of yacc.c  */
1948 #line 278 "ada-exp.y"
1949     { type_qualifier = (yyvsp[(1) - (3)].tval); }
1950     break;
1951
1952   case 11:
1953
1954 /* Line 1455 of yacc.c  */
1955 #line 280 "ada-exp.y"
1956     {
1957                           if ((yyvsp[(1) - (7)].tval) == NULL)
1958                             error (_("Type required for qualification"));
1959                           write_exp_elt_opcode (UNOP_QUAL);
1960                           write_exp_elt_type ((yyvsp[(1) - (7)].tval));
1961                           write_exp_elt_opcode (UNOP_QUAL);
1962                           type_qualifier = (yyvsp[(3) - (7)].tval);
1963                         }
1964     break;
1965
1966   case 12:
1967
1968 /* Line 1455 of yacc.c  */
1969 #line 290 "ada-exp.y"
1970     { (yyval.tval) = type_qualifier; }
1971     break;
1972
1973   case 13:
1974
1975 /* Line 1455 of yacc.c  */
1976 #line 295 "ada-exp.y"
1977     { write_exp_elt_opcode (TERNOP_SLICE); }
1978     break;
1979
1980   case 14:
1981
1982 /* Line 1455 of yacc.c  */
1983 #line 297 "ada-exp.y"
1984     { if ((yyvsp[(1) - (6)].tval) == NULL) 
1985                             write_exp_elt_opcode (TERNOP_SLICE);
1986                           else
1987                             error (_("Cannot slice a type"));
1988                         }
1989     break;
1990
1991   case 15:
1992
1993 /* Line 1455 of yacc.c  */
1994 #line 304 "ada-exp.y"
1995     { }
1996     break;
1997
1998   case 16:
1999
2000 /* Line 1455 of yacc.c  */
2001 #line 316 "ada-exp.y"
2002     { if ((yyvsp[(1) - (1)].tval) != NULL)
2003                             {
2004                               write_exp_elt_opcode (OP_TYPE);
2005                               write_exp_elt_type ((yyvsp[(1) - (1)].tval));
2006                               write_exp_elt_opcode (OP_TYPE);
2007                             }
2008                         }
2009     break;
2010
2011   case 17:
2012
2013 /* Line 1455 of yacc.c  */
2014 #line 326 "ada-exp.y"
2015     { write_dollar_variable ((yyvsp[(1) - (1)].sval)); }
2016     break;
2017
2018   case 20:
2019
2020 /* Line 1455 of yacc.c  */
2021 #line 336 "ada-exp.y"
2022     { write_exp_elt_opcode (UNOP_NEG); }
2023     break;
2024
2025   case 21:
2026
2027 /* Line 1455 of yacc.c  */
2028 #line 340 "ada-exp.y"
2029     { write_exp_elt_opcode (UNOP_PLUS); }
2030     break;
2031
2032   case 22:
2033
2034 /* Line 1455 of yacc.c  */
2035 #line 344 "ada-exp.y"
2036     { write_exp_elt_opcode (UNOP_LOGICAL_NOT); }
2037     break;
2038
2039   case 23:
2040
2041 /* Line 1455 of yacc.c  */
2042 #line 348 "ada-exp.y"
2043     { write_exp_elt_opcode (UNOP_ABS); }
2044     break;
2045
2046   case 24:
2047
2048 /* Line 1455 of yacc.c  */
2049 #line 351 "ada-exp.y"
2050     { (yyval.lval) = 0; }
2051     break;
2052
2053   case 25:
2054
2055 /* Line 1455 of yacc.c  */
2056 #line 355 "ada-exp.y"
2057     { (yyval.lval) = 1; }
2058     break;
2059
2060   case 26:
2061
2062 /* Line 1455 of yacc.c  */
2063 #line 357 "ada-exp.y"
2064     { (yyval.lval) = 1; }
2065     break;
2066
2067   case 27:
2068
2069 /* Line 1455 of yacc.c  */
2070 #line 359 "ada-exp.y"
2071     { (yyval.lval) = (yyvsp[(1) - (3)].lval) + 1; }
2072     break;
2073
2074   case 28:
2075
2076 /* Line 1455 of yacc.c  */
2077 #line 361 "ada-exp.y"
2078     { (yyval.lval) = (yyvsp[(1) - (5)].lval) + 1; }
2079     break;
2080
2081   case 29:
2082
2083 /* Line 1455 of yacc.c  */
2084 #line 366 "ada-exp.y"
2085     { 
2086                           if ((yyvsp[(2) - (4)].tval) == NULL)
2087                             error (_("Type required within braces in coercion"));
2088                           write_exp_elt_opcode (UNOP_MEMVAL);
2089                           write_exp_elt_type ((yyvsp[(2) - (4)].tval));
2090                           write_exp_elt_opcode (UNOP_MEMVAL);
2091                         }
2092     break;
2093
2094   case 30:
2095
2096 /* Line 1455 of yacc.c  */
2097 #line 378 "ada-exp.y"
2098     { write_exp_elt_opcode (BINOP_EXP); }
2099     break;
2100
2101   case 31:
2102
2103 /* Line 1455 of yacc.c  */
2104 #line 382 "ada-exp.y"
2105     { write_exp_elt_opcode (BINOP_MUL); }
2106     break;
2107
2108   case 32:
2109
2110 /* Line 1455 of yacc.c  */
2111 #line 386 "ada-exp.y"
2112     { write_exp_elt_opcode (BINOP_DIV); }
2113     break;
2114
2115   case 33:
2116
2117 /* Line 1455 of yacc.c  */
2118 #line 390 "ada-exp.y"
2119     { write_exp_elt_opcode (BINOP_REM); }
2120     break;
2121
2122   case 34:
2123
2124 /* Line 1455 of yacc.c  */
2125 #line 394 "ada-exp.y"
2126     { write_exp_elt_opcode (BINOP_MOD); }
2127     break;
2128
2129   case 35:
2130
2131 /* Line 1455 of yacc.c  */
2132 #line 398 "ada-exp.y"
2133     { write_exp_elt_opcode (BINOP_REPEAT); }
2134     break;
2135
2136   case 36:
2137
2138 /* Line 1455 of yacc.c  */
2139 #line 402 "ada-exp.y"
2140     { write_exp_elt_opcode (BINOP_ADD); }
2141     break;
2142
2143   case 37:
2144
2145 /* Line 1455 of yacc.c  */
2146 #line 406 "ada-exp.y"
2147     { write_exp_elt_opcode (BINOP_CONCAT); }
2148     break;
2149
2150   case 38:
2151
2152 /* Line 1455 of yacc.c  */
2153 #line 410 "ada-exp.y"
2154     { write_exp_elt_opcode (BINOP_SUB); }
2155     break;
2156
2157   case 40:
2158
2159 /* Line 1455 of yacc.c  */
2160 #line 417 "ada-exp.y"
2161     { write_exp_elt_opcode (BINOP_EQUAL); }
2162     break;
2163
2164   case 41:
2165
2166 /* Line 1455 of yacc.c  */
2167 #line 421 "ada-exp.y"
2168     { write_exp_elt_opcode (BINOP_NOTEQUAL); }
2169     break;
2170
2171   case 42:
2172
2173 /* Line 1455 of yacc.c  */
2174 #line 425 "ada-exp.y"
2175     { write_exp_elt_opcode (BINOP_LEQ); }
2176     break;
2177
2178   case 43:
2179
2180 /* Line 1455 of yacc.c  */
2181 #line 429 "ada-exp.y"
2182     { write_exp_elt_opcode (TERNOP_IN_RANGE); }
2183     break;
2184
2185   case 44:
2186
2187 /* Line 1455 of yacc.c  */
2188 #line 431 "ada-exp.y"
2189     { write_exp_elt_opcode (BINOP_IN_BOUNDS);
2190                           write_exp_elt_longcst ((LONGEST) (yyvsp[(5) - (5)].lval));
2191                           write_exp_elt_opcode (BINOP_IN_BOUNDS);
2192                         }
2193     break;
2194
2195   case 45:
2196
2197 /* Line 1455 of yacc.c  */
2198 #line 436 "ada-exp.y"
2199     { 
2200                           if ((yyvsp[(3) - (3)].tval) == NULL)
2201                             error (_("Right operand of 'in' must be type"));
2202                           write_exp_elt_opcode (UNOP_IN_RANGE);
2203                           write_exp_elt_type ((yyvsp[(3) - (3)].tval));
2204                           write_exp_elt_opcode (UNOP_IN_RANGE);
2205                         }
2206     break;
2207
2208   case 46:
2209
2210 /* Line 1455 of yacc.c  */
2211 #line 444 "ada-exp.y"
2212     { write_exp_elt_opcode (TERNOP_IN_RANGE);
2213                           write_exp_elt_opcode (UNOP_LOGICAL_NOT);
2214                         }
2215     break;
2216
2217   case 47:
2218
2219 /* Line 1455 of yacc.c  */
2220 #line 448 "ada-exp.y"
2221     { write_exp_elt_opcode (BINOP_IN_BOUNDS);
2222                           write_exp_elt_longcst ((LONGEST) (yyvsp[(6) - (6)].lval));
2223                           write_exp_elt_opcode (BINOP_IN_BOUNDS);
2224                           write_exp_elt_opcode (UNOP_LOGICAL_NOT);
2225                         }
2226     break;
2227
2228   case 48:
2229
2230 /* Line 1455 of yacc.c  */
2231 #line 454 "ada-exp.y"
2232     { 
2233                           if ((yyvsp[(4) - (4)].tval) == NULL)
2234                             error (_("Right operand of 'in' must be type"));
2235                           write_exp_elt_opcode (UNOP_IN_RANGE);
2236                           write_exp_elt_type ((yyvsp[(4) - (4)].tval));
2237                           write_exp_elt_opcode (UNOP_IN_RANGE);
2238                           write_exp_elt_opcode (UNOP_LOGICAL_NOT);
2239                         }
2240     break;
2241
2242   case 49:
2243
2244 /* Line 1455 of yacc.c  */
2245 #line 465 "ada-exp.y"
2246     { write_exp_elt_opcode (BINOP_GEQ); }
2247     break;
2248
2249   case 50:
2250
2251 /* Line 1455 of yacc.c  */
2252 #line 469 "ada-exp.y"
2253     { write_exp_elt_opcode (BINOP_LESS); }
2254     break;
2255
2256   case 51:
2257
2258 /* Line 1455 of yacc.c  */
2259 #line 473 "ada-exp.y"
2260     { write_exp_elt_opcode (BINOP_GTR); }
2261     break;
2262
2263   case 58:
2264
2265 /* Line 1455 of yacc.c  */
2266 #line 486 "ada-exp.y"
2267     { write_exp_elt_opcode (BINOP_BITWISE_AND); }
2268     break;
2269
2270   case 59:
2271
2272 /* Line 1455 of yacc.c  */
2273 #line 488 "ada-exp.y"
2274     { write_exp_elt_opcode (BINOP_BITWISE_AND); }
2275     break;
2276
2277   case 60:
2278
2279 /* Line 1455 of yacc.c  */
2280 #line 493 "ada-exp.y"
2281     { write_exp_elt_opcode (BINOP_LOGICAL_AND); }
2282     break;
2283
2284   case 61:
2285
2286 /* Line 1455 of yacc.c  */
2287 #line 495 "ada-exp.y"
2288     { write_exp_elt_opcode (BINOP_LOGICAL_AND); }
2289     break;
2290
2291   case 62:
2292
2293 /* Line 1455 of yacc.c  */
2294 #line 500 "ada-exp.y"
2295     { write_exp_elt_opcode (BINOP_BITWISE_IOR); }
2296     break;
2297
2298   case 63:
2299
2300 /* Line 1455 of yacc.c  */
2301 #line 502 "ada-exp.y"
2302     { write_exp_elt_opcode (BINOP_BITWISE_IOR); }
2303     break;
2304
2305   case 64:
2306
2307 /* Line 1455 of yacc.c  */
2308 #line 507 "ada-exp.y"
2309     { write_exp_elt_opcode (BINOP_LOGICAL_OR); }
2310     break;
2311
2312   case 65:
2313
2314 /* Line 1455 of yacc.c  */
2315 #line 509 "ada-exp.y"
2316     { write_exp_elt_opcode (BINOP_LOGICAL_OR); }
2317     break;
2318
2319   case 66:
2320
2321 /* Line 1455 of yacc.c  */
2322 #line 513 "ada-exp.y"
2323     { write_exp_elt_opcode (BINOP_BITWISE_XOR); }
2324     break;
2325
2326   case 67:
2327
2328 /* Line 1455 of yacc.c  */
2329 #line 515 "ada-exp.y"
2330     { write_exp_elt_opcode (BINOP_BITWISE_XOR); }
2331     break;
2332
2333   case 68:
2334
2335 /* Line 1455 of yacc.c  */
2336 #line 527 "ada-exp.y"
2337     { write_exp_elt_opcode (UNOP_ADDR); }
2338     break;
2339
2340   case 69:
2341
2342 /* Line 1455 of yacc.c  */
2343 #line 529 "ada-exp.y"
2344     { write_exp_elt_opcode (UNOP_ADDR);
2345                           write_exp_elt_opcode (UNOP_CAST);
2346                           write_exp_elt_type (type_system_address ());
2347                           write_exp_elt_opcode (UNOP_CAST);
2348                         }
2349     break;
2350
2351   case 70:
2352
2353 /* Line 1455 of yacc.c  */
2354 #line 535 "ada-exp.y"
2355     { write_int ((yyvsp[(3) - (3)].lval), type_int ());
2356                           write_exp_elt_opcode (OP_ATR_FIRST); }
2357     break;
2358
2359   case 71:
2360
2361 /* Line 1455 of yacc.c  */
2362 #line 538 "ada-exp.y"
2363     { write_int ((yyvsp[(3) - (3)].lval), type_int ());
2364                           write_exp_elt_opcode (OP_ATR_LAST); }
2365     break;
2366
2367   case 72:
2368
2369 /* Line 1455 of yacc.c  */
2370 #line 541 "ada-exp.y"
2371     { write_int ((yyvsp[(3) - (3)].lval), type_int ());
2372                           write_exp_elt_opcode (OP_ATR_LENGTH); }
2373     break;
2374
2375   case 73:
2376
2377 /* Line 1455 of yacc.c  */
2378 #line 544 "ada-exp.y"
2379     { write_exp_elt_opcode (OP_ATR_SIZE); }
2380     break;
2381
2382   case 74:
2383
2384 /* Line 1455 of yacc.c  */
2385 #line 546 "ada-exp.y"
2386     { write_exp_elt_opcode (OP_ATR_TAG); }
2387     break;
2388
2389   case 75:
2390
2391 /* Line 1455 of yacc.c  */
2392 #line 548 "ada-exp.y"
2393     { write_exp_elt_opcode (OP_ATR_MIN); }
2394     break;
2395
2396   case 76:
2397
2398 /* Line 1455 of yacc.c  */
2399 #line 550 "ada-exp.y"
2400     { write_exp_elt_opcode (OP_ATR_MAX); }
2401     break;
2402
2403   case 77:
2404
2405 /* Line 1455 of yacc.c  */
2406 #line 552 "ada-exp.y"
2407     { write_exp_elt_opcode (OP_ATR_POS); }
2408     break;
2409
2410   case 78:
2411
2412 /* Line 1455 of yacc.c  */
2413 #line 554 "ada-exp.y"
2414     { write_exp_elt_opcode (OP_ATR_VAL); }
2415     break;
2416
2417   case 79:
2418
2419 /* Line 1455 of yacc.c  */
2420 #line 556 "ada-exp.y"
2421     { write_exp_elt_opcode (OP_ATR_MODULUS); }
2422     break;
2423
2424   case 80:
2425
2426 /* Line 1455 of yacc.c  */
2427 #line 560 "ada-exp.y"
2428     { (yyval.lval) = 1; }
2429     break;
2430
2431   case 81:
2432
2433 /* Line 1455 of yacc.c  */
2434 #line 562 "ada-exp.y"
2435     { (yyval.lval) = (yyvsp[(2) - (3)].typed_val).val; }
2436     break;
2437
2438   case 82:
2439
2440 /* Line 1455 of yacc.c  */
2441 #line 567 "ada-exp.y"
2442     { 
2443                           if ((yyvsp[(1) - (1)].tval) == NULL)
2444                             error (_("Prefix must be type"));
2445                           write_exp_elt_opcode (OP_TYPE);
2446                           write_exp_elt_type ((yyvsp[(1) - (1)].tval));
2447                           write_exp_elt_opcode (OP_TYPE); }
2448     break;
2449
2450   case 84:
2451
2452 /* Line 1455 of yacc.c  */
2453 #line 578 "ada-exp.y"
2454     { write_exp_elt_opcode (OP_TYPE);
2455                           write_exp_elt_type (parse_type->builtin_void);
2456                           write_exp_elt_opcode (OP_TYPE); }
2457     break;
2458
2459   case 85:
2460
2461 /* Line 1455 of yacc.c  */
2462 #line 585 "ada-exp.y"
2463     { write_int ((LONGEST) (yyvsp[(1) - (1)].typed_val).val, (yyvsp[(1) - (1)].typed_val).type); }
2464     break;
2465
2466   case 86:
2467
2468 /* Line 1455 of yacc.c  */
2469 #line 589 "ada-exp.y"
2470     { write_int (convert_char_literal (type_qualifier, (yyvsp[(1) - (1)].typed_val).val),
2471                                (type_qualifier == NULL) 
2472                                ? (yyvsp[(1) - (1)].typed_val).type : type_qualifier);
2473                   }
2474     break;
2475
2476   case 87:
2477
2478 /* Line 1455 of yacc.c  */
2479 #line 596 "ada-exp.y"
2480     { write_exp_elt_opcode (OP_DOUBLE);
2481                           write_exp_elt_type ((yyvsp[(1) - (1)].typed_val_float).type);
2482                           write_exp_elt_dblcst ((yyvsp[(1) - (1)].typed_val_float).dval);
2483                           write_exp_elt_opcode (OP_DOUBLE);
2484                         }
2485     break;
2486
2487   case 88:
2488
2489 /* Line 1455 of yacc.c  */
2490 #line 604 "ada-exp.y"
2491     { write_int (0, type_int ()); }
2492     break;
2493
2494   case 89:
2495
2496 /* Line 1455 of yacc.c  */
2497 #line 608 "ada-exp.y"
2498     { 
2499                           write_exp_op_with_string (OP_STRING, (yyvsp[(1) - (1)].sval));
2500                         }
2501     break;
2502
2503   case 90:
2504
2505 /* Line 1455 of yacc.c  */
2506 #line 614 "ada-exp.y"
2507     { write_int (1, type_boolean ()); }
2508     break;
2509
2510   case 91:
2511
2512 /* Line 1455 of yacc.c  */
2513 #line 616 "ada-exp.y"
2514     { write_int (0, type_boolean ()); }
2515     break;
2516
2517   case 92:
2518
2519 /* Line 1455 of yacc.c  */
2520 #line 620 "ada-exp.y"
2521     { error (_("NEW not implemented.")); }
2522     break;
2523
2524   case 93:
2525
2526 /* Line 1455 of yacc.c  */
2527 #line 624 "ada-exp.y"
2528     { (yyval.tval) = write_var_or_type (NULL, (yyvsp[(1) - (1)].sval)); }
2529     break;
2530
2531   case 94:
2532
2533 /* Line 1455 of yacc.c  */
2534 #line 626 "ada-exp.y"
2535     { (yyval.tval) = write_var_or_type ((yyvsp[(1) - (2)].bval), (yyvsp[(2) - (2)].sval)); }
2536     break;
2537
2538   case 95:
2539
2540 /* Line 1455 of yacc.c  */
2541 #line 628 "ada-exp.y"
2542     { 
2543                           (yyval.tval) = write_var_or_type (NULL, (yyvsp[(1) - (2)].sval));
2544                           if ((yyval.tval) == NULL)
2545                             write_exp_elt_opcode (UNOP_ADDR);
2546                           else
2547                             (yyval.tval) = lookup_pointer_type ((yyval.tval));
2548                         }
2549     break;
2550
2551   case 96:
2552
2553 /* Line 1455 of yacc.c  */
2554 #line 636 "ada-exp.y"
2555     { 
2556                           (yyval.tval) = write_var_or_type ((yyvsp[(1) - (3)].bval), (yyvsp[(2) - (3)].sval));
2557                           if ((yyval.tval) == NULL)
2558                             write_exp_elt_opcode (UNOP_ADDR);
2559                           else
2560                             (yyval.tval) = lookup_pointer_type ((yyval.tval));
2561                         }
2562     break;
2563
2564   case 97:
2565
2566 /* Line 1455 of yacc.c  */
2567 #line 647 "ada-exp.y"
2568     { (yyval.bval) = block_lookup (NULL, (yyvsp[(1) - (2)].sval).ptr); }
2569     break;
2570
2571   case 98:
2572
2573 /* Line 1455 of yacc.c  */
2574 #line 649 "ada-exp.y"
2575     { (yyval.bval) = block_lookup ((yyvsp[(1) - (3)].bval), (yyvsp[(2) - (3)].sval).ptr); }
2576     break;
2577
2578   case 99:
2579
2580 /* Line 1455 of yacc.c  */
2581 #line 654 "ada-exp.y"
2582     {
2583                           write_exp_elt_opcode (OP_AGGREGATE);
2584                           write_exp_elt_longcst ((yyvsp[(2) - (3)].lval));
2585                           write_exp_elt_opcode (OP_AGGREGATE);
2586                         }
2587     break;
2588
2589   case 100:
2590
2591 /* Line 1455 of yacc.c  */
2592 #line 662 "ada-exp.y"
2593     { (yyval.lval) = (yyvsp[(1) - (1)].lval); }
2594     break;
2595
2596   case 101:
2597
2598 /* Line 1455 of yacc.c  */
2599 #line 664 "ada-exp.y"
2600     { write_exp_elt_opcode (OP_POSITIONAL);
2601                           write_exp_elt_longcst ((yyvsp[(1) - (2)].lval));
2602                           write_exp_elt_opcode (OP_POSITIONAL);
2603                           (yyval.lval) = (yyvsp[(1) - (2)].lval) + 1;
2604                         }
2605     break;
2606
2607   case 102:
2608
2609 /* Line 1455 of yacc.c  */
2610 #line 670 "ada-exp.y"
2611     { (yyval.lval) = (yyvsp[(1) - (2)].lval) + (yyvsp[(2) - (2)].lval); }
2612     break;
2613
2614   case 103:
2615
2616 /* Line 1455 of yacc.c  */
2617 #line 675 "ada-exp.y"
2618     { write_exp_elt_opcode (OP_POSITIONAL);
2619                           write_exp_elt_longcst (0);
2620                           write_exp_elt_opcode (OP_POSITIONAL);
2621                           (yyval.lval) = 1;
2622                         }
2623     break;
2624
2625   case 104:
2626
2627 /* Line 1455 of yacc.c  */
2628 #line 681 "ada-exp.y"
2629     { write_exp_elt_opcode (OP_POSITIONAL);
2630                           write_exp_elt_longcst ((yyvsp[(1) - (3)].lval));
2631                           write_exp_elt_opcode (OP_POSITIONAL);
2632                           (yyval.lval) = (yyvsp[(1) - (3)].lval) + 1; 
2633                         }
2634     break;
2635
2636   case 105:
2637
2638 /* Line 1455 of yacc.c  */
2639 #line 689 "ada-exp.y"
2640     { (yyval.lval) = 1; }
2641     break;
2642
2643   case 106:
2644
2645 /* Line 1455 of yacc.c  */
2646 #line 690 "ada-exp.y"
2647     { (yyval.lval) = 1; }
2648     break;
2649
2650   case 107:
2651
2652 /* Line 1455 of yacc.c  */
2653 #line 692 "ada-exp.y"
2654     { (yyval.lval) = (yyvsp[(3) - (3)].lval) + 1; }
2655     break;
2656
2657   case 108:
2658
2659 /* Line 1455 of yacc.c  */
2660 #line 696 "ada-exp.y"
2661     { write_exp_elt_opcode (OP_OTHERS); }
2662     break;
2663
2664   case 109:
2665
2666 /* Line 1455 of yacc.c  */
2667 #line 701 "ada-exp.y"
2668     {
2669                           write_exp_elt_opcode (OP_CHOICES);
2670                           write_exp_elt_longcst ((yyvsp[(1) - (1)].lval));
2671                           write_exp_elt_opcode (OP_CHOICES);
2672                         }
2673     break;
2674
2675   case 110:
2676
2677 /* Line 1455 of yacc.c  */
2678 #line 715 "ada-exp.y"
2679     { write_name_assoc ((yyvsp[(1) - (2)].sval)); }
2680     break;
2681
2682   case 111:
2683
2684 /* Line 1455 of yacc.c  */
2685 #line 716 "ada-exp.y"
2686     { (yyval.lval) = 1; }
2687     break;
2688
2689   case 112:
2690
2691 /* Line 1455 of yacc.c  */
2692 #line 718 "ada-exp.y"
2693     { (yyval.lval) = 1; }
2694     break;
2695
2696   case 113:
2697
2698 /* Line 1455 of yacc.c  */
2699 #line 720 "ada-exp.y"
2700     { write_exp_elt_opcode (OP_DISCRETE_RANGE);
2701                           write_exp_op_with_string (OP_NAME, empty_stoken);
2702                         }
2703     break;
2704
2705   case 114:
2706
2707 /* Line 1455 of yacc.c  */
2708 #line 723 "ada-exp.y"
2709     { (yyval.lval) = 1; }
2710     break;
2711
2712   case 115:
2713
2714 /* Line 1455 of yacc.c  */
2715 #line 725 "ada-exp.y"
2716     { write_name_assoc ((yyvsp[(1) - (2)].sval)); }
2717     break;
2718
2719   case 116:
2720
2721 /* Line 1455 of yacc.c  */
2722 #line 726 "ada-exp.y"
2723     { (yyval.lval) = (yyvsp[(4) - (4)].lval) + 1; }
2724     break;
2725
2726   case 117:
2727
2728 /* Line 1455 of yacc.c  */
2729 #line 728 "ada-exp.y"
2730     { (yyval.lval) = (yyvsp[(3) - (3)].lval) + 1; }
2731     break;
2732
2733   case 118:
2734
2735 /* Line 1455 of yacc.c  */
2736 #line 730 "ada-exp.y"
2737     { write_exp_elt_opcode (OP_DISCRETE_RANGE); }
2738     break;
2739
2740   case 119:
2741
2742 /* Line 1455 of yacc.c  */
2743 #line 731 "ada-exp.y"
2744     { (yyval.lval) = (yyvsp[(6) - (6)].lval) + 1; }
2745     break;
2746
2747   case 120:
2748
2749 /* Line 1455 of yacc.c  */
2750 #line 738 "ada-exp.y"
2751     { write_exp_elt_opcode (UNOP_IND); }
2752     break;
2753
2754   case 121:
2755
2756 /* Line 1455 of yacc.c  */
2757 #line 740 "ada-exp.y"
2758     { write_exp_elt_opcode (UNOP_ADDR); }
2759     break;
2760
2761   case 122:
2762
2763 /* Line 1455 of yacc.c  */
2764 #line 742 "ada-exp.y"
2765     { write_exp_elt_opcode (BINOP_SUBSCRIPT); }
2766     break;
2767
2768
2769
2770 /* Line 1455 of yacc.c  */
2771 #line 2773 "ada-exp.c"
2772       default: break;
2773     }
2774   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
2775
2776   YYPOPSTACK (yylen);
2777   yylen = 0;
2778   YY_STACK_PRINT (yyss, yyssp);
2779
2780   *++yyvsp = yyval;
2781
2782   /* Now `shift' the result of the reduction.  Determine what state
2783      that goes to, based on the state we popped back to and the rule
2784      number reduced by.  */
2785
2786   yyn = yyr1[yyn];
2787
2788   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
2789   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
2790     yystate = yytable[yystate];
2791   else
2792     yystate = yydefgoto[yyn - YYNTOKENS];
2793
2794   goto yynewstate;
2795
2796
2797 /*------------------------------------.
2798 | yyerrlab -- here on detecting error |
2799 `------------------------------------*/
2800 yyerrlab:
2801   /* If not already recovering from an error, report this error.  */
2802   if (!yyerrstatus)
2803     {
2804       ++yynerrs;
2805 #if ! YYERROR_VERBOSE
2806       yyerror (YY_("syntax error"));
2807 #else
2808       {
2809         YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
2810         if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
2811           {
2812             YYSIZE_T yyalloc = 2 * yysize;
2813             if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
2814               yyalloc = YYSTACK_ALLOC_MAXIMUM;
2815             if (yymsg != yymsgbuf)
2816               YYSTACK_FREE (yymsg);
2817             yymsg = (char *) YYSTACK_ALLOC (yyalloc);
2818             if (yymsg)
2819               yymsg_alloc = yyalloc;
2820             else
2821               {
2822                 yymsg = yymsgbuf;
2823                 yymsg_alloc = sizeof yymsgbuf;
2824               }
2825           }
2826
2827         if (0 < yysize && yysize <= yymsg_alloc)
2828           {
2829             (void) yysyntax_error (yymsg, yystate, yychar);
2830             yyerror (yymsg);
2831           }
2832         else
2833           {
2834             yyerror (YY_("syntax error"));
2835             if (yysize != 0)
2836               goto yyexhaustedlab;
2837           }
2838       }
2839 #endif
2840     }
2841
2842
2843
2844   if (yyerrstatus == 3)
2845     {
2846       /* If just tried and failed to reuse lookahead token after an
2847          error, discard it.  */
2848
2849       if (yychar <= YYEOF)
2850         {
2851           /* Return failure if at end of input.  */
2852           if (yychar == YYEOF)
2853             YYABORT;
2854         }
2855       else
2856         {
2857           yydestruct ("Error: discarding",
2858                       yytoken, &yylval);
2859           yychar = YYEMPTY;
2860         }
2861     }
2862
2863   /* Else will try to reuse lookahead token after shifting the error
2864      token.  */
2865   goto yyerrlab1;
2866
2867
2868 /*---------------------------------------------------.
2869 | yyerrorlab -- error raised explicitly by YYERROR.  |
2870 `---------------------------------------------------*/
2871 yyerrorlab:
2872
2873   /* Pacify compilers like GCC when the user code never invokes
2874      YYERROR and the label yyerrorlab therefore never appears in user
2875      code.  */
2876   if (/*CONSTCOND*/ 0)
2877      goto yyerrorlab;
2878
2879   /* Do not reclaim the symbols of the rule which action triggered
2880      this YYERROR.  */
2881   YYPOPSTACK (yylen);
2882   yylen = 0;
2883   YY_STACK_PRINT (yyss, yyssp);
2884   yystate = *yyssp;
2885   goto yyerrlab1;
2886
2887
2888 /*-------------------------------------------------------------.
2889 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
2890 `-------------------------------------------------------------*/
2891 yyerrlab1:
2892   yyerrstatus = 3;      /* Each real token shifted decrements this.  */
2893
2894   for (;;)
2895     {
2896       yyn = yypact[yystate];
2897       if (yyn != YYPACT_NINF)
2898         {
2899           yyn += YYTERROR;
2900           if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
2901             {
2902               yyn = yytable[yyn];
2903               if (0 < yyn)
2904                 break;
2905             }
2906         }
2907
2908       /* Pop the current state because it cannot handle the error token.  */
2909       if (yyssp == yyss)
2910         YYABORT;
2911
2912
2913       yydestruct ("Error: popping",
2914                   yystos[yystate], yyvsp);
2915       YYPOPSTACK (1);
2916       yystate = *yyssp;
2917       YY_STACK_PRINT (yyss, yyssp);
2918     }
2919
2920   *++yyvsp = yylval;
2921
2922
2923   /* Shift the error token.  */
2924   YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
2925
2926   yystate = yyn;
2927   goto yynewstate;
2928
2929
2930 /*-------------------------------------.
2931 | yyacceptlab -- YYACCEPT comes here.  |
2932 `-------------------------------------*/
2933 yyacceptlab:
2934   yyresult = 0;
2935   goto yyreturn;
2936
2937 /*-----------------------------------.
2938 | yyabortlab -- YYABORT comes here.  |
2939 `-----------------------------------*/
2940 yyabortlab:
2941   yyresult = 1;
2942   goto yyreturn;
2943
2944 #if !defined(yyoverflow) || YYERROR_VERBOSE
2945 /*-------------------------------------------------.
2946 | yyexhaustedlab -- memory exhaustion comes here.  |
2947 `-------------------------------------------------*/
2948 yyexhaustedlab:
2949   yyerror (YY_("memory exhausted"));
2950   yyresult = 2;
2951   /* Fall through.  */
2952 #endif
2953
2954 yyreturn:
2955   if (yychar != YYEMPTY)
2956      yydestruct ("Cleanup: discarding lookahead",
2957                  yytoken, &yylval);
2958   /* Do not reclaim the symbols of the rule which action triggered
2959      this YYABORT or YYACCEPT.  */
2960   YYPOPSTACK (yylen);
2961   YY_STACK_PRINT (yyss, yyssp);
2962   while (yyssp != yyss)
2963     {
2964       yydestruct ("Cleanup: popping",
2965                   yystos[*yyssp], yyvsp);
2966       YYPOPSTACK (1);
2967     }
2968 #ifndef yyoverflow
2969   if (yyss != yyssa)
2970     YYSTACK_FREE (yyss);
2971 #endif
2972 #if YYERROR_VERBOSE
2973   if (yymsg != yymsgbuf)
2974     YYSTACK_FREE (yymsg);
2975 #endif
2976   /* Make sure YYID is used.  */
2977   return YYID (yyresult);
2978 }
2979
2980
2981
2982 /* Line 1675 of yacc.c  */
2983 #line 745 "ada-exp.y"
2984
2985
2986 /* yylex defined in ada-lex.c: Reads one token, getting characters */
2987 /* through lexptr.  */
2988
2989 /* Remap normal flex interface names (yylex) as well as gratuitiously */
2990 /* global symbol names, so we can have multiple flex-generated parsers */
2991 /* in gdb.  */
2992
2993 /* (See note above on previous definitions for YACC.) */
2994
2995 #define yy_create_buffer ada_yy_create_buffer
2996 #define yy_delete_buffer ada_yy_delete_buffer
2997 #define yy_init_buffer ada_yy_init_buffer
2998 #define yy_load_buffer_state ada_yy_load_buffer_state
2999 #define yy_switch_to_buffer ada_yy_switch_to_buffer
3000 #define yyrestart ada_yyrestart
3001 #define yytext ada_yytext
3002 #define yywrap ada_yywrap
3003
3004 static struct obstack temp_parse_space;
3005
3006 /* The following kludge was found necessary to prevent conflicts between */
3007 /* defs.h and non-standard stdlib.h files.  */
3008 #define qsort __qsort__dummy
3009 #include "ada-lex.c"
3010
3011 int
3012 ada_parse (void)
3013 {
3014   lexer_init (yyin);            /* (Re-)initialize lexer.  */
3015   type_qualifier = NULL;
3016   obstack_free (&temp_parse_space, NULL);
3017   obstack_init (&temp_parse_space);
3018
3019   return _ada_parse ();
3020 }
3021
3022 void
3023 yyerror (char *msg)
3024 {
3025   error (_("Error in expression, near `%s'."), lexptr);
3026 }
3027
3028 /* The operator name corresponding to operator symbol STRING (adds
3029    quotes and maps to lower-case).  Destroys the previous contents of
3030    the array pointed to by STRING.ptr.  Error if STRING does not match
3031    a valid Ada operator.  Assumes that STRING.ptr points to a
3032    null-terminated string and that, if STRING is a valid operator
3033    symbol, the array pointed to by STRING.ptr contains at least
3034    STRING.length+3 characters.  */
3035
3036 static struct stoken
3037 string_to_operator (struct stoken string)
3038 {
3039   int i;
3040
3041   for (i = 0; ada_opname_table[i].encoded != NULL; i += 1)
3042     {
3043       if (string.length == strlen (ada_opname_table[i].decoded)-2
3044           && strncasecmp (string.ptr, ada_opname_table[i].decoded+1,
3045                           string.length) == 0)
3046         {
3047           strncpy (string.ptr, ada_opname_table[i].decoded,
3048                    string.length+2);
3049           string.length += 2;
3050           return string;
3051         }
3052     }
3053   error (_("Invalid operator symbol `%s'"), string.ptr);
3054 }
3055
3056 /* Emit expression to access an instance of SYM, in block BLOCK (if
3057  * non-NULL), and with :: qualification ORIG_LEFT_CONTEXT.  */
3058 static void
3059 write_var_from_sym (const struct block *orig_left_context,
3060                     const struct block *block,
3061                     struct symbol *sym)
3062 {
3063   if (orig_left_context == NULL && symbol_read_needs_frame (sym))
3064     {
3065       if (innermost_block == 0
3066           || contained_in (block, innermost_block))
3067         innermost_block = block;
3068     }
3069
3070   write_exp_elt_opcode (OP_VAR_VALUE);
3071   write_exp_elt_block (block);
3072   write_exp_elt_sym (sym);
3073   write_exp_elt_opcode (OP_VAR_VALUE);
3074 }
3075
3076 /* Write integer or boolean constant ARG of type TYPE.  */
3077
3078 static void
3079 write_int (LONGEST arg, struct type *type)
3080 {
3081   write_exp_elt_opcode (OP_LONG);
3082   write_exp_elt_type (type);
3083   write_exp_elt_longcst (arg);
3084   write_exp_elt_opcode (OP_LONG);
3085 }
3086
3087 /* Write an OPCODE, string, OPCODE sequence to the current expression.  */
3088 static void
3089 write_exp_op_with_string (enum exp_opcode opcode, struct stoken token)
3090 {
3091   write_exp_elt_opcode (opcode);
3092   write_exp_string (token);
3093   write_exp_elt_opcode (opcode);
3094 }
3095   
3096 /* Emit expression corresponding to the renamed object named 
3097  * designated by RENAMED_ENTITY[0 .. RENAMED_ENTITY_LEN-1] in the
3098  * context of ORIG_LEFT_CONTEXT, to which is applied the operations
3099  * encoded by RENAMING_EXPR.  MAX_DEPTH is the maximum number of
3100  * cascaded renamings to allow.  If ORIG_LEFT_CONTEXT is null, it
3101  * defaults to the currently selected block. ORIG_SYMBOL is the 
3102  * symbol that originally encoded the renaming.  It is needed only
3103  * because its prefix also qualifies any index variables used to index
3104  * or slice an array.  It should not be necessary once we go to the
3105  * new encoding entirely (FIXME pnh 7/20/2007).  */
3106
3107 static void
3108 write_object_renaming (const struct block *orig_left_context,
3109                        const char *renamed_entity, int renamed_entity_len,
3110                        const char *renaming_expr, int max_depth)
3111 {
3112   char *name;
3113   enum { SIMPLE_INDEX, LOWER_BOUND, UPPER_BOUND } slice_state;
3114   struct ada_symbol_info sym_info;
3115
3116   if (max_depth <= 0)
3117     error (_("Could not find renamed symbol"));
3118
3119   if (orig_left_context == NULL)
3120     orig_left_context = get_selected_block (NULL);
3121
3122   name = obstack_copy0 (&temp_parse_space, renamed_entity, renamed_entity_len);
3123   ada_lookup_encoded_symbol (name, orig_left_context, VAR_DOMAIN, &sym_info);
3124   if (sym_info.sym == NULL)
3125     error (_("Could not find renamed variable: %s"), ada_decode (name));
3126   else if (SYMBOL_CLASS (sym_info.sym) == LOC_TYPEDEF)
3127     /* We have a renaming of an old-style renaming symbol.  Don't
3128        trust the block information.  */
3129     sym_info.block = orig_left_context;
3130
3131   {
3132     const char *inner_renamed_entity;
3133     int inner_renamed_entity_len;
3134     const char *inner_renaming_expr;
3135
3136     switch (ada_parse_renaming (sym_info.sym, &inner_renamed_entity,
3137                                 &inner_renamed_entity_len,
3138                                 &inner_renaming_expr))
3139       {
3140       case ADA_NOT_RENAMING:
3141         write_var_from_sym (orig_left_context, sym_info.block, sym_info.sym);
3142         break;
3143       case ADA_OBJECT_RENAMING:
3144         write_object_renaming (sym_info.block,
3145                                inner_renamed_entity, inner_renamed_entity_len,
3146                                inner_renaming_expr, max_depth - 1);
3147         break;
3148       default:
3149         goto BadEncoding;
3150       }
3151   }
3152
3153   slice_state = SIMPLE_INDEX;
3154   while (*renaming_expr == 'X')
3155     {
3156       renaming_expr += 1;
3157
3158       switch (*renaming_expr) {
3159       case 'A':
3160         renaming_expr += 1;
3161         write_exp_elt_opcode (UNOP_IND);
3162         break;
3163       case 'L':
3164         slice_state = LOWER_BOUND;
3165         /* FALLTHROUGH */
3166       case 'S':
3167         renaming_expr += 1;
3168         if (isdigit (*renaming_expr))
3169           {
3170             char *next;
3171             long val = strtol (renaming_expr, &next, 10);
3172             if (next == renaming_expr)
3173               goto BadEncoding;
3174             renaming_expr = next;
3175             write_exp_elt_opcode (OP_LONG);
3176             write_exp_elt_type (type_int ());
3177             write_exp_elt_longcst ((LONGEST) val);
3178             write_exp_elt_opcode (OP_LONG);
3179           }
3180         else
3181           {
3182             const char *end;
3183             char *index_name;
3184             struct ada_symbol_info index_sym_info;
3185
3186             end = strchr (renaming_expr, 'X');
3187             if (end == NULL)
3188               end = renaming_expr + strlen (renaming_expr);
3189
3190             index_name =
3191               obstack_copy0 (&temp_parse_space, renaming_expr,
3192                              end - renaming_expr);
3193             renaming_expr = end;
3194
3195             ada_lookup_encoded_symbol (index_name, NULL, VAR_DOMAIN,
3196                                        &index_sym_info);
3197             if (index_sym_info.sym == NULL)
3198               error (_("Could not find %s"), index_name);
3199             else if (SYMBOL_CLASS (index_sym_info.sym) == LOC_TYPEDEF)
3200               /* Index is an old-style renaming symbol.  */
3201               index_sym_info.block = orig_left_context;
3202             write_var_from_sym (NULL, index_sym_info.block,
3203                                 index_sym_info.sym);
3204           }
3205         if (slice_state == SIMPLE_INDEX)
3206           {
3207             write_exp_elt_opcode (OP_FUNCALL);
3208             write_exp_elt_longcst ((LONGEST) 1);
3209             write_exp_elt_opcode (OP_FUNCALL);
3210           }
3211         else if (slice_state == LOWER_BOUND)
3212           slice_state = UPPER_BOUND;
3213         else if (slice_state == UPPER_BOUND)
3214           {
3215             write_exp_elt_opcode (TERNOP_SLICE);
3216             slice_state = SIMPLE_INDEX;
3217           }
3218         break;
3219
3220       case 'R':
3221         {
3222           struct stoken field_name;
3223           const char *end;
3224           renaming_expr += 1;
3225
3226           if (slice_state != SIMPLE_INDEX)
3227             goto BadEncoding;
3228           end = strchr (renaming_expr, 'X');
3229           if (end == NULL)
3230             end = renaming_expr + strlen (renaming_expr);
3231           field_name.length = end - renaming_expr;
3232           field_name.ptr = xmalloc (end - renaming_expr + 1);
3233           strncpy (field_name.ptr, renaming_expr, end - renaming_expr);
3234           field_name.ptr[end - renaming_expr] = '\000';
3235           renaming_expr = end;
3236           write_exp_op_with_string (STRUCTOP_STRUCT, field_name);
3237           break;
3238         }
3239
3240       default:
3241         goto BadEncoding;
3242       }
3243     }
3244   if (slice_state == SIMPLE_INDEX)
3245     return;
3246
3247  BadEncoding:
3248   error (_("Internal error in encoding of renaming declaration"));
3249 }
3250
3251 static struct block*
3252 block_lookup (struct block *context, char *raw_name)
3253 {
3254   char *name;
3255   struct ada_symbol_info *syms;
3256   int nsyms;
3257   struct symtab *symtab;
3258
3259   if (raw_name[0] == '\'')
3260     {
3261       raw_name += 1;
3262       name = raw_name;
3263     }
3264   else
3265     name = ada_encode (raw_name);
3266
3267   nsyms = ada_lookup_symbol_list (name, context, VAR_DOMAIN, &syms);
3268   if (context == NULL
3269       && (nsyms == 0 || SYMBOL_CLASS (syms[0].sym) != LOC_BLOCK))
3270     symtab = lookup_symtab (name);
3271   else
3272     symtab = NULL;
3273
3274   if (symtab != NULL)
3275     return BLOCKVECTOR_BLOCK (BLOCKVECTOR (symtab), STATIC_BLOCK);
3276   else if (nsyms == 0 || SYMBOL_CLASS (syms[0].sym) != LOC_BLOCK)
3277     {
3278       if (context == NULL)
3279         error (_("No file or function \"%s\"."), raw_name);
3280       else
3281         error (_("No function \"%s\" in specified context."), raw_name);
3282     }
3283   else
3284     {
3285       if (nsyms > 1)
3286         warning (_("Function name \"%s\" ambiguous here"), raw_name);
3287       return SYMBOL_BLOCK_VALUE (syms[0].sym);
3288     }
3289 }
3290
3291 static struct symbol*
3292 select_possible_type_sym (struct ada_symbol_info *syms, int nsyms)
3293 {
3294   int i;
3295   int preferred_index;
3296   struct type *preferred_type;
3297           
3298   preferred_index = -1; preferred_type = NULL;
3299   for (i = 0; i < nsyms; i += 1)
3300     switch (SYMBOL_CLASS (syms[i].sym))
3301       {
3302       case LOC_TYPEDEF:
3303         if (ada_prefer_type (SYMBOL_TYPE (syms[i].sym), preferred_type))
3304           {
3305             preferred_index = i;
3306             preferred_type = SYMBOL_TYPE (syms[i].sym);
3307           }
3308         break;
3309       case LOC_REGISTER:
3310       case LOC_ARG:
3311       case LOC_REF_ARG:
3312       case LOC_REGPARM_ADDR:
3313       case LOC_LOCAL:
3314       case LOC_COMPUTED:
3315         return NULL;
3316       default:
3317         break;
3318       }
3319   if (preferred_type == NULL)
3320     return NULL;
3321   return syms[preferred_index].sym;
3322 }
3323
3324 static struct type*
3325 find_primitive_type (char *name)
3326 {
3327   struct type *type;
3328   type = language_lookup_primitive_type_by_name (parse_language,
3329                                                  parse_gdbarch,
3330                                                  name);
3331   if (type == NULL && strcmp ("system__address", name) == 0)
3332     type = type_system_address ();
3333
3334   if (type != NULL)
3335     {
3336       /* Check to see if we have a regular definition of this
3337          type that just didn't happen to have been read yet.  */
3338       struct symbol *sym;
3339       char *expanded_name = 
3340         (char *) alloca (strlen (name) + sizeof ("standard__"));
3341       strcpy (expanded_name, "standard__");
3342       strcat (expanded_name, name);
3343       sym = ada_lookup_symbol (expanded_name, NULL, VAR_DOMAIN, NULL);
3344       if (sym != NULL && SYMBOL_CLASS (sym) == LOC_TYPEDEF)
3345         type = SYMBOL_TYPE (sym);
3346     }
3347
3348   return type;
3349 }
3350
3351 static int
3352 chop_selector (char *name, int end)
3353 {
3354   int i;
3355   for (i = end - 1; i > 0; i -= 1)
3356     if (name[i] == '.' || (name[i] == '_' && name[i+1] == '_'))
3357       return i;
3358   return -1;
3359 }
3360
3361 /* If NAME is a string beginning with a separator (either '__', or
3362    '.'), chop this separator and return the result; else, return
3363    NAME.  */
3364
3365 static char *
3366 chop_separator (char *name)
3367 {
3368   if (*name == '.')
3369    return name + 1;
3370
3371   if (name[0] == '_' && name[1] == '_')
3372     return name + 2;
3373
3374   return name;
3375 }
3376
3377 /* Given that SELS is a string of the form (<sep><identifier>)*, where
3378    <sep> is '__' or '.', write the indicated sequence of
3379    STRUCTOP_STRUCT expression operators. */
3380 static void
3381 write_selectors (char *sels)
3382 {
3383   while (*sels != '\0')
3384     {
3385       struct stoken field_name;
3386       char *p = chop_separator (sels);
3387       sels = p;
3388       while (*sels != '\0' && *sels != '.' 
3389              && (sels[0] != '_' || sels[1] != '_'))
3390         sels += 1;
3391       field_name.length = sels - p;
3392       field_name.ptr = p;
3393       write_exp_op_with_string (STRUCTOP_STRUCT, field_name);
3394     }
3395 }
3396
3397 /* Write a variable access (OP_VAR_VALUE) to ambiguous encoded name
3398    NAME[0..LEN-1], in block context BLOCK, to be resolved later.  Writes
3399    a temporary symbol that is valid until the next call to ada_parse.
3400    */
3401 static void
3402 write_ambiguous_var (const struct block *block, char *name, int len)
3403 {
3404   struct symbol *sym =
3405     obstack_alloc (&temp_parse_space, sizeof (struct symbol));
3406   memset (sym, 0, sizeof (struct symbol));
3407   SYMBOL_DOMAIN (sym) = UNDEF_DOMAIN;
3408   SYMBOL_LINKAGE_NAME (sym) = obstack_copy0 (&temp_parse_space, name, len);
3409   SYMBOL_LANGUAGE (sym) = language_ada;
3410
3411   write_exp_elt_opcode (OP_VAR_VALUE);
3412   write_exp_elt_block (block);
3413   write_exp_elt_sym (sym);
3414   write_exp_elt_opcode (OP_VAR_VALUE);
3415 }
3416
3417 /* A convenient wrapper around ada_get_field_index that takes
3418    a non NUL-terminated FIELD_NAME0 and a FIELD_NAME_LEN instead
3419    of a NUL-terminated field name.  */
3420
3421 static int
3422 ada_nget_field_index (const struct type *type, const char *field_name0,
3423                       int field_name_len, int maybe_missing)
3424 {
3425   char *field_name = alloca ((field_name_len + 1) * sizeof (char));
3426
3427   strncpy (field_name, field_name0, field_name_len);
3428   field_name[field_name_len] = '\0';
3429   return ada_get_field_index (type, field_name, maybe_missing);
3430 }
3431
3432 /* If encoded_field_name is the name of a field inside symbol SYM,
3433    then return the type of that field.  Otherwise, return NULL.
3434
3435    This function is actually recursive, so if ENCODED_FIELD_NAME
3436    doesn't match one of the fields of our symbol, then try to see
3437    if ENCODED_FIELD_NAME could not be a succession of field names
3438    (in other words, the user entered an expression of the form
3439    TYPE_NAME.FIELD1.FIELD2.FIELD3), in which case we evaluate
3440    each field name sequentially to obtain the desired field type.
3441    In case of failure, we return NULL.  */
3442
3443 static struct type *
3444 get_symbol_field_type (struct symbol *sym, char *encoded_field_name)
3445 {
3446   char *field_name = encoded_field_name;
3447   char *subfield_name;
3448   struct type *type = SYMBOL_TYPE (sym);
3449   int fieldno;
3450
3451   if (type == NULL || field_name == NULL)
3452     return NULL;
3453   type = check_typedef (type);
3454
3455   while (field_name[0] != '\0')
3456     {
3457       field_name = chop_separator (field_name);
3458
3459       fieldno = ada_get_field_index (type, field_name, 1);
3460       if (fieldno >= 0)
3461         return TYPE_FIELD_TYPE (type, fieldno);
3462
3463       subfield_name = field_name;
3464       while (*subfield_name != '\0' && *subfield_name != '.' 
3465              && (subfield_name[0] != '_' || subfield_name[1] != '_'))
3466         subfield_name += 1;
3467
3468       if (subfield_name[0] == '\0')
3469         return NULL;
3470
3471       fieldno = ada_nget_field_index (type, field_name,
3472                                       subfield_name - field_name, 1);
3473       if (fieldno < 0)
3474         return NULL;
3475
3476       type = TYPE_FIELD_TYPE (type, fieldno);
3477       field_name = subfield_name;
3478     }
3479
3480   return NULL;
3481 }
3482
3483 /* Look up NAME0 (an unencoded identifier or dotted name) in BLOCK (or 
3484    expression_block_context if NULL).  If it denotes a type, return
3485    that type.  Otherwise, write expression code to evaluate it as an
3486    object and return NULL. In this second case, NAME0 will, in general,
3487    have the form <name>(.<selector_name>)*, where <name> is an object
3488    or renaming encoded in the debugging data.  Calls error if no
3489    prefix <name> matches a name in the debugging data (i.e., matches
3490    either a complete name or, as a wild-card match, the final 
3491    identifier).  */
3492
3493 static struct type*
3494 write_var_or_type (const struct block *block, struct stoken name0)
3495 {
3496   int depth;
3497   char *encoded_name;
3498   int name_len;
3499
3500   if (block == NULL)
3501     block = expression_context_block;
3502
3503   encoded_name = ada_encode (name0.ptr);
3504   name_len = strlen (encoded_name);
3505   encoded_name = obstack_copy0 (&temp_parse_space, encoded_name, name_len);
3506   for (depth = 0; depth < MAX_RENAMING_CHAIN_LENGTH; depth += 1)
3507     {
3508       int tail_index;
3509       
3510       tail_index = name_len;
3511       while (tail_index > 0)
3512         {
3513           int nsyms;
3514           struct ada_symbol_info *syms;
3515           struct symbol *type_sym;
3516           struct symbol *renaming_sym;
3517           const char* renaming;
3518           int renaming_len;
3519           const char* renaming_expr;
3520           int terminator = encoded_name[tail_index];
3521
3522           encoded_name[tail_index] = '\0';
3523           nsyms = ada_lookup_symbol_list (encoded_name, block,
3524                                           VAR_DOMAIN, &syms);
3525           encoded_name[tail_index] = terminator;
3526
3527           /* A single symbol may rename a package or object. */
3528
3529           /* This should go away when we move entirely to new version.
3530              FIXME pnh 7/20/2007. */
3531           if (nsyms == 1)
3532             {
3533               struct symbol *ren_sym =
3534                 ada_find_renaming_symbol (syms[0].sym, syms[0].block);
3535
3536               if (ren_sym != NULL)
3537                 syms[0].sym = ren_sym;
3538             }
3539
3540           type_sym = select_possible_type_sym (syms, nsyms);
3541
3542           if (type_sym != NULL)
3543             renaming_sym = type_sym;
3544           else if (nsyms == 1)
3545             renaming_sym = syms[0].sym;
3546           else 
3547             renaming_sym = NULL;
3548
3549           switch (ada_parse_renaming (renaming_sym, &renaming,
3550                                       &renaming_len, &renaming_expr))
3551             {
3552             case ADA_NOT_RENAMING:
3553               break;
3554             case ADA_PACKAGE_RENAMING:
3555             case ADA_EXCEPTION_RENAMING:
3556             case ADA_SUBPROGRAM_RENAMING:
3557               {
3558                 char *new_name
3559                   = obstack_alloc (&temp_parse_space,
3560                                    renaming_len + name_len - tail_index + 1);
3561                 strncpy (new_name, renaming, renaming_len);
3562                 strcpy (new_name + renaming_len, encoded_name + tail_index);
3563                 encoded_name = new_name;
3564                 name_len = renaming_len + name_len - tail_index;
3565                 goto TryAfterRenaming;
3566               } 
3567             case ADA_OBJECT_RENAMING:
3568               write_object_renaming (block, renaming, renaming_len, 
3569                                      renaming_expr, MAX_RENAMING_CHAIN_LENGTH);
3570               write_selectors (encoded_name + tail_index);
3571               return NULL;
3572             default:
3573               internal_error (__FILE__, __LINE__,
3574                               _("impossible value from ada_parse_renaming"));
3575             }
3576
3577           if (type_sym != NULL)
3578             {
3579               struct type *field_type;
3580               
3581               if (tail_index == name_len)
3582                 return SYMBOL_TYPE (type_sym);
3583
3584               /* We have some extraneous characters after the type name.
3585                  If this is an expression "TYPE_NAME.FIELD0.[...].FIELDN",
3586                  then try to get the type of FIELDN.  */
3587               field_type
3588                 = get_symbol_field_type (type_sym, encoded_name + tail_index);
3589               if (field_type != NULL)
3590                 return field_type;
3591               else 
3592                 error (_("Invalid attempt to select from type: \"%s\"."),
3593                        name0.ptr);
3594             }
3595           else if (tail_index == name_len && nsyms == 0)
3596             {
3597               struct type *type = find_primitive_type (encoded_name);
3598
3599               if (type != NULL)
3600                 return type;
3601             }
3602
3603           if (nsyms == 1)
3604             {
3605               write_var_from_sym (block, syms[0].block, syms[0].sym);
3606               write_selectors (encoded_name + tail_index);
3607               return NULL;
3608             }
3609           else if (nsyms == 0) 
3610             {
3611               struct minimal_symbol *msym 
3612                 = ada_lookup_simple_minsym (encoded_name);
3613               if (msym != NULL)
3614                 {
3615                   write_exp_msymbol (msym);
3616                   /* Maybe cause error here rather than later? FIXME? */
3617                   write_selectors (encoded_name + tail_index);
3618                   return NULL;
3619                 }
3620
3621               if (tail_index == name_len
3622                   && strncmp (encoded_name, "standard__", 
3623                               sizeof ("standard__") - 1) == 0)
3624                 error (_("No definition of \"%s\" found."), name0.ptr);
3625
3626               tail_index = chop_selector (encoded_name, tail_index);
3627             } 
3628           else
3629             {
3630               write_ambiguous_var (block, encoded_name, tail_index);
3631               write_selectors (encoded_name + tail_index);
3632               return NULL;
3633             }
3634         }
3635
3636       if (!have_full_symbols () && !have_partial_symbols () && block == NULL)
3637         error (_("No symbol table is loaded.  Use the \"file\" command."));
3638       if (block == expression_context_block)
3639         error (_("No definition of \"%s\" in current context."), name0.ptr);
3640       else
3641         error (_("No definition of \"%s\" in specified context."), name0.ptr);
3642       
3643     TryAfterRenaming: ;
3644     }
3645
3646   error (_("Could not find renamed symbol \"%s\""), name0.ptr);
3647
3648 }
3649
3650 /* Write a left side of a component association (e.g., NAME in NAME =>
3651    exp).  If NAME has the form of a selected component, write it as an
3652    ordinary expression.  If it is a simple variable that unambiguously
3653    corresponds to exactly one symbol that does not denote a type or an
3654    object renaming, also write it normally as an OP_VAR_VALUE.
3655    Otherwise, write it as an OP_NAME.
3656
3657    Unfortunately, we don't know at this point whether NAME is supposed
3658    to denote a record component name or the value of an array index.
3659    Therefore, it is not appropriate to disambiguate an ambiguous name
3660    as we normally would, nor to replace a renaming with its referent.
3661    As a result, in the (one hopes) rare case that one writes an
3662    aggregate such as (R => 42) where R renames an object or is an
3663    ambiguous name, one must write instead ((R) => 42). */
3664    
3665 static void
3666 write_name_assoc (struct stoken name)
3667 {
3668   if (strchr (name.ptr, '.') == NULL)
3669     {
3670       struct ada_symbol_info *syms;
3671       int nsyms = ada_lookup_symbol_list (name.ptr, expression_context_block,
3672                                           VAR_DOMAIN, &syms);
3673       if (nsyms != 1 || SYMBOL_CLASS (syms[0].sym) == LOC_TYPEDEF)
3674         write_exp_op_with_string (OP_NAME, name);
3675       else
3676         write_var_from_sym (NULL, syms[0].block, syms[0].sym);
3677     }
3678   else
3679     if (write_var_or_type (NULL, name) != NULL)
3680       error (_("Invalid use of type."));
3681 }
3682
3683 /* Convert the character literal whose ASCII value would be VAL to the
3684    appropriate value of type TYPE, if there is a translation.
3685    Otherwise return VAL.  Hence, in an enumeration type ('A', 'B'),
3686    the literal 'A' (VAL == 65), returns 0.  */
3687
3688 static LONGEST
3689 convert_char_literal (struct type *type, LONGEST val)
3690 {
3691   char name[7];
3692   int f;
3693
3694   if (type == NULL)
3695     return val;
3696   type = check_typedef (type);
3697   if (TYPE_CODE (type) != TYPE_CODE_ENUM)
3698     return val;
3699
3700   xsnprintf (name, sizeof (name), "QU%02x", (int) val);
3701   for (f = 0; f < TYPE_NFIELDS (type); f += 1)
3702     {
3703       if (strcmp (name, TYPE_FIELD_NAME (type, f)) == 0)
3704         return TYPE_FIELD_ENUMVAL (type, f);
3705     }
3706   return val;
3707 }
3708
3709 static struct type *
3710 type_int (void)
3711 {
3712   return parse_type->builtin_int;
3713 }
3714
3715 static struct type *
3716 type_long (void)
3717 {
3718   return parse_type->builtin_long;
3719 }
3720
3721 static struct type *
3722 type_long_long (void)
3723 {
3724   return parse_type->builtin_long_long;
3725 }
3726
3727 static struct type *
3728 type_float (void)
3729 {
3730   return parse_type->builtin_float;
3731 }
3732
3733 static struct type *
3734 type_double (void)
3735 {
3736   return parse_type->builtin_double;
3737 }
3738
3739 static struct type *
3740 type_long_double (void)
3741 {
3742   return parse_type->builtin_long_double;
3743 }
3744
3745 static struct type *
3746 type_char (void)
3747 {
3748   return language_string_char_type (parse_language, parse_gdbarch);
3749 }
3750
3751 static struct type *
3752 type_boolean (void)
3753 {
3754   return parse_type->builtin_bool;
3755 }
3756
3757 static struct type *
3758 type_system_address (void)
3759 {
3760   struct type *type 
3761     = language_lookup_primitive_type_by_name (parse_language,
3762                                               parse_gdbarch,
3763                                               "system__address");
3764   return  type != NULL ? type : parse_type->builtin_data_ptr;
3765 }
3766
3767 /* Provide a prototype to silence -Wmissing-prototypes.  */
3768 extern initialize_file_ftype _initialize_ada_exp;
3769
3770 void
3771 _initialize_ada_exp (void)
3772 {
3773   obstack_init (&temp_parse_space);
3774 }
3775
3776 /* FIXME: hilfingr/2004-10-05: Hack to remove warning.  The function
3777    string_to_operator is supposed to be used for cases where one
3778    calls an operator function with prefix notation, as in 
3779    "+" (a, b), but at some point, this code seems to have gone
3780    missing. */
3781
3782 struct stoken (*dummy_string_to_ada_operator) (struct stoken) 
3783      = string_to_operator;
3784