File: | src/gnu/usr.bin/binutils/obj/gdb/jv-exp.c |
Warning: | line 1970, column 12 Array access (via field 'ptr') results in a null pointer dereference |
Press '?' to see keyboard shortcuts
Keyboard shortcuts:
1 | #include <stdlib.h> | |||
2 | #include <string.h> | |||
3 | #define YYBYACC1 1 | |||
4 | #define YYMAJOR1 1 | |||
5 | #define YYMINOR9 9 | |||
6 | #define YYLEXjava_lex() yylexjava_lex() | |||
7 | #define YYEMPTY-1 -1 | |||
8 | #define yyclearin(java_char=(-1)) (yycharjava_char=(YYEMPTY-1)) | |||
9 | #define yyerrok(java_errflag=0) (yyerrflagjava_errflag=0) | |||
10 | #define YYRECOVERING()(java_errflag!=0) (yyerrflagjava_errflag!=0) | |||
11 | #define YYPREFIX"yy" "yy" | |||
12 | #line 39 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
13 | ||||
14 | #include "defs.h" | |||
15 | #include "gdb_string.h" | |||
16 | #include <ctype.h> | |||
17 | #include "expression.h" | |||
18 | #include "value.h" | |||
19 | #include "parser-defs.h" | |||
20 | #include "language.h" | |||
21 | #include "jv-lang.h" | |||
22 | #include "bfd.h" /* Required by objfiles.h. */ | |||
23 | #include "symfile.h" /* Required by objfiles.h. */ | |||
24 | #include "objfiles.h" /* For have_full_symbols and have_partial_symbols */ | |||
25 | #include "block.h" | |||
26 | ||||
27 | /* Remap normal yacc parser interface names (yyparse, yylex, yyerror, etc), | |||
28 | as well as gratuitiously global symbol names, so we can have multiple | |||
29 | yacc generated parsers in gdb. Note that these are only the variables | |||
30 | produced by yacc. If other parser generators (bison, byacc, etc) produce | |||
31 | additional global names that conflict at link time, then those parser | |||
32 | generators need to be fixed instead of adding those names to this list. */ | |||
33 | ||||
34 | #define yymaxdepthjava_maxdepth java_maxdepth | |||
35 | #define yyparsejava_parse java_parse | |||
36 | #define yylexjava_lex java_lex | |||
37 | #define yyerrorjava_error java_error | |||
38 | #define yylvaljava_lval java_lval | |||
39 | #define yycharjava_char java_char | |||
40 | #define yydebugjava_debug java_debug | |||
41 | #define yypactjava_pact java_pact | |||
42 | #define yyr1java_r1 java_r1 | |||
43 | #define yyr2java_r2 java_r2 | |||
44 | #define yydefjava_def java_def | |||
45 | #define yychkjava_chk java_chk | |||
46 | #define yypgojava_pgo java_pgo | |||
47 | #define yyactjava_act java_act | |||
48 | #define yyexcajava_exca java_exca | |||
49 | #define yyerrflagjava_errflag java_errflag | |||
50 | #define yynerrsjava_nerrs java_nerrs | |||
51 | #define yypsjava_ps java_ps | |||
52 | #define yypvjava_pv java_pv | |||
53 | #define yysjava_s java_s | |||
54 | #define yy_yysjava_yys java_yys | |||
55 | #define yystatejava_state java_state | |||
56 | #define yytmpjava_tmp java_tmp | |||
57 | #define yyvjava_v java_v | |||
58 | #define yy_yyvjava_yyv java_yyv | |||
59 | #define yyvaljava_val java_val | |||
60 | #define yyllocjava_lloc java_lloc | |||
61 | #define yyredsjava_reds java_reds /* With YYDEBUG defined */ | |||
62 | #define yytoksjava_toks java_toks /* With YYDEBUG defined */ | |||
63 | #define yynamejava_name java_name /* With YYDEBUG defined */ | |||
64 | #define yyrulejava_rule java_rule /* With YYDEBUG defined */ | |||
65 | #define yylhsjava_yylhs java_yylhs | |||
66 | #define yylenjava_yylen java_yylen | |||
67 | #define yydefredjava_yydefred java_yydefred | |||
68 | #define yydgotojava_yydgoto java_yydgoto | |||
69 | #define yysindexjava_yysindex java_yysindex | |||
70 | #define yyrindexjava_yyrindex java_yyrindex | |||
71 | #define yygindexjava_yygindex java_yygindex | |||
72 | #define yytablejava_yytable java_yytable | |||
73 | #define yycheckjava_yycheck java_yycheck | |||
74 | ||||
75 | #ifndef YYDEBUG1 | |||
76 | #define YYDEBUG1 1 /* Default to yydebug support */ | |||
77 | #endif | |||
78 | ||||
79 | #define YYFPRINTFparser_fprintf parser_fprintf | |||
80 | ||||
81 | int yyparsejava_parse (void); | |||
82 | ||||
83 | static int yylexjava_lex (void); | |||
84 | ||||
85 | void yyerrorjava_error (char *); | |||
86 | ||||
87 | static struct type *java_type_from_name (struct stoken); | |||
88 | static void push_expression_name (struct stoken); | |||
89 | static void push_fieldnames (struct stoken); | |||
90 | ||||
91 | static struct expression *copy_exp (struct expression *, int); | |||
92 | static void insert_exp (int, struct expression *); | |||
93 | ||||
94 | #line 126 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
95 | #ifndef YYSTYPE_DEFINED | |||
96 | #define YYSTYPE_DEFINED | |||
97 | typedef 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 | struct block *bval; | |||
114 | enum exp_opcode opcode; | |||
115 | struct internalvar *ivar; | |||
116 | int *ivec; | |||
117 | } YYSTYPE; | |||
118 | #endif /* YYSTYPE_DEFINED */ | |||
119 | #line 149 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
120 | /* YYSTYPE gets defined by %union */ | |||
121 | static int parse_number (char *, int, int, YYSTYPE *); | |||
122 | #define INTEGER_LITERAL257 257 | |||
123 | #define FLOATING_POINT_LITERAL258 258 | |||
124 | #define IDENTIFIER259 259 | |||
125 | #define STRING_LITERAL260 260 | |||
126 | #define BOOLEAN_LITERAL261 261 | |||
127 | #define TYPENAME262 262 | |||
128 | #define NAME_OR_INT263 263 | |||
129 | #define ERROR264 264 | |||
130 | #define LONG265 265 | |||
131 | #define SHORT266 266 | |||
132 | #define BYTE267 267 | |||
133 | #define INT268 268 | |||
134 | #define CHAR269 269 | |||
135 | #define BOOLEAN270 270 | |||
136 | #define DOUBLE271 271 | |||
137 | #define FLOAT272 272 | |||
138 | #define VARIABLE273 273 | |||
139 | #define ASSIGN_MODIFY274 274 | |||
140 | #define SUPER275 275 | |||
141 | #define NEW276 276 | |||
142 | #define OROR277 277 | |||
143 | #define ANDAND278 278 | |||
144 | #define EQUAL279 279 | |||
145 | #define NOTEQUAL280 280 | |||
146 | #define LEQ281 281 | |||
147 | #define GEQ282 282 | |||
148 | #define LSH283 283 | |||
149 | #define RSH284 284 | |||
150 | #define INCREMENT285 285 | |||
151 | #define DECREMENT286 286 | |||
152 | #define YYERRCODE256 256 | |||
153 | const short yylhsjava_yylhs[] = | |||
154 | { -1, | |||
155 | 0, 0, 17, 11, 11, 18, 19, 19, 19, 19, | |||
156 | 19, 9, 9, 8, 8, 6, 6, 6, 6, 6, | |||
157 | 7, 7, 4, 5, 10, 10, 12, 12, 15, 15, | |||
158 | 13, 13, 14, 16, 16, 21, 21, 22, 22, 22, | |||
159 | 22, 22, 22, 22, 28, 1, 24, 29, 29, 30, | |||
160 | 30, 23, 23, 31, 31, 32, 2, 2, 3, 3, | |||
161 | 25, 25, 33, 34, 26, 26, 26, 27, 27, 27, | |||
162 | 35, 35, 35, 35, 35, 36, 37, 38, 38, 38, | |||
163 | 38, 38, 38, 39, 40, 41, 41, 41, 41, 42, | |||
164 | 42, 42, 43, 43, 43, 43, 44, 44, 44, 45, | |||
165 | 45, 45, 46, 46, 46, 46, 46, 47, 47, 47, | |||
166 | 48, 48, 49, 49, 50, 50, 51, 51, 52, 52, | |||
167 | 53, 53, 54, 54, 55, 55, 56, 56, 56, 56, | |||
168 | 20, | |||
169 | }; | |||
170 | const short yylenjava_yylen[] = | |||
171 | { 2, | |||
172 | 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, | |||
173 | 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, | |||
174 | 1, 1, 1, 1, 2, 2, 1, 1, 1, 1, | |||
175 | 1, 1, 3, 1, 3, 1, 1, 1, 3, 1, | |||
176 | 1, 1, 1, 3, 1, 1, 5, 1, 3, 0, | |||
177 | 1, 4, 4, 1, 2, 3, 2, 3, 1, 0, | |||
178 | 3, 3, 2, 0, 4, 6, 6, 4, 4, 4, | |||
179 | 1, 1, 1, 1, 1, 2, 2, 1, 1, 2, | |||
180 | 2, 2, 1, 2, 2, 1, 2, 2, 1, 5, | |||
181 | 4, 5, 1, 3, 3, 3, 1, 3, 3, 1, | |||
182 | 3, 3, 1, 3, 3, 3, 3, 1, 3, 3, | |||
183 | 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, | |||
184 | 1, 5, 1, 1, 3, 3, 1, 1, 1, 1, | |||
185 | 1, | |||
186 | }; | |||
187 | const short yydefredjava_yydefred[] = | |||
188 | { 0, | |||
189 | 7, 9, 0, 6, 10, 0, 19, 17, 16, 18, | |||
190 | 20, 13, 22, 21, 0, 0, 0, 0, 0, 0, | |||
191 | 0, 0, 0, 45, 0, 0, 0, 14, 15, 12, | |||
192 | 0, 5, 3, 0, 29, 0, 127, 0, 2, 11, | |||
193 | 38, 34, 0, 0, 37, 40, 0, 42, 0, 0, | |||
194 | 64, 0, 74, 75, 93, 78, 79, 83, 89, 0, | |||
195 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 123, | |||
196 | 131, 124, 0, 0, 0, 0, 27, 0, 0, 0, | |||
197 | 0, 28, 8, 0, 0, 41, 43, 80, 81, 82, | |||
198 | 84, 85, 0, 0, 0, 87, 88, 0, 0, 0, | |||
199 | 0, 63, 0, 0, 0, 0, 48, 0, 0, 76, | |||
200 | 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, | |||
201 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | |||
202 | 0, 0, 31, 32, 62, 0, 0, 0, 0, 54, | |||
203 | 0, 0, 0, 0, 0, 0, 0, 57, 0, 33, | |||
204 | 0, 35, 0, 0, 0, 46, 44, 0, 0, 94, | |||
205 | 95, 96, 0, 0, 0, 0, 0, 0, 0, 0, | |||
206 | 0, 0, 0, 0, 0, 0, 0, 0, 126, 125, | |||
207 | 69, 0, 0, 0, 53, 55, 0, 52, 0, 0, | |||
208 | 91, 58, 68, 0, 70, 49, 65, 0, 0, 56, | |||
209 | 47, 90, 92, 0, 122, 67, 66, | |||
210 | }; | |||
211 | const short yydgotojava_yydgoto[] = | |||
212 | { 27, | |||
213 | 157, 144, 145, 78, 79, 28, 29, 30, 31, 32, | |||
214 | 33, 85, 35, 82, 37, 38, 39, 40, 41, 107, | |||
215 | 43, 44, 45, 46, 86, 48, 87, 50, 158, 159, | |||
216 | 139, 140, 51, 109, 52, 53, 54, 55, 56, 57, | |||
217 | 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, | |||
218 | 68, 69, 70, 71, 72, 73, | |||
219 | }; | |||
220 | const short yysindexjava_yysindex[] = | |||
221 | { 1576, | |||
222 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | |||
223 | 0, 0, 0, 0, -40, -15, -157, 1639, 1639, 1639, | |||
224 | 1639, 1639, 1576, 0, 1639, 1639, 0, 0, 0, 0, | |||
225 | -54, 0, 0, -13, 0, 0, 0, -4, 0, 0, | |||
226 | 0, 0, 7, -9, 0, 0, 0, 0, 0, 1684, | |||
227 | 0, -182, 0, 0, 0, 0, 0, 0, 0, 13, | |||
228 | 40, -154, -58, -144, 78, 24, 3, -158, -55, 0, | |||
229 | 0, 0, -61, -166, 1684, -166, 0, 41, 104, 41, | |||
230 | 105, 0, 0, -40, -10, 0, 0, 0, 0, 0, | |||
231 | 0, 0, -54, -13, 114, 0, 0, 79, 80, -166, | |||
232 | 1619, 0, 80, 1684, -166, 1684, 0, -41, 1684, 0, | |||
233 | 0, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, | |||
234 | 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1639, 1684, 1639, | |||
235 | 1639, 1639, 0, 0, 0, 82, 133, 1684, 85, 0, | |||
236 | 1684, 85, 1684, 80, 136, -34, 84, 0, 86, 0, | |||
237 | 95, 0, 138, 98, 1684, 0, 0, 148, 152, 0, | |||
238 | 0, 0, 13, 13, 40, 40, -154, -154, -154, -154, | |||
239 | -58, -58, -144, 78, 24, 3, 137, -158, 0, 0, | |||
240 | 0, 1684, 101, 1619, 0, 0, 155, 0, 1639, 84, | |||
241 | 0, 0, 0, 1684, 0, 0, 0, 1639, 157, 0, | |||
242 | 0, 0, 0, 158, 0, 0, 0,}; | |||
243 | const short yyrindexjava_yyrindex[] = | |||
244 | { 0, | |||
245 | 0, 0, 1, 0, 0, 96, 0, 0, 0, 0, | |||
246 | 0, 0, 0, 0, 391, 0, 0, 0, 0, 0, | |||
247 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | |||
248 | 200, 0, 0, 854, 0, 28, 0, 201, 0, 0, | |||
249 | 0, 0, 661, 486, 0, 0, 123, 0, 197, 0, | |||
250 | 0, 865, 0, 0, 0, 0, 0, 0, 0, 919, | |||
251 | 1063, 565, 1371, 1460, 1506, 87, 1328, 716, 174, 0, | |||
252 | 0, 0, 0, 0, 0, 0, 0, 162, 0, 0, | |||
253 | -35, 0, 0, 688, 756, 0, 0, 0, 0, 0, | |||
254 | 0, 0, 163, 1714, 0, 0, 0, 0, 203, 0, | |||
255 | 0, 0, 205, 0, 0, 0, 0, 0, 165, 0, | |||
256 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | |||
257 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | |||
258 | 0, 0, 0, 0, 0, 0, 0, 0, 554, 0, | |||
259 | 165, 554, 0, 593, 0, 0, 459, 0, 0, 0, | |||
260 | 0, 0, 292, 0, 0, 0, 0, 167, 0, 0, | |||
261 | 0, 0, 956, 1026, 1117, 1168, 1205, 1256, 1295, 1364, | |||
262 | 1418, 1436, 1469, 1508, 825, 1545, 0, 1595, 0, 0, | |||
263 | 0, 165, 0, 0, 0, 0, 0, 0, 0, 0, | |||
264 | 0, 0, 0, 165, 0, 0, 0, 0, 0, 0, | |||
265 | 0, 0, 0, 0, 0, 0, 0,}; | |||
266 | const short yygindexjava_yygindex[] = | |||
267 | { 0, | |||
268 | 0, -14, -118, 0, 0, 0, 0, 0, -1, 0, | |||
269 | 0, 35, -51, 1780, 0, 0, 0, 0, 0, 986, | |||
270 | 0, 0, 0, 0, 1903, 0, 1927, 0, 159, -115, | |||
271 | 139, -110, 0, 0, 0, 0, 0, -7, 0, 0, | |||
272 | -113, 0, 31, 45, -21, 25, 100, 102, 99, 103, | |||
273 | 97, 0, -122, 0, 0, 0, | |||
274 | }; | |||
275 | #define YYTABLESIZE2121 2121 | |||
276 | const short yytablejava_yytable[] = | |||
277 | { 132, | |||
278 | 27, 119, 155, 120, 23, 74, 190, 129, 179, 180, | |||
279 | 88, 89, 90, 91, 92, 80, 99, 96, 97, 103, | |||
280 | 185, 93, 135, 188, 137, 187, 102, 28, 186, 102, | |||
281 | 76, 186, 100, 191, 34, 100, 98, 27, 27, 104, | |||
282 | 27, 27, 27, 27, 27, 27, 27, 27, 150, 114, | |||
283 | 75, 81, 105, 153, 112, 23, 149, 94, 27, 113, | |||
284 | 27, 31, 27, 27, 28, 28, 199, 28, 28, 28, | |||
285 | 28, 28, 28, 28, 28, 205, 203, 101, 204, 146, | |||
286 | 143, 106, 115, 156, 116, 28, 115, 28, 30, 28, | |||
287 | 28, 27, 133, 27, 27, 8, 134, 167, 168, 169, | |||
288 | 170, 77, 110, 111, 160, 161, 162, 7, 8, 9, | |||
289 | 10, 11, 12, 13, 14, 125, 26, 126, 28, 128, | |||
290 | 28, 28, 41, 23, 27, 27, 127, 115, 117, 118, | |||
291 | 115, 138, 8, 8, 123, 124, 8, 8, 8, 8, | |||
292 | 8, 8, 8, 141, 115, 163, 164, 171, 172, 115, | |||
293 | 100, 28, 28, 8, 147, 8, 32, 8, 8, 41, | |||
294 | 41, 165, 166, 41, 41, 41, 41, 41, 41, 41, | |||
295 | 149, 148, 182, 121, 181, 184, 189, 194, 192, 115, | |||
296 | 41, 202, 41, 129, 41, 41, 8, 193, 8, 8, | |||
297 | 195, 155, 197, 200, 198, 201, 43, 206, 207, 4, | |||
298 | 1, 24, 25, 60, 26, 50, 24, 51, 108, 25, | |||
299 | 115, 115, 131, 41, 121, 41, 41, 121, 142, 8, | |||
300 | 8, 130, 121, 122, 173, 175, 178, 174, 0, 0, | |||
301 | 176, 121, 0, 43, 43, 0, 0, 43, 43, 43, | |||
302 | 43, 43, 43, 43, 0, 0, 41, 41, 0, 0, | |||
303 | 0, 0, 0, 0, 43, 0, 43, 130, 43, 43, | |||
304 | 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, | |||
305 | 0, 0, 0, 0, 31, 0, 0, 27, 27, 27, | |||
306 | 27, 27, 27, 27, 27, 27, 27, 43, 0, 43, | |||
307 | 43, 61, 0, 0, 0, 0, 0, 0, 121, 0, | |||
308 | 0, 30, 0, 0, 28, 28, 28, 28, 28, 28, | |||
309 | 28, 28, 28, 28, 0, 0, 0, 0, 0, 0, | |||
310 | 43, 43, 0, 0, 0, 0, 0, 0, 61, 61, | |||
311 | 0, 0, 61, 61, 61, 61, 61, 61, 61, 0, | |||
312 | 1, 2, 77, 4, 5, 0, 83, 0, 0, 61, | |||
313 | 0, 61, 61, 61, 61, 0, 84, 0, 16, 17, | |||
314 | 0, 0, 0, 115, 115, 0, 0, 0, 0, 32, | |||
315 | 0, 0, 8, 8, 8, 8, 8, 8, 8, 8, | |||
316 | 8, 8, 61, 0, 61, 61, 0, 0, 0, 0, | |||
317 | 73, 0, 0, 0, 0, 0, 129, 0, 0, 41, | |||
318 | 41, 41, 41, 41, 41, 41, 41, 41, 41, 0, | |||
319 | 0, 0, 0, 0, 0, 61, 61, 0, 0, 0, | |||
320 | 0, 0, 0, 0, 0, 0, 0, 73, 73, 0, | |||
321 | 0, 73, 73, 73, 73, 73, 0, 73, 0, 0, | |||
322 | 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, | |||
323 | 73, 128, 73, 73, 0, 0, 0, 0, 39, 0, | |||
324 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | |||
325 | 130, 0, 0, 43, 43, 43, 43, 43, 43, 43, | |||
326 | 43, 43, 43, 73, 73, 36, 0, 0, 0, 0, | |||
327 | 0, 0, 0, 0, 0, 39, 39, 0, 0, 39, | |||
328 | 39, 39, 39, 39, 39, 39, 0, 0, 0, 0, | |||
329 | 0, 0, 0, 0, 73, 73, 39, 0, 39, 0, | |||
330 | 39, 39, 36, 36, 0, 0, 36, 36, 36, 36, | |||
331 | 36, 36, 36, 0, 0, 0, 0, 0, 0, 0, | |||
332 | 0, 0, 0, 36, 0, 36, 0, 36, 36, 39, | |||
333 | 0, 39, 39, 60, 0, 0, 0, 0, 0, 0, | |||
334 | 0, 0, 0, 0, 103, 61, 0, 0, 61, 61, | |||
335 | 61, 61, 61, 61, 61, 61, 61, 61, 36, 36, | |||
336 | 0, 0, 39, 39, 0, 0, 0, 0, 0, 0, | |||
337 | 60, 60, 59, 0, 60, 60, 60, 60, 60, 60, | |||
338 | 60, 0, 103, 0, 0, 103, 0, 0, 103, 36, | |||
339 | 36, 60, 0, 60, 0, 60, 60, 0, 0, 0, | |||
340 | 0, 0, 103, 0, 103, 0, 103, 103, 0, 59, | |||
341 | 59, 0, 0, 59, 59, 59, 59, 59, 59, 59, | |||
342 | 0, 0, 0, 0, 0, 0, 60, 60, 0, 0, | |||
343 | 59, 0, 59, 0, 59, 59, 0, 103, 103, 0, | |||
344 | 71, 0, 0, 0, 128, 0, 0, 73, 73, 73, | |||
345 | 73, 73, 73, 73, 73, 73, 73, 60, 60, 0, | |||
346 | 0, 0, 0, 0, 0, 59, 59, 73, 103, 103, | |||
347 | 0, 0, 0, 0, 0, 0, 0, 71, 71, 0, | |||
348 | 0, 71, 71, 71, 71, 71, 0, 71, 0, 0, | |||
349 | 0, 0, 0, 0, 0, 119, 59, 59, 71, 0, | |||
350 | 71, 0, 71, 71, 73, 73, 0, 0, 73, 73, | |||
351 | 73, 73, 73, 0, 73, 39, 39, 39, 39, 39, | |||
352 | 39, 39, 39, 39, 39, 73, 0, 73, 0, 73, | |||
353 | 73, 0, 0, 71, 71, 72, 119, 0, 0, 119, | |||
354 | 0, 0, 36, 36, 36, 36, 36, 36, 36, 36, | |||
355 | 36, 36, 0, 119, 0, 0, 0, 0, 119, 0, | |||
356 | 73, 73, 0, 0, 71, 71, 0, 0, 0, 0, | |||
357 | 0, 0, 72, 72, 0, 0, 72, 72, 72, 72, | |||
358 | 72, 0, 72, 0, 0, 0, 0, 0, 119, 0, | |||
359 | 0, 73, 73, 72, 0, 72, 0, 72, 72, 0, | |||
360 | 0, 0, 0, 0, 116, 0, 0, 0, 0, 0, | |||
361 | 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, | |||
362 | 119, 103, 103, 103, 103, 103, 103, 0, 72, 72, | |||
363 | 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, | |||
364 | 0, 0, 0, 0, 86, 116, 0, 0, 116, 59, | |||
365 | 59, 59, 59, 59, 59, 59, 59, 59, 59, 72, | |||
366 | 72, 0, 116, 0, 0, 0, 0, 116, 0, 0, | |||
367 | 72, 72, 0, 0, 0, 72, 72, 72, 72, 0, | |||
368 | 72, 86, 86, 0, 0, 86, 86, 86, 86, 86, | |||
369 | 0, 86, 0, 72, 0, 72, 72, 116, 97, 0, | |||
370 | 0, 0, 86, 0, 86, 0, 86, 86, 0, 0, | |||
371 | 0, 0, 0, 0, 0, 0, 0, 71, 71, 71, | |||
372 | 71, 71, 71, 71, 71, 71, 71, 72, 116, 116, | |||
373 | 0, 0, 0, 0, 0, 98, 97, 86, 86, 97, | |||
374 | 0, 97, 97, 97, 73, 73, 73, 73, 73, 73, | |||
375 | 73, 73, 73, 73, 0, 0, 97, 72, 97, 0, | |||
376 | 97, 97, 0, 0, 0, 42, 0, 0, 86, 86, | |||
377 | 0, 0, 119, 98, 0, 0, 98, 0, 98, 98, | |||
378 | 98, 0, 0, 0, 0, 0, 0, 0, 95, 0, | |||
379 | 0, 97, 97, 98, 0, 98, 0, 98, 98, 0, | |||
380 | 0, 0, 0, 0, 0, 99, 0, 0, 0, 0, | |||
381 | 0, 0, 72, 72, 72, 72, 72, 72, 72, 72, | |||
382 | 72, 72, 97, 97, 0, 0, 0, 0, 98, 98, | |||
383 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | |||
384 | 136, 0, 100, 99, 0, 0, 99, 0, 99, 99, | |||
385 | 99, 0, 0, 0, 0, 0, 0, 0, 0, 98, | |||
386 | 98, 0, 0, 99, 0, 99, 151, 99, 99, 152, | |||
387 | 0, 154, 0, 0, 0, 0, 0, 0, 0, 0, | |||
388 | 100, 116, 116, 100, 0, 0, 100, 0, 0, 0, | |||
389 | 0, 0, 0, 0, 177, 0, 101, 0, 99, 99, | |||
390 | 100, 0, 100, 183, 100, 100, 0, 0, 151, 0, | |||
391 | 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, | |||
392 | 196, 86, 86, 86, 86, 86, 86, 86, 86, 99, | |||
393 | 99, 0, 0, 0, 101, 100, 100, 101, 0, 0, | |||
394 | 101, 0, 0, 0, 0, 0, 0, 102, 0, 183, | |||
395 | 0, 0, 0, 0, 101, 0, 101, 0, 101, 101, | |||
396 | 0, 0, 0, 0, 0, 0, 100, 100, 0, 0, | |||
397 | 0, 0, 0, 0, 0, 97, 97, 97, 97, 97, | |||
398 | 97, 97, 97, 0, 104, 102, 0, 0, 102, 101, | |||
399 | 101, 102, 0, 0, 0, 0, 0, 0, 0, 0, | |||
400 | 0, 0, 0, 0, 0, 102, 0, 102, 0, 102, | |||
401 | 102, 0, 98, 98, 98, 98, 98, 98, 98, 98, | |||
402 | 101, 101, 104, 0, 0, 104, 0, 0, 104, 0, | |||
403 | 0, 0, 0, 0, 0, 105, 0, 0, 0, 0, | |||
404 | 102, 102, 104, 0, 104, 0, 104, 104, 0, 0, | |||
405 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | |||
406 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | |||
407 | 0, 102, 102, 105, 106, 0, 105, 104, 104, 105, | |||
408 | 0, 0, 99, 99, 99, 99, 99, 99, 99, 99, | |||
409 | 0, 0, 0, 105, 0, 105, 0, 105, 105, 0, | |||
410 | 0, 0, 0, 0, 0, 0, 0, 117, 104, 104, | |||
411 | 0, 0, 106, 0, 0, 106, 0, 0, 106, 100, | |||
412 | 100, 100, 100, 100, 100, 100, 100, 0, 105, 105, | |||
413 | 0, 0, 106, 0, 106, 0, 106, 106, 0, 0, | |||
414 | 0, 0, 0, 107, 0, 0, 0, 0, 117, 0, | |||
415 | 108, 117, 0, 0, 0, 0, 0, 0, 0, 105, | |||
416 | 105, 0, 0, 0, 0, 117, 0, 106, 106, 0, | |||
417 | 117, 0, 0, 101, 101, 101, 101, 101, 101, 101, | |||
418 | 101, 107, 0, 0, 107, 0, 0, 107, 108, 0, | |||
419 | 0, 108, 0, 0, 108, 0, 0, 109, 106, 106, | |||
420 | 117, 107, 0, 107, 0, 107, 107, 0, 108, 0, | |||
421 | 0, 0, 0, 108, 0, 110, 0, 0, 0, 0, | |||
422 | 0, 0, 0, 0, 102, 102, 102, 102, 102, 102, | |||
423 | 102, 102, 117, 0, 0, 109, 107, 107, 109, 111, | |||
424 | 0, 109, 0, 108, 108, 0, 0, 0, 112, 0, | |||
425 | 0, 0, 0, 110, 0, 109, 110, 0, 0, 110, | |||
426 | 109, 104, 104, 104, 104, 104, 104, 107, 107, 0, | |||
427 | 0, 0, 0, 110, 108, 108, 0, 111, 110, 0, | |||
428 | 111, 0, 0, 111, 0, 113, 112, 114, 0, 112, | |||
429 | 109, 109, 112, 0, 0, 0, 0, 111, 0, 0, | |||
430 | 0, 0, 111, 0, 0, 0, 112, 0, 110, 110, | |||
431 | 0, 112, 105, 105, 105, 105, 105, 105, 0, 0, | |||
432 | 0, 109, 109, 0, 118, 0, 113, 0, 114, 113, | |||
433 | 0, 114, 111, 111, 0, 0, 0, 0, 0, 110, | |||
434 | 110, 112, 112, 113, 0, 114, 0, 0, 113, 0, | |||
435 | 114, 106, 106, 106, 106, 106, 106, 0, 0, 0, | |||
436 | 0, 0, 0, 111, 111, 118, 0, 0, 118, 0, | |||
437 | 0, 0, 112, 112, 120, 0, 0, 0, 113, 113, | |||
438 | 114, 114, 118, 0, 117, 117, 0, 118, 26, 0, | |||
439 | 0, 0, 0, 0, 0, 23, 0, 20, 18, 0, | |||
440 | 19, 0, 0, 0, 0, 0, 0, 0, 0, 113, | |||
441 | 113, 114, 114, 0, 0, 120, 0, 118, 120, 0, | |||
442 | 107, 107, 107, 107, 107, 107, 0, 108, 108, 108, | |||
443 | 108, 26, 120, 0, 0, 0, 0, 120, 23, 0, | |||
444 | 20, 18, 0, 19, 0, 0, 0, 0, 0, 118, | |||
445 | 0, 26, 0, 0, 0, 0, 0, 0, 23, 0, | |||
446 | 20, 18, 0, 19, 0, 0, 0, 120, 0, 0, | |||
447 | 0, 0, 0, 0, 109, 109, 109, 109, 24, 0, | |||
448 | 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, | |||
449 | 0, 148, 110, 110, 110, 110, 26, 0, 0, 120, | |||
450 | 0, 0, 0, 23, 0, 20, 18, 0, 19, 0, | |||
451 | 0, 0, 0, 0, 0, 0, 111, 111, 0, 0, | |||
452 | 0, 24, 0, 0, 25, 112, 112, 0, 0, 0, | |||
453 | 72, 72, 0, 0, 72, 72, 72, 0, 72, 0, | |||
454 | 72, 24, 0, 0, 25, 0, 0, 0, 0, 0, | |||
455 | 0, 0, 0, 72, 0, 72, 72, 0, 0, 36, | |||
456 | 0, 0, 113, 113, 114, 114, 0, 0, 0, 0, | |||
457 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | |||
458 | 0, 0, 36, 0, 0, 0, 24, 72, 0, 25, | |||
459 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | |||
460 | 0, 118, 118, 0, 0, 0, 0, 0, 0, 36, | |||
461 | 0, 0, 1, 2, 3, 4, 5, 72, 6, 0, | |||
462 | 7, 8, 9, 10, 11, 12, 13, 14, 15, 0, | |||
463 | 16, 17, 0, 0, 36, 0, 0, 0, 0, 0, | |||
464 | 21, 22, 0, 0, 0, 0, 0, 0, 0, 0, | |||
465 | 0, 120, 0, 0, 0, 1, 2, 3, 4, 5, | |||
466 | 36, 6, 0, 36, 0, 36, 0, 0, 36, 0, | |||
467 | 0, 15, 0, 16, 17, 1, 2, 77, 4, 5, | |||
468 | 0, 83, 47, 21, 22, 0, 0, 0, 36, 0, | |||
469 | 0, 84, 0, 16, 17, 0, 0, 36, 0, 0, | |||
470 | 36, 0, 36, 21, 22, 47, 49, 0, 0, 0, | |||
471 | 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, | |||
472 | 1, 2, 3, 4, 5, 0, 6, 0, 0, 49, | |||
473 | 0, 0, 47, 0, 0, 0, 15, 0, 16, 17, | |||
474 | 0, 36, 0, 36, 0, 0, 0, 0, 21, 22, | |||
475 | 0, 0, 0, 36, 0, 0, 49, 47, 0, 0, | |||
476 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | |||
477 | 72, 72, 72, 72, 72, 72, 72, 72, 72, 72, | |||
478 | 0, 49, 0, 47, 0, 0, 47, 0, 47, 0, | |||
479 | 0, 47, 0, 0, 0, 0, 0, 0, 0, 0, | |||
480 | 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, | |||
481 | 49, 47, 49, 0, 0, 49, 0, 0, 0, 0, | |||
482 | 47, 0, 0, 47, 0, 47, 0, 0, 0, 0, | |||
483 | 0, 0, 0, 0, 0, 49, 0, 47, 0, 0, | |||
484 | 0, 0, 0, 0, 49, 0, 0, 49, 0, 49, | |||
485 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, | |||
486 | 0, 49, 0, 0, 47, 0, 47, 0, 0, 0, | |||
487 | 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, | |||
488 | 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, | |||
489 | 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, | |||
490 | 49, | |||
491 | }; | |||
492 | const short yycheckjava_yycheck[] = | |||
493 | { 61, | |||
494 | 0, 60, 44, 62, 40, 46, 41, 63, 131, 132, | |||
495 | 18, 19, 20, 21, 22, 17, 31, 25, 26, 34, | |||
496 | 139, 23, 74, 142, 76, 141, 40, 0, 139, 40, | |||
497 | 46, 142, 46, 147, 0, 46, 91, 37, 38, 44, | |||
498 | 40, 41, 42, 43, 44, 45, 46, 47, 100, 37, | |||
499 | 91, 17, 46, 105, 42, 91, 91, 23, 58, 47, | |||
500 | 60, 61, 62, 63, 37, 38, 182, 40, 41, 42, | |||
501 | 43, 44, 45, 46, 47, 198, 190, 91, 194, 94, | |||
502 | 91, 91, 43, 125, 45, 58, 0, 60, 61, 62, | |||
503 | 63, 91, 259, 93, 94, 0, 263, 119, 120, 121, | |||
504 | 122, 259, 285, 286, 112, 113, 114, 265, 266, 267, | |||
505 | 268, 269, 270, 271, 272, 38, 33, 94, 91, 278, | |||
506 | 93, 94, 0, 40, 124, 125, 124, 41, 283, 284, | |||
507 | 44, 91, 37, 38, 279, 280, 41, 42, 43, 44, | |||
508 | 45, 46, 47, 40, 58, 115, 116, 123, 124, 63, | |||
509 | 46, 124, 125, 58, 41, 60, 61, 62, 63, 37, | |||
510 | 38, 117, 118, 41, 42, 43, 44, 45, 46, 47, | |||
511 | 91, 93, 40, 0, 93, 91, 41, 40, 93, 93, | |||
512 | 58, 189, 60, 61, 62, 63, 91, 93, 93, 94, | |||
513 | 93, 44, 41, 93, 58, 41, 0, 41, 41, 0, | |||
514 | 0, 40, 0, 41, 0, 41, 123, 41, 50, 126, | |||
515 | 124, 125, 274, 91, 41, 93, 94, 44, 80, 124, | |||
516 | 125, 277, 281, 282, 125, 127, 130, 126, -1, -1, | |||
517 | 128, 58, -1, 37, 38, -1, -1, 41, 42, 43, | |||
518 | 44, 45, 46, 47, -1, -1, 124, 125, -1, -1, | |||
519 | -1, -1, -1, -1, 58, -1, 60, 61, 62, 63, | |||
520 | -1, -1, -1, -1, -1, -1, 93, -1, -1, -1, | |||
521 | -1, -1, -1, -1, 274, -1, -1, 277, 278, 279, | |||
522 | 280, 281, 282, 283, 284, 285, 286, 91, -1, 93, | |||
523 | 94, 0, -1, -1, -1, -1, -1, -1, 125, -1, | |||
524 | -1, 274, -1, -1, 277, 278, 279, 280, 281, 282, | |||
525 | 283, 284, 285, 286, -1, -1, -1, -1, -1, -1, | |||
526 | 124, 125, -1, -1, -1, -1, -1, -1, 37, 38, | |||
527 | -1, -1, 41, 42, 43, 44, 45, 46, 47, -1, | |||
528 | 257, 258, 259, 260, 261, -1, 263, -1, -1, 58, | |||
529 | -1, 60, 61, 62, 63, -1, 273, -1, 275, 276, | |||
530 | -1, -1, -1, 277, 278, -1, -1, -1, -1, 274, | |||
531 | -1, -1, 277, 278, 279, 280, 281, 282, 283, 284, | |||
532 | 285, 286, 91, -1, 93, 94, -1, -1, -1, -1, | |||
533 | 0, -1, -1, -1, -1, -1, 274, -1, -1, 277, | |||
534 | 278, 279, 280, 281, 282, 283, 284, 285, 286, -1, | |||
535 | -1, -1, -1, -1, -1, 124, 125, -1, -1, -1, | |||
536 | -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, | |||
537 | -1, 41, 42, 43, 44, 45, -1, 47, -1, -1, | |||
538 | -1, -1, -1, -1, -1, -1, -1, -1, 58, -1, | |||
539 | 60, 61, 62, 63, -1, -1, -1, -1, 0, -1, | |||
540 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, | |||
541 | 274, -1, -1, 277, 278, 279, 280, 281, 282, 283, | |||
542 | 284, 285, 286, 93, 94, 0, -1, -1, -1, -1, | |||
543 | -1, -1, -1, -1, -1, 37, 38, -1, -1, 41, | |||
544 | 42, 43, 44, 45, 46, 47, -1, -1, -1, -1, | |||
545 | -1, -1, -1, -1, 124, 125, 58, -1, 60, -1, | |||
546 | 62, 63, 37, 38, -1, -1, 41, 42, 43, 44, | |||
547 | 45, 46, 47, -1, -1, -1, -1, -1, -1, -1, | |||
548 | -1, -1, -1, 58, -1, 60, -1, 62, 63, 91, | |||
549 | -1, 93, 94, 0, -1, -1, -1, -1, -1, -1, | |||
550 | -1, -1, -1, -1, 0, 274, -1, -1, 277, 278, | |||
551 | 279, 280, 281, 282, 283, 284, 285, 286, 93, 94, | |||
552 | -1, -1, 124, 125, -1, -1, -1, -1, -1, -1, | |||
553 | 37, 38, 0, -1, 41, 42, 43, 44, 45, 46, | |||
554 | 47, -1, 38, -1, -1, 41, -1, -1, 44, 124, | |||
555 | 125, 58, -1, 60, -1, 62, 63, -1, -1, -1, | |||
556 | -1, -1, 58, -1, 60, -1, 62, 63, -1, 37, | |||
557 | 38, -1, -1, 41, 42, 43, 44, 45, 46, 47, | |||
558 | -1, -1, -1, -1, -1, -1, 93, 94, -1, -1, | |||
559 | 58, -1, 60, -1, 62, 63, -1, 93, 94, -1, | |||
560 | 0, -1, -1, -1, 274, -1, -1, 277, 278, 279, | |||
561 | 280, 281, 282, 283, 284, 285, 286, 124, 125, -1, | |||
562 | -1, -1, -1, -1, -1, 93, 94, 0, 124, 125, | |||
563 | -1, -1, -1, -1, -1, -1, -1, 37, 38, -1, | |||
564 | -1, 41, 42, 43, 44, 45, -1, 47, -1, -1, | |||
565 | -1, -1, -1, -1, -1, 0, 124, 125, 58, -1, | |||
566 | 60, -1, 62, 63, 37, 38, -1, -1, 41, 42, | |||
567 | 43, 44, 45, -1, 47, 277, 278, 279, 280, 281, | |||
568 | 282, 283, 284, 285, 286, 58, -1, 60, -1, 62, | |||
569 | 63, -1, -1, 93, 94, 0, 41, -1, -1, 44, | |||
570 | -1, -1, 277, 278, 279, 280, 281, 282, 283, 284, | |||
571 | 285, 286, -1, 58, -1, -1, -1, -1, 63, -1, | |||
572 | 93, 94, -1, -1, 124, 125, -1, -1, -1, -1, | |||
573 | -1, -1, 37, 38, -1, -1, 41, 42, 43, 44, | |||
574 | 45, -1, 47, -1, -1, -1, -1, -1, 93, -1, | |||
575 | -1, 124, 125, 58, -1, 60, -1, 62, 63, -1, | |||
576 | -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, | |||
577 | 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, | |||
578 | 125, 277, 278, 279, 280, 281, 282, -1, 93, 94, | |||
579 | -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, | |||
580 | -1, -1, -1, -1, 0, 41, -1, -1, 44, 277, | |||
581 | 278, 279, 280, 281, 282, 283, 284, 285, 286, 124, | |||
582 | 125, -1, 58, -1, -1, -1, -1, 63, -1, -1, | |||
583 | 37, 38, -1, -1, -1, 42, 43, 44, 45, -1, | |||
584 | 47, 37, 38, -1, -1, 41, 42, 43, 44, 45, | |||
585 | -1, 47, -1, 60, -1, 62, 63, 93, 0, -1, | |||
586 | -1, -1, 58, -1, 60, -1, 62, 63, -1, -1, | |||
587 | -1, -1, -1, -1, -1, -1, -1, 277, 278, 279, | |||
588 | 280, 281, 282, 283, 284, 285, 286, 94, 124, 125, | |||
589 | -1, -1, -1, -1, -1, 0, 38, 93, 94, 41, | |||
590 | -1, 43, 44, 45, 277, 278, 279, 280, 281, 282, | |||
591 | 283, 284, 285, 286, -1, -1, 58, 124, 60, -1, | |||
592 | 62, 63, -1, -1, -1, 0, -1, -1, 124, 125, | |||
593 | -1, -1, 277, 38, -1, -1, 41, -1, 43, 44, | |||
594 | 45, -1, -1, -1, -1, -1, -1, -1, 23, -1, | |||
595 | -1, 93, 94, 58, -1, 60, -1, 62, 63, -1, | |||
596 | -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, | |||
597 | -1, -1, 277, 278, 279, 280, 281, 282, 283, 284, | |||
598 | 285, 286, 124, 125, -1, -1, -1, -1, 93, 94, | |||
599 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, | |||
600 | 75, -1, 0, 38, -1, -1, 41, -1, 43, 44, | |||
601 | 45, -1, -1, -1, -1, -1, -1, -1, -1, 124, | |||
602 | 125, -1, -1, 58, -1, 60, 101, 62, 63, 104, | |||
603 | -1, 106, -1, -1, -1, -1, -1, -1, -1, -1, | |||
604 | 38, 277, 278, 41, -1, -1, 44, -1, -1, -1, | |||
605 | -1, -1, -1, -1, 129, -1, 0, -1, 93, 94, | |||
606 | 58, -1, 60, 138, 62, 63, -1, -1, 143, -1, | |||
607 | 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, | |||
608 | 155, 277, 278, 279, 280, 281, 282, 283, 284, 124, | |||
609 | 125, -1, -1, -1, 38, 93, 94, 41, -1, -1, | |||
610 | 44, -1, -1, -1, -1, -1, -1, 0, -1, 184, | |||
611 | -1, -1, -1, -1, 58, -1, 60, -1, 62, 63, | |||
612 | -1, -1, -1, -1, -1, -1, 124, 125, -1, -1, | |||
613 | -1, -1, -1, -1, -1, 277, 278, 279, 280, 281, | |||
614 | 282, 283, 284, -1, 0, 38, -1, -1, 41, 93, | |||
615 | 94, 44, -1, -1, -1, -1, -1, -1, -1, -1, | |||
616 | -1, -1, -1, -1, -1, 58, -1, 60, -1, 62, | |||
617 | 63, -1, 277, 278, 279, 280, 281, 282, 283, 284, | |||
618 | 124, 125, 38, -1, -1, 41, -1, -1, 44, -1, | |||
619 | -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, | |||
620 | 93, 94, 58, -1, 60, -1, 62, 63, -1, -1, | |||
621 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, | |||
622 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, | |||
623 | -1, 124, 125, 38, 0, -1, 41, 93, 94, 44, | |||
624 | -1, -1, 277, 278, 279, 280, 281, 282, 283, 284, | |||
625 | -1, -1, -1, 58, -1, 60, -1, 62, 63, -1, | |||
626 | -1, -1, -1, -1, -1, -1, -1, 0, 124, 125, | |||
627 | -1, -1, 38, -1, -1, 41, -1, -1, 44, 277, | |||
628 | 278, 279, 280, 281, 282, 283, 284, -1, 93, 94, | |||
629 | -1, -1, 58, -1, 60, -1, 62, 63, -1, -1, | |||
630 | -1, -1, -1, 0, -1, -1, -1, -1, 41, -1, | |||
631 | 0, 44, -1, -1, -1, -1, -1, -1, -1, 124, | |||
632 | 125, -1, -1, -1, -1, 58, -1, 93, 94, -1, | |||
633 | 63, -1, -1, 277, 278, 279, 280, 281, 282, 283, | |||
634 | 284, 38, -1, -1, 41, -1, -1, 44, 38, -1, | |||
635 | -1, 41, -1, -1, 44, -1, -1, 0, 124, 125, | |||
636 | 93, 58, -1, 60, -1, 62, 63, -1, 58, -1, | |||
637 | -1, -1, -1, 63, -1, 0, -1, -1, -1, -1, | |||
638 | -1, -1, -1, -1, 277, 278, 279, 280, 281, 282, | |||
639 | 283, 284, 125, -1, -1, 38, 93, 94, 41, 0, | |||
640 | -1, 44, -1, 93, 94, -1, -1, -1, 0, -1, | |||
641 | -1, -1, -1, 38, -1, 58, 41, -1, -1, 44, | |||
642 | 63, 277, 278, 279, 280, 281, 282, 124, 125, -1, | |||
643 | -1, -1, -1, 58, 124, 125, -1, 38, 63, -1, | |||
644 | 41, -1, -1, 44, -1, 0, 38, 0, -1, 41, | |||
645 | 93, 94, 44, -1, -1, -1, -1, 58, -1, -1, | |||
646 | -1, -1, 63, -1, -1, -1, 58, -1, 93, 94, | |||
647 | -1, 63, 277, 278, 279, 280, 281, 282, -1, -1, | |||
648 | -1, 124, 125, -1, 0, -1, 41, -1, 41, 44, | |||
649 | -1, 44, 93, 94, -1, -1, -1, -1, -1, 124, | |||
650 | 125, 93, 94, 58, -1, 58, -1, -1, 63, -1, | |||
651 | 63, 277, 278, 279, 280, 281, 282, -1, -1, -1, | |||
652 | -1, -1, -1, 124, 125, 41, -1, -1, 44, -1, | |||
653 | -1, -1, 124, 125, 0, -1, -1, -1, 93, 94, | |||
654 | 93, 94, 58, -1, 277, 278, -1, 63, 33, -1, | |||
655 | -1, -1, -1, -1, -1, 40, -1, 42, 43, -1, | |||
656 | 45, -1, -1, -1, -1, -1, -1, -1, -1, 124, | |||
657 | 125, 124, 125, -1, -1, 41, -1, 93, 44, -1, | |||
658 | 277, 278, 279, 280, 281, 282, -1, 277, 278, 279, | |||
659 | 280, 33, 58, -1, -1, -1, -1, 63, 40, -1, | |||
660 | 42, 43, -1, 45, -1, -1, -1, -1, -1, 125, | |||
661 | -1, 33, -1, -1, -1, -1, -1, -1, 40, -1, | |||
662 | 42, 43, -1, 45, -1, -1, -1, 93, -1, -1, | |||
663 | -1, -1, -1, -1, 277, 278, 279, 280, 123, -1, | |||
664 | -1, 126, -1, -1, -1, -1, -1, -1, -1, -1, | |||
665 | -1, 93, 277, 278, 279, 280, 33, -1, -1, 125, | |||
666 | -1, -1, -1, 40, -1, 42, 43, -1, 45, -1, | |||
667 | -1, -1, -1, -1, -1, -1, 277, 278, -1, -1, | |||
668 | -1, 123, -1, -1, 126, 277, 278, -1, -1, -1, | |||
669 | 37, 38, -1, -1, 41, 42, 43, -1, 45, -1, | |||
670 | 47, 123, -1, -1, 126, -1, -1, -1, -1, -1, | |||
671 | -1, -1, -1, 60, -1, 62, 63, -1, -1, 0, | |||
672 | -1, -1, 277, 278, 277, 278, -1, -1, -1, -1, | |||
673 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, | |||
674 | -1, -1, 23, -1, -1, -1, 123, 94, -1, 126, | |||
675 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, | |||
676 | -1, 277, 278, -1, -1, -1, -1, -1, -1, 50, | |||
677 | -1, -1, 257, 258, 259, 260, 261, 124, 263, -1, | |||
678 | 265, 266, 267, 268, 269, 270, 271, 272, 273, -1, | |||
679 | 275, 276, -1, -1, 75, -1, -1, -1, -1, -1, | |||
680 | 285, 286, -1, -1, -1, -1, -1, -1, -1, -1, | |||
681 | -1, 277, -1, -1, -1, 257, 258, 259, 260, 261, | |||
682 | 101, 263, -1, 104, -1, 106, -1, -1, 109, -1, | |||
683 | -1, 273, -1, 275, 276, 257, 258, 259, 260, 261, | |||
684 | -1, 263, 0, 285, 286, -1, -1, -1, 129, -1, | |||
685 | -1, 273, -1, 275, 276, -1, -1, 138, -1, -1, | |||
686 | 141, -1, 143, 285, 286, 23, 0, -1, -1, -1, | |||
687 | -1, -1, -1, -1, 155, -1, -1, -1, -1, -1, | |||
688 | 257, 258, 259, 260, 261, -1, 263, -1, -1, 23, | |||
689 | -1, -1, 50, -1, -1, -1, 273, -1, 275, 276, | |||
690 | -1, 182, -1, 184, -1, -1, -1, -1, 285, 286, | |||
691 | -1, -1, -1, 194, -1, -1, 50, 75, -1, -1, | |||
692 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, | |||
693 | 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, | |||
694 | -1, 75, -1, 101, -1, -1, 104, -1, 106, -1, | |||
695 | -1, 109, -1, -1, -1, -1, -1, -1, -1, -1, | |||
696 | -1, -1, -1, -1, -1, -1, -1, 101, -1, -1, | |||
697 | 104, 129, 106, -1, -1, 109, -1, -1, -1, -1, | |||
698 | 138, -1, -1, 141, -1, 143, -1, -1, -1, -1, | |||
699 | -1, -1, -1, -1, -1, 129, -1, 155, -1, -1, | |||
700 | -1, -1, -1, -1, 138, -1, -1, 141, -1, 143, | |||
701 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, | |||
702 | -1, 155, -1, -1, 182, -1, 184, -1, -1, -1, | |||
703 | -1, -1, -1, -1, -1, -1, 194, -1, -1, -1, | |||
704 | -1, -1, -1, -1, -1, -1, -1, -1, 182, -1, | |||
705 | 184, -1, -1, -1, -1, -1, -1, -1, -1, -1, | |||
706 | 194, | |||
707 | }; | |||
708 | #define YYFINAL27 27 | |||
709 | #ifndef YYDEBUG1 | |||
710 | #define YYDEBUG1 0 | |||
711 | #endif | |||
712 | #define YYMAXTOKEN286 286 | |||
713 | #if YYDEBUG1 | |||
714 | const char * const yynamejava_name[] = | |||
715 | { | |||
716 | "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, | |||
717 | "'!'",0,0,0,"'%'","'&'",0,"'('","')'","'*'","'+'","','","'-'","'.'","'/'",0,0,0, | |||
718 | 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, | |||
719 | 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, | |||
720 | 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, | |||
721 | 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,0, | |||
722 | 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,0, | |||
723 | 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,"INTEGER_LITERAL", | |||
724 | "FLOATING_POINT_LITERAL","IDENTIFIER","STRING_LITERAL","BOOLEAN_LITERAL", | |||
725 | "TYPENAME","NAME_OR_INT","ERROR","LONG","SHORT","BYTE","INT","CHAR","BOOLEAN", | |||
726 | "DOUBLE","FLOAT","VARIABLE","ASSIGN_MODIFY","SUPER","NEW","OROR","ANDAND", | |||
727 | "EQUAL","NOTEQUAL","LEQ","GEQ","LSH","RSH","INCREMENT","DECREMENT", | |||
728 | }; | |||
729 | const char * const yyrulejava_rule[] = | |||
730 | {"$accept : start", | |||
731 | "start : exp1", | |||
732 | "start : type_exp", | |||
733 | "type_exp : PrimitiveOrArrayType", | |||
734 | "PrimitiveOrArrayType : PrimitiveType", | |||
735 | "PrimitiveOrArrayType : ArrayType", | |||
736 | "StringLiteral : STRING_LITERAL", | |||
737 | "Literal : INTEGER_LITERAL", | |||
738 | "Literal : NAME_OR_INT", | |||
739 | "Literal : FLOATING_POINT_LITERAL", | |||
740 | "Literal : BOOLEAN_LITERAL", | |||
741 | "Literal : StringLiteral", | |||
742 | "PrimitiveType : NumericType", | |||
743 | "PrimitiveType : BOOLEAN", | |||
744 | "NumericType : IntegralType", | |||
745 | "NumericType : FloatingPointType", | |||
746 | "IntegralType : BYTE", | |||
747 | "IntegralType : SHORT", | |||
748 | "IntegralType : INT", | |||
749 | "IntegralType : LONG", | |||
750 | "IntegralType : CHAR", | |||
751 | "FloatingPointType : FLOAT", | |||
752 | "FloatingPointType : DOUBLE", | |||
753 | "ClassOrInterfaceType : Name", | |||
754 | "ClassType : ClassOrInterfaceType", | |||
755 | "ArrayType : PrimitiveType Dims", | |||
756 | "ArrayType : Name Dims", | |||
757 | "Name : IDENTIFIER", | |||
758 | "Name : QualifiedName", | |||
759 | "ForcedName : SimpleName", | |||
760 | "ForcedName : QualifiedName", | |||
761 | "SimpleName : IDENTIFIER", | |||
762 | "SimpleName : NAME_OR_INT", | |||
763 | "QualifiedName : Name '.' SimpleName", | |||
764 | "exp1 : Expression", | |||
765 | "exp1 : exp1 ',' Expression", | |||
766 | "Primary : PrimaryNoNewArray", | |||
767 | "Primary : ArrayCreationExpression", | |||
768 | "PrimaryNoNewArray : Literal", | |||
769 | "PrimaryNoNewArray : '(' Expression ')'", | |||
770 | "PrimaryNoNewArray : ClassInstanceCreationExpression", | |||
771 | "PrimaryNoNewArray : FieldAccess", | |||
772 | "PrimaryNoNewArray : MethodInvocation", | |||
773 | "PrimaryNoNewArray : ArrayAccess", | |||
774 | "PrimaryNoNewArray : lcurly ArgumentList rcurly", | |||
775 | "lcurly : '{'", | |||
776 | "rcurly : '}'", | |||
777 | "ClassInstanceCreationExpression : NEW ClassType '(' ArgumentList_opt ')'", | |||
778 | "ArgumentList : Expression", | |||
779 | "ArgumentList : ArgumentList ',' Expression", | |||
780 | "ArgumentList_opt :", | |||
781 | "ArgumentList_opt : ArgumentList", | |||
782 | "ArrayCreationExpression : NEW PrimitiveType DimExprs Dims_opt", | |||
783 | "ArrayCreationExpression : NEW ClassOrInterfaceType DimExprs Dims_opt", | |||
784 | "DimExprs : DimExpr", | |||
785 | "DimExprs : DimExprs DimExpr", | |||
786 | "DimExpr : '[' Expression ']'", | |||
787 | "Dims : '[' ']'", | |||
788 | "Dims : Dims '[' ']'", | |||
789 | "Dims_opt : Dims", | |||
790 | "Dims_opt :", | |||
791 | "FieldAccess : Primary '.' SimpleName", | |||
792 | "FieldAccess : VARIABLE '.' SimpleName", | |||
793 | "FuncStart : Name '('", | |||
794 | "$$1 :", | |||
795 | "MethodInvocation : FuncStart $$1 ArgumentList_opt ')'", | |||
796 | "MethodInvocation : Primary '.' SimpleName '(' ArgumentList_opt ')'", | |||
797 | "MethodInvocation : SUPER '.' SimpleName '(' ArgumentList_opt ')'", | |||
798 | "ArrayAccess : Name '[' Expression ']'", | |||
799 | "ArrayAccess : VARIABLE '[' Expression ']'", | |||
800 | "ArrayAccess : PrimaryNoNewArray '[' Expression ']'", | |||
801 | "PostfixExpression : Primary", | |||
802 | "PostfixExpression : Name", | |||
803 | "PostfixExpression : VARIABLE", | |||
804 | "PostfixExpression : PostIncrementExpression", | |||
805 | "PostfixExpression : PostDecrementExpression", | |||
806 | "PostIncrementExpression : PostfixExpression INCREMENT", | |||
807 | "PostDecrementExpression : PostfixExpression DECREMENT", | |||
808 | "UnaryExpression : PreIncrementExpression", | |||
809 | "UnaryExpression : PreDecrementExpression", | |||
810 | "UnaryExpression : '+' UnaryExpression", | |||
811 | "UnaryExpression : '-' UnaryExpression", | |||
812 | "UnaryExpression : '*' UnaryExpression", | |||
813 | "UnaryExpression : UnaryExpressionNotPlusMinus", | |||
814 | "PreIncrementExpression : INCREMENT UnaryExpression", | |||
815 | "PreDecrementExpression : DECREMENT UnaryExpression", | |||
816 | "UnaryExpressionNotPlusMinus : PostfixExpression", | |||
817 | "UnaryExpressionNotPlusMinus : '~' UnaryExpression", | |||
818 | "UnaryExpressionNotPlusMinus : '!' UnaryExpression", | |||
819 | "UnaryExpressionNotPlusMinus : CastExpression", | |||
820 | "CastExpression : '(' PrimitiveType Dims_opt ')' UnaryExpression", | |||
821 | "CastExpression : '(' Expression ')' UnaryExpressionNotPlusMinus", | |||
822 | "CastExpression : '(' Name Dims ')' UnaryExpressionNotPlusMinus", | |||
823 | "MultiplicativeExpression : UnaryExpression", | |||
824 | "MultiplicativeExpression : MultiplicativeExpression '*' UnaryExpression", | |||
825 | "MultiplicativeExpression : MultiplicativeExpression '/' UnaryExpression", | |||
826 | "MultiplicativeExpression : MultiplicativeExpression '%' UnaryExpression", | |||
827 | "AdditiveExpression : MultiplicativeExpression", | |||
828 | "AdditiveExpression : AdditiveExpression '+' MultiplicativeExpression", | |||
829 | "AdditiveExpression : AdditiveExpression '-' MultiplicativeExpression", | |||
830 | "ShiftExpression : AdditiveExpression", | |||
831 | "ShiftExpression : ShiftExpression LSH AdditiveExpression", | |||
832 | "ShiftExpression : ShiftExpression RSH AdditiveExpression", | |||
833 | "RelationalExpression : ShiftExpression", | |||
834 | "RelationalExpression : RelationalExpression '<' ShiftExpression", | |||
835 | "RelationalExpression : RelationalExpression '>' ShiftExpression", | |||
836 | "RelationalExpression : RelationalExpression LEQ ShiftExpression", | |||
837 | "RelationalExpression : RelationalExpression GEQ ShiftExpression", | |||
838 | "EqualityExpression : RelationalExpression", | |||
839 | "EqualityExpression : EqualityExpression EQUAL RelationalExpression", | |||
840 | "EqualityExpression : EqualityExpression NOTEQUAL RelationalExpression", | |||
841 | "AndExpression : EqualityExpression", | |||
842 | "AndExpression : AndExpression '&' EqualityExpression", | |||
843 | "ExclusiveOrExpression : AndExpression", | |||
844 | "ExclusiveOrExpression : ExclusiveOrExpression '^' AndExpression", | |||
845 | "InclusiveOrExpression : ExclusiveOrExpression", | |||
846 | "InclusiveOrExpression : InclusiveOrExpression '|' ExclusiveOrExpression", | |||
847 | "ConditionalAndExpression : InclusiveOrExpression", | |||
848 | "ConditionalAndExpression : ConditionalAndExpression ANDAND InclusiveOrExpression", | |||
849 | "ConditionalOrExpression : ConditionalAndExpression", | |||
850 | "ConditionalOrExpression : ConditionalOrExpression OROR ConditionalAndExpression", | |||
851 | "ConditionalExpression : ConditionalOrExpression", | |||
852 | "ConditionalExpression : ConditionalOrExpression '?' Expression ':' ConditionalExpression", | |||
853 | "AssignmentExpression : ConditionalExpression", | |||
854 | "AssignmentExpression : Assignment", | |||
855 | "Assignment : LeftHandSide '=' ConditionalExpression", | |||
856 | "Assignment : LeftHandSide ASSIGN_MODIFY ConditionalExpression", | |||
857 | "LeftHandSide : ForcedName", | |||
858 | "LeftHandSide : VARIABLE", | |||
859 | "LeftHandSide : FieldAccess", | |||
860 | "LeftHandSide : ArrayAccess", | |||
861 | "Expression : AssignmentExpression", | |||
862 | }; | |||
863 | #endif | |||
864 | #ifdef YYSTACKSIZE10000 | |||
865 | #undef YYMAXDEPTH10000 | |||
866 | #define YYMAXDEPTH10000 YYSTACKSIZE10000 | |||
867 | #else | |||
868 | #ifdef YYMAXDEPTH10000 | |||
869 | #define YYSTACKSIZE10000 YYMAXDEPTH10000 | |||
870 | #else | |||
871 | #define YYSTACKSIZE10000 10000 | |||
872 | #define YYMAXDEPTH10000 10000 | |||
873 | #endif | |||
874 | #endif | |||
875 | #define YYINITSTACKSIZE200 200 | |||
876 | /* LINTUSED */ | |||
877 | int yydebugjava_debug; | |||
878 | int yynerrsjava_nerrs; | |||
879 | int yyerrflagjava_errflag; | |||
880 | int yycharjava_char; | |||
881 | short *yyssp; | |||
882 | YYSTYPE *yyvsp; | |||
883 | YYSTYPE yyvaljava_val; | |||
884 | YYSTYPE yylvaljava_lval; | |||
885 | short *yyss; | |||
886 | short *yysslim; | |||
887 | YYSTYPE *yyvs; | |||
888 | unsigned int yystacksize; | |||
889 | int yyparsejava_parse(void); | |||
890 | #line 686 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
891 | /* Take care of parsing a number (anything that starts with a digit). | |||
892 | Set yylval and return the token type; update lexptr. | |||
893 | LEN is the number of characters in it. */ | |||
894 | ||||
895 | /*** Needs some error checking for the float case ***/ | |||
896 | ||||
897 | static int | |||
898 | parse_number (p, len, parsed_float, putithere) | |||
899 | char *p; | |||
900 | int len; | |||
901 | int parsed_float; | |||
902 | YYSTYPE *putithere; | |||
903 | { | |||
904 | ULONGESTunsigned long n = 0; | |||
905 | ULONGESTunsigned long limit, limit_div_base; | |||
906 | ||||
907 | int c; | |||
908 | int base = input_radix; | |||
909 | ||||
910 | struct type *type; | |||
911 | ||||
912 | if (parsed_float) | |||
913 | { | |||
914 | /* It's a float since it contains a point or an exponent. */ | |||
915 | char c; | |||
916 | int num = 0; /* number of tokens scanned by scanf */ | |||
917 | char saved_char = p[len]; | |||
918 | ||||
919 | p[len] = 0; /* null-terminate the token */ | |||
920 | if (sizeof (putithere->typed_val_float.dval) <= sizeof (float)) | |||
921 | num = sscanf (p, "%g%c", (float *) &putithere->typed_val_float.dval, &c); | |||
922 | else if (sizeof (putithere->typed_val_float.dval) <= sizeof (double)) | |||
923 | num = sscanf (p, "%lg%c", (double *) &putithere->typed_val_float.dval, &c); | |||
924 | else | |||
925 | { | |||
926 | #ifdef SCANF_HAS_LONG_DOUBLE1 | |||
927 | num = sscanf (p, "%Lg%c", &putithere->typed_val_float.dval, &c); | |||
928 | #else | |||
929 | /* Scan it into a double, then assign it to the long double. | |||
930 | This at least wins with values representable in the range | |||
931 | of doubles. */ | |||
932 | double temp; | |||
933 | num = sscanf (p, "%lg%c", &temp, &c); | |||
934 | putithere->typed_val_float.dval = temp; | |||
935 | #endif | |||
936 | } | |||
937 | p[len] = saved_char; /* restore the input stream */ | |||
938 | if (num != 1) /* check scanf found ONLY a float ... */ | |||
939 | return ERROR264; | |||
940 | /* See if it has `f' or `d' suffix (float or double). */ | |||
941 | ||||
942 | c = tolower (p[len - 1]); | |||
943 | ||||
944 | if (c == 'f' || c == 'F') | |||
945 | putithere->typed_val_float.type = builtin_type_float; | |||
946 | else if (isdigit (c) || c == '.' || c == 'd' || c == 'D') | |||
947 | putithere->typed_val_float.type = builtin_type_double; | |||
948 | else | |||
949 | return ERROR264; | |||
950 | ||||
951 | return FLOATING_POINT_LITERAL258; | |||
952 | } | |||
953 | ||||
954 | /* Handle base-switching prefixes 0x, 0t, 0d, 0 */ | |||
955 | if (p[0] == '0') | |||
956 | switch (p[1]) | |||
957 | { | |||
958 | case 'x': | |||
959 | case 'X': | |||
960 | if (len >= 3) | |||
961 | { | |||
962 | p += 2; | |||
963 | base = 16; | |||
964 | len -= 2; | |||
965 | } | |||
966 | break; | |||
967 | ||||
968 | case 't': | |||
969 | case 'T': | |||
970 | case 'd': | |||
971 | case 'D': | |||
972 | if (len >= 3) | |||
973 | { | |||
974 | p += 2; | |||
975 | base = 10; | |||
976 | len -= 2; | |||
977 | } | |||
978 | break; | |||
979 | ||||
980 | default: | |||
981 | base = 8; | |||
982 | break; | |||
983 | } | |||
984 | ||||
985 | c = p[len-1]; | |||
986 | /* A paranoid calculation of (1<<64)-1. */ | |||
987 | limit = (ULONGESTunsigned long)0xffffffff; | |||
988 | limit = ((limit << 16) << 16) | limit; | |||
989 | if (c == 'l' || c == 'L') | |||
990 | { | |||
991 | type = java_long_type; | |||
992 | len--; | |||
993 | } | |||
994 | else | |||
995 | { | |||
996 | type = java_int_type; | |||
997 | } | |||
998 | limit_div_base = limit / (ULONGESTunsigned long) base; | |||
999 | ||||
1000 | while (--len >= 0) | |||
1001 | { | |||
1002 | c = *p++; | |||
1003 | if (c >= '0' && c <= '9') | |||
1004 | c -= '0'; | |||
1005 | else if (c >= 'A' && c <= 'Z') | |||
1006 | c -= 'A' - 10; | |||
1007 | else if (c >= 'a' && c <= 'z') | |||
1008 | c -= 'a' - 10; | |||
1009 | else | |||
1010 | return ERROR264; /* Char not a digit */ | |||
1011 | if (c >= base) | |||
1012 | return ERROR264; | |||
1013 | if (n > limit_div_base | |||
1014 | || (n *= base) > limit - c) | |||
1015 | error (_("Numeric constant too large")("Numeric constant too large")); | |||
1016 | n += c; | |||
1017 | } | |||
1018 | ||||
1019 | /* If the type is bigger than a 32-bit signed integer can be, implicitly | |||
1020 | promote to long. Java does not do this, so mark it as builtin_type_uint64 | |||
1021 | rather than java_long_type. 0x80000000 will become -0x80000000 instead | |||
1022 | of 0x80000000L, because we don't know the sign at this point. | |||
1023 | */ | |||
1024 | if (type == java_int_type && n > (ULONGESTunsigned long)0x80000000) | |||
1025 | type = builtin_type_uint64; | |||
1026 | ||||
1027 | putithere->typed_val_int.val = n; | |||
1028 | putithere->typed_val_int.type = type; | |||
1029 | ||||
1030 | return INTEGER_LITERAL257; | |||
1031 | } | |||
1032 | ||||
1033 | struct token | |||
1034 | { | |||
1035 | char *operator; | |||
1036 | int token; | |||
1037 | enum exp_opcode opcode; | |||
1038 | }; | |||
1039 | ||||
1040 | static const struct token tokentab3[] = | |||
1041 | { | |||
1042 | {">>=", ASSIGN_MODIFY274, BINOP_RSH}, | |||
1043 | {"<<=", ASSIGN_MODIFY274, BINOP_LSH} | |||
1044 | }; | |||
1045 | ||||
1046 | static const struct token tokentab2[] = | |||
1047 | { | |||
1048 | {"+=", ASSIGN_MODIFY274, BINOP_ADD}, | |||
1049 | {"-=", ASSIGN_MODIFY274, BINOP_SUB}, | |||
1050 | {"*=", ASSIGN_MODIFY274, BINOP_MUL}, | |||
1051 | {"/=", ASSIGN_MODIFY274, BINOP_DIV}, | |||
1052 | {"%=", ASSIGN_MODIFY274, BINOP_REM}, | |||
1053 | {"|=", ASSIGN_MODIFY274, BINOP_BITWISE_IOR}, | |||
1054 | {"&=", ASSIGN_MODIFY274, BINOP_BITWISE_AND}, | |||
1055 | {"^=", ASSIGN_MODIFY274, BINOP_BITWISE_XOR}, | |||
1056 | {"++", INCREMENT285, BINOP_END}, | |||
1057 | {"--", DECREMENT286, BINOP_END}, | |||
1058 | {"&&", ANDAND278, BINOP_END}, | |||
1059 | {"||", OROR277, BINOP_END}, | |||
1060 | {"<<", LSH283, BINOP_END}, | |||
1061 | {">>", RSH284, BINOP_END}, | |||
1062 | {"==", EQUAL279, BINOP_END}, | |||
1063 | {"!=", NOTEQUAL280, BINOP_END}, | |||
1064 | {"<=", LEQ281, BINOP_END}, | |||
1065 | {">=", GEQ282, BINOP_END} | |||
1066 | }; | |||
1067 | ||||
1068 | /* Read one token, getting characters through lexptr. */ | |||
1069 | ||||
1070 | static int | |||
1071 | yylexjava_lex () | |||
1072 | { | |||
1073 | int c; | |||
1074 | int namelen; | |||
1075 | unsigned int i; | |||
1076 | char *tokstart; | |||
1077 | char *tokptr; | |||
1078 | int tempbufindex; | |||
1079 | static char *tempbuf; | |||
1080 | static int tempbufsize; | |||
1081 | ||||
1082 | retry: | |||
1083 | ||||
1084 | prev_lexptr = lexptr; | |||
1085 | ||||
1086 | tokstart = lexptr; | |||
1087 | /* See if it is a special token of length 3. */ | |||
1088 | for (i = 0; i < sizeof tokentab3 / sizeof tokentab3[0]; i++) | |||
1089 | if (strncmp (tokstart, tokentab3[i].operator, 3) == 0) | |||
1090 | { | |||
1091 | lexptr += 3; | |||
1092 | yylvaljava_lval.opcode = tokentab3[i].opcode; | |||
1093 | return tokentab3[i].token; | |||
1094 | } | |||
1095 | ||||
1096 | /* See if it is a special token of length 2. */ | |||
1097 | for (i = 0; i < sizeof tokentab2 / sizeof tokentab2[0]; i++) | |||
1098 | if (strncmp (tokstart, tokentab2[i].operator, 2) == 0) | |||
1099 | { | |||
1100 | lexptr += 2; | |||
1101 | yylvaljava_lval.opcode = tokentab2[i].opcode; | |||
1102 | return tokentab2[i].token; | |||
1103 | } | |||
1104 | ||||
1105 | switch (c = *tokstart) | |||
1106 | { | |||
1107 | case 0: | |||
1108 | return 0; | |||
1109 | ||||
1110 | case ' ': | |||
1111 | case '\t': | |||
1112 | case '\n': | |||
1113 | lexptr++; | |||
1114 | goto retry; | |||
1115 | ||||
1116 | case '\'': | |||
1117 | /* We either have a character constant ('0' or '\177' for example) | |||
1118 | or we have a quoted symbol reference ('foo(int,int)' in C++ | |||
1119 | for example). */ | |||
1120 | lexptr++; | |||
1121 | c = *lexptr++; | |||
1122 | if (c == '\\') | |||
1123 | c = parse_escape (&lexptr); | |||
1124 | else if (c == '\'') | |||
1125 | error (_("Empty character constant")("Empty character constant")); | |||
1126 | ||||
1127 | yylvaljava_lval.typed_val_int.val = c; | |||
1128 | yylvaljava_lval.typed_val_int.type = java_char_type; | |||
1129 | ||||
1130 | c = *lexptr++; | |||
1131 | if (c != '\'') | |||
1132 | { | |||
1133 | namelen = skip_quoted (tokstart) - tokstart; | |||
1134 | if (namelen > 2) | |||
1135 | { | |||
1136 | lexptr = tokstart + namelen; | |||
1137 | if (lexptr[-1] != '\'') | |||
1138 | error (_("Unmatched single quote")("Unmatched single quote")); | |||
1139 | namelen -= 2; | |||
1140 | tokstart++; | |||
1141 | goto tryname; | |||
1142 | } | |||
1143 | error (_("Invalid character constant")("Invalid character constant")); | |||
1144 | } | |||
1145 | return INTEGER_LITERAL257; | |||
1146 | ||||
1147 | case '(': | |||
1148 | paren_depth++; | |||
1149 | lexptr++; | |||
1150 | return c; | |||
1151 | ||||
1152 | case ')': | |||
1153 | if (paren_depth == 0) | |||
1154 | return 0; | |||
1155 | paren_depth--; | |||
1156 | lexptr++; | |||
1157 | return c; | |||
1158 | ||||
1159 | case ',': | |||
1160 | if (comma_terminates && paren_depth == 0) | |||
1161 | return 0; | |||
1162 | lexptr++; | |||
1163 | return c; | |||
1164 | ||||
1165 | case '.': | |||
1166 | /* Might be a floating point number. */ | |||
1167 | if (lexptr[1] < '0' || lexptr[1] > '9') | |||
1168 | goto symbol; /* Nope, must be a symbol. */ | |||
1169 | /* FALL THRU into number case. */ | |||
1170 | ||||
1171 | case '0': | |||
1172 | case '1': | |||
1173 | case '2': | |||
1174 | case '3': | |||
1175 | case '4': | |||
1176 | case '5': | |||
1177 | case '6': | |||
1178 | case '7': | |||
1179 | case '8': | |||
1180 | case '9': | |||
1181 | { | |||
1182 | /* It's a number. */ | |||
1183 | int got_dot = 0, got_e = 0, toktype; | |||
1184 | char *p = tokstart; | |||
1185 | int hex = input_radix > 10; | |||
1186 | ||||
1187 | if (c == '0' && (p[1] == 'x' || p[1] == 'X')) | |||
1188 | { | |||
1189 | p += 2; | |||
1190 | hex = 1; | |||
1191 | } | |||
1192 | else if (c == '0' && (p[1]=='t' || p[1]=='T' || p[1]=='d' || p[1]=='D')) | |||
1193 | { | |||
1194 | p += 2; | |||
1195 | hex = 0; | |||
1196 | } | |||
1197 | ||||
1198 | for (;; ++p) | |||
1199 | { | |||
1200 | /* This test includes !hex because 'e' is a valid hex digit | |||
1201 | and thus does not indicate a floating point number when | |||
1202 | the radix is hex. */ | |||
1203 | if (!hex && !got_e && (*p == 'e' || *p == 'E')) | |||
1204 | got_dot = got_e = 1; | |||
1205 | /* This test does not include !hex, because a '.' always indicates | |||
1206 | a decimal floating point number regardless of the radix. */ | |||
1207 | else if (!got_dot && *p == '.') | |||
1208 | got_dot = 1; | |||
1209 | else if (got_e && (p[-1] == 'e' || p[-1] == 'E') | |||
1210 | && (*p == '-' || *p == '+')) | |||
1211 | /* This is the sign of the exponent, not the end of the | |||
1212 | number. */ | |||
1213 | continue; | |||
1214 | /* We will take any letters or digits. parse_number will | |||
1215 | complain if past the radix, or if L or U are not final. */ | |||
1216 | else if ((*p < '0' || *p > '9') | |||
1217 | && ((*p < 'a' || *p > 'z') | |||
1218 | && (*p < 'A' || *p > 'Z'))) | |||
1219 | break; | |||
1220 | } | |||
1221 | toktype = parse_number (tokstart, p - tokstart, got_dot|got_e, &yylvaljava_lval); | |||
1222 | if (toktype == ERROR264) | |||
1223 | { | |||
1224 | char *err_copy = (char *) alloca (p - tokstart + 1)__builtin_alloca(p - tokstart + 1); | |||
1225 | ||||
1226 | memcpy (err_copy, tokstart, p - tokstart); | |||
1227 | err_copy[p - tokstart] = 0; | |||
1228 | error (_("Invalid number \"%s\"")("Invalid number \"%s\""), err_copy); | |||
1229 | } | |||
1230 | lexptr = p; | |||
1231 | return toktype; | |||
1232 | } | |||
1233 | ||||
1234 | case '+': | |||
1235 | case '-': | |||
1236 | case '*': | |||
1237 | case '/': | |||
1238 | case '%': | |||
1239 | case '|': | |||
1240 | case '&': | |||
1241 | case '^': | |||
1242 | case '~': | |||
1243 | case '!': | |||
1244 | case '<': | |||
1245 | case '>': | |||
1246 | case '[': | |||
1247 | case ']': | |||
1248 | case '?': | |||
1249 | case ':': | |||
1250 | case '=': | |||
1251 | case '{': | |||
1252 | case '}': | |||
1253 | symbol: | |||
1254 | lexptr++; | |||
1255 | return c; | |||
1256 | ||||
1257 | case '"': | |||
1258 | ||||
1259 | /* Build the gdb internal form of the input string in tempbuf, | |||
1260 | translating any standard C escape forms seen. Note that the | |||
1261 | buffer is null byte terminated *only* for the convenience of | |||
1262 | debugging gdb itself and printing the buffer contents when | |||
1263 | the buffer contains no embedded nulls. Gdb does not depend | |||
1264 | upon the buffer being null byte terminated, it uses the length | |||
1265 | string instead. This allows gdb to handle C strings (as well | |||
1266 | as strings in other languages) with embedded null bytes */ | |||
1267 | ||||
1268 | tokptr = ++tokstart; | |||
1269 | tempbufindex = 0; | |||
1270 | ||||
1271 | do { | |||
1272 | /* Grow the static temp buffer if necessary, including allocating | |||
1273 | the first one on demand. */ | |||
1274 | if (tempbufindex + 1 >= tempbufsize) | |||
1275 | { | |||
1276 | tempbuf = (char *) xrealloc (tempbuf, tempbufsize += 64); | |||
1277 | } | |||
1278 | switch (*tokptr) | |||
1279 | { | |||
1280 | case '\0': | |||
1281 | case '"': | |||
1282 | /* Do nothing, loop will terminate. */ | |||
1283 | break; | |||
1284 | case '\\': | |||
1285 | tokptr++; | |||
1286 | c = parse_escape (&tokptr); | |||
1287 | if (c == -1) | |||
1288 | { | |||
1289 | continue; | |||
1290 | } | |||
1291 | tempbuf[tempbufindex++] = c; | |||
1292 | break; | |||
1293 | default: | |||
1294 | tempbuf[tempbufindex++] = *tokptr++; | |||
1295 | break; | |||
1296 | } | |||
1297 | } while ((*tokptr != '"') && (*tokptr != '\0')); | |||
1298 | if (*tokptr++ != '"') | |||
1299 | { | |||
1300 | error (_("Unterminated string in expression")("Unterminated string in expression")); | |||
1301 | } | |||
1302 | tempbuf[tempbufindex] = '\0'; /* See note above */ | |||
1303 | yylvaljava_lval.sval.ptr = tempbuf; | |||
1304 | yylvaljava_lval.sval.length = tempbufindex; | |||
1305 | lexptr = tokptr; | |||
1306 | return (STRING_LITERAL260); | |||
1307 | } | |||
1308 | ||||
1309 | if (!(c == '_' || c == '$' | |||
1310 | || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z'))) | |||
1311 | /* We must have come across a bad character (e.g. ';'). */ | |||
1312 | error (_("Invalid character '%c' in expression")("Invalid character '%c' in expression"), c); | |||
1313 | ||||
1314 | /* It's a name. See how long it is. */ | |||
1315 | namelen = 0; | |||
1316 | for (c = tokstart[namelen]; | |||
1317 | (c == '_' | |||
1318 | || c == '$' | |||
1319 | || (c >= '0' && c <= '9') | |||
1320 | || (c >= 'a' && c <= 'z') | |||
1321 | || (c >= 'A' && c <= 'Z') | |||
1322 | || c == '<'); | |||
1323 | ) | |||
1324 | { | |||
1325 | if (c == '<') | |||
1326 | { | |||
1327 | int i = namelen; | |||
1328 | while (tokstart[++i] && tokstart[i] != '>'); | |||
1329 | if (tokstart[i] == '>') | |||
1330 | namelen = i; | |||
1331 | } | |||
1332 | c = tokstart[++namelen]; | |||
1333 | } | |||
1334 | ||||
1335 | /* The token "if" terminates the expression and is NOT | |||
1336 | removed from the input stream. */ | |||
1337 | if (namelen == 2 && tokstart[0] == 'i' && tokstart[1] == 'f') | |||
1338 | { | |||
1339 | return 0; | |||
1340 | } | |||
1341 | ||||
1342 | lexptr += namelen; | |||
1343 | ||||
1344 | tryname: | |||
1345 | ||||
1346 | /* Catch specific keywords. Should be done with a data structure. */ | |||
1347 | switch (namelen) | |||
1348 | { | |||
1349 | case 7: | |||
1350 | if (DEPRECATED_STREQN (tokstart, "boolean", 7)(strncmp ((tokstart), ("boolean"), (7)) == 0)) | |||
1351 | return BOOLEAN270; | |||
1352 | break; | |||
1353 | case 6: | |||
1354 | if (DEPRECATED_STREQN (tokstart, "double", 6)(strncmp ((tokstart), ("double"), (6)) == 0)) | |||
1355 | return DOUBLE271; | |||
1356 | break; | |||
1357 | case 5: | |||
1358 | if (DEPRECATED_STREQN (tokstart, "short", 5)(strncmp ((tokstart), ("short"), (5)) == 0)) | |||
1359 | return SHORT266; | |||
1360 | if (DEPRECATED_STREQN (tokstart, "false", 5)(strncmp ((tokstart), ("false"), (5)) == 0)) | |||
1361 | { | |||
1362 | yylvaljava_lval.lval = 0; | |||
1363 | return BOOLEAN_LITERAL261; | |||
1364 | } | |||
1365 | if (DEPRECATED_STREQN (tokstart, "super", 5)(strncmp ((tokstart), ("super"), (5)) == 0)) | |||
1366 | return SUPER275; | |||
1367 | if (DEPRECATED_STREQN (tokstart, "float", 5)(strncmp ((tokstart), ("float"), (5)) == 0)) | |||
1368 | return FLOAT272; | |||
1369 | break; | |||
1370 | case 4: | |||
1371 | if (DEPRECATED_STREQN (tokstart, "long", 4)(strncmp ((tokstart), ("long"), (4)) == 0)) | |||
1372 | return LONG265; | |||
1373 | if (DEPRECATED_STREQN (tokstart, "byte", 4)(strncmp ((tokstart), ("byte"), (4)) == 0)) | |||
1374 | return BYTE267; | |||
1375 | if (DEPRECATED_STREQN (tokstart, "char", 4)(strncmp ((tokstart), ("char"), (4)) == 0)) | |||
1376 | return CHAR269; | |||
1377 | if (DEPRECATED_STREQN (tokstart, "true", 4)(strncmp ((tokstart), ("true"), (4)) == 0)) | |||
1378 | { | |||
1379 | yylvaljava_lval.lval = 1; | |||
1380 | return BOOLEAN_LITERAL261; | |||
1381 | } | |||
1382 | break; | |||
1383 | case 3: | |||
1384 | if (strncmp (tokstart, "int", 3) == 0) | |||
1385 | return INT268; | |||
1386 | if (strncmp (tokstart, "new", 3) == 0) | |||
1387 | return NEW276; | |||
1388 | break; | |||
1389 | default: | |||
1390 | break; | |||
1391 | } | |||
1392 | ||||
1393 | yylvaljava_lval.sval.ptr = tokstart; | |||
1394 | yylvaljava_lval.sval.length = namelen; | |||
1395 | ||||
1396 | if (*tokstart == '$') | |||
1397 | { | |||
1398 | write_dollar_variable (yylvaljava_lval.sval); | |||
1399 | return VARIABLE273; | |||
1400 | } | |||
1401 | ||||
1402 | /* Input names that aren't symbols but ARE valid hex numbers, | |||
1403 | when the input radix permits them, can be names or numbers | |||
1404 | depending on the parse. Note we support radixes > 16 here. */ | |||
1405 | if (((tokstart[0] >= 'a' && tokstart[0] < 'a' + input_radix - 10) || | |||
1406 | (tokstart[0] >= 'A' && tokstart[0] < 'A' + input_radix - 10))) | |||
1407 | { | |||
1408 | YYSTYPE newlval; /* Its value is ignored. */ | |||
1409 | int hextype = parse_number (tokstart, namelen, 0, &newlval); | |||
1410 | if (hextype == INTEGER_LITERAL257) | |||
1411 | return NAME_OR_INT263; | |||
1412 | } | |||
1413 | return IDENTIFIER259; | |||
1414 | } | |||
1415 | ||||
1416 | void | |||
1417 | yyerrorjava_error (msg) | |||
1418 | char *msg; | |||
1419 | { | |||
1420 | if (prev_lexptr) | |||
1421 | lexptr = prev_lexptr; | |||
1422 | ||||
1423 | if (msg) | |||
1424 | error (_("%s: near `%s'")("%s: near `%s'"), msg, lexptr); | |||
1425 | else | |||
1426 | error (_("error in expression, near `%s'")("error in expression, near `%s'"), lexptr); | |||
1427 | } | |||
1428 | ||||
1429 | static struct type * | |||
1430 | java_type_from_name (name) | |||
1431 | struct stoken name; | |||
1432 | ||||
1433 | { | |||
1434 | char *tmp = copy_name (name); | |||
1435 | struct type *typ = java_lookup_class (tmp); | |||
1436 | if (typ == NULL((void*)0) || TYPE_CODE (typ)(typ)->main_type->code != TYPE_CODE_STRUCT) | |||
1437 | error (_("No class named `%s'")("No class named `%s'"), tmp); | |||
1438 | return typ; | |||
1439 | } | |||
1440 | ||||
1441 | /* If NAME is a valid variable name in this scope, push it and return 1. | |||
1442 | Otherwise, return 0. */ | |||
1443 | ||||
1444 | static int | |||
1445 | push_variable (struct stoken name) | |||
1446 | { | |||
1447 | char *tmp = copy_name (name); | |||
1448 | int is_a_field_of_this = 0; | |||
1449 | struct symbol *sym; | |||
1450 | sym = lookup_symbol (tmp, expression_context_block, VAR_DOMAIN, | |||
1451 | &is_a_field_of_this, (struct symtab **) NULL((void*)0)); | |||
1452 | if (sym && SYMBOL_CLASS (sym)(sym)->aclass != LOC_TYPEDEF) | |||
1453 | { | |||
1454 | if (symbol_read_needs_frame (sym)) | |||
1455 | { | |||
1456 | if (innermost_block == 0 || | |||
1457 | contained_in (block_found, innermost_block)) | |||
1458 | innermost_block = block_found; | |||
1459 | } | |||
1460 | ||||
1461 | write_exp_elt_opcode (OP_VAR_VALUE); | |||
1462 | /* We want to use the selected frame, not another more inner frame | |||
1463 | which happens to be in the same block. */ | |||
1464 | write_exp_elt_block (NULL((void*)0)); | |||
1465 | write_exp_elt_sym (sym); | |||
1466 | write_exp_elt_opcode (OP_VAR_VALUE); | |||
1467 | return 1; | |||
1468 | } | |||
1469 | if (is_a_field_of_this) | |||
1470 | { | |||
1471 | /* it hangs off of `this'. Must not inadvertently convert from a | |||
1472 | method call to data ref. */ | |||
1473 | if (innermost_block == 0 || | |||
1474 | contained_in (block_found, innermost_block)) | |||
1475 | innermost_block = block_found; | |||
1476 | write_exp_elt_opcode (OP_THIS); | |||
1477 | write_exp_elt_opcode (OP_THIS); | |||
1478 | write_exp_elt_opcode (STRUCTOP_PTR); | |||
1479 | write_exp_string (name); | |||
1480 | write_exp_elt_opcode (STRUCTOP_PTR); | |||
1481 | return 1; | |||
1482 | } | |||
1483 | return 0; | |||
1484 | } | |||
1485 | ||||
1486 | /* Assuming a reference expression has been pushed, emit the | |||
1487 | STRUCTOP_STRUCT ops to access the field named NAME. If NAME is a | |||
1488 | qualified name (has '.'), generate a field access for each part. */ | |||
1489 | ||||
1490 | static void | |||
1491 | push_fieldnames (name) | |||
1492 | struct stoken name; | |||
1493 | { | |||
1494 | int i; | |||
1495 | struct stoken token; | |||
1496 | token.ptr = name.ptr; | |||
1497 | for (i = 0; ; i++) | |||
1498 | { | |||
1499 | if (i == name.length || name.ptr[i] == '.') | |||
1500 | { | |||
1501 | /* token.ptr is start of current field name. */ | |||
1502 | token.length = &name.ptr[i] - token.ptr; | |||
1503 | write_exp_elt_opcode (STRUCTOP_STRUCT); | |||
1504 | write_exp_string (token); | |||
1505 | write_exp_elt_opcode (STRUCTOP_STRUCT); | |||
1506 | token.ptr += token.length + 1; | |||
1507 | } | |||
1508 | if (i >= name.length) | |||
1509 | break; | |||
1510 | } | |||
1511 | } | |||
1512 | ||||
1513 | /* Helper routine for push_expression_name. | |||
1514 | Handle a qualified name, where DOT_INDEX is the index of the first '.' */ | |||
1515 | ||||
1516 | static void | |||
1517 | push_qualified_expression_name (struct stoken name, int dot_index) | |||
1518 | { | |||
1519 | struct stoken token; | |||
1520 | char *tmp; | |||
1521 | struct type *typ; | |||
1522 | ||||
1523 | token.ptr = name.ptr; | |||
1524 | token.length = dot_index; | |||
1525 | ||||
1526 | if (push_variable (token)) | |||
1527 | { | |||
1528 | token.ptr = name.ptr + dot_index + 1; | |||
1529 | token.length = name.length - dot_index - 1; | |||
1530 | push_fieldnames (token); | |||
1531 | return; | |||
1532 | } | |||
1533 | ||||
1534 | token.ptr = name.ptr; | |||
1535 | for (;;) | |||
1536 | { | |||
1537 | token.length = dot_index; | |||
1538 | tmp = copy_name (token); | |||
1539 | typ = java_lookup_class (tmp); | |||
1540 | if (typ != NULL((void*)0)) | |||
1541 | { | |||
1542 | if (dot_index == name.length) | |||
1543 | { | |||
1544 | write_exp_elt_opcode(OP_TYPE); | |||
1545 | write_exp_elt_type(typ); | |||
1546 | write_exp_elt_opcode(OP_TYPE); | |||
1547 | return; | |||
1548 | } | |||
1549 | dot_index++; /* Skip '.' */ | |||
1550 | name.ptr += dot_index; | |||
1551 | name.length -= dot_index; | |||
1552 | dot_index = 0; | |||
1553 | while (dot_index < name.length && name.ptr[dot_index] != '.') | |||
1554 | dot_index++; | |||
1555 | token.ptr = name.ptr; | |||
1556 | token.length = dot_index; | |||
1557 | write_exp_elt_opcode (OP_SCOPE); | |||
1558 | write_exp_elt_type (typ); | |||
1559 | write_exp_string (token); | |||
1560 | write_exp_elt_opcode (OP_SCOPE); | |||
1561 | if (dot_index < name.length) | |||
1562 | { | |||
1563 | dot_index++; | |||
1564 | name.ptr += dot_index; | |||
1565 | name.length -= dot_index; | |||
1566 | push_fieldnames (name); | |||
1567 | } | |||
1568 | return; | |||
1569 | } | |||
1570 | else if (dot_index >= name.length) | |||
1571 | break; | |||
1572 | dot_index++; /* Skip '.' */ | |||
1573 | while (dot_index < name.length && name.ptr[dot_index] != '.') | |||
1574 | dot_index++; | |||
1575 | } | |||
1576 | error (_("unknown type `%.*s'")("unknown type `%.*s'"), name.length, name.ptr); | |||
1577 | } | |||
1578 | ||||
1579 | /* Handle Name in an expression (or LHS). | |||
1580 | Handle VAR, TYPE, TYPE.FIELD1....FIELDN and VAR.FIELD1....FIELDN. */ | |||
1581 | ||||
1582 | static void | |||
1583 | push_expression_name (name) | |||
1584 | struct stoken name; | |||
1585 | { | |||
1586 | char *tmp; | |||
1587 | struct type *typ; | |||
1588 | char *ptr; | |||
1589 | int i; | |||
1590 | ||||
1591 | for (i = 0; i < name.length; i++) | |||
1592 | { | |||
1593 | if (name.ptr[i] == '.') | |||
1594 | { | |||
1595 | /* It's a Qualified Expression Name. */ | |||
1596 | push_qualified_expression_name (name, i); | |||
1597 | return; | |||
1598 | } | |||
1599 | } | |||
1600 | ||||
1601 | /* It's a Simple Expression Name. */ | |||
1602 | ||||
1603 | if (push_variable (name)) | |||
1604 | return; | |||
1605 | tmp = copy_name (name); | |||
1606 | typ = java_lookup_class (tmp); | |||
1607 | if (typ != NULL((void*)0)) | |||
1608 | { | |||
1609 | write_exp_elt_opcode(OP_TYPE); | |||
1610 | write_exp_elt_type(typ); | |||
1611 | write_exp_elt_opcode(OP_TYPE); | |||
1612 | } | |||
1613 | else | |||
1614 | { | |||
1615 | struct minimal_symbol *msymbol; | |||
1616 | ||||
1617 | msymbol = lookup_minimal_symbol (tmp, NULL((void*)0), NULL((void*)0)); | |||
1618 | if (msymbol != NULL((void*)0)) | |||
1619 | { | |||
1620 | write_exp_msymbol (msymbol, | |||
1621 | lookup_function_type (builtin_type_int), | |||
1622 | builtin_type_int); | |||
1623 | } | |||
1624 | else if (!have_full_symbols () && !have_partial_symbols ()) | |||
1625 | error (_("No symbol table is loaded. Use the \"file\" command")("No symbol table is loaded. Use the \"file\" command")); | |||
1626 | else | |||
1627 | error (_("No symbol \"%s\" in current context")("No symbol \"%s\" in current context"), tmp); | |||
1628 | } | |||
1629 | ||||
1630 | } | |||
1631 | ||||
1632 | ||||
1633 | /* The following two routines, copy_exp and insert_exp, aren't specific to | |||
1634 | Java, so they could go in parse.c, but their only purpose is to support | |||
1635 | the parsing kludges we use in this file, so maybe it's best to isolate | |||
1636 | them here. */ | |||
1637 | ||||
1638 | /* Copy the expression whose last element is at index ENDPOS - 1 in EXPR | |||
1639 | into a freshly xmalloc'ed struct expression. Its language_defn is set | |||
1640 | to null. */ | |||
1641 | static struct expression * | |||
1642 | copy_exp (expr, endpos) | |||
1643 | struct expression *expr; | |||
1644 | int endpos; | |||
1645 | { | |||
1646 | int len = length_of_subexp (expr, endpos); | |||
1647 | struct expression *new | |||
1648 | = (struct expression *) xmalloc (sizeof (*new) + EXP_ELEM_TO_BYTES (len)((len) * sizeof (union exp_element))); | |||
1649 | new->nelts = len; | |||
1650 | memcpy (new->elts, expr->elts + endpos - len, EXP_ELEM_TO_BYTES (len)((len) * sizeof (union exp_element))); | |||
1651 | new->language_defn = 0; | |||
1652 | ||||
1653 | return new; | |||
1654 | } | |||
1655 | ||||
1656 | /* Insert the expression NEW into the current expression (expout) at POS. */ | |||
1657 | static void | |||
1658 | insert_exp (pos, new) | |||
1659 | int pos; | |||
1660 | struct expression *new; | |||
1661 | { | |||
1662 | int newlen = new->nelts; | |||
1663 | ||||
1664 | /* Grow expout if necessary. In this function's only use at present, | |||
1665 | this should never be necessary. */ | |||
1666 | if (expout_ptr + newlen > expout_size) | |||
1667 | { | |||
1668 | expout_size = max (expout_size * 2, expout_ptr + newlen + 10)((expout_size * 2) > (expout_ptr + newlen + 10) ? (expout_size * 2) : (expout_ptr + newlen + 10)); | |||
1669 | expout = (struct expression *) | |||
1670 | xrealloc ((char *) expout, (sizeof (struct expression) | |||
1671 | + EXP_ELEM_TO_BYTES (expout_size)((expout_size) * sizeof (union exp_element)))); | |||
1672 | } | |||
1673 | ||||
1674 | { | |||
1675 | int i; | |||
1676 | ||||
1677 | for (i = expout_ptr - 1; i >= pos; i--) | |||
1678 | expout->elts[i + newlen] = expout->elts[i]; | |||
1679 | } | |||
1680 | ||||
1681 | memcpy (expout->elts + pos, new->elts, EXP_ELEM_TO_BYTES (newlen)((newlen) * sizeof (union exp_element))); | |||
1682 | expout_ptr += newlen; | |||
1683 | } | |||
1684 | /* allocate initial stack or double stack size, up to YYMAXDEPTH */ | |||
1685 | static int yygrowstack(void) | |||
1686 | { | |||
1687 | unsigned int newsize; | |||
1688 | long sslen; | |||
1689 | short *newss; | |||
1690 | YYSTYPE *newvs; | |||
1691 | ||||
1692 | if ((newsize = yystacksize) == 0) | |||
1693 | newsize = YYINITSTACKSIZE200; | |||
1694 | else if (newsize >= YYMAXDEPTH10000) | |||
1695 | return -1; | |||
1696 | else if ((newsize *= 2) > YYMAXDEPTH10000) | |||
1697 | newsize = YYMAXDEPTH10000; | |||
1698 | sslen = yyssp - yyss; | |||
1699 | #ifdef SIZE_MAX | |||
1700 | #define YY_SIZE_MAX0xffffffffU SIZE_MAX | |||
1701 | #else | |||
1702 | #define YY_SIZE_MAX0xffffffffU 0xffffffffU | |||
1703 | #endif | |||
1704 | if (newsize && YY_SIZE_MAX0xffffffffU / newsize < sizeof *newss) | |||
1705 | goto bail; | |||
1706 | newss = (short *)xrealloc(yyss, newsize * sizeof *newss); | |||
1707 | if (newss == NULL((void*)0)) | |||
1708 | goto bail; | |||
1709 | yyss = newss; | |||
1710 | yyssp = newss + sslen; | |||
1711 | if (newsize && YY_SIZE_MAX0xffffffffU / newsize < sizeof *newvs) | |||
1712 | goto bail; | |||
1713 | newvs = (YYSTYPE *)xrealloc(yyvs, newsize * sizeof *newvs); | |||
1714 | if (newvs == NULL((void*)0)) | |||
1715 | goto bail; | |||
1716 | yyvs = newvs; | |||
1717 | yyvsp = newvs + sslen; | |||
1718 | yystacksize = newsize; | |||
1719 | yysslim = yyss + newsize - 1; | |||
1720 | return 0; | |||
1721 | bail: | |||
1722 | if (yyss) | |||
1723 | free(yyss); | |||
1724 | if (yyvs) | |||
1725 | free(yyvs); | |||
1726 | yyss = yyssp = NULL((void*)0); | |||
1727 | yyvs = yyvsp = NULL((void*)0); | |||
1728 | yystacksize = 0; | |||
1729 | return -1; | |||
1730 | } | |||
1731 | ||||
1732 | #define YYABORTgoto yyabort goto yyabort | |||
1733 | #define YYREJECTgoto yyabort goto yyabort | |||
1734 | #define YYACCEPTgoto yyaccept goto yyaccept | |||
1735 | #define YYERRORgoto yyerrlab goto yyerrlab | |||
1736 | int | |||
1737 | yyparsejava_parse(void) | |||
1738 | { | |||
1739 | int yym, yyn, yystatejava_state; | |||
1740 | #if YYDEBUG1 | |||
1741 | const char *yysjava_s; | |||
1742 | ||||
1743 | if ((yysjava_s = getenv("YYDEBUG"))) | |||
| ||||
1744 | { | |||
1745 | yyn = *yysjava_s; | |||
1746 | if (yyn >= '0' && yyn <= '9') | |||
1747 | yydebugjava_debug = yyn - '0'; | |||
1748 | } | |||
1749 | #endif /* YYDEBUG */ | |||
1750 | ||||
1751 | yynerrsjava_nerrs = 0; | |||
1752 | yyerrflagjava_errflag = 0; | |||
1753 | yycharjava_char = (-1); | |||
1754 | ||||
1755 | if (yyss == NULL((void*)0) && yygrowstack()) goto yyoverflow; | |||
1756 | yyssp = yyss; | |||
1757 | yyvsp = yyvs; | |||
1758 | *yyssp = yystatejava_state = 0; | |||
1759 | ||||
1760 | yyloop: | |||
1761 | if ((yyn = yydefredjava_yydefred[yystatejava_state]) != 0) goto yyreduce; | |||
1762 | if (yycharjava_char < 0) | |||
1763 | { | |||
1764 | if ((yycharjava_char = yylexjava_lex()) < 0) yycharjava_char = 0; | |||
1765 | #if YYDEBUG1 | |||
1766 | if (yydebugjava_debug) | |||
1767 | { | |||
1768 | yysjava_s = 0; | |||
1769 | if (yycharjava_char <= YYMAXTOKEN286) yysjava_s = yynamejava_name[yycharjava_char]; | |||
1770 | if (!yysjava_s) yysjava_s = "illegal-symbol"; | |||
1771 | printf("%sdebug: state %d, reading %d (%s)\n", | |||
1772 | YYPREFIX"yy", yystatejava_state, yycharjava_char, yysjava_s); | |||
1773 | } | |||
1774 | #endif | |||
1775 | } | |||
1776 | if ((yyn = yysindexjava_yysindex[yystatejava_state]) && (yyn += yycharjava_char) >= 0 && | |||
1777 | yyn <= YYTABLESIZE2121 && yycheckjava_yycheck[yyn] == yycharjava_char) | |||
1778 | { | |||
1779 | #if YYDEBUG1 | |||
1780 | if (yydebugjava_debug) | |||
1781 | printf("%sdebug: state %d, shifting to state %d\n", | |||
1782 | YYPREFIX"yy", yystatejava_state, yytablejava_yytable[yyn]); | |||
1783 | #endif | |||
1784 | if (yyssp >= yysslim && yygrowstack()) | |||
1785 | { | |||
1786 | goto yyoverflow; | |||
1787 | } | |||
1788 | *++yyssp = yystatejava_state = yytablejava_yytable[yyn]; | |||
1789 | *++yyvsp = yylvaljava_lval; | |||
1790 | yycharjava_char = (-1); | |||
1791 | if (yyerrflagjava_errflag > 0) --yyerrflagjava_errflag; | |||
1792 | goto yyloop; | |||
1793 | } | |||
1794 | if ((yyn = yyrindexjava_yyrindex[yystatejava_state]) && (yyn += yycharjava_char) >= 0 && | |||
1795 | yyn <= YYTABLESIZE2121 && yycheckjava_yycheck[yyn] == yycharjava_char) | |||
1796 | { | |||
1797 | yyn = yytablejava_yytable[yyn]; | |||
1798 | goto yyreduce; | |||
1799 | } | |||
1800 | if (yyerrflagjava_errflag) goto yyinrecovery; | |||
1801 | #if defined(__GNUC__4) | |||
1802 | goto yynewerror; | |||
1803 | #endif | |||
1804 | yynewerror: | |||
1805 | yyerrorjava_error("syntax error"); | |||
1806 | #if defined(__GNUC__4) | |||
1807 | goto yyerrlab; | |||
1808 | #endif | |||
1809 | yyerrlab: | |||
1810 | ++yynerrsjava_nerrs; | |||
1811 | yyinrecovery: | |||
1812 | if (yyerrflagjava_errflag < 3) | |||
1813 | { | |||
1814 | yyerrflagjava_errflag = 3; | |||
1815 | for (;;) | |||
1816 | { | |||
1817 | if ((yyn = yysindexjava_yysindex[*yyssp]) && (yyn += YYERRCODE256) >= 0 && | |||
1818 | yyn <= YYTABLESIZE2121 && yycheckjava_yycheck[yyn] == YYERRCODE256) | |||
1819 | { | |||
1820 | #if YYDEBUG1 | |||
1821 | if (yydebugjava_debug) | |||
1822 | printf("%sdebug: state %d, error recovery shifting\ | |||
1823 | to state %d\n", YYPREFIX"yy", *yyssp, yytablejava_yytable[yyn]); | |||
1824 | #endif | |||
1825 | if (yyssp >= yysslim && yygrowstack()) | |||
1826 | { | |||
1827 | goto yyoverflow; | |||
1828 | } | |||
1829 | *++yyssp = yystatejava_state = yytablejava_yytable[yyn]; | |||
1830 | *++yyvsp = yylvaljava_lval; | |||
1831 | goto yyloop; | |||
1832 | } | |||
1833 | else | |||
1834 | { | |||
1835 | #if YYDEBUG1 | |||
1836 | if (yydebugjava_debug) | |||
1837 | printf("%sdebug: error recovery discarding state %d\n", | |||
1838 | YYPREFIX"yy", *yyssp); | |||
1839 | #endif | |||
1840 | if (yyssp <= yyss) goto yyabort; | |||
1841 | --yyssp; | |||
1842 | --yyvsp; | |||
1843 | } | |||
1844 | } | |||
1845 | } | |||
1846 | else | |||
1847 | { | |||
1848 | if (yycharjava_char == 0) goto yyabort; | |||
1849 | #if YYDEBUG1 | |||
1850 | if (yydebugjava_debug) | |||
1851 | { | |||
1852 | yysjava_s = 0; | |||
1853 | if (yycharjava_char <= YYMAXTOKEN286) yysjava_s = yynamejava_name[yycharjava_char]; | |||
1854 | if (!yysjava_s) yysjava_s = "illegal-symbol"; | |||
1855 | printf("%sdebug: state %d, error recovery discards token %d (%s)\n", | |||
1856 | YYPREFIX"yy", yystatejava_state, yycharjava_char, yysjava_s); | |||
1857 | } | |||
1858 | #endif | |||
1859 | yycharjava_char = (-1); | |||
1860 | goto yyloop; | |||
1861 | } | |||
1862 | yyreduce: | |||
1863 | #if YYDEBUG1 | |||
1864 | if (yydebugjava_debug) | |||
1865 | printf("%sdebug: state %d, reducing by rule %d (%s)\n", | |||
1866 | YYPREFIX"yy", yystatejava_state, yyn, yyrulejava_rule[yyn]); | |||
1867 | #endif | |||
1868 | yym = yylenjava_yylen[yyn]; | |||
1869 | if (yym) | |||
1870 | yyvaljava_val = yyvsp[1-yym]; | |||
1871 | else | |||
1872 | memset(&yyvaljava_val, 0, sizeof yyvaljava_val); | |||
1873 | switch (yyn) | |||
1874 | { | |||
1875 | case 3: | |||
1876 | #line 209 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
1877 | { | |||
1878 | write_exp_elt_opcode(OP_TYPE); | |||
1879 | write_exp_elt_type(yyvsp[0].tval); | |||
1880 | write_exp_elt_opcode(OP_TYPE); | |||
1881 | } | |||
1882 | break; | |||
1883 | case 6: | |||
1884 | #line 223 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
1885 | { | |||
1886 | write_exp_elt_opcode (OP_STRING); | |||
1887 | write_exp_string (yyvsp[0].sval); | |||
1888 | write_exp_elt_opcode (OP_STRING); | |||
1889 | } | |||
1890 | break; | |||
1891 | case 7: | |||
1892 | #line 232 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
1893 | { write_exp_elt_opcode (OP_LONG); | |||
1894 | write_exp_elt_type (yyvsp[0].typed_val_int.type); | |||
1895 | write_exp_elt_longcst ((LONGESTlong)(yyvsp[0].typed_val_int.val)); | |||
1896 | write_exp_elt_opcode (OP_LONG); } | |||
1897 | break; | |||
1898 | case 8: | |||
1899 | #line 237 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
1900 | { YYSTYPE val; | |||
1901 | parse_number (yyvsp[0].sval.ptr, yyvsp[0].sval.length, 0, &val); | |||
1902 | write_exp_elt_opcode (OP_LONG); | |||
1903 | write_exp_elt_type (val.typed_val_int.type); | |||
1904 | write_exp_elt_longcst ((LONGESTlong)val.typed_val_int.val); | |||
1905 | write_exp_elt_opcode (OP_LONG); | |||
1906 | } | |||
1907 | break; | |||
1908 | case 9: | |||
1909 | #line 245 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
1910 | { write_exp_elt_opcode (OP_DOUBLE); | |||
1911 | write_exp_elt_type (yyvsp[0].typed_val_float.type); | |||
1912 | write_exp_elt_dblcst (yyvsp[0].typed_val_float.dval); | |||
1913 | write_exp_elt_opcode (OP_DOUBLE); } | |||
1914 | break; | |||
1915 | case 10: | |||
1916 | #line 250 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
1917 | { write_exp_elt_opcode (OP_LONG); | |||
1918 | write_exp_elt_type (java_boolean_type); | |||
1919 | write_exp_elt_longcst ((LONGESTlong)yyvsp[0].lval); | |||
1920 | write_exp_elt_opcode (OP_LONG); } | |||
1921 | break; | |||
1922 | case 13: | |||
1923 | #line 267 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
1924 | { yyvaljava_val.tval = java_boolean_type; } | |||
1925 | break; | |||
1926 | case 16: | |||
1927 | #line 277 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
1928 | { yyvaljava_val.tval = java_byte_type; } | |||
1929 | break; | |||
1930 | case 17: | |||
1931 | #line 279 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
1932 | { yyvaljava_val.tval = java_short_type; } | |||
1933 | break; | |||
1934 | case 18: | |||
1935 | #line 281 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
1936 | { yyvaljava_val.tval = java_int_type; } | |||
1937 | break; | |||
1938 | case 19: | |||
1939 | #line 283 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
1940 | { yyvaljava_val.tval = java_long_type; } | |||
1941 | break; | |||
1942 | case 20: | |||
1943 | #line 285 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
1944 | { yyvaljava_val.tval = java_char_type; } | |||
1945 | break; | |||
1946 | case 21: | |||
1947 | #line 290 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
1948 | { yyvaljava_val.tval = java_float_type; } | |||
1949 | break; | |||
1950 | case 22: | |||
1951 | #line 292 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
1952 | { yyvaljava_val.tval = java_double_type; } | |||
1953 | break; | |||
1954 | case 23: | |||
1955 | #line 304 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
1956 | { yyvaljava_val.tval = java_type_from_name (yyvsp[0].sval); } | |||
1957 | break; | |||
1958 | case 25: | |||
1959 | #line 313 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
1960 | { yyvaljava_val.tval = java_array_type (yyvsp[-1].tval, yyvsp[0].lval); } | |||
1961 | break; | |||
1962 | case 26: | |||
1963 | #line 315 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
1964 | { yyvaljava_val.tval = java_array_type (java_type_from_name (yyvsp[-1].sval), yyvsp[0].lval); } | |||
1965 | break; | |||
1966 | case 33: | |||
1967 | #line 335 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
1968 | { yyvaljava_val.sval.length = yyvsp[-2].sval.length + yyvsp[0].sval.length + 1; | |||
1969 | if (yyvsp[-2].sval.ptr + yyvsp[-2].sval.length + 1 == yyvsp[0].sval.ptr | |||
1970 | && yyvsp[-2].sval.ptr[yyvsp[-2].sval.length] == '.') | |||
| ||||
1971 | yyvaljava_val.sval.ptr = yyvsp[-2].sval.ptr; /* Optimization. */ | |||
1972 | else | |||
1973 | { | |||
1974 | yyvaljava_val.sval.ptr = (char *) xmalloc (yyvaljava_val.sval.length + 1); | |||
1975 | make_cleanup (free, yyvaljava_val.sval.ptr); | |||
1976 | sprintf (yyvaljava_val.sval.ptr, "%.*s.%.*s", | |||
1977 | yyvsp[-2].sval.length, yyvsp[-2].sval.ptr, yyvsp[0].sval.length, yyvsp[0].sval.ptr); | |||
1978 | } } | |||
1979 | break; | |||
1980 | case 35: | |||
1981 | #line 359 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
1982 | { write_exp_elt_opcode (BINOP_COMMA); } | |||
1983 | break; | |||
1984 | case 44: | |||
1985 | #line 375 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
1986 | { write_exp_elt_opcode (OP_ARRAY); | |||
1987 | write_exp_elt_longcst ((LONGESTlong) 0); | |||
1988 | write_exp_elt_longcst ((LONGESTlong) yyvsp[0].lval); | |||
1989 | write_exp_elt_opcode (OP_ARRAY); } | |||
1990 | break; | |||
1991 | case 45: | |||
1992 | #line 383 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
1993 | { start_arglist (); } | |||
1994 | break; | |||
1995 | case 46: | |||
1996 | #line 388 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
1997 | { yyvaljava_val.lval = end_arglist () - 1; } | |||
1998 | break; | |||
1999 | case 47: | |||
2000 | #line 393 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2001 | { internal_error (__FILE__"/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y", __LINE__393, | |||
2002 | _("FIXME - ClassInstanceCreationExpression")("FIXME - ClassInstanceCreationExpression")); } | |||
2003 | break; | |||
2004 | case 48: | |||
2005 | #line 399 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2006 | { arglist_len = 1; } | |||
2007 | break; | |||
2008 | case 49: | |||
2009 | #line 401 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2010 | { arglist_len++; } | |||
2011 | break; | |||
2012 | case 50: | |||
2013 | #line 406 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2014 | { arglist_len = 0; } | |||
2015 | break; | |||
2016 | case 52: | |||
2017 | #line 412 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2018 | { internal_error (__FILE__"/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y", __LINE__412, | |||
2019 | _("FIXME - ArrayCreationExpression")("FIXME - ArrayCreationExpression")); } | |||
2020 | break; | |||
2021 | case 53: | |||
2022 | #line 415 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2023 | { internal_error (__FILE__"/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y", __LINE__415, | |||
2024 | _("FIXME - ArrayCreationExpression")("FIXME - ArrayCreationExpression")); } | |||
2025 | break; | |||
2026 | case 57: | |||
2027 | #line 430 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2028 | { yyvaljava_val.lval = 1; } | |||
2029 | break; | |||
2030 | case 58: | |||
2031 | #line 432 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2032 | { yyvaljava_val.lval = yyvsp[-2].lval + 1; } | |||
2033 | break; | |||
2034 | case 60: | |||
2035 | #line 438 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2036 | { yyvaljava_val.lval = 0; } | |||
2037 | break; | |||
2038 | case 61: | |||
2039 | #line 443 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2040 | { push_fieldnames (yyvsp[0].sval); } | |||
2041 | break; | |||
2042 | case 62: | |||
2043 | #line 445 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2044 | { push_fieldnames (yyvsp[0].sval); } | |||
2045 | break; | |||
2046 | case 63: | |||
2047 | #line 451 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2048 | { push_expression_name (yyvsp[-1].sval); } | |||
2049 | break; | |||
2050 | case 64: | |||
2051 | #line 456 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2052 | { start_arglist(); } | |||
2053 | break; | |||
2054 | case 65: | |||
2055 | #line 458 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2056 | { write_exp_elt_opcode (OP_FUNCALL); | |||
2057 | write_exp_elt_longcst ((LONGESTlong) end_arglist ()); | |||
2058 | write_exp_elt_opcode (OP_FUNCALL); } | |||
2059 | break; | |||
2060 | case 66: | |||
2061 | #line 462 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2062 | { error (_("Form of method invocation not implemented")("Form of method invocation not implemented")); } | |||
2063 | break; | |||
2064 | case 67: | |||
2065 | #line 464 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2066 | { error (_("Form of method invocation not implemented")("Form of method invocation not implemented")); } | |||
2067 | break; | |||
2068 | case 68: | |||
2069 | #line 469 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2070 | { | |||
2071 | /* Emit code for the Name now, then exchange it in the | |||
2072 | expout array with the Expression's code. We could | |||
2073 | introduce a OP_SWAP code or a reversed version of | |||
2074 | BINOP_SUBSCRIPT, but that makes the rest of GDB pay | |||
2075 | for our parsing kludges. */ | |||
2076 | struct expression *name_expr; | |||
2077 | ||||
2078 | push_expression_name (yyvsp[-3].sval); | |||
2079 | name_expr = copy_exp (expout, expout_ptr); | |||
2080 | expout_ptr -= name_expr->nelts; | |||
2081 | insert_exp (expout_ptr-length_of_subexp (expout, expout_ptr), | |||
2082 | name_expr); | |||
2083 | free (name_expr); | |||
2084 | write_exp_elt_opcode (BINOP_SUBSCRIPT); | |||
2085 | } | |||
2086 | break; | |||
2087 | case 69: | |||
2088 | #line 486 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2089 | { write_exp_elt_opcode (BINOP_SUBSCRIPT); } | |||
2090 | break; | |||
2091 | case 70: | |||
2092 | #line 488 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2093 | { write_exp_elt_opcode (BINOP_SUBSCRIPT); } | |||
2094 | break; | |||
2095 | case 72: | |||
2096 | #line 494 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2097 | { push_expression_name (yyvsp[0].sval); } | |||
2098 | break; | |||
2099 | case 76: | |||
2100 | #line 503 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2101 | { write_exp_elt_opcode (UNOP_POSTINCREMENT); } | |||
2102 | break; | |||
2103 | case 77: | |||
2104 | #line 508 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2105 | { write_exp_elt_opcode (UNOP_POSTDECREMENT); } | |||
2106 | break; | |||
2107 | case 81: | |||
2108 | #line 516 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2109 | { write_exp_elt_opcode (UNOP_NEG); } | |||
2110 | break; | |||
2111 | case 82: | |||
2112 | #line 518 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2113 | { write_exp_elt_opcode (UNOP_IND); } | |||
2114 | break; | |||
2115 | case 84: | |||
2116 | #line 524 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2117 | { write_exp_elt_opcode (UNOP_PREINCREMENT); } | |||
2118 | break; | |||
2119 | case 85: | |||
2120 | #line 529 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2121 | { write_exp_elt_opcode (UNOP_PREDECREMENT); } | |||
2122 | break; | |||
2123 | case 87: | |||
2124 | #line 535 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2125 | { write_exp_elt_opcode (UNOP_COMPLEMENT); } | |||
2126 | break; | |||
2127 | case 88: | |||
2128 | #line 537 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2129 | { write_exp_elt_opcode (UNOP_LOGICAL_NOT); } | |||
2130 | break; | |||
2131 | case 90: | |||
2132 | #line 543 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2133 | { write_exp_elt_opcode (UNOP_CAST); | |||
2134 | write_exp_elt_type (java_array_type (yyvsp[-3].tval, yyvsp[-2].lval)); | |||
2135 | write_exp_elt_opcode (UNOP_CAST); } | |||
2136 | break; | |||
2137 | case 91: | |||
2138 | #line 547 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2139 | { | |||
2140 | int exp_size = expout_ptr; | |||
2141 | int last_exp_size = length_of_subexp(expout, expout_ptr); | |||
2142 | struct type *type; | |||
2143 | int i; | |||
2144 | int base = expout_ptr - last_exp_size - 3; | |||
2145 | if (base < 0 || expout->elts[base+2].opcode != OP_TYPE) | |||
2146 | error (_("Invalid cast expression")("Invalid cast expression")); | |||
2147 | type = expout->elts[base+1].type; | |||
2148 | /* Remove the 'Expression' and slide the | |||
2149 | UnaryExpressionNotPlusMinus down to replace it. */ | |||
2150 | for (i = 0; i < last_exp_size; i++) | |||
2151 | expout->elts[base + i] = expout->elts[base + i + 3]; | |||
2152 | expout_ptr -= 3; | |||
2153 | if (TYPE_CODE (type)(type)->main_type->code == TYPE_CODE_STRUCT) | |||
2154 | type = lookup_pointer_type (type); | |||
2155 | write_exp_elt_opcode (UNOP_CAST); | |||
2156 | write_exp_elt_type (type); | |||
2157 | write_exp_elt_opcode (UNOP_CAST); | |||
2158 | } | |||
2159 | break; | |||
2160 | case 92: | |||
2161 | #line 568 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2162 | { write_exp_elt_opcode (UNOP_CAST); | |||
2163 | write_exp_elt_type (java_array_type (java_type_from_name (yyvsp[-3].sval), yyvsp[-2].lval)); | |||
2164 | write_exp_elt_opcode (UNOP_CAST); } | |||
2165 | break; | |||
2166 | case 94: | |||
2167 | #line 577 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2168 | { write_exp_elt_opcode (BINOP_MUL); } | |||
2169 | break; | |||
2170 | case 95: | |||
2171 | #line 579 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2172 | { write_exp_elt_opcode (BINOP_DIV); } | |||
2173 | break; | |||
2174 | case 96: | |||
2175 | #line 581 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2176 | { write_exp_elt_opcode (BINOP_REM); } | |||
2177 | break; | |||
2178 | case 98: | |||
2179 | #line 587 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2180 | { write_exp_elt_opcode (BINOP_ADD); } | |||
2181 | break; | |||
2182 | case 99: | |||
2183 | #line 589 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2184 | { write_exp_elt_opcode (BINOP_SUB); } | |||
2185 | break; | |||
2186 | case 101: | |||
2187 | #line 595 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2188 | { write_exp_elt_opcode (BINOP_LSH); } | |||
2189 | break; | |||
2190 | case 102: | |||
2191 | #line 597 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2192 | { write_exp_elt_opcode (BINOP_RSH); } | |||
2193 | break; | |||
2194 | case 104: | |||
2195 | #line 604 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2196 | { write_exp_elt_opcode (BINOP_LESS); } | |||
2197 | break; | |||
2198 | case 105: | |||
2199 | #line 606 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2200 | { write_exp_elt_opcode (BINOP_GTR); } | |||
2201 | break; | |||
2202 | case 106: | |||
2203 | #line 608 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2204 | { write_exp_elt_opcode (BINOP_LEQ); } | |||
2205 | break; | |||
2206 | case 107: | |||
2207 | #line 610 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2208 | { write_exp_elt_opcode (BINOP_GEQ); } | |||
2209 | break; | |||
2210 | case 109: | |||
2211 | #line 617 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2212 | { write_exp_elt_opcode (BINOP_EQUAL); } | |||
2213 | break; | |||
2214 | case 110: | |||
2215 | #line 619 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2216 | { write_exp_elt_opcode (BINOP_NOTEQUAL); } | |||
2217 | break; | |||
2218 | case 112: | |||
2219 | #line 625 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2220 | { write_exp_elt_opcode (BINOP_BITWISE_AND); } | |||
2221 | break; | |||
2222 | case 114: | |||
2223 | #line 631 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2224 | { write_exp_elt_opcode (BINOP_BITWISE_XOR); } | |||
2225 | break; | |||
2226 | case 116: | |||
2227 | #line 636 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2228 | { write_exp_elt_opcode (BINOP_BITWISE_IOR); } | |||
2229 | break; | |||
2230 | case 118: | |||
2231 | #line 642 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2232 | { write_exp_elt_opcode (BINOP_LOGICAL_AND); } | |||
2233 | break; | |||
2234 | case 120: | |||
2235 | #line 648 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2236 | { write_exp_elt_opcode (BINOP_LOGICAL_OR); } | |||
2237 | break; | |||
2238 | case 122: | |||
2239 | #line 654 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2240 | { write_exp_elt_opcode (TERNOP_COND); } | |||
2241 | break; | |||
2242 | case 125: | |||
2243 | #line 664 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2244 | { write_exp_elt_opcode (BINOP_ASSIGN); } | |||
2245 | break; | |||
2246 | case 126: | |||
2247 | #line 666 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2248 | { write_exp_elt_opcode (BINOP_ASSIGN_MODIFY); | |||
2249 | write_exp_elt_opcode (yyvsp[-1].opcode); | |||
2250 | write_exp_elt_opcode (BINOP_ASSIGN_MODIFY); } | |||
2251 | break; | |||
2252 | case 127: | |||
2253 | #line 673 "/usr/src/gnu/usr.bin/binutils/gdb/jv-exp.y" | |||
2254 | { push_expression_name (yyvsp[0].sval); } | |||
2255 | break; | |||
2256 | } | |||
2257 | yyssp -= yym; | |||
2258 | yystatejava_state = *yyssp; | |||
2259 | yyvsp -= yym; | |||
2260 | yym = yylhsjava_yylhs[yyn]; | |||
2261 | if (yystatejava_state == 0 && yym == 0) | |||
2262 | { | |||
2263 | #if YYDEBUG1 | |||
2264 | if (yydebugjava_debug) | |||
2265 | printf("%sdebug: after reduction, shifting from state 0 to\ | |||
2266 | state %d\n", YYPREFIX"yy", YYFINAL27); | |||
2267 | #endif | |||
2268 | yystatejava_state = YYFINAL27; | |||
2269 | *++yyssp = YYFINAL27; | |||
2270 | *++yyvsp = yyvaljava_val; | |||
2271 | if (yycharjava_char < 0) | |||
2272 | { | |||
2273 | if ((yycharjava_char = yylexjava_lex()) < 0) yycharjava_char = 0; | |||
2274 | #if YYDEBUG1 | |||
2275 | if (yydebugjava_debug) | |||
2276 | { | |||
2277 | yysjava_s = 0; | |||
2278 | if (yycharjava_char <= YYMAXTOKEN286) yysjava_s = yynamejava_name[yycharjava_char]; | |||
2279 | if (!yysjava_s) yysjava_s = "illegal-symbol"; | |||
2280 | printf("%sdebug: state %d, reading %d (%s)\n", | |||
2281 | YYPREFIX"yy", YYFINAL27, yycharjava_char, yysjava_s); | |||
2282 | } | |||
2283 | #endif | |||
2284 | } | |||
2285 | if (yycharjava_char == 0) goto yyaccept; | |||
2286 | goto yyloop; | |||
2287 | } | |||
2288 | if ((yyn = yygindexjava_yygindex[yym]) && (yyn += yystatejava_state) >= 0 && | |||
2289 | yyn <= YYTABLESIZE2121 && yycheckjava_yycheck[yyn] == yystatejava_state) | |||
2290 | yystatejava_state = yytablejava_yytable[yyn]; | |||
2291 | else | |||
2292 | yystatejava_state = yydgotojava_yydgoto[yym]; | |||
2293 | #if YYDEBUG1 | |||
2294 | if (yydebugjava_debug) | |||
2295 | printf("%sdebug: after reduction, shifting from state %d \ | |||
2296 | to state %d\n", YYPREFIX"yy", *yyssp, yystatejava_state); | |||
2297 | #endif | |||
2298 | if (yyssp >= yysslim && yygrowstack()) | |||
2299 | { | |||
2300 | goto yyoverflow; | |||
2301 | } | |||
2302 | *++yyssp = yystatejava_state; | |||
2303 | *++yyvsp = yyvaljava_val; | |||
2304 | goto yyloop; | |||
2305 | yyoverflow: | |||
2306 | yyerrorjava_error("yacc stack overflow"); | |||
2307 | yyabort: | |||
2308 | if (yyss) | |||
2309 | free(yyss); | |||
2310 | if (yyvs) | |||
2311 | free(yyvs); | |||
2312 | yyss = yyssp = NULL((void*)0); | |||
2313 | yyvs = yyvsp = NULL((void*)0); | |||
2314 | yystacksize = 0; | |||
2315 | return (1); | |||
2316 | yyaccept: | |||
2317 | if (yyss) | |||
2318 | free(yyss); | |||
2319 | if (yyvs) | |||
2320 | free(yyvs); | |||
2321 | yyss = yyssp = NULL((void*)0); | |||
2322 | yyvs = yyvsp = NULL((void*)0); | |||
2323 | yystacksize = 0; | |||
2324 | return (0); | |||
2325 | } |