virtio: Fix and activate PCI MSI-X support.
[dragonfly.git] / contrib / gdb-7 / gdb / ada-exp.c
blobe83ae8654eac74bb901d1efad9a5a9ba25bfc0b0
2 /* A Bison parser, made by GNU Bison 2.4.1. */
4 /* Skeleton implementation for Bison's Yacc-like parsers in C
6 Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
7 Free Software Foundation, Inc.
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.
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.
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/>. */
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.
32 This special exception was added by the Free Software Foundation in
33 version 2.2 of Bison. */
35 /* C LALR(1) parser skeleton written by Richard Stallman, by
36 simplifying the original so-called "semantic" parser. */
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. */
45 /* Identify Bison output. */
46 #define YYBISON 1
48 /* Bison version. */
49 #define YYBISON_VERSION "2.4.1"
51 /* Skeleton name. */
52 #define YYSKELETON_NAME "yacc.c"
54 /* Pure parsers. */
55 #define YYPURE 0
57 /* Push parsers. */
58 #define YYPUSH 0
60 /* Pull parsers. */
61 #define YYPULL 1
63 /* Using locations. */
64 #define YYLSP_NEEDED 0
68 /* Copy the first part of user declarations. */
70 /* Line 189 of yacc.c */
71 #line 36 "ada-exp.y"
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"
88 #define parse_type builtin_type (parse_gdbarch)
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. */
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) */
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
139 #ifndef YYDEBUG
140 #define YYDEBUG 1 /* Default to yydebug support */
141 #endif
143 #define YYFPRINTF parser_fprintf
145 struct name_info {
146 struct symbol *sym;
147 struct minimal_symbol *msym;
148 struct block *block;
149 struct stoken stoken;
152 static struct stoken empty_stoken = { "", 0 };
154 /* If expression is in the context of TYPE'(...), then TYPE, else
155 * NULL. */
156 static struct type *type_qualifier;
158 int yyparse (void);
160 static int yylex (void);
162 void yyerror (char *);
164 static struct stoken string_to_operator (struct stoken);
166 static void write_int (LONGEST, struct type *);
168 static void write_object_renaming (const struct block *, const char *, int,
169 const char *, int);
171 static struct type* write_var_or_type (const struct block *, struct stoken);
173 static void write_name_assoc (struct stoken);
175 static void write_exp_op_with_string (enum exp_opcode, struct stoken);
177 static struct block *block_lookup (struct block *, char *);
179 static LONGEST convert_char_literal (struct type *, LONGEST);
181 static void write_ambiguous_var (const struct block *, char *, int);
183 static struct type *type_int (void);
185 static struct type *type_long (void);
187 static struct type *type_long_long (void);
189 static struct type *type_float (void);
191 static struct type *type_double (void);
193 static struct type *type_long_double (void);
195 static struct type *type_char (void);
197 static struct type *type_boolean (void);
199 static struct type *type_system_address (void);
203 /* Line 189 of yacc.c */
204 #line 205 "ada-exp.c"
206 /* Enabling traces. */
207 #ifndef YYDEBUG
208 # define YYDEBUG 0
209 #endif
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
219 /* Enabling the token table. */
220 #ifndef YYTOKEN_TABLE
221 # define YYTOKEN_TABLE 0
222 #endif
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
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
330 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
331 typedef union YYSTYPE
334 /* Line 214 of yacc.c */
335 #line 168 "ada-exp.y"
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;
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
362 /* Copy the second part of user declarations. */
365 /* Line 264 of yacc.c */
366 #line 367 "ada-exp.c"
368 #ifdef short
369 # undef short
370 #endif
372 #ifdef YYTYPE_UINT8
373 typedef YYTYPE_UINT8 yytype_uint8;
374 #else
375 typedef unsigned char yytype_uint8;
376 #endif
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
387 #ifdef YYTYPE_UINT16
388 typedef YYTYPE_UINT16 yytype_uint16;
389 #else
390 typedef unsigned short int yytype_uint16;
391 #endif
393 #ifdef YYTYPE_INT16
394 typedef YYTYPE_INT16 yytype_int16;
395 #else
396 typedef short int yytype_int16;
397 #endif
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
413 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
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
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
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
448 return yyi;
450 #endif
452 #if ! defined yyoverflow || YYERROR_VERBOSE
454 /* The parser invokes alloca or xmalloc; define the necessary symbols. */
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
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 */
521 #if (! defined yyoverflow \
522 && (! defined __cplusplus \
523 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
525 /* A type that is properly aligned for any stack member. */
526 union yyalloc
528 yytype_int16 yyss_alloc;
529 YYSTYPE yyvs_alloc;
532 /* The size of the maximum gap between one aligned stack and the next. */
533 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
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)
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 \
551 YYSIZE_T yyi; \
552 for (yyi = 0; yyi < (Count); yyi++) \
553 (To)[yyi] = (From)[yyi]; \
555 while (YYID (0))
556 # endif
557 # endif
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 \
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); \
573 while (YYID (0))
575 #endif
577 /* YYFINAL -- State number of the termination state. */
578 #define YYFINAL 57
579 /* YYLAST -- Last index in YYTABLE. */
580 #define YYLAST 770
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
591 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
592 #define YYUNDEFTOK 2
593 #define YYMAXUTOK 303
595 #define YYTRANSLATE(YYX) \
596 ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
598 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
599 static const yytype_uint8 yytranslate[] =
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
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[] =
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
654 /* YYRHS -- A `-1'-separated list of the rules' RHS. */
655 static const yytype_int8 yyrhs[] =
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
703 /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
704 static const yytype_uint16 yyrline[] =
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
720 #endif
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[] =
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
744 #endif
746 # ifdef YYPRINT
747 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
748 token YYLEX-NUM. */
749 static const yytype_uint16 yytoknum[] =
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
759 # endif
761 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
762 static const yytype_uint8 yyr1[] =
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
779 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
780 static const yytype_uint8 yyr2[] =
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
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[] =
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
828 /* YYDEFGOTO[NTERM-NUM]. */
829 static const yytype_int16 yydefgoto[] =
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,
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[] =
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
868 /* YYPGOTO[NTERM-NUM]. */
869 static const yytype_int8 yypgoto[] =
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
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[] =
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,
964 static const yytype_int16 yycheck[] =
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,
1046 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1047 symbol of state STATE-NUM. */
1048 static const yytype_uint8 yystos[] =
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
1076 #define yyerrok (yyerrstatus = 0)
1077 #define yyclearin (yychar = YYEMPTY)
1078 #define YYEMPTY (-2)
1079 #define YYEOF 0
1081 #define YYACCEPT goto yyacceptlab
1082 #define YYABORT goto yyabortlab
1083 #define YYERROR goto yyerrorlab
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. */
1090 #define YYFAIL goto yyerrlab
1092 #define YYRECOVERING() (!!yyerrstatus)
1094 #define YYBACKUP(Token, Value) \
1095 do \
1096 if (yychar == YYEMPTY && yylen == 1) \
1098 yychar = (Token); \
1099 yylval = (Value); \
1100 yytoken = YYTRANSLATE (yychar); \
1101 YYPOPSTACK (1); \
1102 goto yybackup; \
1104 else \
1106 yyerror (YY_("syntax error: cannot back up")); \
1107 YYERROR; \
1109 while (YYID (0))
1112 #define YYTERROR 1
1113 #define YYERRCODE 256
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). */
1120 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
1121 #ifndef YYLLOC_DEFAULT
1122 # define YYLLOC_DEFAULT(Current, Rhs, N) \
1123 do \
1124 if (YYID (N)) \
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; \
1131 else \
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; \
1138 while (YYID (0))
1139 #endif
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. */
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
1158 /* YYLEX -- calling `yylex' with the right arguments. */
1160 #ifdef YYLEX_PARAM
1161 # define YYLEX yylex (YYLEX_PARAM)
1162 #else
1163 # define YYLEX yylex ()
1164 #endif
1166 /* Enable debugging if requested. */
1167 #if YYDEBUG
1169 # ifndef YYFPRINTF
1170 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
1171 # define YYFPRINTF fprintf
1172 # endif
1174 # define YYDPRINTF(Args) \
1175 do { \
1176 if (yydebug) \
1177 YYFPRINTF Args; \
1178 } while (YYID (0))
1180 # define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
1181 do { \
1182 if (yydebug) \
1184 YYFPRINTF (stderr, "%s ", Title); \
1185 yy_symbol_print (stderr, \
1186 Type, Value); \
1187 YYFPRINTF (stderr, "\n"); \
1189 } while (YYID (0))
1192 /*--------------------------------.
1193 | Print this symbol on YYOUTPUT. |
1194 `--------------------------------*/
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
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)
1219 default:
1220 break;
1225 /*--------------------------------.
1226 | Print this symbol on YYOUTPUT. |
1227 `--------------------------------*/
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
1241 if (yytype < YYNTOKENS)
1242 YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
1243 else
1244 YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
1246 yy_symbol_value_print (yyoutput, yytype, yyvaluep);
1247 YYFPRINTF (yyoutput, ")");
1250 /*------------------------------------------------------------------.
1251 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
1252 | TOP (included). |
1253 `------------------------------------------------------------------*/
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
1266 YYFPRINTF (stderr, "Stack now");
1267 for (; yybottom <= yytop; yybottom++)
1269 int yybot = *yybottom;
1270 YYFPRINTF (stderr, " %d", yybot);
1272 YYFPRINTF (stderr, "\n");
1275 # define YY_STACK_PRINT(Bottom, Top) \
1276 do { \
1277 if (yydebug) \
1278 yy_stack_print ((Bottom), (Top)); \
1279 } while (YYID (0))
1282 /*------------------------------------------------.
1283 | Report that the YYRULE is going to be reduced. |
1284 `------------------------------------------------*/
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
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++)
1305 YYFPRINTF (stderr, " $%d = ", yyi + 1);
1306 yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
1307 &(yyvsp[(yyi + 1) - (yynrhs)])
1309 YYFPRINTF (stderr, "\n");
1313 # define YY_REDUCE_PRINT(Rule) \
1314 do { \
1315 if (yydebug) \
1316 yy_reduce_print (yyvsp, Rule); \
1317 } while (YYID (0))
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 */
1330 /* YYINITDEPTH -- initial size of the parser's stacks. */
1331 #ifndef YYINITDEPTH
1332 # define YYINITDEPTH 200
1333 #endif
1335 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1336 if the built-in stack extension method is used).
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. */
1342 #ifndef YYMAXDEPTH
1343 # define YYMAXDEPTH 10000
1344 #endif
1348 #if YYERROR_VERBOSE
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
1365 YYSIZE_T yylen;
1366 for (yylen = 0; yystr[yylen]; yylen++)
1367 continue;
1368 return yylen;
1370 # endif
1371 # endif
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
1390 char *yyd = yydest;
1391 const char *yys = yysrc;
1393 while ((*yyd++ = *yys++) != '\0')
1394 continue;
1396 return yyd - 1;
1398 # endif
1399 # endif
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)
1412 if (*yystr == '"')
1414 YYSIZE_T yyn = 0;
1415 char const *yyp = yystr;
1417 for (;;)
1418 switch (*++yyp)
1420 case '\'':
1421 case ',':
1422 goto do_not_strip_quotes;
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;
1434 case '"':
1435 if (yyres)
1436 yyres[yyn] = '\0';
1437 return yyn;
1439 do_not_strip_quotes: ;
1442 if (! yyres)
1443 return yystrlen (yystr);
1445 return yystpcpy (yyres, yystr) - yyres;
1447 # endif
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)
1459 int yyn = yypact[yystate];
1461 if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
1462 return 0;
1463 else
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;
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;
1494 /* Start YYX at -YYN if negative to avoid negative indexes in
1495 YYCHECK. */
1496 int yyxbegin = yyn < 0 ? -yyn : 0;
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;
1503 yyarg[0] = yytname[yytype];
1504 yyfmt = yystpcpy (yyformat, yyunexpected);
1506 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1507 if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
1509 if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
1511 yycount = 1;
1512 yysize = yysize0;
1513 yyformat[sizeof yyunexpected - 1] = '\0';
1514 break;
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;
1524 yyf = YY_(yyformat);
1525 yysize1 = yysize + yystrlen (yyf);
1526 yysize_overflow |= (yysize1 < yysize);
1527 yysize = yysize1;
1529 if (yysize_overflow)
1530 return YYSIZE_MAXIMUM;
1532 if (yyresult)
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')
1541 if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
1543 yyp += yytnamerr (yyp, yyarg[yyi++]);
1544 yyf += 2;
1546 else
1548 yyp++;
1549 yyf++;
1553 return yysize;
1556 #endif /* YYERROR_VERBOSE */
1559 /*-----------------------------------------------.
1560 | Release the memory associated to this symbol. |
1561 `-----------------------------------------------*/
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
1576 YYUSE (yyvaluep);
1578 if (!yymsg)
1579 yymsg = "Deleting";
1580 YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
1582 switch (yytype)
1585 default:
1586 break;
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 */
1606 /* The lookahead symbol. */
1607 int yychar;
1609 /* The semantic value of the lookahead symbol. */
1610 YYSTYPE yylval;
1612 /* Number of syntax errors so far. */
1613 int yynerrs;
1617 /*-------------------------.
1618 | yyparse or yypush_parse. |
1619 `-------------------------*/
1621 #ifdef YYPARSE_PARAM
1622 #if (defined __STDC__ || defined __C99__FUNC__ \
1623 || defined __cplusplus || defined _MSC_VER)
1625 yyparse (void *YYPARSE_PARAM)
1626 #else
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)
1635 yyparse (void)
1636 #else
1638 yyparse ()
1640 #endif
1641 #endif
1645 int yystate;
1646 /* Number of tokens to shift before error messages enabled. */
1647 int yyerrstatus;
1649 /* The stacks and their tools:
1650 `yyss': related to states.
1651 `yyvs': related to semantic values.
1653 Refer to the stacks thru separate pointers, to allow yyoverflow
1654 to xreallocate them elsewhere. */
1656 /* The state stack. */
1657 yytype_int16 yyssa[YYINITDEPTH];
1658 yytype_int16 *yyss;
1659 yytype_int16 *yyssp;
1661 /* The semantic value stack. */
1662 YYSTYPE yyvsa[YYINITDEPTH];
1663 YYSTYPE *yyvs;
1664 YYSTYPE *yyvsp;
1666 YYSIZE_T yystacksize;
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;
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
1683 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
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;
1689 yytoken = 0;
1690 yyss = yyssa;
1691 yyvs = yyvsa;
1692 yystacksize = YYINITDEPTH;
1694 YYDPRINTF ((stderr, "Starting parse\n"));
1696 yystate = 0;
1697 yyerrstatus = 0;
1698 yynerrs = 0;
1699 yychar = YYEMPTY; /* Cause a token to be read. */
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;
1708 goto yysetstate;
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++;
1718 yysetstate:
1719 *yyssp = yystate;
1721 if (yyss + yystacksize - 1 <= yyssp)
1723 /* Get the current used size of the three stacks, in elements. */
1724 YYSIZE_T yysize = yyssp - yyss + 1;
1726 #ifdef yyoverflow
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;
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);
1743 yyss = yyss1;
1744 yyvs = yyvs1;
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;
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);
1769 # endif
1770 #endif /* no yyoverflow */
1772 yyssp = yyss + yysize - 1;
1773 yyvsp = yyvs + yysize - 1;
1775 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1776 (unsigned long int) yystacksize));
1778 if (yyss + yystacksize - 1 <= yyssp)
1779 YYABORT;
1782 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1784 if (yystate == YYFINAL)
1785 YYACCEPT;
1787 goto yybackup;
1789 /*-----------.
1790 | yybackup. |
1791 `-----------*/
1792 yybackup:
1794 /* Do appropriate processing given the current state. Read a
1795 lookahead token if we need one and don't already have one. */
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;
1802 /* Not known => get a lookahead token if don't already have one. */
1804 /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
1805 if (yychar == YYEMPTY)
1807 YYDPRINTF ((stderr, "Reading a token: "));
1808 yychar = YYLEX;
1811 if (yychar <= YYEOF)
1813 yychar = yytoken = YYEOF;
1814 YYDPRINTF ((stderr, "Now at end of input.\n"));
1816 else
1818 yytoken = YYTRANSLATE (yychar);
1819 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
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)
1830 if (yyn == 0 || yyn == YYTABLE_NINF)
1831 goto yyerrlab;
1832 yyn = -yyn;
1833 goto yyreduce;
1836 /* Count tokens shifted since error; after three, turn off error
1837 status. */
1838 if (yyerrstatus)
1839 yyerrstatus--;
1841 /* Shift the lookahead token. */
1842 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
1844 /* Discard the shifted token. */
1845 yychar = YYEMPTY;
1847 yystate = yyn;
1848 *++yyvsp = yylval;
1850 goto yynewstate;
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;
1863 /*-----------------------------.
1864 | yyreduce -- Do a reduction. |
1865 `-----------------------------*/
1866 yyreduce:
1867 /* yyn is the number of a rule to reduce with. */
1868 yylen = yyr2[yyn];
1870 /* If YYLEN is nonzero, implement the default value of the action:
1871 `$$ = $1'.
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];
1881 YY_REDUCE_PRINT (yyn);
1882 switch (yyn)
1884 case 4:
1886 /* Line 1455 of yacc.c */
1887 #line 239 "ada-exp.y"
1888 { write_exp_elt_opcode (BINOP_COMMA); }
1889 break;
1891 case 5:
1893 /* Line 1455 of yacc.c */
1894 #line 241 "ada-exp.y"
1895 { write_exp_elt_opcode (BINOP_ASSIGN); }
1896 break;
1898 case 6:
1900 /* Line 1455 of yacc.c */
1901 #line 246 "ada-exp.y"
1902 { write_exp_elt_opcode (UNOP_IND); }
1903 break;
1905 case 7:
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;
1912 case 8:
1914 /* Line 1455 of yacc.c */
1915 #line 254 "ada-exp.y"
1917 write_exp_elt_opcode (OP_FUNCALL);
1918 write_exp_elt_longcst ((yyvsp[(3) - (4)].lval));
1919 write_exp_elt_opcode (OP_FUNCALL);
1921 break;
1923 case 9:
1925 /* Line 1455 of yacc.c */
1926 #line 260 "ada-exp.y"
1928 if ((yyvsp[(1) - (4)].tval) != NULL)
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);
1936 else
1938 write_exp_elt_opcode (OP_FUNCALL);
1939 write_exp_elt_longcst ((yyvsp[(3) - (4)].lval));
1940 write_exp_elt_opcode (OP_FUNCALL);
1943 break;
1945 case 10:
1947 /* Line 1455 of yacc.c */
1948 #line 278 "ada-exp.y"
1949 { type_qualifier = (yyvsp[(1) - (3)].tval); }
1950 break;
1952 case 11:
1954 /* Line 1455 of yacc.c */
1955 #line 280 "ada-exp.y"
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);
1964 break;
1966 case 12:
1968 /* Line 1455 of yacc.c */
1969 #line 290 "ada-exp.y"
1970 { (yyval.tval) = type_qualifier; }
1971 break;
1973 case 13:
1975 /* Line 1455 of yacc.c */
1976 #line 295 "ada-exp.y"
1977 { write_exp_elt_opcode (TERNOP_SLICE); }
1978 break;
1980 case 14:
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"));
1989 break;
1991 case 15:
1993 /* Line 1455 of yacc.c */
1994 #line 304 "ada-exp.y"
1996 break;
1998 case 16:
2000 /* Line 1455 of yacc.c */
2001 #line 316 "ada-exp.y"
2002 { if ((yyvsp[(1) - (1)].tval) != NULL)
2004 write_exp_elt_opcode (OP_TYPE);
2005 write_exp_elt_type ((yyvsp[(1) - (1)].tval));
2006 write_exp_elt_opcode (OP_TYPE);
2009 break;
2011 case 17:
2013 /* Line 1455 of yacc.c */
2014 #line 326 "ada-exp.y"
2015 { write_dollar_variable ((yyvsp[(1) - (1)].sval)); }
2016 break;
2018 case 20:
2020 /* Line 1455 of yacc.c */
2021 #line 336 "ada-exp.y"
2022 { write_exp_elt_opcode (UNOP_NEG); }
2023 break;
2025 case 21:
2027 /* Line 1455 of yacc.c */
2028 #line 340 "ada-exp.y"
2029 { write_exp_elt_opcode (UNOP_PLUS); }
2030 break;
2032 case 22:
2034 /* Line 1455 of yacc.c */
2035 #line 344 "ada-exp.y"
2036 { write_exp_elt_opcode (UNOP_LOGICAL_NOT); }
2037 break;
2039 case 23:
2041 /* Line 1455 of yacc.c */
2042 #line 348 "ada-exp.y"
2043 { write_exp_elt_opcode (UNOP_ABS); }
2044 break;
2046 case 24:
2048 /* Line 1455 of yacc.c */
2049 #line 351 "ada-exp.y"
2050 { (yyval.lval) = 0; }
2051 break;
2053 case 25:
2055 /* Line 1455 of yacc.c */
2056 #line 355 "ada-exp.y"
2057 { (yyval.lval) = 1; }
2058 break;
2060 case 26:
2062 /* Line 1455 of yacc.c */
2063 #line 357 "ada-exp.y"
2064 { (yyval.lval) = 1; }
2065 break;
2067 case 27:
2069 /* Line 1455 of yacc.c */
2070 #line 359 "ada-exp.y"
2071 { (yyval.lval) = (yyvsp[(1) - (3)].lval) + 1; }
2072 break;
2074 case 28:
2076 /* Line 1455 of yacc.c */
2077 #line 361 "ada-exp.y"
2078 { (yyval.lval) = (yyvsp[(1) - (5)].lval) + 1; }
2079 break;
2081 case 29:
2083 /* Line 1455 of yacc.c */
2084 #line 366 "ada-exp.y"
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);
2092 break;
2094 case 30:
2096 /* Line 1455 of yacc.c */
2097 #line 378 "ada-exp.y"
2098 { write_exp_elt_opcode (BINOP_EXP); }
2099 break;
2101 case 31:
2103 /* Line 1455 of yacc.c */
2104 #line 382 "ada-exp.y"
2105 { write_exp_elt_opcode (BINOP_MUL); }
2106 break;
2108 case 32:
2110 /* Line 1455 of yacc.c */
2111 #line 386 "ada-exp.y"
2112 { write_exp_elt_opcode (BINOP_DIV); }
2113 break;
2115 case 33:
2117 /* Line 1455 of yacc.c */
2118 #line 390 "ada-exp.y"
2119 { write_exp_elt_opcode (BINOP_REM); }
2120 break;
2122 case 34:
2124 /* Line 1455 of yacc.c */
2125 #line 394 "ada-exp.y"
2126 { write_exp_elt_opcode (BINOP_MOD); }
2127 break;
2129 case 35:
2131 /* Line 1455 of yacc.c */
2132 #line 398 "ada-exp.y"
2133 { write_exp_elt_opcode (BINOP_REPEAT); }
2134 break;
2136 case 36:
2138 /* Line 1455 of yacc.c */
2139 #line 402 "ada-exp.y"
2140 { write_exp_elt_opcode (BINOP_ADD); }
2141 break;
2143 case 37:
2145 /* Line 1455 of yacc.c */
2146 #line 406 "ada-exp.y"
2147 { write_exp_elt_opcode (BINOP_CONCAT); }
2148 break;
2150 case 38:
2152 /* Line 1455 of yacc.c */
2153 #line 410 "ada-exp.y"
2154 { write_exp_elt_opcode (BINOP_SUB); }
2155 break;
2157 case 40:
2159 /* Line 1455 of yacc.c */
2160 #line 417 "ada-exp.y"
2161 { write_exp_elt_opcode (BINOP_EQUAL); }
2162 break;
2164 case 41:
2166 /* Line 1455 of yacc.c */
2167 #line 421 "ada-exp.y"
2168 { write_exp_elt_opcode (BINOP_NOTEQUAL); }
2169 break;
2171 case 42:
2173 /* Line 1455 of yacc.c */
2174 #line 425 "ada-exp.y"
2175 { write_exp_elt_opcode (BINOP_LEQ); }
2176 break;
2178 case 43:
2180 /* Line 1455 of yacc.c */
2181 #line 429 "ada-exp.y"
2182 { write_exp_elt_opcode (TERNOP_IN_RANGE); }
2183 break;
2185 case 44:
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);
2193 break;
2195 case 45:
2197 /* Line 1455 of yacc.c */
2198 #line 436 "ada-exp.y"
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);
2206 break;
2208 case 46:
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);
2215 break;
2217 case 47:
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);
2226 break;
2228 case 48:
2230 /* Line 1455 of yacc.c */
2231 #line 454 "ada-exp.y"
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);
2240 break;
2242 case 49:
2244 /* Line 1455 of yacc.c */
2245 #line 465 "ada-exp.y"
2246 { write_exp_elt_opcode (BINOP_GEQ); }
2247 break;
2249 case 50:
2251 /* Line 1455 of yacc.c */
2252 #line 469 "ada-exp.y"
2253 { write_exp_elt_opcode (BINOP_LESS); }
2254 break;
2256 case 51:
2258 /* Line 1455 of yacc.c */
2259 #line 473 "ada-exp.y"
2260 { write_exp_elt_opcode (BINOP_GTR); }
2261 break;
2263 case 58:
2265 /* Line 1455 of yacc.c */
2266 #line 486 "ada-exp.y"
2267 { write_exp_elt_opcode (BINOP_BITWISE_AND); }
2268 break;
2270 case 59:
2272 /* Line 1455 of yacc.c */
2273 #line 488 "ada-exp.y"
2274 { write_exp_elt_opcode (BINOP_BITWISE_AND); }
2275 break;
2277 case 60:
2279 /* Line 1455 of yacc.c */
2280 #line 493 "ada-exp.y"
2281 { write_exp_elt_opcode (BINOP_LOGICAL_AND); }
2282 break;
2284 case 61:
2286 /* Line 1455 of yacc.c */
2287 #line 495 "ada-exp.y"
2288 { write_exp_elt_opcode (BINOP_LOGICAL_AND); }
2289 break;
2291 case 62:
2293 /* Line 1455 of yacc.c */
2294 #line 500 "ada-exp.y"
2295 { write_exp_elt_opcode (BINOP_BITWISE_IOR); }
2296 break;
2298 case 63:
2300 /* Line 1455 of yacc.c */
2301 #line 502 "ada-exp.y"
2302 { write_exp_elt_opcode (BINOP_BITWISE_IOR); }
2303 break;
2305 case 64:
2307 /* Line 1455 of yacc.c */
2308 #line 507 "ada-exp.y"
2309 { write_exp_elt_opcode (BINOP_LOGICAL_OR); }
2310 break;
2312 case 65:
2314 /* Line 1455 of yacc.c */
2315 #line 509 "ada-exp.y"
2316 { write_exp_elt_opcode (BINOP_LOGICAL_OR); }
2317 break;
2319 case 66:
2321 /* Line 1455 of yacc.c */
2322 #line 513 "ada-exp.y"
2323 { write_exp_elt_opcode (BINOP_BITWISE_XOR); }
2324 break;
2326 case 67:
2328 /* Line 1455 of yacc.c */
2329 #line 515 "ada-exp.y"
2330 { write_exp_elt_opcode (BINOP_BITWISE_XOR); }
2331 break;
2333 case 68:
2335 /* Line 1455 of yacc.c */
2336 #line 527 "ada-exp.y"
2337 { write_exp_elt_opcode (UNOP_ADDR); }
2338 break;
2340 case 69:
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);
2349 break;
2351 case 70:
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;
2359 case 71:
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;
2367 case 72:
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;
2375 case 73:
2377 /* Line 1455 of yacc.c */
2378 #line 544 "ada-exp.y"
2379 { write_exp_elt_opcode (OP_ATR_SIZE); }
2380 break;
2382 case 74:
2384 /* Line 1455 of yacc.c */
2385 #line 546 "ada-exp.y"
2386 { write_exp_elt_opcode (OP_ATR_TAG); }
2387 break;
2389 case 75:
2391 /* Line 1455 of yacc.c */
2392 #line 548 "ada-exp.y"
2393 { write_exp_elt_opcode (OP_ATR_MIN); }
2394 break;
2396 case 76:
2398 /* Line 1455 of yacc.c */
2399 #line 550 "ada-exp.y"
2400 { write_exp_elt_opcode (OP_ATR_MAX); }
2401 break;
2403 case 77:
2405 /* Line 1455 of yacc.c */
2406 #line 552 "ada-exp.y"
2407 { write_exp_elt_opcode (OP_ATR_POS); }
2408 break;
2410 case 78:
2412 /* Line 1455 of yacc.c */
2413 #line 554 "ada-exp.y"
2414 { write_exp_elt_opcode (OP_ATR_VAL); }
2415 break;
2417 case 79:
2419 /* Line 1455 of yacc.c */
2420 #line 556 "ada-exp.y"
2421 { write_exp_elt_opcode (OP_ATR_MODULUS); }
2422 break;
2424 case 80:
2426 /* Line 1455 of yacc.c */
2427 #line 560 "ada-exp.y"
2428 { (yyval.lval) = 1; }
2429 break;
2431 case 81:
2433 /* Line 1455 of yacc.c */
2434 #line 562 "ada-exp.y"
2435 { (yyval.lval) = (yyvsp[(2) - (3)].typed_val).val; }
2436 break;
2438 case 82:
2440 /* Line 1455 of yacc.c */
2441 #line 567 "ada-exp.y"
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;
2450 case 84:
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;
2459 case 85:
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;
2466 case 86:
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);
2474 break;
2476 case 87:
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);
2485 break;
2487 case 88:
2489 /* Line 1455 of yacc.c */
2490 #line 604 "ada-exp.y"
2491 { write_int (0, type_int ()); }
2492 break;
2494 case 89:
2496 /* Line 1455 of yacc.c */
2497 #line 608 "ada-exp.y"
2499 write_exp_op_with_string (OP_STRING, (yyvsp[(1) - (1)].sval));
2501 break;
2503 case 90:
2505 /* Line 1455 of yacc.c */
2506 #line 614 "ada-exp.y"
2507 { write_int (1, type_boolean ()); }
2508 break;
2510 case 91:
2512 /* Line 1455 of yacc.c */
2513 #line 616 "ada-exp.y"
2514 { write_int (0, type_boolean ()); }
2515 break;
2517 case 92:
2519 /* Line 1455 of yacc.c */
2520 #line 620 "ada-exp.y"
2521 { error (_("NEW not implemented.")); }
2522 break;
2524 case 93:
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;
2531 case 94:
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;
2538 case 95:
2540 /* Line 1455 of yacc.c */
2541 #line 628 "ada-exp.y"
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));
2549 break;
2551 case 96:
2553 /* Line 1455 of yacc.c */
2554 #line 636 "ada-exp.y"
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));
2562 break;
2564 case 97:
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;
2571 case 98:
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;
2578 case 99:
2580 /* Line 1455 of yacc.c */
2581 #line 654 "ada-exp.y"
2583 write_exp_elt_opcode (OP_AGGREGATE);
2584 write_exp_elt_longcst ((yyvsp[(2) - (3)].lval));
2585 write_exp_elt_opcode (OP_AGGREGATE);
2587 break;
2589 case 100:
2591 /* Line 1455 of yacc.c */
2592 #line 662 "ada-exp.y"
2593 { (yyval.lval) = (yyvsp[(1) - (1)].lval); }
2594 break;
2596 case 101:
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;
2605 break;
2607 case 102:
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;
2614 case 103:
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;
2623 break;
2625 case 104:
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;
2634 break;
2636 case 105:
2638 /* Line 1455 of yacc.c */
2639 #line 689 "ada-exp.y"
2640 { (yyval.lval) = 1; }
2641 break;
2643 case 106:
2645 /* Line 1455 of yacc.c */
2646 #line 690 "ada-exp.y"
2647 { (yyval.lval) = 1; }
2648 break;
2650 case 107:
2652 /* Line 1455 of yacc.c */
2653 #line 692 "ada-exp.y"
2654 { (yyval.lval) = (yyvsp[(3) - (3)].lval) + 1; }
2655 break;
2657 case 108:
2659 /* Line 1455 of yacc.c */
2660 #line 696 "ada-exp.y"
2661 { write_exp_elt_opcode (OP_OTHERS); }
2662 break;
2664 case 109:
2666 /* Line 1455 of yacc.c */
2667 #line 701 "ada-exp.y"
2669 write_exp_elt_opcode (OP_CHOICES);
2670 write_exp_elt_longcst ((yyvsp[(1) - (1)].lval));
2671 write_exp_elt_opcode (OP_CHOICES);
2673 break;
2675 case 110:
2677 /* Line 1455 of yacc.c */
2678 #line 715 "ada-exp.y"
2679 { write_name_assoc ((yyvsp[(1) - (2)].sval)); }
2680 break;
2682 case 111:
2684 /* Line 1455 of yacc.c */
2685 #line 716 "ada-exp.y"
2686 { (yyval.lval) = 1; }
2687 break;
2689 case 112:
2691 /* Line 1455 of yacc.c */
2692 #line 718 "ada-exp.y"
2693 { (yyval.lval) = 1; }
2694 break;
2696 case 113:
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);
2703 break;
2705 case 114:
2707 /* Line 1455 of yacc.c */
2708 #line 723 "ada-exp.y"
2709 { (yyval.lval) = 1; }
2710 break;
2712 case 115:
2714 /* Line 1455 of yacc.c */
2715 #line 725 "ada-exp.y"
2716 { write_name_assoc ((yyvsp[(1) - (2)].sval)); }
2717 break;
2719 case 116:
2721 /* Line 1455 of yacc.c */
2722 #line 726 "ada-exp.y"
2723 { (yyval.lval) = (yyvsp[(4) - (4)].lval) + 1; }
2724 break;
2726 case 117:
2728 /* Line 1455 of yacc.c */
2729 #line 728 "ada-exp.y"
2730 { (yyval.lval) = (yyvsp[(3) - (3)].lval) + 1; }
2731 break;
2733 case 118:
2735 /* Line 1455 of yacc.c */
2736 #line 730 "ada-exp.y"
2737 { write_exp_elt_opcode (OP_DISCRETE_RANGE); }
2738 break;
2740 case 119:
2742 /* Line 1455 of yacc.c */
2743 #line 731 "ada-exp.y"
2744 { (yyval.lval) = (yyvsp[(6) - (6)].lval) + 1; }
2745 break;
2747 case 120:
2749 /* Line 1455 of yacc.c */
2750 #line 738 "ada-exp.y"
2751 { write_exp_elt_opcode (UNOP_IND); }
2752 break;
2754 case 121:
2756 /* Line 1455 of yacc.c */
2757 #line 740 "ada-exp.y"
2758 { write_exp_elt_opcode (UNOP_ADDR); }
2759 break;
2761 case 122:
2763 /* Line 1455 of yacc.c */
2764 #line 742 "ada-exp.y"
2765 { write_exp_elt_opcode (BINOP_SUBSCRIPT); }
2766 break;
2770 /* Line 1455 of yacc.c */
2771 #line 2773 "ada-exp.c"
2772 default: break;
2774 YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
2776 YYPOPSTACK (yylen);
2777 yylen = 0;
2778 YY_STACK_PRINT (yyss, yyssp);
2780 *++yyvsp = yyval;
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. */
2786 yyn = yyr1[yyn];
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];
2794 goto yynewstate;
2797 /*------------------------------------.
2798 | yyerrlab -- here on detecting error |
2799 `------------------------------------*/
2800 yyerrlab:
2801 /* If not already recovering from an error, report this error. */
2802 if (!yyerrstatus)
2804 ++yynerrs;
2805 #if ! YYERROR_VERBOSE
2806 yyerror (YY_("syntax error"));
2807 #else
2809 YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
2810 if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
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
2822 yymsg = yymsgbuf;
2823 yymsg_alloc = sizeof yymsgbuf;
2827 if (0 < yysize && yysize <= yymsg_alloc)
2829 (void) yysyntax_error (yymsg, yystate, yychar);
2830 yyerror (yymsg);
2832 else
2834 yyerror (YY_("syntax error"));
2835 if (yysize != 0)
2836 goto yyexhaustedlab;
2839 #endif
2844 if (yyerrstatus == 3)
2846 /* If just tried and failed to reuse lookahead token after an
2847 error, discard it. */
2849 if (yychar <= YYEOF)
2851 /* Return failure if at end of input. */
2852 if (yychar == YYEOF)
2853 YYABORT;
2855 else
2857 yydestruct ("Error: discarding",
2858 yytoken, &yylval);
2859 yychar = YYEMPTY;
2863 /* Else will try to reuse lookahead token after shifting the error
2864 token. */
2865 goto yyerrlab1;
2868 /*---------------------------------------------------.
2869 | yyerrorlab -- error raised explicitly by YYERROR. |
2870 `---------------------------------------------------*/
2871 yyerrorlab:
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;
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;
2888 /*-------------------------------------------------------------.
2889 | yyerrlab1 -- common code for both syntax error and YYERROR. |
2890 `-------------------------------------------------------------*/
2891 yyerrlab1:
2892 yyerrstatus = 3; /* Each real token shifted decrements this. */
2894 for (;;)
2896 yyn = yypact[yystate];
2897 if (yyn != YYPACT_NINF)
2899 yyn += YYTERROR;
2900 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
2902 yyn = yytable[yyn];
2903 if (0 < yyn)
2904 break;
2908 /* Pop the current state because it cannot handle the error token. */
2909 if (yyssp == yyss)
2910 YYABORT;
2913 yydestruct ("Error: popping",
2914 yystos[yystate], yyvsp);
2915 YYPOPSTACK (1);
2916 yystate = *yyssp;
2917 YY_STACK_PRINT (yyss, yyssp);
2920 *++yyvsp = yylval;
2923 /* Shift the error token. */
2924 YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
2926 yystate = yyn;
2927 goto yynewstate;
2930 /*-------------------------------------.
2931 | yyacceptlab -- YYACCEPT comes here. |
2932 `-------------------------------------*/
2933 yyacceptlab:
2934 yyresult = 0;
2935 goto yyreturn;
2937 /*-----------------------------------.
2938 | yyabortlab -- YYABORT comes here. |
2939 `-----------------------------------*/
2940 yyabortlab:
2941 yyresult = 1;
2942 goto yyreturn;
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
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)
2964 yydestruct ("Cleanup: popping",
2965 yystos[*yyssp], yyvsp);
2966 YYPOPSTACK (1);
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);
2982 /* Line 1675 of yacc.c */
2983 #line 745 "ada-exp.y"
2986 /* yylex defined in ada-lex.c: Reads one token, getting characters */
2987 /* through lexptr. */
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. */
2993 /* (See note above on previous definitions for YACC.) */
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
3004 static struct obstack temp_parse_space;
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"
3012 ada_parse (void)
3014 lexer_init (yyin); /* (Re-)initialize lexer. */
3015 type_qualifier = NULL;
3016 obstack_free (&temp_parse_space, NULL);
3017 obstack_init (&temp_parse_space);
3019 return _ada_parse ();
3022 void
3023 yyerror (char *msg)
3025 error (_("Error in expression, near `%s'."), lexptr);
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. */
3036 static struct stoken
3037 string_to_operator (struct stoken string)
3039 int i;
3041 for (i = 0; ada_opname_table[i].encoded != NULL; i += 1)
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)
3047 strncpy (string.ptr, ada_opname_table[i].decoded,
3048 string.length+2);
3049 string.length += 2;
3050 return string;
3053 error (_("Invalid operator symbol `%s'"), string.ptr);
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)
3063 if (orig_left_context == NULL && symbol_read_needs_frame (sym))
3065 if (innermost_block == 0
3066 || contained_in (block, innermost_block))
3067 innermost_block = block;
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);
3076 /* Write integer or boolean constant ARG of type TYPE. */
3078 static void
3079 write_int (LONGEST arg, struct type *type)
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);
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)
3091 write_exp_elt_opcode (opcode);
3092 write_exp_string (token);
3093 write_exp_elt_opcode (opcode);
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). */
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)
3112 char *name;
3113 enum { SIMPLE_INDEX, LOWER_BOUND, UPPER_BOUND } slice_state;
3114 struct ada_symbol_info sym_info;
3116 if (max_depth <= 0)
3117 error (_("Could not find renamed symbol"));
3119 if (orig_left_context == NULL)
3120 orig_left_context = get_selected_block (NULL);
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;
3132 const char *inner_renamed_entity;
3133 int inner_renamed_entity_len;
3134 const char *inner_renaming_expr;
3136 switch (ada_parse_renaming (sym_info.sym, &inner_renamed_entity,
3137 &inner_renamed_entity_len,
3138 &inner_renaming_expr))
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;
3153 slice_state = SIMPLE_INDEX;
3154 while (*renaming_expr == 'X')
3156 renaming_expr += 1;
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))
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);
3180 else
3182 const char *end;
3183 char *index_name;
3184 struct ada_symbol_info index_sym_info;
3186 end = strchr (renaming_expr, 'X');
3187 if (end == NULL)
3188 end = renaming_expr + strlen (renaming_expr);
3190 index_name =
3191 obstack_copy0 (&temp_parse_space, renaming_expr,
3192 end - renaming_expr);
3193 renaming_expr = end;
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);
3205 if (slice_state == SIMPLE_INDEX)
3207 write_exp_elt_opcode (OP_FUNCALL);
3208 write_exp_elt_longcst ((LONGEST) 1);
3209 write_exp_elt_opcode (OP_FUNCALL);
3211 else if (slice_state == LOWER_BOUND)
3212 slice_state = UPPER_BOUND;
3213 else if (slice_state == UPPER_BOUND)
3215 write_exp_elt_opcode (TERNOP_SLICE);
3216 slice_state = SIMPLE_INDEX;
3218 break;
3220 case 'R':
3222 struct stoken field_name;
3223 const char *end;
3224 renaming_expr += 1;
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;
3240 default:
3241 goto BadEncoding;
3244 if (slice_state == SIMPLE_INDEX)
3245 return;
3247 BadEncoding:
3248 error (_("Internal error in encoding of renaming declaration"));
3251 static struct block*
3252 block_lookup (struct block *context, char *raw_name)
3254 char *name;
3255 struct ada_symbol_info *syms;
3256 int nsyms;
3257 struct symtab *symtab;
3259 if (raw_name[0] == '\'')
3261 raw_name += 1;
3262 name = raw_name;
3264 else
3265 name = ada_encode (raw_name);
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;
3274 if (symtab != NULL)
3275 return BLOCKVECTOR_BLOCK (BLOCKVECTOR (symtab), STATIC_BLOCK);
3276 else if (nsyms == 0 || SYMBOL_CLASS (syms[0].sym) != LOC_BLOCK)
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);
3283 else
3285 if (nsyms > 1)
3286 warning (_("Function name \"%s\" ambiguous here"), raw_name);
3287 return SYMBOL_BLOCK_VALUE (syms[0].sym);
3291 static struct symbol*
3292 select_possible_type_sym (struct ada_symbol_info *syms, int nsyms)
3294 int i;
3295 int preferred_index;
3296 struct type *preferred_type;
3298 preferred_index = -1; preferred_type = NULL;
3299 for (i = 0; i < nsyms; i += 1)
3300 switch (SYMBOL_CLASS (syms[i].sym))
3302 case LOC_TYPEDEF:
3303 if (ada_prefer_type (SYMBOL_TYPE (syms[i].sym), preferred_type))
3305 preferred_index = i;
3306 preferred_type = SYMBOL_TYPE (syms[i].sym);
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;
3319 if (preferred_type == NULL)
3320 return NULL;
3321 return syms[preferred_index].sym;
3324 static struct type*
3325 find_primitive_type (char *name)
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 ();
3334 if (type != NULL)
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);
3348 return type;
3351 static int
3352 chop_selector (char *name, int end)
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;
3361 /* If NAME is a string beginning with a separator (either '__', or
3362 '.'), chop this separator and return the result; else, return
3363 NAME. */
3365 static char *
3366 chop_separator (char *name)
3368 if (*name == '.')
3369 return name + 1;
3371 if (name[0] == '_' && name[1] == '_')
3372 return name + 2;
3374 return name;
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)
3383 while (*sels != '\0')
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);
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.
3401 static void
3402 write_ambiguous_var (const struct block *block, char *name, int len)
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;
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);
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. */
3421 static int
3422 ada_nget_field_index (const struct type *type, const char *field_name0,
3423 int field_name_len, int maybe_missing)
3425 char *field_name = alloca ((field_name_len + 1) * sizeof (char));
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);
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.
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. */
3443 static struct type *
3444 get_symbol_field_type (struct symbol *sym, char *encoded_field_name)
3446 char *field_name = encoded_field_name;
3447 char *subfield_name;
3448 struct type *type = SYMBOL_TYPE (sym);
3449 int fieldno;
3451 if (type == NULL || field_name == NULL)
3452 return NULL;
3453 type = check_typedef (type);
3455 while (field_name[0] != '\0')
3457 field_name = chop_separator (field_name);
3459 fieldno = ada_get_field_index (type, field_name, 1);
3460 if (fieldno >= 0)
3461 return TYPE_FIELD_TYPE (type, fieldno);
3463 subfield_name = field_name;
3464 while (*subfield_name != '\0' && *subfield_name != '.'
3465 && (subfield_name[0] != '_' || subfield_name[1] != '_'))
3466 subfield_name += 1;
3468 if (subfield_name[0] == '\0')
3469 return NULL;
3471 fieldno = ada_nget_field_index (type, field_name,
3472 subfield_name - field_name, 1);
3473 if (fieldno < 0)
3474 return NULL;
3476 type = TYPE_FIELD_TYPE (type, fieldno);
3477 field_name = subfield_name;
3480 return NULL;
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). */
3493 static struct type*
3494 write_var_or_type (const struct block *block, struct stoken name0)
3496 int depth;
3497 char *encoded_name;
3498 int name_len;
3500 if (block == NULL)
3501 block = expression_context_block;
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)
3508 int tail_index;
3510 tail_index = name_len;
3511 while (tail_index > 0)
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];
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;
3527 /* A single symbol may rename a package or object. */
3529 /* This should go away when we move entirely to new version.
3530 FIXME pnh 7/20/2007. */
3531 if (nsyms == 1)
3533 struct symbol *ren_sym =
3534 ada_find_renaming_symbol (syms[0].sym, syms[0].block);
3536 if (ren_sym != NULL)
3537 syms[0].sym = ren_sym;
3540 type_sym = select_possible_type_sym (syms, nsyms);
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;
3549 switch (ada_parse_renaming (renaming_sym, &renaming,
3550 &renaming_len, &renaming_expr))
3552 case ADA_NOT_RENAMING:
3553 break;
3554 case ADA_PACKAGE_RENAMING:
3555 case ADA_EXCEPTION_RENAMING:
3556 case ADA_SUBPROGRAM_RENAMING:
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;
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"));
3577 if (type_sym != NULL)
3579 struct type *field_type;
3581 if (tail_index == name_len)
3582 return SYMBOL_TYPE (type_sym);
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);
3595 else if (tail_index == name_len && nsyms == 0)
3597 struct type *type = find_primitive_type (encoded_name);
3599 if (type != NULL)
3600 return type;
3603 if (nsyms == 1)
3605 write_var_from_sym (block, syms[0].block, syms[0].sym);
3606 write_selectors (encoded_name + tail_index);
3607 return NULL;
3609 else if (nsyms == 0)
3611 struct minimal_symbol *msym
3612 = ada_lookup_simple_minsym (encoded_name);
3613 if (msym != NULL)
3615 write_exp_msymbol (msym);
3616 /* Maybe cause error here rather than later? FIXME? */
3617 write_selectors (encoded_name + tail_index);
3618 return NULL;
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);
3626 tail_index = chop_selector (encoded_name, tail_index);
3628 else
3630 write_ambiguous_var (block, encoded_name, tail_index);
3631 write_selectors (encoded_name + tail_index);
3632 return NULL;
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);
3643 TryAfterRenaming: ;
3646 error (_("Could not find renamed symbol \"%s\""), name0.ptr);
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.
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). */
3665 static void
3666 write_name_assoc (struct stoken name)
3668 if (strchr (name.ptr, '.') == NULL)
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);
3678 else
3679 if (write_var_or_type (NULL, name) != NULL)
3680 error (_("Invalid use of type."));
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. */
3688 static LONGEST
3689 convert_char_literal (struct type *type, LONGEST val)
3691 char name[7];
3692 int f;
3694 if (type == NULL)
3695 return val;
3696 type = check_typedef (type);
3697 if (TYPE_CODE (type) != TYPE_CODE_ENUM)
3698 return val;
3700 xsnprintf (name, sizeof (name), "QU%02x", (int) val);
3701 for (f = 0; f < TYPE_NFIELDS (type); f += 1)
3703 if (strcmp (name, TYPE_FIELD_NAME (type, f)) == 0)
3704 return TYPE_FIELD_ENUMVAL (type, f);
3706 return val;
3709 static struct type *
3710 type_int (void)
3712 return parse_type->builtin_int;
3715 static struct type *
3716 type_long (void)
3718 return parse_type->builtin_long;
3721 static struct type *
3722 type_long_long (void)
3724 return parse_type->builtin_long_long;
3727 static struct type *
3728 type_float (void)
3730 return parse_type->builtin_float;
3733 static struct type *
3734 type_double (void)
3736 return parse_type->builtin_double;
3739 static struct type *
3740 type_long_double (void)
3742 return parse_type->builtin_long_double;
3745 static struct type *
3746 type_char (void)
3748 return language_string_char_type (parse_language, parse_gdbarch);
3751 static struct type *
3752 type_boolean (void)
3754 return parse_type->builtin_bool;
3757 static struct type *
3758 type_system_address (void)
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;
3767 /* Provide a prototype to silence -Wmissing-prototypes. */
3768 extern initialize_file_ftype _initialize_ada_exp;
3770 void
3771 _initialize_ada_exp (void)
3773 obstack_init (&temp_parse_space);
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. */
3782 struct stoken (*dummy_string_to_ada_operator) (struct stoken)
3783 = string_to_operator;