Bug Summary

File:src/gnu/usr.bin/binutils/obj/gdb/objc-exp.c
Warning:line 2951, column 42
Access to field 'main_type' results in a dereference of a null pointer (loaded from field 'type')

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