1*11efff7fSkettenis /* A Bison parser, made by GNU Bison 1.875c. */
2b725ae77Skettenis
3*11efff7fSkettenis /* Skeleton parser for Yacc-like parsing with Bison,
4*11efff7fSkettenis Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
5b725ae77Skettenis
6*11efff7fSkettenis This program is free software; you can redistribute it and/or modify
7*11efff7fSkettenis it under the terms of the GNU General Public License as published by
8*11efff7fSkettenis the Free Software Foundation; either version 2, or (at your option)
9*11efff7fSkettenis any later version.
10*11efff7fSkettenis
11*11efff7fSkettenis This program is distributed in the hope that it will be useful,
12*11efff7fSkettenis but WITHOUT ANY WARRANTY; without even the implied warranty of
13*11efff7fSkettenis MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14*11efff7fSkettenis GNU General Public License for more details.
15*11efff7fSkettenis
16*11efff7fSkettenis You should have received a copy of the GNU General Public License
17*11efff7fSkettenis along with this program; if not, write to the Free Software
18*11efff7fSkettenis Foundation, Inc., 59 Temple Place - Suite 330,
19*11efff7fSkettenis Boston, MA 02111-1307, USA. */
20*11efff7fSkettenis
21*11efff7fSkettenis /* As a special exception, when this file is copied by Bison into a
22*11efff7fSkettenis Bison output file, you may use that output file without restriction.
23*11efff7fSkettenis This special exception was added by the Free Software Foundation
24*11efff7fSkettenis in version 1.24 of Bison. */
25*11efff7fSkettenis
26*11efff7fSkettenis /* Written by Richard Stallman by simplifying the original so called
27*11efff7fSkettenis ``semantic'' parser. */
28*11efff7fSkettenis
29*11efff7fSkettenis /* All symbols defined below should begin with yy or YY, to avoid
30*11efff7fSkettenis infringing on user name space. This should be done even for local
31*11efff7fSkettenis variables, as they might otherwise be expanded by user macros.
32*11efff7fSkettenis There are some unavoidable exceptions within include files to
33*11efff7fSkettenis define necessary library symbols; they are noted "INFRINGES ON
34*11efff7fSkettenis USER NAME SPACE" below. */
35*11efff7fSkettenis
36*11efff7fSkettenis /* Identify Bison output. */
37*11efff7fSkettenis #define YYBISON 1
38*11efff7fSkettenis
39*11efff7fSkettenis /* Skeleton name. */
40*11efff7fSkettenis #define YYSKELETON_NAME "yacc.c"
41*11efff7fSkettenis
42*11efff7fSkettenis /* Pure parsers. */
43*11efff7fSkettenis #define YYPURE 0
44*11efff7fSkettenis
45*11efff7fSkettenis /* Using locations. */
46*11efff7fSkettenis #define YYLSP_NEEDED 0
47*11efff7fSkettenis
48*11efff7fSkettenis
49*11efff7fSkettenis
50*11efff7fSkettenis /* Tokens. */
51*11efff7fSkettenis #ifndef YYTOKENTYPE
52*11efff7fSkettenis # define YYTOKENTYPE
53*11efff7fSkettenis /* Put the tokens into the symbol table, so that GDB and other debuggers
54*11efff7fSkettenis know about them. */
55*11efff7fSkettenis enum yytokentype {
56*11efff7fSkettenis INT = 258,
57*11efff7fSkettenis NULL_PTR = 259,
58*11efff7fSkettenis CHARLIT = 260,
59*11efff7fSkettenis FLOAT = 261,
60*11efff7fSkettenis TYPENAME = 262,
61*11efff7fSkettenis BLOCKNAME = 263,
62*11efff7fSkettenis STRING = 264,
63*11efff7fSkettenis NAME = 265,
64*11efff7fSkettenis DOT_ID = 266,
65*11efff7fSkettenis OBJECT_RENAMING = 267,
66*11efff7fSkettenis DOT_ALL = 268,
67*11efff7fSkettenis SPECIAL_VARIABLE = 269,
68*11efff7fSkettenis ASSIGN = 270,
69*11efff7fSkettenis ELSE = 271,
70*11efff7fSkettenis THEN = 272,
71*11efff7fSkettenis XOR = 273,
72*11efff7fSkettenis OR = 274,
73*11efff7fSkettenis _AND_ = 275,
74*11efff7fSkettenis DOTDOT = 276,
75*11efff7fSkettenis IN = 277,
76*11efff7fSkettenis GEQ = 278,
77*11efff7fSkettenis LEQ = 279,
78*11efff7fSkettenis NOTEQUAL = 280,
79*11efff7fSkettenis UNARY = 281,
80*11efff7fSkettenis REM = 282,
81*11efff7fSkettenis MOD = 283,
82*11efff7fSkettenis NOT = 284,
83*11efff7fSkettenis ABS = 285,
84*11efff7fSkettenis STARSTAR = 286,
85*11efff7fSkettenis TICK_LENGTH = 287,
86*11efff7fSkettenis TICK_LAST = 288,
87*11efff7fSkettenis TICK_FIRST = 289,
88*11efff7fSkettenis TICK_ADDRESS = 290,
89*11efff7fSkettenis TICK_ACCESS = 291,
90*11efff7fSkettenis TICK_MODULUS = 292,
91*11efff7fSkettenis TICK_MIN = 293,
92*11efff7fSkettenis TICK_MAX = 294,
93*11efff7fSkettenis TICK_VAL = 295,
94*11efff7fSkettenis TICK_TAG = 296,
95*11efff7fSkettenis TICK_SIZE = 297,
96*11efff7fSkettenis TICK_RANGE = 298,
97*11efff7fSkettenis TICK_POS = 299,
98*11efff7fSkettenis ARROW = 300,
99*11efff7fSkettenis NEW = 301
100*11efff7fSkettenis };
101*11efff7fSkettenis #endif
102*11efff7fSkettenis #define INT 258
103*11efff7fSkettenis #define NULL_PTR 259
104*11efff7fSkettenis #define CHARLIT 260
105*11efff7fSkettenis #define FLOAT 261
106*11efff7fSkettenis #define TYPENAME 262
107*11efff7fSkettenis #define BLOCKNAME 263
108*11efff7fSkettenis #define STRING 264
109*11efff7fSkettenis #define NAME 265
110*11efff7fSkettenis #define DOT_ID 266
111*11efff7fSkettenis #define OBJECT_RENAMING 267
112*11efff7fSkettenis #define DOT_ALL 268
113*11efff7fSkettenis #define SPECIAL_VARIABLE 269
114*11efff7fSkettenis #define ASSIGN 270
115*11efff7fSkettenis #define ELSE 271
116*11efff7fSkettenis #define THEN 272
117*11efff7fSkettenis #define XOR 273
118*11efff7fSkettenis #define OR 274
119*11efff7fSkettenis #define _AND_ 275
120*11efff7fSkettenis #define DOTDOT 276
121*11efff7fSkettenis #define IN 277
122*11efff7fSkettenis #define GEQ 278
123*11efff7fSkettenis #define LEQ 279
124*11efff7fSkettenis #define NOTEQUAL 280
125*11efff7fSkettenis #define UNARY 281
126*11efff7fSkettenis #define REM 282
127b725ae77Skettenis #define MOD 283
128*11efff7fSkettenis #define NOT 284
129*11efff7fSkettenis #define ABS 285
130*11efff7fSkettenis #define STARSTAR 286
131*11efff7fSkettenis #define TICK_LENGTH 287
132*11efff7fSkettenis #define TICK_LAST 288
133*11efff7fSkettenis #define TICK_FIRST 289
134*11efff7fSkettenis #define TICK_ADDRESS 290
135*11efff7fSkettenis #define TICK_ACCESS 291
136*11efff7fSkettenis #define TICK_MODULUS 292
137*11efff7fSkettenis #define TICK_MIN 293
138*11efff7fSkettenis #define TICK_MAX 294
139*11efff7fSkettenis #define TICK_VAL 295
140*11efff7fSkettenis #define TICK_TAG 296
141*11efff7fSkettenis #define TICK_SIZE 297
142*11efff7fSkettenis #define TICK_RANGE 298
143*11efff7fSkettenis #define TICK_POS 299
144*11efff7fSkettenis #define ARROW 300
145*11efff7fSkettenis #define NEW 301
146b725ae77Skettenis
147*11efff7fSkettenis
148*11efff7fSkettenis
149*11efff7fSkettenis
150*11efff7fSkettenis /* Copy the first part of user declarations. */
151b725ae77Skettenis #line 38 "ada-exp.y"
152b725ae77Skettenis
153b725ae77Skettenis
154b725ae77Skettenis #include "defs.h"
155*11efff7fSkettenis #include "gdb_string.h"
156b725ae77Skettenis #include <ctype.h>
157b725ae77Skettenis #include "expression.h"
158b725ae77Skettenis #include "value.h"
159b725ae77Skettenis #include "parser-defs.h"
160b725ae77Skettenis #include "language.h"
161b725ae77Skettenis #include "ada-lang.h"
162b725ae77Skettenis #include "bfd.h" /* Required by objfiles.h. */
163b725ae77Skettenis #include "symfile.h" /* Required by objfiles.h. */
164b725ae77Skettenis #include "objfiles.h" /* For have_full_symbols and have_partial_symbols */
165b725ae77Skettenis #include "frame.h"
166b725ae77Skettenis #include "block.h"
167b725ae77Skettenis
168b725ae77Skettenis /* Remap normal yacc parser interface names (yyparse, yylex, yyerror, etc),
169b725ae77Skettenis as well as gratuitiously global symbol names, so we can have multiple
170b725ae77Skettenis yacc generated parsers in gdb. These are only the variables
171b725ae77Skettenis produced by yacc. If other parser generators (bison, byacc, etc) produce
172b725ae77Skettenis additional global names that conflict at link time, then those parser
173b725ae77Skettenis generators need to be fixed instead of adding those names to this list. */
174b725ae77Skettenis
175b725ae77Skettenis /* NOTE: This is clumsy, especially since BISON and FLEX provide --prefix
176b725ae77Skettenis options. I presume we are maintaining it to accommodate systems
177b725ae77Skettenis without BISON? (PNH) */
178b725ae77Skettenis
179b725ae77Skettenis #define yymaxdepth ada_maxdepth
180b725ae77Skettenis #define yyparse _ada_parse /* ada_parse calls this after initialization */
181b725ae77Skettenis #define yylex ada_lex
182b725ae77Skettenis #define yyerror ada_error
183b725ae77Skettenis #define yylval ada_lval
184b725ae77Skettenis #define yychar ada_char
185b725ae77Skettenis #define yydebug ada_debug
186b725ae77Skettenis #define yypact ada_pact
187b725ae77Skettenis #define yyr1 ada_r1
188b725ae77Skettenis #define yyr2 ada_r2
189b725ae77Skettenis #define yydef ada_def
190b725ae77Skettenis #define yychk ada_chk
191b725ae77Skettenis #define yypgo ada_pgo
192b725ae77Skettenis #define yyact ada_act
193b725ae77Skettenis #define yyexca ada_exca
194b725ae77Skettenis #define yyerrflag ada_errflag
195b725ae77Skettenis #define yynerrs ada_nerrs
196b725ae77Skettenis #define yyps ada_ps
197b725ae77Skettenis #define yypv ada_pv
198b725ae77Skettenis #define yys ada_s
199b725ae77Skettenis #define yy_yys ada_yys
200b725ae77Skettenis #define yystate ada_state
201b725ae77Skettenis #define yytmp ada_tmp
202b725ae77Skettenis #define yyv ada_v
203b725ae77Skettenis #define yy_yyv ada_yyv
204b725ae77Skettenis #define yyval ada_val
205b725ae77Skettenis #define yylloc ada_lloc
206b725ae77Skettenis #define yyreds ada_reds /* With YYDEBUG defined */
207b725ae77Skettenis #define yytoks ada_toks /* With YYDEBUG defined */
208b725ae77Skettenis #define yyname ada_name /* With YYDEBUG defined */
209b725ae77Skettenis #define yyrule ada_rule /* With YYDEBUG defined */
210b725ae77Skettenis
211b725ae77Skettenis #ifndef YYDEBUG
212b725ae77Skettenis #define YYDEBUG 1 /* Default to yydebug support */
213b725ae77Skettenis #endif
214b725ae77Skettenis
215b725ae77Skettenis #define YYFPRINTF parser_fprintf
216b725ae77Skettenis
217b725ae77Skettenis struct name_info {
218b725ae77Skettenis struct symbol *sym;
219b725ae77Skettenis struct minimal_symbol *msym;
220b725ae77Skettenis struct block *block;
221b725ae77Skettenis struct stoken stoken;
222b725ae77Skettenis };
223b725ae77Skettenis
224b725ae77Skettenis /* If expression is in the context of TYPE'(...), then TYPE, else
225b725ae77Skettenis * NULL. */
226b725ae77Skettenis static struct type *type_qualifier;
227b725ae77Skettenis
228b725ae77Skettenis int yyparse (void);
229b725ae77Skettenis
230b725ae77Skettenis static int yylex (void);
231b725ae77Skettenis
232b725ae77Skettenis void yyerror (char *);
233b725ae77Skettenis
234b725ae77Skettenis static struct stoken string_to_operator (struct stoken);
235b725ae77Skettenis
236*11efff7fSkettenis static void write_int (LONGEST, struct type *);
237b725ae77Skettenis
238*11efff7fSkettenis static void write_object_renaming (struct block *, struct symbol *, int);
239b725ae77Skettenis
240b725ae77Skettenis static void write_var_from_name (struct block *, struct name_info);
241b725ae77Skettenis
242*11efff7fSkettenis static LONGEST convert_char_literal (struct type *, LONGEST);
243b725ae77Skettenis
244*11efff7fSkettenis static struct type *type_int (void);
245*11efff7fSkettenis
246*11efff7fSkettenis static struct type *type_long (void);
247*11efff7fSkettenis
248*11efff7fSkettenis static struct type *type_long_long (void);
249*11efff7fSkettenis
250*11efff7fSkettenis static struct type *type_float (void);
251*11efff7fSkettenis
252*11efff7fSkettenis static struct type *type_double (void);
253*11efff7fSkettenis
254*11efff7fSkettenis static struct type *type_long_double (void);
255*11efff7fSkettenis
256*11efff7fSkettenis static struct type *type_char (void);
257*11efff7fSkettenis
258*11efff7fSkettenis static struct type *type_system_address (void);
259*11efff7fSkettenis
260*11efff7fSkettenis
261*11efff7fSkettenis /* Enabling traces. */
262*11efff7fSkettenis #ifndef YYDEBUG
263*11efff7fSkettenis # define YYDEBUG 0
264*11efff7fSkettenis #endif
265*11efff7fSkettenis
266*11efff7fSkettenis /* Enabling verbose error messages. */
267*11efff7fSkettenis #ifdef YYERROR_VERBOSE
268*11efff7fSkettenis # undef YYERROR_VERBOSE
269*11efff7fSkettenis # define YYERROR_VERBOSE 1
270*11efff7fSkettenis #else
271*11efff7fSkettenis # define YYERROR_VERBOSE 0
272*11efff7fSkettenis #endif
273*11efff7fSkettenis
274*11efff7fSkettenis #if ! defined (YYSTYPE) && ! defined (YYSTYPE_IS_DECLARED)
275*11efff7fSkettenis #line 148 "ada-exp.y"
276*11efff7fSkettenis typedef union YYSTYPE {
277b725ae77Skettenis LONGEST lval;
278b725ae77Skettenis struct {
279b725ae77Skettenis LONGEST val;
280b725ae77Skettenis struct type *type;
281b725ae77Skettenis } typed_val;
282b725ae77Skettenis struct {
283b725ae77Skettenis DOUBLEST dval;
284b725ae77Skettenis struct type *type;
285b725ae77Skettenis } typed_val_float;
286b725ae77Skettenis struct type *tval;
287b725ae77Skettenis struct stoken sval;
288b725ae77Skettenis struct name_info ssym;
289b725ae77Skettenis int voidval;
290b725ae77Skettenis struct block *bval;
291b725ae77Skettenis struct internalvar *ivar;
292b725ae77Skettenis
293*11efff7fSkettenis } YYSTYPE;
294*11efff7fSkettenis /* Line 191 of yacc.c. */
295*11efff7fSkettenis # define yystype YYSTYPE /* obsolescent; will be withdrawn */
296*11efff7fSkettenis # define YYSTYPE_IS_DECLARED 1
297b725ae77Skettenis # define YYSTYPE_IS_TRIVIAL 1
298b725ae77Skettenis #endif
299*11efff7fSkettenis
300*11efff7fSkettenis
301*11efff7fSkettenis
302*11efff7fSkettenis /* Copy the second part of user declarations. */
303*11efff7fSkettenis
304*11efff7fSkettenis
305*11efff7fSkettenis /* Line 214 of yacc.c. */
306*11efff7fSkettenis
307*11efff7fSkettenis #if ! defined (yyoverflow) || YYERROR_VERBOSE
308*11efff7fSkettenis
309*11efff7fSkettenis # ifndef YYFREE
310*11efff7fSkettenis # define YYFREE free
311b725ae77Skettenis # endif
312*11efff7fSkettenis # ifndef YYMALLOC
313*11efff7fSkettenis # define YYMALLOC xmalloc
314b725ae77Skettenis # endif
315b725ae77Skettenis
316b725ae77Skettenis /* The parser invokes alloca or xmalloc; define the necessary symbols. */
317b725ae77Skettenis
318*11efff7fSkettenis # ifdef YYSTACK_USE_ALLOCA
319b725ae77Skettenis # if YYSTACK_USE_ALLOCA
320b725ae77Skettenis # define YYSTACK_ALLOC alloca
321*11efff7fSkettenis # endif
322b725ae77Skettenis # else
323b725ae77Skettenis # if defined (alloca) || defined (_ALLOCA_H)
324b725ae77Skettenis # define YYSTACK_ALLOC alloca
325b725ae77Skettenis # else
326b725ae77Skettenis # ifdef __GNUC__
327b725ae77Skettenis # define YYSTACK_ALLOC __builtin_alloca
328b725ae77Skettenis # endif
329b725ae77Skettenis # endif
330b725ae77Skettenis # endif
331b725ae77Skettenis
332b725ae77Skettenis # ifdef YYSTACK_ALLOC
333b725ae77Skettenis /* Pacify GCC's `empty if-body' warning. */
334b725ae77Skettenis # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
335b725ae77Skettenis # else
336b725ae77Skettenis # if defined (__STDC__) || defined (__cplusplus)
337b725ae77Skettenis # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
338b725ae77Skettenis # define YYSIZE_T size_t
339b725ae77Skettenis # endif
340*11efff7fSkettenis # define YYSTACK_ALLOC YYMALLOC
341*11efff7fSkettenis # define YYSTACK_FREE YYFREE
342b725ae77Skettenis # endif
343*11efff7fSkettenis #endif /* ! defined (yyoverflow) || YYERROR_VERBOSE */
344b725ae77Skettenis
345b725ae77Skettenis
346b725ae77Skettenis #if (! defined (yyoverflow) \
347b725ae77Skettenis && (! defined (__cplusplus) \
348*11efff7fSkettenis || (defined (YYSTYPE_IS_TRIVIAL) && YYSTYPE_IS_TRIVIAL)))
349b725ae77Skettenis
350b725ae77Skettenis /* A type that is properly aligned for any stack member. */
351b725ae77Skettenis union yyalloc
352b725ae77Skettenis {
353b725ae77Skettenis short yyss;
354b725ae77Skettenis YYSTYPE yyvs;
355b725ae77Skettenis };
356b725ae77Skettenis
357b725ae77Skettenis /* The size of the maximum gap between one aligned stack and the next. */
358*11efff7fSkettenis # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
359b725ae77Skettenis
360b725ae77Skettenis /* The size of an array large to enough to hold all stacks, each with
361b725ae77Skettenis N elements. */
362b725ae77Skettenis # define YYSTACK_BYTES(N) \
363b725ae77Skettenis ((N) * (sizeof (short) + sizeof (YYSTYPE)) \
364*11efff7fSkettenis + YYSTACK_GAP_MAXIMUM)
365b725ae77Skettenis
366b725ae77Skettenis /* Copy COUNT objects from FROM to TO. The source and destination do
367b725ae77Skettenis not overlap. */
368b725ae77Skettenis # ifndef YYCOPY
369*11efff7fSkettenis # if defined (__GNUC__) && 1 < __GNUC__
370b725ae77Skettenis # define YYCOPY(To, From, Count) \
371b725ae77Skettenis __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
372b725ae77Skettenis # else
373b725ae77Skettenis # define YYCOPY(To, From, Count) \
374b725ae77Skettenis do \
375b725ae77Skettenis { \
376b725ae77Skettenis register YYSIZE_T yyi; \
377b725ae77Skettenis for (yyi = 0; yyi < (Count); yyi++) \
378b725ae77Skettenis (To)[yyi] = (From)[yyi]; \
379b725ae77Skettenis } \
380b725ae77Skettenis while (0)
381b725ae77Skettenis # endif
382b725ae77Skettenis # endif
383b725ae77Skettenis
384b725ae77Skettenis /* Relocate STACK from its old location to the new one. The
385b725ae77Skettenis local variables YYSIZE and YYSTACKSIZE give the old and new number of
386b725ae77Skettenis elements in the stack, and YYPTR gives the new location of the
387b725ae77Skettenis stack. Advance YYPTR to a properly aligned location for the next
388b725ae77Skettenis stack. */
389b725ae77Skettenis # define YYSTACK_RELOCATE(Stack) \
390b725ae77Skettenis do \
391b725ae77Skettenis { \
392b725ae77Skettenis YYSIZE_T yynewbytes; \
393b725ae77Skettenis YYCOPY (&yyptr->Stack, Stack, yysize); \
394b725ae77Skettenis Stack = &yyptr->Stack; \
395*11efff7fSkettenis yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
396b725ae77Skettenis yyptr += yynewbytes / sizeof (*yyptr); \
397b725ae77Skettenis } \
398b725ae77Skettenis while (0)
399b725ae77Skettenis
400b725ae77Skettenis #endif
401b725ae77Skettenis
402*11efff7fSkettenis #if defined (__STDC__) || defined (__cplusplus)
403*11efff7fSkettenis typedef signed char yysigned_char;
404*11efff7fSkettenis #else
405*11efff7fSkettenis typedef short yysigned_char;
406*11efff7fSkettenis #endif
407*11efff7fSkettenis
408*11efff7fSkettenis /* YYFINAL -- State number of the termination state. */
409*11efff7fSkettenis #define YYFINAL 42
410*11efff7fSkettenis /* YYLAST -- Last index in YYTABLE. */
411*11efff7fSkettenis #define YYLAST 1041
412*11efff7fSkettenis
413*11efff7fSkettenis /* YYNTOKENS -- Number of terminals. */
414*11efff7fSkettenis #define YYNTOKENS 66
415*11efff7fSkettenis /* YYNNTS -- Number of nonterminals. */
416*11efff7fSkettenis #define YYNNTS 15
417*11efff7fSkettenis /* YYNRULES -- Number of rules. */
418*11efff7fSkettenis #define YYNRULES 96
419*11efff7fSkettenis /* YYNRULES -- Number of states. */
420*11efff7fSkettenis #define YYNSTATES 182
421*11efff7fSkettenis
422*11efff7fSkettenis /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
423*11efff7fSkettenis #define YYUNDEFTOK 2
424*11efff7fSkettenis #define YYMAXUTOK 301
425*11efff7fSkettenis
426*11efff7fSkettenis #define YYTRANSLATE(YYX) \
427*11efff7fSkettenis ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
428*11efff7fSkettenis
429*11efff7fSkettenis /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */
430*11efff7fSkettenis static const unsigned char yytranslate[] =
431*11efff7fSkettenis {
432*11efff7fSkettenis 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
433*11efff7fSkettenis 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
434*11efff7fSkettenis 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
435*11efff7fSkettenis 2, 2, 2, 2, 2, 2, 2, 2, 32, 61,
436*11efff7fSkettenis 55, 60, 34, 30, 62, 31, 54, 35, 2, 2,
437*11efff7fSkettenis 2, 2, 2, 2, 2, 2, 2, 2, 2, 59,
438*11efff7fSkettenis 22, 21, 23, 2, 29, 2, 2, 2, 2, 2,
439*11efff7fSkettenis 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
440*11efff7fSkettenis 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
441*11efff7fSkettenis 2, 56, 2, 65, 2, 2, 2, 2, 2, 2,
442*11efff7fSkettenis 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
443*11efff7fSkettenis 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
444*11efff7fSkettenis 2, 2, 2, 63, 2, 64, 2, 2, 2, 2,
445*11efff7fSkettenis 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
446*11efff7fSkettenis 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
447*11efff7fSkettenis 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
448*11efff7fSkettenis 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
449*11efff7fSkettenis 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
450*11efff7fSkettenis 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
451*11efff7fSkettenis 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
452*11efff7fSkettenis 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
453*11efff7fSkettenis 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
454*11efff7fSkettenis 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
455*11efff7fSkettenis 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
456*11efff7fSkettenis 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
457*11efff7fSkettenis 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
458*11efff7fSkettenis 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
459*11efff7fSkettenis 15, 16, 17, 18, 19, 20, 24, 25, 26, 27,
460*11efff7fSkettenis 28, 33, 36, 37, 38, 39, 40, 41, 42, 43,
461*11efff7fSkettenis 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
462*11efff7fSkettenis 57, 58
463*11efff7fSkettenis };
464*11efff7fSkettenis
465*11efff7fSkettenis #if YYDEBUG
466*11efff7fSkettenis /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
467*11efff7fSkettenis YYRHS. */
468*11efff7fSkettenis static const unsigned short yyprhs[] =
469*11efff7fSkettenis {
470*11efff7fSkettenis 0, 0, 3, 5, 7, 9, 13, 16, 19, 24,
471*11efff7fSkettenis 29, 30, 38, 39, 46, 50, 52, 54, 56, 60,
472*11efff7fSkettenis 63, 66, 69, 72, 73, 75, 79, 83, 89, 94,
473*11efff7fSkettenis 98, 102, 106, 110, 114, 118, 122, 126, 130, 134,
474*11efff7fSkettenis 138, 142, 148, 154, 158, 165, 172, 177, 181, 185,
475*11efff7fSkettenis 189, 193, 198, 202, 207, 211, 214, 217, 221, 225,
476*11efff7fSkettenis 229, 232, 235, 243, 251, 257, 261, 265, 269, 275,
477*11efff7fSkettenis 278, 279, 283, 285, 287, 288, 290, 292, 294, 296,
478*11efff7fSkettenis 298, 301, 303, 306, 308, 311, 313, 315, 317, 319,
479*11efff7fSkettenis 322, 324, 327, 330, 334, 337, 340
480*11efff7fSkettenis };
481*11efff7fSkettenis
482*11efff7fSkettenis /* YYRHS -- A `-1'-separated list of the rules' RHS. */
483*11efff7fSkettenis static const yysigned_char yyrhs[] =
484*11efff7fSkettenis {
485*11efff7fSkettenis 67, 0, -1, 68, -1, 80, -1, 72, -1, 68,
486*11efff7fSkettenis 59, 72, -1, 69, 13, -1, 69, 11, -1, 69,
487*11efff7fSkettenis 55, 73, 60, -1, 80, 55, 72, 60, -1, -1,
488*11efff7fSkettenis 80, 61, 71, 70, 55, 72, 60, -1, -1, 69,
489*11efff7fSkettenis 55, 72, 24, 72, 60, -1, 55, 68, 60, -1,
490*11efff7fSkettenis 77, -1, 14, -1, 69, -1, 72, 15, 72, -1,
491*11efff7fSkettenis 31, 72, -1, 30, 72, -1, 38, 72, -1, 39,
492*11efff7fSkettenis 72, -1, -1, 72, -1, 78, 57, 72, -1, 73,
493*11efff7fSkettenis 62, 72, -1, 73, 62, 78, 57, 72, -1, 63,
494*11efff7fSkettenis 80, 64, 72, -1, 72, 40, 72, -1, 72, 34,
495*11efff7fSkettenis 72, -1, 72, 35, 72, -1, 72, 36, 72, -1,
496*11efff7fSkettenis 72, 37, 72, -1, 72, 29, 72, -1, 72, 30,
497*11efff7fSkettenis 72, -1, 72, 32, 72, -1, 72, 31, 72, -1,
498*11efff7fSkettenis 72, 21, 72, -1, 72, 28, 72, -1, 72, 27,
499*11efff7fSkettenis 72, -1, 72, 25, 72, 24, 72, -1, 72, 25,
500*11efff7fSkettenis 72, 52, 74, -1, 72, 25, 7, -1, 72, 38,
501*11efff7fSkettenis 25, 72, 24, 72, -1, 72, 38, 25, 72, 52,
502*11efff7fSkettenis 74, -1, 72, 38, 25, 7, -1, 72, 26, 72,
503*11efff7fSkettenis -1, 72, 22, 72, -1, 72, 23, 72, -1, 72,
504*11efff7fSkettenis 20, 72, -1, 72, 20, 17, 72, -1, 72, 19,
505*11efff7fSkettenis 72, -1, 72, 19, 16, 72, -1, 72, 18, 72,
506*11efff7fSkettenis -1, 69, 45, -1, 69, 44, -1, 69, 43, 74,
507*11efff7fSkettenis -1, 69, 42, 74, -1, 69, 41, 74, -1, 69,
508*11efff7fSkettenis 51, -1, 69, 50, -1, 76, 47, 55, 72, 62,
509*11efff7fSkettenis 72, 60, -1, 76, 48, 55, 72, 62, 72, 60,
510*11efff7fSkettenis -1, 76, 53, 55, 72, 60, -1, 75, 43, 74,
511*11efff7fSkettenis -1, 75, 42, 74, -1, 75, 41, 74, -1, 75,
512*11efff7fSkettenis 49, 55, 72, 60, -1, 75, 46, -1, -1, 55,
513*11efff7fSkettenis 3, 60, -1, 7, -1, 75, -1, -1, 3, -1,
514*11efff7fSkettenis 5, -1, 6, -1, 4, -1, 9, -1, 58, 7,
515*11efff7fSkettenis -1, 10, -1, 79, 10, -1, 12, -1, 79, 12,
516*11efff7fSkettenis -1, 10, -1, 7, -1, 12, -1, 8, -1, 79,
517*11efff7fSkettenis 8, -1, 7, -1, 79, 7, -1, 7, 45, -1,
518*11efff7fSkettenis 79, 7, 45, -1, 34, 72, -1, 32, 72, -1,
519*11efff7fSkettenis 72, 56, 72, 65, -1
520*11efff7fSkettenis };
521*11efff7fSkettenis
522*11efff7fSkettenis /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
523*11efff7fSkettenis static const unsigned short yyrline[] =
524*11efff7fSkettenis {
525*11efff7fSkettenis 0, 217, 217, 218, 224, 225, 230, 234, 241, 249,
526*11efff7fSkettenis 257, 257, 266, 270, 274, 277, 280, 284, 287, 291,
527*11efff7fSkettenis 295, 299, 303, 307, 310, 312, 314, 316, 320, 330,
528*11efff7fSkettenis 334, 338, 342, 346, 350, 354, 358, 362, 366, 370,
529*11efff7fSkettenis 374, 378, 380, 385, 390, 394, 400, 408, 412, 416,
530*11efff7fSkettenis 420, 424, 428, 432, 436, 440, 442, 448, 451, 454,
531*11efff7fSkettenis 457, 459, 461, 463, 465, 467, 470, 473, 476, 478,
532*11efff7fSkettenis 482, 484, 489, 496, 498, 504, 508, 515, 523, 527,
533*11efff7fSkettenis 535, 539, 540, 542, 545, 550, 551, 552, 555, 557,
534*11efff7fSkettenis 562, 563, 564, 566, 573, 575, 577
535*11efff7fSkettenis };
536*11efff7fSkettenis #endif
537*11efff7fSkettenis
538*11efff7fSkettenis #if YYDEBUG || YYERROR_VERBOSE
539*11efff7fSkettenis /* YYTNME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
540*11efff7fSkettenis First, the terminals, then, starting at YYNTOKENS, nonterminals. */
541*11efff7fSkettenis static const char *const yytname[] =
542*11efff7fSkettenis {
543*11efff7fSkettenis "$end", "error", "$undefined", "INT", "NULL_PTR", "CHARLIT", "FLOAT",
544*11efff7fSkettenis "TYPENAME", "BLOCKNAME", "STRING", "NAME", "DOT_ID", "OBJECT_RENAMING",
545*11efff7fSkettenis "DOT_ALL", "SPECIAL_VARIABLE", "ASSIGN", "ELSE", "THEN", "XOR", "OR",
546*11efff7fSkettenis "_AND_", "'='", "'<'", "'>'", "DOTDOT", "IN", "GEQ", "LEQ", "NOTEQUAL",
547*11efff7fSkettenis "'@'", "'+'", "'-'", "'&'", "UNARY", "'*'", "'/'", "REM", "MOD", "NOT",
548*11efff7fSkettenis "ABS", "STARSTAR", "TICK_LENGTH", "TICK_LAST", "TICK_FIRST",
549*11efff7fSkettenis "TICK_ADDRESS", "TICK_ACCESS", "TICK_MODULUS", "TICK_MIN", "TICK_MAX",
550*11efff7fSkettenis "TICK_VAL", "TICK_TAG", "TICK_SIZE", "TICK_RANGE", "TICK_POS", "'.'",
551*11efff7fSkettenis "'('", "'['", "ARROW", "NEW", "';'", "')'", "'''", "','", "'{'", "'}'",
552*11efff7fSkettenis "']'", "$accept", "start", "exp1", "simple_exp", "@1", "save_qualifier",
553*11efff7fSkettenis "exp", "arglist", "tick_arglist", "type_prefix", "opt_type_prefix",
554*11efff7fSkettenis "variable", "any_name", "block", "type", 0
555*11efff7fSkettenis };
556*11efff7fSkettenis #endif
557*11efff7fSkettenis
558*11efff7fSkettenis # ifdef YYPRINT
559*11efff7fSkettenis /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
560*11efff7fSkettenis token YYLEX-NUM. */
561*11efff7fSkettenis static const unsigned short yytoknum[] =
562*11efff7fSkettenis {
563*11efff7fSkettenis 0, 256, 257, 258, 259, 260, 261, 262, 263, 264,
564*11efff7fSkettenis 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
565*11efff7fSkettenis 275, 61, 60, 62, 276, 277, 278, 279, 280, 64,
566*11efff7fSkettenis 43, 45, 38, 281, 42, 47, 282, 283, 284, 285,
567*11efff7fSkettenis 286, 287, 288, 289, 290, 291, 292, 293, 294, 295,
568*11efff7fSkettenis 296, 297, 298, 299, 46, 40, 91, 300, 301, 59,
569*11efff7fSkettenis 41, 39, 44, 123, 125, 93
570*11efff7fSkettenis };
571*11efff7fSkettenis # endif
572*11efff7fSkettenis
573*11efff7fSkettenis /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
574*11efff7fSkettenis static const unsigned char yyr1[] =
575*11efff7fSkettenis {
576*11efff7fSkettenis 0, 66, 67, 67, 68, 68, 69, 69, 69, 69,
577*11efff7fSkettenis 70, 69, 71, 69, 69, 69, 69, 72, 72, 72,
578*11efff7fSkettenis 72, 72, 72, 73, 73, 73, 73, 73, 72, 72,
579*11efff7fSkettenis 72, 72, 72, 72, 72, 72, 72, 72, 72, 72,
580*11efff7fSkettenis 72, 72, 72, 72, 72, 72, 72, 72, 72, 72,
581*11efff7fSkettenis 72, 72, 72, 72, 72, 69, 69, 69, 69, 69,
582*11efff7fSkettenis 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
583*11efff7fSkettenis 74, 74, 75, 76, 76, 72, 72, 72, 72, 72,
584*11efff7fSkettenis 72, 77, 77, 77, 77, 78, 78, 78, 79, 79,
585*11efff7fSkettenis 80, 80, 80, 80, 72, 72, 72
586*11efff7fSkettenis };
587*11efff7fSkettenis
588*11efff7fSkettenis /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
589*11efff7fSkettenis static const unsigned char yyr2[] =
590*11efff7fSkettenis {
591*11efff7fSkettenis 0, 2, 1, 1, 1, 3, 2, 2, 4, 4,
592*11efff7fSkettenis 0, 7, 0, 6, 3, 1, 1, 1, 3, 2,
593*11efff7fSkettenis 2, 2, 2, 0, 1, 3, 3, 5, 4, 3,
594*11efff7fSkettenis 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
595*11efff7fSkettenis 3, 5, 5, 3, 6, 6, 4, 3, 3, 3,
596*11efff7fSkettenis 3, 4, 3, 4, 3, 2, 2, 3, 3, 3,
597*11efff7fSkettenis 2, 2, 7, 7, 5, 3, 3, 3, 5, 2,
598*11efff7fSkettenis 0, 3, 1, 1, 0, 1, 1, 1, 1, 1,
599*11efff7fSkettenis 2, 1, 2, 1, 2, 1, 1, 1, 1, 2,
600*11efff7fSkettenis 1, 2, 2, 3, 2, 2, 4
601*11efff7fSkettenis };
602*11efff7fSkettenis
603*11efff7fSkettenis /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
604*11efff7fSkettenis STATE-NUM when YYTABLE doesn't specify something else to do. Zero
605*11efff7fSkettenis means the default is an error. */
606*11efff7fSkettenis static const unsigned char yydefact[] =
607*11efff7fSkettenis {
608*11efff7fSkettenis 74, 75, 78, 76, 77, 72, 88, 79, 81, 83,
609*11efff7fSkettenis 16, 74, 74, 74, 74, 74, 74, 74, 0, 0,
610*11efff7fSkettenis 0, 2, 17, 4, 73, 0, 15, 0, 3, 92,
611*11efff7fSkettenis 20, 0, 19, 95, 94, 21, 22, 0, 80, 90,
612*11efff7fSkettenis 0, 0, 1, 74, 7, 6, 70, 70, 70, 56,
613*11efff7fSkettenis 55, 61, 60, 74, 74, 74, 74, 74, 74, 74,
614*11efff7fSkettenis 74, 74, 74, 74, 74, 74, 74, 74, 74, 74,
615*11efff7fSkettenis 74, 74, 74, 0, 74, 74, 70, 70, 70, 69,
616*11efff7fSkettenis 0, 0, 0, 0, 91, 89, 82, 84, 74, 12,
617*11efff7fSkettenis 14, 74, 5, 0, 59, 58, 57, 72, 81, 83,
618*11efff7fSkettenis 24, 0, 0, 18, 54, 74, 52, 74, 50, 38,
619*11efff7fSkettenis 48, 49, 43, 0, 47, 40, 39, 34, 35, 37,
620*11efff7fSkettenis 36, 30, 31, 32, 33, 74, 29, 0, 67, 66,
621*11efff7fSkettenis 65, 74, 74, 74, 74, 93, 0, 10, 28, 0,
622*11efff7fSkettenis 74, 8, 74, 74, 53, 51, 74, 70, 46, 0,
623*11efff7fSkettenis 96, 0, 0, 0, 0, 9, 0, 71, 0, 26,
624*11efff7fSkettenis 0, 25, 41, 42, 74, 70, 68, 74, 74, 64,
625*11efff7fSkettenis 74, 13, 74, 44, 45, 0, 0, 0, 27, 62,
626*11efff7fSkettenis 63, 11
627*11efff7fSkettenis };
628*11efff7fSkettenis
629*11efff7fSkettenis /* YYDEFGOTO[NTERM-NUM]. */
630*11efff7fSkettenis static const short yydefgoto[] =
631*11efff7fSkettenis {
632*11efff7fSkettenis -1, 20, 21, 22, 156, 137, 23, 101, 94, 24,
633*11efff7fSkettenis 25, 26, 102, 27, 31
634*11efff7fSkettenis };
635*11efff7fSkettenis
636*11efff7fSkettenis /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
637*11efff7fSkettenis STATE-NUM. */
638*11efff7fSkettenis #define YYPACT_NINF -52
639*11efff7fSkettenis static const short yypact[] =
640*11efff7fSkettenis {
641*11efff7fSkettenis 233, -52, -52, -52, -52, 17, -52, -52, -52, -52,
642*11efff7fSkettenis -52, 233, 233, 233, 233, 233, 233, 233, 23, 26,
643*11efff7fSkettenis 41, 15, 137, 923, 56, -22, -52, 118, -32, -52,
644*11efff7fSkettenis 33, -32, 33, 19, 19, 33, 33, -21, -52, 31,
645*11efff7fSkettenis 58, 29, -52, 233, -52, -52, 24, 24, 24, -52,
646*11efff7fSkettenis -52, -52, -52, 78, 233, 233, 159, 196, 233, 233,
647*11efff7fSkettenis 233, 270, 233, 233, 233, 233, 233, 233, 233, 233,
648*11efff7fSkettenis 233, 233, 233, 70, 233, 233, 24, 24, 24, -52,
649*11efff7fSkettenis 45, 49, 60, 63, 66, -52, -52, -52, 233, -52,
650*11efff7fSkettenis -52, 233, 923, 110, -52, -52, -52, 46, 62, 77,
651*11efff7fSkettenis 891, -51, 80, 955, 978, 233, 978, 233, 978, -16,
652*11efff7fSkettenis -16, -16, 980, 813, -16, -16, -16, 358, 33, 33,
653*11efff7fSkettenis 33, -28, -28, -28, -28, 307, -28, 390, -52, -52,
654*11efff7fSkettenis -52, 233, 233, 233, 233, -52, 512, -52, 19, 67,
655*11efff7fSkettenis 233, -52, 344, 233, 978, 978, 233, 24, 980, 852,
656*11efff7fSkettenis -52, 555, 422, 467, 598, -52, 84, -52, 641, 923,
657*11efff7fSkettenis 85, 923, -16, -52, 233, 24, -52, 233, 233, -52,
658*11efff7fSkettenis 233, -52, 233, -16, -52, 684, 727, 770, 923, -52,
659*11efff7fSkettenis -52, -52
660*11efff7fSkettenis };
661*11efff7fSkettenis
662*11efff7fSkettenis /* YYPGOTO[NTERM-NUM]. */
663*11efff7fSkettenis static const yysigned_char yypgoto[] =
664*11efff7fSkettenis {
665*11efff7fSkettenis -52, -52, 126, -52, -52, -52, -11, -52, -41, -52,
666*11efff7fSkettenis -52, -52, 2, 127, 8
667*11efff7fSkettenis };
668*11efff7fSkettenis
669*11efff7fSkettenis /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
670*11efff7fSkettenis positive, shift that token. If negative, reduce the rule which
671*11efff7fSkettenis number is the opposite. If zero, do what YYDEFACT says.
672*11efff7fSkettenis If YYTABLE_NINF, syntax error. */
673*11efff7fSkettenis #define YYTABLE_NINF -91
674*11efff7fSkettenis static const short yytable[] =
675*11efff7fSkettenis {
676*11efff7fSkettenis 30, 32, 33, 34, 35, 36, 95, 96, 28, 141,
677*11efff7fSkettenis 73, 142, 74, 65, 66, 67, 68, -90, 69, 70,
678*11efff7fSkettenis 71, 72, 73, 88, 74, 81, 82, 41, 75, 89,
679*11efff7fSkettenis 38, 83, 92, 39, 6, 128, 129, 130, 43, 90,
680*11efff7fSkettenis 75, 42, 100, 103, 104, 106, 108, 109, 110, 111,
681*11efff7fSkettenis 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
682*11efff7fSkettenis 123, 124, 29, 126, 127, 84, 85, 69, 70, 71,
683*11efff7fSkettenis 72, 73, -90, 74, 43, 75, 29, 136, -90, 93,
684*11efff7fSkettenis 138, 1, 2, 3, 4, 97, 6, 7, 98, 75,
685*11efff7fSkettenis 99, 29, 10, 91, 144, 125, 145, 76, 77, 78,
686*11efff7fSkettenis 131, -90, 79, -86, 132, 80, 163, -90, 11, 12,
687*11efff7fSkettenis 13, 135, 14, 139, 149, 133, 15, 16, 134, -85,
688*11efff7fSkettenis 151, 152, 153, 154, 174, 84, 85, 157, 86, 158,
689*11efff7fSkettenis 87, 159, 161, 17, -87, 162, 18, 143, -23, 170,
690*11efff7fSkettenis -23, 19, 172, 37, 160, 0, 40, 0, 44, 0,
691*11efff7fSkettenis 45, 0, 0, 173, 0, 0, 175, 176, 0, 177,
692*11efff7fSkettenis 0, 178, 1, 2, 3, 4, 5, 6, 7, 8,
693*11efff7fSkettenis 0, 9, 0, 10, 0, 105, 0, 0, 46, 47,
694*11efff7fSkettenis 48, 49, 50, 0, 0, 0, 0, 51, 52, 11,
695*11efff7fSkettenis 12, 13, 53, 14, 0, 0, 0, 15, 16, 1,
696*11efff7fSkettenis 2, 3, 4, 5, 6, 7, 8, 0, 9, 0,
697*11efff7fSkettenis 10, 0, 0, 107, 17, 0, 0, 18, 0, 0,
698*11efff7fSkettenis 0, 0, 19, 0, 0, 0, 11, 12, 13, 0,
699*11efff7fSkettenis 14, 0, 0, 0, 15, 16, 1, 2, 3, 4,
700*11efff7fSkettenis 5, 6, 7, 8, 0, 9, 0, 10, 0, 0,
701*11efff7fSkettenis 0, 17, 0, 0, 18, 0, 0, 0, 0, 19,
702*11efff7fSkettenis 0, 0, 0, 11, 12, 13, 0, 14, 0, 0,
703*11efff7fSkettenis 0, 15, 16, 1, 2, 3, 4, 112, 6, 7,
704*11efff7fSkettenis 8, 0, 9, 0, 10, 0, 0, 0, 17, 0,
705*11efff7fSkettenis 0, 18, 0, 0, 0, 0, 19, 0, 0, 0,
706*11efff7fSkettenis 11, 12, 13, 0, 14, 0, 0, 0, 15, 16,
707*11efff7fSkettenis 1, 2, 3, 4, 148, 6, 7, 8, 0, 9,
708*11efff7fSkettenis 0, 10, 0, 0, 0, 17, 0, 0, 18, 0,
709*11efff7fSkettenis 0, 0, 0, 19, 0, 0, 0, 11, 12, 13,
710*11efff7fSkettenis 0, 14, 0, 0, 0, 15, 16, 1, 2, 3,
711*11efff7fSkettenis 4, 97, 6, 7, 98, 0, 99, 0, 10, 0,
712*11efff7fSkettenis 0, 0, 17, 0, 0, 18, 0, 0, 0, 0,
713*11efff7fSkettenis 19, 0, 0, 0, 11, 12, 13, 0, 14, 0,
714*11efff7fSkettenis 0, 0, 15, 16, 0, 0, 0, 0, 66, 67,
715*11efff7fSkettenis 68, 0, 69, 70, 71, 72, 73, 0, 74, 17,
716*11efff7fSkettenis 0, 0, 18, 0, 0, 54, 0, 19, 55, 56,
717*11efff7fSkettenis 57, 58, 59, 60, 75, 61, 62, 63, 64, 65,
718*11efff7fSkettenis 66, 67, 68, 0, 69, 70, 71, 72, 73, 0,
719*11efff7fSkettenis 74, 0, 0, 0, 0, 0, 0, 54, 0, 0,
720*11efff7fSkettenis 55, 56, 57, 58, 59, 60, 75, 61, 62, 63,
721*11efff7fSkettenis 64, 65, 66, 67, 68, 150, 69, 70, 71, 72,
722*11efff7fSkettenis 73, 0, 74, 0, 0, 0, 0, 0, 0, 0,
723*11efff7fSkettenis 0, 0, 0, 0, 0, 0, 0, 0, 75, 0,
724*11efff7fSkettenis 0, 0, 54, 0, 167, 55, 56, 57, 58, 59,
725*11efff7fSkettenis 60, 0, 61, 62, 63, 64, 65, 66, 67, 68,
726*11efff7fSkettenis 0, 69, 70, 71, 72, 73, 0, 74, 0, 0,
727*11efff7fSkettenis 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
728*11efff7fSkettenis 0, 0, 0, 75, 0, 0, 0, 54, 0, 168,
729*11efff7fSkettenis 55, 56, 57, 58, 59, 60, 0, 61, 62, 63,
730*11efff7fSkettenis 64, 65, 66, 67, 68, 0, 69, 70, 71, 72,
731*11efff7fSkettenis 73, 0, 74, 0, 0, 0, 0, 0, 0, 0,
732*11efff7fSkettenis 0, 0, 0, 0, 0, 0, 0, 0, 75, 0,
733*11efff7fSkettenis 54, 0, 155, 55, 56, 57, 58, 59, 60, 0,
734*11efff7fSkettenis 61, 62, 63, 64, 65, 66, 67, 68, 0, 69,
735*11efff7fSkettenis 70, 71, 72, 73, 0, 74, 0, 0, 0, 0,
736*11efff7fSkettenis 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
737*11efff7fSkettenis 0, 75, 0, 54, 0, 166, 55, 56, 57, 58,
738*11efff7fSkettenis 59, 60, 0, 61, 62, 63, 64, 65, 66, 67,
739*11efff7fSkettenis 68, 0, 69, 70, 71, 72, 73, 0, 74, 0,
740*11efff7fSkettenis 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
741*11efff7fSkettenis 0, 0, 0, 0, 75, 0, 54, 0, 169, 55,
742*11efff7fSkettenis 56, 57, 58, 59, 60, 0, 61, 62, 63, 64,
743*11efff7fSkettenis 65, 66, 67, 68, 0, 69, 70, 71, 72, 73,
744*11efff7fSkettenis 0, 74, 0, 0, 0, 0, 0, 0, 0, 0,
745*11efff7fSkettenis 0, 0, 0, 0, 0, 0, 0, 75, 0, 54,
746*11efff7fSkettenis 0, 171, 55, 56, 57, 58, 59, 60, 0, 61,
747*11efff7fSkettenis 62, 63, 64, 65, 66, 67, 68, 0, 69, 70,
748*11efff7fSkettenis 71, 72, 73, 0, 74, 0, 0, 0, 0, 0,
749*11efff7fSkettenis 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
750*11efff7fSkettenis 75, 0, 54, 0, 179, 55, 56, 57, 58, 59,
751*11efff7fSkettenis 60, 0, 61, 62, 63, 64, 65, 66, 67, 68,
752*11efff7fSkettenis 0, 69, 70, 71, 72, 73, 0, 74, 0, 0,
753*11efff7fSkettenis 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
754*11efff7fSkettenis 0, 0, 0, 75, 0, 54, 0, 180, 55, 56,
755*11efff7fSkettenis 57, 58, 59, 60, 0, 61, 62, 63, 64, 65,
756*11efff7fSkettenis 66, 67, 68, 0, 69, 70, 71, 72, 73, 0,
757*11efff7fSkettenis 74, 0, 0, 0, 0, 0, 0, 0, 0, 0,
758*11efff7fSkettenis 0, 0, 0, 0, 0, 0, 75, 0, 54, 0,
759*11efff7fSkettenis 181, 55, 56, 57, 58, 59, 60, 146, 61, 62,
760*11efff7fSkettenis 63, 64, 65, 66, 67, 68, 0, 69, 70, 71,
761*11efff7fSkettenis 72, 73, 0, 74, 0, 0, 0, 0, 0, 0,
762*11efff7fSkettenis 0, 0, 0, 0, 0, 147, 0, 54, 0, 75,
763*11efff7fSkettenis 55, 56, 57, 58, 59, 60, 164, 61, 62, 63,
764*11efff7fSkettenis 64, 65, 66, 67, 68, 0, 69, 70, 71, 72,
765*11efff7fSkettenis 73, 0, 74, 0, 0, 0, 0, 0, 0, 0,
766*11efff7fSkettenis 0, 0, 0, 0, 165, 0, 54, 0, 75, 55,
767*11efff7fSkettenis 56, 57, 58, 59, 60, 140, 61, 62, 63, 64,
768*11efff7fSkettenis 65, 66, 67, 68, 0, 69, 70, 71, 72, 73,
769*11efff7fSkettenis 0, 74, 0, 0, 0, 0, 0, 0, 54, 0,
770*11efff7fSkettenis 0, 55, 56, 57, 58, 59, 60, 75, 61, 62,
771*11efff7fSkettenis 63, 64, 65, 66, 67, 68, 0, 69, 70, 71,
772*11efff7fSkettenis 72, 73, 0, 74, 0, 0, 0, 0, 0, 0,
773*11efff7fSkettenis -91, 0, 0, 55, 56, 57, 58, 59, 60, 75,
774*11efff7fSkettenis 61, 62, 63, 64, 65, 66, 67, 68, 0, 69,
775*11efff7fSkettenis 70, 71, 72, 73, 0, 74, 0, 0, 0, 58,
776*11efff7fSkettenis 59, 60, 0, 61, 62, 63, 64, 65, 66, 67,
777*11efff7fSkettenis 68, 75, 69, 70, 71, 72, 73, 0, 74, 0,
778*11efff7fSkettenis 0, -72, -72, -72, 0, 29, -72, -72, -72, -72,
779*11efff7fSkettenis 0, 0, 0, -72, 75, -90, 0, 0, 0, 0,
780*11efff7fSkettenis 0, -90
781*11efff7fSkettenis };
782*11efff7fSkettenis
783*11efff7fSkettenis static const short yycheck[] =
784*11efff7fSkettenis {
785*11efff7fSkettenis 11, 12, 13, 14, 15, 16, 47, 48, 0, 60,
786*11efff7fSkettenis 38, 62, 40, 29, 30, 31, 32, 0, 34, 35,
787*11efff7fSkettenis 36, 37, 38, 55, 40, 47, 48, 19, 56, 61,
788*11efff7fSkettenis 7, 53, 43, 7, 8, 76, 77, 78, 59, 60,
789*11efff7fSkettenis 56, 0, 53, 54, 55, 56, 57, 58, 59, 60,
790*11efff7fSkettenis 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,
791*11efff7fSkettenis 71, 72, 45, 74, 75, 7, 8, 34, 35, 36,
792*11efff7fSkettenis 37, 38, 55, 40, 59, 56, 45, 88, 61, 55,
793*11efff7fSkettenis 91, 3, 4, 5, 6, 7, 8, 9, 10, 56,
794*11efff7fSkettenis 12, 45, 14, 64, 105, 25, 107, 41, 42, 43,
795*11efff7fSkettenis 55, 55, 46, 57, 55, 49, 147, 61, 30, 31,
796*11efff7fSkettenis 32, 45, 34, 3, 125, 55, 38, 39, 55, 57,
797*11efff7fSkettenis 131, 132, 133, 134, 165, 7, 8, 60, 10, 140,
798*11efff7fSkettenis 12, 142, 143, 55, 57, 146, 58, 57, 60, 55,
799*11efff7fSkettenis 62, 63, 57, 17, 142, -1, 19, -1, 11, -1,
800*11efff7fSkettenis 13, -1, -1, 164, -1, -1, 167, 168, -1, 170,
801*11efff7fSkettenis -1, 172, 3, 4, 5, 6, 7, 8, 9, 10,
802*11efff7fSkettenis -1, 12, -1, 14, -1, 16, -1, -1, 41, 42,
803*11efff7fSkettenis 43, 44, 45, -1, -1, -1, -1, 50, 51, 30,
804*11efff7fSkettenis 31, 32, 55, 34, -1, -1, -1, 38, 39, 3,
805*11efff7fSkettenis 4, 5, 6, 7, 8, 9, 10, -1, 12, -1,
806*11efff7fSkettenis 14, -1, -1, 17, 55, -1, -1, 58, -1, -1,
807*11efff7fSkettenis -1, -1, 63, -1, -1, -1, 30, 31, 32, -1,
808*11efff7fSkettenis 34, -1, -1, -1, 38, 39, 3, 4, 5, 6,
809*11efff7fSkettenis 7, 8, 9, 10, -1, 12, -1, 14, -1, -1,
810*11efff7fSkettenis -1, 55, -1, -1, 58, -1, -1, -1, -1, 63,
811*11efff7fSkettenis -1, -1, -1, 30, 31, 32, -1, 34, -1, -1,
812*11efff7fSkettenis -1, 38, 39, 3, 4, 5, 6, 7, 8, 9,
813*11efff7fSkettenis 10, -1, 12, -1, 14, -1, -1, -1, 55, -1,
814*11efff7fSkettenis -1, 58, -1, -1, -1, -1, 63, -1, -1, -1,
815*11efff7fSkettenis 30, 31, 32, -1, 34, -1, -1, -1, 38, 39,
816*11efff7fSkettenis 3, 4, 5, 6, 7, 8, 9, 10, -1, 12,
817*11efff7fSkettenis -1, 14, -1, -1, -1, 55, -1, -1, 58, -1,
818*11efff7fSkettenis -1, -1, -1, 63, -1, -1, -1, 30, 31, 32,
819*11efff7fSkettenis -1, 34, -1, -1, -1, 38, 39, 3, 4, 5,
820*11efff7fSkettenis 6, 7, 8, 9, 10, -1, 12, -1, 14, -1,
821*11efff7fSkettenis -1, -1, 55, -1, -1, 58, -1, -1, -1, -1,
822*11efff7fSkettenis 63, -1, -1, -1, 30, 31, 32, -1, 34, -1,
823*11efff7fSkettenis -1, -1, 38, 39, -1, -1, -1, -1, 30, 31,
824*11efff7fSkettenis 32, -1, 34, 35, 36, 37, 38, -1, 40, 55,
825*11efff7fSkettenis -1, -1, 58, -1, -1, 15, -1, 63, 18, 19,
826*11efff7fSkettenis 20, 21, 22, 23, 56, 25, 26, 27, 28, 29,
827*11efff7fSkettenis 30, 31, 32, -1, 34, 35, 36, 37, 38, -1,
828*11efff7fSkettenis 40, -1, -1, -1, -1, -1, -1, 15, -1, -1,
829*11efff7fSkettenis 18, 19, 20, 21, 22, 23, 56, 25, 26, 27,
830*11efff7fSkettenis 28, 29, 30, 31, 32, 65, 34, 35, 36, 37,
831*11efff7fSkettenis 38, -1, 40, -1, -1, -1, -1, -1, -1, -1,
832*11efff7fSkettenis -1, -1, -1, -1, -1, -1, -1, -1, 56, -1,
833*11efff7fSkettenis -1, -1, 15, -1, 62, 18, 19, 20, 21, 22,
834*11efff7fSkettenis 23, -1, 25, 26, 27, 28, 29, 30, 31, 32,
835*11efff7fSkettenis -1, 34, 35, 36, 37, 38, -1, 40, -1, -1,
836*11efff7fSkettenis -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
837*11efff7fSkettenis -1, -1, -1, 56, -1, -1, -1, 15, -1, 62,
838*11efff7fSkettenis 18, 19, 20, 21, 22, 23, -1, 25, 26, 27,
839*11efff7fSkettenis 28, 29, 30, 31, 32, -1, 34, 35, 36, 37,
840*11efff7fSkettenis 38, -1, 40, -1, -1, -1, -1, -1, -1, -1,
841*11efff7fSkettenis -1, -1, -1, -1, -1, -1, -1, -1, 56, -1,
842*11efff7fSkettenis 15, -1, 60, 18, 19, 20, 21, 22, 23, -1,
843*11efff7fSkettenis 25, 26, 27, 28, 29, 30, 31, 32, -1, 34,
844*11efff7fSkettenis 35, 36, 37, 38, -1, 40, -1, -1, -1, -1,
845*11efff7fSkettenis -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
846*11efff7fSkettenis -1, 56, -1, 15, -1, 60, 18, 19, 20, 21,
847*11efff7fSkettenis 22, 23, -1, 25, 26, 27, 28, 29, 30, 31,
848*11efff7fSkettenis 32, -1, 34, 35, 36, 37, 38, -1, 40, -1,
849*11efff7fSkettenis -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
850*11efff7fSkettenis -1, -1, -1, -1, 56, -1, 15, -1, 60, 18,
851*11efff7fSkettenis 19, 20, 21, 22, 23, -1, 25, 26, 27, 28,
852*11efff7fSkettenis 29, 30, 31, 32, -1, 34, 35, 36, 37, 38,
853*11efff7fSkettenis -1, 40, -1, -1, -1, -1, -1, -1, -1, -1,
854*11efff7fSkettenis -1, -1, -1, -1, -1, -1, -1, 56, -1, 15,
855*11efff7fSkettenis -1, 60, 18, 19, 20, 21, 22, 23, -1, 25,
856*11efff7fSkettenis 26, 27, 28, 29, 30, 31, 32, -1, 34, 35,
857*11efff7fSkettenis 36, 37, 38, -1, 40, -1, -1, -1, -1, -1,
858*11efff7fSkettenis -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
859*11efff7fSkettenis 56, -1, 15, -1, 60, 18, 19, 20, 21, 22,
860*11efff7fSkettenis 23, -1, 25, 26, 27, 28, 29, 30, 31, 32,
861*11efff7fSkettenis -1, 34, 35, 36, 37, 38, -1, 40, -1, -1,
862*11efff7fSkettenis -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
863*11efff7fSkettenis -1, -1, -1, 56, -1, 15, -1, 60, 18, 19,
864*11efff7fSkettenis 20, 21, 22, 23, -1, 25, 26, 27, 28, 29,
865*11efff7fSkettenis 30, 31, 32, -1, 34, 35, 36, 37, 38, -1,
866*11efff7fSkettenis 40, -1, -1, -1, -1, -1, -1, -1, -1, -1,
867*11efff7fSkettenis -1, -1, -1, -1, -1, -1, 56, -1, 15, -1,
868*11efff7fSkettenis 60, 18, 19, 20, 21, 22, 23, 24, 25, 26,
869*11efff7fSkettenis 27, 28, 29, 30, 31, 32, -1, 34, 35, 36,
870*11efff7fSkettenis 37, 38, -1, 40, -1, -1, -1, -1, -1, -1,
871*11efff7fSkettenis -1, -1, -1, -1, -1, 52, -1, 15, -1, 56,
872*11efff7fSkettenis 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
873*11efff7fSkettenis 28, 29, 30, 31, 32, -1, 34, 35, 36, 37,
874*11efff7fSkettenis 38, -1, 40, -1, -1, -1, -1, -1, -1, -1,
875*11efff7fSkettenis -1, -1, -1, -1, 52, -1, 15, -1, 56, 18,
876*11efff7fSkettenis 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
877*11efff7fSkettenis 29, 30, 31, 32, -1, 34, 35, 36, 37, 38,
878*11efff7fSkettenis -1, 40, -1, -1, -1, -1, -1, -1, 15, -1,
879*11efff7fSkettenis -1, 18, 19, 20, 21, 22, 23, 56, 25, 26,
880*11efff7fSkettenis 27, 28, 29, 30, 31, 32, -1, 34, 35, 36,
881*11efff7fSkettenis 37, 38, -1, 40, -1, -1, -1, -1, -1, -1,
882*11efff7fSkettenis 15, -1, -1, 18, 19, 20, 21, 22, 23, 56,
883*11efff7fSkettenis 25, 26, 27, 28, 29, 30, 31, 32, -1, 34,
884*11efff7fSkettenis 35, 36, 37, 38, -1, 40, -1, -1, -1, 21,
885*11efff7fSkettenis 22, 23, -1, 25, 26, 27, 28, 29, 30, 31,
886*11efff7fSkettenis 32, 56, 34, 35, 36, 37, 38, -1, 40, -1,
887*11efff7fSkettenis -1, 41, 42, 43, -1, 45, 46, 47, 48, 49,
888*11efff7fSkettenis -1, -1, -1, 53, 56, 55, -1, -1, -1, -1,
889*11efff7fSkettenis -1, 61
890*11efff7fSkettenis };
891*11efff7fSkettenis
892*11efff7fSkettenis /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
893*11efff7fSkettenis symbol of state STATE-NUM. */
894*11efff7fSkettenis static const unsigned char yystos[] =
895*11efff7fSkettenis {
896*11efff7fSkettenis 0, 3, 4, 5, 6, 7, 8, 9, 10, 12,
897*11efff7fSkettenis 14, 30, 31, 32, 34, 38, 39, 55, 58, 63,
898*11efff7fSkettenis 67, 68, 69, 72, 75, 76, 77, 79, 80, 45,
899*11efff7fSkettenis 72, 80, 72, 72, 72, 72, 72, 68, 7, 7,
900*11efff7fSkettenis 79, 80, 0, 59, 11, 13, 41, 42, 43, 44,
901*11efff7fSkettenis 45, 50, 51, 55, 15, 18, 19, 20, 21, 22,
902*11efff7fSkettenis 23, 25, 26, 27, 28, 29, 30, 31, 32, 34,
903*11efff7fSkettenis 35, 36, 37, 38, 40, 56, 41, 42, 43, 46,
904*11efff7fSkettenis 49, 47, 48, 53, 7, 8, 10, 12, 55, 61,
905*11efff7fSkettenis 60, 64, 72, 55, 74, 74, 74, 7, 10, 12,
906*11efff7fSkettenis 72, 73, 78, 72, 72, 16, 72, 17, 72, 72,
907*11efff7fSkettenis 72, 72, 7, 72, 72, 72, 72, 72, 72, 72,
908*11efff7fSkettenis 72, 72, 72, 72, 72, 25, 72, 72, 74, 74,
909*11efff7fSkettenis 74, 55, 55, 55, 55, 45, 72, 71, 72, 3,
910*11efff7fSkettenis 24, 60, 62, 57, 72, 72, 24, 52, 7, 72,
911*11efff7fSkettenis 65, 72, 72, 72, 72, 60, 70, 60, 72, 72,
912*11efff7fSkettenis 78, 72, 72, 74, 24, 52, 60, 62, 62, 60,
913*11efff7fSkettenis 55, 60, 57, 72, 74, 72, 72, 72, 72, 60,
914*11efff7fSkettenis 60, 60
915*11efff7fSkettenis };
916b725ae77Skettenis
917b725ae77Skettenis #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
918b725ae77Skettenis # define YYSIZE_T __SIZE_TYPE__
919b725ae77Skettenis #endif
920b725ae77Skettenis #if ! defined (YYSIZE_T) && defined (size_t)
921b725ae77Skettenis # define YYSIZE_T size_t
922b725ae77Skettenis #endif
923b725ae77Skettenis #if ! defined (YYSIZE_T)
924b725ae77Skettenis # if defined (__STDC__) || defined (__cplusplus)
925b725ae77Skettenis # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
926b725ae77Skettenis # define YYSIZE_T size_t
927b725ae77Skettenis # endif
928b725ae77Skettenis #endif
929b725ae77Skettenis #if ! defined (YYSIZE_T)
930b725ae77Skettenis # define YYSIZE_T unsigned int
931b725ae77Skettenis #endif
932b725ae77Skettenis
933b725ae77Skettenis #define yyerrok (yyerrstatus = 0)
934b725ae77Skettenis #define yyclearin (yychar = YYEMPTY)
935*11efff7fSkettenis #define YYEMPTY (-2)
936b725ae77Skettenis #define YYEOF 0
937*11efff7fSkettenis
938b725ae77Skettenis #define YYACCEPT goto yyacceptlab
939b725ae77Skettenis #define YYABORT goto yyabortlab
940*11efff7fSkettenis #define YYERROR goto yyerrorlab
941*11efff7fSkettenis
942*11efff7fSkettenis
943b725ae77Skettenis /* Like YYERROR except do call yyerror. This remains here temporarily
944b725ae77Skettenis to ease the transition to the new meaning of YYERROR, for GCC.
945b725ae77Skettenis Once GCC version 2 has supplanted version 1, this can go. */
946*11efff7fSkettenis
947b725ae77Skettenis #define YYFAIL goto yyerrlab
948*11efff7fSkettenis
949b725ae77Skettenis #define YYRECOVERING() (!!yyerrstatus)
950*11efff7fSkettenis
951b725ae77Skettenis #define YYBACKUP(Token, Value) \
952b725ae77Skettenis do \
953b725ae77Skettenis if (yychar == YYEMPTY && yylen == 1) \
954b725ae77Skettenis { \
955b725ae77Skettenis yychar = (Token); \
956b725ae77Skettenis yylval = (Value); \
957*11efff7fSkettenis yytoken = YYTRANSLATE (yychar); \
958b725ae77Skettenis YYPOPSTACK; \
959b725ae77Skettenis goto yybackup; \
960b725ae77Skettenis } \
961b725ae77Skettenis else \
962b725ae77Skettenis { \
963b725ae77Skettenis yyerror ("syntax error: cannot back up");\
964b725ae77Skettenis YYERROR; \
965b725ae77Skettenis } \
966b725ae77Skettenis while (0)
967b725ae77Skettenis
968b725ae77Skettenis #define YYTERROR 1
969b725ae77Skettenis #define YYERRCODE 256
970b725ae77Skettenis
971b725ae77Skettenis /* YYLLOC_DEFAULT -- Compute the default location (before the actions
972*11efff7fSkettenis are run). */
973b725ae77Skettenis
974b725ae77Skettenis #ifndef YYLLOC_DEFAULT
975b725ae77Skettenis # define YYLLOC_DEFAULT(Current, Rhs, N) \
976*11efff7fSkettenis ((Current).first_line = (Rhs)[1].first_line, \
977*11efff7fSkettenis (Current).first_column = (Rhs)[1].first_column, \
978*11efff7fSkettenis (Current).last_line = (Rhs)[N].last_line, \
979*11efff7fSkettenis (Current).last_column = (Rhs)[N].last_column)
980b725ae77Skettenis #endif
981b725ae77Skettenis
982b725ae77Skettenis /* YYLEX -- calling `yylex' with the right arguments. */
983b725ae77Skettenis
984b725ae77Skettenis #ifdef YYLEX_PARAM
985*11efff7fSkettenis # define YYLEX yylex (YYLEX_PARAM)
986b725ae77Skettenis #else
987b725ae77Skettenis # define YYLEX yylex ()
988*11efff7fSkettenis #endif
989b725ae77Skettenis
990b725ae77Skettenis /* Enable debugging if requested. */
991b725ae77Skettenis #if YYDEBUG
992b725ae77Skettenis
993b725ae77Skettenis # ifndef YYFPRINTF
994b725ae77Skettenis # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
995b725ae77Skettenis # define YYFPRINTF fprintf
996b725ae77Skettenis # endif
997b725ae77Skettenis
998b725ae77Skettenis # define YYDPRINTF(Args) \
999b725ae77Skettenis do { \
1000b725ae77Skettenis if (yydebug) \
1001b725ae77Skettenis YYFPRINTF Args; \
1002b725ae77Skettenis } while (0)
1003*11efff7fSkettenis
1004*11efff7fSkettenis # define YYDSYMPRINT(Args) \
1005*11efff7fSkettenis do { \
1006*11efff7fSkettenis if (yydebug) \
1007*11efff7fSkettenis yysymprint Args; \
1008*11efff7fSkettenis } while (0)
1009*11efff7fSkettenis
1010*11efff7fSkettenis # define YYDSYMPRINTF(Title, Token, Value, Location) \
1011*11efff7fSkettenis do { \
1012*11efff7fSkettenis if (yydebug) \
1013*11efff7fSkettenis { \
1014*11efff7fSkettenis YYFPRINTF (stderr, "%s ", Title); \
1015*11efff7fSkettenis yysymprint (stderr, \
1016*11efff7fSkettenis Token, Value); \
1017*11efff7fSkettenis YYFPRINTF (stderr, "\n"); \
1018*11efff7fSkettenis } \
1019*11efff7fSkettenis } while (0)
1020*11efff7fSkettenis
1021*11efff7fSkettenis /*------------------------------------------------------------------.
1022*11efff7fSkettenis | yy_stack_print -- Print the state stack from its BOTTOM up to its |
1023*11efff7fSkettenis | TOP (included). |
1024*11efff7fSkettenis `------------------------------------------------------------------*/
1025*11efff7fSkettenis
1026*11efff7fSkettenis #if defined (__STDC__) || defined (__cplusplus)
1027*11efff7fSkettenis static void
yy_stack_print(short * bottom,short * top)1028*11efff7fSkettenis yy_stack_print (short *bottom, short *top)
1029*11efff7fSkettenis #else
1030*11efff7fSkettenis static void
1031*11efff7fSkettenis yy_stack_print (bottom, top)
1032*11efff7fSkettenis short *bottom;
1033*11efff7fSkettenis short *top;
1034*11efff7fSkettenis #endif
1035*11efff7fSkettenis {
1036*11efff7fSkettenis YYFPRINTF (stderr, "Stack now");
1037*11efff7fSkettenis for (/* Nothing. */; bottom <= top; ++bottom)
1038*11efff7fSkettenis YYFPRINTF (stderr, " %d", *bottom);
1039*11efff7fSkettenis YYFPRINTF (stderr, "\n");
1040*11efff7fSkettenis }
1041*11efff7fSkettenis
1042*11efff7fSkettenis # define YY_STACK_PRINT(Bottom, Top) \
1043*11efff7fSkettenis do { \
1044*11efff7fSkettenis if (yydebug) \
1045*11efff7fSkettenis yy_stack_print ((Bottom), (Top)); \
1046*11efff7fSkettenis } while (0)
1047*11efff7fSkettenis
1048*11efff7fSkettenis
1049*11efff7fSkettenis /*------------------------------------------------.
1050*11efff7fSkettenis | Report that the YYRULE is going to be reduced. |
1051*11efff7fSkettenis `------------------------------------------------*/
1052*11efff7fSkettenis
1053*11efff7fSkettenis #if defined (__STDC__) || defined (__cplusplus)
1054*11efff7fSkettenis static void
yy_reduce_print(int yyrule)1055*11efff7fSkettenis yy_reduce_print (int yyrule)
1056*11efff7fSkettenis #else
1057*11efff7fSkettenis static void
1058*11efff7fSkettenis yy_reduce_print (yyrule)
1059*11efff7fSkettenis int yyrule;
1060*11efff7fSkettenis #endif
1061*11efff7fSkettenis {
1062*11efff7fSkettenis int yyi;
1063*11efff7fSkettenis unsigned int yylno = yyrline[yyrule];
1064*11efff7fSkettenis YYFPRINTF (stderr, "Reducing stack by rule %d (line %u), ",
1065*11efff7fSkettenis yyrule - 1, yylno);
1066*11efff7fSkettenis /* Print the symbols being reduced, and their result. */
1067*11efff7fSkettenis for (yyi = yyprhs[yyrule]; 0 <= yyrhs[yyi]; yyi++)
1068*11efff7fSkettenis YYFPRINTF (stderr, "%s ", yytname [yyrhs[yyi]]);
1069*11efff7fSkettenis YYFPRINTF (stderr, "-> %s\n", yytname [yyr1[yyrule]]);
1070*11efff7fSkettenis }
1071*11efff7fSkettenis
1072*11efff7fSkettenis # define YY_REDUCE_PRINT(Rule) \
1073*11efff7fSkettenis do { \
1074*11efff7fSkettenis if (yydebug) \
1075*11efff7fSkettenis yy_reduce_print (Rule); \
1076*11efff7fSkettenis } while (0)
1077*11efff7fSkettenis
1078b725ae77Skettenis /* Nonzero means print parse trace. It is left uninitialized so that
1079b725ae77Skettenis multiple parsers can coexist. */
1080b725ae77Skettenis int yydebug;
1081b725ae77Skettenis #else /* !YYDEBUG */
1082b725ae77Skettenis # define YYDPRINTF(Args)
1083*11efff7fSkettenis # define YYDSYMPRINT(Args)
1084*11efff7fSkettenis # define YYDSYMPRINTF(Title, Token, Value, Location)
1085*11efff7fSkettenis # define YY_STACK_PRINT(Bottom, Top)
1086*11efff7fSkettenis # define YY_REDUCE_PRINT(Rule)
1087b725ae77Skettenis #endif /* !YYDEBUG */
1088b725ae77Skettenis
1089*11efff7fSkettenis
1090b725ae77Skettenis /* YYINITDEPTH -- initial size of the parser's stacks. */
1091b725ae77Skettenis #ifndef YYINITDEPTH
1092b725ae77Skettenis # define YYINITDEPTH 200
1093b725ae77Skettenis #endif
1094b725ae77Skettenis
1095b725ae77Skettenis /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1096b725ae77Skettenis if the built-in stack extension method is used).
1097b725ae77Skettenis
1098b725ae77Skettenis Do not make this value too large; the results are undefined if
1099b725ae77Skettenis SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH)
1100b725ae77Skettenis evaluated with infinite-precision integer arithmetic. */
1101b725ae77Skettenis
1102*11efff7fSkettenis #if defined (YYMAXDEPTH) && YYMAXDEPTH == 0
1103b725ae77Skettenis # undef YYMAXDEPTH
1104b725ae77Skettenis #endif
1105b725ae77Skettenis
1106b725ae77Skettenis #ifndef YYMAXDEPTH
1107b725ae77Skettenis # define YYMAXDEPTH 10000
1108b725ae77Skettenis #endif
1109*11efff7fSkettenis
1110b725ae77Skettenis
1111*11efff7fSkettenis
1112*11efff7fSkettenis #if YYERROR_VERBOSE
1113b725ae77Skettenis
1114b725ae77Skettenis # ifndef yystrlen
1115b725ae77Skettenis # if defined (__GLIBC__) && defined (_STRING_H)
1116b725ae77Skettenis # define yystrlen strlen
1117b725ae77Skettenis # else
1118b725ae77Skettenis /* Return the length of YYSTR. */
1119b725ae77Skettenis static YYSIZE_T
1120b725ae77Skettenis # if defined (__STDC__) || defined (__cplusplus)
yystrlen(const char * yystr)1121b725ae77Skettenis yystrlen (const char *yystr)
1122b725ae77Skettenis # else
1123b725ae77Skettenis yystrlen (yystr)
1124b725ae77Skettenis const char *yystr;
1125b725ae77Skettenis # endif
1126b725ae77Skettenis {
1127b725ae77Skettenis register const char *yys = yystr;
1128b725ae77Skettenis
1129b725ae77Skettenis while (*yys++ != '\0')
1130b725ae77Skettenis continue;
1131b725ae77Skettenis
1132b725ae77Skettenis return yys - yystr - 1;
1133b725ae77Skettenis }
1134b725ae77Skettenis # endif
1135b725ae77Skettenis # endif
1136b725ae77Skettenis
1137b725ae77Skettenis # ifndef yystpcpy
1138b725ae77Skettenis # if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
1139b725ae77Skettenis # define yystpcpy stpcpy
1140b725ae77Skettenis # else
1141b725ae77Skettenis /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1142b725ae77Skettenis YYDEST. */
1143b725ae77Skettenis static char *
1144b725ae77Skettenis # if defined (__STDC__) || defined (__cplusplus)
yystpcpy(char * yydest,const char * yysrc)1145b725ae77Skettenis yystpcpy (char *yydest, const char *yysrc)
1146b725ae77Skettenis # else
1147b725ae77Skettenis yystpcpy (yydest, yysrc)
1148b725ae77Skettenis char *yydest;
1149b725ae77Skettenis const char *yysrc;
1150b725ae77Skettenis # endif
1151b725ae77Skettenis {
1152b725ae77Skettenis register char *yyd = yydest;
1153b725ae77Skettenis register const char *yys = yysrc;
1154b725ae77Skettenis
1155b725ae77Skettenis while ((*yyd++ = *yys++) != '\0')
1156b725ae77Skettenis continue;
1157b725ae77Skettenis
1158b725ae77Skettenis return yyd - 1;
1159b725ae77Skettenis }
1160b725ae77Skettenis # endif
1161b725ae77Skettenis # endif
1162*11efff7fSkettenis
1163*11efff7fSkettenis #endif /* !YYERROR_VERBOSE */
1164*11efff7fSkettenis
1165b725ae77Skettenis
1166b725ae77Skettenis
1167*11efff7fSkettenis #if YYDEBUG
1168*11efff7fSkettenis /*--------------------------------.
1169*11efff7fSkettenis | Print this symbol on YYOUTPUT. |
1170*11efff7fSkettenis `--------------------------------*/
1171b725ae77Skettenis
1172*11efff7fSkettenis #if defined (__STDC__) || defined (__cplusplus)
1173*11efff7fSkettenis static void
yysymprint(FILE * yyoutput,int yytype,YYSTYPE * yyvaluep)1174*11efff7fSkettenis yysymprint (FILE *yyoutput, int yytype, YYSTYPE *yyvaluep)
1175*11efff7fSkettenis #else
1176*11efff7fSkettenis static void
1177*11efff7fSkettenis yysymprint (yyoutput, yytype, yyvaluep)
1178*11efff7fSkettenis FILE *yyoutput;
1179*11efff7fSkettenis int yytype;
1180*11efff7fSkettenis YYSTYPE *yyvaluep;
1181*11efff7fSkettenis #endif
1182*11efff7fSkettenis {
1183*11efff7fSkettenis /* Pacify ``unused variable'' warnings. */
1184*11efff7fSkettenis (void) yyvaluep;
1185*11efff7fSkettenis
1186*11efff7fSkettenis if (yytype < YYNTOKENS)
1187*11efff7fSkettenis {
1188*11efff7fSkettenis YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
1189*11efff7fSkettenis # ifdef YYPRINT
1190*11efff7fSkettenis YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
1191*11efff7fSkettenis # endif
1192*11efff7fSkettenis }
1193*11efff7fSkettenis else
1194*11efff7fSkettenis YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
1195*11efff7fSkettenis
1196*11efff7fSkettenis switch (yytype)
1197*11efff7fSkettenis {
1198*11efff7fSkettenis default:
1199*11efff7fSkettenis break;
1200*11efff7fSkettenis }
1201*11efff7fSkettenis YYFPRINTF (yyoutput, ")");
1202*11efff7fSkettenis }
1203*11efff7fSkettenis
1204*11efff7fSkettenis #endif /* ! YYDEBUG */
1205*11efff7fSkettenis /*-----------------------------------------------.
1206*11efff7fSkettenis | Release the memory associated to this symbol. |
1207*11efff7fSkettenis `-----------------------------------------------*/
1208*11efff7fSkettenis
1209*11efff7fSkettenis #if defined (__STDC__) || defined (__cplusplus)
1210*11efff7fSkettenis static void
yydestruct(int yytype,YYSTYPE * yyvaluep)1211*11efff7fSkettenis yydestruct (int yytype, YYSTYPE *yyvaluep)
1212*11efff7fSkettenis #else
1213*11efff7fSkettenis static void
1214*11efff7fSkettenis yydestruct (yytype, yyvaluep)
1215*11efff7fSkettenis int yytype;
1216*11efff7fSkettenis YYSTYPE *yyvaluep;
1217*11efff7fSkettenis #endif
1218*11efff7fSkettenis {
1219*11efff7fSkettenis /* Pacify ``unused variable'' warnings. */
1220*11efff7fSkettenis (void) yyvaluep;
1221*11efff7fSkettenis
1222*11efff7fSkettenis switch (yytype)
1223*11efff7fSkettenis {
1224*11efff7fSkettenis
1225*11efff7fSkettenis default:
1226*11efff7fSkettenis break;
1227*11efff7fSkettenis }
1228*11efff7fSkettenis }
1229*11efff7fSkettenis
1230*11efff7fSkettenis
1231*11efff7fSkettenis /* Prevent warnings from -Wmissing-prototypes. */
1232b725ae77Skettenis
1233b725ae77Skettenis #ifdef YYPARSE_PARAM
1234b725ae77Skettenis # if defined (__STDC__) || defined (__cplusplus)
1235*11efff7fSkettenis int yyparse (void *YYPARSE_PARAM);
1236b725ae77Skettenis # else
1237*11efff7fSkettenis int yyparse ();
1238b725ae77Skettenis # endif
1239b725ae77Skettenis #else /* ! YYPARSE_PARAM */
1240*11efff7fSkettenis #if defined (__STDC__) || defined (__cplusplus)
1241*11efff7fSkettenis int yyparse (void);
1242*11efff7fSkettenis #else
1243*11efff7fSkettenis int yyparse ();
1244*11efff7fSkettenis #endif
1245b725ae77Skettenis #endif /* ! YYPARSE_PARAM */
1246b725ae77Skettenis
1247b725ae77Skettenis
1248b725ae77Skettenis
1249*11efff7fSkettenis /* The lookahead symbol. */
1250*11efff7fSkettenis int yychar;
1251*11efff7fSkettenis
1252*11efff7fSkettenis /* The semantic value of the lookahead symbol. */
1253*11efff7fSkettenis YYSTYPE yylval;
1254*11efff7fSkettenis
1255*11efff7fSkettenis /* Number of syntax errors so far. */
1256b725ae77Skettenis int yynerrs;
1257b725ae77Skettenis
1258*11efff7fSkettenis
1259*11efff7fSkettenis
1260*11efff7fSkettenis /*----------.
1261*11efff7fSkettenis | yyparse. |
1262*11efff7fSkettenis `----------*/
1263*11efff7fSkettenis
1264*11efff7fSkettenis #ifdef YYPARSE_PARAM
1265*11efff7fSkettenis # if defined (__STDC__) || defined (__cplusplus)
yyparse(void * YYPARSE_PARAM)1266*11efff7fSkettenis int yyparse (void *YYPARSE_PARAM)
1267b725ae77Skettenis # else
1268*11efff7fSkettenis int yyparse (YYPARSE_PARAM)
1269*11efff7fSkettenis void *YYPARSE_PARAM;
1270b725ae77Skettenis # endif
1271*11efff7fSkettenis #else /* ! YYPARSE_PARAM */
1272*11efff7fSkettenis #if defined (__STDC__) || defined (__cplusplus)
1273b725ae77Skettenis int
1274*11efff7fSkettenis yyparse (void)
1275*11efff7fSkettenis #else
1276*11efff7fSkettenis int
1277*11efff7fSkettenis yyparse ()
1278*11efff7fSkettenis
1279*11efff7fSkettenis #endif
1280*11efff7fSkettenis #endif
1281b725ae77Skettenis {
1282b725ae77Skettenis
1283b725ae77Skettenis register int yystate;
1284b725ae77Skettenis register int yyn;
1285b725ae77Skettenis int yyresult;
1286b725ae77Skettenis /* Number of tokens to shift before error messages enabled. */
1287b725ae77Skettenis int yyerrstatus;
1288b725ae77Skettenis /* Lookahead token as an internal (translated) token number. */
1289*11efff7fSkettenis int yytoken = 0;
1290b725ae77Skettenis
1291b725ae77Skettenis /* Three stacks and their tools:
1292b725ae77Skettenis `yyss': related to states,
1293b725ae77Skettenis `yyvs': related to semantic values,
1294b725ae77Skettenis `yyls': related to locations.
1295b725ae77Skettenis
1296b725ae77Skettenis Refer to the stacks thru separate pointers, to allow yyoverflow
1297b725ae77Skettenis to xreallocate them elsewhere. */
1298b725ae77Skettenis
1299b725ae77Skettenis /* The state stack. */
1300b725ae77Skettenis short yyssa[YYINITDEPTH];
1301b725ae77Skettenis short *yyss = yyssa;
1302b725ae77Skettenis register short *yyssp;
1303b725ae77Skettenis
1304b725ae77Skettenis /* The semantic value stack. */
1305b725ae77Skettenis YYSTYPE yyvsa[YYINITDEPTH];
1306b725ae77Skettenis YYSTYPE *yyvs = yyvsa;
1307b725ae77Skettenis register YYSTYPE *yyvsp;
1308b725ae77Skettenis
1309b725ae77Skettenis
1310*11efff7fSkettenis
1311b725ae77Skettenis #define YYPOPSTACK (yyvsp--, yyssp--)
1312b725ae77Skettenis
1313b725ae77Skettenis YYSIZE_T yystacksize = YYINITDEPTH;
1314b725ae77Skettenis
1315b725ae77Skettenis /* The variables used to return semantic value and location from the
1316b725ae77Skettenis action routines. */
1317b725ae77Skettenis YYSTYPE yyval;
1318*11efff7fSkettenis
1319b725ae77Skettenis
1320b725ae77Skettenis /* When reducing, the number of symbols on the RHS of the reduced
1321b725ae77Skettenis rule. */
1322b725ae77Skettenis int yylen;
1323b725ae77Skettenis
1324b725ae77Skettenis YYDPRINTF ((stderr, "Starting parse\n"));
1325b725ae77Skettenis
1326b725ae77Skettenis yystate = 0;
1327b725ae77Skettenis yyerrstatus = 0;
1328b725ae77Skettenis yynerrs = 0;
1329b725ae77Skettenis yychar = YYEMPTY; /* Cause a token to be read. */
1330b725ae77Skettenis
1331b725ae77Skettenis /* Initialize stack pointers.
1332b725ae77Skettenis Waste one element of value and location stack
1333b725ae77Skettenis so that they stay on the same level as the state stack.
1334b725ae77Skettenis The wasted elements are never initialized. */
1335b725ae77Skettenis
1336b725ae77Skettenis yyssp = yyss;
1337b725ae77Skettenis yyvsp = yyvs;
1338*11efff7fSkettenis
1339b725ae77Skettenis goto yysetstate;
1340b725ae77Skettenis
1341b725ae77Skettenis /*------------------------------------------------------------.
1342b725ae77Skettenis | yynewstate -- Push a new state, which is found in yystate. |
1343b725ae77Skettenis `------------------------------------------------------------*/
1344b725ae77Skettenis yynewstate:
1345b725ae77Skettenis /* In all cases, when you get here, the value and location stacks
1346b725ae77Skettenis have just been pushed. so pushing a state here evens the stacks.
1347b725ae77Skettenis */
1348b725ae77Skettenis yyssp++;
1349b725ae77Skettenis
1350b725ae77Skettenis yysetstate:
1351b725ae77Skettenis *yyssp = yystate;
1352b725ae77Skettenis
1353*11efff7fSkettenis if (yyss + yystacksize - 1 <= yyssp)
1354b725ae77Skettenis {
1355b725ae77Skettenis /* Get the current used size of the three stacks, in elements. */
1356b725ae77Skettenis YYSIZE_T yysize = yyssp - yyss + 1;
1357b725ae77Skettenis
1358b725ae77Skettenis #ifdef yyoverflow
1359b725ae77Skettenis {
1360b725ae77Skettenis /* Give user a chance to xreallocate the stack. Use copies of
1361b725ae77Skettenis these so that the &'s don't force the real ones into
1362b725ae77Skettenis memory. */
1363b725ae77Skettenis YYSTYPE *yyvs1 = yyvs;
1364b725ae77Skettenis short *yyss1 = yyss;
1365b725ae77Skettenis
1366*11efff7fSkettenis
1367b725ae77Skettenis /* Each stack pointer address is followed by the size of the
1368*11efff7fSkettenis data in use in that stack, in bytes. This used to be a
1369*11efff7fSkettenis conditional around just the two extra args, but that might
1370*11efff7fSkettenis be undefined if yyoverflow is a macro. */
1371b725ae77Skettenis yyoverflow ("parser stack overflow",
1372b725ae77Skettenis &yyss1, yysize * sizeof (*yyssp),
1373b725ae77Skettenis &yyvs1, yysize * sizeof (*yyvsp),
1374*11efff7fSkettenis
1375b725ae77Skettenis &yystacksize);
1376*11efff7fSkettenis
1377b725ae77Skettenis yyss = yyss1;
1378b725ae77Skettenis yyvs = yyvs1;
1379b725ae77Skettenis }
1380b725ae77Skettenis #else /* no yyoverflow */
1381b725ae77Skettenis # ifndef YYSTACK_RELOCATE
1382b725ae77Skettenis goto yyoverflowlab;
1383b725ae77Skettenis # else
1384b725ae77Skettenis /* Extend the stack our own way. */
1385*11efff7fSkettenis if (YYMAXDEPTH <= yystacksize)
1386b725ae77Skettenis goto yyoverflowlab;
1387b725ae77Skettenis yystacksize *= 2;
1388*11efff7fSkettenis if (YYMAXDEPTH < yystacksize)
1389b725ae77Skettenis yystacksize = YYMAXDEPTH;
1390b725ae77Skettenis
1391b725ae77Skettenis {
1392b725ae77Skettenis short *yyss1 = yyss;
1393b725ae77Skettenis union yyalloc *yyptr =
1394b725ae77Skettenis (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
1395b725ae77Skettenis if (! yyptr)
1396b725ae77Skettenis goto yyoverflowlab;
1397b725ae77Skettenis YYSTACK_RELOCATE (yyss);
1398b725ae77Skettenis YYSTACK_RELOCATE (yyvs);
1399*11efff7fSkettenis
1400b725ae77Skettenis # undef YYSTACK_RELOCATE
1401b725ae77Skettenis if (yyss1 != yyssa)
1402b725ae77Skettenis YYSTACK_FREE (yyss1);
1403b725ae77Skettenis }
1404b725ae77Skettenis # endif
1405b725ae77Skettenis #endif /* no yyoverflow */
1406b725ae77Skettenis
1407b725ae77Skettenis yyssp = yyss + yysize - 1;
1408b725ae77Skettenis yyvsp = yyvs + yysize - 1;
1409*11efff7fSkettenis
1410b725ae77Skettenis
1411b725ae77Skettenis YYDPRINTF ((stderr, "Stack size increased to %lu\n",
1412b725ae77Skettenis (unsigned long int) yystacksize));
1413b725ae77Skettenis
1414*11efff7fSkettenis if (yyss + yystacksize - 1 <= yyssp)
1415b725ae77Skettenis YYABORT;
1416b725ae77Skettenis }
1417b725ae77Skettenis
1418b725ae77Skettenis YYDPRINTF ((stderr, "Entering state %d\n", yystate));
1419b725ae77Skettenis
1420b725ae77Skettenis goto yybackup;
1421b725ae77Skettenis
1422b725ae77Skettenis /*-----------.
1423b725ae77Skettenis | yybackup. |
1424b725ae77Skettenis `-----------*/
1425b725ae77Skettenis yybackup:
1426b725ae77Skettenis
1427b725ae77Skettenis /* Do appropriate processing given the current state. */
1428b725ae77Skettenis /* Read a lookahead token if we need one and don't already have one. */
1429b725ae77Skettenis /* yyresume: */
1430b725ae77Skettenis
1431b725ae77Skettenis /* First try to decide what to do without reference to lookahead token. */
1432b725ae77Skettenis
1433b725ae77Skettenis yyn = yypact[yystate];
1434*11efff7fSkettenis if (yyn == YYPACT_NINF)
1435b725ae77Skettenis goto yydefault;
1436b725ae77Skettenis
1437b725ae77Skettenis /* Not known => get a lookahead token if don't already have one. */
1438b725ae77Skettenis
1439*11efff7fSkettenis /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol. */
1440b725ae77Skettenis if (yychar == YYEMPTY)
1441b725ae77Skettenis {
1442b725ae77Skettenis YYDPRINTF ((stderr, "Reading a token: "));
1443b725ae77Skettenis yychar = YYLEX;
1444b725ae77Skettenis }
1445b725ae77Skettenis
1446*11efff7fSkettenis if (yychar <= YYEOF)
1447b725ae77Skettenis {
1448*11efff7fSkettenis yychar = yytoken = YYEOF;
1449b725ae77Skettenis YYDPRINTF ((stderr, "Now at end of input.\n"));
1450b725ae77Skettenis }
1451b725ae77Skettenis else
1452b725ae77Skettenis {
1453*11efff7fSkettenis yytoken = YYTRANSLATE (yychar);
1454*11efff7fSkettenis YYDSYMPRINTF ("Next token is", yytoken, &yylval, &yylloc);
1455b725ae77Skettenis }
1456b725ae77Skettenis
1457*11efff7fSkettenis /* If the proper action on seeing token YYTOKEN is to reduce or to
1458*11efff7fSkettenis detect an error, take that action. */
1459*11efff7fSkettenis yyn += yytoken;
1460*11efff7fSkettenis if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
1461b725ae77Skettenis goto yydefault;
1462b725ae77Skettenis yyn = yytable[yyn];
1463*11efff7fSkettenis if (yyn <= 0)
1464b725ae77Skettenis {
1465*11efff7fSkettenis if (yyn == 0 || yyn == YYTABLE_NINF)
1466b725ae77Skettenis goto yyerrlab;
1467b725ae77Skettenis yyn = -yyn;
1468b725ae77Skettenis goto yyreduce;
1469b725ae77Skettenis }
1470b725ae77Skettenis
1471b725ae77Skettenis if (yyn == YYFINAL)
1472b725ae77Skettenis YYACCEPT;
1473b725ae77Skettenis
1474b725ae77Skettenis /* Shift the lookahead token. */
1475*11efff7fSkettenis YYDPRINTF ((stderr, "Shifting token %s, ", yytname[yytoken]));
1476b725ae77Skettenis
1477b725ae77Skettenis /* Discard the token being shifted unless it is eof. */
1478b725ae77Skettenis if (yychar != YYEOF)
1479b725ae77Skettenis yychar = YYEMPTY;
1480b725ae77Skettenis
1481b725ae77Skettenis *++yyvsp = yylval;
1482*11efff7fSkettenis
1483b725ae77Skettenis
1484b725ae77Skettenis /* Count tokens shifted since error; after three, turn off error
1485b725ae77Skettenis status. */
1486b725ae77Skettenis if (yyerrstatus)
1487b725ae77Skettenis yyerrstatus--;
1488b725ae77Skettenis
1489b725ae77Skettenis yystate = yyn;
1490b725ae77Skettenis goto yynewstate;
1491b725ae77Skettenis
1492b725ae77Skettenis
1493b725ae77Skettenis /*-----------------------------------------------------------.
1494b725ae77Skettenis | yydefault -- do the default action for the current state. |
1495b725ae77Skettenis `-----------------------------------------------------------*/
1496b725ae77Skettenis yydefault:
1497b725ae77Skettenis yyn = yydefact[yystate];
1498b725ae77Skettenis if (yyn == 0)
1499b725ae77Skettenis goto yyerrlab;
1500b725ae77Skettenis goto yyreduce;
1501b725ae77Skettenis
1502b725ae77Skettenis
1503b725ae77Skettenis /*-----------------------------.
1504b725ae77Skettenis | yyreduce -- Do a reduction. |
1505b725ae77Skettenis `-----------------------------*/
1506b725ae77Skettenis yyreduce:
1507b725ae77Skettenis /* yyn is the number of a rule to reduce with. */
1508b725ae77Skettenis yylen = yyr2[yyn];
1509b725ae77Skettenis
1510b725ae77Skettenis /* If YYLEN is nonzero, implement the default value of the action:
1511b725ae77Skettenis `$$ = $1'.
1512b725ae77Skettenis
1513*11efff7fSkettenis Otherwise, the following line sets YYVAL to garbage.
1514*11efff7fSkettenis This behavior is undocumented and Bison
1515b725ae77Skettenis users should not rely upon it. Assigning to YYVAL
1516b725ae77Skettenis unconditionally makes the parser a bit smaller, and it avoids a
1517b725ae77Skettenis GCC warning that YYVAL may be used uninitialized. */
1518b725ae77Skettenis yyval = yyvsp[1-yylen];
1519b725ae77Skettenis
1520b725ae77Skettenis
1521*11efff7fSkettenis YY_REDUCE_PRINT (yyn);
1522*11efff7fSkettenis switch (yyn)
1523b725ae77Skettenis {
1524*11efff7fSkettenis case 3:
1525*11efff7fSkettenis #line 218 "ada-exp.y"
1526b725ae77Skettenis { write_exp_elt_opcode (OP_TYPE);
1527b725ae77Skettenis write_exp_elt_type (yyvsp[0].tval);
1528b725ae77Skettenis write_exp_elt_opcode (OP_TYPE); }
1529b725ae77Skettenis break;
1530*11efff7fSkettenis
1531*11efff7fSkettenis case 5:
1532*11efff7fSkettenis #line 226 "ada-exp.y"
1533b725ae77Skettenis { write_exp_elt_opcode (BINOP_COMMA); }
1534b725ae77Skettenis break;
1535*11efff7fSkettenis
1536*11efff7fSkettenis case 6:
1537*11efff7fSkettenis #line 231 "ada-exp.y"
1538b725ae77Skettenis { write_exp_elt_opcode (UNOP_IND); }
1539b725ae77Skettenis break;
1540*11efff7fSkettenis
1541*11efff7fSkettenis case 7:
1542*11efff7fSkettenis #line 235 "ada-exp.y"
1543b725ae77Skettenis { write_exp_elt_opcode (STRUCTOP_STRUCT);
1544b725ae77Skettenis write_exp_string (yyvsp[0].ssym.stoken);
1545b725ae77Skettenis write_exp_elt_opcode (STRUCTOP_STRUCT);
1546b725ae77Skettenis }
1547b725ae77Skettenis break;
1548*11efff7fSkettenis
1549*11efff7fSkettenis case 8:
1550*11efff7fSkettenis #line 242 "ada-exp.y"
1551b725ae77Skettenis {
1552b725ae77Skettenis write_exp_elt_opcode (OP_FUNCALL);
1553b725ae77Skettenis write_exp_elt_longcst (yyvsp[-1].lval);
1554b725ae77Skettenis write_exp_elt_opcode (OP_FUNCALL);
1555b725ae77Skettenis }
1556b725ae77Skettenis break;
1557*11efff7fSkettenis
1558*11efff7fSkettenis case 9:
1559*11efff7fSkettenis #line 250 "ada-exp.y"
1560b725ae77Skettenis {
1561b725ae77Skettenis write_exp_elt_opcode (UNOP_CAST);
1562b725ae77Skettenis write_exp_elt_type (yyvsp[-3].tval);
1563b725ae77Skettenis write_exp_elt_opcode (UNOP_CAST);
1564b725ae77Skettenis }
1565b725ae77Skettenis break;
1566*11efff7fSkettenis
1567*11efff7fSkettenis case 10:
1568*11efff7fSkettenis #line 257 "ada-exp.y"
1569b725ae77Skettenis { type_qualifier = yyvsp[-2].tval; }
1570b725ae77Skettenis break;
1571*11efff7fSkettenis
1572*11efff7fSkettenis case 11:
1573*11efff7fSkettenis #line 258 "ada-exp.y"
1574b725ae77Skettenis {
1575*11efff7fSkettenis write_exp_elt_opcode (UNOP_QUAL);
1576b725ae77Skettenis write_exp_elt_type (yyvsp[-6].tval);
1577*11efff7fSkettenis write_exp_elt_opcode (UNOP_QUAL);
1578b725ae77Skettenis type_qualifier = yyvsp[-4].tval;
1579b725ae77Skettenis }
1580b725ae77Skettenis break;
1581*11efff7fSkettenis
1582*11efff7fSkettenis case 12:
1583*11efff7fSkettenis #line 266 "ada-exp.y"
1584b725ae77Skettenis { yyval.tval = type_qualifier; }
1585b725ae77Skettenis break;
1586*11efff7fSkettenis
1587*11efff7fSkettenis case 13:
1588*11efff7fSkettenis #line 271 "ada-exp.y"
1589b725ae77Skettenis { write_exp_elt_opcode (TERNOP_SLICE); }
1590b725ae77Skettenis break;
1591*11efff7fSkettenis
1592*11efff7fSkettenis case 14:
1593*11efff7fSkettenis #line 274 "ada-exp.y"
1594b725ae77Skettenis { }
1595b725ae77Skettenis break;
1596*11efff7fSkettenis
1597b725ae77Skettenis case 16:
1598b725ae77Skettenis #line 281 "ada-exp.y"
1599*11efff7fSkettenis { write_dollar_variable (yyvsp[0].sval); }
1600b725ae77Skettenis break;
1601*11efff7fSkettenis
1602b725ae77Skettenis case 18:
1603*11efff7fSkettenis #line 288 "ada-exp.y"
1604b725ae77Skettenis { write_exp_elt_opcode (BINOP_ASSIGN); }
1605b725ae77Skettenis break;
1606*11efff7fSkettenis
1607*11efff7fSkettenis case 19:
1608*11efff7fSkettenis #line 292 "ada-exp.y"
1609b725ae77Skettenis { write_exp_elt_opcode (UNOP_NEG); }
1610b725ae77Skettenis break;
1611*11efff7fSkettenis
1612*11efff7fSkettenis case 20:
1613*11efff7fSkettenis #line 296 "ada-exp.y"
1614b725ae77Skettenis { write_exp_elt_opcode (UNOP_PLUS); }
1615b725ae77Skettenis break;
1616*11efff7fSkettenis
1617*11efff7fSkettenis case 21:
1618*11efff7fSkettenis #line 300 "ada-exp.y"
1619b725ae77Skettenis { write_exp_elt_opcode (UNOP_LOGICAL_NOT); }
1620b725ae77Skettenis break;
1621*11efff7fSkettenis
1622*11efff7fSkettenis case 22:
1623*11efff7fSkettenis #line 304 "ada-exp.y"
1624b725ae77Skettenis { write_exp_elt_opcode (UNOP_ABS); }
1625b725ae77Skettenis break;
1626*11efff7fSkettenis
1627*11efff7fSkettenis case 23:
1628*11efff7fSkettenis #line 307 "ada-exp.y"
1629b725ae77Skettenis { yyval.lval = 0; }
1630b725ae77Skettenis break;
1631*11efff7fSkettenis
1632*11efff7fSkettenis case 24:
1633*11efff7fSkettenis #line 311 "ada-exp.y"
1634*11efff7fSkettenis { yyval.lval = 1; }
1635*11efff7fSkettenis break;
1636*11efff7fSkettenis
1637b725ae77Skettenis case 25:
1638*11efff7fSkettenis #line 313 "ada-exp.y"
1639b725ae77Skettenis { yyval.lval = 1; }
1640b725ae77Skettenis break;
1641*11efff7fSkettenis
1642b725ae77Skettenis case 26:
1643*11efff7fSkettenis #line 315 "ada-exp.y"
1644b725ae77Skettenis { yyval.lval = yyvsp[-2].lval + 1; }
1645b725ae77Skettenis break;
1646*11efff7fSkettenis
1647*11efff7fSkettenis case 27:
1648*11efff7fSkettenis #line 317 "ada-exp.y"
1649b725ae77Skettenis { yyval.lval = yyvsp[-4].lval + 1; }
1650b725ae77Skettenis break;
1651*11efff7fSkettenis
1652*11efff7fSkettenis case 28:
1653*11efff7fSkettenis #line 322 "ada-exp.y"
1654b725ae77Skettenis { write_exp_elt_opcode (UNOP_MEMVAL);
1655b725ae77Skettenis write_exp_elt_type (yyvsp[-2].tval);
1656b725ae77Skettenis write_exp_elt_opcode (UNOP_MEMVAL);
1657b725ae77Skettenis }
1658b725ae77Skettenis break;
1659*11efff7fSkettenis
1660*11efff7fSkettenis case 29:
1661*11efff7fSkettenis #line 331 "ada-exp.y"
1662b725ae77Skettenis { write_exp_elt_opcode (BINOP_EXP); }
1663b725ae77Skettenis break;
1664*11efff7fSkettenis
1665*11efff7fSkettenis case 30:
1666*11efff7fSkettenis #line 335 "ada-exp.y"
1667b725ae77Skettenis { write_exp_elt_opcode (BINOP_MUL); }
1668b725ae77Skettenis break;
1669*11efff7fSkettenis
1670*11efff7fSkettenis case 31:
1671*11efff7fSkettenis #line 339 "ada-exp.y"
1672b725ae77Skettenis { write_exp_elt_opcode (BINOP_DIV); }
1673b725ae77Skettenis break;
1674*11efff7fSkettenis
1675*11efff7fSkettenis case 32:
1676*11efff7fSkettenis #line 343 "ada-exp.y"
1677b725ae77Skettenis { write_exp_elt_opcode (BINOP_REM); }
1678b725ae77Skettenis break;
1679*11efff7fSkettenis
1680*11efff7fSkettenis case 33:
1681*11efff7fSkettenis #line 347 "ada-exp.y"
1682b725ae77Skettenis { write_exp_elt_opcode (BINOP_MOD); }
1683b725ae77Skettenis break;
1684*11efff7fSkettenis
1685*11efff7fSkettenis case 34:
1686*11efff7fSkettenis #line 351 "ada-exp.y"
1687b725ae77Skettenis { write_exp_elt_opcode (BINOP_REPEAT); }
1688b725ae77Skettenis break;
1689*11efff7fSkettenis
1690*11efff7fSkettenis case 35:
1691*11efff7fSkettenis #line 355 "ada-exp.y"
1692b725ae77Skettenis { write_exp_elt_opcode (BINOP_ADD); }
1693b725ae77Skettenis break;
1694*11efff7fSkettenis
1695*11efff7fSkettenis case 36:
1696*11efff7fSkettenis #line 359 "ada-exp.y"
1697b725ae77Skettenis { write_exp_elt_opcode (BINOP_CONCAT); }
1698b725ae77Skettenis break;
1699*11efff7fSkettenis
1700*11efff7fSkettenis case 37:
1701*11efff7fSkettenis #line 363 "ada-exp.y"
1702b725ae77Skettenis { write_exp_elt_opcode (BINOP_SUB); }
1703b725ae77Skettenis break;
1704*11efff7fSkettenis
1705*11efff7fSkettenis case 38:
1706*11efff7fSkettenis #line 367 "ada-exp.y"
1707b725ae77Skettenis { write_exp_elt_opcode (BINOP_EQUAL); }
1708b725ae77Skettenis break;
1709*11efff7fSkettenis
1710*11efff7fSkettenis case 39:
1711*11efff7fSkettenis #line 371 "ada-exp.y"
1712b725ae77Skettenis { write_exp_elt_opcode (BINOP_NOTEQUAL); }
1713b725ae77Skettenis break;
1714*11efff7fSkettenis
1715*11efff7fSkettenis case 40:
1716*11efff7fSkettenis #line 375 "ada-exp.y"
1717b725ae77Skettenis { write_exp_elt_opcode (BINOP_LEQ); }
1718b725ae77Skettenis break;
1719*11efff7fSkettenis
1720*11efff7fSkettenis case 41:
1721*11efff7fSkettenis #line 379 "ada-exp.y"
1722*11efff7fSkettenis { write_exp_elt_opcode (TERNOP_IN_RANGE); }
1723*11efff7fSkettenis break;
1724*11efff7fSkettenis
1725b725ae77Skettenis case 42:
1726*11efff7fSkettenis #line 381 "ada-exp.y"
1727*11efff7fSkettenis { write_exp_elt_opcode (BINOP_IN_BOUNDS);
1728*11efff7fSkettenis write_exp_elt_longcst ((LONGEST) yyvsp[0].lval);
1729*11efff7fSkettenis write_exp_elt_opcode (BINOP_IN_BOUNDS);
1730*11efff7fSkettenis }
1731b725ae77Skettenis break;
1732*11efff7fSkettenis
1733b725ae77Skettenis case 43:
1734*11efff7fSkettenis #line 386 "ada-exp.y"
1735*11efff7fSkettenis { write_exp_elt_opcode (UNOP_IN_RANGE);
1736*11efff7fSkettenis write_exp_elt_type (yyvsp[0].tval);
1737*11efff7fSkettenis write_exp_elt_opcode (UNOP_IN_RANGE);
1738b725ae77Skettenis }
1739b725ae77Skettenis break;
1740*11efff7fSkettenis
1741b725ae77Skettenis case 44:
1742*11efff7fSkettenis #line 391 "ada-exp.y"
1743*11efff7fSkettenis { write_exp_elt_opcode (TERNOP_IN_RANGE);
1744*11efff7fSkettenis write_exp_elt_opcode (UNOP_LOGICAL_NOT);
1745b725ae77Skettenis }
1746b725ae77Skettenis break;
1747*11efff7fSkettenis
1748b725ae77Skettenis case 45:
1749*11efff7fSkettenis #line 395 "ada-exp.y"
1750*11efff7fSkettenis { write_exp_elt_opcode (BINOP_IN_BOUNDS);
1751b725ae77Skettenis write_exp_elt_longcst ((LONGEST) yyvsp[0].lval);
1752*11efff7fSkettenis write_exp_elt_opcode (BINOP_IN_BOUNDS);
1753b725ae77Skettenis write_exp_elt_opcode (UNOP_LOGICAL_NOT);
1754b725ae77Skettenis }
1755b725ae77Skettenis break;
1756*11efff7fSkettenis
1757*11efff7fSkettenis case 46:
1758*11efff7fSkettenis #line 401 "ada-exp.y"
1759*11efff7fSkettenis { write_exp_elt_opcode (UNOP_IN_RANGE);
1760b725ae77Skettenis write_exp_elt_type (yyvsp[0].tval);
1761*11efff7fSkettenis write_exp_elt_opcode (UNOP_IN_RANGE);
1762b725ae77Skettenis write_exp_elt_opcode (UNOP_LOGICAL_NOT);
1763b725ae77Skettenis }
1764b725ae77Skettenis break;
1765*11efff7fSkettenis
1766*11efff7fSkettenis case 47:
1767*11efff7fSkettenis #line 409 "ada-exp.y"
1768b725ae77Skettenis { write_exp_elt_opcode (BINOP_GEQ); }
1769b725ae77Skettenis break;
1770*11efff7fSkettenis
1771*11efff7fSkettenis case 48:
1772*11efff7fSkettenis #line 413 "ada-exp.y"
1773b725ae77Skettenis { write_exp_elt_opcode (BINOP_LESS); }
1774b725ae77Skettenis break;
1775*11efff7fSkettenis
1776*11efff7fSkettenis case 49:
1777*11efff7fSkettenis #line 417 "ada-exp.y"
1778b725ae77Skettenis { write_exp_elt_opcode (BINOP_GTR); }
1779b725ae77Skettenis break;
1780*11efff7fSkettenis
1781*11efff7fSkettenis case 50:
1782*11efff7fSkettenis #line 421 "ada-exp.y"
1783b725ae77Skettenis { write_exp_elt_opcode (BINOP_BITWISE_AND); }
1784b725ae77Skettenis break;
1785*11efff7fSkettenis
1786*11efff7fSkettenis case 51:
1787*11efff7fSkettenis #line 425 "ada-exp.y"
1788b725ae77Skettenis { write_exp_elt_opcode (BINOP_LOGICAL_AND); }
1789b725ae77Skettenis break;
1790*11efff7fSkettenis
1791*11efff7fSkettenis case 52:
1792*11efff7fSkettenis #line 429 "ada-exp.y"
1793b725ae77Skettenis { write_exp_elt_opcode (BINOP_BITWISE_IOR); }
1794b725ae77Skettenis break;
1795*11efff7fSkettenis
1796*11efff7fSkettenis case 53:
1797*11efff7fSkettenis #line 433 "ada-exp.y"
1798b725ae77Skettenis { write_exp_elt_opcode (BINOP_LOGICAL_OR); }
1799b725ae77Skettenis break;
1800*11efff7fSkettenis
1801*11efff7fSkettenis case 54:
1802*11efff7fSkettenis #line 437 "ada-exp.y"
1803b725ae77Skettenis { write_exp_elt_opcode (BINOP_BITWISE_XOR); }
1804b725ae77Skettenis break;
1805*11efff7fSkettenis
1806*11efff7fSkettenis case 55:
1807*11efff7fSkettenis #line 441 "ada-exp.y"
1808b725ae77Skettenis { write_exp_elt_opcode (UNOP_ADDR); }
1809b725ae77Skettenis break;
1810*11efff7fSkettenis
1811*11efff7fSkettenis case 56:
1812*11efff7fSkettenis #line 443 "ada-exp.y"
1813b725ae77Skettenis { write_exp_elt_opcode (UNOP_ADDR);
1814b725ae77Skettenis write_exp_elt_opcode (UNOP_CAST);
1815*11efff7fSkettenis write_exp_elt_type (type_system_address ());
1816b725ae77Skettenis write_exp_elt_opcode (UNOP_CAST);
1817b725ae77Skettenis }
1818b725ae77Skettenis break;
1819*11efff7fSkettenis
1820*11efff7fSkettenis case 57:
1821*11efff7fSkettenis #line 449 "ada-exp.y"
1822*11efff7fSkettenis { write_int (yyvsp[0].lval, type_int ());
1823*11efff7fSkettenis write_exp_elt_opcode (OP_ATR_FIRST); }
1824*11efff7fSkettenis break;
1825*11efff7fSkettenis
1826b725ae77Skettenis case 58:
1827*11efff7fSkettenis #line 452 "ada-exp.y"
1828*11efff7fSkettenis { write_int (yyvsp[0].lval, type_int ());
1829*11efff7fSkettenis write_exp_elt_opcode (OP_ATR_LAST); }
1830b725ae77Skettenis break;
1831*11efff7fSkettenis
1832b725ae77Skettenis case 59:
1833*11efff7fSkettenis #line 455 "ada-exp.y"
1834*11efff7fSkettenis { write_int (yyvsp[0].lval, type_int ());
1835*11efff7fSkettenis write_exp_elt_opcode (OP_ATR_LENGTH); }
1836b725ae77Skettenis break;
1837*11efff7fSkettenis
1838b725ae77Skettenis case 60:
1839*11efff7fSkettenis #line 458 "ada-exp.y"
1840*11efff7fSkettenis { write_exp_elt_opcode (OP_ATR_SIZE); }
1841b725ae77Skettenis break;
1842*11efff7fSkettenis
1843b725ae77Skettenis case 61:
1844*11efff7fSkettenis #line 460 "ada-exp.y"
1845*11efff7fSkettenis { write_exp_elt_opcode (OP_ATR_TAG); }
1846b725ae77Skettenis break;
1847*11efff7fSkettenis
1848b725ae77Skettenis case 62:
1849*11efff7fSkettenis #line 462 "ada-exp.y"
1850*11efff7fSkettenis { write_exp_elt_opcode (OP_ATR_MIN); }
1851b725ae77Skettenis break;
1852*11efff7fSkettenis
1853b725ae77Skettenis case 63:
1854*11efff7fSkettenis #line 464 "ada-exp.y"
1855*11efff7fSkettenis { write_exp_elt_opcode (OP_ATR_MAX); }
1856b725ae77Skettenis break;
1857*11efff7fSkettenis
1858b725ae77Skettenis case 64:
1859*11efff7fSkettenis #line 466 "ada-exp.y"
1860*11efff7fSkettenis { write_exp_elt_opcode (OP_ATR_POS); }
1861b725ae77Skettenis break;
1862*11efff7fSkettenis
1863b725ae77Skettenis case 65:
1864*11efff7fSkettenis #line 468 "ada-exp.y"
1865*11efff7fSkettenis { write_int (yyvsp[0].lval, type_int ());
1866*11efff7fSkettenis write_exp_elt_opcode (OP_ATR_FIRST); }
1867b725ae77Skettenis break;
1868*11efff7fSkettenis
1869b725ae77Skettenis case 66:
1870*11efff7fSkettenis #line 471 "ada-exp.y"
1871*11efff7fSkettenis { write_int (yyvsp[0].lval, type_int ());
1872*11efff7fSkettenis write_exp_elt_opcode (OP_ATR_LAST); }
1873b725ae77Skettenis break;
1874*11efff7fSkettenis
1875b725ae77Skettenis case 67:
1876*11efff7fSkettenis #line 474 "ada-exp.y"
1877*11efff7fSkettenis { write_int (yyvsp[0].lval, type_int ());
1878*11efff7fSkettenis write_exp_elt_opcode (OP_ATR_LENGTH); }
1879b725ae77Skettenis break;
1880*11efff7fSkettenis
1881b725ae77Skettenis case 68:
1882*11efff7fSkettenis #line 477 "ada-exp.y"
1883*11efff7fSkettenis { write_exp_elt_opcode (OP_ATR_VAL); }
1884b725ae77Skettenis break;
1885*11efff7fSkettenis
1886b725ae77Skettenis case 69:
1887*11efff7fSkettenis #line 479 "ada-exp.y"
1888*11efff7fSkettenis { write_exp_elt_opcode (OP_ATR_MODULUS); }
1889b725ae77Skettenis break;
1890*11efff7fSkettenis
1891b725ae77Skettenis case 70:
1892*11efff7fSkettenis #line 483 "ada-exp.y"
1893b725ae77Skettenis { yyval.lval = 1; }
1894b725ae77Skettenis break;
1895*11efff7fSkettenis
1896*11efff7fSkettenis case 71:
1897*11efff7fSkettenis #line 485 "ada-exp.y"
1898b725ae77Skettenis { yyval.lval = yyvsp[-1].typed_val.val; }
1899b725ae77Skettenis break;
1900*11efff7fSkettenis
1901*11efff7fSkettenis case 72:
1902*11efff7fSkettenis #line 490 "ada-exp.y"
1903b725ae77Skettenis { write_exp_elt_opcode (OP_TYPE);
1904b725ae77Skettenis write_exp_elt_type (yyvsp[0].tval);
1905b725ae77Skettenis write_exp_elt_opcode (OP_TYPE); }
1906b725ae77Skettenis break;
1907*11efff7fSkettenis
1908*11efff7fSkettenis case 74:
1909*11efff7fSkettenis #line 498 "ada-exp.y"
1910b725ae77Skettenis { write_exp_elt_opcode (OP_TYPE);
1911b725ae77Skettenis write_exp_elt_type (builtin_type_void);
1912b725ae77Skettenis write_exp_elt_opcode (OP_TYPE); }
1913b725ae77Skettenis break;
1914*11efff7fSkettenis
1915*11efff7fSkettenis case 75:
1916*11efff7fSkettenis #line 505 "ada-exp.y"
1917*11efff7fSkettenis { write_int ((LONGEST) yyvsp[0].typed_val.val, yyvsp[0].typed_val.type); }
1918*11efff7fSkettenis break;
1919*11efff7fSkettenis
1920b725ae77Skettenis case 76:
1921*11efff7fSkettenis #line 509 "ada-exp.y"
1922*11efff7fSkettenis { write_int (convert_char_literal (type_qualifier, yyvsp[0].typed_val.val),
1923*11efff7fSkettenis (type_qualifier == NULL)
1924*11efff7fSkettenis ? yyvsp[0].typed_val.type : type_qualifier);
1925b725ae77Skettenis }
1926b725ae77Skettenis break;
1927*11efff7fSkettenis
1928b725ae77Skettenis case 77:
1929*11efff7fSkettenis #line 516 "ada-exp.y"
1930b725ae77Skettenis { write_exp_elt_opcode (OP_DOUBLE);
1931b725ae77Skettenis write_exp_elt_type (yyvsp[0].typed_val_float.type);
1932b725ae77Skettenis write_exp_elt_dblcst (yyvsp[0].typed_val_float.dval);
1933b725ae77Skettenis write_exp_elt_opcode (OP_DOUBLE);
1934b725ae77Skettenis }
1935b725ae77Skettenis break;
1936*11efff7fSkettenis
1937*11efff7fSkettenis case 78:
1938*11efff7fSkettenis #line 524 "ada-exp.y"
1939*11efff7fSkettenis { write_int (0, type_int ()); }
1940*11efff7fSkettenis break;
1941*11efff7fSkettenis
1942b725ae77Skettenis case 79:
1943*11efff7fSkettenis #line 528 "ada-exp.y"
1944b725ae77Skettenis {
1945*11efff7fSkettenis write_exp_elt_opcode (OP_STRING);
1946*11efff7fSkettenis write_exp_string (yyvsp[0].sval);
1947*11efff7fSkettenis write_exp_elt_opcode (OP_STRING);
1948b725ae77Skettenis }
1949b725ae77Skettenis break;
1950*11efff7fSkettenis
1951*11efff7fSkettenis case 80:
1952*11efff7fSkettenis #line 536 "ada-exp.y"
1953b725ae77Skettenis { error ("NEW not implemented."); }
1954b725ae77Skettenis break;
1955*11efff7fSkettenis
1956*11efff7fSkettenis case 81:
1957*11efff7fSkettenis #line 539 "ada-exp.y"
1958b725ae77Skettenis { write_var_from_name (NULL, yyvsp[0].ssym); }
1959b725ae77Skettenis break;
1960*11efff7fSkettenis
1961*11efff7fSkettenis case 82:
1962*11efff7fSkettenis #line 541 "ada-exp.y"
1963b725ae77Skettenis { write_var_from_name (yyvsp[-1].bval, yyvsp[0].ssym); }
1964b725ae77Skettenis break;
1965*11efff7fSkettenis
1966*11efff7fSkettenis case 83:
1967*11efff7fSkettenis #line 543 "ada-exp.y"
1968*11efff7fSkettenis { write_object_renaming (NULL, yyvsp[0].ssym.sym,
1969*11efff7fSkettenis MAX_RENAMING_CHAIN_LENGTH); }
1970*11efff7fSkettenis break;
1971*11efff7fSkettenis
1972b725ae77Skettenis case 84:
1973*11efff7fSkettenis #line 546 "ada-exp.y"
1974*11efff7fSkettenis { write_object_renaming (yyvsp[-1].bval, yyvsp[0].ssym.sym,
1975*11efff7fSkettenis MAX_RENAMING_CHAIN_LENGTH); }
1976b725ae77Skettenis break;
1977*11efff7fSkettenis
1978b725ae77Skettenis case 85:
1979*11efff7fSkettenis #line 550 "ada-exp.y"
1980*11efff7fSkettenis { }
1981b725ae77Skettenis break;
1982*11efff7fSkettenis
1983b725ae77Skettenis case 86:
1984*11efff7fSkettenis #line 551 "ada-exp.y"
1985b725ae77Skettenis { }
1986b725ae77Skettenis break;
1987*11efff7fSkettenis
1988b725ae77Skettenis case 87:
1989*11efff7fSkettenis #line 552 "ada-exp.y"
1990b725ae77Skettenis { }
1991b725ae77Skettenis break;
1992*11efff7fSkettenis
1993b725ae77Skettenis case 88:
1994*11efff7fSkettenis #line 556 "ada-exp.y"
1995*11efff7fSkettenis { yyval.bval = yyvsp[0].bval; }
1996b725ae77Skettenis break;
1997*11efff7fSkettenis
1998b725ae77Skettenis case 89:
1999*11efff7fSkettenis #line 558 "ada-exp.y"
2000b725ae77Skettenis { yyval.bval = yyvsp[0].bval; }
2001b725ae77Skettenis break;
2002*11efff7fSkettenis
2003b725ae77Skettenis case 90:
2004*11efff7fSkettenis #line 562 "ada-exp.y"
2005*11efff7fSkettenis { yyval.tval = yyvsp[0].tval; }
2006b725ae77Skettenis break;
2007*11efff7fSkettenis
2008b725ae77Skettenis case 91:
2009*11efff7fSkettenis #line 563 "ada-exp.y"
2010b725ae77Skettenis { yyval.tval = yyvsp[0].tval; }
2011b725ae77Skettenis break;
2012*11efff7fSkettenis
2013b725ae77Skettenis case 92:
2014*11efff7fSkettenis #line 565 "ada-exp.y"
2015*11efff7fSkettenis { yyval.tval = lookup_pointer_type (yyvsp[-1].tval); }
2016b725ae77Skettenis break;
2017*11efff7fSkettenis
2018b725ae77Skettenis case 93:
2019*11efff7fSkettenis #line 567 "ada-exp.y"
2020b725ae77Skettenis { yyval.tval = lookup_pointer_type (yyvsp[-1].tval); }
2021b725ae77Skettenis break;
2022*11efff7fSkettenis
2023b725ae77Skettenis case 94:
2024*11efff7fSkettenis #line 574 "ada-exp.y"
2025b725ae77Skettenis { write_exp_elt_opcode (UNOP_IND); }
2026b725ae77Skettenis break;
2027*11efff7fSkettenis
2028*11efff7fSkettenis case 95:
2029*11efff7fSkettenis #line 576 "ada-exp.y"
2030b725ae77Skettenis { write_exp_elt_opcode (UNOP_ADDR); }
2031b725ae77Skettenis break;
2032*11efff7fSkettenis
2033*11efff7fSkettenis case 96:
2034*11efff7fSkettenis #line 578 "ada-exp.y"
2035b725ae77Skettenis { write_exp_elt_opcode (BINOP_SUBSCRIPT); }
2036b725ae77Skettenis break;
2037*11efff7fSkettenis
2038*11efff7fSkettenis
2039b725ae77Skettenis }
2040b725ae77Skettenis
2041*11efff7fSkettenis /* Line 1000 of yacc.c. */
2042b725ae77Skettenis
2043b725ae77Skettenis yyvsp -= yylen;
2044b725ae77Skettenis yyssp -= yylen;
2045b725ae77Skettenis
2046*11efff7fSkettenis
2047*11efff7fSkettenis YY_STACK_PRINT (yyss, yyssp);
2048b725ae77Skettenis
2049b725ae77Skettenis *++yyvsp = yyval;
2050*11efff7fSkettenis
2051b725ae77Skettenis
2052b725ae77Skettenis /* Now `shift' the result of the reduction. Determine what state
2053b725ae77Skettenis that goes to, based on the state we popped back to and the rule
2054b725ae77Skettenis number reduced by. */
2055b725ae77Skettenis
2056b725ae77Skettenis yyn = yyr1[yyn];
2057b725ae77Skettenis
2058*11efff7fSkettenis yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
2059*11efff7fSkettenis if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
2060b725ae77Skettenis yystate = yytable[yystate];
2061b725ae77Skettenis else
2062*11efff7fSkettenis yystate = yydefgoto[yyn - YYNTOKENS];
2063b725ae77Skettenis
2064b725ae77Skettenis goto yynewstate;
2065b725ae77Skettenis
2066b725ae77Skettenis
2067b725ae77Skettenis /*------------------------------------.
2068b725ae77Skettenis | yyerrlab -- here on detecting error |
2069b725ae77Skettenis `------------------------------------*/
2070b725ae77Skettenis yyerrlab:
2071b725ae77Skettenis /* If not already recovering from an error, report this error. */
2072b725ae77Skettenis if (!yyerrstatus)
2073b725ae77Skettenis {
2074b725ae77Skettenis ++yynerrs;
2075*11efff7fSkettenis #if YYERROR_VERBOSE
2076b725ae77Skettenis yyn = yypact[yystate];
2077b725ae77Skettenis
2078*11efff7fSkettenis if (YYPACT_NINF < yyn && yyn < YYLAST)
2079b725ae77Skettenis {
2080b725ae77Skettenis YYSIZE_T yysize = 0;
2081*11efff7fSkettenis int yytype = YYTRANSLATE (yychar);
2082*11efff7fSkettenis const char* yyprefix;
2083b725ae77Skettenis char *yymsg;
2084*11efff7fSkettenis int yyx;
2085b725ae77Skettenis
2086b725ae77Skettenis /* Start YYX at -YYN if negative to avoid negative indexes in
2087b725ae77Skettenis YYCHECK. */
2088*11efff7fSkettenis int yyxbegin = yyn < 0 ? -yyn : 0;
2089*11efff7fSkettenis
2090*11efff7fSkettenis /* Stay within bounds of both yycheck and yytname. */
2091*11efff7fSkettenis int yychecklim = YYLAST - yyn;
2092*11efff7fSkettenis int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
2093*11efff7fSkettenis int yycount = 0;
2094*11efff7fSkettenis
2095*11efff7fSkettenis yyprefix = ", expecting ";
2096*11efff7fSkettenis for (yyx = yyxbegin; yyx < yyxend; ++yyx)
2097*11efff7fSkettenis if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
2098*11efff7fSkettenis {
2099*11efff7fSkettenis yysize += yystrlen (yyprefix) + yystrlen (yytname [yyx]);
2100*11efff7fSkettenis yycount += 1;
2101*11efff7fSkettenis if (yycount == 5)
2102*11efff7fSkettenis {
2103*11efff7fSkettenis yysize = 0;
2104*11efff7fSkettenis break;
2105*11efff7fSkettenis }
2106*11efff7fSkettenis }
2107*11efff7fSkettenis yysize += (sizeof ("syntax error, unexpected ")
2108*11efff7fSkettenis + yystrlen (yytname[yytype]));
2109b725ae77Skettenis yymsg = (char *) YYSTACK_ALLOC (yysize);
2110b725ae77Skettenis if (yymsg != 0)
2111b725ae77Skettenis {
2112*11efff7fSkettenis char *yyp = yystpcpy (yymsg, "syntax error, unexpected ");
2113*11efff7fSkettenis yyp = yystpcpy (yyp, yytname[yytype]);
2114b725ae77Skettenis
2115b725ae77Skettenis if (yycount < 5)
2116b725ae77Skettenis {
2117*11efff7fSkettenis yyprefix = ", expecting ";
2118*11efff7fSkettenis for (yyx = yyxbegin; yyx < yyxend; ++yyx)
2119*11efff7fSkettenis if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
2120b725ae77Skettenis {
2121*11efff7fSkettenis yyp = yystpcpy (yyp, yyprefix);
2122b725ae77Skettenis yyp = yystpcpy (yyp, yytname[yyx]);
2123*11efff7fSkettenis yyprefix = " or ";
2124b725ae77Skettenis }
2125b725ae77Skettenis }
2126b725ae77Skettenis yyerror (yymsg);
2127b725ae77Skettenis YYSTACK_FREE (yymsg);
2128b725ae77Skettenis }
2129b725ae77Skettenis else
2130*11efff7fSkettenis yyerror ("syntax error; also virtual memory exhausted");
2131b725ae77Skettenis }
2132b725ae77Skettenis else
2133*11efff7fSkettenis #endif /* YYERROR_VERBOSE */
2134*11efff7fSkettenis yyerror ("syntax error");
2135b725ae77Skettenis }
2136b725ae77Skettenis
2137b725ae77Skettenis
2138*11efff7fSkettenis
2139b725ae77Skettenis if (yyerrstatus == 3)
2140b725ae77Skettenis {
2141b725ae77Skettenis /* If just tried and failed to reuse lookahead token after an
2142b725ae77Skettenis error, discard it. */
2143b725ae77Skettenis
2144*11efff7fSkettenis if (yychar <= YYEOF)
2145*11efff7fSkettenis {
2146*11efff7fSkettenis /* If at end of input, pop the error token,
2147*11efff7fSkettenis then the rest of the stack, then return failure. */
2148b725ae77Skettenis if (yychar == YYEOF)
2149*11efff7fSkettenis for (;;)
2150*11efff7fSkettenis {
2151*11efff7fSkettenis YYPOPSTACK;
2152*11efff7fSkettenis if (yyssp == yyss)
2153b725ae77Skettenis YYABORT;
2154*11efff7fSkettenis YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
2155*11efff7fSkettenis yydestruct (yystos[*yyssp], yyvsp);
2156*11efff7fSkettenis }
2157*11efff7fSkettenis }
2158*11efff7fSkettenis else
2159*11efff7fSkettenis {
2160*11efff7fSkettenis YYDSYMPRINTF ("Error: discarding", yytoken, &yylval, &yylloc);
2161*11efff7fSkettenis yydestruct (yytoken, &yylval);
2162b725ae77Skettenis yychar = YYEMPTY;
2163*11efff7fSkettenis
2164*11efff7fSkettenis }
2165b725ae77Skettenis }
2166b725ae77Skettenis
2167b725ae77Skettenis /* Else will try to reuse lookahead token after shifting the error
2168b725ae77Skettenis token. */
2169*11efff7fSkettenis goto yyerrlab1;
2170b725ae77Skettenis
2171b725ae77Skettenis
2172*11efff7fSkettenis /*---------------------------------------------------.
2173*11efff7fSkettenis | yyerrorlab -- error raised explicitly by YYERROR. |
2174*11efff7fSkettenis `---------------------------------------------------*/
2175*11efff7fSkettenis yyerrorlab:
2176b725ae77Skettenis
2177*11efff7fSkettenis #ifdef __GNUC__
2178*11efff7fSkettenis /* Pacify GCC when the user code never invokes YYERROR and the label
2179*11efff7fSkettenis yyerrorlab therefore never appears in user code. */
2180*11efff7fSkettenis if (0)
2181*11efff7fSkettenis goto yyerrorlab;
2182b725ae77Skettenis #endif
2183b725ae77Skettenis
2184*11efff7fSkettenis yyvsp -= yylen;
2185*11efff7fSkettenis yyssp -= yylen;
2186*11efff7fSkettenis yystate = *yyssp;
2187*11efff7fSkettenis goto yyerrlab1;
2188b725ae77Skettenis
2189*11efff7fSkettenis
2190*11efff7fSkettenis /*-------------------------------------------------------------.
2191*11efff7fSkettenis | yyerrlab1 -- common code for both syntax error and YYERROR. |
2192*11efff7fSkettenis `-------------------------------------------------------------*/
2193*11efff7fSkettenis yyerrlab1:
2194*11efff7fSkettenis yyerrstatus = 3; /* Each real token shifted decrements this. */
2195*11efff7fSkettenis
2196*11efff7fSkettenis for (;;)
2197*11efff7fSkettenis {
2198*11efff7fSkettenis yyn = yypact[yystate];
2199*11efff7fSkettenis if (yyn != YYPACT_NINF)
2200*11efff7fSkettenis {
2201*11efff7fSkettenis yyn += YYTERROR;
2202*11efff7fSkettenis if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
2203*11efff7fSkettenis {
2204*11efff7fSkettenis yyn = yytable[yyn];
2205*11efff7fSkettenis if (0 < yyn)
2206*11efff7fSkettenis break;
2207*11efff7fSkettenis }
2208*11efff7fSkettenis }
2209*11efff7fSkettenis
2210*11efff7fSkettenis /* Pop the current state because it cannot handle the error token. */
2211b725ae77Skettenis if (yyssp == yyss)
2212b725ae77Skettenis YYABORT;
2213b725ae77Skettenis
2214*11efff7fSkettenis YYDSYMPRINTF ("Error: popping", yystos[*yyssp], yyvsp, yylsp);
2215*11efff7fSkettenis yydestruct (yystos[yystate], yyvsp);
2216*11efff7fSkettenis YYPOPSTACK;
2217*11efff7fSkettenis yystate = *yyssp;
2218*11efff7fSkettenis YY_STACK_PRINT (yyss, yyssp);
2219b725ae77Skettenis }
2220b725ae77Skettenis
2221b725ae77Skettenis if (yyn == YYFINAL)
2222b725ae77Skettenis YYACCEPT;
2223b725ae77Skettenis
2224b725ae77Skettenis YYDPRINTF ((stderr, "Shifting error token, "));
2225b725ae77Skettenis
2226b725ae77Skettenis *++yyvsp = yylval;
2227*11efff7fSkettenis
2228b725ae77Skettenis
2229b725ae77Skettenis yystate = yyn;
2230b725ae77Skettenis goto yynewstate;
2231b725ae77Skettenis
2232b725ae77Skettenis
2233b725ae77Skettenis /*-------------------------------------.
2234b725ae77Skettenis | yyacceptlab -- YYACCEPT comes here. |
2235b725ae77Skettenis `-------------------------------------*/
2236b725ae77Skettenis yyacceptlab:
2237b725ae77Skettenis yyresult = 0;
2238b725ae77Skettenis goto yyreturn;
2239b725ae77Skettenis
2240b725ae77Skettenis /*-----------------------------------.
2241b725ae77Skettenis | yyabortlab -- YYABORT comes here. |
2242b725ae77Skettenis `-----------------------------------*/
2243b725ae77Skettenis yyabortlab:
2244b725ae77Skettenis yyresult = 1;
2245b725ae77Skettenis goto yyreturn;
2246b725ae77Skettenis
2247*11efff7fSkettenis #ifndef yyoverflow
2248*11efff7fSkettenis /*----------------------------------------------.
2249*11efff7fSkettenis | yyoverflowlab -- parser overflow comes here. |
2250*11efff7fSkettenis `----------------------------------------------*/
2251b725ae77Skettenis yyoverflowlab:
2252b725ae77Skettenis yyerror ("parser stack overflow");
2253b725ae77Skettenis yyresult = 2;
2254b725ae77Skettenis /* Fall through. */
2255*11efff7fSkettenis #endif
2256b725ae77Skettenis
2257b725ae77Skettenis yyreturn:
2258b725ae77Skettenis #ifndef yyoverflow
2259b725ae77Skettenis if (yyss != yyssa)
2260b725ae77Skettenis YYSTACK_FREE (yyss);
2261b725ae77Skettenis #endif
2262b725ae77Skettenis return yyresult;
2263b725ae77Skettenis }
2264*11efff7fSkettenis
2265*11efff7fSkettenis
2266*11efff7fSkettenis #line 581 "ada-exp.y"
2267b725ae77Skettenis
2268b725ae77Skettenis
2269b725ae77Skettenis /* yylex defined in ada-lex.c: Reads one token, getting characters */
2270b725ae77Skettenis /* through lexptr. */
2271b725ae77Skettenis
2272b725ae77Skettenis /* Remap normal flex interface names (yylex) as well as gratuitiously */
2273b725ae77Skettenis /* global symbol names, so we can have multiple flex-generated parsers */
2274b725ae77Skettenis /* in gdb. */
2275b725ae77Skettenis
2276b725ae77Skettenis /* (See note above on previous definitions for YACC.) */
2277b725ae77Skettenis
2278b725ae77Skettenis #define yy_create_buffer ada_yy_create_buffer
2279b725ae77Skettenis #define yy_delete_buffer ada_yy_delete_buffer
2280b725ae77Skettenis #define yy_init_buffer ada_yy_init_buffer
2281b725ae77Skettenis #define yy_load_buffer_state ada_yy_load_buffer_state
2282b725ae77Skettenis #define yy_switch_to_buffer ada_yy_switch_to_buffer
2283b725ae77Skettenis #define yyrestart ada_yyrestart
2284b725ae77Skettenis #define yytext ada_yytext
2285b725ae77Skettenis #define yywrap ada_yywrap
2286b725ae77Skettenis
2287*11efff7fSkettenis static struct obstack temp_parse_space;
2288*11efff7fSkettenis
2289b725ae77Skettenis /* The following kludge was found necessary to prevent conflicts between */
2290b725ae77Skettenis /* defs.h and non-standard stdlib.h files. */
2291b725ae77Skettenis #define qsort __qsort__dummy
2292b725ae77Skettenis #include "ada-lex.c"
2293b725ae77Skettenis
2294b725ae77Skettenis int
ada_parse(void)2295*11efff7fSkettenis ada_parse (void)
2296b725ae77Skettenis {
2297b725ae77Skettenis lexer_init (yyin); /* (Re-)initialize lexer. */
2298b725ae77Skettenis left_block_context = NULL;
2299b725ae77Skettenis type_qualifier = NULL;
2300*11efff7fSkettenis obstack_free (&temp_parse_space, NULL);
2301*11efff7fSkettenis obstack_init (&temp_parse_space);
2302b725ae77Skettenis
2303b725ae77Skettenis return _ada_parse ();
2304b725ae77Skettenis }
2305b725ae77Skettenis
2306b725ae77Skettenis void
yyerror(char * msg)2307*11efff7fSkettenis yyerror (char *msg)
2308b725ae77Skettenis {
2309b725ae77Skettenis error ("A %s in expression, near `%s'.", (msg ? msg : "error"), lexptr);
2310b725ae77Skettenis }
2311b725ae77Skettenis
2312b725ae77Skettenis /* The operator name corresponding to operator symbol STRING (adds
2313b725ae77Skettenis quotes and maps to lower-case). Destroys the previous contents of
2314b725ae77Skettenis the array pointed to by STRING.ptr. Error if STRING does not match
2315b725ae77Skettenis a valid Ada operator. Assumes that STRING.ptr points to a
2316b725ae77Skettenis null-terminated string and that, if STRING is a valid operator
2317b725ae77Skettenis symbol, the array pointed to by STRING.ptr contains at least
2318b725ae77Skettenis STRING.length+3 characters. */
2319b725ae77Skettenis
2320b725ae77Skettenis static struct stoken
string_to_operator(struct stoken string)2321*11efff7fSkettenis string_to_operator (struct stoken string)
2322b725ae77Skettenis {
2323b725ae77Skettenis int i;
2324b725ae77Skettenis
2325*11efff7fSkettenis for (i = 0; ada_opname_table[i].encoded != NULL; i += 1)
2326b725ae77Skettenis {
2327*11efff7fSkettenis if (string.length == strlen (ada_opname_table[i].decoded)-2
2328*11efff7fSkettenis && strncasecmp (string.ptr, ada_opname_table[i].decoded+1,
2329b725ae77Skettenis string.length) == 0)
2330b725ae77Skettenis {
2331*11efff7fSkettenis strncpy (string.ptr, ada_opname_table[i].decoded,
2332b725ae77Skettenis string.length+2);
2333b725ae77Skettenis string.length += 2;
2334b725ae77Skettenis return string;
2335b725ae77Skettenis }
2336b725ae77Skettenis }
2337b725ae77Skettenis error ("Invalid operator symbol `%s'", string.ptr);
2338b725ae77Skettenis }
2339b725ae77Skettenis
2340b725ae77Skettenis /* Emit expression to access an instance of SYM, in block BLOCK (if
2341b725ae77Skettenis * non-NULL), and with :: qualification ORIG_LEFT_CONTEXT. */
2342b725ae77Skettenis static void
write_var_from_sym(struct block * orig_left_context,struct block * block,struct symbol * sym)2343*11efff7fSkettenis write_var_from_sym (struct block *orig_left_context,
2344*11efff7fSkettenis struct block *block,
2345*11efff7fSkettenis struct symbol *sym)
2346b725ae77Skettenis {
2347b725ae77Skettenis if (orig_left_context == NULL && symbol_read_needs_frame (sym))
2348b725ae77Skettenis {
2349*11efff7fSkettenis if (innermost_block == 0
2350*11efff7fSkettenis || contained_in (block, innermost_block))
2351b725ae77Skettenis innermost_block = block;
2352b725ae77Skettenis }
2353b725ae77Skettenis
2354b725ae77Skettenis write_exp_elt_opcode (OP_VAR_VALUE);
2355*11efff7fSkettenis write_exp_elt_block (block);
2356b725ae77Skettenis write_exp_elt_sym (sym);
2357b725ae77Skettenis write_exp_elt_opcode (OP_VAR_VALUE);
2358b725ae77Skettenis }
2359b725ae77Skettenis
2360*11efff7fSkettenis /* Emit expression to access an instance of NAME in :: context
2361*11efff7fSkettenis * ORIG_LEFT_CONTEXT. If no unique symbol for NAME has been found,
2362*11efff7fSkettenis * output a dummy symbol (good to the next call of ada_parse) for NAME
2363*11efff7fSkettenis * in the UNDEF_DOMAIN, for later resolution by ada_resolve. */
2364b725ae77Skettenis static void
write_var_from_name(struct block * orig_left_context,struct name_info name)2365*11efff7fSkettenis write_var_from_name (struct block *orig_left_context,
2366*11efff7fSkettenis struct name_info name)
2367b725ae77Skettenis {
2368b725ae77Skettenis if (name.msym != NULL)
2369b725ae77Skettenis {
2370b725ae77Skettenis write_exp_msymbol (name.msym,
2371*11efff7fSkettenis lookup_function_type (type_int ()),
2372*11efff7fSkettenis type_int ());
2373b725ae77Skettenis }
2374b725ae77Skettenis else if (name.sym == NULL)
2375b725ae77Skettenis {
2376b725ae77Skettenis /* Multiple matches: record name and starting block for later
2377b725ae77Skettenis resolution by ada_resolve. */
2378*11efff7fSkettenis char *encoded_name = ada_encode (name.stoken.ptr);
2379*11efff7fSkettenis struct symbol *sym =
2380*11efff7fSkettenis obstack_alloc (&temp_parse_space, sizeof (struct symbol));
2381*11efff7fSkettenis memset (sym, 0, sizeof (struct symbol));
2382*11efff7fSkettenis SYMBOL_DOMAIN (sym) = UNDEF_DOMAIN;
2383*11efff7fSkettenis SYMBOL_LINKAGE_NAME (sym)
2384*11efff7fSkettenis = obsavestring (encoded_name, strlen (encoded_name), &temp_parse_space);
2385*11efff7fSkettenis SYMBOL_LANGUAGE (sym) = language_ada;
2386*11efff7fSkettenis
2387*11efff7fSkettenis write_exp_elt_opcode (OP_VAR_VALUE);
2388b725ae77Skettenis write_exp_elt_block (name.block);
2389*11efff7fSkettenis write_exp_elt_sym (sym);
2390*11efff7fSkettenis write_exp_elt_opcode (OP_VAR_VALUE);
2391b725ae77Skettenis }
2392b725ae77Skettenis else
2393b725ae77Skettenis write_var_from_sym (orig_left_context, name.block, name.sym);
2394b725ae77Skettenis }
2395b725ae77Skettenis
2396*11efff7fSkettenis /* Write integer constant ARG of type TYPE. */
2397b725ae77Skettenis
2398b725ae77Skettenis static void
write_int(LONGEST arg,struct type * type)2399*11efff7fSkettenis write_int (LONGEST arg, struct type *type)
2400b725ae77Skettenis {
2401b725ae77Skettenis write_exp_elt_opcode (OP_LONG);
2402*11efff7fSkettenis write_exp_elt_type (type);
2403b725ae77Skettenis write_exp_elt_longcst (arg);
2404b725ae77Skettenis write_exp_elt_opcode (OP_LONG);
2405b725ae77Skettenis }
2406b725ae77Skettenis
2407b725ae77Skettenis /* Emit expression corresponding to the renamed object designated by
2408b725ae77Skettenis * the type RENAMING, which must be the referent of an object renaming
2409*11efff7fSkettenis * type, in the context of ORIG_LEFT_CONTEXT. MAX_DEPTH is the maximum
2410*11efff7fSkettenis * number of cascaded renamings to allow. */
2411b725ae77Skettenis static void
write_object_renaming(struct block * orig_left_context,struct symbol * renaming,int max_depth)2412*11efff7fSkettenis write_object_renaming (struct block *orig_left_context,
2413*11efff7fSkettenis struct symbol *renaming, int max_depth)
2414b725ae77Skettenis {
2415*11efff7fSkettenis const char *qualification = SYMBOL_LINKAGE_NAME (renaming);
2416b725ae77Skettenis const char *simple_tail;
2417b725ae77Skettenis const char *expr = TYPE_FIELD_NAME (SYMBOL_TYPE (renaming), 0);
2418b725ae77Skettenis const char *suffix;
2419b725ae77Skettenis char *name;
2420b725ae77Skettenis struct symbol *sym;
2421b725ae77Skettenis enum { SIMPLE_INDEX, LOWER_BOUND, UPPER_BOUND } slice_state;
2422b725ae77Skettenis
2423*11efff7fSkettenis if (max_depth <= 0)
2424*11efff7fSkettenis error ("Could not find renamed symbol");
2425*11efff7fSkettenis
2426b725ae77Skettenis /* if orig_left_context is null, then use the currently selected
2427*11efff7fSkettenis block; otherwise we might fail our symbol lookup below. */
2428b725ae77Skettenis if (orig_left_context == NULL)
2429b725ae77Skettenis orig_left_context = get_selected_block (NULL);
2430b725ae77Skettenis
2431b725ae77Skettenis for (simple_tail = qualification + strlen (qualification);
2432b725ae77Skettenis simple_tail != qualification; simple_tail -= 1)
2433b725ae77Skettenis {
2434b725ae77Skettenis if (*simple_tail == '.')
2435b725ae77Skettenis {
2436b725ae77Skettenis simple_tail += 1;
2437b725ae77Skettenis break;
2438b725ae77Skettenis }
2439*11efff7fSkettenis else if (strncmp (simple_tail, "__", 2) == 0)
2440b725ae77Skettenis {
2441b725ae77Skettenis simple_tail += 2;
2442b725ae77Skettenis break;
2443b725ae77Skettenis }
2444b725ae77Skettenis }
2445b725ae77Skettenis
2446b725ae77Skettenis suffix = strstr (expr, "___XE");
2447b725ae77Skettenis if (suffix == NULL)
2448b725ae77Skettenis goto BadEncoding;
2449b725ae77Skettenis
2450*11efff7fSkettenis name = (char *) obstack_alloc (&temp_parse_space, suffix - expr + 1);
2451b725ae77Skettenis strncpy (name, expr, suffix-expr);
2452b725ae77Skettenis name[suffix-expr] = '\000';
2453b725ae77Skettenis sym = lookup_symbol (name, orig_left_context, VAR_DOMAIN, 0, NULL);
2454*11efff7fSkettenis if (sym == NULL)
2455*11efff7fSkettenis error ("Could not find renamed variable: %s", ada_decode (name));
2456*11efff7fSkettenis if (ada_is_object_renaming (sym))
2457*11efff7fSkettenis write_object_renaming (orig_left_context, sym, max_depth-1);
2458*11efff7fSkettenis else
2459b725ae77Skettenis write_var_from_sym (orig_left_context, block_found, sym);
2460b725ae77Skettenis
2461b725ae77Skettenis suffix += 5;
2462b725ae77Skettenis slice_state = SIMPLE_INDEX;
2463b725ae77Skettenis while (*suffix == 'X')
2464b725ae77Skettenis {
2465b725ae77Skettenis suffix += 1;
2466b725ae77Skettenis
2467b725ae77Skettenis switch (*suffix) {
2468*11efff7fSkettenis case 'A':
2469*11efff7fSkettenis suffix += 1;
2470*11efff7fSkettenis write_exp_elt_opcode (UNOP_IND);
2471*11efff7fSkettenis break;
2472b725ae77Skettenis case 'L':
2473b725ae77Skettenis slice_state = LOWER_BOUND;
2474b725ae77Skettenis case 'S':
2475b725ae77Skettenis suffix += 1;
2476b725ae77Skettenis if (isdigit (*suffix))
2477b725ae77Skettenis {
2478b725ae77Skettenis char *next;
2479b725ae77Skettenis long val = strtol (suffix, &next, 10);
2480b725ae77Skettenis if (next == suffix)
2481b725ae77Skettenis goto BadEncoding;
2482b725ae77Skettenis suffix = next;
2483b725ae77Skettenis write_exp_elt_opcode (OP_LONG);
2484*11efff7fSkettenis write_exp_elt_type (type_int ());
2485b725ae77Skettenis write_exp_elt_longcst ((LONGEST) val);
2486b725ae77Skettenis write_exp_elt_opcode (OP_LONG);
2487b725ae77Skettenis }
2488b725ae77Skettenis else
2489b725ae77Skettenis {
2490b725ae77Skettenis const char *end;
2491b725ae77Skettenis char *index_name;
2492b725ae77Skettenis int index_len;
2493b725ae77Skettenis struct symbol *index_sym;
2494b725ae77Skettenis
2495b725ae77Skettenis end = strchr (suffix, 'X');
2496b725ae77Skettenis if (end == NULL)
2497b725ae77Skettenis end = suffix + strlen (suffix);
2498b725ae77Skettenis
2499b725ae77Skettenis index_len = simple_tail - qualification + 2 + (suffix - end) + 1;
2500*11efff7fSkettenis index_name
2501*11efff7fSkettenis = (char *) obstack_alloc (&temp_parse_space, index_len);
2502b725ae77Skettenis memset (index_name, '\000', index_len);
2503b725ae77Skettenis strncpy (index_name, qualification, simple_tail - qualification);
2504b725ae77Skettenis index_name[simple_tail - qualification] = '\000';
2505b725ae77Skettenis strncat (index_name, suffix, suffix-end);
2506b725ae77Skettenis suffix = end;
2507b725ae77Skettenis
2508b725ae77Skettenis index_sym =
2509b725ae77Skettenis lookup_symbol (index_name, NULL, VAR_DOMAIN, 0, NULL);
2510b725ae77Skettenis if (index_sym == NULL)
2511b725ae77Skettenis error ("Could not find %s", index_name);
2512b725ae77Skettenis write_var_from_sym (NULL, block_found, sym);
2513b725ae77Skettenis }
2514b725ae77Skettenis if (slice_state == SIMPLE_INDEX)
2515b725ae77Skettenis {
2516b725ae77Skettenis write_exp_elt_opcode (OP_FUNCALL);
2517b725ae77Skettenis write_exp_elt_longcst ((LONGEST) 1);
2518b725ae77Skettenis write_exp_elt_opcode (OP_FUNCALL);
2519b725ae77Skettenis }
2520b725ae77Skettenis else if (slice_state == LOWER_BOUND)
2521b725ae77Skettenis slice_state = UPPER_BOUND;
2522b725ae77Skettenis else if (slice_state == UPPER_BOUND)
2523b725ae77Skettenis {
2524b725ae77Skettenis write_exp_elt_opcode (TERNOP_SLICE);
2525b725ae77Skettenis slice_state = SIMPLE_INDEX;
2526b725ae77Skettenis }
2527b725ae77Skettenis break;
2528b725ae77Skettenis
2529b725ae77Skettenis case 'R':
2530b725ae77Skettenis {
2531b725ae77Skettenis struct stoken field_name;
2532b725ae77Skettenis const char *end;
2533b725ae77Skettenis suffix += 1;
2534b725ae77Skettenis
2535b725ae77Skettenis if (slice_state != SIMPLE_INDEX)
2536b725ae77Skettenis goto BadEncoding;
2537b725ae77Skettenis end = strchr (suffix, 'X');
2538b725ae77Skettenis if (end == NULL)
2539b725ae77Skettenis end = suffix + strlen (suffix);
2540b725ae77Skettenis field_name.length = end - suffix;
2541*11efff7fSkettenis field_name.ptr = xmalloc (end - suffix + 1);
2542b725ae77Skettenis strncpy (field_name.ptr, suffix, end - suffix);
2543b725ae77Skettenis field_name.ptr[end - suffix] = '\000';
2544b725ae77Skettenis suffix = end;
2545b725ae77Skettenis write_exp_elt_opcode (STRUCTOP_STRUCT);
2546b725ae77Skettenis write_exp_string (field_name);
2547b725ae77Skettenis write_exp_elt_opcode (STRUCTOP_STRUCT);
2548b725ae77Skettenis break;
2549b725ae77Skettenis }
2550b725ae77Skettenis
2551b725ae77Skettenis default:
2552b725ae77Skettenis goto BadEncoding;
2553b725ae77Skettenis }
2554b725ae77Skettenis }
2555b725ae77Skettenis if (slice_state == SIMPLE_INDEX)
2556b725ae77Skettenis return;
2557b725ae77Skettenis
2558b725ae77Skettenis BadEncoding:
2559b725ae77Skettenis error ("Internal error in encoding of renaming declaration: %s",
2560*11efff7fSkettenis SYMBOL_LINKAGE_NAME (renaming));
2561b725ae77Skettenis }
2562b725ae77Skettenis
2563b725ae77Skettenis /* Convert the character literal whose ASCII value would be VAL to the
2564b725ae77Skettenis appropriate value of type TYPE, if there is a translation.
2565b725ae77Skettenis Otherwise return VAL. Hence, in an enumeration type ('A', 'B'),
2566b725ae77Skettenis the literal 'A' (VAL == 65), returns 0. */
2567b725ae77Skettenis static LONGEST
convert_char_literal(struct type * type,LONGEST val)2568b725ae77Skettenis convert_char_literal (struct type *type, LONGEST val)
2569b725ae77Skettenis {
2570b725ae77Skettenis char name[7];
2571b725ae77Skettenis int f;
2572b725ae77Skettenis
2573b725ae77Skettenis if (type == NULL || TYPE_CODE (type) != TYPE_CODE_ENUM)
2574b725ae77Skettenis return val;
2575b725ae77Skettenis sprintf (name, "QU%02x", (int) val);
2576b725ae77Skettenis for (f = 0; f < TYPE_NFIELDS (type); f += 1)
2577b725ae77Skettenis {
2578*11efff7fSkettenis if (strcmp (name, TYPE_FIELD_NAME (type, f)) == 0)
2579b725ae77Skettenis return TYPE_FIELD_BITPOS (type, f);
2580b725ae77Skettenis }
2581b725ae77Skettenis return val;
2582b725ae77Skettenis }
2583*11efff7fSkettenis
2584*11efff7fSkettenis static struct type *
type_int(void)2585*11efff7fSkettenis type_int (void)
2586*11efff7fSkettenis {
2587*11efff7fSkettenis return builtin_type (current_gdbarch)->builtin_int;
2588*11efff7fSkettenis }
2589*11efff7fSkettenis
2590*11efff7fSkettenis static struct type *
type_long(void)2591*11efff7fSkettenis type_long (void)
2592*11efff7fSkettenis {
2593*11efff7fSkettenis return builtin_type (current_gdbarch)->builtin_long;
2594*11efff7fSkettenis }
2595*11efff7fSkettenis
2596*11efff7fSkettenis static struct type *
type_long_long(void)2597*11efff7fSkettenis type_long_long (void)
2598*11efff7fSkettenis {
2599*11efff7fSkettenis return builtin_type (current_gdbarch)->builtin_long_long;
2600*11efff7fSkettenis }
2601*11efff7fSkettenis
2602*11efff7fSkettenis static struct type *
type_float(void)2603*11efff7fSkettenis type_float (void)
2604*11efff7fSkettenis {
2605*11efff7fSkettenis return builtin_type (current_gdbarch)->builtin_float;
2606*11efff7fSkettenis }
2607*11efff7fSkettenis
2608*11efff7fSkettenis static struct type *
type_double(void)2609*11efff7fSkettenis type_double (void)
2610*11efff7fSkettenis {
2611*11efff7fSkettenis return builtin_type (current_gdbarch)->builtin_double;
2612*11efff7fSkettenis }
2613*11efff7fSkettenis
2614*11efff7fSkettenis static struct type *
type_long_double(void)2615*11efff7fSkettenis type_long_double (void)
2616*11efff7fSkettenis {
2617*11efff7fSkettenis return builtin_type (current_gdbarch)->builtin_long_double;
2618*11efff7fSkettenis }
2619*11efff7fSkettenis
2620*11efff7fSkettenis static struct type *
type_char(void)2621*11efff7fSkettenis type_char (void)
2622*11efff7fSkettenis {
2623*11efff7fSkettenis return language_string_char_type (current_language, current_gdbarch);
2624*11efff7fSkettenis }
2625*11efff7fSkettenis
2626*11efff7fSkettenis static struct type *
type_system_address(void)2627*11efff7fSkettenis type_system_address (void)
2628*11efff7fSkettenis {
2629*11efff7fSkettenis struct type *type
2630*11efff7fSkettenis = language_lookup_primitive_type_by_name (current_language,
2631*11efff7fSkettenis current_gdbarch,
2632*11efff7fSkettenis "system__address");
2633*11efff7fSkettenis return type != NULL ? type : lookup_pointer_type (builtin_type_void);
2634*11efff7fSkettenis }
2635*11efff7fSkettenis
2636*11efff7fSkettenis void
_initialize_ada_exp(void)2637*11efff7fSkettenis _initialize_ada_exp (void)
2638*11efff7fSkettenis {
2639*11efff7fSkettenis obstack_init (&temp_parse_space);
2640*11efff7fSkettenis }
2641*11efff7fSkettenis
2642*11efff7fSkettenis /* FIXME: hilfingr/2004-10-05: Hack to remove warning. The function
2643*11efff7fSkettenis string_to_operator is supposed to be used for cases where one
2644*11efff7fSkettenis calls an operator function with prefix notation, as in
2645*11efff7fSkettenis "+" (a, b), but at some point, this code seems to have gone
2646*11efff7fSkettenis missing. */
2647*11efff7fSkettenis
2648*11efff7fSkettenis struct stoken (*dummy_string_to_ada_operator) (struct stoken)
2649*11efff7fSkettenis = string_to_operator;
2650*11efff7fSkettenis
2651*11efff7fSkettenis
2652*11efff7fSkettenis
2653