Bug Summary

File:src/gnu/usr.bin/binutils/obj/gdb/c-exp.c
Warning:line 1240, column 7
Array access (from variable 'p') results in a null pointer dereference

Annotated Source Code

Press '?' to see keyboard shortcuts

clang -cc1 -cc1 -triple amd64-unknown-openbsd7.0 -analyze -disable-free -disable-llvm-verifier -discard-value-names -main-file-name c-exp.c -analyzer-store=region -analyzer-opt-analyze-nested-blocks -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model pic -pic-level 1 -pic-is-pie -mframe-pointer=all -relaxed-aliasing -fno-rounding-math -mconstructor-aliases -munwind-tables -target-cpu x86-64 -target-feature +retpoline-indirect-calls -target-feature +retpoline-indirect-branches -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/usr/src/gnu/usr.bin/binutils/obj/gdb -resource-dir /usr/local/lib/clang/13.0.0 -D PIE_DEFAULT=1 -I . -I /usr/src/gnu/usr.bin/binutils/gdb -I /usr/src/gnu/usr.bin/binutils/gdb/config -D LOCALEDIR="/usr/share/locale" -D HAVE_CONFIG_H -I /usr/src/gnu/usr.bin/binutils/gdb/../include/opcode -I ../bfd -I /usr/src/gnu/usr.bin/binutils/gdb/../bfd -I /usr/src/gnu/usr.bin/binutils/gdb/../include -I ../intl -I /usr/src/gnu/usr.bin/binutils/gdb/../intl -D MI_OUT=1 -D TUI=1 -internal-isystem /usr/local/lib/clang/13.0.0/include -internal-externc-isystem /usr/include -O2 -fdebug-compilation-dir=/usr/src/gnu/usr.bin/binutils/obj/gdb -ferror-limit 19 -fwrapv -D_RET_PROTECTOR -ret-protector -fgnuc-version=4.2.1 -fcommon -vectorize-loops -vectorize-slp -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-valloc -fno-builtin-free -fno-builtin-strdup -fno-builtin-strndup -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /home/ben/Projects/vmm/scan-build/2022-01-12-194120-40624-1 -x c c-exp.c
1#include <stdlib.h>
2#include <string.h>
3#define YYBYACC1 1
4#define YYMAJOR1 1
5#define YYMINOR9 9
6#define YYLEXc_lex() yylexc_lex()
7#define YYEMPTY-1 -1
8#define yyclearin(c_char=(-1)) (yycharc_char=(YYEMPTY-1))
9#define yyerrok(c_errflag=0) (yyerrflagc_errflag=0)
10#define YYRECOVERING()(c_errflag!=0) (yyerrflagc_errflag!=0)
11#define YYPREFIX"yy" "yy"
12#line 40 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
13
14#include "defs.h"
15#include "gdb_string.h"
16#include <ctype.h>
17#include "expression.h"
18#include "value.h"
19#include "parser-defs.h"
20#include "language.h"
21#include "c-lang.h"
22#include "bfd.h" /* Required by objfiles.h. */
23#include "symfile.h" /* Required by objfiles.h. */
24#include "objfiles.h" /* For have_full_symbols and have_partial_symbols */
25#include "charset.h"
26#include "block.h"
27#include "cp-support.h"
28
29/* Remap normal yacc parser interface names (yyparse, yylex, yyerror, etc),
30 as well as gratuitiously global symbol names, so we can have multiple
31 yacc generated parsers in gdb. Note that these are only the variables
32 produced by yacc. If other parser generators (bison, byacc, etc) produce
33 additional global names that conflict at link time, then those parser
34 generators need to be fixed instead of adding those names to this list. */
35
36#define yymaxdepthc_maxdepth c_maxdepth
37#define yyparsec_parse c_parse
38#define yylexc_lex c_lex
39#define yyerrorc_error c_error
40#define yylvalc_lval c_lval
41#define yycharc_char c_char
42#define yydebugc_debug c_debug
43#define yypactc_pact c_pact
44#define yyr1c_r1 c_r1
45#define yyr2c_r2 c_r2
46#define yydefc_def c_def
47#define yychkc_chk c_chk
48#define yypgoc_pgo c_pgo
49#define yyactc_act c_act
50#define yyexcac_exca c_exca
51#define yyerrflagc_errflag c_errflag
52#define yynerrsc_nerrs c_nerrs
53#define yypsc_ps c_ps
54#define yypvc_pv c_pv
55#define yysc_s c_s
56#define yy_yysc_yys c_yys
57#define yystatec_state c_state
58#define yytmpc_tmp c_tmp
59#define yyvc_v c_v
60#define yy_yyvc_yyv c_yyv
61#define yyvalc_val c_val
62#define yyllocc_lloc c_lloc
63#define yyredsc_reds c_reds /* With YYDEBUG defined */
64#define yytoksc_toks c_toks /* With YYDEBUG defined */
65#define yynamec_name c_name /* With YYDEBUG defined */
66#define yyrulec_rule c_rule /* With YYDEBUG defined */
67#define yylhsc_yylhs c_yylhs
68#define yylenc_yylen c_yylen
69#define yydefredc_yydefred c_yydefred
70#define yydgotoc_yydgoto c_yydgoto
71#define yysindexc_yysindex c_yysindex
72#define yyrindexc_yyrindex c_yyrindex
73#define yygindexc_yygindex c_yygindex
74#define yytablec_yytable c_yytable
75#define yycheckc_yycheck c_yycheck
76
77#ifndef YYDEBUG1
78#define YYDEBUG1 1 /* Default to yydebug support */
79#endif
80
81#define YYFPRINTFparser_fprintf parser_fprintf
82
83int yyparsec_parse (void);
84
85static int yylexc_lex (void);
86
87void yyerrorc_error (char *);
88
89#line 122 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
90#ifndef YYSTYPE_DEFINED
91#define YYSTYPE_DEFINED
92typedef union
93 {
94 LONGESTlong lval;
95 struct {
96 LONGESTlong val;
97 struct type *type;
98 } typed_val_int;
99 struct {
100 DOUBLEST dval;
101 struct type *type;
102 } typed_val_float;
103 struct symbol *sym;
104 struct type *tval;
105 struct stoken sval;
106 struct ttype tsym;
107 struct symtoken ssym;
108 int voidval;
109 struct block *bval;
110 enum exp_opcode opcode;
111 struct internalvar *ivar;
112
113 struct type **tvec;
114 int *ivec;
115 } YYSTYPE;
116#endif /* YYSTYPE_DEFINED */
117#line 148 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
118/* YYSTYPE gets defined by %union */
119static int parse_number (char *, int, int, YYSTYPE *);
120#define INT257 257
121#define FLOAT258 258
122#define STRING259 259
123#define NAME260 260
124#define TYPENAME261 261
125#define NAME_OR_INT262 262
126#define STRUCT263 263
127#define CLASS264 264
128#define UNION265 265
129#define ENUM266 266
130#define SIZEOF267 267
131#define UNSIGNED268 268
132#define COLONCOLON269 269
133#define TEMPLATE270 270
134#define ERROR271 271
135#define SIGNED_KEYWORD272 272
136#define LONG273 273
137#define SHORT274 274
138#define INT_KEYWORD275 275
139#define CONST_KEYWORD276 276
140#define VOLATILE_KEYWORD277 277
141#define DOUBLE_KEYWORD278 278
142#define VARIABLE279 279
143#define ASSIGN_MODIFY280 280
144#define TRUEKEYWORD281 281
145#define FALSEKEYWORD282 282
146#define ABOVE_COMMA283 283
147#define OROR284 284
148#define ANDAND285 285
149#define EQUAL286 286
150#define NOTEQUAL287 287
151#define LEQ288 288
152#define GEQ289 289
153#define LSH290 290
154#define RSH291 291
155#define UNARY292 292
156#define INCREMENT293 293
157#define DECREMENT294 294
158#define ARROW295 295
159#define BLOCKNAME296 296
160#define FILENAME297 297
161#define YYERRCODE256 256
162const short yylhsc_yylhs[] =
163 { -1,
164 0, 0, 3, 2, 2, 1, 1, 1, 1, 1,
165 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
166 1, 1, 22, 1, 6, 21, 21, 21, 7, 1,
167 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
168 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
169 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
170 1, 1, 1, 1, 20, 20, 20, 4, 5, 5,
171 4, 4, 4, 23, 24, 24, 26, 27, 27, 28,
172 28, 14, 14, 14, 14, 14, 13, 13, 13, 13,
173 13, 16, 16, 12, 12, 8, 8, 9, 9, 9,
174 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
175 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
176 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
177 9, 9, 9, 9, 9, 9, 9, 9, 10, 19,
178 19, 19, 19, 11, 11, 15, 15, 29, 29, 25,
179 25, 25, 17, 17, 17, 17, 18, 18,
180};
181const short yylenc_yylen[] =
182 { 2,
183 1, 1, 1, 1, 3, 2, 2, 2, 2, 2,
184 2, 2, 2, 2, 2, 3, 3, 4, 3, 3,
185 4, 4, 0, 5, 1, 0, 1, 3, 1, 3,
186 4, 4, 3, 3, 3, 3, 3, 3, 3, 3,
187 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
188 3, 3, 5, 3, 3, 1, 1, 1, 1, 1,
189 4, 1, 1, 1, 1, 1, 3, 3, 3, 4,
190 1, 2, 1, 2, 1, 0, 3, 1, 1, 1,
191 0, 1, 2, 1, 2, 1, 3, 2, 1, 2,
192 1, 2, 3, 2, 3, 1, 3, 1, 1, 1,
193 1, 2, 3, 2, 3, 3, 3, 2, 2, 3,
194 4, 3, 3, 4, 3, 4, 3, 4, 2, 3,
195 2, 3, 2, 3, 1, 2, 2, 2, 2, 2,
196 2, 1, 2, 1, 5, 2, 2, 1, 3, 1,
197 1, 1, 1, 1, 3, 1, 4, 2, 2, 1,
198 1, 1, 1, 1, 1, 1, 1, 1,
199};
200const short yydefredc_yydefred[] =
201 { 0,
202 56, 58, 62, 157, 98, 57, 0, 0, 0, 0,
203 0, 0, 0, 0, 0, 0, 0, 99, 0, 0,
204 125, 60, 63, 64, 0, 0, 0, 0, 0, 0,
205 0, 66, 0, 0, 25, 0, 0, 0, 2, 59,
206 71, 0, 3, 0, 138, 0, 73, 0, 0, 0,
207 78, 0, 150, 153, 155, 156, 154, 127, 128, 129,
208 130, 0, 0, 0, 140, 0, 0, 141, 131, 72,
209 0, 0, 143, 133, 0, 0, 0, 102, 126, 0,
210 0, 119, 148, 149, 0, 0, 0, 0, 0, 0,
211 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
212 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
213 0, 0, 0, 0, 0, 13, 14, 0, 0, 0,
214 23, 0, 0, 0, 0, 0, 137, 80, 0, 0,
215 0, 0, 0, 0, 0, 0, 106, 122, 0, 0,
216 105, 107, 103, 0, 0, 110, 124, 120, 33, 0,
217 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
218 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
219 0, 0, 0, 0, 17, 16, 0, 20, 19, 0,
220 0, 0, 29, 0, 0, 30, 97, 0, 0, 0,
221 0, 0, 0, 91, 0, 0, 89, 0, 74, 77,
222 75, 0, 0, 116, 0, 0, 114, 118, 111, 0,
223 0, 0, 0, 22, 0, 0, 0, 70, 85, 83,
224 0, 92, 94, 144, 0, 0, 0, 90, 88, 147,
225 139, 135, 0, 0, 24, 93, 0, 95, 87, 145,
226};
227const short yydgotoc_yydgoto[] =
228 { 36,
229 37, 90, 39, 40, 41, 42, 184, 224, 64, 45,
230 225, 194, 195, 196, 46, 197, 189, 47, 69, 48,
231 125, 181, 132, 49, 50, 51, 52, 129, 53,
232};
233const short yysindexc_yysindex[] =
234 { 2243,
235 0, 0, 0, 0, 0, 0, 5, 5, 5, 5,
236 2288, -224, 5, 5, -146, -255, 69, 0, -266, -242,
237 0, 0, 0, 0, 2243, 2243, 2243, 2243, 2243, 2243,
238 0, 0, 2243, 2243, 0, 0, 2626, 22, 0, 0,
239 0, 2243, 0, 74, 0, -164, 0, -181, 26, 0,
240 0, 1654, 0, 0, 0, 0, 0, 0, 0, 0,
241 0, 2243, 28, 90, 0, -254, -178, 0, 0, 0,
242 48, -249, 0, 0, -165, -145, 131, 0, 0, -122,
243 -117, 0, 0, 0, 28, 28, 28, 28, 28, 77,
244 127, 28, 28, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
245 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243, 2243,
246 2243, 2243, 2243, 2243, 2243, 0, 0, 2084, 2663, 2243,
247 0, 2243, 2626, 52, -29, -20, 0, 0, 270, 5,
248 -53, -164, 101, 168, -74, -63, 0, 0, 1654, -61,
249 0, 0, 0, -58, -54, 0, 0, 0, 0, 2243,
250 2626, 2626, 2591, 2689, 2700, 2728, 2761, 2796, 568, 568,
251 -37, -37, -37, -37, 173, 173, 374, 671, 671, 28,
252 28, 28, 0, 2243, 0, 0, 2243, 0, 0, -40,
253 2243, 2626, 0, 2243, 2243, 0, 0, 5, 0, 155,
254 -15, -91, 977, 0, -12, -164, 0, 0, 0, 0,
255 0, 5, 2330, 0, 166, 132, 0, 0, 0, 28,
256 2243, 28, 28, 0, 129, 28, 2626, 0, 0, 0,
257 141, 0, 0, 0, 162, 197, 2735, 0, 0, 0,
258 0, 0, -35, 2661, 0, 0, 1654, 0, 0, 0,};
259const short yyrindexc_yyrindex[] =
260 { 181,
261 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
262 181, 29, 0, 0, 545, 1852, 1991, 0, 1752, 1800,
263 0, 0, 0, 0, 181, 181, 181, 181, 181, 181,
264 99, 0, 181, 181, 0, 0, 14, 259, 0, 0,
265 0, -8, 0, 881, 0, 1859, 0, 0, 0, 1733,
266 0, 181, 0, 0, 0, 0, 0, 0, 0, 0,
267 0, 181, 400, 181, 0, 2043, 2060, 0, 0, 0,
268 0, 2043, 0, 0, 2095, 2112, 2125, 0, 0, 2140,
269 2155, 0, 0, 0, 412, 440, 510, 580, 695, 0,
270 0, 723, 791, 181, 181, 181, 181, 181, 181, 181,
271 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
272 181, 181, 181, 181, 181, 0, 0, 181, 181, 181,
273 0, 181, -11, 0, 0, 0, 0, 0, 0, 0,
274 0, 1845, 2252, 0, 0, 2170, 0, 0, 181, 2183,
275 0, 0, 0, 2200, 2213, 0, 0, 0, 0, 181,
276 31, 150, 0, 239, 211, 1370, 1257, 1705, 111, 1687,
277 1452, 1548, 1585, 1660, 1379, 1406, 1284, 1269, 1311, 845,
278 899, 990, 1, 181, 0, 0, 181, 0, 0, 0,
279 107, 16, 0, 181, 181, 0, 0, 0, 40, 1488,
280 619, 0, 181, 0, 891, 3031, 0, 138, 0, 0,
281 0, 0, 311, 0, 0, 836, 0, 0, 0, 1002,
282 181, 1100, 1112, 0, 0, 1171, -9, 0, 0, 0,
283 0, 0, 0, 0, 0, 0, 181, 0, 0, 0,
284 0, 0, 0, 189, 0, 0, 181, 0, 0, 0,};
285const short yygindexc_yygindex[] =
286 { 0,
287 3032, 12, 0, 0, 4, 0, 135, 105, 514, 0,
288 0, 73, 0, 58, 0, 76, 1514, 0, 258, 0,
289 98, 0, 0, 152, 161, 0, 301, 103, 0,
290};
291#define YYTABLESIZE3243 3243
292const short yytablec_yytable[] =
293 { 115,
294 155, 222, 121, 122, 113, 111, 187, 112, 119, 114,
295 83, 38, 75, 4, 185, 5, 76, 77, 136, 78,
296 137, 187, 79, 140, 193, 141, 110, 227, 132, 27,
297 55, 28, 27, 84, 28, 26, 65, 155, 155, 69,
298 155, 155, 155, 155, 155, 155, 155, 155, 66, 67,
299 68, 188, 214, 120, 4, 76, 5, 4, 155, 5,
300 155, 155, 155, 155, 98, 122, 132, 121, 132, 132,
301 132, 55, 132, 119, 55, 192, 69, 69, 192, 69,
302 69, 69, 69, 69, 69, 69, 69, 130, 55, 131,
303 132, 155, 132, 155, 155, 183, 138, 69, 158, 69,
304 69, 69, 69, 69, 43, 188, 4, 139, 5, 142,
305 42, 19, 20, 27, 65, 28, 26, 149, 120, 132,
306 122, 175, 178, 55, 155, 155, 72, 73, 68, 143,
307 69, 180, 69, 69, 91, 158, 158, 68, 158, 158,
308 158, 158, 158, 158, 158, 158, 124, 26, 42, 54,
309 26, 42, 147, 132, 42, 55, 158, 148, 158, 158,
310 158, 158, 158, 69, 69, 221, 134, 150, 42, 235,
311 76, 42, 185, 42, 68, 68, 183, 68, 68, 68,
312 68, 68, 68, 68, 68, 54, 55, 56, 53, 158,
313 54, 158, 158, 54, 193, 68, 191, 68, 68, 68,
314 68, 68, 238, 42, 42, 237, 199, 54, 203, 115,
315 51, 204, 121, 207, 113, 111, 208, 112, 119, 114,
316 209, 57, 158, 158, 54, 55, 56, 232, 68, 53,
317 68, 68, 53, 236, 42, 42, 110, 239, 52, 54,
318 55, 56, 54, 205, 76, 192, 53, 219, 220, 53,
319 226, 51, 108, 109, 51, 116, 117, 118, 1, 186,
320 57, 68, 68, 120, 54, 55, 56, 228, 51, 98,
321 229, 51, 74, 51, 54, 57, 98, 98, 215, 52,
322 155, 53, 52, 200, 155, 155, 155, 155, 155, 155,
323 155, 155, 201, 155, 155, 155, 52, 132, 230, 52,
324 57, 52, 0, 51, 132, 132, 0, 190, 139, 193,
325 61, 191, 0, 53, 0, 139, 139, 0, 0, 69,
326 116, 117, 118, 69, 69, 69, 69, 69, 69, 69,
327 69, 52, 69, 69, 69, 51, 80, 0, 0, 0,
328 81, 240, 126, 82, 127, 0, 128, 61, 61, 19,
329 20, 61, 61, 61, 61, 61, 61, 61, 135, 0,
330 192, 0, 0, 52, 127, 19, 20, 65, 61, 202,
331 61, 61, 61, 61, 61, 0, 19, 20, 158, 0,
332 0, 0, 158, 158, 158, 158, 158, 158, 158, 158,
333 42, 158, 158, 158, 42, 42, 42, 42, 144, 15,
334 233, 61, 145, 61, 61, 146, 67, 19, 20, 0,
335 115, 7, 0, 121, 0, 113, 111, 68, 112, 119,
336 114, 68, 68, 68, 68, 68, 68, 68, 68, 0,
337 68, 68, 68, 127, 61, 61, 15, 15, 0, 8,
338 15, 15, 15, 15, 15, 0, 15, 0, 7, 7,
339 0, 0, 7, 7, 7, 7, 7, 15, 7, 15,
340 15, 15, 15, 15, 120, 116, 117, 118, 53, 7,
341 0, 7, 7, 7, 7, 7, 8, 8, 0, 0,
342 8, 8, 8, 8, 8, 0, 8, 0, 0, 0,
343 51, 0, 15, 15, 51, 51, 128, 8, 0, 8,
344 8, 8, 8, 8, 7, 7, 127, 0, 0, 6,
345 0, 0, 0, 44, 0, 0, 0, 0, 52, 0,
346 0, 0, 52, 15, 15, 0, 0, 0, 0, 0,
347 0, 0, 8, 8, 0, 7, 7, 0, 0, 0,
348 0, 0, 0, 44, 134, 0, 6, 6, 0, 0,
349 6, 6, 6, 6, 6, 44, 6, 0, 0, 0,
350 0, 0, 0, 8, 8, 133, 0, 6, 0, 6,
351 6, 6, 6, 6, 0, 44, 0, 0, 0, 11,
352 0, 0, 134, 0, 134, 134, 134, 0, 134, 0,
353 61, 0, 0, 0, 61, 61, 61, 61, 61, 61,
354 61, 61, 6, 6, 115, 61, 134, 121, 134, 113,
355 111, 0, 112, 119, 114, 0, 11, 11, 82, 0,
356 11, 11, 11, 11, 11, 0, 11, 104, 0, 105,
357 0, 110, 0, 6, 6, 134, 0, 11, 0, 11,
358 11, 11, 11, 11, 0, 0, 0, 0, 0, 0,
359 0, 0, 206, 0, 0, 0, 82, 0, 120, 82,
360 82, 0, 82, 0, 0, 0, 116, 117, 118, 134,
361 0, 0, 11, 11, 0, 0, 0, 0, 0, 15,
362 82, 0, 82, 15, 15, 15, 15, 15, 15, 15,
363 15, 7, 0, 0, 12, 7, 7, 7, 7, 7,
364 7, 7, 7, 11, 11, 0, 206, 115, 0, 0,
365 121, 0, 113, 0, 0, 0, 119, 114, 0, 8,
366 0, 0, 9, 8, 8, 8, 8, 8, 8, 8,
367 8, 12, 12, 0, 0, 12, 12, 12, 12, 12,
368 206, 12, 0, 82, 0, 0, 0, 0, 0, 0,
369 206, 0, 12, 0, 12, 12, 12, 12, 12, 9,
370 9, 120, 0, 9, 9, 9, 9, 9, 0, 9,
371 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
372 9, 0, 9, 9, 9, 9, 9, 12, 12, 6,
373 10, 0, 0, 6, 6, 6, 6, 6, 6, 6,
374 6, 0, 0, 0, 0, 0, 0, 0, 0, 0,
375 0, 0, 0, 134, 0, 9, 9, 0, 12, 12,
376 134, 134, 0, 0, 0, 0, 0, 10, 10, 0,
377 0, 10, 10, 10, 10, 10, 0, 10, 0, 0,
378 0, 0, 0, 0, 35, 0, 9, 9, 10, 0,
379 10, 10, 10, 10, 10, 106, 107, 108, 109, 11,
380 116, 117, 118, 11, 11, 11, 11, 11, 11, 11,
381 11, 0, 0, 146, 0, 146, 146, 146, 0, 146,
382 146, 35, 35, 10, 10, 35, 35, 35, 35, 35,
383 86, 35, 0, 0, 82, 82, 0, 146, 36, 76,
384 0, 0, 35, 0, 35, 35, 35, 35, 35, 0,
385 0, 0, 0, 0, 10, 10, 0, 0, 146, 0,
386 146, 146, 146, 0, 0, 0, 146, 0, 86, 0,
387 0, 86, 86, 0, 86, 36, 36, 35, 35, 36,
388 36, 36, 36, 36, 76, 36, 0, 0, 0, 0,
389 0, 0, 86, 0, 86, 0, 36, 0, 36, 36,
390 36, 36, 36, 116, 117, 118, 0, 0, 35, 35,
391 0, 146, 0, 0, 12, 0, 0, 0, 12, 12,
392 12, 12, 12, 12, 12, 12, 0, 0, 0, 37,
393 0, 36, 36, 0, 0, 0, 0, 0, 0, 0,
394 0, 32, 9, 0, 0, 146, 9, 9, 9, 9,
395 9, 9, 9, 9, 190, 86, 193, 223, 191, 0,
396 0, 0, 36, 36, 0, 0, 37, 37, 0, 0,
397 37, 37, 37, 37, 37, 0, 37, 0, 32, 32,
398 0, 0, 32, 32, 32, 32, 32, 37, 32, 37,
399 37, 37, 37, 37, 0, 0, 0, 0, 0, 32,
400 0, 32, 32, 32, 32, 32, 0, 192, 0, 0,
401 10, 0, 0, 0, 10, 10, 10, 10, 10, 10,
402 10, 10, 37, 37, 0, 0, 0, 0, 0, 0,
403 0, 0, 0, 0, 32, 32, 0, 0, 0, 18,
404 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
405 0, 21, 0, 37, 37, 0, 0, 0, 0, 0,
406 0, 0, 0, 0, 35, 32, 32, 0, 35, 35,
407 35, 35, 35, 35, 35, 35, 18, 18, 0, 0,
408 18, 18, 18, 18, 18, 0, 18, 0, 21, 21,
409 0, 0, 21, 21, 21, 21, 21, 18, 21, 18,
410 18, 18, 18, 18, 0, 0, 86, 86, 0, 21,
411 31, 21, 21, 21, 21, 21, 0, 0, 36, 0,
412 0, 0, 36, 36, 36, 36, 36, 36, 36, 36,
413 0, 0, 18, 18, 0, 0, 0, 0, 0, 0,
414 0, 0, 0, 0, 21, 21, 0, 31, 31, 0,
415 0, 31, 31, 31, 31, 31, 0, 31, 0, 0,
416 0, 0, 0, 18, 18, 0, 0, 0, 31, 0,
417 31, 31, 31, 31, 31, 21, 21, 5, 0, 7,
418 8, 9, 10, 0, 12, 0, 14, 0, 15, 16,
419 17, 18, 19, 20, 21, 0, 49, 0, 0, 0,
420 0, 0, 0, 31, 31, 0, 0, 0, 38, 37,
421 0, 0, 0, 37, 37, 37, 37, 37, 37, 37,
422 37, 32, 0, 34, 0, 32, 32, 32, 32, 32,
423 32, 32, 32, 0, 31, 31, 0, 49, 0, 0,
424 49, 0, 0, 0, 0, 0, 38, 0, 0, 38,
425 39, 38, 38, 38, 49, 0, 0, 49, 0, 49,
426 0, 34, 0, 0, 34, 0, 38, 34, 38, 38,
427 38, 38, 38, 0, 0, 0, 0, 0, 0, 0,
428 0, 34, 0, 34, 34, 34, 34, 34, 39, 49,
429 49, 39, 0, 39, 39, 39, 0, 0, 0, 0,
430 0, 38, 38, 0, 0, 0, 0, 0, 39, 50,
431 39, 39, 39, 39, 39, 0, 34, 34, 40, 18,
432 49, 49, 0, 18, 18, 18, 18, 18, 18, 18,
433 18, 21, 38, 38, 0, 21, 21, 21, 21, 21,
434 21, 21, 21, 39, 39, 41, 0, 34, 34, 0,
435 50, 0, 0, 50, 0, 0, 40, 0, 0, 40,
436 0, 0, 40, 0, 0, 0, 0, 50, 0, 0,
437 50, 0, 50, 0, 39, 39, 40, 0, 40, 40,
438 40, 40, 0, 41, 0, 0, 41, 0, 0, 41,
439 31, 46, 0, 0, 31, 31, 31, 31, 31, 31,
440 31, 31, 50, 41, 0, 41, 41, 41, 41, 0,
441 0, 40, 40, 0, 0, 0, 0, 0, 0, 0,
442 0, 0, 0, 0, 0, 0, 0, 84, 0, 46,
443 0, 0, 46, 50, 50, 46, 0, 0, 41, 41,
444 0, 0, 40, 40, 0, 0, 0, 0, 0, 46,
445 0, 46, 46, 46, 46, 0, 0, 0, 0, 0,
446 58, 59, 60, 61, 0, 84, 70, 71, 84, 41,
447 41, 84, 0, 0, 0, 0, 49, 0, 0, 0,
448 49, 49, 0, 0, 46, 46, 0, 47, 38, 84,
449 0, 84, 38, 38, 38, 38, 38, 38, 38, 38,
450 0, 0, 0, 34, 0, 0, 0, 34, 34, 34,
451 34, 34, 34, 34, 34, 46, 46, 0, 0, 0,
452 0, 0, 0, 0, 44, 47, 0, 0, 47, 0,
453 39, 47, 0, 0, 39, 39, 39, 39, 39, 39,
454 39, 39, 0, 0, 0, 47, 0, 47, 47, 47,
455 47, 0, 84, 0, 0, 0, 0, 0, 0, 0,
456 0, 0, 44, 0, 0, 44, 0, 0, 44, 0,
457 0, 176, 179, 0, 0, 0, 0, 0, 0, 0,
458 47, 47, 44, 198, 44, 44, 44, 44, 0, 50,
459 0, 0, 0, 50, 50, 0, 0, 0, 40, 45,
460 0, 0, 40, 40, 40, 40, 40, 40, 40, 40,
461 0, 47, 47, 0, 0, 0, 0, 44, 44, 0,
462 0, 0, 0, 0, 0, 41, 43, 0, 0, 41,
463 41, 41, 41, 41, 41, 41, 41, 45, 0, 0,
464 45, 218, 0, 45, 48, 0, 0, 0, 44, 44,
465 0, 0, 0, 0, 0, 231, 0, 45, 0, 45,
466 45, 45, 45, 0, 43, 0, 0, 43, 0, 0,
467 43, 46, 79, 0, 0, 46, 46, 46, 46, 46,
468 46, 0, 48, 0, 43, 48, 231, 43, 48, 43,
469 0, 151, 45, 45, 0, 0, 0, 0, 0, 0,
470 0, 0, 48, 84, 84, 48, 0, 48, 0, 0,
471 79, 0, 79, 79, 79, 0, 79, 0, 0, 43,
472 43, 0, 0, 45, 45, 0, 0, 0, 0, 151,
473 0, 151, 151, 151, 79, 151, 75, 48, 48, 152,
474 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
475 43, 43, 0, 151, 0, 151, 0, 0, 0, 0,
476 0, 0, 0, 79, 0, 0, 0, 47, 48, 48,
477 0, 47, 47, 47, 47, 47, 47, 152, 0, 152,
478 152, 152, 151, 152, 76, 0, 0, 0, 0, 0,
479 0, 100, 0, 0, 0, 0, 0, 79, 96, 0,
480 0, 152, 0, 152, 44, 0, 0, 0, 44, 44,
481 44, 44, 44, 44, 0, 0, 151, 0, 0, 0,
482 0, 0, 76, 0, 76, 76, 76, 0, 76, 100,
483 152, 100, 100, 100, 0, 100, 81, 0, 81, 96,
484 81, 0, 96, 0, 0, 0, 76, 0, 76, 0,
485 0, 0, 0, 100, 5, 100, 7, 8, 9, 10,
486 96, 12, 76, 14, 152, 15, 16, 17, 18, 19,
487 20, 21, 0, 0, 0, 76, 0, 0, 0, 45,
488 0, 0, 100, 45, 45, 45, 45, 45, 45, 81,
489 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
490 0, 0, 0, 0, 0, 0, 43, 0, 0, 76,
491 43, 43, 43, 43, 0, 0, 100, 0, 0, 0,
492 0, 0, 0, 96, 48, 0, 0, 0, 48, 48,
493 101, 0, 0, 79, 0, 79, 79, 79, 79, 0,
494 79, 79, 79, 0, 79, 79, 79, 79, 79, 79,
495 79, 0, 151, 0, 151, 151, 151, 151, 0, 151,
496 151, 151, 0, 151, 151, 151, 151, 151, 101, 151,
497 101, 101, 101, 0, 101, 0, 0, 0, 0, 0,
498 0, 0, 142, 0, 0, 0, 0, 0, 0, 0,
499 0, 0, 101, 0, 101, 0, 0, 0, 0, 143,
500 152, 0, 152, 152, 152, 152, 0, 152, 152, 152,
501 0, 152, 152, 152, 152, 0, 152, 152, 0, 0,
502 142, 101, 142, 142, 142, 0, 142, 0, 0, 0,
503 0, 0, 0, 0, 108, 0, 0, 143, 0, 143,
504 143, 143, 0, 143, 142, 76, 142, 76, 76, 76,
505 76, 104, 76, 76, 76, 101, 76, 76, 76, 76,
506 100, 143, 76, 143, 109, 174, 0, 100, 100, 0,
507 0, 0, 108, 142, 108, 108, 108, 0, 108, 123,
508 0, 0, 0, 0, 0, 0, 0, 0, 0, 104,
509 143, 104, 104, 104, 121, 104, 108, 0, 108, 0,
510 0, 0, 109, 0, 109, 109, 109, 142, 109, 115,
511 0, 0, 0, 104, 0, 104, 0, 123, 0, 123,
512 123, 123, 113, 123, 143, 108, 109, 0, 109, 0,
513 0, 0, 121, 0, 121, 121, 121, 0, 121, 117,
514 0, 123, 104, 123, 0, 0, 0, 115, 0, 115,
515 115, 115, 112, 115, 0, 109, 121, 0, 121, 108,
516 113, 0, 113, 113, 113, 0, 113, 0, 0, 0,
517 123, 115, 0, 115, 0, 0, 104, 117, 0, 117,
518 117, 117, 0, 117, 113, 121, 113, 0, 0, 109,
519 112, 136, 112, 112, 112, 0, 112, 0, 0, 101,
520 115, 117, 0, 117, 123, 0, 101, 101, 0, 0,
521 0, 0, 0, 113, 112, 33, 112, 0, 0, 121,
522 25, 0, 30, 0, 27, 0, 0, 26, 0, 136,
523 117, 136, 136, 136, 115, 136, 0, 0, 0, 0,
524 0, 0, 0, 112, 0, 0, 0, 113, 0, 0,
525 0, 142, 0, 136, 0, 76, 0, 0, 142, 142,
526 33, 0, 0, 0, 117, 25, 0, 62, 143, 27,
527 0, 0, 26, 0, 0, 143, 143, 112, 0, 0,
528 0, 0, 136, 54, 173, 56, 7, 8, 9, 10,
529 0, 12, 0, 14, 0, 15, 16, 17, 18, 19,
530 20, 21, 33, 108, 0, 35, 0, 0, 34, 30,
531 108, 108, 0, 0, 0, 0, 136, 0, 0, 57,
532 104, 0, 0, 0, 0, 0, 0, 104, 104, 0,
533 0, 0, 0, 109, 0, 0, 0, 0, 0, 0,
534 109, 109, 0, 0, 0, 0, 0, 0, 123, 0,
535 35, 0, 0, 34, 0, 123, 123, 0, 0, 0,
536 0, 0, 0, 121, 0, 0, 0, 0, 0, 0,
537 121, 121, 0, 0, 0, 0, 0, 0, 115, 0,
538 0, 0, 0, 0, 0, 115, 115, 0, 0, 0,
539 0, 113, 35, 0, 0, 34, 0, 0, 113, 113,
540 0, 0, 0, 0, 0, 0, 0, 0, 117, 0,
541 0, 0, 0, 0, 0, 117, 117, 0, 0, 0,
542 0, 112, 0, 0, 0, 0, 0, 0, 112, 112,
543 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
544 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
545 12, 13, 14, 0, 15, 16, 17, 18, 19, 20,
546 21, 22, 0, 23, 24, 0, 0, 0, 0, 0,
547 0, 0, 0, 0, 0, 28, 29, 0, 31, 32,
548 0, 0, 0, 0, 1, 2, 3, 4, 5, 6,
549 7, 8, 9, 10, 11, 12, 13, 14, 0, 15,
550 16, 17, 18, 19, 20, 21, 22, 0, 23, 24,
551 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
552 28, 29, 0, 31, 32, 0, 1, 2, 3, 4,
553 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
554 0, 15, 16, 17, 18, 19, 20, 21, 22, 0,
555 23, 24, 0, 0, 0, 0, 0, 0, 0, 0,
556 0, 0, 28, 29, 0, 31, 32, 115, 101, 0,
557 121, 0, 113, 111, 0, 112, 119, 114, 0, 0,
558 0, 0, 0, 0, 0, 0, 0, 0, 211, 0,
559 104, 95, 105, 96, 110, 0, 0, 0, 0, 0,
560 0, 0, 115, 101, 0, 121, 0, 113, 111, 0,
561 112, 119, 114, 0, 0, 0, 0, 0, 0, 0,
562 0, 120, 0, 0, 100, 104, 95, 105, 96, 110,
563 0, 0, 0, 0, 0, 0, 0, 115, 101, 0,
564 121, 0, 113, 111, 177, 112, 119, 114, 0, 0,
565 0, 0, 0, 0, 99, 0, 120, 0, 0, 100,
566 104, 0, 105, 96, 110, 115, 101, 0, 121, 0,
567 113, 111, 0, 112, 119, 114, 115, 101, 0, 121,
568 0, 113, 111, 0, 112, 119, 114, 0, 104, 99,
569 105, 120, 110, 0, 100, 0, 0, 0, 0, 104,
570 0, 105, 0, 110, 115, 101, 0, 121, 0, 113,
571 111, 0, 112, 119, 114, 223, 0, 0, 0, 120,
572 0, 0, 100, 0, 99, 0, 0, 104, 0, 105,
573 120, 110, 0, 100, 0, 0, 0, 115, 101, 0,
574 121, 0, 113, 111, 0, 112, 119, 114, 0, 0,
575 0, 0, 99, 0, 0, 0, 0, 0, 120, 0,
576 104, 100, 105, 99, 110, 0, 0, 0, 0, 0,
577 0, 0, 115, 0, 0, 121, 0, 113, 111, 0,
578 112, 119, 114, 0, 0, 0, 0, 0, 0, 0,
579 0, 120, 0, 0, 0, 104, 0, 105, 0, 110,
580 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
581 94, 0, 0, 0, 97, 98, 102, 103, 106, 107,
582 108, 109, 0, 116, 117, 118, 120, 0, 0, 0,
583 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
584 0, 0, 0, 0, 0, 94, 0, 0, 0, 97,
585 98, 102, 103, 106, 107, 108, 109, 0, 116, 117,
586 118, 0, 54, 173, 56, 7, 8, 9, 10, 0,
587 12, 0, 14, 0, 15, 16, 17, 18, 19, 20,
588 21, 0, 0, 0, 97, 98, 102, 103, 106, 107,
589 108, 109, 0, 116, 117, 118, 0, 0, 57, 0,
590 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
591 0, 0, 0, 98, 102, 103, 106, 107, 108, 109,
592 0, 116, 117, 118, 0, 102, 103, 106, 107, 108,
593 109, 0, 116, 117, 118, 5, 0, 7, 8, 9,
594 10, 0, 12, 0, 14, 0, 15, 16, 17, 18,
595 19, 20, 21, 102, 103, 106, 107, 108, 109, 0,
596 116, 117, 118, 0, 0, 0, 0, 0, 0, 0,
597 81, 0, 0, 0, 0, 0, 0, 0, 0, 0,
598 0, 0, 63, 0, 0, 0, 102, 103, 106, 107,
599 108, 109, 0, 116, 117, 118, 85, 86, 87, 88,
600 89, 0, 0, 0, 92, 93, 0, 0, 81, 0,
601 81, 81, 81, 123, 81, 0, 0, 0, 0, 0,
602 0, 102, 103, 106, 107, 108, 109, 0, 116, 117,
603 118, 0, 81, 0, 76, 0, 0, 0, 0, 0,
604 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
605 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
606 0, 81, 0, 0, 0, 151, 152, 153, 154, 155,
607 156, 157, 158, 159, 160, 161, 162, 163, 164, 165,
608 166, 167, 168, 169, 170, 171, 172, 0, 0, 0,
609 0, 0, 0, 182, 0, 81, 0, 0, 0, 0,
610 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
611 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
612 0, 210, 0, 0, 0, 0, 0, 0, 0, 0,
613 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
614 0, 0, 0, 0, 0, 212, 0, 0, 213, 0,
615 0, 0, 123, 0, 0, 216, 217, 0, 0, 0,
616 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
617 0, 0, 0, 0, 210, 0, 0, 0, 0, 0,
618 0, 0, 234,
619};
620const short yycheckc_yycheck[] =
621 { 37,
622 0, 93, 40, 44, 42, 43, 42, 45, 46, 47,
623 277, 0, 268, 0, 44, 0, 272, 273, 273, 275,
624 275, 42, 278, 273, 40, 275, 64, 40, 0, 41,
625 0, 41, 44, 276, 44, 44, 261, 37, 38, 0,
626 40, 41, 42, 43, 44, 45, 46, 47, 273, 274,
627 275, 126, 93, 91, 41, 64, 41, 44, 58, 44,
628 60, 61, 62, 63, 64, 44, 38, 40, 40, 41,
629 42, 41, 44, 46, 44, 91, 37, 38, 91, 40,
630 41, 42, 43, 44, 45, 46, 47, 269, 58, 64,
631 62, 91, 64, 93, 94, 125, 275, 58, 0, 60,
632 61, 62, 63, 64, 0, 126, 93, 60, 93, 275,
633 0, 276, 277, 125, 261, 125, 125, 41, 91, 91,
634 44, 118, 119, 93, 124, 125, 273, 274, 275, 275,
635 91, 120, 93, 94, 30, 37, 38, 0, 40, 41,
636 42, 43, 44, 45, 46, 47, 42, 41, 38, 0,
637 44, 41, 275, 125, 44, 125, 58, 275, 60, 61,
638 62, 63, 64, 124, 125, 257, 62, 41, 58, 41,
639 64, 61, 44, 63, 37, 38, 125, 40, 41, 42,
640 43, 44, 45, 46, 47, 260, 261, 262, 0, 91,
641 41, 93, 94, 44, 40, 58, 42, 60, 61, 62,
642 63, 64, 41, 93, 94, 44, 260, 58, 41, 37,
643 0, 275, 40, 275, 42, 43, 275, 45, 46, 47,
644 275, 296, 124, 125, 260, 261, 262, 62, 91, 41,
645 93, 94, 44, 93, 124, 125, 64, 41, 0, 260,
646 261, 262, 93, 139, 64, 91, 58, 190, 191, 61,
647 193, 41, 290, 291, 44, 293, 294, 295, 0, 125,
648 296, 124, 125, 91, 260, 261, 262, 195, 58, 269,
649 195, 61, 15, 63, 125, 296, 276, 277, 181, 41,
650 280, 93, 44, 132, 284, 285, 286, 287, 288, 289,
651 290, 291, 132, 293, 294, 295, 58, 269, 196, 61,
652 296, 63, -1, 93, 276, 277, -1, 38, 269, 40,
653 0, 42, -1, 125, -1, 276, 277, -1, -1, 280,
654 293, 294, 295, 284, 285, 286, 287, 288, 289, 290,
655 291, 93, 293, 294, 295, 125, 268, -1, -1, -1,
656 272, 237, 269, 275, 44, -1, 46, 37, 38, 276,
657 277, 41, 42, 43, 44, 45, 46, 47, 269, -1,
658 91, -1, -1, 125, 64, 276, 277, 269, 58, 269,
659 60, 61, 62, 63, 64, -1, 276, 277, 280, -1,
660 -1, -1, 284, 285, 286, 287, 288, 289, 290, 291,
661 280, 293, 294, 295, 284, 285, 286, 287, 268, 0,
662 269, 91, 272, 93, 94, 275, 269, 276, 277, -1,
663 37, 0, -1, 40, -1, 42, 43, 280, 45, 46,
664 47, 284, 285, 286, 287, 288, 289, 290, 291, -1,
665 293, 294, 295, 133, 124, 125, 37, 38, -1, 0,
666 41, 42, 43, 44, 45, -1, 47, -1, 37, 38,
667 -1, -1, 41, 42, 43, 44, 45, 58, 47, 60,
668 61, 62, 63, 64, 91, 293, 294, 295, 280, 58,
669 -1, 60, 61, 62, 63, 64, 37, 38, -1, -1,
670 41, 42, 43, 44, 45, -1, 47, -1, -1, -1,
671 280, -1, 93, 94, 284, 285, 196, 58, -1, 60,
672 61, 62, 63, 64, 93, 94, 206, -1, -1, 0,
673 -1, -1, -1, 0, -1, -1, -1, -1, 280, -1,
674 -1, -1, 284, 124, 125, -1, -1, -1, -1, -1,
675 -1, -1, 93, 94, -1, 124, 125, -1, -1, -1,
676 -1, -1, -1, 30, 0, -1, 37, 38, -1, -1,
677 41, 42, 43, 44, 45, 42, 47, -1, -1, -1,
678 -1, -1, -1, 124, 125, 52, -1, 58, -1, 60,
679 61, 62, 63, 64, -1, 62, -1, -1, -1, 0,
680 -1, -1, 38, -1, 40, 41, 42, -1, 44, -1,
681 280, -1, -1, -1, 284, 285, 286, 287, 288, 289,
682 290, 291, 93, 94, 37, 295, 62, 40, 64, 42,
683 43, -1, 45, 46, 47, -1, 37, 38, 0, -1,
684 41, 42, 43, 44, 45, -1, 47, 60, -1, 62,
685 -1, 64, -1, 124, 125, 91, -1, 58, -1, 60,
686 61, 62, 63, 64, -1, -1, -1, -1, -1, -1,
687 -1, -1, 139, -1, -1, -1, 38, -1, 91, 41,
688 42, -1, 44, -1, -1, -1, 293, 294, 295, 125,
689 -1, -1, 93, 94, -1, -1, -1, -1, -1, 280,
690 62, -1, 64, 284, 285, 286, 287, 288, 289, 290,
691 291, 280, -1, -1, 0, 284, 285, 286, 287, 288,
692 289, 290, 291, 124, 125, -1, 193, 37, -1, -1,
693 40, -1, 42, -1, -1, -1, 46, 47, -1, 280,
694 -1, -1, 0, 284, 285, 286, 287, 288, 289, 290,
695 291, 37, 38, -1, -1, 41, 42, 43, 44, 45,
696 227, 47, -1, 125, -1, -1, -1, -1, -1, -1,
697 237, -1, 58, -1, 60, 61, 62, 63, 64, 37,
698 38, 91, -1, 41, 42, 43, 44, 45, -1, 47,
699 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
700 58, -1, 60, 61, 62, 63, 64, 93, 94, 280,
701 0, -1, -1, 284, 285, 286, 287, 288, 289, 290,
702 291, -1, -1, -1, -1, -1, -1, -1, -1, -1,
703 -1, -1, -1, 269, -1, 93, 94, -1, 124, 125,
704 276, 277, -1, -1, -1, -1, -1, 37, 38, -1,
705 -1, 41, 42, 43, 44, 45, -1, 47, -1, -1,
706 -1, -1, -1, -1, 0, -1, 124, 125, 58, -1,
707 60, 61, 62, 63, 64, 288, 289, 290, 291, 280,
708 293, 294, 295, 284, 285, 286, 287, 288, 289, 290,
709 291, -1, -1, 38, -1, 40, 41, 42, -1, 44,
710 0, 37, 38, 93, 94, 41, 42, 43, 44, 45,
711 0, 47, -1, -1, 276, 277, -1, 62, 0, 64,
712 -1, -1, 58, -1, 60, 61, 62, 63, 64, -1,
713 -1, -1, -1, -1, 124, 125, -1, -1, 38, -1,
714 40, 41, 42, -1, -1, -1, 91, -1, 38, -1,
715 -1, 41, 42, -1, 44, 37, 38, 93, 94, 41,
716 42, 43, 44, 45, 64, 47, -1, -1, -1, -1,
717 -1, -1, 62, -1, 64, -1, 58, -1, 60, 61,
718 62, 63, 64, 293, 294, 295, -1, -1, 124, 125,
719 -1, 91, -1, -1, 280, -1, -1, -1, 284, 285,
720 286, 287, 288, 289, 290, 291, -1, -1, -1, 0,
721 -1, 93, 94, -1, -1, -1, -1, -1, -1, -1,
722 -1, 0, 280, -1, -1, 125, 284, 285, 286, 287,
723 288, 289, 290, 291, 38, 125, 40, 41, 42, -1,
724 -1, -1, 124, 125, -1, -1, 37, 38, -1, -1,
725 41, 42, 43, 44, 45, -1, 47, -1, 37, 38,
726 -1, -1, 41, 42, 43, 44, 45, 58, 47, 60,
727 61, 62, 63, 64, -1, -1, -1, -1, -1, 58,
728 -1, 60, 61, 62, 63, 64, -1, 91, -1, -1,
729 280, -1, -1, -1, 284, 285, 286, 287, 288, 289,
730 290, 291, 93, 94, -1, -1, -1, -1, -1, -1,
731 -1, -1, -1, -1, 93, 94, -1, -1, -1, 0,
732 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
733 -1, 0, -1, 124, 125, -1, -1, -1, -1, -1,
734 -1, -1, -1, -1, 280, 124, 125, -1, 284, 285,
735 286, 287, 288, 289, 290, 291, 37, 38, -1, -1,
736 41, 42, 43, 44, 45, -1, 47, -1, 37, 38,
737 -1, -1, 41, 42, 43, 44, 45, 58, 47, 60,
738 61, 62, 63, 64, -1, -1, 276, 277, -1, 58,
739 0, 60, 61, 62, 63, 64, -1, -1, 280, -1,
740 -1, -1, 284, 285, 286, 287, 288, 289, 290, 291,
741 -1, -1, 93, 94, -1, -1, -1, -1, -1, -1,
742 -1, -1, -1, -1, 93, 94, -1, 37, 38, -1,
743 -1, 41, 42, 43, 44, 45, -1, 47, -1, -1,
744 -1, -1, -1, 124, 125, -1, -1, -1, 58, -1,
745 60, 61, 62, 63, 64, 124, 125, 261, -1, 263,
746 264, 265, 266, -1, 268, -1, 270, -1, 272, 273,
747 274, 275, 276, 277, 278, -1, 0, -1, -1, -1,
748 -1, -1, -1, 93, 94, -1, -1, -1, 0, 280,
749 -1, -1, -1, 284, 285, 286, 287, 288, 289, 290,
750 291, 280, -1, 0, -1, 284, 285, 286, 287, 288,
751 289, 290, 291, -1, 124, 125, -1, 41, -1, -1,
752 44, -1, -1, -1, -1, -1, 38, -1, -1, 41,
753 0, 43, 44, 45, 58, -1, -1, 61, -1, 63,
754 -1, 38, -1, -1, 41, -1, 58, 44, 60, 61,
755 62, 63, 64, -1, -1, -1, -1, -1, -1, -1,
756 -1, 58, -1, 60, 61, 62, 63, 64, 38, 93,
757 94, 41, -1, 43, 44, 45, -1, -1, -1, -1,
758 -1, 93, 94, -1, -1, -1, -1, -1, 58, 0,
759 60, 61, 62, 63, 64, -1, 93, 94, 0, 280,
760 124, 125, -1, 284, 285, 286, 287, 288, 289, 290,
761 291, 280, 124, 125, -1, 284, 285, 286, 287, 288,
762 289, 290, 291, 93, 94, 0, -1, 124, 125, -1,
763 41, -1, -1, 44, -1, -1, 38, -1, -1, 41,
764 -1, -1, 44, -1, -1, -1, -1, 58, -1, -1,
765 61, -1, 63, -1, 124, 125, 58, -1, 60, 61,
766 62, 63, -1, 38, -1, -1, 41, -1, -1, 44,
767 280, 0, -1, -1, 284, 285, 286, 287, 288, 289,
768 290, 291, 93, 58, -1, 60, 61, 62, 63, -1,
769 -1, 93, 94, -1, -1, -1, -1, -1, -1, -1,
770 -1, -1, -1, -1, -1, -1, -1, 0, -1, 38,
771 -1, -1, 41, 124, 125, 44, -1, -1, 93, 94,
772 -1, -1, 124, 125, -1, -1, -1, -1, -1, 58,
773 -1, 60, 61, 62, 63, -1, -1, -1, -1, -1,
774 7, 8, 9, 10, -1, 38, 13, 14, 41, 124,
775 125, 44, -1, -1, -1, -1, 280, -1, -1, -1,
776 284, 285, -1, -1, 93, 94, -1, 0, 280, 62,
777 -1, 64, 284, 285, 286, 287, 288, 289, 290, 291,
778 -1, -1, -1, 280, -1, -1, -1, 284, 285, 286,
779 287, 288, 289, 290, 291, 124, 125, -1, -1, -1,
780 -1, -1, -1, -1, 0, 38, -1, -1, 41, -1,
781 280, 44, -1, -1, 284, 285, 286, 287, 288, 289,
782 290, 291, -1, -1, -1, 58, -1, 60, 61, 62,
783 63, -1, 125, -1, -1, -1, -1, -1, -1, -1,
784 -1, -1, 38, -1, -1, 41, -1, -1, 44, -1,
785 -1, 118, 119, -1, -1, -1, -1, -1, -1, -1,
786 93, 94, 58, 130, 60, 61, 62, 63, -1, 280,
787 -1, -1, -1, 284, 285, -1, -1, -1, 280, 0,
788 -1, -1, 284, 285, 286, 287, 288, 289, 290, 291,
789 -1, 124, 125, -1, -1, -1, -1, 93, 94, -1,
790 -1, -1, -1, -1, -1, 280, 0, -1, -1, 284,
791 285, 286, 287, 288, 289, 290, 291, 38, -1, -1,
792 41, 188, -1, 44, 0, -1, -1, -1, 124, 125,
793 -1, -1, -1, -1, -1, 202, -1, 58, -1, 60,
794 61, 62, 63, -1, 38, -1, -1, 41, -1, -1,
795 44, 280, 0, -1, -1, 284, 285, 286, 287, 288,
796 289, -1, 38, -1, 58, 41, 233, 61, 44, 63,
797 -1, 0, 93, 94, -1, -1, -1, -1, -1, -1,
798 -1, -1, 58, 276, 277, 61, -1, 63, -1, -1,
799 38, -1, 40, 41, 42, -1, 44, -1, -1, 93,
800 94, -1, -1, 124, 125, -1, -1, -1, -1, 38,
801 -1, 40, 41, 42, 62, 44, 64, 93, 94, 0,
802 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
803 124, 125, -1, 62, -1, 64, -1, -1, -1, -1,
804 -1, -1, -1, 91, -1, -1, -1, 280, 124, 125,
805 -1, 284, 285, 286, 287, 288, 289, 38, -1, 40,
806 41, 42, 91, 44, 0, -1, -1, -1, -1, -1,
807 -1, 0, -1, -1, -1, -1, -1, 125, 0, -1,
808 -1, 62, -1, 64, 280, -1, -1, -1, 284, 285,
809 286, 287, 288, 289, -1, -1, 125, -1, -1, -1,
810 -1, -1, 38, -1, 40, 41, 42, -1, 44, 38,
811 91, 40, 41, 42, -1, 44, 38, -1, 40, 41,
812 42, -1, 44, -1, -1, -1, 62, -1, 64, -1,
813 -1, -1, -1, 62, 261, 64, 263, 264, 265, 266,
814 62, 268, 64, 270, 125, 272, 273, 274, 275, 276,
815 277, 278, -1, -1, -1, 91, -1, -1, -1, 280,
816 -1, -1, 91, 284, 285, 286, 287, 288, 289, 91,
817 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
818 -1, -1, -1, -1, -1, -1, 280, -1, -1, 125,
819 284, 285, 286, 287, -1, -1, 125, -1, -1, -1,
820 -1, -1, -1, 125, 280, -1, -1, -1, 284, 285,
821 0, -1, -1, 261, -1, 263, 264, 265, 266, -1,
822 268, 269, 270, -1, 272, 273, 274, 275, 276, 277,
823 278, -1, 261, -1, 263, 264, 265, 266, -1, 268,
824 269, 270, -1, 272, 273, 274, 275, 276, 38, 278,
825 40, 41, 42, -1, 44, -1, -1, -1, -1, -1,
826 -1, -1, 0, -1, -1, -1, -1, -1, -1, -1,
827 -1, -1, 62, -1, 64, -1, -1, -1, -1, 0,
828 261, -1, 263, 264, 265, 266, -1, 268, 269, 270,
829 -1, 272, 273, 274, 275, -1, 277, 278, -1, -1,
830 38, 91, 40, 41, 42, -1, 44, -1, -1, -1,
831 -1, -1, -1, -1, 0, -1, -1, 38, -1, 40,
832 41, 42, -1, 44, 62, 261, 64, 263, 264, 265,
833 266, 0, 268, 269, 270, 125, 272, 273, 274, 275,
834 269, 62, 278, 64, 0, 42, -1, 276, 277, -1,
835 -1, -1, 38, 91, 40, 41, 42, -1, 44, 0,
836 -1, -1, -1, -1, -1, -1, -1, -1, -1, 38,
837 91, 40, 41, 42, 0, 44, 62, -1, 64, -1,
838 -1, -1, 38, -1, 40, 41, 42, 125, 44, 0,
839 -1, -1, -1, 62, -1, 64, -1, 38, -1, 40,
840 41, 42, 0, 44, 125, 91, 62, -1, 64, -1,
841 -1, -1, 38, -1, 40, 41, 42, -1, 44, 0,
842 -1, 62, 91, 64, -1, -1, -1, 38, -1, 40,
843 41, 42, 0, 44, -1, 91, 62, -1, 64, 125,
844 38, -1, 40, 41, 42, -1, 44, -1, -1, -1,
845 91, 62, -1, 64, -1, -1, 125, 38, -1, 40,
846 41, 42, -1, 44, 62, 91, 64, -1, -1, 125,
847 38, 0, 40, 41, 42, -1, 44, -1, -1, 269,
848 91, 62, -1, 64, 125, -1, 276, 277, -1, -1,
849 -1, -1, -1, 91, 62, 33, 64, -1, -1, 125,
850 38, -1, 40, -1, 42, -1, -1, 45, -1, 38,
851 91, 40, 41, 42, 125, 44, -1, -1, -1, -1,
852 -1, -1, -1, 91, -1, -1, -1, 125, -1, -1,
853 -1, 269, -1, 62, -1, 64, -1, -1, 276, 277,
854 33, -1, -1, -1, 125, 38, -1, 40, 269, 42,
855 -1, -1, 45, -1, -1, 276, 277, 125, -1, -1,
856 -1, -1, 91, 260, 261, 262, 263, 264, 265, 266,
857 -1, 268, -1, 270, -1, 272, 273, 274, 275, 276,
858 277, 278, 33, 269, -1, 123, -1, -1, 126, 40,
859 276, 277, -1, -1, -1, -1, 125, -1, -1, 296,
860 269, -1, -1, -1, -1, -1, -1, 276, 277, -1,
861 -1, -1, -1, 269, -1, -1, -1, -1, -1, -1,
862 276, 277, -1, -1, -1, -1, -1, -1, 269, -1,
863 123, -1, -1, 126, -1, 276, 277, -1, -1, -1,
864 -1, -1, -1, 269, -1, -1, -1, -1, -1, -1,
865 276, 277, -1, -1, -1, -1, -1, -1, 269, -1,
866 -1, -1, -1, -1, -1, 276, 277, -1, -1, -1,
867 -1, 269, 123, -1, -1, 126, -1, -1, 276, 277,
868 -1, -1, -1, -1, -1, -1, -1, -1, 269, -1,
869 -1, -1, -1, -1, -1, 276, 277, -1, -1, -1,
870 -1, 269, -1, -1, -1, -1, -1, -1, 276, 277,
871 -1, -1, -1, -1, -1, -1, -1, -1, -1, 257,
872 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
873 268, 269, 270, -1, 272, 273, 274, 275, 276, 277,
874 278, 279, -1, 281, 282, -1, -1, -1, -1, -1,
875 -1, -1, -1, -1, -1, 293, 294, -1, 296, 297,
876 -1, -1, -1, -1, 257, 258, 259, 260, 261, 262,
877 263, 264, 265, 266, 267, 268, 269, 270, -1, 272,
878 273, 274, 275, 276, 277, 278, 279, -1, 281, 282,
879 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
880 293, 294, -1, 296, 297, -1, 257, 258, 259, 260,
881 261, 262, 263, 264, 265, 266, 267, 268, 269, 270,
882 -1, 272, 273, 274, 275, 276, 277, 278, 279, -1,
883 281, 282, -1, -1, -1, -1, -1, -1, -1, -1,
884 -1, -1, 293, 294, -1, 296, 297, 37, 38, -1,
885 40, -1, 42, 43, -1, 45, 46, 47, -1, -1,
886 -1, -1, -1, -1, -1, -1, -1, -1, 58, -1,
887 60, 61, 62, 63, 64, -1, -1, -1, -1, -1,
888 -1, -1, 37, 38, -1, 40, -1, 42, 43, -1,
889 45, 46, 47, -1, -1, -1, -1, -1, -1, -1,
890 -1, 91, -1, -1, 94, 60, 61, 62, 63, 64,
891 -1, -1, -1, -1, -1, -1, -1, 37, 38, -1,
892 40, -1, 42, 43, 42, 45, 46, 47, -1, -1,
893 -1, -1, -1, -1, 124, -1, 91, -1, -1, 94,
894 60, -1, 62, 63, 64, 37, 38, -1, 40, -1,
895 42, 43, -1, 45, 46, 47, 37, 38, -1, 40,
896 -1, 42, 43, -1, 45, 46, 47, -1, 60, 124,
897 62, 91, 64, -1, 94, -1, -1, -1, -1, 60,
898 -1, 62, -1, 64, 37, 38, -1, 40, -1, 42,
899 43, -1, 45, 46, 47, 41, -1, -1, -1, 91,
900 -1, -1, 94, -1, 124, -1, -1, 60, -1, 62,
901 91, 64, -1, 94, -1, -1, -1, 37, 38, -1,
902 40, -1, 42, 43, -1, 45, 46, 47, -1, -1,
903 -1, -1, 124, -1, -1, -1, -1, -1, 91, -1,
904 60, 94, 62, 124, 64, -1, -1, -1, -1, -1,
905 -1, -1, 37, -1, -1, 40, -1, 42, 43, -1,
906 45, 46, 47, -1, -1, -1, -1, -1, -1, -1,
907 -1, 91, -1, -1, -1, 60, -1, 62, -1, 64,
908 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
909 280, -1, -1, -1, 284, 285, 286, 287, 288, 289,
910 290, 291, -1, 293, 294, 295, 91, -1, -1, -1,
911 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
912 -1, -1, -1, -1, -1, 280, -1, -1, -1, 284,
913 285, 286, 287, 288, 289, 290, 291, -1, 293, 294,
914 295, -1, 260, 261, 262, 263, 264, 265, 266, -1,
915 268, -1, 270, -1, 272, 273, 274, 275, 276, 277,
916 278, -1, -1, -1, 284, 285, 286, 287, 288, 289,
917 290, 291, -1, 293, 294, 295, -1, -1, 296, -1,
918 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
919 -1, -1, -1, 285, 286, 287, 288, 289, 290, 291,
920 -1, 293, 294, 295, -1, 286, 287, 288, 289, 290,
921 291, -1, 293, 294, 295, 261, -1, 263, 264, 265,
922 266, -1, 268, -1, 270, -1, 272, 273, 274, 275,
923 276, 277, 278, 286, 287, 288, 289, 290, 291, -1,
924 293, 294, 295, -1, -1, -1, -1, -1, -1, -1,
925 0, -1, -1, -1, -1, -1, -1, -1, -1, -1,
926 -1, -1, 11, -1, -1, -1, 286, 287, 288, 289,
927 290, 291, -1, 293, 294, 295, 25, 26, 27, 28,
928 29, -1, -1, -1, 33, 34, -1, -1, 38, -1,
929 40, 41, 42, 42, 44, -1, -1, -1, -1, -1,
930 -1, 286, 287, 288, 289, 290, 291, -1, 293, 294,
931 295, -1, 62, -1, 64, -1, -1, -1, -1, -1,
932 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
933 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
934 -1, 91, -1, -1, -1, 94, 95, 96, 97, 98,
935 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
936 109, 110, 111, 112, 113, 114, 115, -1, -1, -1,
937 -1, -1, -1, 122, -1, 125, -1, -1, -1, -1,
938 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
939 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
940 -1, 150, -1, -1, -1, -1, -1, -1, -1, -1,
941 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
942 -1, -1, -1, -1, -1, 174, -1, -1, 177, -1,
943 -1, -1, 181, -1, -1, 184, 185, -1, -1, -1,
944 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
945 -1, -1, -1, -1, 203, -1, -1, -1, -1, -1,
946 -1, -1, 211,
947};
948#define YYFINAL36 36
949#ifndef YYDEBUG1
950#define YYDEBUG1 0
951#endif
952#define YYMAXTOKEN297 297
953#if YYDEBUG1
954const char * const yynamec_name[] =
955 {
956"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
957"'!'",0,0,0,"'%'","'&'",0,"'('","')'","'*'","'+'","','","'-'","'.'","'/'",0,0,0,
9580,0,0,0,0,0,0,"':'",0,"'<'","'='","'>'","'?'","'@'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,
9590,0,0,0,0,0,0,0,0,0,0,0,"'['",0,"']'","'^'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
9600,0,0,0,0,0,0,0,0,0,"'{'","'|'","'}'","'~'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
9610,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
9620,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
9630,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"INT","FLOAT",
964"STRING","NAME","TYPENAME","NAME_OR_INT","STRUCT","CLASS","UNION","ENUM",
965"SIZEOF","UNSIGNED","COLONCOLON","TEMPLATE","ERROR","SIGNED_KEYWORD","LONG",
966"SHORT","INT_KEYWORD","CONST_KEYWORD","VOLATILE_KEYWORD","DOUBLE_KEYWORD",
967"VARIABLE","ASSIGN_MODIFY","TRUEKEYWORD","FALSEKEYWORD","ABOVE_COMMA","OROR",
968"ANDAND","EQUAL","NOTEQUAL","LEQ","GEQ","LSH","RSH","UNARY","INCREMENT",
969"DECREMENT","ARROW","BLOCKNAME","FILENAME",
970};
971const char * const yyrulec_rule[] =
972 {"$accept : start",
973"start : exp1",
974"start : type_exp",
975"type_exp : type",
976"exp1 : exp",
977"exp1 : exp1 ',' exp",
978"exp : '*' exp",
979"exp : '&' exp",
980"exp : '-' exp",
981"exp : '!' exp",
982"exp : '~' exp",
983"exp : INCREMENT exp",
984"exp : DECREMENT exp",
985"exp : exp INCREMENT",
986"exp : exp DECREMENT",
987"exp : SIZEOF exp",
988"exp : exp ARROW name",
989"exp : exp ARROW qualified_name",
990"exp : exp ARROW '*' exp",
991"exp : exp '.' name",
992"exp : exp '.' qualified_name",
993"exp : exp '.' '*' exp",
994"exp : exp '[' exp1 ']'",
995"$$1 :",
996"exp : exp '(' $$1 arglist ')'",
997"lcurly : '{'",
998"arglist :",
999"arglist : exp",
1000"arglist : arglist ',' exp",
1001"rcurly : '}'",
1002"exp : lcurly arglist rcurly",
1003"exp : lcurly type rcurly exp",
1004"exp : '(' type ')' exp",
1005"exp : '(' exp1 ')'",
1006"exp : exp '@' exp",
1007"exp : exp '*' exp",
1008"exp : exp '/' exp",
1009"exp : exp '%' exp",
1010"exp : exp '+' exp",
1011"exp : exp '-' exp",
1012"exp : exp LSH exp",
1013"exp : exp RSH exp",
1014"exp : exp EQUAL exp",
1015"exp : exp NOTEQUAL exp",
1016"exp : exp LEQ exp",
1017"exp : exp GEQ exp",
1018"exp : exp '<' exp",
1019"exp : exp '>' exp",
1020"exp : exp '&' exp",
1021"exp : exp '^' exp",
1022"exp : exp '|' exp",
1023"exp : exp ANDAND exp",
1024"exp : exp OROR exp",
1025"exp : exp '?' exp ':' exp",
1026"exp : exp '=' exp",
1027"exp : exp ASSIGN_MODIFY exp",
1028"exp : INT",
1029"exp : NAME_OR_INT",
1030"exp : FLOAT",
1031"exp : variable",
1032"exp : VARIABLE",
1033"exp : SIZEOF '(' type ')'",
1034"exp : STRING",
1035"exp : TRUEKEYWORD",
1036"exp : FALSEKEYWORD",
1037"block : BLOCKNAME",
1038"block : FILENAME",
1039"block : block COLONCOLON name",
1040"variable : block COLONCOLON name",
1041"qualified_name : typebase COLONCOLON name",
1042"qualified_name : typebase COLONCOLON '~' name",
1043"variable : qualified_name",
1044"variable : COLONCOLON name",
1045"variable : name_not_typename",
1046"space_identifier : '@' NAME",
1047"const_or_volatile : const_or_volatile_noopt",
1048"const_or_volatile :",
1049"cv_with_space_id : const_or_volatile space_identifier const_or_volatile",
1050"const_or_volatile_or_space_identifier_noopt : cv_with_space_id",
1051"const_or_volatile_or_space_identifier_noopt : const_or_volatile_noopt",
1052"const_or_volatile_or_space_identifier : const_or_volatile_or_space_identifier_noopt",
1053"const_or_volatile_or_space_identifier :",
1054"abs_decl : '*'",
1055"abs_decl : '*' abs_decl",
1056"abs_decl : '&'",
1057"abs_decl : '&' abs_decl",
1058"abs_decl : direct_abs_decl",
1059"direct_abs_decl : '(' abs_decl ')'",
1060"direct_abs_decl : direct_abs_decl array_mod",
1061"direct_abs_decl : array_mod",
1062"direct_abs_decl : direct_abs_decl func_mod",
1063"direct_abs_decl : func_mod",
1064"array_mod : '[' ']'",
1065"array_mod : '[' INT ']'",
1066"func_mod : '(' ')'",
1067"func_mod : '(' nonempty_typelist ')'",
1068"type : ptype",
1069"type : typebase COLONCOLON '*'",
1070"typebase : TYPENAME",
1071"typebase : INT_KEYWORD",
1072"typebase : LONG",
1073"typebase : SHORT",
1074"typebase : LONG INT_KEYWORD",
1075"typebase : LONG SIGNED_KEYWORD INT_KEYWORD",
1076"typebase : LONG SIGNED_KEYWORD",
1077"typebase : SIGNED_KEYWORD LONG INT_KEYWORD",
1078"typebase : UNSIGNED LONG INT_KEYWORD",
1079"typebase : LONG UNSIGNED INT_KEYWORD",
1080"typebase : LONG UNSIGNED",
1081"typebase : LONG LONG",
1082"typebase : LONG LONG INT_KEYWORD",
1083"typebase : LONG LONG SIGNED_KEYWORD INT_KEYWORD",
1084"typebase : LONG LONG SIGNED_KEYWORD",
1085"typebase : SIGNED_KEYWORD LONG LONG",
1086"typebase : SIGNED_KEYWORD LONG LONG INT_KEYWORD",
1087"typebase : UNSIGNED LONG LONG",
1088"typebase : UNSIGNED LONG LONG INT_KEYWORD",
1089"typebase : LONG LONG UNSIGNED",
1090"typebase : LONG LONG UNSIGNED INT_KEYWORD",
1091"typebase : SHORT INT_KEYWORD",
1092"typebase : SHORT SIGNED_KEYWORD INT_KEYWORD",
1093"typebase : SHORT SIGNED_KEYWORD",
1094"typebase : UNSIGNED SHORT INT_KEYWORD",
1095"typebase : SHORT UNSIGNED",
1096"typebase : SHORT UNSIGNED INT_KEYWORD",
1097"typebase : DOUBLE_KEYWORD",
1098"typebase : LONG DOUBLE_KEYWORD",
1099"typebase : STRUCT name",
1100"typebase : CLASS name",
1101"typebase : UNION name",
1102"typebase : ENUM name",
1103"typebase : UNSIGNED typename",
1104"typebase : UNSIGNED",
1105"typebase : SIGNED_KEYWORD typename",
1106"typebase : SIGNED_KEYWORD",
1107"typebase : TEMPLATE name '<' type '>'",
1108"typebase : const_or_volatile_or_space_identifier_noopt typebase",
1109"typebase : typebase const_or_volatile_or_space_identifier_noopt",
1110"typebase : qualified_type",
1111"qualified_type : typebase COLONCOLON name",
1112"typename : TYPENAME",
1113"typename : INT_KEYWORD",
1114"typename : LONG",
1115"typename : SHORT",
1116"nonempty_typelist : type",
1117"nonempty_typelist : nonempty_typelist ',' type",
1118"ptype : typebase",
1119"ptype : ptype const_or_volatile_or_space_identifier abs_decl const_or_volatile_or_space_identifier",
1120"const_and_volatile : CONST_KEYWORD VOLATILE_KEYWORD",
1121"const_and_volatile : VOLATILE_KEYWORD CONST_KEYWORD",
1122"const_or_volatile_noopt : const_and_volatile",
1123"const_or_volatile_noopt : CONST_KEYWORD",
1124"const_or_volatile_noopt : VOLATILE_KEYWORD",
1125"name : NAME",
1126"name : BLOCKNAME",
1127"name : TYPENAME",
1128"name : NAME_OR_INT",
1129"name_not_typename : NAME",
1130"name_not_typename : BLOCKNAME",
1131};
1132#endif
1133#ifdef YYSTACKSIZE10000
1134#undef YYMAXDEPTH10000
1135#define YYMAXDEPTH10000 YYSTACKSIZE10000
1136#else
1137#ifdef YYMAXDEPTH10000
1138#define YYSTACKSIZE10000 YYMAXDEPTH10000
1139#else
1140#define YYSTACKSIZE10000 10000
1141#define YYMAXDEPTH10000 10000
1142#endif
1143#endif
1144#define YYINITSTACKSIZE200 200
1145/* LINTUSED */
1146int yydebugc_debug;
1147int yynerrsc_nerrs;
1148int yyerrflagc_errflag;
1149int yycharc_char;
1150short *yyssp;
1151YYSTYPE *yyvsp;
1152YYSTYPE yyvalc_val;
1153YYSTYPE yylvalc_lval;
1154short *yyss;
1155short *yysslim;
1156YYSTYPE *yyvs;
1157unsigned int yystacksize;
1158int yyparsec_parse(void);
1159#line 1035 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
1160
1161/* Take care of parsing a number (anything that starts with a digit).
1162 Set yylval and return the token type; update lexptr.
1163 LEN is the number of characters in it. */
1164
1165/*** Needs some error checking for the float case ***/
1166
1167static int
1168parse_number (p, len, parsed_float, putithere)
1169 char *p;
1170 int len;
1171 int parsed_float;
1172 YYSTYPE *putithere;
1173{
1174 /* FIXME: Shouldn't these be unsigned? We don't deal with negative values
1175 here, and we do kind of silly things like cast to unsigned. */
1176 LONGESTlong n = 0;
1177 LONGESTlong prevn = 0;
1178 ULONGESTunsigned long un;
1179
1180 int i = 0;
1181 int c;
1182 int base = input_radix;
1183 int unsigned_p = 0;
1184
1185 /* Number of "L" suffixes encountered. */
1186 int long_p = 0;
1187
1188 /* We have found a "L" or "U" suffix. */
1189 int found_suffix = 0;
1190
1191 ULONGESTunsigned long high_bit;
1192 struct type *signed_type;
1193 struct type *unsigned_type;
1194
1195 if (parsed_float
36.1
'parsed_float' is 0
)
37
Taking false branch
1196 {
1197 /* It's a float since it contains a point or an exponent. */
1198 char c;
1199 int num = 0; /* number of tokens scanned by scanf */
1200 char saved_char = p[len];
1201
1202 p[len] = 0; /* null-terminate the token */
1203 if (sizeof (putithere->typed_val_float.dval) <= sizeof (float))
1204 num = sscanf (p, "%g%c", (float *) &putithere->typed_val_float.dval,&c);
1205 else if (sizeof (putithere->typed_val_float.dval) <= sizeof (double))
1206 num = sscanf (p, "%lg%c", (double *) &putithere->typed_val_float.dval,&c);
1207 else
1208 {
1209#ifdef SCANF_HAS_LONG_DOUBLE1
1210 num = sscanf (p, "%Lg%c", &putithere->typed_val_float.dval,&c);
1211#else
1212 /* Scan it into a double, then assign it to the long double.
1213 This at least wins with values representable in the range
1214 of doubles. */
1215 double temp;
1216 num = sscanf (p, "%lg%c", &temp,&c);
1217 putithere->typed_val_float.dval = temp;
1218#endif
1219 }
1220 p[len] = saved_char; /* restore the input stream */
1221 if (num != 1) /* check scanf found ONLY a float ... */
1222 return ERROR271;
1223 /* See if it has `f' or `l' suffix (float or long double). */
1224
1225 c = tolower (p[len - 1]);
1226
1227 if (c == 'f')
1228 putithere->typed_val_float.type = builtin_type (current_gdbarch)->builtin_float;
1229 else if (c == 'l')
1230 putithere->typed_val_float.type = builtin_type (current_gdbarch)->builtin_long_double;
1231 else if (isdigit (c) || c == '.')
1232 putithere->typed_val_float.type = builtin_type (current_gdbarch)->builtin_double;
1233 else
1234 return ERROR271;
1235
1236 return FLOAT258;
1237 }
1238
1239 /* Handle base-switching prefixes 0x, 0t, 0d, 0 */
1240 if (p[0] == '0')
38
Array access (from variable 'p') results in a null pointer dereference
1241 switch (p[1])
1242 {
1243 case 'x':
1244 case 'X':
1245 if (len >= 3)
1246 {
1247 p += 2;
1248 base = 16;
1249 len -= 2;
1250 }
1251 break;
1252
1253 case 't':
1254 case 'T':
1255 case 'd':
1256 case 'D':
1257 if (len >= 3)
1258 {
1259 p += 2;
1260 base = 10;
1261 len -= 2;
1262 }
1263 break;
1264
1265 default:
1266 base = 8;
1267 break;
1268 }
1269
1270 while (len-- > 0)
1271 {
1272 c = *p++;
1273 if (c >= 'A' && c <= 'Z')
1274 c += 'a' - 'A';
1275 if (c != 'l' && c != 'u')
1276 n *= base;
1277 if (c >= '0' && c <= '9')
1278 {
1279 if (found_suffix)
1280 return ERROR271;
1281 n += i = c - '0';
1282 }
1283 else
1284 {
1285 if (base > 10 && c >= 'a' && c <= 'f')
1286 {
1287 if (found_suffix)
1288 return ERROR271;
1289 n += i = c - 'a' + 10;
1290 }
1291 else if (c == 'l')
1292 {
1293 ++long_p;
1294 found_suffix = 1;
1295 }
1296 else if (c == 'u')
1297 {
1298 unsigned_p = 1;
1299 found_suffix = 1;
1300 }
1301 else
1302 return ERROR271; /* Char not a digit */
1303 }
1304 if (i >= base)
1305 return ERROR271; /* Invalid digit in this base */
1306
1307 /* Portably test for overflow (only works for nonzero values, so make
1308 a second check for zero). FIXME: Can't we just make n and prevn
1309 unsigned and avoid this? */
1310 if (c != 'l' && c != 'u' && (prevn >= n) && n != 0)
1311 unsigned_p = 1; /* Try something unsigned */
1312
1313 /* Portably test for unsigned overflow.
1314 FIXME: This check is wrong; for example it doesn't find overflow
1315 on 0x123456789 when LONGEST is 32 bits. */
1316 if (c != 'l' && c != 'u' && n != 0)
1317 {
1318 if ((unsigned_p && (ULONGESTunsigned long) prevn >= (ULONGESTunsigned long) n))
1319 error ("Numeric constant too large.");
1320 }
1321 prevn = n;
1322 }
1323
1324 /* An integer constant is an int, a long, or a long long. An L
1325 suffix forces it to be long; an LL suffix forces it to be long
1326 long. If not forced to a larger size, it gets the first type of
1327 the above that it fits in. To figure out whether it fits, we
1328 shift it right and see whether anything remains. Note that we
1329 can't shift sizeof (LONGEST) * HOST_CHAR_BIT bits or more in one
1330 operation, because many compilers will warn about such a shift
1331 (which always produces a zero result). Sometimes TARGET_INT_BIT
1332 or TARGET_LONG_BIT will be that big, sometimes not. To deal with
1333 the case where it is we just always shift the value more than
1334 once, with fewer bits each time. */
1335
1336 un = (ULONGESTunsigned long)n >> 2;
1337 if (long_p == 0
1338 && (un >> (TARGET_INT_BIT(gdbarch_int_bit (current_gdbarch)) - 2)) == 0)
1339 {
1340 high_bit = ((ULONGESTunsigned long)1) << (TARGET_INT_BIT(gdbarch_int_bit (current_gdbarch))-1);
1341
1342 /* A large decimal (not hex or octal) constant (between INT_MAX
1343 and UINT_MAX) is a long or unsigned long, according to ANSI,
1344 never an unsigned int, but this code treats it as unsigned
1345 int. This probably should be fixed. GCC gives a warning on
1346 such constants. */
1347
1348 unsigned_type = builtin_type (current_gdbarch)->builtin_unsigned_int;
1349 signed_type = builtin_type (current_gdbarch)->builtin_int;
1350 }
1351 else if (long_p <= 1
1352 && (un >> (TARGET_LONG_BIT(gdbarch_long_bit (current_gdbarch)) - 2)) == 0)
1353 {
1354 high_bit = ((ULONGESTunsigned long)1) << (TARGET_LONG_BIT(gdbarch_long_bit (current_gdbarch))-1);
1355 unsigned_type = builtin_type (current_gdbarch)->builtin_unsigned_long;
1356 signed_type = builtin_type (current_gdbarch)->builtin_long;
1357 }
1358 else
1359 {
1360 int shift;
1361 if (sizeof (ULONGESTunsigned long) * HOST_CHAR_BIT8 < TARGET_LONG_LONG_BIT(gdbarch_long_long_bit (current_gdbarch)))
1362 /* A long long does not fit in a LONGEST. */
1363 shift = (sizeof (ULONGESTunsigned long) * HOST_CHAR_BIT8 - 1);
1364 else
1365 shift = (TARGET_LONG_LONG_BIT(gdbarch_long_long_bit (current_gdbarch)) - 1);
1366 high_bit = (ULONGESTunsigned long) 1 << shift;
1367 unsigned_type = builtin_type (current_gdbarch)->builtin_unsigned_long_long;
1368 signed_type = builtin_type (current_gdbarch)->builtin_long_long;
1369 }
1370
1371 putithere->typed_val_int.val = n;
1372
1373 /* If the high bit of the worked out type is set then this number
1374 has to be unsigned. */
1375
1376 if (unsigned_p || (n & high_bit))
1377 {
1378 putithere->typed_val_int.type = unsigned_type;
1379 }
1380 else
1381 {
1382 putithere->typed_val_int.type = signed_type;
1383 }
1384
1385 return INT257;
1386}
1387
1388struct token
1389{
1390 char *operator;
1391 int token;
1392 enum exp_opcode opcode;
1393};
1394
1395static const struct token tokentab3[] =
1396 {
1397 {">>=", ASSIGN_MODIFY280, BINOP_RSH},
1398 {"<<=", ASSIGN_MODIFY280, BINOP_LSH}
1399 };
1400
1401static const struct token tokentab2[] =
1402 {
1403 {"+=", ASSIGN_MODIFY280, BINOP_ADD},
1404 {"-=", ASSIGN_MODIFY280, BINOP_SUB},
1405 {"*=", ASSIGN_MODIFY280, BINOP_MUL},
1406 {"/=", ASSIGN_MODIFY280, BINOP_DIV},
1407 {"%=", ASSIGN_MODIFY280, BINOP_REM},
1408 {"|=", ASSIGN_MODIFY280, BINOP_BITWISE_IOR},
1409 {"&=", ASSIGN_MODIFY280, BINOP_BITWISE_AND},
1410 {"^=", ASSIGN_MODIFY280, BINOP_BITWISE_XOR},
1411 {"++", INCREMENT293, BINOP_END},
1412 {"--", DECREMENT294, BINOP_END},
1413 {"->", ARROW295, BINOP_END},
1414 {"&&", ANDAND285, BINOP_END},
1415 {"||", OROR284, BINOP_END},
1416 {"::", COLONCOLON269, BINOP_END},
1417 {"<<", LSH290, BINOP_END},
1418 {">>", RSH291, BINOP_END},
1419 {"==", EQUAL286, BINOP_END},
1420 {"!=", NOTEQUAL287, BINOP_END},
1421 {"<=", LEQ288, BINOP_END},
1422 {">=", GEQ289, BINOP_END}
1423 };
1424
1425/* Read one token, getting characters through lexptr. */
1426
1427static int
1428yylexc_lex ()
1429{
1430 int c;
1431 int namelen;
1432 unsigned int i;
1433 char *tokstart;
1434 char *tokptr;
1435 int tempbufindex;
1436 static char *tempbuf;
1437 static int tempbufsize;
1438 struct symbol * sym_class = NULL((void*)0);
1439 char * token_string = NULL((void*)0);
1440 int class_prefix = 0;
1441 int unquoted_expr;
1442
1443 retry:
1444
1445 /* Check if this is a macro invocation that we need to expand. */
1446 if (! scanning_macro_expansion ())
1447 {
1448 char *expanded = macro_expand_next (&lexptr,
1449 expression_macro_lookup_func,
1450 expression_macro_lookup_baton);
1451
1452 if (expanded)
1453 scan_macro_expansion (expanded);
1454 }
1455
1456 prev_lexptr = lexptr;
1457 unquoted_expr = 1;
1458
1459 tokstart = lexptr;
1460 /* See if it is a special token of length 3. */
1461 for (i = 0; i < sizeof tokentab3 / sizeof tokentab3[0]; i++)
1462 if (strncmp (tokstart, tokentab3[i].operator, 3) == 0)
1463 {
1464 lexptr += 3;
1465 yylvalc_lval.opcode = tokentab3[i].opcode;
1466 return tokentab3[i].token;
1467 }
1468
1469 /* See if it is a special token of length 2. */
1470 for (i = 0; i < sizeof tokentab2 / sizeof tokentab2[0]; i++)
1471 if (strncmp (tokstart, tokentab2[i].operator, 2) == 0)
1472 {
1473 lexptr += 2;
1474 yylvalc_lval.opcode = tokentab2[i].opcode;
1475 return tokentab2[i].token;
1476 }
1477
1478 switch (c = *tokstart)
1479 {
1480 case 0:
1481 /* If we were just scanning the result of a macro expansion,
1482 then we need to resume scanning the original text.
1483 Otherwise, we were already scanning the original text, and
1484 we're really done. */
1485 if (scanning_macro_expansion ())
1486 {
1487 finished_macro_expansion ();
1488 goto retry;
1489 }
1490 else
1491 return 0;
1492
1493 case ' ':
1494 case '\t':
1495 case '\n':
1496 lexptr++;
1497 goto retry;
1498
1499 case '\'':
1500 /* We either have a character constant ('0' or '\177' for example)
1501 or we have a quoted symbol reference ('foo(int,int)' in C++
1502 for example). */
1503 lexptr++;
1504 c = *lexptr++;
1505 if (c == '\\')
1506 c = parse_escape (&lexptr);
1507 else if (c == '\'')
1508 error ("Empty character constant.");
1509 else if (! host_char_to_target (c, &c))
1510 {
1511 int toklen = lexptr - tokstart + 1;
1512 char *tok = alloca (toklen + 1)__builtin_alloca(toklen + 1);
1513 memcpy (tok, tokstart, toklen);
1514 tok[toklen] = '\0';
1515 error ("There is no character corresponding to %s in the target "
1516 "character set `%s'.", tok, target_charset ());
1517 }
1518
1519 yylvalc_lval.typed_val_int.val = c;
1520 yylvalc_lval.typed_val_int.type = builtin_type (current_gdbarch)->builtin_char;
1521
1522 c = *lexptr++;
1523 if (c != '\'')
1524 {
1525 namelen = skip_quoted (tokstart) - tokstart;
1526 if (namelen > 2)
1527 {
1528 lexptr = tokstart + namelen;
1529 unquoted_expr = 0;
1530 if (lexptr[-1] != '\'')
1531 error ("Unmatched single quote.");
1532 namelen -= 2;
1533 tokstart++;
1534 goto tryname;
1535 }
1536 error ("Invalid character constant.");
1537 }
1538 return INT257;
1539
1540 case '(':
1541 paren_depth++;
1542 lexptr++;
1543 return c;
1544
1545 case ')':
1546 if (paren_depth == 0)
1547 return 0;
1548 paren_depth--;
1549 lexptr++;
1550 return c;
1551
1552 case ',':
1553 if (comma_terminates
1554 && paren_depth == 0
1555 && ! scanning_macro_expansion ())
1556 return 0;
1557 lexptr++;
1558 return c;
1559
1560 case '.':
1561 /* Might be a floating point number. */
1562 if (lexptr[1] < '0' || lexptr[1] > '9')
1563 goto symbol; /* Nope, must be a symbol. */
1564 /* FALL THRU into number case. */
1565
1566 case '0':
1567 case '1':
1568 case '2':
1569 case '3':
1570 case '4':
1571 case '5':
1572 case '6':
1573 case '7':
1574 case '8':
1575 case '9':
1576 {
1577 /* It's a number. */
1578 int got_dot = 0, got_e = 0, toktype;
1579 char *p = tokstart;
1580 int hex = input_radix > 10;
1581
1582 if (c == '0' && (p[1] == 'x' || p[1] == 'X'))
1583 {
1584 p += 2;
1585 hex = 1;
1586 }
1587 else if (c == '0' && (p[1]=='t' || p[1]=='T' || p[1]=='d' || p[1]=='D'))
1588 {
1589 p += 2;
1590 hex = 0;
1591 }
1592
1593 for (;; ++p)
1594 {
1595 /* This test includes !hex because 'e' is a valid hex digit
1596 and thus does not indicate a floating point number when
1597 the radix is hex. */
1598 if (!hex && !got_e && (*p == 'e' || *p == 'E'))
1599 got_dot = got_e = 1;
1600 /* This test does not include !hex, because a '.' always indicates
1601 a decimal floating point number regardless of the radix. */
1602 else if (!got_dot && *p == '.')
1603 got_dot = 1;
1604 else if (got_e && (p[-1] == 'e' || p[-1] == 'E')
1605 && (*p == '-' || *p == '+'))
1606 /* This is the sign of the exponent, not the end of the
1607 number. */
1608 continue;
1609 /* We will take any letters or digits. parse_number will
1610 complain if past the radix, or if L or U are not final. */
1611 else if ((*p < '0' || *p > '9')
1612 && ((*p < 'a' || *p > 'z')
1613 && (*p < 'A' || *p > 'Z')))
1614 break;
1615 }
1616 toktype = parse_number (tokstart, p - tokstart, got_dot|got_e, &yylvalc_lval);
1617 if (toktype == ERROR271)
1618 {
1619 char *err_copy = (char *) alloca (p - tokstart + 1)__builtin_alloca(p - tokstart + 1);
1620
1621 memcpy (err_copy, tokstart, p - tokstart);
1622 err_copy[p - tokstart] = 0;
1623 error ("Invalid number \"%s\".", err_copy);
1624 }
1625 lexptr = p;
1626 return toktype;
1627 }
1628
1629 case '+':
1630 case '-':
1631 case '*':
1632 case '/':
1633 case '%':
1634 case '|':
1635 case '&':
1636 case '^':
1637 case '~':
1638 case '!':
1639 case '@':
1640 case '<':
1641 case '>':
1642 case '[':
1643 case ']':
1644 case '?':
1645 case ':':
1646 case '=':
1647 case '{':
1648 case '}':
1649 symbol:
1650 lexptr++;
1651 return c;
1652
1653 case '"':
1654
1655 /* Build the gdb internal form of the input string in tempbuf,
1656 translating any standard C escape forms seen. Note that the
1657 buffer is null byte terminated *only* for the convenience of
1658 debugging gdb itself and printing the buffer contents when
1659 the buffer contains no embedded nulls. Gdb does not depend
1660 upon the buffer being null byte terminated, it uses the length
1661 string instead. This allows gdb to handle C strings (as well
1662 as strings in other languages) with embedded null bytes */
1663
1664 tokptr = ++tokstart;
1665 tempbufindex = 0;
1666
1667 do {
1668 char *char_start_pos = tokptr;
1669
1670 /* Grow the static temp buffer if necessary, including allocating
1671 the first one on demand. */
1672 if (tempbufindex + 1 >= tempbufsize)
1673 {
1674 tempbuf = (char *) xrealloc (tempbuf, tempbufsize += 64);
1675 }
1676 switch (*tokptr)
1677 {
1678 case '\0':
1679 case '"':
1680 /* Do nothing, loop will terminate. */
1681 break;
1682 case '\\':
1683 tokptr++;
1684 c = parse_escape (&tokptr);
1685 if (c == -1)
1686 {
1687 continue;
1688 }
1689 tempbuf[tempbufindex++] = c;
1690 break;
1691 default:
1692 c = *tokptr++;
1693 if (! host_char_to_target (c, &c))
1694 {
1695 int len = tokptr - char_start_pos;
1696 char *copy = alloca (len + 1)__builtin_alloca(len + 1);
1697 memcpy (copy, char_start_pos, len);
1698 copy[len] = '\0';
1699
1700 error ("There is no character corresponding to `%s' "
1701 "in the target character set `%s'.",
1702 copy, target_charset ());
1703 }
1704 tempbuf[tempbufindex++] = c;
1705 break;
1706 }
1707 } while ((*tokptr != '"') && (*tokptr != '\0'));
1708 if (*tokptr++ != '"')
1709 {
1710 error ("Unterminated string in expression.");
1711 }
1712 tempbuf[tempbufindex] = '\0'; /* See note above */
1713 yylvalc_lval.sval.ptr = tempbuf;
1714 yylvalc_lval.sval.length = tempbufindex;
1715 lexptr = tokptr;
1716 return (STRING259);
1717 }
1718
1719 if (!(c == '_' || c == '$'
1720 || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')))
1721 /* We must have come across a bad character (e.g. ';'). */
1722 error ("Invalid character '%c' in expression.", c);
1723
1724 /* It's a name. See how long it is. */
1725 namelen = 0;
1726 for (c = tokstart[namelen];
1727 (c == '_' || c == '$' || (c >= '0' && c <= '9')
1728 || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || c == '<');)
1729 {
1730 /* Template parameter lists are part of the name.
1731 FIXME: This mishandles `print $a<4&&$a>3'. */
1732
1733 if (c == '<')
1734 {
1735 /* Scan ahead to get rest of the template specification. Note
1736 that we look ahead only when the '<' adjoins non-whitespace
1737 characters; for comparison expressions, e.g. "a < b > c",
1738 there must be spaces before the '<', etc. */
1739
1740 char * p = find_template_name_end (tokstart + namelen);
1741 if (p)
1742 namelen = p - tokstart;
1743 break;
1744 }
1745 c = tokstart[++namelen];
1746 }
1747
1748 /* The token "if" terminates the expression and is NOT removed from
1749 the input stream. It doesn't count if it appears in the
1750 expansion of a macro. */
1751 if (namelen == 2
1752 && tokstart[0] == 'i'
1753 && tokstart[1] == 'f'
1754 && ! scanning_macro_expansion ())
1755 {
1756 return 0;
1757 }
1758
1759 lexptr += namelen;
1760
1761 tryname:
1762
1763 /* Catch specific keywords. Should be done with a data structure. */
1764 switch (namelen)
1765 {
1766 case 8:
1767 if (strncmp (tokstart, "unsigned", 8) == 0)
1768 return UNSIGNED268;
1769 if (current_language->la_language == language_cplus
1770 && strncmp (tokstart, "template", 8) == 0)
1771 return TEMPLATE270;
1772 if (strncmp (tokstart, "volatile", 8) == 0)
1773 return VOLATILE_KEYWORD277;
1774 break;
1775 case 6:
1776 if (strncmp (tokstart, "struct", 6) == 0)
1777 return STRUCT263;
1778 if (strncmp (tokstart, "signed", 6) == 0)
1779 return SIGNED_KEYWORD272;
1780 if (strncmp (tokstart, "sizeof", 6) == 0)
1781 return SIZEOF267;
1782 if (strncmp (tokstart, "double", 6) == 0)
1783 return DOUBLE_KEYWORD278;
1784 break;
1785 case 5:
1786 if (current_language->la_language == language_cplus)
1787 {
1788 if (strncmp (tokstart, "false", 5) == 0)
1789 return FALSEKEYWORD282;
1790 if (strncmp (tokstart, "class", 5) == 0)
1791 return CLASS264;
1792 }
1793 if (strncmp (tokstart, "union", 5) == 0)
1794 return UNION265;
1795 if (strncmp (tokstart, "short", 5) == 0)
1796 return SHORT274;
1797 if (strncmp (tokstart, "const", 5) == 0)
1798 return CONST_KEYWORD276;
1799 break;
1800 case 4:
1801 if (strncmp (tokstart, "enum", 4) == 0)
1802 return ENUM266;
1803 if (strncmp (tokstart, "long", 4) == 0)
1804 return LONG273;
1805 if (current_language->la_language == language_cplus)
1806 {
1807 if (strncmp (tokstart, "true", 4) == 0)
1808 return TRUEKEYWORD281;
1809 }
1810 break;
1811 case 3:
1812 if (strncmp (tokstart, "int", 3) == 0)
1813 return INT_KEYWORD275;
1814 break;
1815 default:
1816 break;
1817 }
1818
1819 yylvalc_lval.sval.ptr = tokstart;
1820 yylvalc_lval.sval.length = namelen;
1821
1822 if (*tokstart == '$')
1823 {
1824 write_dollar_variable (yylvalc_lval.sval);
1825 return VARIABLE279;
1826 }
1827
1828 /* Look ahead and see if we can consume more of the input
1829 string to get a reasonable class/namespace spec or a
1830 fully-qualified name. This is a kludge to get around the
1831 HP aCC compiler's generation of symbol names with embedded
1832 colons for namespace and nested classes. */
1833
1834 /* NOTE: carlton/2003-09-24: I don't entirely understand the
1835 HP-specific code, either here or in linespec. Having said that,
1836 I suspect that we're actually moving towards their model: we want
1837 symbols whose names are fully qualified, which matches the
1838 description above. */
1839 if (unquoted_expr)
1840 {
1841 /* Only do it if not inside single quotes */
1842 sym_class = parse_nested_classes_for_hpacc (yylvalc_lval.sval.ptr, yylvalc_lval.sval.length,
1843 &token_string, &class_prefix, &lexptr);
1844 if (sym_class)
1845 {
1846 /* Replace the current token with the bigger one we found */
1847 yylvalc_lval.sval.ptr = token_string;
1848 yylvalc_lval.sval.length = strlen (token_string);
1849 }
1850 }
1851
1852 /* Use token-type BLOCKNAME for symbols that happen to be defined as
1853 functions or symtabs. If this is not so, then ...
1854 Use token-type TYPENAME for symbols that happen to be defined
1855 currently as names of types; NAME for other symbols.
1856 The caller is not constrained to care about the distinction. */
1857 {
1858 char *tmp = copy_name (yylvalc_lval.sval);
1859 struct symbol *sym;
1860 int is_a_field_of_this = 0;
1861 int hextype;
1862
1863 sym = lookup_symbol (tmp, expression_context_block,
1864 VAR_DOMAIN,
1865 current_language->la_language == language_cplus
1866 ? &is_a_field_of_this : (int *) NULL((void*)0),
1867 (struct symtab **) NULL((void*)0));
1868 /* Call lookup_symtab, not lookup_partial_symtab, in case there are
1869 no psymtabs (coff, xcoff, or some future change to blow away the
1870 psymtabs once once symbols are read). */
1871 if (sym && SYMBOL_CLASS (sym)(sym)->aclass == LOC_BLOCK)
1872 {
1873 yylvalc_lval.ssym.sym = sym;
1874 yylvalc_lval.ssym.is_a_field_of_this = is_a_field_of_this;
1875 return BLOCKNAME296;
1876 }
1877 else if (!sym)
1878 { /* See if it's a file name. */
1879 struct symtab *symtab;
1880
1881 symtab = lookup_symtab (tmp);
1882
1883 if (symtab)
1884 {
1885 yylvalc_lval.bval = BLOCKVECTOR_BLOCK (BLOCKVECTOR (symtab), STATIC_BLOCK)((symtab)->blockvector)->block[STATIC_BLOCK];
1886 return FILENAME297;
1887 }
1888 }
1889
1890 if (sym && SYMBOL_CLASS (sym)(sym)->aclass == LOC_TYPEDEF)
1891 {
1892 /* NOTE: carlton/2003-09-25: There used to be code here to
1893 handle nested types. It didn't work very well. See the
1894 comment before qualified_type for more info. */
1895 yylvalc_lval.tsym.type = SYMBOL_TYPE (sym)(sym)->type;
1896 return TYPENAME261;
1897 }
1898 yylvalc_lval.tsym.type
1899 = language_lookup_primitive_type_by_name (current_language,
1900 current_gdbarch, tmp);
1901 if (yylvalc_lval.tsym.type != NULL((void*)0))
1902 return TYPENAME261;
1903
1904 /* Input names that aren't symbols but ARE valid hex numbers,
1905 when the input radix permits them, can be names or numbers
1906 depending on the parse. Note we support radixes > 16 here. */
1907 if (!sym &&
1908 ((tokstart[0] >= 'a' && tokstart[0] < 'a' + input_radix - 10) ||
1909 (tokstart[0] >= 'A' && tokstart[0] < 'A' + input_radix - 10)))
1910 {
1911 YYSTYPE newlval; /* Its value is ignored. */
1912 hextype = parse_number (tokstart, namelen, 0, &newlval);
1913 if (hextype == INT257)
1914 {
1915 yylvalc_lval.ssym.sym = sym;
1916 yylvalc_lval.ssym.is_a_field_of_this = is_a_field_of_this;
1917 return NAME_OR_INT262;
1918 }
1919 }
1920
1921 /* Any other kind of symbol */
1922 yylvalc_lval.ssym.sym = sym;
1923 yylvalc_lval.ssym.is_a_field_of_this = is_a_field_of_this;
1924 return NAME260;
1925 }
1926}
1927
1928void
1929yyerrorc_error (msg)
1930 char *msg;
1931{
1932 if (prev_lexptr)
1933 lexptr = prev_lexptr;
1934
1935 error ("A %s in expression, near `%s'.", (msg ? msg : "error"), lexptr);
1936}
1937/* allocate initial stack or double stack size, up to YYMAXDEPTH */
1938static int yygrowstack(void)
1939{
1940 unsigned int newsize;
1941 long sslen;
1942 short *newss;
1943 YYSTYPE *newvs;
1944
1945 if ((newsize = yystacksize) == 0)
1946 newsize = YYINITSTACKSIZE200;
1947 else if (newsize >= YYMAXDEPTH10000)
1948 return -1;
1949 else if ((newsize *= 2) > YYMAXDEPTH10000)
1950 newsize = YYMAXDEPTH10000;
1951 sslen = yyssp - yyss;
1952#ifdef SIZE_MAX
1953#define YY_SIZE_MAX0xffffffffU SIZE_MAX
1954#else
1955#define YY_SIZE_MAX0xffffffffU 0xffffffffU
1956#endif
1957 if (newsize && YY_SIZE_MAX0xffffffffU / newsize < sizeof *newss)
1958 goto bail;
1959 newss = (short *)xrealloc(yyss, newsize * sizeof *newss);
1960 if (newss == NULL((void*)0))
1961 goto bail;
1962 yyss = newss;
1963 yyssp = newss + sslen;
1964 if (newsize && YY_SIZE_MAX0xffffffffU / newsize < sizeof *newvs)
1965 goto bail;
1966 newvs = (YYSTYPE *)xrealloc(yyvs, newsize * sizeof *newvs);
1967 if (newvs == NULL((void*)0))
1968 goto bail;
1969 yyvs = newvs;
1970 yyvsp = newvs + sslen;
1971 yystacksize = newsize;
1972 yysslim = yyss + newsize - 1;
1973 return 0;
1974bail:
1975 if (yyss)
1976 free(yyss);
1977 if (yyvs)
1978 free(yyvs);
1979 yyss = yyssp = NULL((void*)0);
1980 yyvs = yyvsp = NULL((void*)0);
1981 yystacksize = 0;
1982 return -1;
1983}
1984
1985#define YYABORTgoto yyabort goto yyabort
1986#define YYREJECTgoto yyabort goto yyabort
1987#define YYACCEPTgoto yyaccept goto yyaccept
1988#define YYERRORgoto yyerrlab goto yyerrlab
1989int
1990yyparsec_parse(void)
1991{
1992 int yym, yyn, yystatec_state;
1993#if YYDEBUG1
1994 const char *yysc_s;
1995
1996 if ((yysc_s = getenv("YYDEBUG")))
1
Assuming 'c_s' is null
2
Taking false branch
1997 {
1998 yyn = *yysc_s;
1999 if (yyn >= '0' && yyn <= '9')
2000 yydebugc_debug = yyn - '0';
2001 }
2002#endif /* YYDEBUG */
2003
2004 yynerrsc_nerrs = 0;
2005 yyerrflagc_errflag = 0;
2006 yycharc_char = (-1);
2007
2008 if (yyss == NULL((void*)0) && yygrowstack()) goto yyoverflow;
3
Assuming 'yyss' is not equal to NULL
2009 yyssp = yyss;
2010 yyvsp = yyvs;
2011 *yyssp = yystatec_state = 0;
2012
2013yyloop:
2014 if ((yyn = yydefredc_yydefred[yystatec_state]) != 0) goto yyreduce;
4
Taking false branch
28
Assuming the condition is true
29
Taking true branch
30
Control jumps to line 2117
2015 if (yycharc_char < 0)
5
Taking true branch
2016 {
2017 if ((yycharc_char = yylexc_lex()) < 0) yycharc_char = 0;
6
Assuming the condition is false
7
Taking false branch
2018#if YYDEBUG1
2019 if (yydebugc_debug)
8
Assuming 'c_debug' is 0
9
Taking false branch
2020 {
2021 yysc_s = 0;
2022 if (yycharc_char <= YYMAXTOKEN297) yysc_s = yynamec_name[yycharc_char];
2023 if (!yysc_s) yysc_s = "illegal-symbol";
2024 printf("%sdebug: state %d, reading %d (%s)\n",
2025 YYPREFIX"yy", yystatec_state, yycharc_char, yysc_s);
2026 }
2027#endif
2028 }
2029 if ((yyn = yysindexc_yysindex[yystatec_state]) && (yyn += yycharc_char) >= 0 &&
10
Assuming 'yyn' is not equal to 0
11
Assuming the condition is true
2030 yyn <= YYTABLESIZE3243 && yycheckc_yycheck[yyn] == yycharc_char)
12
Assuming 'yyn' is > YYTABLESIZE
2031 {
2032#if YYDEBUG1
2033 if (yydebugc_debug)
2034 printf("%sdebug: state %d, shifting to state %d\n",
2035 YYPREFIX"yy", yystatec_state, yytablec_yytable[yyn]);
2036#endif
2037 if (yyssp >= yysslim && yygrowstack())
2038 {
2039 goto yyoverflow;
2040 }
2041 *++yyssp = yystatec_state = yytablec_yytable[yyn];
2042 *++yyvsp = yylvalc_lval;
2043 yycharc_char = (-1);
2044 if (yyerrflagc_errflag > 0) --yyerrflagc_errflag;
2045 goto yyloop;
2046 }
2047 if ((yyn = yyrindexc_yyrindex[yystatec_state]) && (yyn += yycharc_char) >= 0 &&
13
Assuming 'yyn' is not equal to 0
16
Taking true branch
2048 yyn <= YYTABLESIZE3243 && yycheckc_yycheck[yyn] == yycharc_char)
14
Assuming 'yyn' is <= YYTABLESIZE
15
Assuming the condition is true
2049 {
2050 yyn = yytablec_yytable[yyn];
2051 goto yyreduce;
17
Control jumps to line 2117
2052 }
2053 if (yyerrflagc_errflag) goto yyinrecovery;
2054#if defined(__GNUC__4)
2055 goto yynewerror;
2056#endif
2057yynewerror:
2058 yyerrorc_error("syntax error");
2059#if defined(__GNUC__4)
2060 goto yyerrlab;
2061#endif
2062yyerrlab:
2063 ++yynerrsc_nerrs;
2064yyinrecovery:
2065 if (yyerrflagc_errflag < 3)
2066 {
2067 yyerrflagc_errflag = 3;
2068 for (;;)
2069 {
2070 if ((yyn = yysindexc_yysindex[*yyssp]) && (yyn += YYERRCODE256) >= 0 &&
2071 yyn <= YYTABLESIZE3243 && yycheckc_yycheck[yyn] == YYERRCODE256)
2072 {
2073#if YYDEBUG1
2074 if (yydebugc_debug)
2075 printf("%sdebug: state %d, error recovery shifting\
2076 to state %d\n", YYPREFIX"yy", *yyssp, yytablec_yytable[yyn]);
2077#endif
2078 if (yyssp >= yysslim && yygrowstack())
2079 {
2080 goto yyoverflow;
2081 }
2082 *++yyssp = yystatec_state = yytablec_yytable[yyn];
2083 *++yyvsp = yylvalc_lval;
2084 goto yyloop;
2085 }
2086 else
2087 {
2088#if YYDEBUG1
2089 if (yydebugc_debug)
2090 printf("%sdebug: error recovery discarding state %d\n",
2091 YYPREFIX"yy", *yyssp);
2092#endif
2093 if (yyssp <= yyss) goto yyabort;
2094 --yyssp;
2095 --yyvsp;
2096 }
2097 }
2098 }
2099 else
2100 {
2101 if (yycharc_char == 0) goto yyabort;
2102#if YYDEBUG1
2103 if (yydebugc_debug)
2104 {
2105 yysc_s = 0;
2106 if (yycharc_char <= YYMAXTOKEN297) yysc_s = yynamec_name[yycharc_char];
2107 if (!yysc_s) yysc_s = "illegal-symbol";
2108 printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
2109 YYPREFIX"yy", yystatec_state, yycharc_char, yysc_s);
2110 }
2111#endif
2112 yycharc_char = (-1);
2113 goto yyloop;
2114 }
2115yyreduce:
2116#if YYDEBUG1
2117 if (yydebugc_debug)
18
Taking false branch
31
Taking false branch
2118 printf("%sdebug: state %d, reducing by rule %d (%s)\n",
2119 YYPREFIX"yy", yystatec_state, yyn, yyrulec_rule[yyn]);
2120#endif
2121 yym = yylenc_yylen[yyn];
2122 if (yym)
19
Assuming 'yym' is 0
20
Taking false branch
32
Assuming 'yym' is 0
33
Taking false branch
2123 yyvalc_val = yyvsp[1-yym];
2124 else
2125 memset(&yyvalc_val, 0, sizeof yyvalc_val);
2126 switch (yyn)
21
'Default' branch taken. Execution continues on line 2935
34
Control jumps to 'case 57:' at line 2364
2127 {
2128case 3:
2129#line 235 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2130{ write_exp_elt_opcode(OP_TYPE);
2131 write_exp_elt_type(yyvsp[0].tval);
2132 write_exp_elt_opcode(OP_TYPE);}
2133break;
2134case 5:
2135#line 243 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2136{ write_exp_elt_opcode (BINOP_COMMA); }
2137break;
2138case 6:
2139#line 248 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2140{ write_exp_elt_opcode (UNOP_IND); }
2141break;
2142case 7:
2143#line 252 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2144{ write_exp_elt_opcode (UNOP_ADDR); }
2145break;
2146case 8:
2147#line 256 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2148{ write_exp_elt_opcode (UNOP_NEG); }
2149break;
2150case 9:
2151#line 260 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2152{ write_exp_elt_opcode (UNOP_LOGICAL_NOT); }
2153break;
2154case 10:
2155#line 264 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2156{ write_exp_elt_opcode (UNOP_COMPLEMENT); }
2157break;
2158case 11:
2159#line 268 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2160{ write_exp_elt_opcode (UNOP_PREINCREMENT); }
2161break;
2162case 12:
2163#line 272 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2164{ write_exp_elt_opcode (UNOP_PREDECREMENT); }
2165break;
2166case 13:
2167#line 276 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2168{ write_exp_elt_opcode (UNOP_POSTINCREMENT); }
2169break;
2170case 14:
2171#line 280 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2172{ write_exp_elt_opcode (UNOP_POSTDECREMENT); }
2173break;
2174case 15:
2175#line 284 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2176{ write_exp_elt_opcode (UNOP_SIZEOF); }
2177break;
2178case 16:
2179#line 288 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2180{ write_exp_elt_opcode (STRUCTOP_PTR);
2181 write_exp_string (yyvsp[0].sval);
2182 write_exp_elt_opcode (STRUCTOP_PTR); }
2183break;
2184case 17:
2185#line 294 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2186{ /* exp->type::name becomes exp->*(&type::name) */
2187 /* Note: this doesn't work if name is a
2188 static member! FIXME */
2189 write_exp_elt_opcode (UNOP_ADDR);
2190 write_exp_elt_opcode (STRUCTOP_MPTR); }
2191break;
2192case 18:
2193#line 302 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2194{ write_exp_elt_opcode (STRUCTOP_MPTR); }
2195break;
2196case 19:
2197#line 306 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2198{ write_exp_elt_opcode (STRUCTOP_STRUCT);
2199 write_exp_string (yyvsp[0].sval);
2200 write_exp_elt_opcode (STRUCTOP_STRUCT); }
2201break;
2202case 20:
2203#line 312 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2204{ /* exp.type::name becomes exp.*(&type::name) */
2205 /* Note: this doesn't work if name is a
2206 static member! FIXME */
2207 write_exp_elt_opcode (UNOP_ADDR);
2208 write_exp_elt_opcode (STRUCTOP_MEMBER); }
2209break;
2210case 21:
2211#line 320 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2212{ write_exp_elt_opcode (STRUCTOP_MEMBER); }
2213break;
2214case 22:
2215#line 324 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2216{ write_exp_elt_opcode (BINOP_SUBSCRIPT); }
2217break;
2218case 23:
2219#line 330 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2220{ start_arglist (); }
2221break;
2222case 24:
2223#line 332 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2224{ write_exp_elt_opcode (OP_FUNCALL);
2225 write_exp_elt_longcst ((LONGESTlong) end_arglist ());
2226 write_exp_elt_opcode (OP_FUNCALL); }
2227break;
2228case 25:
2229#line 338 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2230{ start_arglist (); }
2231break;
2232case 27:
2233#line 345 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2234{ arglist_len = 1; }
2235break;
2236case 28:
2237#line 349 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2238{ arglist_len++; }
2239break;
2240case 29:
2241#line 353 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2242{ yyvalc_val.lval = end_arglist () - 1; }
2243break;
2244case 30:
2245#line 356 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2246{ write_exp_elt_opcode (OP_ARRAY);
2247 write_exp_elt_longcst ((LONGESTlong) 0);
2248 write_exp_elt_longcst ((LONGESTlong) yyvsp[0].lval);
2249 write_exp_elt_opcode (OP_ARRAY); }
2250break;
2251case 31:
2252#line 363 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2253{ write_exp_elt_opcode (UNOP_MEMVAL);
2254 write_exp_elt_type (yyvsp[-2].tval);
2255 write_exp_elt_opcode (UNOP_MEMVAL); }
2256break;
2257case 32:
2258#line 369 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2259{ write_exp_elt_opcode (UNOP_CAST);
2260 write_exp_elt_type (yyvsp[-2].tval);
2261 write_exp_elt_opcode (UNOP_CAST); }
2262break;
2263case 33:
2264#line 375 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2265{ }
2266break;
2267case 34:
2268#line 381 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2269{ write_exp_elt_opcode (BINOP_REPEAT); }
2270break;
2271case 35:
2272#line 385 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2273{ write_exp_elt_opcode (BINOP_MUL); }
2274break;
2275case 36:
2276#line 389 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2277{ write_exp_elt_opcode (BINOP_DIV); }
2278break;
2279case 37:
2280#line 393 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2281{ write_exp_elt_opcode (BINOP_REM); }
2282break;
2283case 38:
2284#line 397 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2285{ write_exp_elt_opcode (BINOP_ADD); }
2286break;
2287case 39:
2288#line 401 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2289{ write_exp_elt_opcode (BINOP_SUB); }
2290break;
2291case 40:
2292#line 405 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2293{ write_exp_elt_opcode (BINOP_LSH); }
2294break;
2295case 41:
2296#line 409 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2297{ write_exp_elt_opcode (BINOP_RSH); }
2298break;
2299case 42:
2300#line 413 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2301{ write_exp_elt_opcode (BINOP_EQUAL); }
2302break;
2303case 43:
2304#line 417 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2305{ write_exp_elt_opcode (BINOP_NOTEQUAL); }
2306break;
2307case 44:
2308#line 421 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2309{ write_exp_elt_opcode (BINOP_LEQ); }
2310break;
2311case 45:
2312#line 425 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2313{ write_exp_elt_opcode (BINOP_GEQ); }
2314break;
2315case 46:
2316#line 429 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2317{ write_exp_elt_opcode (BINOP_LESS); }
2318break;
2319case 47:
2320#line 433 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2321{ write_exp_elt_opcode (BINOP_GTR); }
2322break;
2323case 48:
2324#line 437 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2325{ write_exp_elt_opcode (BINOP_BITWISE_AND); }
2326break;
2327case 49:
2328#line 441 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2329{ write_exp_elt_opcode (BINOP_BITWISE_XOR); }
2330break;
2331case 50:
2332#line 445 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2333{ write_exp_elt_opcode (BINOP_BITWISE_IOR); }
2334break;
2335case 51:
2336#line 449 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2337{ write_exp_elt_opcode (BINOP_LOGICAL_AND); }
2338break;
2339case 52:
2340#line 453 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2341{ write_exp_elt_opcode (BINOP_LOGICAL_OR); }
2342break;
2343case 53:
2344#line 457 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2345{ write_exp_elt_opcode (TERNOP_COND); }
2346break;
2347case 54:
2348#line 461 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2349{ write_exp_elt_opcode (BINOP_ASSIGN); }
2350break;
2351case 55:
2352#line 465 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2353{ write_exp_elt_opcode (BINOP_ASSIGN_MODIFY);
2354 write_exp_elt_opcode (yyvsp[-1].opcode);
2355 write_exp_elt_opcode (BINOP_ASSIGN_MODIFY); }
2356break;
2357case 56:
2358#line 471 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2359{ write_exp_elt_opcode (OP_LONG);
2360 write_exp_elt_type (yyvsp[0].typed_val_int.type);
2361 write_exp_elt_longcst ((LONGESTlong)(yyvsp[0].typed_val_int.val));
2362 write_exp_elt_opcode (OP_LONG); }
2363break;
2364case 57:
2365#line 478 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2366{ YYSTYPE val;
2367 parse_number (yyvsp[0].ssym.stoken.ptr, yyvsp[0].ssym.stoken.length, 0, &val);
35
Passing null pointer value via 1st parameter 'p'
36
Calling 'parse_number'
2368 write_exp_elt_opcode (OP_LONG);
2369 write_exp_elt_type (val.typed_val_int.type);
2370 write_exp_elt_longcst ((LONGESTlong)val.typed_val_int.val);
2371 write_exp_elt_opcode (OP_LONG);
2372 }
2373break;
2374case 58:
2375#line 489 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2376{ write_exp_elt_opcode (OP_DOUBLE);
2377 write_exp_elt_type (yyvsp[0].typed_val_float.type);
2378 write_exp_elt_dblcst (yyvsp[0].typed_val_float.dval);
2379 write_exp_elt_opcode (OP_DOUBLE); }
2380break;
2381case 61:
2382#line 503 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2383{ write_exp_elt_opcode (OP_LONG);
2384 write_exp_elt_type (builtin_type (current_gdbarch)->builtin_int);
2385 CHECK_TYPEDEF (yyvsp[-1].tval)(yyvsp[-1].tval) = check_typedef (yyvsp[-1].tval);
2386 write_exp_elt_longcst ((LONGESTlong) TYPE_LENGTH (yyvsp[-1].tval)(yyvsp[-1].tval)->length);
2387 write_exp_elt_opcode (OP_LONG); }
2388break;
2389case 62:
2390#line 511 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2391{ /* C strings are converted into array constants with
2392 an explicit null byte added at the end. Thus
2393 the array upper bound is the string length.
2394 There is no such thing in C as a completely empty
2395 string. */
2396 char *sp = yyvsp[0].sval.ptr; int count = yyvsp[0].sval.length;
2397 while (count-- > 0)
2398 {
2399 write_exp_elt_opcode (OP_LONG);
2400 write_exp_elt_type (builtin_type (current_gdbarch)->builtin_char);
2401 write_exp_elt_longcst ((LONGESTlong)(*sp++));
2402 write_exp_elt_opcode (OP_LONG);
2403 }
2404 write_exp_elt_opcode (OP_LONG);
2405 write_exp_elt_type (builtin_type (current_gdbarch)->builtin_char);
2406 write_exp_elt_longcst ((LONGESTlong)'\0');
2407 write_exp_elt_opcode (OP_LONG);
2408 write_exp_elt_opcode (OP_ARRAY);
2409 write_exp_elt_longcst ((LONGESTlong) 0);
2410 write_exp_elt_longcst ((LONGESTlong) (yyvsp[0].sval.length));
2411 write_exp_elt_opcode (OP_ARRAY); }
2412break;
2413case 63:
2414#line 536 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2415{ write_exp_elt_opcode (OP_LONG);
2416 write_exp_elt_type (builtin_type (current_gdbarch)->builtin_bool);
2417 write_exp_elt_longcst ((LONGESTlong) 1);
2418 write_exp_elt_opcode (OP_LONG); }
2419break;
2420case 64:
2421#line 543 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2422{ write_exp_elt_opcode (OP_LONG);
2423 write_exp_elt_type (builtin_type (current_gdbarch)->builtin_bool);
2424 write_exp_elt_longcst ((LONGESTlong) 0);
2425 write_exp_elt_opcode (OP_LONG); }
2426break;
2427case 65:
2428#line 552 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2429{
2430 if (yyvsp[0].ssym.sym)
2431 yyvalc_val.bval = SYMBOL_BLOCK_VALUE (yyvsp[0].ssym.sym)(yyvsp[0].ssym.sym)->ginfo.value.block;
2432 else
2433 error ("No file or function \"%s\".",
2434 copy_name (yyvsp[0].ssym.stoken));
2435 }
2436break;
2437case 66:
2438#line 560 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2439{
2440 yyvalc_val.bval = yyvsp[0].bval;
2441 }
2442break;
2443case 67:
2444#line 566 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2445{ struct symbol *tem
2446 = lookup_symbol (copy_name (yyvsp[0].sval), yyvsp[-2].bval,
2447 VAR_DOMAIN, (int *) NULL((void*)0),
2448 (struct symtab **) NULL((void*)0));
2449 if (!tem || SYMBOL_CLASS (tem)(tem)->aclass != LOC_BLOCK)
2450 error ("No function \"%s\" in specified context.",
2451 copy_name (yyvsp[0].sval));
2452 yyvalc_val.bval = SYMBOL_BLOCK_VALUE (tem)(tem)->ginfo.value.block; }
2453break;
2454case 68:
2455#line 577 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2456{ struct symbol *sym;
2457 sym = lookup_symbol (copy_name (yyvsp[0].sval), yyvsp[-2].bval,
2458 VAR_DOMAIN, (int *) NULL((void*)0),
2459 (struct symtab **) NULL((void*)0));
2460 if (sym == 0)
2461 error ("No symbol \"%s\" in specified context.",
2462 copy_name (yyvsp[0].sval));
2463
2464 write_exp_elt_opcode (OP_VAR_VALUE);
2465 /* block_found is set by lookup_symbol. */
2466 write_exp_elt_block (block_found);
2467 write_exp_elt_sym (sym);
2468 write_exp_elt_opcode (OP_VAR_VALUE); }
2469break;
2470case 69:
2471#line 593 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2472{
2473 struct type *type = yyvsp[-2].tval;
2474 if (TYPE_CODE (type)(type)->main_type->code != TYPE_CODE_STRUCT
2475 && TYPE_CODE (type)(type)->main_type->code != TYPE_CODE_UNION
2476 && TYPE_CODE (type)(type)->main_type->code != TYPE_CODE_NAMESPACE)
2477 error ("`%s' is not defined as an aggregate type.",
2478 TYPE_NAME (type)(type)->main_type->name);
2479
2480 write_exp_elt_opcode (OP_SCOPE);
2481 write_exp_elt_type (type);
2482 write_exp_string (yyvsp[0].sval);
2483 write_exp_elt_opcode (OP_SCOPE);
2484 }
2485break;
2486case 70:
2487#line 607 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2488{
2489 struct type *type = yyvsp[-3].tval;
2490 struct stoken tmp_token;
2491 if (TYPE_CODE (type)(type)->main_type->code != TYPE_CODE_STRUCT
2492 && TYPE_CODE (type)(type)->main_type->code != TYPE_CODE_UNION
2493 && TYPE_CODE (type)(type)->main_type->code != TYPE_CODE_NAMESPACE)
2494 error ("`%s' is not defined as an aggregate type.",
2495 TYPE_NAME (type)(type)->main_type->name);
2496
2497 tmp_token.ptr = (char*) alloca (yyvsp[0].sval.length + 2)__builtin_alloca(yyvsp[0].sval.length + 2);
2498 tmp_token.length = yyvsp[0].sval.length + 1;
2499 tmp_token.ptr[0] = '~';
2500 memcpy (tmp_token.ptr+1, yyvsp[0].sval.ptr, yyvsp[0].sval.length);
2501 tmp_token.ptr[tmp_token.length] = 0;
2502
2503 /* Check for valid destructor name. */
2504 destructor_name_p (tmp_token.ptr, type);
2505 write_exp_elt_opcode (OP_SCOPE);
2506 write_exp_elt_type (type);
2507 write_exp_string (tmp_token);
2508 write_exp_elt_opcode (OP_SCOPE);
2509 }
2510break;
2511case 72:
2512#line 633 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2513{
2514 char *name = copy_name (yyvsp[0].sval);
2515 struct symbol *sym;
2516 struct minimal_symbol *msymbol;
2517
2518 sym =
2519 lookup_symbol (name, (const struct block *) NULL((void*)0),
2520 VAR_DOMAIN, (int *) NULL((void*)0),
2521 (struct symtab **) NULL((void*)0));
2522 if (sym)
2523 {
2524 write_exp_elt_opcode (OP_VAR_VALUE);
2525 write_exp_elt_block (NULL((void*)0));
2526 write_exp_elt_sym (sym);
2527 write_exp_elt_opcode (OP_VAR_VALUE);
2528 break;
2529 }
2530
2531 msymbol = lookup_minimal_symbol (name, NULL((void*)0), NULL((void*)0));
2532 if (msymbol != NULL((void*)0))
2533 {
2534 write_exp_msymbol (msymbol,
2535 lookup_function_type (builtin_type (current_gdbarch)->builtin_int),
2536 builtin_type (current_gdbarch)->builtin_int);
2537 }
2538 else
2539 if (!have_full_symbols () && !have_partial_symbols ())
2540 error ("No symbol table is loaded. Use the \"file\" command.");
2541 else
2542 error ("No symbol \"%s\" in current context.", name);
2543 }
2544break;
2545case 73:
2546#line 667 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2547{ struct symbol *sym = yyvsp[0].ssym.sym;
2548
2549 if (sym)
2550 {
2551 if (symbol_read_needs_frame (sym))
2552 {
2553 if (innermost_block == 0 ||
2554 contained_in (block_found,
2555 innermost_block))
2556 innermost_block = block_found;
2557 }
2558
2559 write_exp_elt_opcode (OP_VAR_VALUE);
2560 /* We want to use the selected frame, not
2561 another more inner frame which happens to
2562 be in the same block. */
2563 write_exp_elt_block (NULL((void*)0));
2564 write_exp_elt_sym (sym);
2565 write_exp_elt_opcode (OP_VAR_VALUE);
2566 }
2567 else if (yyvsp[0].ssym.is_a_field_of_this)
2568 {
2569 /* C++: it hangs off of `this'. Must
2570 not inadvertently convert from a method call
2571 to data ref. */
2572 if (innermost_block == 0 ||
2573 contained_in (block_found, innermost_block))
2574 innermost_block = block_found;
2575 write_exp_elt_opcode (OP_THIS);
2576 write_exp_elt_opcode (OP_THIS);
2577 write_exp_elt_opcode (STRUCTOP_PTR);
2578 write_exp_string (yyvsp[0].ssym.stoken);
2579 write_exp_elt_opcode (STRUCTOP_PTR);
2580 }
2581 else
2582 {
2583 struct minimal_symbol *msymbol;
2584 char *arg = copy_name (yyvsp[0].ssym.stoken);
2585
2586 msymbol =
2587 lookup_minimal_symbol (arg, NULL((void*)0), NULL((void*)0));
2588 if (msymbol != NULL((void*)0))
2589 {
2590 write_exp_msymbol (msymbol,
2591 lookup_function_type (builtin_type (current_gdbarch)->builtin_int),
2592 builtin_type (current_gdbarch)->builtin_int);
2593 }
2594 else if (!have_full_symbols () && !have_partial_symbols ())
2595 error ("No symbol table is loaded. Use the \"file\" command.");
2596 else
2597 error ("No symbol \"%s\" in current context.",
2598 copy_name (yyvsp[0].ssym.stoken));
2599 }
2600 }
2601break;
2602case 74:
2603#line 724 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2604{ push_type_address_space (copy_name (yyvsp[0].ssym.stoken));
2605 push_type (tp_space_identifier);
2606 }
2607break;
2608case 82:
2609#line 746 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2610{ push_type (tp_pointer); yyvalc_val.voidval = 0; }
2611break;
2612case 83:
2613#line 748 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2614{ push_type (tp_pointer); yyvalc_val.voidval = yyvsp[0].voidval; }
2615break;
2616case 84:
2617#line 750 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2618{ push_type (tp_reference); yyvalc_val.voidval = 0; }
2619break;
2620case 85:
2621#line 752 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2622{ push_type (tp_reference); yyvalc_val.voidval = yyvsp[0].voidval; }
2623break;
2624case 87:
2625#line 757 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2626{ yyvalc_val.voidval = yyvsp[-1].voidval; }
2627break;
2628case 88:
2629#line 759 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2630{
2631 push_type_int (yyvsp[0].lval);
2632 push_type (tp_array);
2633 }
2634break;
2635case 89:
2636#line 764 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2637{
2638 push_type_int (yyvsp[0].lval);
2639 push_type (tp_array);
2640 yyvalc_val.voidval = 0;
2641 }
2642break;
2643case 90:
2644#line 771 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2645{ push_type (tp_function); }
2646break;
2647case 91:
2648#line 773 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2649{ push_type (tp_function); }
2650break;
2651case 92:
2652#line 777 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2653{ yyvalc_val.lval = -1; }
2654break;
2655case 93:
2656#line 779 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2657{ yyvalc_val.lval = yyvsp[-1].typed_val_int.val; }
2658break;
2659case 94:
2660#line 783 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2661{ yyvalc_val.voidval = 0; }
2662break;
2663case 95:
2664#line 785 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2665{ free (yyvsp[-1].tvec); yyvalc_val.voidval = 0; }
2666break;
2667case 97:
2668#line 798 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2669{ yyvalc_val.tval = lookup_member_type (builtin_type (current_gdbarch)->builtin_int, yyvsp[-2].tval); }
2670break;
2671case 98:
2672#line 803 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2673{ yyvalc_val.tval = yyvsp[0].tsym.type; }
2674break;
2675case 99:
2676#line 805 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2677{ yyvalc_val.tval = builtin_type (current_gdbarch)->builtin_int; }
2678break;
2679case 100:
2680#line 807 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2681{ yyvalc_val.tval = builtin_type (current_gdbarch)->builtin_long; }
2682break;
2683case 101:
2684#line 809 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2685{ yyvalc_val.tval = builtin_type (current_gdbarch)->builtin_short; }
2686break;
2687case 102:
2688#line 811 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2689{ yyvalc_val.tval = builtin_type (current_gdbarch)->builtin_long; }
2690break;
2691case 103:
2692#line 813 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2693{ yyvalc_val.tval = builtin_type (current_gdbarch)->builtin_long; }
2694break;
2695case 104:
2696#line 815 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2697{ yyvalc_val.tval = builtin_type (current_gdbarch)->builtin_long; }
2698break;
2699case 105:
2700#line 817 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2701{ yyvalc_val.tval = builtin_type (current_gdbarch)->builtin_long; }
2702break;
2703case 106:
2704#line 819 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2705{ yyvalc_val.tval = builtin_type (current_gdbarch)->builtin_unsigned_long; }
2706break;
2707case 107:
2708#line 821 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2709{ yyvalc_val.tval = builtin_type (current_gdbarch)->builtin_unsigned_long; }
2710break;
2711case 108:
2712#line 823 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2713{ yyvalc_val.tval = builtin_type (current_gdbarch)->builtin_unsigned_long; }
2714break;
2715case 109:
2716#line 825 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2717{ yyvalc_val.tval = builtin_type (current_gdbarch)->builtin_long_long; }
2718break;
2719case 110:
2720#line 827 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2721{ yyvalc_val.tval = builtin_type (current_gdbarch)->builtin_long_long; }
2722break;
2723case 111:
2724#line 829 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2725{ yyvalc_val.tval = builtin_type (current_gdbarch)->builtin_long_long; }
2726break;
2727case 112:
2728#line 831 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2729{ yyvalc_val.tval = builtin_type (current_gdbarch)->builtin_long_long; }
2730break;
2731case 113:
2732#line 833 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2733{ yyvalc_val.tval = builtin_type (current_gdbarch)->builtin_long_long; }
2734break;
2735case 114:
2736#line 835 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2737{ yyvalc_val.tval = builtin_type (current_gdbarch)->builtin_long_long; }
2738break;
2739case 115:
2740#line 837 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2741{ yyvalc_val.tval = builtin_type (current_gdbarch)->builtin_unsigned_long_long; }
2742break;
2743case 116:
2744#line 839 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2745{ yyvalc_val.tval = builtin_type (current_gdbarch)->builtin_unsigned_long_long; }
2746break;
2747case 117:
2748#line 841 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2749{ yyvalc_val.tval = builtin_type (current_gdbarch)->builtin_unsigned_long_long; }
2750break;
2751case 118:
2752#line 843 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2753{ yyvalc_val.tval = builtin_type (current_gdbarch)->builtin_unsigned_long_long; }
2754break;
2755case 119:
2756#line 845 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2757{ yyvalc_val.tval = builtin_type (current_gdbarch)->builtin_short; }
2758break;
2759case 120:
2760#line 847 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2761{ yyvalc_val.tval = builtin_type (current_gdbarch)->builtin_short; }
2762break;
2763case 121:
2764#line 849 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2765{ yyvalc_val.tval = builtin_type (current_gdbarch)->builtin_short; }
2766break;
2767case 122:
2768#line 851 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2769{ yyvalc_val.tval = builtin_type (current_gdbarch)->builtin_unsigned_short; }
2770break;
2771case 123:
2772#line 853 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2773{ yyvalc_val.tval = builtin_type (current_gdbarch)->builtin_unsigned_short; }
2774break;
2775case 124:
2776#line 855 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2777{ yyvalc_val.tval = builtin_type (current_gdbarch)->builtin_unsigned_short; }
2778break;
2779case 125:
2780#line 857 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2781{ yyvalc_val.tval = builtin_type (current_gdbarch)->builtin_double; }
2782break;
2783case 126:
2784#line 859 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2785{ yyvalc_val.tval = builtin_type (current_gdbarch)->builtin_long_double; }
2786break;
2787case 127:
2788#line 861 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2789{ yyvalc_val.tval = lookup_struct (copy_name (yyvsp[0].sval),
2790 expression_context_block); }
2791break;
2792case 128:
2793#line 864 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2794{ yyvalc_val.tval = lookup_struct (copy_name (yyvsp[0].sval),
2795 expression_context_block); }
2796break;
2797case 129:
2798#line 867 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2799{ yyvalc_val.tval = lookup_union (copy_name (yyvsp[0].sval),
2800 expression_context_block); }
2801break;
2802case 130:
2803#line 870 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2804{ yyvalc_val.tval = lookup_enum (copy_name (yyvsp[0].sval),
2805 expression_context_block); }
2806break;
2807case 131:
2808#line 873 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2809{ yyvalc_val.tval = lookup_unsigned_typename (TYPE_NAME(yyvsp[0].tsym.type)(yyvsp[0].tsym.type)->main_type->name); }
2810break;
2811case 132:
2812#line 875 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2813{ yyvalc_val.tval = builtin_type (current_gdbarch)->builtin_unsigned_int; }
2814break;
2815case 133:
2816#line 877 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2817{ yyvalc_val.tval = lookup_signed_typename (TYPE_NAME(yyvsp[0].tsym.type)(yyvsp[0].tsym.type)->main_type->name); }
2818break;
2819case 134:
2820#line 879 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2821{ yyvalc_val.tval = builtin_type (current_gdbarch)->builtin_int; }
2822break;
2823case 135:
2824#line 884 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2825{ yyvalc_val.tval = lookup_template_type(copy_name(yyvsp[-3].sval), yyvsp[-1].tval,
2826 expression_context_block);
2827 }
2828break;
2829case 136:
2830#line 888 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2831{ yyvalc_val.tval = follow_types (yyvsp[0].tval); }
2832break;
2833case 137:
2834#line 890 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2835{ yyvalc_val.tval = follow_types (yyvsp[-1].tval); }
2836break;
2837case 139:
2838#line 940 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2839{
2840 struct type *type = yyvsp[-2].tval;
2841 struct type *new_type;
2842 char *ncopy = alloca (yyvsp[0].sval.length + 1)__builtin_alloca(yyvsp[0].sval.length + 1);
2843
2844 memcpy (ncopy, yyvsp[0].sval.ptr, yyvsp[0].sval.length);
2845 ncopy[yyvsp[0].sval.length] = '\0';
2846
2847 if (TYPE_CODE (type)(type)->main_type->code != TYPE_CODE_STRUCT
2848 && TYPE_CODE (type)(type)->main_type->code != TYPE_CODE_UNION
2849 && TYPE_CODE (type)(type)->main_type->code != TYPE_CODE_NAMESPACE)
2850 error ("`%s' is not defined as an aggregate type.",
2851 TYPE_NAME (type)(type)->main_type->name);
2852
2853 new_type = cp_lookup_nested_type (type, ncopy,
2854 expression_context_block);
2855 if (new_type == NULL((void*)0))
2856 error ("No type \"%s\" within class or namespace \"%s\".",
2857 ncopy, TYPE_NAME (type)(type)->main_type->name);
2858
2859 yyvalc_val.tval = new_type;
2860 }
2861break;
2862case 141:
2863#line 966 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2864{
2865 yyvalc_val.tsym.stoken.ptr = "int";
2866 yyvalc_val.tsym.stoken.length = 3;
2867 yyvalc_val.tsym.type = builtin_type (current_gdbarch)->builtin_int;
2868 }
2869break;
2870case 142:
2871#line 972 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2872{
2873 yyvalc_val.tsym.stoken.ptr = "long";
2874 yyvalc_val.tsym.stoken.length = 4;
2875 yyvalc_val.tsym.type = builtin_type (current_gdbarch)->builtin_long;
2876 }
2877break;
2878case 143:
2879#line 978 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2880{
2881 yyvalc_val.tsym.stoken.ptr = "short";
2882 yyvalc_val.tsym.stoken.length = 5;
2883 yyvalc_val.tsym.type = builtin_type (current_gdbarch)->builtin_short;
2884 }
2885break;
2886case 144:
2887#line 987 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2888{ yyvalc_val.tvec = (struct type **) xmalloc (sizeof (struct type *) * 2);
2889 yyvalc_val.ivec[0] = 1; /* Number of types in vector */
2890 yyvalc_val.tvec[1] = yyvsp[0].tval;
2891 }
2892break;
2893case 145:
2894#line 992 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2895{ int len = sizeof (struct type *) * (++(yyvsp[-2].ivec[0]) + 1);
2896 yyvalc_val.tvec = (struct type **) xrealloc ((char *) yyvsp[-2].tvec, len);
2897 yyvalc_val.tvec[yyvalc_val.ivec[0]] = yyvsp[0].tval;
2898 }
2899break;
2900case 147:
2901#line 1000 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2902{ yyvalc_val.tval = follow_types (yyvsp[-3].tval); }
2903break;
2904case 150:
2905#line 1008 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2906{ push_type (tp_const);
2907 push_type (tp_volatile);
2908 }
2909break;
2910case 151:
2911#line 1012 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2912{ push_type (tp_const); }
2913break;
2914case 152:
2915#line 1014 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2916{ push_type (tp_volatile); }
2917break;
2918case 153:
2919#line 1017 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2920{ yyvalc_val.sval = yyvsp[0].ssym.stoken; }
2921break;
2922case 154:
2923#line 1018 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2924{ yyvalc_val.sval = yyvsp[0].ssym.stoken; }
2925break;
2926case 155:
2927#line 1019 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2928{ yyvalc_val.sval = yyvsp[0].tsym.stoken; }
2929break;
2930case 156:
2931#line 1020 "/usr/src/gnu/usr.bin/binutils/gdb/c-exp.y"
2932{ yyvalc_val.sval = yyvsp[0].ssym.stoken; }
2933break;
2934 }
2935 yyssp -= yym;
2936 yystatec_state = *yyssp;
2937 yyvsp -= yym;
2938 yym = yylhsc_yylhs[yyn];
2939 if (yystatec_state == 0 && yym == 0)
22
Assuming 'c_state' is not equal to 0
2940 {
2941#if YYDEBUG1
2942 if (yydebugc_debug)
2943 printf("%sdebug: after reduction, shifting from state 0 to\
2944 state %d\n", YYPREFIX"yy", YYFINAL36);
2945#endif
2946 yystatec_state = YYFINAL36;
2947 *++yyssp = YYFINAL36;
2948 *++yyvsp = yyvalc_val;
2949 if (yycharc_char < 0)
2950 {
2951 if ((yycharc_char = yylexc_lex()) < 0) yycharc_char = 0;
2952#if YYDEBUG1
2953 if (yydebugc_debug)
2954 {
2955 yysc_s = 0;
2956 if (yycharc_char <= YYMAXTOKEN297) yysc_s = yynamec_name[yycharc_char];
2957 if (!yysc_s) yysc_s = "illegal-symbol";
2958 printf("%sdebug: state %d, reading %d (%s)\n",
2959 YYPREFIX"yy", YYFINAL36, yycharc_char, yysc_s);
2960 }
2961#endif
2962 }
2963 if (yycharc_char == 0) goto yyaccept;
2964 goto yyloop;
2965 }
2966 if ((yyn = yygindexc_yygindex[yym]) && (yyn += yystatec_state) >= 0 &&
23
Assuming 'yyn' is 0
2967 yyn <= YYTABLESIZE3243 && yycheckc_yycheck[yyn] == yystatec_state)
2968 yystatec_state = yytablec_yytable[yyn];
2969 else
2970 yystatec_state = yydgotoc_yydgoto[yym];
2971#if YYDEBUG1
2972 if (yydebugc_debug)
24
Taking false branch
2973 printf("%sdebug: after reduction, shifting from state %d \
2974to state %d\n", YYPREFIX"yy", *yyssp, yystatec_state);
2975#endif
2976 if (yyssp >= yysslim && yygrowstack())
25
Assuming 'yyssp' is < 'yysslim'
2977 {
2978 goto yyoverflow;
2979 }
2980 *++yyssp = yystatec_state;
2981 *++yyvsp = yyvalc_val;
26
Null pointer value stored to field 'ptr'
2982 goto yyloop;
27
Control jumps to line 2014
2983yyoverflow:
2984 yyerrorc_error("yacc stack overflow");
2985yyabort:
2986 if (yyss)
2987 free(yyss);
2988 if (yyvs)
2989 free(yyvs);
2990 yyss = yyssp = NULL((void*)0);
2991 yyvs = yyvsp = NULL((void*)0);
2992 yystacksize = 0;
2993 return (1);
2994yyaccept:
2995 if (yyss)
2996 free(yyss);
2997 if (yyvs)
2998 free(yyvs);
2999 yyss = yyssp = NULL((void*)0);
3000 yyvs = yyvsp = NULL((void*)0);
3001 yystacksize = 0;
3002 return (0);
3003}