Import final gcc2 snapshot (990109)
[official-gcc.git] / gcc / c-parse.c
blob74530d35d2f11e07074195dd15215407bd8572fb
2 /* A Bison parser, made from c-parse.y
3 by Bison version A2.5 (Andrew Consortium)
4 */
6 #define YYBISON 1 /* Identify Bison output. */
8 #define IDENTIFIER 258
9 #define TYPENAME 259
10 #define SCSPEC 260
11 #define TYPESPEC 261
12 #define TYPE_QUAL 262
13 #define CONSTANT 263
14 #define STRING 264
15 #define ELLIPSIS 265
16 #define SIZEOF 266
17 #define ENUM 267
18 #define STRUCT 268
19 #define UNION 269
20 #define IF 270
21 #define ELSE 271
22 #define WHILE 272
23 #define DO 273
24 #define FOR 274
25 #define SWITCH 275
26 #define CASE 276
27 #define DEFAULT 277
28 #define BREAK 278
29 #define CONTINUE 279
30 #define RETURN 280
31 #define GOTO 281
32 #define ASM_KEYWORD 282
33 #define TYPEOF 283
34 #define ALIGNOF 284
35 #define ATTRIBUTE 285
36 #define EXTENSION 286
37 #define LABEL 287
38 #define REALPART 288
39 #define IMAGPART 289
40 #define ASSIGN 290
41 #define OROR 291
42 #define ANDAND 292
43 #define EQCOMPARE 293
44 #define ARITHCOMPARE 294
45 #define LSHIFT 295
46 #define RSHIFT 296
47 #define UNARY 297
48 #define PLUSPLUS 298
49 #define MINUSMINUS 299
50 #define HYPERUNARY 300
51 #define POINTSAT 301
52 #define INTERFACE 302
53 #define IMPLEMENTATION 303
54 #define END 304
55 #define SELECTOR 305
56 #define DEFS 306
57 #define ENCODE 307
58 #define CLASSNAME 308
59 #define PUBLIC 309
60 #define PRIVATE 310
61 #define PROTECTED 311
62 #define PROTOCOL 312
63 #define OBJECTNAME 313
64 #define CLASS 314
65 #define ALIAS 315
66 #define OBJC_STRING 316
68 #line 56 "c-parse.y"
70 #include "config.h"
71 #include "system.h"
72 #include <setjmp.h>
73 #include "tree.h"
74 #include "input.h"
75 #include "c-lex.h"
76 #include "c-tree.h"
77 #include "flags.h"
79 #ifdef MULTIBYTE_CHARS
80 #include <stdlib.h>
81 #include <locale.h>
82 #endif
85 /* Since parsers are distinct for each language, put the language string
86 definition here. */
87 char *language_string = "GNU C";
89 #ifndef errno
90 extern int errno;
91 #endif
93 void yyerror ();
95 /* Like YYERROR but do call yyerror. */
96 #define YYERROR1 { yyerror ("syntax error"); YYERROR; }
98 /* Cause the `yydebug' variable to be defined. */
99 #define YYDEBUG 1
101 #line 91 "c-parse.y"
102 typedef union {long itype; tree ttype; enum tree_code code;
103 char *filename; int lineno; int ends_in_label; } YYSTYPE;
104 #line 207 "c-parse.y"
106 /* Number of statements (loosely speaking) and compound statements
107 seen so far. */
108 static int stmt_count;
109 static int compstmt_count;
111 /* Input file and line number of the end of the body of last simple_if;
112 used by the stmt-rule immediately after simple_if returns. */
113 static char *if_stmt_file;
114 static int if_stmt_line;
116 /* List of types and structure classes of the current declaration. */
117 static tree current_declspecs = NULL_TREE;
118 static tree prefix_attributes = NULL_TREE;
120 /* Stack of saved values of current_declspecs and prefix_attributes. */
121 static tree declspec_stack;
123 /* 1 if we explained undeclared var errors. */
124 static int undeclared_variable_notice;
127 /* Tell yyparse how to print a token's value, if yydebug is set. */
129 #define YYPRINT(FILE,YYCHAR,YYLVAL) yyprint(FILE,YYCHAR,YYLVAL)
130 extern void yyprint ();
131 #include <stdio.h>
133 #ifndef __cplusplus
134 #ifndef __STDC__
135 #define const
136 #endif
137 #endif
141 #define YYFINAL 682
142 #define YYFLAG -32768
143 #define YYNTBASE 84
145 #define YYTRANSLATE(x) ((unsigned)(x) <= 316 ? yytranslate[x] : 239)
147 static const char yytranslate[] = { 0,
148 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
149 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
150 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
151 2, 2, 80, 2, 2, 2, 52, 43, 2, 59,
152 76, 50, 48, 81, 49, 58, 51, 2, 2, 2,
153 2, 2, 2, 2, 2, 2, 2, 38, 77, 2,
154 36, 2, 37, 2, 2, 2, 2, 2, 2, 2,
155 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
156 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
157 60, 2, 83, 42, 2, 2, 2, 2, 2, 2,
158 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
159 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
160 2, 2, 82, 41, 78, 79, 2, 2, 2, 2,
161 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
162 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
163 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
164 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
165 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
166 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
167 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
168 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
169 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
170 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
171 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
172 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
173 2, 2, 2, 2, 2, 1, 2, 3, 4, 5,
174 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
175 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
176 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
177 39, 40, 44, 45, 46, 47, 53, 54, 55, 56,
178 57, 61, 62, 63, 64, 65, 66, 67, 68, 69,
179 70, 71, 72, 73, 74, 75
182 #if YYDEBUG != 0
183 static const short yyprhs[] = { 0,
184 0, 1, 3, 4, 7, 8, 12, 14, 16, 22,
185 25, 29, 34, 39, 42, 45, 48, 51, 53, 54,
186 55, 63, 68, 69, 70, 78, 83, 84, 85, 92,
187 96, 98, 100, 102, 104, 106, 108, 110, 112, 114,
188 116, 117, 119, 121, 125, 127, 130, 133, 136, 139,
189 142, 147, 150, 155, 158, 161, 163, 165, 167, 172,
190 173, 181, 183, 187, 191, 195, 199, 203, 207, 211,
191 215, 219, 223, 227, 231, 232, 237, 238, 243, 244,
192 245, 253, 254, 260, 264, 268, 270, 272, 274, 278,
193 282, 283, 288, 293, 298, 302, 306, 309, 312, 314,
194 317, 318, 320, 323, 327, 329, 331, 334, 337, 342,
195 347, 350, 353, 357, 359, 361, 364, 367, 368, 369,
196 374, 379, 383, 387, 390, 393, 396, 399, 403, 404,
197 407, 410, 413, 416, 420, 421, 424, 427, 429, 431,
198 434, 437, 439, 441, 444, 447, 450, 454, 455, 458,
199 460, 462, 464, 469, 474, 476, 478, 480, 482, 486,
200 488, 492, 493, 498, 499, 506, 510, 511, 518, 522,
201 523, 525, 527, 530, 537, 539, 543, 544, 546, 551,
202 558, 563, 565, 567, 569, 571, 573, 574, 579, 581,
203 582, 585, 587, 591, 593, 594, 599, 601, 602, 611,
204 612, 619, 620, 626, 627, 632, 633, 639, 640, 641,
205 647, 648, 649, 655, 657, 659, 663, 667, 672, 676,
206 680, 684, 686, 690, 695, 699, 703, 707, 709, 713,
207 717, 721, 726, 730, 734, 736, 737, 745, 751, 754,
208 755, 763, 769, 772, 773, 782, 783, 791, 794, 795,
209 797, 798, 800, 802, 805, 806, 810, 813, 817, 819,
210 823, 825, 827, 830, 832, 836, 841, 848, 854, 856,
211 860, 862, 864, 868, 871, 874, 875, 877, 879, 882,
212 883, 886, 890, 894, 897, 901, 906, 910, 913, 917,
213 920, 922, 924, 927, 930, 931, 933, 936, 937, 938,
214 940, 942, 945, 949, 951, 954, 956, 959, 966, 972,
215 978, 981, 984, 989, 990, 995, 996, 997, 1001, 1006,
216 1010, 1012, 1014, 1016, 1018, 1021, 1022, 1027, 1029, 1033,
217 1034, 1035, 1043, 1049, 1052, 1053, 1054, 1055, 1068, 1069,
218 1076, 1079, 1082, 1085, 1089, 1096, 1105, 1116, 1129, 1133,
219 1138, 1140, 1142, 1143, 1150, 1154, 1160, 1163, 1166, 1167,
220 1169, 1170, 1172, 1173, 1175, 1177, 1181, 1186, 1188, 1192,
221 1193, 1196, 1199, 1200, 1205, 1208, 1209, 1211, 1213, 1217,
222 1219, 1223, 1228, 1233, 1238, 1243, 1248, 1249, 1252, 1254,
223 1257, 1259, 1263, 1265, 1269
226 static const short yyrhs[] = { -1,
227 85, 0, 0, 86, 88, 0, 0, 85, 87, 88,
228 0, 90, 0, 89, 0, 27, 59, 99, 76, 77,
229 0, 238, 88, 0, 122, 136, 77, 0, 129, 122,
230 136, 77, 0, 125, 122, 135, 77, 0, 129, 77,
231 0, 125, 77, 0, 1, 77, 0, 1, 78, 0,
232 77, 0, 0, 0, 125, 122, 165, 91, 116, 92,
233 196, 0, 125, 122, 165, 1, 0, 0, 0, 129,
234 122, 168, 93, 116, 94, 196, 0, 129, 122, 168,
235 1, 0, 0, 0, 122, 168, 95, 116, 96, 196,
236 0, 122, 168, 1, 0, 3, 0, 4, 0, 43,
237 0, 49, 0, 48, 0, 54, 0, 55, 0, 79,
238 0, 80, 0, 101, 0, 0, 101, 0, 107, 0,
239 101, 81, 107, 0, 113, 0, 50, 105, 0, 238,
240 105, 0, 98, 105, 0, 40, 97, 0, 103, 102,
241 0, 103, 59, 183, 76, 0, 104, 102, 0, 104,
242 59, 183, 76, 0, 33, 105, 0, 34, 105, 0,
243 11, 0, 29, 0, 102, 0, 59, 183, 76, 105,
244 0, 0, 59, 183, 76, 82, 106, 150, 78, 0,
245 105, 0, 107, 48, 107, 0, 107, 49, 107, 0,
246 107, 50, 107, 0, 107, 51, 107, 0, 107, 52,
247 107, 0, 107, 46, 107, 0, 107, 47, 107, 0,
248 107, 45, 107, 0, 107, 44, 107, 0, 107, 43,
249 107, 0, 107, 41, 107, 0, 107, 42, 107, 0,
250 0, 107, 40, 108, 107, 0, 0, 107, 39, 109,
251 107, 0, 0, 0, 107, 37, 110, 99, 38, 111,
252 107, 0, 0, 107, 37, 112, 38, 107, 0, 107,
253 36, 107, 0, 107, 35, 107, 0, 3, 0, 8,
254 0, 115, 0, 59, 99, 76, 0, 59, 1, 76,
255 0, 0, 59, 114, 198, 76, 0, 113, 59, 100,
256 76, 0, 113, 60, 99, 83, 0, 113, 58, 97,
257 0, 113, 57, 97, 0, 113, 54, 0, 113, 55,
258 0, 9, 0, 115, 9, 0, 0, 118, 0, 118,
259 10, 0, 203, 204, 119, 0, 117, 0, 191, 0,
260 118, 117, 0, 117, 191, 0, 127, 122, 135, 77,
261 0, 130, 122, 136, 77, 0, 127, 77, 0, 130,
262 77, 0, 203, 204, 124, 0, 120, 0, 191, 0,
263 121, 120, 0, 120, 191, 0, 0, 0, 125, 122,
264 135, 77, 0, 129, 122, 136, 77, 0, 125, 122,
265 159, 0, 129, 122, 162, 0, 125, 77, 0, 129,
266 77, 0, 238, 124, 0, 133, 126, 0, 129, 133,
267 126, 0, 0, 126, 134, 0, 126, 5, 0, 126,
268 143, 0, 133, 128, 0, 130, 133, 128, 0, 0,
269 128, 134, 0, 128, 5, 0, 130, 0, 143, 0,
270 129, 130, 0, 129, 143, 0, 7, 0, 5, 0,
271 130, 7, 0, 130, 5, 0, 133, 132, 0, 185,
272 133, 132, 0, 0, 132, 134, 0, 6, 0, 169,
273 0, 4, 0, 28, 59, 99, 76, 0, 28, 59,
274 183, 76, 0, 6, 0, 7, 0, 169, 0, 138,
275 0, 135, 81, 138, 0, 140, 0, 136, 81, 138,
276 0, 0, 27, 59, 115, 76, 0, 0, 165, 137,
277 142, 36, 139, 148, 0, 165, 137, 142, 0, 0,
278 168, 137, 142, 36, 141, 148, 0, 168, 137, 142,
279 0, 0, 143, 0, 144, 0, 143, 144, 0, 30,
280 59, 59, 145, 76, 76, 0, 146, 0, 145, 81,
281 146, 0, 0, 147, 0, 147, 59, 3, 76, 0,
282 147, 59, 3, 81, 101, 76, 0, 147, 59, 100,
283 76, 0, 97, 0, 5, 0, 6, 0, 7, 0,
284 107, 0, 0, 82, 149, 150, 78, 0, 1, 0,
285 0, 151, 174, 0, 152, 0, 151, 81, 152, 0,
286 107, 0, 0, 82, 153, 150, 78, 0, 1, 0,
287 0, 60, 107, 10, 107, 83, 36, 154, 152, 0,
288 0, 60, 107, 83, 36, 155, 152, 0, 0, 60,
289 107, 83, 156, 152, 0, 0, 97, 38, 157, 152,
290 0, 0, 58, 97, 36, 158, 152, 0, 0, 0,
291 165, 160, 116, 161, 198, 0, 0, 0, 168, 163,
292 116, 164, 198, 0, 166, 0, 168, 0, 59, 166,
293 76, 0, 166, 59, 233, 0, 166, 60, 99, 83,
294 0, 166, 60, 83, 0, 50, 186, 166, 0, 143,
295 123, 166, 0, 4, 0, 167, 59, 233, 0, 167,
296 60, 99, 83, 0, 167, 60, 83, 0, 50, 186,
297 167, 0, 143, 123, 167, 0, 4, 0, 168, 59,
298 233, 0, 59, 168, 76, 0, 50, 186, 168, 0,
299 168, 60, 99, 83, 0, 168, 60, 83, 0, 143,
300 123, 168, 0, 3, 0, 0, 13, 97, 82, 170,
301 176, 78, 142, 0, 13, 82, 176, 78, 142, 0,
302 13, 97, 0, 0, 14, 97, 82, 171, 176, 78,
303 142, 0, 14, 82, 176, 78, 142, 0, 14, 97,
304 0, 0, 12, 97, 82, 172, 181, 175, 78, 142,
305 0, 0, 12, 82, 173, 181, 175, 78, 142, 0,
306 12, 97, 0, 0, 81, 0, 0, 81, 0, 177,
307 0, 177, 178, 0, 0, 177, 178, 77, 0, 177,
308 77, 0, 131, 122, 179, 0, 131, 0, 185, 122,
309 179, 0, 185, 0, 1, 0, 238, 178, 0, 180,
310 0, 179, 81, 180, 0, 203, 204, 165, 142, 0,
311 203, 204, 165, 38, 107, 142, 0, 203, 204, 38,
312 107, 142, 0, 182, 0, 181, 81, 182, 0, 1,
313 0, 97, 0, 97, 36, 107, 0, 131, 184, 0,
314 185, 184, 0, 0, 187, 0, 7, 0, 185, 7,
315 0, 0, 186, 7, 0, 59, 187, 76, 0, 50,
316 186, 187, 0, 50, 186, 0, 187, 59, 226, 0,
317 187, 60, 99, 83, 0, 187, 60, 83, 0, 59,
318 226, 0, 60, 99, 83, 0, 60, 83, 0, 189,
319 0, 206, 0, 189, 206, 0, 189, 191, 0, 0,
320 188, 0, 1, 77, 0, 0, 0, 194, 0, 195,
321 0, 194, 195, 0, 32, 237, 77, 0, 198, 0,
322 1, 198, 0, 82, 0, 197, 78, 0, 197, 192,
323 193, 121, 190, 78, 0, 197, 192, 193, 1, 78,
324 0, 197, 192, 193, 188, 78, 0, 200, 205, 0,
325 200, 1, 0, 15, 59, 99, 76, 0, 0, 18,
326 202, 205, 17, 0, 0, 0, 203, 204, 208, 0,
327 203, 204, 219, 205, 0, 203, 204, 207, 0, 208,
328 0, 219, 0, 198, 0, 216, 0, 99, 77, 0,
329 0, 199, 16, 209, 205, 0, 199, 0, 199, 16,
330 1, 0, 0, 0, 17, 210, 59, 99, 76, 211,
331 205, 0, 201, 59, 99, 76, 77, 0, 201, 1,
332 0, 0, 0, 0, 19, 59, 221, 77, 212, 221,
333 77, 213, 221, 76, 214, 205, 0, 0, 20, 59,
334 99, 76, 215, 205, 0, 23, 77, 0, 24, 77,
335 0, 25, 77, 0, 25, 99, 77, 0, 27, 220,
336 59, 99, 76, 77, 0, 27, 220, 59, 99, 38,
337 222, 76, 77, 0, 27, 220, 59, 99, 38, 222,
338 38, 222, 76, 77, 0, 27, 220, 59, 99, 38,
339 222, 38, 222, 38, 225, 76, 77, 0, 26, 97,
340 77, 0, 26, 50, 99, 77, 0, 77, 0, 217,
341 0, 0, 19, 59, 113, 76, 218, 205, 0, 21,
342 107, 38, 0, 21, 107, 10, 107, 38, 0, 22,
343 38, 0, 97, 38, 0, 0, 7, 0, 0, 99,
344 0, 0, 223, 0, 224, 0, 223, 81, 224, 0,
345 9, 59, 99, 76, 0, 115, 0, 225, 81, 115,
346 0, 0, 227, 228, 0, 230, 76, 0, 0, 231,
347 77, 229, 228, 0, 1, 76, 0, 0, 10, 0,
348 231, 0, 231, 81, 10, 0, 232, 0, 231, 81,
349 232, 0, 125, 122, 167, 142, 0, 125, 122, 168,
350 142, 0, 125, 122, 184, 142, 0, 129, 122, 168,
351 142, 0, 129, 122, 184, 142, 0, 0, 234, 235,
352 0, 228, 0, 236, 76, 0, 3, 0, 236, 81,
353 3, 0, 97, 0, 237, 81, 97, 0, 31, 0
356 #endif
358 #if YYDEBUG != 0
359 static const short yyrline[] = { 0,
360 236, 241, 255, 257, 257, 258, 260, 262, 263, 271,
361 275, 286, 291, 296, 298, 300, 301, 302, 307, 314,
362 316, 321, 326, 332, 334, 339, 344, 350, 352, 357,
363 364, 366, 369, 371, 373, 375, 377, 379, 381, 385,
364 389, 392, 395, 398, 402, 404, 407, 410, 414, 442,
365 448, 451, 454, 457, 459, 463, 467, 471, 473, 476,
366 480, 507, 509, 511, 513, 515, 517, 519, 521, 523,
367 525, 527, 529, 531, 533, 537, 539, 543, 545, 548,
368 552, 554, 561, 564, 567, 573, 672, 673, 675, 681,
369 683, 697, 720, 722, 724, 728, 734, 736, 741, 743,
370 748, 750, 751, 761, 766, 768, 769, 770, 777, 783,
371 788, 791, 799, 804, 806, 807, 808, 815, 826, 830,
372 836, 841, 846, 851, 853, 855, 864, 867, 871, 873,
373 875, 880, 884, 887, 891, 894, 896, 908, 911, 913,
374 915, 919, 923, 925, 928, 941, 944, 948, 950, 958,
375 959, 960, 964, 966, 972, 973, 974, 977, 979, 982,
376 984, 987, 990, 996, 1003, 1005, 1012, 1019, 1022, 1029,
377 1032, 1036, 1039, 1043, 1048, 1051, 1055, 1058, 1060, 1062,
378 1064, 1071, 1073, 1074, 1075, 1080, 1082, 1087, 1095, 1100,
379 1104, 1107, 1109, 1114, 1117, 1119, 1121, 1125, 1128, 1128,
380 1131, 1131, 1134, 1134, 1137, 1137, 1140, 1142, 1153, 1161,
381 1165, 1176, 1184, 1191, 1193, 1198, 1201, 1206, 1208, 1210,
382 1217, 1219, 1227, 1233, 1235, 1237, 1244, 1246, 1252, 1258,
383 1260, 1262, 1264, 1271, 1273, 1276, 1281, 1283, 1287, 1289,
384 1291, 1293, 1297, 1299, 1302, 1305, 1308, 1311, 1315, 1317,
385 1320, 1322, 1326, 1329, 1334, 1336, 1338, 1352, 1359, 1364,
386 1370, 1375, 1377, 1382, 1384, 1388, 1392, 1396, 1406, 1408,
387 1413, 1418, 1421, 1425, 1428, 1432, 1435, 1438, 1441, 1445,
388 1448, 1452, 1456, 1458, 1460, 1462, 1464, 1466, 1468, 1470,
389 1480, 1488, 1490, 1492, 1496, 1498, 1501, 1504, 1515, 1517,
390 1522, 1524, 1527, 1541, 1544, 1547, 1549, 1551, 1559, 1567,
391 1578, 1583, 1586, 1600, 1609, 1613, 1617, 1621, 1627, 1631,
392 1636, 1639, 1644, 1647, 1648, 1665, 1670, 1673, 1685, 1687,
393 1697, 1707, 1708, 1716, 1719, 1731, 1735, 1752, 1762, 1771,
394 1776, 1781, 1786, 1790, 1794, 1805, 1812, 1819, 1826, 1837,
395 1843, 1846, 1851, 1874, 1908, 1939, 1970, 1985, 1996, 2000,
396 2004, 2007, 2012, 2014, 2017, 2019, 2023, 2028, 2031, 2037,
397 2042, 2047, 2049, 2058, 2059, 2065, 2067, 2077, 2079, 2083,
398 2086, 2092, 2102, 2111, 2120, 2130, 2144, 2149, 2154, 2156,
399 2165, 2168, 2173, 2176, 2180
401 #endif
404 #if YYDEBUG != 0
406 static const char * const yytname[] = { "$","error","$undefined.","IDENTIFIER",
407 "TYPENAME","SCSPEC","TYPESPEC","TYPE_QUAL","CONSTANT","STRING","ELLIPSIS","SIZEOF",
408 "ENUM","STRUCT","UNION","IF","ELSE","WHILE","DO","FOR","SWITCH","CASE","DEFAULT",
409 "BREAK","CONTINUE","RETURN","GOTO","ASM_KEYWORD","TYPEOF","ALIGNOF","ATTRIBUTE",
410 "EXTENSION","LABEL","REALPART","IMAGPART","ASSIGN","'='","'?'","':'","OROR",
411 "ANDAND","'|'","'^'","'&'","EQCOMPARE","ARITHCOMPARE","LSHIFT","RSHIFT","'+'",
412 "'-'","'*'","'/'","'%'","UNARY","PLUSPLUS","MINUSMINUS","HYPERUNARY","POINTSAT",
413 "'.'","'('","'['","INTERFACE","IMPLEMENTATION","END","SELECTOR","DEFS","ENCODE",
414 "CLASSNAME","PUBLIC","PRIVATE","PROTECTED","PROTOCOL","OBJECTNAME","CLASS","ALIAS",
415 "OBJC_STRING","')'","';'","'}'","'~'","'!'","','","'{'","']'","program","extdefs",
416 "@1","@2","extdef","datadef","fndef","@3","@4","@5","@6","@7","@8","identifier",
417 "unop","expr","exprlist","nonnull_exprlist","unary_expr","sizeof","alignof",
418 "cast_expr","@9","expr_no_commas","@10","@11","@12","@13","@14","primary","@15",
419 "string","old_style_parm_decls","lineno_datadecl","datadecls","datadecl","lineno_decl",
420 "decls","setspecs","setattrs","decl","typed_declspecs","reserved_declspecs",
421 "typed_declspecs_no_prefix_attr","reserved_declspecs_no_prefix_attr","declmods",
422 "declmods_no_prefix_attr","typed_typespecs","reserved_typespecquals","typespec",
423 "typespecqual_reserved","initdecls","notype_initdecls","maybeasm","initdcl",
424 "@16","notype_initdcl","@17","maybe_attribute","attributes","attribute","attribute_list",
425 "attrib","any_word","init","@18","initlist_maybe_comma","initlist1","initelt",
426 "@19","@20","@21","@22","@23","@24","nested_function","@25","@26","notype_nested_function",
427 "@27","@28","declarator","after_type_declarator","parm_declarator","notype_declarator",
428 "structsp","@29","@30","@31","@32","maybecomma","maybecomma_warn","component_decl_list",
429 "component_decl_list2","component_decl","components","component_declarator",
430 "enumlist","enumerator","typename","absdcl","nonempty_type_quals","type_quals",
431 "absdcl1","stmts","lineno_stmt_or_labels","xstmts","errstmt","pushlevel","maybe_label_decls",
432 "label_decls","label_decl","compstmt_or_error","compstmt_start","compstmt","simple_if",
433 "if_prefix","do_stmt_start","@33","save_filename","save_lineno","lineno_labeled_stmt",
434 "lineno_stmt_or_label","stmt_or_label","stmt","@34","@35","@36","@37","@38",
435 "@39","@40","all_iter_stmt","all_iter_stmt_simple","@41","label","maybe_type_qual",
436 "xexpr","asm_operands","nonnull_asm_operands","asm_operand","asm_clobbers","parmlist",
437 "@42","parmlist_1","@43","parmlist_2","parms","parm","parmlist_or_identifiers",
438 "@44","parmlist_or_identifiers_1","identifiers","identifiers_or_typenames","extension", NULL
440 #endif
442 static const short yyr1[] = { 0,
443 84, 84, 86, 85, 87, 85, 88, 88, 88, 88,
444 89, 89, 89, 89, 89, 89, 89, 89, 91, 92,
445 90, 90, 93, 94, 90, 90, 95, 96, 90, 90,
446 97, 97, 98, 98, 98, 98, 98, 98, 98, 99,
447 100, 100, 101, 101, 102, 102, 102, 102, 102, 102,
448 102, 102, 102, 102, 102, 103, 104, 105, 105, 106,
449 105, 107, 107, 107, 107, 107, 107, 107, 107, 107,
450 107, 107, 107, 107, 108, 107, 109, 107, 110, 111,
451 107, 112, 107, 107, 107, 113, 113, 113, 113, 113,
452 114, 113, 113, 113, 113, 113, 113, 113, 115, 115,
453 116, 116, 116, 117, 118, 118, 118, 118, 119, 119,
454 119, 119, 120, 121, 121, 121, 121, 122, 123, 124,
455 124, 124, 124, 124, 124, 124, 125, 125, 126, 126,
456 126, 126, 127, 127, 128, 128, 128, 129, 129, 129,
457 129, 130, 130, 130, 130, 131, 131, 132, 132, 133,
458 133, 133, 133, 133, 134, 134, 134, 135, 135, 136,
459 136, 137, 137, 139, 138, 138, 141, 140, 140, 142,
460 142, 143, 143, 144, 145, 145, 146, 146, 146, 146,
461 146, 147, 147, 147, 147, 148, 149, 148, 148, 150,
462 150, 151, 151, 152, 153, 152, 152, 154, 152, 155,
463 152, 156, 152, 157, 152, 158, 152, 160, 161, 159,
464 163, 164, 162, 165, 165, 166, 166, 166, 166, 166,
465 166, 166, 167, 167, 167, 167, 167, 167, 168, 168,
466 168, 168, 168, 168, 168, 170, 169, 169, 169, 171,
467 169, 169, 169, 172, 169, 173, 169, 169, 174, 174,
468 175, 175, 176, 176, 177, 177, 177, 178, 178, 178,
469 178, 178, 178, 179, 179, 180, 180, 180, 181, 181,
470 181, 182, 182, 183, 183, 184, 184, 185, 185, 186,
471 186, 187, 187, 187, 187, 187, 187, 187, 187, 187,
472 188, 189, 189, 189, 190, 190, 191, 192, 193, 193,
473 194, 194, 195, 196, 196, 197, 198, 198, 198, 198,
474 199, 199, 200, 202, 201, 203, 204, 205, 205, 206,
475 207, 207, 208, 208, 208, 209, 208, 208, 208, 210,
476 211, 208, 208, 208, 212, 213, 214, 208, 215, 208,
477 208, 208, 208, 208, 208, 208, 208, 208, 208, 208,
478 208, 216, 218, 217, 219, 219, 219, 219, 220, 220,
479 221, 221, 222, 222, 223, 223, 224, 225, 225, 227,
480 226, 228, 229, 228, 228, 230, 230, 230, 230, 231,
481 231, 232, 232, 232, 232, 232, 234, 233, 235, 235,
482 236, 236, 237, 237, 238
485 static const short yyr2[] = { 0,
486 0, 1, 0, 2, 0, 3, 1, 1, 5, 2,
487 3, 4, 4, 2, 2, 2, 2, 1, 0, 0,
488 7, 4, 0, 0, 7, 4, 0, 0, 6, 3,
489 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
490 0, 1, 1, 3, 1, 2, 2, 2, 2, 2,
491 4, 2, 4, 2, 2, 1, 1, 1, 4, 0,
492 7, 1, 3, 3, 3, 3, 3, 3, 3, 3,
493 3, 3, 3, 3, 0, 4, 0, 4, 0, 0,
494 7, 0, 5, 3, 3, 1, 1, 1, 3, 3,
495 0, 4, 4, 4, 3, 3, 2, 2, 1, 2,
496 0, 1, 2, 3, 1, 1, 2, 2, 4, 4,
497 2, 2, 3, 1, 1, 2, 2, 0, 0, 4,
498 4, 3, 3, 2, 2, 2, 2, 3, 0, 2,
499 2, 2, 2, 3, 0, 2, 2, 1, 1, 2,
500 2, 1, 1, 2, 2, 2, 3, 0, 2, 1,
501 1, 1, 4, 4, 1, 1, 1, 1, 3, 1,
502 3, 0, 4, 0, 6, 3, 0, 6, 3, 0,
503 1, 1, 2, 6, 1, 3, 0, 1, 4, 6,
504 4, 1, 1, 1, 1, 1, 0, 4, 1, 0,
505 2, 1, 3, 1, 0, 4, 1, 0, 8, 0,
506 6, 0, 5, 0, 4, 0, 5, 0, 0, 5,
507 0, 0, 5, 1, 1, 3, 3, 4, 3, 3,
508 3, 1, 3, 4, 3, 3, 3, 1, 3, 3,
509 3, 4, 3, 3, 1, 0, 7, 5, 2, 0,
510 7, 5, 2, 0, 8, 0, 7, 2, 0, 1,
511 0, 1, 1, 2, 0, 3, 2, 3, 1, 3,
512 1, 1, 2, 1, 3, 4, 6, 5, 1, 3,
513 1, 1, 3, 2, 2, 0, 1, 1, 2, 0,
514 2, 3, 3, 2, 3, 4, 3, 2, 3, 2,
515 1, 1, 2, 2, 0, 1, 2, 0, 0, 1,
516 1, 2, 3, 1, 2, 1, 2, 6, 5, 5,
517 2, 2, 4, 0, 4, 0, 0, 3, 4, 3,
518 1, 1, 1, 1, 2, 0, 4, 1, 3, 0,
519 0, 7, 5, 2, 0, 0, 0, 12, 0, 6,
520 2, 2, 2, 3, 6, 8, 10, 12, 3, 4,
521 1, 1, 0, 6, 3, 5, 2, 2, 0, 1,
522 0, 1, 0, 1, 1, 3, 4, 1, 3, 0,
523 2, 2, 0, 4, 2, 0, 1, 1, 3, 1,
524 3, 4, 4, 4, 4, 4, 0, 2, 1, 2,
525 1, 3, 1, 3, 1
528 static const short yydefact[] = { 3,
529 5, 0, 0, 0, 152, 143, 150, 142, 0, 0,
530 0, 0, 0, 0, 395, 18, 4, 8, 7, 0,
531 118, 118, 138, 129, 139, 172, 151, 0, 6, 16,
532 17, 31, 32, 246, 248, 255, 239, 255, 243, 0,
533 0, 0, 235, 280, 0, 0, 160, 119, 0, 15,
534 0, 14, 0, 140, 129, 141, 145, 144, 127, 173,
535 10, 0, 244, 0, 0, 236, 0, 240, 86, 87,
536 99, 56, 57, 0, 0, 0, 33, 35, 34, 0,
537 36, 37, 0, 38, 39, 0, 0, 40, 58, 0,
538 0, 62, 43, 45, 88, 0, 278, 0, 276, 148,
539 0, 276, 177, 0, 0, 11, 0, 0, 30, 0,
540 387, 0, 0, 170, 222, 280, 0, 0, 158, 119,
541 0, 214, 215, 0, 0, 128, 131, 155, 156, 130,
542 132, 157, 271, 272, 251, 269, 0, 170, 262, 257,
543 118, 254, 118, 0, 255, 170, 255, 54, 55, 49,
544 46, 0, 0, 0, 0, 48, 0, 0, 0, 50,
545 0, 52, 0, 0, 79, 77, 75, 0, 0, 0,
546 0, 0, 0, 0, 0, 0, 0, 0, 0, 97,
547 98, 0, 0, 41, 0, 100, 47, 153, 280, 370,
548 0, 274, 277, 146, 154, 279, 148, 275, 183, 184,
549 185, 182, 0, 175, 178, 281, 231, 230, 161, 162,
550 234, 0, 229, 0, 233, 0, 0, 28, 0, 316,
551 106, 317, 169, 171, 0, 0, 13, 0, 0, 22,
552 0, 170, 387, 0, 12, 26, 0, 0, 252, 0,
553 251, 238, 316, 256, 316, 263, 0, 242, 0, 90,
554 89, 306, 298, 0, 0, 9, 44, 0, 0, 85,
555 84, 0, 0, 0, 0, 73, 74, 72, 71, 70,
556 68, 69, 63, 64, 65, 66, 67, 96, 95, 0,
557 42, 0, 284, 0, 288, 0, 290, 0, 370, 0,
558 149, 147, 0, 177, 41, 0, 0, 391, 377, 118,
559 118, 389, 0, 378, 380, 388, 0, 232, 297, 0,
560 108, 103, 107, 0, 167, 220, 216, 159, 221, 20,
561 166, 217, 219, 0, 24, 273, 270, 170, 0, 258,
562 264, 317, 260, 170, 170, 307, 299, 92, 60, 59,
563 51, 53, 0, 0, 78, 76, 93, 94, 283, 282,
564 371, 289, 285, 287, 0, 174, 176, 86, 0, 163,
565 375, 276, 276, 372, 373, 0, 390, 0, 0, 29,
566 304, 104, 118, 118, 135, 0, 0, 164, 218, 0,
567 247, 170, 316, 0, 237, 241, 0, 0, 300, 301,
568 0, 80, 83, 286, 179, 0, 181, 228, 280, 370,
569 119, 170, 170, 170, 280, 170, 170, 0, 379, 381,
570 392, 305, 111, 0, 112, 0, 135, 133, 189, 187,
571 186, 168, 21, 0, 25, 245, 265, 0, 170, 393,
572 0, 0, 0, 316, 0, 0, 115, 317, 292, 302,
573 197, 86, 0, 0, 195, 0, 194, 0, 249, 192,
574 0, 0, 284, 0, 387, 0, 382, 383, 384, 284,
575 385, 386, 374, 0, 0, 162, 134, 137, 136, 0,
576 165, 170, 0, 266, 303, 0, 309, 117, 116, 296,
577 0, 310, 294, 317, 293, 0, 0, 0, 0, 204,
578 61, 0, 191, 81, 180, 226, 280, 227, 223, 225,
579 0, 109, 110, 0, 268, 170, 394, 308, 0, 152,
580 0, 330, 314, 0, 0, 0, 0, 0, 0, 0,
581 0, 359, 351, 0, 0, 113, 118, 118, 323, 328,
582 0, 0, 320, 321, 324, 352, 322, 0, 206, 0,
583 202, 0, 0, 193, 0, 224, 188, 267, 0, 0,
584 316, 361, 0, 0, 357, 341, 342, 343, 0, 0,
585 0, 360, 0, 358, 325, 124, 0, 125, 0, 0,
586 312, 317, 311, 334, 0, 126, 0, 0, 200, 0,
587 196, 205, 0, 0, 0, 362, 45, 0, 0, 0,
588 355, 344, 0, 349, 0, 0, 122, 208, 0, 123,
589 211, 329, 316, 0, 0, 207, 0, 0, 203, 313,
590 0, 315, 353, 335, 339, 0, 350, 0, 120, 0,
591 121, 0, 327, 318, 316, 0, 198, 201, 331, 316,
592 361, 316, 356, 363, 0, 209, 212, 319, 333, 0,
593 316, 354, 0, 340, 0, 0, 364, 365, 345, 0,
594 0, 199, 332, 336, 0, 363, 0, 0, 210, 213,
595 361, 0, 0, 346, 366, 0, 367, 0, 0, 337,
596 368, 0, 347, 316, 0, 0, 338, 348, 369, 0,
597 0, 0
600 static const short yydefgoto[] = { 680,
601 1, 2, 3, 17, 18, 19, 231, 377, 237, 380,
602 113, 310, 446, 86, 153, 280, 88, 89, 90, 91,
603 92, 391, 93, 265, 264, 262, 451, 263, 94, 154,
604 95, 218, 219, 220, 372, 433, 434, 20, 108, 526,
605 300, 59, 373, 418, 301, 23, 99, 194, 24, 130,
606 118, 46, 114, 119, 424, 47, 376, 223, 224, 26,
607 203, 204, 205, 422, 470, 448, 449, 450, 489, 640,
608 608, 580, 543, 577, 597, 620, 650, 600, 622, 651,
609 210, 122, 496, 123, 27, 145, 147, 137, 62, 493,
610 240, 64, 65, 142, 330, 331, 135, 136, 101, 192,
611 102, 104, 193, 435, 436, 481, 221, 337, 388, 389,
612 390, 370, 253, 371, 530, 531, 532, 551, 572, 314,
613 573, 439, 533, 534, 603, 550, 641, 631, 661, 674,
614 632, 535, 536, 630, 537, 563, 588, 646, 647, 648,
615 672, 285, 286, 302, 408, 303, 304, 305, 213, 214,
616 306, 307, 431, 96
619 static const short yypact[] = { 66,
620 82, 2070, 2070, 286,-32768,-32768,-32768,-32768, 77, 84,
621 103, 30, 55, 79,-32768,-32768,-32768,-32768,-32768, 60,
622 113, 405, 142,-32768, 183,-32768,-32768, 2070,-32768,-32768,
623 -32768,-32768,-32768,-32768, 163,-32768, 170,-32768, 173, 1932,
624 1866, 165,-32768,-32768, 60, 35,-32768, 183, 589,-32768,
625 530,-32768, 60, 142,-32768, 183,-32768,-32768, 1138,-32768,
626 -32768, 458,-32768, 192, 267,-32768, 200,-32768,-32768,-32768,
627 -32768,-32768,-32768, 1932, 1932, 229,-32768,-32768,-32768, 1932,
628 -32768,-32768, 850,-32768,-32768, 1932, 206, 211,-32768, 1959,
629 1986,-32768, 2136, 366, 288, 1932,-32768, 243, 161,-32768,
630 271, 438, 842, 237, 150,-32768, 530, 60,-32768, 254,
631 -32768, 1408, 361, 183,-32768,-32768, 530, 106,-32768, 183,
632 732, 389, 413, 112, 1354, 1138,-32768,-32768,-32768,-32768,
633 183,-32768,-32768, 318, 297,-32768, 458, 183,-32768,-32768,
634 412, 306, 639, 824,-32768, 183,-32768,-32768,-32768,-32768,
635 -32768, 315, 321, 322, 331,-32768, 352, 1932, 850,-32768,
636 850,-32768, 1932, 1932, 401,-32768,-32768, 1932, 1932, 1932,
637 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932, 1932,-32768,
638 -32768, 229, 229, 1932, 1932,-32768,-32768,-32768,-32768, 161,
639 1421,-32768, 442, 648,-32768,-32768,-32768,-32768,-32768,-32768,
640 -32768,-32768, 93,-32768, 394,-32768, 413,-32768,-32768, 443,
641 413, 466,-32768, 907,-32768, 377, 407,-32768, 323, 59,
642 -32768,-32768, 456, 183, 199, 283,-32768, 530, 530,-32768,
643 361, 183,-32768, 1474,-32768,-32768, 361, 1932, 229, 400,
644 297,-32768,-32768,-32768,-32768,-32768, 409,-32768, 416,-32768,
645 -32768,-32768, 418, 423, 1755,-32768, 2136, 427, 432, 2136,
646 2136, 1932, 479, 1932, 1932, 1725, 2193, 1903, 1130, 1357,
647 960, 960, 455, 455,-32768,-32768,-32768,-32768,-32768, 450,
648 211, 448, 310, 296,-32768, 628,-32768, 457,-32768, 1487,
649 -32768, 648, 465, 842, 2013, 52, 467,-32768,-32768,-32768,
650 1088,-32768, 470, 257,-32768,-32768, 154,-32768,-32768, 57,
651 -32768,-32768,-32768, 861,-32768, 389,-32768,-32768, 389,-32768,
652 512,-32768,-32768, 468,-32768, 2136,-32768, 183, 475, 473,
653 -32768,-32768, 473, 183, 183,-32768, 526,-32768,-32768,-32768,
654 -32768,-32768, 523, 1932, 2171, 2183,-32768,-32768, 442,-32768,
655 -32768,-32768,-32768,-32768, 482,-32768,-32768, 209, 490,-32768,
656 -32768, 177, 67,-32768,-32768, 1058,-32768, 576, 322,-32768,
657 -32768,-32768, 505, 451,-32768, 1343, 57,-32768,-32768, 57,
658 -32768, 183,-32768, 261,-32768,-32768, 229, 944, 526,-32768,
659 1163,-32768, 2065,-32768,-32768, 1932,-32768,-32768,-32768, 67,
660 183, 137, 242, 183,-32768, 242, 183, 628,-32768,-32768,
661 -32768,-32768,-32768, 530,-32768, 60,-32768, 387,-32768,-32768,
662 2136,-32768,-32768, 1343,-32768,-32768,-32768, 1932, 187,-32768,
663 276, 433, 672, 507, 508, 762,-32768,-32768,-32768,-32768,
664 -32768, 549, 229, 1932,-32768, 550, 2136, 514, 516,-32768,
665 1932, 250, 188, 609,-32768, 1540,-32768,-32768,-32768, 216,
666 -32768,-32768,-32768, 309, 325, 155, 387,-32768,-32768, 1163,
667 -32768, 1642, 1932,-32768,-32768, 229,-32768,-32768,-32768,-32768,
668 520,-32768,-32768,-32768,-32768, 1621, 564, 2109, 1163,-32768,
669 -32768, 1223,-32768, 2065,-32768, 459,-32768, 459,-32768,-32768,
670 524,-32768,-32768, 532,-32768, 1642,-32768,-32768, 1701, 573,
671 555,-32768,-32768, 559, 561, 1932, 584, 546, 547, 1879,
672 201, 619,-32768, 590, 553,-32768, 567, 794,-32768, 611,
673 1026, 61,-32768,-32768,-32768,-32768,-32768, 1812,-32768, 1932,
674 600, 569, 1283,-32768, 302,-32768,-32768,-32768, 1932, 591,
675 -32768, 1932, 1932, 1565,-32768,-32768,-32768,-32768, 580, 1932,
676 588,-32768, 610,-32768,-32768,-32768, 530,-32768, 60, 1106,
677 -32768,-32768,-32768,-32768, 1932,-32768, 1283, 2091,-32768, 1283,
678 -32768,-32768, 596, 1932, 665,-32768, 868, 630, 612, 1932,
679 -32768,-32768, 632,-32768, 1932, 350,-32768, 227, 355,-32768,
680 955,-32768,-32768, 1701, 634,-32768, 675, 1283,-32768,-32768,
681 637,-32768,-32768,-32768,-32768, 2158,-32768, 39,-32768, 361,
682 -32768, 361,-32768,-32768,-32768, 641,-32768,-32768,-32768,-32768,
683 1932,-32768,-32768, 705, 642,-32768,-32768,-32768,-32768, 1283,
684 -32768,-32768, 646,-32768, 666, 47, 643,-32768,-32768, 322,
685 322,-32768,-32768,-32768, 1932, 705, 651, 705,-32768,-32768,
686 1932, 653, 48,-32768,-32768, 654,-32768, 466, 655,-32768,
687 288, 303,-32768,-32768, 657, 466,-32768,-32768, 288, 735,
688 740,-32768
691 static const short yypgoto[] = {-32768,
692 -32768,-32768,-32768, 65,-32768,-32768,-32768,-32768,-32768,-32768,
693 -32768,-32768, -5,-32768, -40, 446, -137, 424,-32768,-32768,
694 -55,-32768, 399,-32768,-32768,-32768,-32768,-32768, 190,-32768,
695 -191, -207, 527,-32768,-32768, 314,-32768, 22, -98, 215,
696 0, 700,-32768, 339, 7, -7, -15, 560, 11, -149,
697 -366, -45, -107, -52,-32768,-32768,-32768, 202, 14, 53,
698 -32768, 464,-32768, 337,-32768, -378,-32768, -409,-32768,-32768,
699 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
700 -38, -68, -298, -13, -30,-32768,-32768,-32768,-32768,-32768,
701 528, 41,-32768, 620, 522, 391, 635, 537, 1, -79,
702 -11, -89, -139, 344,-32768,-32768, -180,-32768,-32768,-32768,
703 403, -278,-32768, -128,-32768,-32768,-32768,-32768, -95, -286,
704 -495, 358,-32768, 193,-32768,-32768,-32768,-32768,-32768,-32768,
705 -32768,-32768,-32768,-32768, 214,-32768, -556, 147,-32768, 146,
706 -32768, 531,-32768, -233,-32768,-32768,-32768, 449, -195,-32768,
707 -32768,-32768,-32768, 9
711 #define YYLAST 2245
714 static const short yytable[] = { 87,
715 98, 21, 21, 35, 37, 39, 49, 124, 22, 22,
716 28, 28, 121, 232, 54, 25, 25, 222, 148, 149,
717 296, 229, 198, 320, 151, 254, 225, 21, 132, 325,
718 156, 105, 55, 48, 22, 56, 28, 322, 311, 125,
719 187, 25, 51, 53, 291, 384, 281, 464, 226, 141,
720 284, 100, 351, 143, 209, 585, 134, 369, 48, -102,
721 186, 574, 43, 402, 120, -1, 48, 29, 312, 43,
722 150, 216, 131, 144, 643, 100, 634, 60, 67, 32,
723 33, -2, 544, 155, 656, 668, 32, 33, 40, 14,
724 207, 504, 61, 100, 211, 132, 14, 202, 423, 283,
725 60, 425, 232, 105, 666, 32, 33, 623, 60, 44,
726 542, 106, 197, 41, 635, 107, 405, 48, 45, 575,
727 120, 48, 657, 669, 222, 400, 191, 360, 141, 638,
728 120, 134, 143, 582, 642, 222, 644, 42, 252, 131,
729 -102, 222, 291, 349, 282, 653, 57, 332, 58, 332,
730 288, 486, 144, 197, 100, 498, 316, 281, 34, 258,
731 319, 259, 243, 132, 245, 36, 14, 606, 293, 100,
732 609, 100, 60, 294, 463, 318, 278, 279, 677, 43,
733 398, 110, 227, 60, 38, 247, 228, 249, 235, 50,
734 43, 398, 107, 324, 206, 455, 456, 509, 628, 340,
735 596, 43, 115, 32, 33, 206, 14, 437, 111, 112,
736 189, 207, 14, 111, 112, 211, 14, 14, 43, 190,
737 191, 343, 206, 103, 473, 208, 399, 25, 14, 367,
738 652, 32, 33, 134, 368, 400, 191, 399, 120, 43,
739 412, 120, 120, 206, 63, 14, 400, 191, 116, 355,
740 560, 66, 478, 110, 68, 483, -162, 117, 452, 499,
741 284, 132, -162, 43, 115, 405, 14, 139, 469, 138,
742 5, 14, 7, 97, 400, 191, 60, 146, 9, 10,
743 11, 157, 404, 407, 395, 604, 44, 332, 202, 396,
744 14, 158, 438, 54, 13, 45, 186, 15, 428, 25,
745 111, 112, 454, -162, 43, 398, 374, -162, 206, 453,
746 116, 55, 212, 349, 56, 460, 206, 469, 188, 117,
747 349, 362, 363, 217, 375, 495, -105, -105, -105, -105,
748 158, 14, -105, 365, -105, -105, -105, 366, 438, 242,
749 484, 233, 234, 140, -253, 429, 195, 248, 403, 406,
750 -105, 497, 475, 238, 289, 290, 476, 529, 317, 189,
751 45, 217, 30, 31, -316, -316, -316, -316, 190, 191,
752 465, 350, -316, -316, -316, 401, 48, 239, 675, 25,
753 529, 430, 244, 676, 417, 502, 105, 132, -316, 228,
754 250, 468, 128, 129, 414, 416, 251, 120, 9, 10,
755 11, 503, 466, 252, -105, 107, 255, 545, 5, 6,
756 7, 8, 636, 48, 637, 501, 9, 10, 11, 180,
757 181, 25, 182, 183, 184, 185, 619, 120, 256, 48,
758 228, 621, 13, 321, 14, 107, 132, 487, -82, 207,
759 211, 5, -101, 7, 196, 525, 207, 233, 234, 9,
760 10, 11, 295, 60, 5, 57, 7, 58, 133, 308,
761 32, 33, 9, 10, 11, 13, 401, 401, 525, 110,
762 507, 111, 112, 48, 71, 529, 671, 328, 13, 559,
763 524, 52, 187, 309, 679, 527, 334, 189, -259, -259,
764 232, 315, 528, 335, 538, 336, 190, 191, 338, 25,
765 289, 290, 341, 524, 177, 178, 179, 342, 583, 309,
766 477, 586, 589, 160, 162, 561, 344, 455, 456, 593,
767 54, 659, 660, 599, 222, 347, 222, 415, 598, 381,
768 348, 207, 43, 115, 605, 385, 386, 527, 55, 352,
769 356, 56, 361, 611, 528, 364, 538, 378, 567, 569,
770 379, 25, 382, 383, 618, 601, 257, 387, 401, 14,
771 392, 260, 261, 525, 394, 397, 266, 267, 268, 269,
772 270, 271, 272, 273, 274, 275, 276, 277, 411, 116,
773 120, 413, 48, 426, -295, 482, -31, 490, 117, 109,
774 586, 491, -27, -27, -27, -27, 492, 508, 524, 539,
775 -27, -27, -27, 457, 458, 459, 546, 461, 462, 547,
776 -32, 43, 398, 549, 662, 110, -27, 552, -162, 553,
777 586, 555, 556, 557, -162, 562, 570, 564, 297, 565,
778 474, 5, 6, 7, 8, 579, 326, 299, 14, 9,
779 10, 11, 5, 566, 7, 196, 581, 111, 112, 584,
780 9, 10, 11, 128, 129, 13, 592, 14, 497, 9,
781 10, 11, 345, 346, 594, -162, 13, 45, 595, -162,
782 -27, 610, 217, 505, -114, -114, -114, -114, -114, -114,
783 -114, 612, -114, -114, -114, -114, -114, 615, -114, -114,
784 -114, -114, -114, -114, -114, -114, -114, -114, -114, -114,
785 -114, -114, -114, -376, -114, -114, 614, 548, 617, 626,
786 627, -114, 629, 645, -114, -261, -261, 639, 649, -114,
787 -114, -114, 654, 658, 655, -114, -114, 664, 667, 670,
788 -114, 673, 230, 678, 681, -19, -19, -19, -19, 682,
789 359, 587, 393, -19, -19, -19, 313, 479, -114, -114,
790 -114, -114, 576, -114, 126, 467, 292, 357, 110, -19,
791 471, -162, 217, 246, -316, -316, 333, -162, 329, -316,
792 -316, 241, -316, 427, 421, 327, -316, 480, -316, -316,
793 -316, -316, -316, -316, -316, -316, -316, -316, -316, 447,
794 -316, 440, -316, 485, -316, -316, 624, 5, 6, 7,
795 8, -316, 663, 665, -316, 9, 10, 11, -162, -316,
796 -316, -316, -162, -19, 410, -316, -316, 625, 0, 353,
797 -316, 13, 421, 14, 139, 0, 472, 5, 0, 7,
798 97, 0, 0, 0, 0, 9, 10, 11, -316, -291,
799 -316, -316, 488, -316, 32, 33, 199, 200, 201, 494,
800 152, 13, 69, 5, 15, 7, 97, 70, 71, 0,
801 72, 9, 10, 11, 5, 6, 7, 8, 447, 0,
802 568, 506, 9, 10, 11, 0, 0, 13, 73, 0,
803 15, 0, 74, 75, 0, 0, 0, 447, 13, 76,
804 447, 0, 77, 0, 0, 0, 0, 78, 79, 80,
805 0, 0, 0, 81, 82, 0, 0, 297, 83, 298,
806 5, 6, 7, 8, 554, 0, 299, 0, 9, 10,
807 11, 180, 181, 0, 182, 183, 184, 185, 84, 85,
808 0, -91, 0, 0, 13, 0, 14, 0, 578, 0,
809 0, 447, 0, 613, 432, 0, -316, -316, -316, -316,
810 -316, -316, -316, 0, -316, -316, -316, -316, -316, 0,
811 -316, -316, -316, -316, -316, -316, -316, -316, -316, -316,
812 -316, -316, -316, -316, -316, 447, -316, -316, 447, 0,
813 0, 110, -376, -316, -162, 0, -316, 0, 616, 0,
814 -162, -316, -316, -316, 0, 0, 0, -316, -316, 0,
815 0, 0, -316, 0, 0, 0, 447, 175, 176, 177,
816 178, 179, 0, 111, 112, 0, 0, 0, 0, 0,
817 -316, 0, -316, -316, 0, -316, 571, 0, -316, -316,
818 0, -162, 0, -316, -316, -162, -316, 0, 447, 0,
819 -316, 0, -316, -316, -316, -316, -316, -316, -316, -316,
820 -316, -316, -316, 0, -316, 0, -316, 0, -316, -316,
821 0, 5, 6, 7, 8, -316, 0, 409, -316, 9,
822 10, 11, 0, -316, -316, -316, 0, 0, 0, -316,
823 -316, 0, 0, 0, -316, 13, 0, 14, 0, 0,
824 0, 5, 6, 7, 8, 0, 0, 0, 0, 9,
825 10, 11, -316, 0, -316, -316, 602, -316, -326, -326,
826 0, 0, 0, -326, -326, 13, -326, 14, 0, 0,
827 -326, 0, -326, -326, -326, -326, -326, -326, -326, -326,
828 -326, -326, -326, 0, -326, 0, -326, 0, -326, -326,
829 0, 0, 127, 128, 129, -326, 0, 0, -326, 9,
830 10, 11, 0, -326, -326, -326, 0, 0, 0, -326,
831 -326, 0, 0, 441, -326, 442, 33, 14, 0, 0,
832 70, 71, 0, 72, 172, 173, 174, 175, 176, 177,
833 178, 179, -326, 0, -326, -326, 0, -326, 0, 0,
834 0, 73, 0, 15, 0, 74, 75, 0, 0, 0,
835 0, 0, 76, 0, 0, 77, 0, 0, 0, 0,
836 78, 79, 80, 0, 0, 0, 81, 82, 0, 0,
837 443, 83, 444, 441, 0, 442, 33, 0, 0, 0,
838 70, 71, 0, 72, 0, 0, 0, 0, 0, 0,
839 -190, 84, 85, 0, 445, 0, 0, 0, 0, 0,
840 0, 73, 0, 15, 0, 74, 75, 0, 0, 0,
841 0, 0, 76, 0, 0, 77, 0, 0, 0, 0,
842 78, 79, 80, 0, 0, 0, 81, 82, 0, 0,
843 443, 83, 444, 441, 0, 442, 33, 0, 0, 0,
844 70, 71, 0, 72, 0, 0, 0, 0, 0, 0,
845 -250, 84, 85, 0, 445, 0, 0, 0, 0, 0,
846 0, 73, 0, 15, 0, 74, 75, 0, 0, 0,
847 0, 0, 76, 0, 0, 77, 0, 0, 0, 0,
848 78, 79, 80, 0, 0, 0, 81, 82, 0, 0,
849 443, 83, 444, 419, 0, 69, 0, 0, 0, 0,
850 70, 71, 0, 72, 236, 0, 0, -23, -23, -23,
851 -23, 84, 85, 0, 445, -23, -23, -23, 0, 0,
852 0, 73, 0, 15, 0, 74, 75, 0, 0, 0,
853 110, -23, 76, -162, 0, 77, 0, 0, 0, -162,
854 78, 79, 80, 0, 0, 0, 81, 82, 0, 0,
855 0, 83, 173, 174, 175, 176, 177, 178, 179, 0,
856 69, 0, 111, 112, 0, 70, 71, 0, 72, 0,
857 0, 84, 85, 69, 420, 0, 0, 0, 70, 71,
858 -162, 72, 0, 0, -162, -23, 73, 0, 15, 0,
859 74, 75, 0, 0, 0, 0, 0, 76, 0, 73,
860 77, 15, 0, 74, 75, 78, 79, 80, 0, 0,
861 76, 81, 82, 77, 0, 0, 83, 0, 78, 79,
862 80, 0, 0, 0, 81, 82, 69, 0, 0, 83,
863 0, 70, 71, 0, 72, 0, 84, 85, 0, 69,
864 215, 0, 0, 0, 70, 71, 0, 72, 0, 84,
865 85, 0, 73, 287, 15, 0, 74, 75, 0, 0,
866 0, 0, 0, 76, 0, 73, 77, 15, 0, 74,
867 75, 78, 79, 80, 0, 0, 76, 81, 82, 77,
868 0, 0, 83, 0, 78, 79, 80, 0, 0, 0,
869 81, 82, 69, 0, 0, 83, 0, 70, 71, 0,
870 72, 0, 84, 85, 0, 0, 323, 0, 0, 0,
871 0, 0, 0, 0, 0, 84, 85, 0, 73, 354,
872 15, 0, 74, 75, 590, 0, 0, 0, 0, 76,
873 0, 0, 77, 0, 0, 0, 0, 78, 79, 80,
874 0, 0, 0, 81, 82, 0, 0, 0, 83, 163,
875 164, 165, 591, 166, 167, 168, 169, 170, 171, 172,
876 173, 174, 175, 176, 177, 178, 179, 0, 84, 85,
877 0, 0, 500, 442, 510, 6, 7, 8, 70, 71,
878 0, 72, 9, 10, 11, 511, 0, 512, 513, 514,
879 515, 516, 517, 518, 519, 520, 521, 522, 13, 73,
880 14, 15, 0, 74, 75, 0, 0, 0, 0, 0,
881 76, 0, 0, 77, 0, 0, 0, 0, 78, 79,
882 80, 14, 0, 0, 81, 82, 163, 164, 165, 83,
883 166, 167, 168, 169, 170, 171, 172, 173, 174, 175,
884 176, 177, 178, 179, 0, 0, 0, 523, 0, 84,
885 85, 0, 252, 442, 33, 0, 0, 0, 70, 71,
886 0, 72, 0, 0, 0, 511, 0, 512, 513, 514,
887 515, 516, 517, 518, 519, 520, 521, 522, 0, 73,
888 0, 15, 0, 74, 75, 0, 0, 0, 0, 0,
889 76, 0, 0, 77, 0, 0, 0, 0, 78, 79,
890 80, 0, 0, 0, 81, 82, 0, 69, 0, 83,
891 0, 0, 70, 71, 0, 72, 169, 170, 171, 172,
892 173, 174, 175, 176, 177, 178, 179, 523, 0, 84,
893 85, 0, 252, 73, 0, 15, 0, 74, 75, 0,
894 0, 0, 0, 0, 76, 0, 0, 77, 0, 0,
895 0, 0, 78, 79, 80, 0, 0, 0, 81, 82,
896 0, 0, 0, 83, 69, 5, 6, 7, 8, 70,
897 71, 0, 72, 9, 10, 11, 0, 0, 0, 0,
898 0, 0, 0, 84, 85, 0, 339, 0, 0, 13,
899 73, 14, 15, 0, 74, 75, 0, 0, 0, 0,
900 0, 76, 0, 0, 77, 0, 0, 0, 0, 78,
901 79, 80, 0, 0, 0, 81, 82, 0, 69, 5,
902 83, 7, 97, 70, 71, 0, 72, 9, 10, 11,
903 0, 69, 0, 0, 0, 0, 70, 71, 0, 72,
904 84, 85, 0, 13, 73, 0, 15, 0, 74, 75,
905 0, 0, 0, 0, 0, 76, 0, 73, 77, 15,
906 0, 74, 75, 78, 79, 80, 0, 0, 76, 81,
907 82, 77, 0, 0, 83, 0, 78, 79, 80, 0,
908 0, 0, 81, 82, 69, 0, 0, 83, 0, 70,
909 71, 0, 72, 0, 84, 85, 171, 172, 173, 174,
910 175, 176, 177, 178, 179, 558, 0, 84, 85, 0,
911 73, 69, 15, 0, 74, 75, 70, 71, 0, 72,
912 0, 76, 0, 0, 77, 0, 0, 0, 0, 78,
913 79, 80, 0, 0, 0, 81, 82, 73, 69, 15,
914 83, 74, 75, 70, 71, 0, 72, 0, 76, 0,
915 0, 77, 0, 0, 0, 0, 78, 79, 80, 0,
916 84, 85, 81, 82, 73, 358, 15, 159, 74, 75,
917 70, 71, 0, 72, 0, 76, 0, 0, 77, 0,
918 0, 0, 0, 78, 79, 80, 0, 84, 85, 81,
919 82, 73, 0, 15, 161, 74, 75, 0, 0, 0,
920 0, 0, 76, 0, 0, 77, 0, 0, 0, 0,
921 78, 79, 80, 0, 84, 85, 81, 82, 0, 0,
922 4, 83, -118, 5, 6, 7, 8, 0, 0, 0,
923 0, 9, 10, 11, 0, 0, 0, 0, 0, 0,
924 0, 84, 85, 0, 0, 0, 12, 13, 0, 14,
925 15, 165, 0, 166, 167, 168, 169, 170, 171, 172,
926 173, 174, 175, 176, 177, 178, 179, 0, 540, -118,
927 0, 0, 0, 0, 0, 163, 164, 165, -118, 166,
928 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
929 177, 178, 179, 163, 164, 165, 16, 166, 167, 168,
930 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
931 179, 0, 0, 0, 0, 0, 0, 0, 0, 0,
932 163, 164, 165, 607, 166, 167, 168, 169, 170, 171,
933 172, 173, 174, 175, 176, 177, 178, 179, 0, 0,
934 0, 541, 163, 164, 165, 633, 166, 167, 168, 169,
935 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
936 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
937 177, 178, 179, 168, 169, 170, 171, 172, 173, 174,
938 175, 176, 177, 178, 179, 170, 171, 172, 173, 174,
939 175, 176, 177, 178, 179
942 static const short yycheck[] = { 40,
943 41, 2, 3, 9, 10, 11, 20, 53, 2, 3,
944 2, 3, 51, 121, 22, 2, 3, 113, 74, 75,
945 212, 120, 102, 231, 80, 154, 116, 28, 59, 237,
946 86, 45, 22, 20, 28, 22, 28, 233, 219, 53,
947 96, 28, 21, 22, 194, 332, 184, 414, 117, 65,
948 190, 41, 286, 65, 107, 551, 62, 1, 45, 1,
949 9, 1, 3, 362, 51, 0, 53, 3, 10, 3,
950 76, 112, 59, 65, 631, 65, 38, 25, 38, 3,
951 4, 0, 492, 83, 38, 38, 3, 4, 59, 30,
952 104, 470, 28, 83, 108, 126, 30, 103, 377, 189,
953 48, 380, 210, 117, 661, 3, 4, 603, 56, 50,
954 489, 77, 102, 59, 76, 81, 50, 104, 59, 59,
955 107, 108, 76, 76, 220, 59, 60, 76, 144, 625,
956 117, 137, 144, 543, 630, 231, 632, 59, 82, 126,
957 82, 237, 292, 283, 185, 641, 5, 243, 7, 245,
958 191, 438, 144, 143, 144, 454, 225, 295, 82, 159,
959 229, 161, 141, 194, 143, 82, 30, 577, 76, 159,
960 580, 161, 120, 81, 408, 228, 182, 183, 674, 3,
961 4, 27, 77, 131, 82, 145, 81, 147, 77, 77,
962 3, 4, 81, 234, 7, 59, 60, 484, 608, 255,
963 567, 3, 4, 3, 4, 7, 30, 388, 59, 60,
964 50, 225, 30, 59, 60, 229, 30, 30, 3, 59,
965 60, 262, 7, 59, 38, 76, 50, 214, 30, 76,
966 640, 3, 4, 239, 81, 59, 60, 50, 225, 3,
967 369, 228, 229, 7, 82, 30, 59, 60, 50, 290,
968 50, 82, 433, 27, 82, 436, 30, 59, 396, 455,
969 400, 292, 36, 3, 4, 50, 30, 1, 418, 78,
970 4, 30, 6, 7, 59, 60, 224, 78, 12, 13,
971 14, 76, 362, 363, 76, 572, 50, 383, 294, 81,
972 30, 81, 388, 301, 28, 59, 9, 31, 38, 286,
973 59, 60, 401, 77, 3, 4, 314, 81, 7, 399,
974 50, 301, 59, 453, 301, 405, 7, 467, 76, 59,
975 460, 300, 301, 1, 314, 76, 4, 5, 6, 7,
976 81, 30, 10, 77, 12, 13, 14, 81, 434, 138,
977 436, 59, 60, 77, 78, 384, 76, 146, 362, 363,
978 28, 50, 77, 36, 59, 60, 81, 486, 76, 50,
979 59, 1, 77, 78, 4, 5, 6, 7, 59, 60,
980 416, 76, 12, 13, 14, 362, 363, 81, 76, 366,
981 509, 387, 77, 81, 374, 77, 400, 418, 28, 81,
982 76, 5, 6, 7, 373, 374, 76, 384, 12, 13,
983 14, 77, 416, 82, 82, 81, 76, 497, 4, 5,
984 6, 7, 620, 400, 622, 456, 12, 13, 14, 54,
985 55, 408, 57, 58, 59, 60, 77, 414, 77, 416,
986 81, 77, 28, 232, 30, 81, 467, 443, 38, 453,
987 454, 4, 82, 6, 7, 486, 460, 59, 60, 12,
988 13, 14, 59, 401, 4, 5, 6, 7, 1, 83,
989 3, 4, 12, 13, 14, 28, 453, 454, 509, 27,
990 476, 59, 60, 460, 9, 604, 668, 78, 28, 520,
991 486, 77, 538, 77, 676, 486, 78, 50, 77, 78,
992 598, 36, 486, 78, 486, 78, 59, 60, 76, 486,
993 59, 60, 76, 509, 50, 51, 52, 76, 549, 77,
994 78, 552, 553, 90, 91, 521, 38, 59, 60, 560,
995 528, 650, 651, 569, 620, 76, 622, 77, 567, 328,
996 83, 545, 3, 4, 575, 334, 335, 538, 528, 83,
997 76, 528, 76, 584, 538, 76, 538, 36, 527, 528,
998 83, 538, 78, 81, 595, 569, 158, 32, 545, 30,
999 38, 163, 164, 604, 83, 76, 168, 169, 170, 171,
1000 172, 173, 174, 175, 176, 177, 178, 179, 3, 50,
1001 567, 77, 569, 382, 78, 78, 38, 38, 59, 1,
1002 631, 78, 4, 5, 6, 7, 81, 78, 604, 36,
1003 12, 13, 14, 402, 403, 404, 83, 406, 407, 78,
1004 38, 3, 4, 59, 655, 27, 28, 59, 30, 59,
1005 661, 38, 77, 77, 36, 7, 16, 38, 1, 77,
1006 429, 4, 5, 6, 7, 36, 238, 10, 30, 12,
1007 13, 14, 4, 77, 6, 7, 78, 59, 60, 59,
1008 12, 13, 14, 6, 7, 28, 77, 30, 50, 12,
1009 13, 14, 264, 265, 77, 77, 28, 59, 59, 81,
1010 82, 76, 1, 472, 3, 4, 5, 6, 7, 8,
1011 9, 17, 11, 12, 13, 14, 15, 76, 17, 18,
1012 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
1013 29, 30, 31, 76, 33, 34, 77, 506, 77, 76,
1014 36, 40, 76, 9, 43, 77, 78, 77, 77, 48,
1015 49, 50, 77, 81, 59, 54, 55, 77, 76, 76,
1016 59, 77, 1, 77, 0, 4, 5, 6, 7, 0,
1017 295, 552, 344, 12, 13, 14, 220, 434, 77, 78,
1018 79, 80, 538, 82, 55, 417, 197, 294, 27, 28,
1019 424, 30, 1, 144, 3, 4, 245, 36, 241, 8,
1020 9, 137, 11, 383, 376, 239, 15, 434, 17, 18,
1021 19, 20, 21, 22, 23, 24, 25, 26, 27, 391,
1022 29, 389, 31, 436, 33, 34, 604, 4, 5, 6,
1023 7, 40, 656, 658, 43, 12, 13, 14, 77, 48,
1024 49, 50, 81, 82, 366, 54, 55, 604, -1, 289,
1025 59, 28, 424, 30, 1, -1, 428, 4, -1, 6,
1026 7, -1, -1, -1, -1, 12, 13, 14, 77, 78,
1027 79, 80, 444, 82, 3, 4, 5, 6, 7, 451,
1028 1, 28, 3, 4, 31, 6, 7, 8, 9, -1,
1029 11, 12, 13, 14, 4, 5, 6, 7, 470, -1,
1030 77, 473, 12, 13, 14, -1, -1, 28, 29, -1,
1031 31, -1, 33, 34, -1, -1, -1, 489, 28, 40,
1032 492, -1, 43, -1, -1, -1, -1, 48, 49, 50,
1033 -1, -1, -1, 54, 55, -1, -1, 1, 59, 3,
1034 4, 5, 6, 7, 516, -1, 10, -1, 12, 13,
1035 14, 54, 55, -1, 57, 58, 59, 60, 79, 80,
1036 -1, 82, -1, -1, 28, -1, 30, -1, 540, -1,
1037 -1, 543, -1, 76, 1, -1, 3, 4, 5, 6,
1038 7, 8, 9, -1, 11, 12, 13, 14, 15, -1,
1039 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
1040 27, 28, 29, 30, 31, 577, 33, 34, 580, -1,
1041 -1, 27, 76, 40, 30, -1, 43, -1, 590, -1,
1042 36, 48, 49, 50, -1, -1, -1, 54, 55, -1,
1043 -1, -1, 59, -1, -1, -1, 608, 48, 49, 50,
1044 51, 52, -1, 59, 60, -1, -1, -1, -1, -1,
1045 77, -1, 79, 80, -1, 82, 1, -1, 3, 4,
1046 -1, 77, -1, 8, 9, 81, 11, -1, 640, -1,
1047 15, -1, 17, 18, 19, 20, 21, 22, 23, 24,
1048 25, 26, 27, -1, 29, -1, 31, -1, 33, 34,
1049 -1, 4, 5, 6, 7, 40, -1, 10, 43, 12,
1050 13, 14, -1, 48, 49, 50, -1, -1, -1, 54,
1051 55, -1, -1, -1, 59, 28, -1, 30, -1, -1,
1052 -1, 4, 5, 6, 7, -1, -1, -1, -1, 12,
1053 13, 14, 77, -1, 79, 80, 1, 82, 3, 4,
1054 -1, -1, -1, 8, 9, 28, 11, 30, -1, -1,
1055 15, -1, 17, 18, 19, 20, 21, 22, 23, 24,
1056 25, 26, 27, -1, 29, -1, 31, -1, 33, 34,
1057 -1, -1, 5, 6, 7, 40, -1, -1, 43, 12,
1058 13, 14, -1, 48, 49, 50, -1, -1, -1, 54,
1059 55, -1, -1, 1, 59, 3, 4, 30, -1, -1,
1060 8, 9, -1, 11, 45, 46, 47, 48, 49, 50,
1061 51, 52, 77, -1, 79, 80, -1, 82, -1, -1,
1062 -1, 29, -1, 31, -1, 33, 34, -1, -1, -1,
1063 -1, -1, 40, -1, -1, 43, -1, -1, -1, -1,
1064 48, 49, 50, -1, -1, -1, 54, 55, -1, -1,
1065 58, 59, 60, 1, -1, 3, 4, -1, -1, -1,
1066 8, 9, -1, 11, -1, -1, -1, -1, -1, -1,
1067 78, 79, 80, -1, 82, -1, -1, -1, -1, -1,
1068 -1, 29, -1, 31, -1, 33, 34, -1, -1, -1,
1069 -1, -1, 40, -1, -1, 43, -1, -1, -1, -1,
1070 48, 49, 50, -1, -1, -1, 54, 55, -1, -1,
1071 58, 59, 60, 1, -1, 3, 4, -1, -1, -1,
1072 8, 9, -1, 11, -1, -1, -1, -1, -1, -1,
1073 78, 79, 80, -1, 82, -1, -1, -1, -1, -1,
1074 -1, 29, -1, 31, -1, 33, 34, -1, -1, -1,
1075 -1, -1, 40, -1, -1, 43, -1, -1, -1, -1,
1076 48, 49, 50, -1, -1, -1, 54, 55, -1, -1,
1077 58, 59, 60, 1, -1, 3, -1, -1, -1, -1,
1078 8, 9, -1, 11, 1, -1, -1, 4, 5, 6,
1079 7, 79, 80, -1, 82, 12, 13, 14, -1, -1,
1080 -1, 29, -1, 31, -1, 33, 34, -1, -1, -1,
1081 27, 28, 40, 30, -1, 43, -1, -1, -1, 36,
1082 48, 49, 50, -1, -1, -1, 54, 55, -1, -1,
1083 -1, 59, 46, 47, 48, 49, 50, 51, 52, -1,
1084 3, -1, 59, 60, -1, 8, 9, -1, 11, -1,
1085 -1, 79, 80, 3, 82, -1, -1, -1, 8, 9,
1086 77, 11, -1, -1, 81, 82, 29, -1, 31, -1,
1087 33, 34, -1, -1, -1, -1, -1, 40, -1, 29,
1088 43, 31, -1, 33, 34, 48, 49, 50, -1, -1,
1089 40, 54, 55, 43, -1, -1, 59, -1, 48, 49,
1090 50, -1, -1, -1, 54, 55, 3, -1, -1, 59,
1091 -1, 8, 9, -1, 11, -1, 79, 80, -1, 3,
1092 83, -1, -1, -1, 8, 9, -1, 11, -1, 79,
1093 80, -1, 29, 83, 31, -1, 33, 34, -1, -1,
1094 -1, -1, -1, 40, -1, 29, 43, 31, -1, 33,
1095 34, 48, 49, 50, -1, -1, 40, 54, 55, 43,
1096 -1, -1, 59, -1, 48, 49, 50, -1, -1, -1,
1097 54, 55, 3, -1, -1, 59, -1, 8, 9, -1,
1098 11, -1, 79, 80, -1, -1, 83, -1, -1, -1,
1099 -1, -1, -1, -1, -1, 79, 80, -1, 29, 83,
1100 31, -1, 33, 34, 10, -1, -1, -1, -1, 40,
1101 -1, -1, 43, -1, -1, -1, -1, 48, 49, 50,
1102 -1, -1, -1, 54, 55, -1, -1, -1, 59, 35,
1103 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
1104 46, 47, 48, 49, 50, 51, 52, -1, 79, 80,
1105 -1, -1, 83, 3, 4, 5, 6, 7, 8, 9,
1106 -1, 11, 12, 13, 14, 15, -1, 17, 18, 19,
1107 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
1108 30, 31, -1, 33, 34, -1, -1, -1, -1, -1,
1109 40, -1, -1, 43, -1, -1, -1, -1, 48, 49,
1110 50, 30, -1, -1, 54, 55, 35, 36, 37, 59,
1111 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
1112 49, 50, 51, 52, -1, -1, -1, 77, -1, 79,
1113 80, -1, 82, 3, 4, -1, -1, -1, 8, 9,
1114 -1, 11, -1, -1, -1, 15, -1, 17, 18, 19,
1115 20, 21, 22, 23, 24, 25, 26, 27, -1, 29,
1116 -1, 31, -1, 33, 34, -1, -1, -1, -1, -1,
1117 40, -1, -1, 43, -1, -1, -1, -1, 48, 49,
1118 50, -1, -1, -1, 54, 55, -1, 3, -1, 59,
1119 -1, -1, 8, 9, -1, 11, 42, 43, 44, 45,
1120 46, 47, 48, 49, 50, 51, 52, 77, -1, 79,
1121 80, -1, 82, 29, -1, 31, -1, 33, 34, -1,
1122 -1, -1, -1, -1, 40, -1, -1, 43, -1, -1,
1123 -1, -1, 48, 49, 50, -1, -1, -1, 54, 55,
1124 -1, -1, -1, 59, 3, 4, 5, 6, 7, 8,
1125 9, -1, 11, 12, 13, 14, -1, -1, -1, -1,
1126 -1, -1, -1, 79, 80, -1, 82, -1, -1, 28,
1127 29, 30, 31, -1, 33, 34, -1, -1, -1, -1,
1128 -1, 40, -1, -1, 43, -1, -1, -1, -1, 48,
1129 49, 50, -1, -1, -1, 54, 55, -1, 3, 4,
1130 59, 6, 7, 8, 9, -1, 11, 12, 13, 14,
1131 -1, 3, -1, -1, -1, -1, 8, 9, -1, 11,
1132 79, 80, -1, 28, 29, -1, 31, -1, 33, 34,
1133 -1, -1, -1, -1, -1, 40, -1, 29, 43, 31,
1134 -1, 33, 34, 48, 49, 50, -1, -1, 40, 54,
1135 55, 43, -1, -1, 59, -1, 48, 49, 50, -1,
1136 -1, -1, 54, 55, 3, -1, -1, 59, -1, 8,
1137 9, -1, 11, -1, 79, 80, 44, 45, 46, 47,
1138 48, 49, 50, 51, 52, 77, -1, 79, 80, -1,
1139 29, 3, 31, -1, 33, 34, 8, 9, -1, 11,
1140 -1, 40, -1, -1, 43, -1, -1, -1, -1, 48,
1141 49, 50, -1, -1, -1, 54, 55, 29, 3, 31,
1142 59, 33, 34, 8, 9, -1, 11, -1, 40, -1,
1143 -1, 43, -1, -1, -1, -1, 48, 49, 50, -1,
1144 79, 80, 54, 55, 29, 3, 31, 59, 33, 34,
1145 8, 9, -1, 11, -1, 40, -1, -1, 43, -1,
1146 -1, -1, -1, 48, 49, 50, -1, 79, 80, 54,
1147 55, 29, -1, 31, 59, 33, 34, -1, -1, -1,
1148 -1, -1, 40, -1, -1, 43, -1, -1, -1, -1,
1149 48, 49, 50, -1, 79, 80, 54, 55, -1, -1,
1150 1, 59, 3, 4, 5, 6, 7, -1, -1, -1,
1151 -1, 12, 13, 14, -1, -1, -1, -1, -1, -1,
1152 -1, 79, 80, -1, -1, -1, 27, 28, -1, 30,
1153 31, 37, -1, 39, 40, 41, 42, 43, 44, 45,
1154 46, 47, 48, 49, 50, 51, 52, -1, 10, 50,
1155 -1, -1, -1, -1, -1, 35, 36, 37, 59, 39,
1156 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
1157 50, 51, 52, 35, 36, 37, 77, 39, 40, 41,
1158 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
1159 52, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1160 35, 36, 37, 83, 39, 40, 41, 42, 43, 44,
1161 45, 46, 47, 48, 49, 50, 51, 52, -1, -1,
1162 -1, 83, 35, 36, 37, 38, 39, 40, 41, 42,
1163 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
1164 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
1165 50, 51, 52, 41, 42, 43, 44, 45, 46, 47,
1166 48, 49, 50, 51, 52, 43, 44, 45, 46, 47,
1167 48, 49, 50, 51, 52
1169 /* -*-C-*- Note some compilers choke on comments on `#line' lines. */
1170 #line 3 "/usr/share/bison.simple"
1172 /* Skeleton output parser for bison,
1173 Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
1175 This program is free software; you can redistribute it and/or modify
1176 it under the terms of the GNU General Public License as published by
1177 the Free Software Foundation; either version 2, or (at your option)
1178 any later version.
1180 This program is distributed in the hope that it will be useful,
1181 but WITHOUT ANY WARRANTY; without even the implied warranty of
1182 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1183 GNU General Public License for more details.
1185 You should have received a copy of the GNU General Public License
1186 along with this program; if not, write to the Free Software
1187 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
1189 /* As a special exception, when this file is copied by Bison into a
1190 Bison output file, you may use that output file without restriction.
1191 This special exception was added by the Free Software Foundation
1192 in version 1.24 of Bison. */
1194 #ifndef alloca
1195 #ifdef __GNUC__
1196 #define alloca __builtin_alloca
1197 #else /* not GNU C. */
1198 #if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
1199 #include <alloca.h>
1200 #else /* not sparc */
1201 #if defined (MSDOS) && !defined (__TURBOC__)
1202 #include <malloc.h>
1203 #else /* not MSDOS, or __TURBOC__ */
1204 #if defined(_AIX)
1205 #include <malloc.h>
1206 #pragma alloca
1207 #else /* not MSDOS, __TURBOC__, or _AIX */
1208 #ifdef __hpux
1209 #ifdef __cplusplus
1210 extern "C" {
1211 void *alloca (unsigned int);
1213 #else /* not __cplusplus */
1214 void *alloca ();
1215 #endif /* not __cplusplus */
1216 #endif /* __hpux */
1217 #endif /* not _AIX */
1218 #endif /* not MSDOS, or __TURBOC__ */
1219 #endif /* not sparc. */
1220 #endif /* not GNU C. */
1221 #endif /* alloca not defined. */
1223 /* This is the parser code that is written into each bison parser
1224 when the %semantic_parser declaration is not specified in the grammar.
1225 It was written by Richard Stallman by simplifying the hairy parser
1226 used when %semantic_parser is specified. */
1228 /* Note: there must be only one dollar sign in this file.
1229 It is replaced by the list of actions, each action
1230 as one case of the switch. */
1232 #define yyerrok (yyerrstatus = 0)
1233 #define yyclearin (yychar = YYEMPTY)
1234 #define YYEMPTY -2
1235 #define YYEOF 0
1236 #define YYACCEPT return(0)
1237 #define YYABORT return(1)
1238 #define YYERROR goto yyerrlab1
1239 /* Like YYERROR except do call yyerror.
1240 This remains here temporarily to ease the
1241 transition to the new meaning of YYERROR, for GCC.
1242 Once GCC version 2 has supplanted version 1, this can go. */
1243 #define YYFAIL goto yyerrlab
1244 #define YYRECOVERING() (!!yyerrstatus)
1245 #define YYBACKUP(token, value) \
1246 do \
1247 if (yychar == YYEMPTY && yylen == 1) \
1248 { yychar = (token), yylval = (value); \
1249 yychar1 = YYTRANSLATE (yychar); \
1250 YYPOPSTACK; \
1251 goto yybackup; \
1253 else \
1254 { yyerror ("syntax error: cannot back up"); YYERROR; } \
1255 while (0)
1257 #define YYTERROR 1
1258 #define YYERRCODE 256
1260 #ifndef YYPURE
1261 #define YYLEX yylex()
1262 #endif
1264 #ifdef YYPURE
1265 #ifdef YYLSP_NEEDED
1266 #ifdef YYLEX_PARAM
1267 #define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM)
1268 #else
1269 #define YYLEX yylex(&yylval, &yylloc)
1270 #endif
1271 #else /* not YYLSP_NEEDED */
1272 #ifdef YYLEX_PARAM
1273 #define YYLEX yylex(&yylval, YYLEX_PARAM)
1274 #else
1275 #define YYLEX yylex(&yylval)
1276 #endif
1277 #endif /* not YYLSP_NEEDED */
1278 #endif
1280 /* If nonreentrant, generate the variables here */
1282 #ifndef YYPURE
1284 int yychar; /* the lookahead symbol */
1285 YYSTYPE yylval; /* the semantic value of the */
1286 /* lookahead symbol */
1288 #ifdef YYLSP_NEEDED
1289 YYLTYPE yylloc; /* location data for the lookahead */
1290 /* symbol */
1291 #endif
1293 int yynerrs; /* number of parse errors so far */
1294 #endif /* not YYPURE */
1296 #if YYDEBUG != 0
1297 int yydebug; /* nonzero means print parse trace */
1298 /* Since this is uninitialized, it does not stop multiple parsers
1299 from coexisting. */
1300 #endif
1302 /* YYINITDEPTH indicates the initial size of the parser's stacks */
1304 #ifndef YYINITDEPTH
1305 #define YYINITDEPTH 200
1306 #endif
1308 /* YYMAXDEPTH is the maximum size the stacks can grow to
1309 (effective only if the built-in stack extension method is used). */
1311 #if YYMAXDEPTH == 0
1312 #undef YYMAXDEPTH
1313 #endif
1315 #ifndef YYMAXDEPTH
1316 #define YYMAXDEPTH 10000
1317 #endif
1319 /* Prevent warning if -Wstrict-prototypes. */
1320 #ifdef __GNUC__
1321 int yyparse (void);
1322 #endif
1324 #if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
1325 #define __yy_memcpy(FROM,TO,COUNT) __builtin_memcpy(TO,FROM,COUNT)
1326 #else /* not GNU C or C++ */
1327 #ifndef __cplusplus
1329 /* This is the most reliable way to avoid incompatibilities
1330 in available built-in functions on various systems. */
1331 static void
1332 __yy_memcpy (from, to, count)
1333 char *from;
1334 char *to;
1335 int count;
1337 register char *f = from;
1338 register char *t = to;
1339 register int i = count;
1341 while (i-- > 0)
1342 *t++ = *f++;
1345 #else /* __cplusplus */
1347 /* This is the most reliable way to avoid incompatibilities
1348 in available built-in functions on various systems. */
1349 static void
1350 __yy_memcpy (char *from, char *to, int count)
1352 register char *f = from;
1353 register char *t = to;
1354 register int i = count;
1356 while (i-- > 0)
1357 *t++ = *f++;
1360 #endif
1361 #endif
1363 #line 192 "/usr/share/bison.simple"
1365 /* The user can define YYPARSE_PARAM as the name of an argument to be passed
1366 into yyparse. The argument should have type void *.
1367 It should actually point to an object.
1368 Grammar actions can access the variable by casting it
1369 to the proper pointer type. */
1371 #ifdef YYPARSE_PARAM
1372 #define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
1373 #else
1374 #define YYPARSE_PARAM
1375 #define YYPARSE_PARAM_DECL
1376 #endif
1379 yyparse(YYPARSE_PARAM)
1380 YYPARSE_PARAM_DECL
1382 register int yystate;
1383 register int yyn;
1384 register short *yyssp;
1385 register YYSTYPE *yyvsp;
1386 int yyerrstatus; /* number of tokens to shift before error messages enabled */
1387 int yychar1 = 0; /* lookahead token as an internal (translated) token number */
1389 short yyssa[YYINITDEPTH]; /* the state stack */
1390 YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */
1392 short *yyss = yyssa; /* refer to the stacks thru separate pointers */
1393 YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */
1395 #ifdef YYLSP_NEEDED
1396 YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */
1397 YYLTYPE *yyls = yylsa;
1398 YYLTYPE *yylsp;
1400 #define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
1401 #else
1402 #define YYPOPSTACK (yyvsp--, yyssp--)
1403 #endif
1405 int yystacksize = YYINITDEPTH;
1407 #ifdef YYPURE
1408 int yychar;
1409 YYSTYPE yylval;
1410 int yynerrs;
1411 #ifdef YYLSP_NEEDED
1412 YYLTYPE yylloc;
1413 #endif
1414 #endif
1416 YYSTYPE yyval; /* the variable used to return */
1417 /* semantic values from the action */
1418 /* routines */
1420 int yylen;
1422 #if YYDEBUG != 0
1423 if (yydebug)
1424 fprintf(stderr, "Starting parse\n");
1425 #endif
1427 yystate = 0;
1428 yyerrstatus = 0;
1429 yynerrs = 0;
1430 yychar = YYEMPTY; /* Cause a token to be read. */
1432 /* Initialize stack pointers.
1433 Waste one element of value and location stack
1434 so that they stay on the same level as the state stack.
1435 The wasted elements are never initialized. */
1437 yyssp = yyss - 1;
1438 yyvsp = yyvs;
1439 #ifdef YYLSP_NEEDED
1440 yylsp = yyls;
1441 #endif
1443 /* Push a new state, which is found in yystate . */
1444 /* In all cases, when you get here, the value and location stacks
1445 have just been pushed. so pushing a state here evens the stacks. */
1446 yynewstate:
1448 *++yyssp = yystate;
1450 if (yyssp >= yyss + yystacksize - 1)
1452 /* Give user a chance to reallocate the stack */
1453 /* Use copies of these so that the &'s don't force the real ones into memory. */
1454 YYSTYPE *yyvs1 = yyvs;
1455 short *yyss1 = yyss;
1456 #ifdef YYLSP_NEEDED
1457 YYLTYPE *yyls1 = yyls;
1458 #endif
1460 /* Get the current used size of the three stacks, in elements. */
1461 int size = yyssp - yyss + 1;
1463 #ifdef yyoverflow
1464 /* Each stack pointer address is followed by the size of
1465 the data in use in that stack, in bytes. */
1466 #ifdef YYLSP_NEEDED
1467 /* This used to be a conditional around just the two extra args,
1468 but that might be undefined if yyoverflow is a macro. */
1469 yyoverflow("parser stack overflow",
1470 &yyss1, size * sizeof (*yyssp),
1471 &yyvs1, size * sizeof (*yyvsp),
1472 &yyls1, size * sizeof (*yylsp),
1473 &yystacksize);
1474 #else
1475 yyoverflow("parser stack overflow",
1476 &yyss1, size * sizeof (*yyssp),
1477 &yyvs1, size * sizeof (*yyvsp),
1478 &yystacksize);
1479 #endif
1481 yyss = yyss1; yyvs = yyvs1;
1482 #ifdef YYLSP_NEEDED
1483 yyls = yyls1;
1484 #endif
1485 #else /* no yyoverflow */
1486 /* Extend the stack our own way. */
1487 if (yystacksize >= YYMAXDEPTH)
1489 yyerror("parser stack overflow");
1490 return 2;
1492 yystacksize *= 2;
1493 if (yystacksize > YYMAXDEPTH)
1494 yystacksize = YYMAXDEPTH;
1495 yyss = (short *) alloca (yystacksize * sizeof (*yyssp));
1496 __yy_memcpy ((char *)yyss1, (char *)yyss, size * sizeof (*yyssp));
1497 yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp));
1498 __yy_memcpy ((char *)yyvs1, (char *)yyvs, size * sizeof (*yyvsp));
1499 #ifdef YYLSP_NEEDED
1500 yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp));
1501 __yy_memcpy ((char *)yyls1, (char *)yyls, size * sizeof (*yylsp));
1502 #endif
1503 #endif /* no yyoverflow */
1505 yyssp = yyss + size - 1;
1506 yyvsp = yyvs + size - 1;
1507 #ifdef YYLSP_NEEDED
1508 yylsp = yyls + size - 1;
1509 #endif
1511 #if YYDEBUG != 0
1512 if (yydebug)
1513 fprintf(stderr, "Stack size increased to %d\n", yystacksize);
1514 #endif
1516 if (yyssp >= yyss + yystacksize - 1)
1517 YYABORT;
1520 #if YYDEBUG != 0
1521 if (yydebug)
1522 fprintf(stderr, "Entering state %d\n", yystate);
1523 #endif
1525 goto yybackup;
1526 yybackup:
1528 /* Do appropriate processing given the current state. */
1529 /* Read a lookahead token if we need one and don't already have one. */
1530 /* yyresume: */
1532 /* First try to decide what to do without reference to lookahead token. */
1534 yyn = yypact[yystate];
1535 if (yyn == YYFLAG)
1536 goto yydefault;
1538 /* Not known => get a lookahead token if don't already have one. */
1540 /* yychar is either YYEMPTY or YYEOF
1541 or a valid token in external form. */
1543 if (yychar == YYEMPTY)
1545 #if YYDEBUG != 0
1546 if (yydebug)
1547 fprintf(stderr, "Reading a token: ");
1548 #endif
1549 yychar = YYLEX;
1552 /* Convert token to internal form (in yychar1) for indexing tables with */
1554 if (yychar <= 0) /* This means end of input. */
1556 yychar1 = 0;
1557 yychar = YYEOF; /* Don't call YYLEX any more */
1559 #if YYDEBUG != 0
1560 if (yydebug)
1561 fprintf(stderr, "Now at end of input.\n");
1562 #endif
1564 else
1566 yychar1 = YYTRANSLATE(yychar);
1568 #if YYDEBUG != 0
1569 if (yydebug)
1571 fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
1572 /* Give the individual parser a way to print the precise meaning
1573 of a token, for further debugging info. */
1574 #ifdef YYPRINT
1575 YYPRINT (stderr, yychar, yylval);
1576 #endif
1577 fprintf (stderr, ")\n");
1579 #endif
1582 yyn += yychar1;
1583 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
1584 goto yydefault;
1586 yyn = yytable[yyn];
1588 /* yyn is what to do for this token type in this state.
1589 Negative => reduce, -yyn is rule number.
1590 Positive => shift, yyn is new state.
1591 New state is final state => don't bother to shift,
1592 just return success.
1593 0, or most negative number => error. */
1595 if (yyn < 0)
1597 if (yyn == YYFLAG)
1598 goto yyerrlab;
1599 yyn = -yyn;
1600 goto yyreduce;
1602 else if (yyn == 0)
1603 goto yyerrlab;
1605 if (yyn == YYFINAL)
1606 YYACCEPT;
1608 /* Shift the lookahead token. */
1610 #if YYDEBUG != 0
1611 if (yydebug)
1612 fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
1613 #endif
1615 /* Discard the token being shifted unless it is eof. */
1616 if (yychar != YYEOF)
1617 yychar = YYEMPTY;
1619 *++yyvsp = yylval;
1620 #ifdef YYLSP_NEEDED
1621 *++yylsp = yylloc;
1622 #endif
1624 /* count tokens shifted since error; after three, turn off error status. */
1625 if (yyerrstatus) yyerrstatus--;
1627 yystate = yyn;
1628 goto yynewstate;
1630 /* Do the default action for the current state. */
1631 yydefault:
1633 yyn = yydefact[yystate];
1634 if (yyn == 0)
1635 goto yyerrlab;
1637 /* Do a reduction. yyn is the number of a rule to reduce with. */
1638 yyreduce:
1639 yylen = yyr2[yyn];
1640 if (yylen > 0)
1641 yyval = yyvsp[1-yylen]; /* implement default value of the action */
1643 #if YYDEBUG != 0
1644 if (yydebug)
1646 int i;
1648 fprintf (stderr, "Reducing via rule %d (line %d), ",
1649 yyn, yyrline[yyn]);
1651 /* Print the symbols being reduced, and their result. */
1652 for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
1653 fprintf (stderr, "%s ", yytname[yyrhs[i]]);
1654 fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
1656 #endif
1659 switch (yyn) {
1661 case 1:
1662 #line 237 "c-parse.y"
1663 { if (pedantic)
1664 pedwarn ("ANSI C forbids an empty source file");
1665 finish_file ();
1667 break;}
1668 case 2:
1669 #line 242 "c-parse.y"
1671 /* In case there were missing closebraces,
1672 get us back to the global binding level. */
1673 while (! global_bindings_p ())
1674 poplevel (0, 0, 0);
1675 finish_file ();
1677 break;}
1678 case 3:
1679 #line 256 "c-parse.y"
1680 {yyval.ttype = NULL_TREE; ;
1681 break;}
1682 case 5:
1683 #line 257 "c-parse.y"
1684 {yyval.ttype = NULL_TREE; ;
1685 break;}
1686 case 9:
1687 #line 264 "c-parse.y"
1688 { STRIP_NOPS (yyvsp[-2].ttype);
1689 if ((TREE_CODE (yyvsp[-2].ttype) == ADDR_EXPR
1690 && TREE_CODE (TREE_OPERAND (yyvsp[-2].ttype, 0)) == STRING_CST)
1691 || TREE_CODE (yyvsp[-2].ttype) == STRING_CST)
1692 assemble_asm (yyvsp[-2].ttype);
1693 else
1694 error ("argument of `asm' is not a constant string"); ;
1695 break;}
1696 case 10:
1697 #line 272 "c-parse.y"
1698 { pedantic = yyvsp[-1].itype; ;
1699 break;}
1700 case 11:
1701 #line 277 "c-parse.y"
1702 { if (pedantic)
1703 error ("ANSI C forbids data definition with no type or storage class");
1704 else if (!flag_traditional)
1705 warning ("data definition has no type or storage class");
1707 current_declspecs = TREE_VALUE (declspec_stack);
1708 prefix_attributes = TREE_PURPOSE (declspec_stack);
1709 declspec_stack = TREE_CHAIN (declspec_stack);
1710 resume_momentary (yyvsp[-2].itype); ;
1711 break;}
1712 case 12:
1713 #line 287 "c-parse.y"
1714 { current_declspecs = TREE_VALUE (declspec_stack);
1715 prefix_attributes = TREE_PURPOSE (declspec_stack);
1716 declspec_stack = TREE_CHAIN (declspec_stack);
1717 resume_momentary (yyvsp[-2].itype); ;
1718 break;}
1719 case 13:
1720 #line 292 "c-parse.y"
1721 { current_declspecs = TREE_VALUE (declspec_stack);
1722 prefix_attributes = TREE_PURPOSE (declspec_stack);
1723 declspec_stack = TREE_CHAIN (declspec_stack);
1724 resume_momentary (yyvsp[-2].itype); ;
1725 break;}
1726 case 14:
1727 #line 297 "c-parse.y"
1728 { pedwarn ("empty declaration"); ;
1729 break;}
1730 case 15:
1731 #line 299 "c-parse.y"
1732 { shadow_tag (yyvsp[-1].ttype); ;
1733 break;}
1734 case 18:
1735 #line 303 "c-parse.y"
1736 { if (pedantic)
1737 pedwarn ("ANSI C does not allow extra `;' outside of a function"); ;
1738 break;}
1739 case 19:
1740 #line 309 "c-parse.y"
1741 { if (! start_function (current_declspecs, yyvsp[0].ttype,
1742 prefix_attributes, NULL_TREE, 0))
1743 YYERROR1;
1744 reinit_parse_for_function (); ;
1745 break;}
1746 case 20:
1747 #line 314 "c-parse.y"
1748 { store_parm_decls (); ;
1749 break;}
1750 case 21:
1751 #line 316 "c-parse.y"
1752 { finish_function (0);
1753 current_declspecs = TREE_VALUE (declspec_stack);
1754 prefix_attributes = TREE_PURPOSE (declspec_stack);
1755 declspec_stack = TREE_CHAIN (declspec_stack);
1756 resume_momentary (yyvsp[-5].itype); ;
1757 break;}
1758 case 22:
1759 #line 322 "c-parse.y"
1760 { current_declspecs = TREE_VALUE (declspec_stack);
1761 prefix_attributes = TREE_PURPOSE (declspec_stack);
1762 declspec_stack = TREE_CHAIN (declspec_stack);
1763 resume_momentary (yyvsp[-2].itype); ;
1764 break;}
1765 case 23:
1766 #line 327 "c-parse.y"
1767 { if (! start_function (current_declspecs, yyvsp[0].ttype,
1768 prefix_attributes, NULL_TREE, 0))
1769 YYERROR1;
1770 reinit_parse_for_function (); ;
1771 break;}
1772 case 24:
1773 #line 332 "c-parse.y"
1774 { store_parm_decls (); ;
1775 break;}
1776 case 25:
1777 #line 334 "c-parse.y"
1778 { finish_function (0);
1779 current_declspecs = TREE_VALUE (declspec_stack);
1780 prefix_attributes = TREE_PURPOSE (declspec_stack);
1781 declspec_stack = TREE_CHAIN (declspec_stack);
1782 resume_momentary (yyvsp[-5].itype); ;
1783 break;}
1784 case 26:
1785 #line 340 "c-parse.y"
1786 { current_declspecs = TREE_VALUE (declspec_stack);
1787 prefix_attributes = TREE_PURPOSE (declspec_stack);
1788 declspec_stack = TREE_CHAIN (declspec_stack);
1789 resume_momentary (yyvsp[-2].itype); ;
1790 break;}
1791 case 27:
1792 #line 345 "c-parse.y"
1793 { if (! start_function (NULL_TREE, yyvsp[0].ttype,
1794 prefix_attributes, NULL_TREE, 0))
1795 YYERROR1;
1796 reinit_parse_for_function (); ;
1797 break;}
1798 case 28:
1799 #line 350 "c-parse.y"
1800 { store_parm_decls (); ;
1801 break;}
1802 case 29:
1803 #line 352 "c-parse.y"
1804 { finish_function (0);
1805 current_declspecs = TREE_VALUE (declspec_stack);
1806 prefix_attributes = TREE_PURPOSE (declspec_stack);
1807 declspec_stack = TREE_CHAIN (declspec_stack);
1808 resume_momentary (yyvsp[-5].itype); ;
1809 break;}
1810 case 30:
1811 #line 358 "c-parse.y"
1812 { current_declspecs = TREE_VALUE (declspec_stack);
1813 prefix_attributes = TREE_PURPOSE (declspec_stack);
1814 declspec_stack = TREE_CHAIN (declspec_stack);
1815 resume_momentary (yyvsp[-2].itype); ;
1816 break;}
1817 case 33:
1818 #line 370 "c-parse.y"
1819 { yyval.code = ADDR_EXPR; ;
1820 break;}
1821 case 34:
1822 #line 372 "c-parse.y"
1823 { yyval.code = NEGATE_EXPR; ;
1824 break;}
1825 case 35:
1826 #line 374 "c-parse.y"
1827 { yyval.code = CONVERT_EXPR; ;
1828 break;}
1829 case 36:
1830 #line 376 "c-parse.y"
1831 { yyval.code = PREINCREMENT_EXPR; ;
1832 break;}
1833 case 37:
1834 #line 378 "c-parse.y"
1835 { yyval.code = PREDECREMENT_EXPR; ;
1836 break;}
1837 case 38:
1838 #line 380 "c-parse.y"
1839 { yyval.code = BIT_NOT_EXPR; ;
1840 break;}
1841 case 39:
1842 #line 382 "c-parse.y"
1843 { yyval.code = TRUTH_NOT_EXPR; ;
1844 break;}
1845 case 40:
1846 #line 386 "c-parse.y"
1847 { yyval.ttype = build_compound_expr (yyvsp[0].ttype); ;
1848 break;}
1849 case 41:
1850 #line 391 "c-parse.y"
1851 { yyval.ttype = NULL_TREE; ;
1852 break;}
1853 case 43:
1854 #line 397 "c-parse.y"
1855 { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
1856 break;}
1857 case 44:
1858 #line 399 "c-parse.y"
1859 { chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
1860 break;}
1861 case 46:
1862 #line 405 "c-parse.y"
1863 { yyval.ttype = build_indirect_ref (yyvsp[0].ttype, "unary *"); ;
1864 break;}
1865 case 47:
1866 #line 408 "c-parse.y"
1867 { yyval.ttype = yyvsp[0].ttype;
1868 pedantic = yyvsp[-1].itype; ;
1869 break;}
1870 case 48:
1871 #line 411 "c-parse.y"
1872 { yyval.ttype = build_unary_op (yyvsp[-1].code, yyvsp[0].ttype, 0);
1873 overflow_warning (yyval.ttype); ;
1874 break;}
1875 case 49:
1876 #line 415 "c-parse.y"
1877 { tree label = lookup_label (yyvsp[0].ttype);
1878 if (pedantic)
1879 pedwarn ("ANSI C forbids `&&'");
1880 if (label == 0)
1881 yyval.ttype = null_pointer_node;
1882 else
1884 TREE_USED (label) = 1;
1885 yyval.ttype = build1 (ADDR_EXPR, ptr_type_node, label);
1886 TREE_CONSTANT (yyval.ttype) = 1;
1889 break;}
1890 case 50:
1891 #line 443 "c-parse.y"
1892 { skip_evaluation--;
1893 if (TREE_CODE (yyvsp[0].ttype) == COMPONENT_REF
1894 && DECL_C_BIT_FIELD (TREE_OPERAND (yyvsp[0].ttype, 1)))
1895 error ("`sizeof' applied to a bit-field");
1896 yyval.ttype = c_sizeof (TREE_TYPE (yyvsp[0].ttype)); ;
1897 break;}
1898 case 51:
1899 #line 449 "c-parse.y"
1900 { skip_evaluation--;
1901 yyval.ttype = c_sizeof (groktypename (yyvsp[-1].ttype)); ;
1902 break;}
1903 case 52:
1904 #line 452 "c-parse.y"
1905 { skip_evaluation--;
1906 yyval.ttype = c_alignof_expr (yyvsp[0].ttype); ;
1907 break;}
1908 case 53:
1909 #line 455 "c-parse.y"
1910 { skip_evaluation--;
1911 yyval.ttype = c_alignof (groktypename (yyvsp[-1].ttype)); ;
1912 break;}
1913 case 54:
1914 #line 458 "c-parse.y"
1915 { yyval.ttype = build_unary_op (REALPART_EXPR, yyvsp[0].ttype, 0); ;
1916 break;}
1917 case 55:
1918 #line 460 "c-parse.y"
1919 { yyval.ttype = build_unary_op (IMAGPART_EXPR, yyvsp[0].ttype, 0); ;
1920 break;}
1921 case 56:
1922 #line 464 "c-parse.y"
1923 { skip_evaluation++; ;
1924 break;}
1925 case 57:
1926 #line 468 "c-parse.y"
1927 { skip_evaluation++; ;
1928 break;}
1929 case 59:
1930 #line 474 "c-parse.y"
1931 { tree type = groktypename (yyvsp[-2].ttype);
1932 yyval.ttype = build_c_cast (type, yyvsp[0].ttype); ;
1933 break;}
1934 case 60:
1935 #line 477 "c-parse.y"
1936 { start_init (NULL_TREE, NULL, 0);
1937 yyvsp[-2].ttype = groktypename (yyvsp[-2].ttype);
1938 really_start_incremental_init (yyvsp[-2].ttype); ;
1939 break;}
1940 case 61:
1941 #line 481 "c-parse.y"
1942 { char *name;
1943 tree result = pop_init_level (0);
1944 tree type = yyvsp[-5].ttype;
1945 finish_init ();
1947 if (pedantic)
1948 pedwarn ("ANSI C forbids constructor expressions");
1949 if (TYPE_NAME (type) != 0)
1951 if (TREE_CODE (TYPE_NAME (type)) == IDENTIFIER_NODE)
1952 name = IDENTIFIER_POINTER (TYPE_NAME (type));
1953 else
1954 name = IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (type)));
1956 else
1957 name = "";
1958 yyval.ttype = result;
1959 if (TREE_CODE (type) == ARRAY_TYPE && TYPE_SIZE (type) == 0)
1961 int failure = complete_array_type (type, yyval.ttype, 1);
1962 if (failure)
1963 abort ();
1966 break;}
1967 case 63:
1968 #line 510 "c-parse.y"
1969 { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
1970 break;}
1971 case 64:
1972 #line 512 "c-parse.y"
1973 { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
1974 break;}
1975 case 65:
1976 #line 514 "c-parse.y"
1977 { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
1978 break;}
1979 case 66:
1980 #line 516 "c-parse.y"
1981 { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
1982 break;}
1983 case 67:
1984 #line 518 "c-parse.y"
1985 { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
1986 break;}
1987 case 68:
1988 #line 520 "c-parse.y"
1989 { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
1990 break;}
1991 case 69:
1992 #line 522 "c-parse.y"
1993 { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
1994 break;}
1995 case 70:
1996 #line 524 "c-parse.y"
1997 { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
1998 break;}
1999 case 71:
2000 #line 526 "c-parse.y"
2001 { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
2002 break;}
2003 case 72:
2004 #line 528 "c-parse.y"
2005 { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
2006 break;}
2007 case 73:
2008 #line 530 "c-parse.y"
2009 { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
2010 break;}
2011 case 74:
2012 #line 532 "c-parse.y"
2013 { yyval.ttype = parser_build_binary_op (yyvsp[-1].code, yyvsp[-2].ttype, yyvsp[0].ttype); ;
2014 break;}
2015 case 75:
2016 #line 534 "c-parse.y"
2017 { yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[-1].ttype));
2018 skip_evaluation += yyvsp[-1].ttype == boolean_false_node; ;
2019 break;}
2020 case 76:
2021 #line 537 "c-parse.y"
2022 { skip_evaluation -= yyvsp[-3].ttype == boolean_false_node;
2023 yyval.ttype = parser_build_binary_op (TRUTH_ANDIF_EXPR, yyvsp[-3].ttype, yyvsp[0].ttype); ;
2024 break;}
2025 case 77:
2026 #line 540 "c-parse.y"
2027 { yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[-1].ttype));
2028 skip_evaluation += yyvsp[-1].ttype == boolean_true_node; ;
2029 break;}
2030 case 78:
2031 #line 543 "c-parse.y"
2032 { skip_evaluation -= yyvsp[-3].ttype == boolean_true_node;
2033 yyval.ttype = parser_build_binary_op (TRUTH_ORIF_EXPR, yyvsp[-3].ttype, yyvsp[0].ttype); ;
2034 break;}
2035 case 79:
2036 #line 546 "c-parse.y"
2037 { yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[-1].ttype));
2038 skip_evaluation += yyvsp[-1].ttype == boolean_false_node; ;
2039 break;}
2040 case 80:
2041 #line 549 "c-parse.y"
2042 { skip_evaluation += ((yyvsp[-4].ttype == boolean_true_node)
2043 - (yyvsp[-4].ttype == boolean_false_node)); ;
2044 break;}
2045 case 81:
2046 #line 552 "c-parse.y"
2047 { skip_evaluation -= yyvsp[-6].ttype == boolean_true_node;
2048 yyval.ttype = build_conditional_expr (yyvsp[-6].ttype, yyvsp[-3].ttype, yyvsp[0].ttype); ;
2049 break;}
2050 case 82:
2051 #line 555 "c-parse.y"
2052 { if (pedantic)
2053 pedwarn ("ANSI C forbids omitting the middle term of a ?: expression");
2054 /* Make sure first operand is calculated only once. */
2055 yyvsp[0].ttype = save_expr (yyvsp[-1].ttype);
2056 yyvsp[-1].ttype = truthvalue_conversion (default_conversion (yyvsp[0].ttype));
2057 skip_evaluation += yyvsp[-1].ttype == boolean_true_node; ;
2058 break;}
2059 case 83:
2060 #line 562 "c-parse.y"
2061 { skip_evaluation -= yyvsp[-4].ttype == boolean_true_node;
2062 yyval.ttype = build_conditional_expr (yyvsp[-4].ttype, yyvsp[-3].ttype, yyvsp[0].ttype); ;
2063 break;}
2064 case 84:
2065 #line 565 "c-parse.y"
2066 { yyval.ttype = build_modify_expr (yyvsp[-2].ttype, NOP_EXPR, yyvsp[0].ttype);
2067 C_SET_EXP_ORIGINAL_CODE (yyval.ttype, MODIFY_EXPR); ;
2068 break;}
2069 case 85:
2070 #line 568 "c-parse.y"
2071 { yyval.ttype = build_modify_expr (yyvsp[-2].ttype, yyvsp[-1].code, yyvsp[0].ttype);
2072 /* This inhibits warnings in truthvalue_conversion. */
2073 C_SET_EXP_ORIGINAL_CODE (yyval.ttype, ERROR_MARK); ;
2074 break;}
2075 case 86:
2076 #line 575 "c-parse.y"
2078 yyval.ttype = lastiddecl;
2079 if (!yyval.ttype || yyval.ttype == error_mark_node)
2081 if (yychar == YYEMPTY)
2082 yychar = YYLEX;
2083 if (yychar == '(')
2086 /* Ordinary implicit function declaration. */
2087 yyval.ttype = implicitly_declare (yyvsp[0].ttype);
2088 assemble_external (yyval.ttype);
2089 TREE_USED (yyval.ttype) = 1;
2092 else if (current_function_decl == 0)
2094 error ("`%s' undeclared here (not in a function)",
2095 IDENTIFIER_POINTER (yyvsp[0].ttype));
2096 yyval.ttype = error_mark_node;
2098 else
2101 if (IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype) != error_mark_node
2102 || IDENTIFIER_ERROR_LOCUS (yyvsp[0].ttype) != current_function_decl)
2104 error ("`%s' undeclared (first use in this function)",
2105 IDENTIFIER_POINTER (yyvsp[0].ttype));
2107 if (! undeclared_variable_notice)
2109 error ("(Each undeclared identifier is reported only once");
2110 error ("for each function it appears in.)");
2111 undeclared_variable_notice = 1;
2114 yyval.ttype = error_mark_node;
2115 /* Prevent repeated error messages. */
2116 IDENTIFIER_GLOBAL_VALUE (yyvsp[0].ttype) = error_mark_node;
2117 IDENTIFIER_ERROR_LOCUS (yyvsp[0].ttype) = current_function_decl;
2121 else if (TREE_TYPE (yyval.ttype) == error_mark_node)
2122 yyval.ttype = error_mark_node;
2123 else if (C_DECL_ANTICIPATED (yyval.ttype))
2125 /* The first time we see a build-in function used,
2126 if it has not been declared. */
2127 C_DECL_ANTICIPATED (yyval.ttype) = 0;
2128 if (yychar == YYEMPTY)
2129 yychar = YYLEX;
2130 if (yychar == '(')
2132 /* Omit the implicit declaration we
2133 would ordinarily do, so we don't lose
2134 the actual built in type.
2135 But print a diagnostic for the mismatch. */
2136 if (TREE_CODE (yyval.ttype) != FUNCTION_DECL)
2137 error ("`%s' implicitly declared as function",
2138 IDENTIFIER_POINTER (DECL_NAME (yyval.ttype)));
2139 else if ((TYPE_MODE (TREE_TYPE (TREE_TYPE (yyval.ttype)))
2140 != TYPE_MODE (integer_type_node))
2141 && (TREE_TYPE (TREE_TYPE (yyval.ttype))
2142 != void_type_node))
2143 pedwarn ("type mismatch in implicit declaration for built-in function `%s'",
2144 IDENTIFIER_POINTER (DECL_NAME (yyval.ttype)));
2145 /* If it really returns void, change that to int. */
2146 if (TREE_TYPE (TREE_TYPE (yyval.ttype)) == void_type_node)
2147 TREE_TYPE (yyval.ttype)
2148 = build_function_type (integer_type_node,
2149 TYPE_ARG_TYPES (TREE_TYPE (yyval.ttype)));
2151 else
2152 pedwarn ("built-in function `%s' used without declaration",
2153 IDENTIFIER_POINTER (DECL_NAME (yyval.ttype)));
2155 /* Do what we would ordinarily do when a fn is used. */
2156 assemble_external (yyval.ttype);
2157 TREE_USED (yyval.ttype) = 1;
2159 else
2161 assemble_external (yyval.ttype);
2162 TREE_USED (yyval.ttype) = 1;
2165 if (TREE_CODE (yyval.ttype) == CONST_DECL)
2167 yyval.ttype = DECL_INITIAL (yyval.ttype);
2168 /* This is to prevent an enum whose value is 0
2169 from being considered a null pointer constant. */
2170 yyval.ttype = build1 (NOP_EXPR, TREE_TYPE (yyval.ttype), yyval.ttype);
2171 TREE_CONSTANT (yyval.ttype) = 1;
2174 break;}
2175 case 88:
2176 #line 674 "c-parse.y"
2177 { yyval.ttype = combine_strings (yyvsp[0].ttype); ;
2178 break;}
2179 case 89:
2180 #line 676 "c-parse.y"
2181 { char class = TREE_CODE_CLASS (TREE_CODE (yyvsp[-1].ttype));
2182 if (class == 'e' || class == '1'
2183 || class == '2' || class == '<')
2184 C_SET_EXP_ORIGINAL_CODE (yyvsp[-1].ttype, ERROR_MARK);
2185 yyval.ttype = yyvsp[-1].ttype; ;
2186 break;}
2187 case 90:
2188 #line 682 "c-parse.y"
2189 { yyval.ttype = error_mark_node; ;
2190 break;}
2191 case 91:
2192 #line 684 "c-parse.y"
2193 { if (current_function_decl == 0)
2195 error ("braced-group within expression allowed only inside a function");
2196 YYERROR;
2198 /* We must force a BLOCK for this level
2199 so that, if it is not expanded later,
2200 there is a way to turn off the entire subtree of blocks
2201 that are contained in it. */
2202 keep_next_level ();
2203 push_iterator_stack ();
2204 push_label_level ();
2205 yyval.ttype = expand_start_stmt_expr (); ;
2206 break;}
2207 case 92:
2208 #line 698 "c-parse.y"
2209 { tree rtl_exp;
2210 if (pedantic)
2211 pedwarn ("ANSI C forbids braced-groups within expressions");
2212 pop_iterator_stack ();
2213 pop_label_level ();
2214 rtl_exp = expand_end_stmt_expr (yyvsp[-2].ttype);
2215 /* The statements have side effects, so the group does. */
2216 TREE_SIDE_EFFECTS (rtl_exp) = 1;
2218 if (TREE_CODE (yyvsp[-1].ttype) == BLOCK)
2220 /* Make a BIND_EXPR for the BLOCK already made. */
2221 yyval.ttype = build (BIND_EXPR, TREE_TYPE (rtl_exp),
2222 NULL_TREE, rtl_exp, yyvsp[-1].ttype);
2223 /* Remove the block from the tree at this point.
2224 It gets put back at the proper place
2225 when the BIND_EXPR is expanded. */
2226 delete_block (yyvsp[-1].ttype);
2228 else
2229 yyval.ttype = yyvsp[-1].ttype;
2231 break;}
2232 case 93:
2233 #line 721 "c-parse.y"
2234 { yyval.ttype = build_function_call (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
2235 break;}
2236 case 94:
2237 #line 723 "c-parse.y"
2238 { yyval.ttype = build_array_ref (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
2239 break;}
2240 case 95:
2241 #line 725 "c-parse.y"
2243 yyval.ttype = build_component_ref (yyvsp[-2].ttype, yyvsp[0].ttype);
2245 break;}
2246 case 96:
2247 #line 729 "c-parse.y"
2249 tree expr = build_indirect_ref (yyvsp[-2].ttype, "->");
2251 yyval.ttype = build_component_ref (expr, yyvsp[0].ttype);
2253 break;}
2254 case 97:
2255 #line 735 "c-parse.y"
2256 { yyval.ttype = build_unary_op (POSTINCREMENT_EXPR, yyvsp[-1].ttype, 0); ;
2257 break;}
2258 case 98:
2259 #line 737 "c-parse.y"
2260 { yyval.ttype = build_unary_op (POSTDECREMENT_EXPR, yyvsp[-1].ttype, 0); ;
2261 break;}
2262 case 100:
2263 #line 744 "c-parse.y"
2264 { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ;
2265 break;}
2266 case 103:
2267 #line 753 "c-parse.y"
2268 { c_mark_varargs ();
2269 if (pedantic)
2270 pedwarn ("ANSI C does not permit use of `varargs.h'"); ;
2271 break;}
2272 case 104:
2273 #line 763 "c-parse.y"
2275 break;}
2276 case 109:
2277 #line 779 "c-parse.y"
2278 { current_declspecs = TREE_VALUE (declspec_stack);
2279 prefix_attributes = TREE_PURPOSE (declspec_stack);
2280 declspec_stack = TREE_CHAIN (declspec_stack);
2281 resume_momentary (yyvsp[-2].itype); ;
2282 break;}
2283 case 110:
2284 #line 784 "c-parse.y"
2285 { current_declspecs = TREE_VALUE (declspec_stack);
2286 prefix_attributes = TREE_PURPOSE (declspec_stack);
2287 declspec_stack = TREE_CHAIN (declspec_stack);
2288 resume_momentary (yyvsp[-2].itype); ;
2289 break;}
2290 case 111:
2291 #line 789 "c-parse.y"
2292 { shadow_tag_warned (yyvsp[-1].ttype, 1);
2293 pedwarn ("empty declaration"); ;
2294 break;}
2295 case 112:
2296 #line 792 "c-parse.y"
2297 { pedwarn ("empty declaration"); ;
2298 break;}
2299 case 113:
2300 #line 801 "c-parse.y"
2302 break;}
2303 case 118:
2304 #line 816 "c-parse.y"
2305 { yyval.itype = suspend_momentary ();
2306 pending_xref_error ();
2307 declspec_stack = tree_cons (prefix_attributes,
2308 current_declspecs,
2309 declspec_stack);
2310 split_specs_attrs (yyvsp[0].ttype,
2311 &current_declspecs, &prefix_attributes); ;
2312 break;}
2313 case 119:
2314 #line 827 "c-parse.y"
2315 { prefix_attributes = chainon (prefix_attributes, yyvsp[0].ttype); ;
2316 break;}
2317 case 120:
2318 #line 832 "c-parse.y"
2319 { current_declspecs = TREE_VALUE (declspec_stack);
2320 prefix_attributes = TREE_PURPOSE (declspec_stack);
2321 declspec_stack = TREE_CHAIN (declspec_stack);
2322 resume_momentary (yyvsp[-2].itype); ;
2323 break;}
2324 case 121:
2325 #line 837 "c-parse.y"
2326 { current_declspecs = TREE_VALUE (declspec_stack);
2327 prefix_attributes = TREE_PURPOSE (declspec_stack);
2328 declspec_stack = TREE_CHAIN (declspec_stack);
2329 resume_momentary (yyvsp[-2].itype); ;
2330 break;}
2331 case 122:
2332 #line 842 "c-parse.y"
2333 { current_declspecs = TREE_VALUE (declspec_stack);
2334 prefix_attributes = TREE_PURPOSE (declspec_stack);
2335 declspec_stack = TREE_CHAIN (declspec_stack);
2336 resume_momentary (yyvsp[-1].itype); ;
2337 break;}
2338 case 123:
2339 #line 847 "c-parse.y"
2340 { current_declspecs = TREE_VALUE (declspec_stack);
2341 prefix_attributes = TREE_PURPOSE (declspec_stack);
2342 declspec_stack = TREE_CHAIN (declspec_stack);
2343 resume_momentary (yyvsp[-1].itype); ;
2344 break;}
2345 case 124:
2346 #line 852 "c-parse.y"
2347 { shadow_tag (yyvsp[-1].ttype); ;
2348 break;}
2349 case 125:
2350 #line 854 "c-parse.y"
2351 { pedwarn ("empty declaration"); ;
2352 break;}
2353 case 126:
2354 #line 856 "c-parse.y"
2355 { pedantic = yyvsp[-1].itype; ;
2356 break;}
2357 case 127:
2358 #line 866 "c-parse.y"
2359 { yyval.ttype = tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype); ;
2360 break;}
2361 case 128:
2362 #line 868 "c-parse.y"
2363 { yyval.ttype = chainon (yyvsp[0].ttype, tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[-2].ttype)); ;
2364 break;}
2365 case 129:
2366 #line 872 "c-parse.y"
2367 { yyval.ttype = NULL_TREE; ;
2368 break;}
2369 case 130:
2370 #line 874 "c-parse.y"
2371 { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
2372 break;}
2373 case 131:
2374 #line 876 "c-parse.y"
2375 { if (extra_warnings)
2376 warning ("`%s' is not at beginning of declaration",
2377 IDENTIFIER_POINTER (yyvsp[0].ttype));
2378 yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
2379 break;}
2380 case 132:
2381 #line 881 "c-parse.y"
2382 { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); ;
2383 break;}
2384 case 133:
2385 #line 886 "c-parse.y"
2386 { yyval.ttype = tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype); ;
2387 break;}
2388 case 134:
2389 #line 888 "c-parse.y"
2390 { yyval.ttype = chainon (yyvsp[0].ttype, tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[-2].ttype)); ;
2391 break;}
2392 case 135:
2393 #line 893 "c-parse.y"
2394 { yyval.ttype = NULL_TREE; ;
2395 break;}
2396 case 136:
2397 #line 895 "c-parse.y"
2398 { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
2399 break;}
2400 case 137:
2401 #line 897 "c-parse.y"
2402 { if (extra_warnings)
2403 warning ("`%s' is not at beginning of declaration",
2404 IDENTIFIER_POINTER (yyvsp[0].ttype));
2405 yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
2406 break;}
2407 case 138:
2408 #line 910 "c-parse.y"
2409 { yyval.ttype = yyvsp[0].ttype; ;
2410 break;}
2411 case 139:
2412 #line 912 "c-parse.y"
2413 { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, NULL_TREE); ;
2414 break;}
2415 case 140:
2416 #line 914 "c-parse.y"
2417 { yyval.ttype = chainon (yyvsp[0].ttype, yyvsp[-1].ttype); ;
2418 break;}
2419 case 141:
2420 #line 916 "c-parse.y"
2421 { yyval.ttype = tree_cons (yyvsp[0].ttype, NULL_TREE, yyvsp[-1].ttype); ;
2422 break;}
2423 case 142:
2424 #line 921 "c-parse.y"
2425 { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE);
2426 TREE_STATIC (yyval.ttype) = 1; ;
2427 break;}
2428 case 143:
2429 #line 924 "c-parse.y"
2430 { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
2431 break;}
2432 case 144:
2433 #line 926 "c-parse.y"
2434 { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
2435 TREE_STATIC (yyval.ttype) = 1; ;
2436 break;}
2437 case 145:
2438 #line 929 "c-parse.y"
2439 { if (extra_warnings && TREE_STATIC (yyvsp[-1].ttype))
2440 warning ("`%s' is not at beginning of declaration",
2441 IDENTIFIER_POINTER (yyvsp[0].ttype));
2442 yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype);
2443 TREE_STATIC (yyval.ttype) = TREE_STATIC (yyvsp[-1].ttype); ;
2444 break;}
2445 case 146:
2446 #line 943 "c-parse.y"
2447 { yyval.ttype = tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[0].ttype); ;
2448 break;}
2449 case 147:
2450 #line 945 "c-parse.y"
2451 { yyval.ttype = chainon (yyvsp[0].ttype, tree_cons (NULL_TREE, yyvsp[-1].ttype, yyvsp[-2].ttype)); ;
2452 break;}
2453 case 148:
2454 #line 949 "c-parse.y"
2455 { yyval.ttype = NULL_TREE; ;
2456 break;}
2457 case 149:
2458 #line 951 "c-parse.y"
2459 { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
2460 break;}
2461 case 152:
2462 #line 961 "c-parse.y"
2463 { /* For a typedef name, record the meaning, not the name.
2464 In case of `foo foo, bar;'. */
2465 yyval.ttype = lookup_name (yyvsp[0].ttype); ;
2466 break;}
2467 case 153:
2468 #line 965 "c-parse.y"
2469 { yyval.ttype = TREE_TYPE (yyvsp[-1].ttype); ;
2470 break;}
2471 case 154:
2472 #line 967 "c-parse.y"
2473 { yyval.ttype = groktypename (yyvsp[-1].ttype); ;
2474 break;}
2475 case 162:
2476 #line 989 "c-parse.y"
2477 { yyval.ttype = NULL_TREE; ;
2478 break;}
2479 case 163:
2480 #line 991 "c-parse.y"
2481 { if (TREE_CHAIN (yyvsp[-1].ttype)) yyvsp[-1].ttype = combine_strings (yyvsp[-1].ttype);
2482 yyval.ttype = yyvsp[-1].ttype;
2484 break;}
2485 case 164:
2486 #line 998 "c-parse.y"
2487 { yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1,
2488 yyvsp[-1].ttype, prefix_attributes);
2489 start_init (yyval.ttype, yyvsp[-2].ttype, global_bindings_p ()); ;
2490 break;}
2491 case 165:
2492 #line 1003 "c-parse.y"
2493 { finish_init ();
2494 finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype); ;
2495 break;}
2496 case 166:
2497 #line 1006 "c-parse.y"
2498 { tree d = start_decl (yyvsp[-2].ttype, current_declspecs, 0,
2499 yyvsp[0].ttype, prefix_attributes);
2500 finish_decl (d, NULL_TREE, yyvsp[-1].ttype);
2502 break;}
2503 case 167:
2504 #line 1014 "c-parse.y"
2505 { yyval.ttype = start_decl (yyvsp[-3].ttype, current_declspecs, 1,
2506 yyvsp[-1].ttype, prefix_attributes);
2507 start_init (yyval.ttype, yyvsp[-2].ttype, global_bindings_p ()); ;
2508 break;}
2509 case 168:
2510 #line 1019 "c-parse.y"
2511 { finish_init ();
2512 decl_attributes (yyvsp[-1].ttype, yyvsp[-3].ttype, prefix_attributes);
2513 finish_decl (yyvsp[-1].ttype, yyvsp[0].ttype, yyvsp[-4].ttype); ;
2514 break;}
2515 case 169:
2516 #line 1023 "c-parse.y"
2517 { tree d = start_decl (yyvsp[-2].ttype, current_declspecs, 0,
2518 yyvsp[0].ttype, prefix_attributes);
2519 finish_decl (d, NULL_TREE, yyvsp[-1].ttype); ;
2520 break;}
2521 case 170:
2522 #line 1031 "c-parse.y"
2523 { yyval.ttype = NULL_TREE; ;
2524 break;}
2525 case 171:
2526 #line 1033 "c-parse.y"
2527 { yyval.ttype = yyvsp[0].ttype; ;
2528 break;}
2529 case 172:
2530 #line 1038 "c-parse.y"
2531 { yyval.ttype = yyvsp[0].ttype; ;
2532 break;}
2533 case 173:
2534 #line 1040 "c-parse.y"
2535 { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype); ;
2536 break;}
2537 case 174:
2538 #line 1045 "c-parse.y"
2539 { yyval.ttype = yyvsp[-2].ttype; ;
2540 break;}
2541 case 175:
2542 #line 1050 "c-parse.y"
2543 { yyval.ttype = yyvsp[0].ttype; ;
2544 break;}
2545 case 176:
2546 #line 1052 "c-parse.y"
2547 { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
2548 break;}
2549 case 177:
2550 #line 1057 "c-parse.y"
2551 { yyval.ttype = NULL_TREE; ;
2552 break;}
2553 case 178:
2554 #line 1059 "c-parse.y"
2555 { yyval.ttype = build_tree_list (yyvsp[0].ttype, NULL_TREE); ;
2556 break;}
2557 case 179:
2558 #line 1061 "c-parse.y"
2559 { yyval.ttype = build_tree_list (yyvsp[-3].ttype, build_tree_list (NULL_TREE, yyvsp[-1].ttype)); ;
2560 break;}
2561 case 180:
2562 #line 1063 "c-parse.y"
2563 { yyval.ttype = build_tree_list (yyvsp[-5].ttype, tree_cons (NULL_TREE, yyvsp[-3].ttype, yyvsp[-1].ttype)); ;
2564 break;}
2565 case 181:
2566 #line 1065 "c-parse.y"
2567 { yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
2568 break;}
2569 case 187:
2570 #line 1083 "c-parse.y"
2571 { really_start_incremental_init (NULL_TREE);
2572 /* Note that the call to clear_momentary
2573 is in process_init_element. */
2574 push_momentary (); ;
2575 break;}
2576 case 188:
2577 #line 1088 "c-parse.y"
2578 { yyval.ttype = pop_init_level (0);
2579 if (yyval.ttype == error_mark_node
2580 && ! (yychar == STRING || yychar == CONSTANT))
2581 pop_momentary ();
2582 else
2583 pop_momentary_nofree (); ;
2584 break;}
2585 case 189:
2586 #line 1096 "c-parse.y"
2587 { yyval.ttype = error_mark_node; ;
2588 break;}
2589 case 190:
2590 #line 1102 "c-parse.y"
2591 { if (pedantic)
2592 pedwarn ("ANSI C forbids empty initializer braces"); ;
2593 break;}
2594 case 194:
2595 #line 1116 "c-parse.y"
2596 { process_init_element (yyvsp[0].ttype); ;
2597 break;}
2598 case 195:
2599 #line 1118 "c-parse.y"
2600 { push_init_level (0); ;
2601 break;}
2602 case 196:
2603 #line 1120 "c-parse.y"
2604 { process_init_element (pop_init_level (0)); ;
2605 break;}
2606 case 198:
2607 #line 1126 "c-parse.y"
2608 { set_init_index (yyvsp[-4].ttype, yyvsp[-2].ttype); ;
2609 break;}
2610 case 200:
2611 #line 1129 "c-parse.y"
2612 { set_init_index (yyvsp[-2].ttype, NULL_TREE); ;
2613 break;}
2614 case 202:
2615 #line 1132 "c-parse.y"
2616 { set_init_index (yyvsp[-1].ttype, NULL_TREE); ;
2617 break;}
2618 case 204:
2619 #line 1135 "c-parse.y"
2620 { set_init_label (yyvsp[-1].ttype); ;
2621 break;}
2622 case 206:
2623 #line 1138 "c-parse.y"
2624 { set_init_label (yyvsp[-1].ttype); ;
2625 break;}
2626 case 208:
2627 #line 1144 "c-parse.y"
2628 { push_c_function_context ();
2629 if (! start_function (current_declspecs, yyvsp[0].ttype,
2630 prefix_attributes, NULL_TREE, 1))
2632 pop_c_function_context ();
2633 YYERROR1;
2635 reinit_parse_for_function (); ;
2636 break;}
2637 case 209:
2638 #line 1153 "c-parse.y"
2639 { store_parm_decls (); ;
2640 break;}
2641 case 210:
2642 #line 1161 "c-parse.y"
2643 { finish_function (1);
2644 pop_c_function_context (); ;
2645 break;}
2646 case 211:
2647 #line 1167 "c-parse.y"
2648 { push_c_function_context ();
2649 if (! start_function (current_declspecs, yyvsp[0].ttype,
2650 prefix_attributes, NULL_TREE, 1))
2652 pop_c_function_context ();
2653 YYERROR1;
2655 reinit_parse_for_function (); ;
2656 break;}
2657 case 212:
2658 #line 1176 "c-parse.y"
2659 { store_parm_decls (); ;
2660 break;}
2661 case 213:
2662 #line 1184 "c-parse.y"
2663 { finish_function (1);
2664 pop_c_function_context (); ;
2665 break;}
2666 case 216:
2667 #line 1200 "c-parse.y"
2668 { yyval.ttype = yyvsp[-1].ttype; ;
2669 break;}
2670 case 217:
2671 #line 1202 "c-parse.y"
2672 { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
2673 break;}
2674 case 218:
2675 #line 1207 "c-parse.y"
2676 { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
2677 break;}
2678 case 219:
2679 #line 1209 "c-parse.y"
2680 { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
2681 break;}
2682 case 220:
2683 #line 1211 "c-parse.y"
2684 { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
2685 break;}
2686 case 221:
2687 #line 1218 "c-parse.y"
2688 { yyval.ttype = yyvsp[0].ttype; ;
2689 break;}
2690 case 223:
2691 #line 1229 "c-parse.y"
2692 { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
2693 break;}
2694 case 224:
2695 #line 1234 "c-parse.y"
2696 { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
2697 break;}
2698 case 225:
2699 #line 1236 "c-parse.y"
2700 { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
2701 break;}
2702 case 226:
2703 #line 1238 "c-parse.y"
2704 { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
2705 break;}
2706 case 227:
2707 #line 1245 "c-parse.y"
2708 { yyval.ttype = yyvsp[0].ttype; ;
2709 break;}
2710 case 229:
2711 #line 1254 "c-parse.y"
2712 { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
2713 break;}
2714 case 230:
2715 #line 1259 "c-parse.y"
2716 { yyval.ttype = yyvsp[-1].ttype; ;
2717 break;}
2718 case 231:
2719 #line 1261 "c-parse.y"
2720 { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
2721 break;}
2722 case 232:
2723 #line 1263 "c-parse.y"
2724 { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
2725 break;}
2726 case 233:
2727 #line 1265 "c-parse.y"
2728 { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
2729 break;}
2730 case 234:
2731 #line 1272 "c-parse.y"
2732 { yyval.ttype = yyvsp[0].ttype; ;
2733 break;}
2734 case 236:
2735 #line 1278 "c-parse.y"
2736 { yyval.ttype = start_struct (RECORD_TYPE, yyvsp[-1].ttype);
2737 /* Start scope of tag before parsing components. */
2739 break;}
2740 case 237:
2741 #line 1282 "c-parse.y"
2742 { yyval.ttype = finish_struct (yyvsp[-3].ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
2743 break;}
2744 case 238:
2745 #line 1284 "c-parse.y"
2746 { yyval.ttype = finish_struct (start_struct (RECORD_TYPE, NULL_TREE),
2747 yyvsp[-2].ttype, yyvsp[0].ttype);
2749 break;}
2750 case 239:
2751 #line 1288 "c-parse.y"
2752 { yyval.ttype = xref_tag (RECORD_TYPE, yyvsp[0].ttype); ;
2753 break;}
2754 case 240:
2755 #line 1290 "c-parse.y"
2756 { yyval.ttype = start_struct (UNION_TYPE, yyvsp[-1].ttype); ;
2757 break;}
2758 case 241:
2759 #line 1292 "c-parse.y"
2760 { yyval.ttype = finish_struct (yyvsp[-3].ttype, yyvsp[-2].ttype, yyvsp[0].ttype); ;
2761 break;}
2762 case 242:
2763 #line 1294 "c-parse.y"
2764 { yyval.ttype = finish_struct (start_struct (UNION_TYPE, NULL_TREE),
2765 yyvsp[-2].ttype, yyvsp[0].ttype);
2767 break;}
2768 case 243:
2769 #line 1298 "c-parse.y"
2770 { yyval.ttype = xref_tag (UNION_TYPE, yyvsp[0].ttype); ;
2771 break;}
2772 case 244:
2773 #line 1300 "c-parse.y"
2774 { yyvsp[0].itype = suspend_momentary ();
2775 yyval.ttype = start_enum (yyvsp[-1].ttype); ;
2776 break;}
2777 case 245:
2778 #line 1303 "c-parse.y"
2779 { yyval.ttype = finish_enum (yyvsp[-4].ttype, nreverse (yyvsp[-3].ttype), yyvsp[0].ttype);
2780 resume_momentary (yyvsp[-5].itype); ;
2781 break;}
2782 case 246:
2783 #line 1306 "c-parse.y"
2784 { yyvsp[0].itype = suspend_momentary ();
2785 yyval.ttype = start_enum (NULL_TREE); ;
2786 break;}
2787 case 247:
2788 #line 1309 "c-parse.y"
2789 { yyval.ttype = finish_enum (yyvsp[-4].ttype, nreverse (yyvsp[-3].ttype), yyvsp[0].ttype);
2790 resume_momentary (yyvsp[-5].itype); ;
2791 break;}
2792 case 248:
2793 #line 1312 "c-parse.y"
2794 { yyval.ttype = xref_tag (ENUMERAL_TYPE, yyvsp[0].ttype); ;
2795 break;}
2796 case 252:
2797 #line 1323 "c-parse.y"
2798 { if (pedantic) pedwarn ("comma at end of enumerator list"); ;
2799 break;}
2800 case 253:
2801 #line 1328 "c-parse.y"
2802 { yyval.ttype = yyvsp[0].ttype; ;
2803 break;}
2804 case 254:
2805 #line 1330 "c-parse.y"
2806 { yyval.ttype = chainon (yyvsp[-1].ttype, yyvsp[0].ttype);
2807 pedwarn ("no semicolon at end of struct or union"); ;
2808 break;}
2809 case 255:
2810 #line 1335 "c-parse.y"
2811 { yyval.ttype = NULL_TREE; ;
2812 break;}
2813 case 256:
2814 #line 1337 "c-parse.y"
2815 { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[-1].ttype); ;
2816 break;}
2817 case 257:
2818 #line 1339 "c-parse.y"
2819 { if (pedantic)
2820 pedwarn ("extra semicolon in struct or union specified"); ;
2821 break;}
2822 case 258:
2823 #line 1354 "c-parse.y"
2824 { yyval.ttype = yyvsp[0].ttype;
2825 current_declspecs = TREE_VALUE (declspec_stack);
2826 prefix_attributes = TREE_PURPOSE (declspec_stack);
2827 declspec_stack = TREE_CHAIN (declspec_stack);
2828 resume_momentary (yyvsp[-1].itype); ;
2829 break;}
2830 case 259:
2831 #line 1360 "c-parse.y"
2832 { if (pedantic)
2833 pedwarn ("ANSI C forbids member declarations with no members");
2834 shadow_tag(yyvsp[0].ttype);
2835 yyval.ttype = NULL_TREE; ;
2836 break;}
2837 case 260:
2838 #line 1365 "c-parse.y"
2839 { yyval.ttype = yyvsp[0].ttype;
2840 current_declspecs = TREE_VALUE (declspec_stack);
2841 prefix_attributes = TREE_PURPOSE (declspec_stack);
2842 declspec_stack = TREE_CHAIN (declspec_stack);
2843 resume_momentary (yyvsp[-1].itype); ;
2844 break;}
2845 case 261:
2846 #line 1371 "c-parse.y"
2847 { if (pedantic)
2848 pedwarn ("ANSI C forbids member declarations with no members");
2849 shadow_tag(yyvsp[0].ttype);
2850 yyval.ttype = NULL_TREE; ;
2851 break;}
2852 case 262:
2853 #line 1376 "c-parse.y"
2854 { yyval.ttype = NULL_TREE; ;
2855 break;}
2856 case 263:
2857 #line 1378 "c-parse.y"
2858 { yyval.ttype = yyvsp[0].ttype;
2859 pedantic = yyvsp[-1].itype; ;
2860 break;}
2861 case 265:
2862 #line 1385 "c-parse.y"
2863 { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
2864 break;}
2865 case 266:
2866 #line 1390 "c-parse.y"
2867 { yyval.ttype = grokfield (yyvsp[-3].filename, yyvsp[-2].lineno, yyvsp[-1].ttype, current_declspecs, NULL_TREE);
2868 decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
2869 break;}
2870 case 267:
2871 #line 1394 "c-parse.y"
2872 { yyval.ttype = grokfield (yyvsp[-5].filename, yyvsp[-4].lineno, yyvsp[-3].ttype, current_declspecs, yyvsp[-1].ttype);
2873 decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
2874 break;}
2875 case 268:
2876 #line 1397 "c-parse.y"
2877 { yyval.ttype = grokfield (yyvsp[-4].filename, yyvsp[-3].lineno, NULL_TREE, current_declspecs, yyvsp[-1].ttype);
2878 decl_attributes (yyval.ttype, yyvsp[0].ttype, prefix_attributes); ;
2879 break;}
2880 case 270:
2881 #line 1409 "c-parse.y"
2882 { if (yyvsp[-2].ttype == error_mark_node)
2883 yyval.ttype = yyvsp[-2].ttype;
2884 else
2885 yyval.ttype = chainon (yyvsp[0].ttype, yyvsp[-2].ttype); ;
2886 break;}
2887 case 271:
2888 #line 1414 "c-parse.y"
2889 { yyval.ttype = error_mark_node; ;
2890 break;}
2891 case 272:
2892 #line 1420 "c-parse.y"
2893 { yyval.ttype = build_enumerator (yyvsp[0].ttype, NULL_TREE); ;
2894 break;}
2895 case 273:
2896 #line 1422 "c-parse.y"
2897 { yyval.ttype = build_enumerator (yyvsp[-2].ttype, yyvsp[0].ttype); ;
2898 break;}
2899 case 274:
2900 #line 1427 "c-parse.y"
2901 { yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ;
2902 break;}
2903 case 275:
2904 #line 1429 "c-parse.y"
2905 { yyval.ttype = build_tree_list (yyvsp[-1].ttype, yyvsp[0].ttype); ;
2906 break;}
2907 case 276:
2908 #line 1434 "c-parse.y"
2909 { yyval.ttype = NULL_TREE; ;
2910 break;}
2911 case 278:
2912 #line 1440 "c-parse.y"
2913 { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
2914 break;}
2915 case 279:
2916 #line 1442 "c-parse.y"
2917 { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
2918 break;}
2919 case 280:
2920 #line 1447 "c-parse.y"
2921 { yyval.ttype = NULL_TREE; ;
2922 break;}
2923 case 281:
2924 #line 1449 "c-parse.y"
2925 { yyval.ttype = tree_cons (NULL_TREE, yyvsp[0].ttype, yyvsp[-1].ttype); ;
2926 break;}
2927 case 282:
2928 #line 1454 "c-parse.y"
2929 { yyval.ttype = yyvsp[-1].ttype; ;
2930 break;}
2931 case 283:
2932 #line 1457 "c-parse.y"
2933 { yyval.ttype = make_pointer_declarator (yyvsp[-1].ttype, yyvsp[0].ttype); ;
2934 break;}
2935 case 284:
2936 #line 1459 "c-parse.y"
2937 { yyval.ttype = make_pointer_declarator (yyvsp[0].ttype, NULL_TREE); ;
2938 break;}
2939 case 285:
2940 #line 1461 "c-parse.y"
2941 { yyval.ttype = build_nt (CALL_EXPR, yyvsp[-2].ttype, yyvsp[0].ttype, NULL_TREE); ;
2942 break;}
2943 case 286:
2944 #line 1463 "c-parse.y"
2945 { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-3].ttype, yyvsp[-1].ttype); ;
2946 break;}
2947 case 287:
2948 #line 1465 "c-parse.y"
2949 { yyval.ttype = build_nt (ARRAY_REF, yyvsp[-2].ttype, NULL_TREE); ;
2950 break;}
2951 case 288:
2952 #line 1467 "c-parse.y"
2953 { yyval.ttype = build_nt (CALL_EXPR, NULL_TREE, yyvsp[0].ttype, NULL_TREE); ;
2954 break;}
2955 case 289:
2956 #line 1469 "c-parse.y"
2957 { yyval.ttype = build_nt (ARRAY_REF, NULL_TREE, yyvsp[-1].ttype); ;
2958 break;}
2959 case 290:
2960 #line 1471 "c-parse.y"
2961 { yyval.ttype = build_nt (ARRAY_REF, NULL_TREE, NULL_TREE); ;
2962 break;}
2963 case 291:
2964 #line 1482 "c-parse.y"
2966 if (pedantic && yyvsp[0].ends_in_label)
2967 pedwarn ("ANSI C forbids label at end of compound statement");
2969 break;}
2970 case 293:
2971 #line 1491 "c-parse.y"
2972 { yyval.ends_in_label = yyvsp[0].ends_in_label; ;
2973 break;}
2974 case 294:
2975 #line 1493 "c-parse.y"
2976 { yyval.ends_in_label = 0; ;
2977 break;}
2978 case 298:
2979 #line 1505 "c-parse.y"
2980 { emit_line_note (input_filename, lineno);
2981 pushlevel (0);
2982 clear_last_expr ();
2983 push_momentary ();
2984 expand_start_bindings (0);
2986 break;}
2987 case 300:
2988 #line 1518 "c-parse.y"
2989 { if (pedantic)
2990 pedwarn ("ANSI C forbids label declarations"); ;
2991 break;}
2992 case 303:
2993 #line 1529 "c-parse.y"
2994 { tree link;
2995 for (link = yyvsp[-1].ttype; link; link = TREE_CHAIN (link))
2997 tree label = shadow_label (TREE_VALUE (link));
2998 C_DECLARED_LABEL_FLAG (label) = 1;
2999 declare_nonlocal_label (label);
3002 break;}
3003 case 304:
3004 #line 1543 "c-parse.y"
3006 break;}
3007 case 306:
3008 #line 1547 "c-parse.y"
3009 { compstmt_count++; ;
3010 break;}
3011 case 307:
3012 #line 1550 "c-parse.y"
3013 { yyval.ttype = convert (void_type_node, integer_zero_node); ;
3014 break;}
3015 case 308:
3016 #line 1552 "c-parse.y"
3017 { emit_line_note (input_filename, lineno);
3018 expand_end_bindings (getdecls (), 1, 0);
3019 yyval.ttype = poplevel (1, 1, 0);
3020 if (yychar == CONSTANT || yychar == STRING)
3021 pop_momentary_nofree ();
3022 else
3023 pop_momentary (); ;
3024 break;}
3025 case 309:
3026 #line 1560 "c-parse.y"
3027 { emit_line_note (input_filename, lineno);
3028 expand_end_bindings (getdecls (), kept_level_p (), 0);
3029 yyval.ttype = poplevel (kept_level_p (), 0, 0);
3030 if (yychar == CONSTANT || yychar == STRING)
3031 pop_momentary_nofree ();
3032 else
3033 pop_momentary (); ;
3034 break;}
3035 case 310:
3036 #line 1568 "c-parse.y"
3037 { emit_line_note (input_filename, lineno);
3038 expand_end_bindings (getdecls (), kept_level_p (), 0);
3039 yyval.ttype = poplevel (kept_level_p (), 0, 0);
3040 if (yychar == CONSTANT || yychar == STRING)
3041 pop_momentary_nofree ();
3042 else
3043 pop_momentary (); ;
3044 break;}
3045 case 313:
3046 #line 1588 "c-parse.y"
3047 { emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno);
3048 c_expand_start_cond (truthvalue_conversion (yyvsp[-1].ttype), 0,
3049 compstmt_count);
3050 yyval.itype = stmt_count;
3051 if_stmt_file = yyvsp[-5].filename;
3052 if_stmt_line = yyvsp[-4].lineno;
3053 position_after_white_space (); ;
3054 break;}
3055 case 314:
3056 #line 1602 "c-parse.y"
3057 { stmt_count++;
3058 compstmt_count++;
3059 emit_line_note (yyvsp[-2].filename, yyvsp[-1].lineno);
3060 /* See comment in `while' alternative, above. */
3061 emit_nop ();
3062 expand_start_loop_continue_elsewhere (1);
3063 position_after_white_space (); ;
3064 break;}
3065 case 315:
3066 #line 1610 "c-parse.y"
3067 { expand_loop_continue_here (); ;
3068 break;}
3069 case 316:
3070 #line 1614 "c-parse.y"
3071 { yyval.filename = input_filename; ;
3072 break;}
3073 case 317:
3074 #line 1618 "c-parse.y"
3075 { yyval.lineno = lineno; ;
3076 break;}
3077 case 318:
3078 #line 1623 "c-parse.y"
3080 break;}
3081 case 319:
3082 #line 1628 "c-parse.y"
3084 break;}
3085 case 320:
3086 #line 1633 "c-parse.y"
3087 { yyval.ends_in_label = yyvsp[0].ends_in_label; ;
3088 break;}
3089 case 321:
3090 #line 1638 "c-parse.y"
3091 { yyval.ends_in_label = 0; ;
3092 break;}
3093 case 322:
3094 #line 1640 "c-parse.y"
3095 { yyval.ends_in_label = 1; ;
3096 break;}
3097 case 323:
3098 #line 1646 "c-parse.y"
3099 { stmt_count++; ;
3100 break;}
3101 case 325:
3102 #line 1649 "c-parse.y"
3103 { stmt_count++;
3104 emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
3105 /* It appears that this should not be done--that a non-lvalue array
3106 shouldn't get an error if the value isn't used.
3107 Section 3.2.2.1 says that an array lvalue gets converted to a pointer
3108 if it appears as a top-level expression,
3109 but says nothing about non-lvalue arrays. */
3110 #if 0
3111 /* Call default_conversion to get an error
3112 on referring to a register array if pedantic. */
3113 if (TREE_CODE (TREE_TYPE (yyvsp[-1].ttype)) == ARRAY_TYPE
3114 || TREE_CODE (TREE_TYPE (yyvsp[-1].ttype)) == FUNCTION_TYPE)
3115 yyvsp[-1].ttype = default_conversion (yyvsp[-1].ttype);
3116 #endif
3117 iterator_expand (yyvsp[-1].ttype);
3118 clear_momentary (); ;
3119 break;}
3120 case 326:
3121 #line 1666 "c-parse.y"
3122 { c_expand_start_else ();
3123 yyvsp[-1].itype = stmt_count;
3124 position_after_white_space (); ;
3125 break;}
3126 case 327:
3127 #line 1670 "c-parse.y"
3128 { c_expand_end_cond ();
3129 if (extra_warnings && stmt_count == yyvsp[-3].itype)
3130 warning ("empty body in an else-statement"); ;
3131 break;}
3132 case 328:
3133 #line 1674 "c-parse.y"
3134 { c_expand_end_cond ();
3135 /* This warning is here instead of in simple_if, because we
3136 do not want a warning if an empty if is followed by an
3137 else statement. Increment stmt_count so we don't
3138 give a second error if this is a nested `if'. */
3139 if (extra_warnings && stmt_count++ == yyvsp[0].itype)
3140 warning_with_file_and_line (if_stmt_file, if_stmt_line,
3141 "empty body in an if-statement"); ;
3142 break;}
3143 case 329:
3144 #line 1686 "c-parse.y"
3145 { c_expand_end_cond (); ;
3146 break;}
3147 case 330:
3148 #line 1688 "c-parse.y"
3149 { stmt_count++;
3150 emit_line_note (yyvsp[-2].filename, yyvsp[-1].lineno);
3151 /* The emit_nop used to come before emit_line_note,
3152 but that made the nop seem like part of the preceding line.
3153 And that was confusing when the preceding line was
3154 inside of an if statement and was not really executed.
3155 I think it ought to work to put the nop after the line number.
3156 We will see. --rms, July 15, 1991. */
3157 emit_nop (); ;
3158 break;}
3159 case 331:
3160 #line 1698 "c-parse.y"
3161 { /* Don't start the loop till we have succeeded
3162 in parsing the end test. This is to make sure
3163 that we end every loop we start. */
3164 expand_start_loop (1);
3165 emit_line_note (input_filename, lineno);
3166 expand_exit_loop_if_false (NULL_PTR,
3167 truthvalue_conversion (yyvsp[-1].ttype));
3168 position_after_white_space (); ;
3169 break;}
3170 case 332:
3171 #line 1707 "c-parse.y"
3172 { expand_end_loop (); ;
3173 break;}
3174 case 333:
3175 #line 1710 "c-parse.y"
3176 { emit_line_note (input_filename, lineno);
3177 expand_exit_loop_if_false (NULL_PTR,
3178 truthvalue_conversion (yyvsp[-2].ttype));
3179 expand_end_loop ();
3180 clear_momentary (); ;
3181 break;}
3182 case 334:
3183 #line 1717 "c-parse.y"
3184 { expand_end_loop ();
3185 clear_momentary (); ;
3186 break;}
3187 case 335:
3188 #line 1721 "c-parse.y"
3189 { stmt_count++;
3190 emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno);
3191 /* See comment in `while' alternative, above. */
3192 emit_nop ();
3193 if (yyvsp[-1].ttype) c_expand_expr_stmt (yyvsp[-1].ttype);
3194 /* Next step is to call expand_start_loop_continue_elsewhere,
3195 but wait till after we parse the entire for (...).
3196 Otherwise, invalid input might cause us to call that
3197 fn without calling expand_end_loop. */
3199 break;}
3200 case 336:
3201 #line 1733 "c-parse.y"
3202 { yyvsp[0].lineno = lineno;
3203 yyval.filename = input_filename; ;
3204 break;}
3205 case 337:
3206 #line 1736 "c-parse.y"
3208 /* Start the loop. Doing this after parsing
3209 all the expressions ensures we will end the loop. */
3210 expand_start_loop_continue_elsewhere (1);
3211 /* Emit the end-test, with a line number. */
3212 emit_line_note (yyvsp[-2].filename, yyvsp[-3].lineno);
3213 if (yyvsp[-4].ttype)
3214 expand_exit_loop_if_false (NULL_PTR,
3215 truthvalue_conversion (yyvsp[-4].ttype));
3216 /* Don't let the tree nodes for $9 be discarded by
3217 clear_momentary during the parsing of the next stmt. */
3218 push_momentary ();
3219 yyvsp[-3].lineno = lineno;
3220 yyvsp[-2].filename = input_filename;
3221 position_after_white_space (); ;
3222 break;}
3223 case 338:
3224 #line 1752 "c-parse.y"
3225 { /* Emit the increment expression, with a line number. */
3226 emit_line_note (yyvsp[-4].filename, yyvsp[-5].lineno);
3227 expand_loop_continue_here ();
3228 if (yyvsp[-3].ttype)
3229 c_expand_expr_stmt (yyvsp[-3].ttype);
3230 if (yychar == CONSTANT || yychar == STRING)
3231 pop_momentary_nofree ();
3232 else
3233 pop_momentary ();
3234 expand_end_loop (); ;
3235 break;}
3236 case 339:
3237 #line 1763 "c-parse.y"
3238 { stmt_count++;
3239 emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno);
3240 c_expand_start_case (yyvsp[-1].ttype);
3241 /* Don't let the tree nodes for $3 be discarded by
3242 clear_momentary during the parsing of the next stmt. */
3243 push_momentary ();
3244 position_after_white_space (); ;
3245 break;}
3246 case 340:
3247 #line 1771 "c-parse.y"
3248 { expand_end_case (yyvsp[-3].ttype);
3249 if (yychar == CONSTANT || yychar == STRING)
3250 pop_momentary_nofree ();
3251 else
3252 pop_momentary (); ;
3253 break;}
3254 case 341:
3255 #line 1777 "c-parse.y"
3256 { stmt_count++;
3257 emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
3258 if ( ! expand_exit_something ())
3259 error ("break statement not within loop or switch"); ;
3260 break;}
3261 case 342:
3262 #line 1782 "c-parse.y"
3263 { stmt_count++;
3264 emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
3265 if (! expand_continue_loop (NULL_PTR))
3266 error ("continue statement not within a loop"); ;
3267 break;}
3268 case 343:
3269 #line 1787 "c-parse.y"
3270 { stmt_count++;
3271 emit_line_note (yyvsp[-3].filename, yyvsp[-2].lineno);
3272 c_expand_return (NULL_TREE); ;
3273 break;}
3274 case 344:
3275 #line 1791 "c-parse.y"
3276 { stmt_count++;
3277 emit_line_note (yyvsp[-4].filename, yyvsp[-3].lineno);
3278 c_expand_return (yyvsp[-1].ttype); ;
3279 break;}
3280 case 345:
3281 #line 1795 "c-parse.y"
3282 { stmt_count++;
3283 emit_line_note (yyvsp[-7].filename, yyvsp[-6].lineno);
3284 STRIP_NOPS (yyvsp[-2].ttype);
3285 if ((TREE_CODE (yyvsp[-2].ttype) == ADDR_EXPR
3286 && TREE_CODE (TREE_OPERAND (yyvsp[-2].ttype, 0)) == STRING_CST)
3287 || TREE_CODE (yyvsp[-2].ttype) == STRING_CST)
3288 expand_asm (yyvsp[-2].ttype);
3289 else
3290 error ("argument of `asm' is not a constant string"); ;
3291 break;}
3292 case 346:
3293 #line 1806 "c-parse.y"
3294 { stmt_count++;
3295 emit_line_note (yyvsp[-9].filename, yyvsp[-8].lineno);
3296 c_expand_asm_operands (yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE, NULL_TREE,
3297 yyvsp[-6].ttype == ridpointers[(int)RID_VOLATILE],
3298 input_filename, lineno); ;
3299 break;}
3300 case 347:
3301 #line 1813 "c-parse.y"
3302 { stmt_count++;
3303 emit_line_note (yyvsp[-11].filename, yyvsp[-10].lineno);
3304 c_expand_asm_operands (yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype, NULL_TREE,
3305 yyvsp[-8].ttype == ridpointers[(int)RID_VOLATILE],
3306 input_filename, lineno); ;
3307 break;}
3308 case 348:
3309 #line 1821 "c-parse.y"
3310 { stmt_count++;
3311 emit_line_note (yyvsp[-13].filename, yyvsp[-12].lineno);
3312 c_expand_asm_operands (yyvsp[-8].ttype, yyvsp[-6].ttype, yyvsp[-4].ttype, yyvsp[-2].ttype,
3313 yyvsp[-10].ttype == ridpointers[(int)RID_VOLATILE],
3314 input_filename, lineno); ;
3315 break;}
3316 case 349:
3317 #line 1827 "c-parse.y"
3318 { tree decl;
3319 stmt_count++;
3320 emit_line_note (yyvsp[-4].filename, yyvsp[-3].lineno);
3321 decl = lookup_label (yyvsp[-1].ttype);
3322 if (decl != 0)
3324 TREE_USED (decl) = 1;
3325 expand_goto (decl);
3328 break;}
3329 case 350:
3330 #line 1838 "c-parse.y"
3331 { if (pedantic)
3332 pedwarn ("ANSI C forbids `goto *expr;'");
3333 stmt_count++;
3334 emit_line_note (yyvsp[-5].filename, yyvsp[-4].lineno);
3335 expand_computed_goto (convert (ptr_type_node, yyvsp[-1].ttype)); ;
3336 break;}
3337 case 353:
3338 #line 1853 "c-parse.y"
3340 /* The value returned by this action is */
3341 /* 1 if everything is OK */
3342 /* 0 in case of error or already bound iterator */
3344 yyval.itype = 0;
3345 if (TREE_CODE (yyvsp[-1].ttype) != VAR_DECL)
3346 error ("invalid `for (ITERATOR)' syntax");
3347 else if (! ITERATOR_P (yyvsp[-1].ttype))
3348 error ("`%s' is not an iterator",
3349 IDENTIFIER_POINTER (DECL_NAME (yyvsp[-1].ttype)));
3350 else if (ITERATOR_BOUND_P (yyvsp[-1].ttype))
3351 error ("`for (%s)' inside expansion of same iterator",
3352 IDENTIFIER_POINTER (DECL_NAME (yyvsp[-1].ttype)));
3353 else
3355 yyval.itype = 1;
3356 iterator_for_loop_start (yyvsp[-1].ttype);
3359 break;}
3360 case 354:
3361 #line 1874 "c-parse.y"
3363 if (yyvsp[-1].itype)
3364 iterator_for_loop_end (yyvsp[-3].ttype);
3366 break;}
3367 case 355:
3368 #line 1909 "c-parse.y"
3369 { register tree value = check_case_value (yyvsp[-1].ttype);
3370 register tree label
3371 = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
3373 stmt_count++;
3375 if (value != error_mark_node)
3377 tree duplicate;
3378 int success;
3380 if (pedantic && ! INTEGRAL_TYPE_P (TREE_TYPE (value)))
3381 pedwarn ("label must have integral type in ANSI C");
3383 success = pushcase (value, convert_and_check,
3384 label, &duplicate);
3386 if (success == 1)
3387 error ("case label not within a switch statement");
3388 else if (success == 2)
3390 error ("duplicate case value");
3391 error_with_decl (duplicate, "this is the first entry for that value");
3393 else if (success == 3)
3394 warning ("case value out of range");
3395 else if (success == 5)
3396 error ("case label within scope of cleanup or variable array");
3398 position_after_white_space (); ;
3399 break;}
3400 case 356:
3401 #line 1940 "c-parse.y"
3402 { register tree value1 = check_case_value (yyvsp[-3].ttype);
3403 register tree value2 = check_case_value (yyvsp[-1].ttype);
3404 register tree label
3405 = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
3407 if (pedantic)
3408 pedwarn ("ANSI C forbids case ranges");
3409 stmt_count++;
3411 if (value1 != error_mark_node && value2 != error_mark_node)
3413 tree duplicate;
3414 int success = pushcase_range (value1, value2,
3415 convert_and_check, label,
3416 &duplicate);
3417 if (success == 1)
3418 error ("case label not within a switch statement");
3419 else if (success == 2)
3421 error ("duplicate case value");
3422 error_with_decl (duplicate, "this is the first entry for that value");
3424 else if (success == 3)
3425 warning ("case value out of range");
3426 else if (success == 4)
3427 warning ("empty case range");
3428 else if (success == 5)
3429 error ("case label within scope of cleanup or variable array");
3431 position_after_white_space (); ;
3432 break;}
3433 case 357:
3434 #line 1971 "c-parse.y"
3436 tree duplicate;
3437 register tree label
3438 = build_decl (LABEL_DECL, NULL_TREE, NULL_TREE);
3439 int success = pushcase (NULL_TREE, 0, label, &duplicate);
3440 stmt_count++;
3441 if (success == 1)
3442 error ("default label not within a switch statement");
3443 else if (success == 2)
3445 error ("multiple default labels in one switch");
3446 error_with_decl (duplicate, "this is the first default label");
3448 position_after_white_space (); ;
3449 break;}
3450 case 358:
3451 #line 1986 "c-parse.y"
3452 { tree label = define_label (input_filename, lineno, yyvsp[-1].ttype);
3453 stmt_count++;
3454 emit_nop ();
3455 if (label)
3456 expand_label (label);
3457 position_after_white_space (); ;
3458 break;}
3459 case 359:
3460 #line 1998 "c-parse.y"
3461 { emit_line_note (input_filename, lineno);
3462 yyval.ttype = NULL_TREE; ;
3463 break;}
3464 case 360:
3465 #line 2001 "c-parse.y"
3466 { emit_line_note (input_filename, lineno); ;
3467 break;}
3468 case 361:
3469 #line 2006 "c-parse.y"
3470 { yyval.ttype = NULL_TREE; ;
3471 break;}
3472 case 363:
3473 #line 2013 "c-parse.y"
3474 { yyval.ttype = NULL_TREE; ;
3475 break;}
3476 case 366:
3477 #line 2020 "c-parse.y"
3478 { yyval.ttype = chainon (yyvsp[-2].ttype, yyvsp[0].ttype); ;
3479 break;}
3480 case 367:
3481 #line 2025 "c-parse.y"
3482 { yyval.ttype = build_tree_list (yyvsp[-3].ttype, yyvsp[-1].ttype); ;
3483 break;}
3484 case 368:
3485 #line 2030 "c-parse.y"
3486 { yyval.ttype = tree_cons (NULL_TREE, combine_strings (yyvsp[0].ttype), NULL_TREE); ;
3487 break;}
3488 case 369:
3489 #line 2032 "c-parse.y"
3490 { yyval.ttype = tree_cons (NULL_TREE, combine_strings (yyvsp[0].ttype), yyvsp[-2].ttype); ;
3491 break;}
3492 case 370:
3493 #line 2038 "c-parse.y"
3494 { pushlevel (0);
3495 clear_parm_order ();
3496 declare_parm_level (0); ;
3497 break;}
3498 case 371:
3499 #line 2042 "c-parse.y"
3500 { yyval.ttype = yyvsp[0].ttype;
3501 parmlist_tags_warning ();
3502 poplevel (0, 0, 0); ;
3503 break;}
3504 case 373:
3505 #line 2050 "c-parse.y"
3506 { tree parm;
3507 if (pedantic)
3508 pedwarn ("ANSI C forbids forward parameter declarations");
3509 /* Mark the forward decls as such. */
3510 for (parm = getdecls (); parm; parm = TREE_CHAIN (parm))
3511 TREE_ASM_WRITTEN (parm) = 1;
3512 clear_parm_order (); ;
3513 break;}
3514 case 374:
3515 #line 2058 "c-parse.y"
3516 { yyval.ttype = yyvsp[0].ttype; ;
3517 break;}
3518 case 375:
3519 #line 2060 "c-parse.y"
3520 { yyval.ttype = tree_cons (NULL_TREE, NULL_TREE, NULL_TREE); ;
3521 break;}
3522 case 376:
3523 #line 2066 "c-parse.y"
3524 { yyval.ttype = get_parm_info (0); ;
3525 break;}
3526 case 377:
3527 #line 2068 "c-parse.y"
3528 { yyval.ttype = get_parm_info (0);
3529 /* Gcc used to allow this as an extension. However, it does
3530 not work for all targets, and thus has been disabled.
3531 Also, since func (...) and func () are indistinguishable,
3532 it caused problems with the code in expand_builtin which
3533 tries to verify that BUILT_IN_NEXT_ARG is being used
3534 correctly. */
3535 error ("ANSI C requires a named argument before `...'");
3537 break;}
3538 case 378:
3539 #line 2078 "c-parse.y"
3540 { yyval.ttype = get_parm_info (1); ;
3541 break;}
3542 case 379:
3543 #line 2080 "c-parse.y"
3544 { yyval.ttype = get_parm_info (0); ;
3545 break;}
3546 case 380:
3547 #line 2085 "c-parse.y"
3548 { push_parm_decl (yyvsp[0].ttype); ;
3549 break;}
3550 case 381:
3551 #line 2087 "c-parse.y"
3552 { push_parm_decl (yyvsp[0].ttype); ;
3553 break;}
3554 case 382:
3555 #line 2094 "c-parse.y"
3556 { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
3557 yyvsp[-1].ttype),
3558 build_tree_list (prefix_attributes,
3559 yyvsp[0].ttype));
3560 current_declspecs = TREE_VALUE (declspec_stack);
3561 prefix_attributes = TREE_PURPOSE (declspec_stack);
3562 declspec_stack = TREE_CHAIN (declspec_stack);
3563 resume_momentary (yyvsp[-2].itype); ;
3564 break;}
3565 case 383:
3566 #line 2103 "c-parse.y"
3567 { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
3568 yyvsp[-1].ttype),
3569 build_tree_list (prefix_attributes,
3570 yyvsp[0].ttype));
3571 current_declspecs = TREE_VALUE (declspec_stack);
3572 prefix_attributes = TREE_PURPOSE (declspec_stack);
3573 declspec_stack = TREE_CHAIN (declspec_stack);
3574 resume_momentary (yyvsp[-2].itype); ;
3575 break;}
3576 case 384:
3577 #line 2112 "c-parse.y"
3578 { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
3579 yyvsp[-1].ttype),
3580 build_tree_list (prefix_attributes,
3581 yyvsp[0].ttype));
3582 current_declspecs = TREE_VALUE (declspec_stack);
3583 prefix_attributes = TREE_PURPOSE (declspec_stack);
3584 declspec_stack = TREE_CHAIN (declspec_stack);
3585 resume_momentary (yyvsp[-2].itype); ;
3586 break;}
3587 case 385:
3588 #line 2121 "c-parse.y"
3589 { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
3590 yyvsp[-1].ttype),
3591 build_tree_list (prefix_attributes,
3592 yyvsp[0].ttype));
3593 current_declspecs = TREE_VALUE (declspec_stack);
3594 prefix_attributes = TREE_PURPOSE (declspec_stack);
3595 declspec_stack = TREE_CHAIN (declspec_stack);
3596 resume_momentary (yyvsp[-2].itype); ;
3597 break;}
3598 case 386:
3599 #line 2131 "c-parse.y"
3600 { yyval.ttype = build_tree_list (build_tree_list (current_declspecs,
3601 yyvsp[-1].ttype),
3602 build_tree_list (prefix_attributes,
3603 yyvsp[0].ttype));
3604 current_declspecs = TREE_VALUE (declspec_stack);
3605 prefix_attributes = TREE_PURPOSE (declspec_stack);
3606 declspec_stack = TREE_CHAIN (declspec_stack);
3607 resume_momentary (yyvsp[-2].itype); ;
3608 break;}
3609 case 387:
3610 #line 2145 "c-parse.y"
3611 { pushlevel (0);
3612 clear_parm_order ();
3613 declare_parm_level (1); ;
3614 break;}
3615 case 388:
3616 #line 2149 "c-parse.y"
3617 { yyval.ttype = yyvsp[0].ttype;
3618 parmlist_tags_warning ();
3619 poplevel (0, 0, 0); ;
3620 break;}
3621 case 390:
3622 #line 2157 "c-parse.y"
3623 { tree t;
3624 for (t = yyvsp[-1].ttype; t; t = TREE_CHAIN (t))
3625 if (TREE_VALUE (t) == NULL_TREE)
3626 error ("`...' in old-style identifier list");
3627 yyval.ttype = tree_cons (NULL_TREE, NULL_TREE, yyvsp[-1].ttype); ;
3628 break;}
3629 case 391:
3630 #line 2167 "c-parse.y"
3631 { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
3632 break;}
3633 case 392:
3634 #line 2169 "c-parse.y"
3635 { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
3636 break;}
3637 case 393:
3638 #line 2175 "c-parse.y"
3639 { yyval.ttype = build_tree_list (NULL_TREE, yyvsp[0].ttype); ;
3640 break;}
3641 case 394:
3642 #line 2177 "c-parse.y"
3643 { yyval.ttype = chainon (yyvsp[-2].ttype, build_tree_list (NULL_TREE, yyvsp[0].ttype)); ;
3644 break;}
3645 case 395:
3646 #line 2182 "c-parse.y"
3647 { yyval.itype = pedantic;
3648 pedantic = 0; ;
3649 break;}
3651 /* the action file gets copied in in place of this dollarsign */
3652 #line 487 "/usr/share/bison.simple"
3654 yyvsp -= yylen;
3655 yyssp -= yylen;
3656 #ifdef YYLSP_NEEDED
3657 yylsp -= yylen;
3658 #endif
3660 #if YYDEBUG != 0
3661 if (yydebug)
3663 short *ssp1 = yyss - 1;
3664 fprintf (stderr, "state stack now");
3665 while (ssp1 != yyssp)
3666 fprintf (stderr, " %d", *++ssp1);
3667 fprintf (stderr, "\n");
3669 #endif
3671 *++yyvsp = yyval;
3673 #ifdef YYLSP_NEEDED
3674 yylsp++;
3675 if (yylen == 0)
3677 yylsp->first_line = yylloc.first_line;
3678 yylsp->first_column = yylloc.first_column;
3679 yylsp->last_line = (yylsp-1)->last_line;
3680 yylsp->last_column = (yylsp-1)->last_column;
3681 yylsp->text = 0;
3683 else
3685 yylsp->last_line = (yylsp+yylen-1)->last_line;
3686 yylsp->last_column = (yylsp+yylen-1)->last_column;
3688 #endif
3690 /* Now "shift" the result of the reduction.
3691 Determine what state that goes to,
3692 based on the state we popped back to
3693 and the rule number reduced by. */
3695 yyn = yyr1[yyn];
3697 yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
3698 if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
3699 yystate = yytable[yystate];
3700 else
3701 yystate = yydefgoto[yyn - YYNTBASE];
3703 goto yynewstate;
3705 yyerrlab: /* here on detecting error */
3707 if (! yyerrstatus)
3708 /* If not already recovering from an error, report this error. */
3710 ++yynerrs;
3712 #ifdef YYERROR_VERBOSE
3713 yyn = yypact[yystate];
3715 if (yyn > YYFLAG && yyn < YYLAST)
3717 int size = 0;
3718 char *msg;
3719 int x, count;
3721 count = 0;
3722 /* Start X at -yyn if nec to avoid negative indexes in yycheck. */
3723 for (x = (yyn < 0 ? -yyn : 0);
3724 x < (sizeof(yytname) / sizeof(char *)); x++)
3725 if (yycheck[x + yyn] == x)
3726 size += strlen(yytname[x]) + 15, count++;
3727 msg = (char *) malloc(size + 15);
3728 if (msg != 0)
3730 strcpy(msg, "parse error");
3732 if (count < 5)
3734 count = 0;
3735 for (x = (yyn < 0 ? -yyn : 0);
3736 x < (sizeof(yytname) / sizeof(char *)); x++)
3737 if (yycheck[x + yyn] == x)
3739 strcat(msg, count == 0 ? ", expecting `" : " or `");
3740 strcat(msg, yytname[x]);
3741 strcat(msg, "'");
3742 count++;
3745 yyerror(msg);
3746 free(msg);
3748 else
3749 yyerror ("parse error; also virtual memory exceeded");
3751 else
3752 #endif /* YYERROR_VERBOSE */
3753 yyerror("parse error");
3756 goto yyerrlab1;
3757 yyerrlab1: /* here on error raised explicitly by an action */
3759 if (yyerrstatus == 3)
3761 /* if just tried and failed to reuse lookahead token after an error, discard it. */
3763 /* return failure if at end of input */
3764 if (yychar == YYEOF)
3765 YYABORT;
3767 #if YYDEBUG != 0
3768 if (yydebug)
3769 fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
3770 #endif
3772 yychar = YYEMPTY;
3775 /* Else will try to reuse lookahead token
3776 after shifting the error token. */
3778 yyerrstatus = 3; /* Each real token shifted decrements this */
3780 goto yyerrhandle;
3782 yyerrdefault: /* current state does not do anything special for the error token. */
3784 #if 0
3785 /* This is wrong; only states that explicitly want error tokens
3786 should shift them. */
3787 yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/
3788 if (yyn) goto yydefault;
3789 #endif
3791 yyerrpop: /* pop the current state because it cannot handle the error token */
3793 if (yyssp == yyss) YYABORT;
3794 yyvsp--;
3795 yystate = *--yyssp;
3796 #ifdef YYLSP_NEEDED
3797 yylsp--;
3798 #endif
3800 #if YYDEBUG != 0
3801 if (yydebug)
3803 short *ssp1 = yyss - 1;
3804 fprintf (stderr, "Error: state stack now");
3805 while (ssp1 != yyssp)
3806 fprintf (stderr, " %d", *++ssp1);
3807 fprintf (stderr, "\n");
3809 #endif
3811 yyerrhandle:
3813 yyn = yypact[yystate];
3814 if (yyn == YYFLAG)
3815 goto yyerrdefault;
3817 yyn += YYTERROR;
3818 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
3819 goto yyerrdefault;
3821 yyn = yytable[yyn];
3822 if (yyn < 0)
3824 if (yyn == YYFLAG)
3825 goto yyerrpop;
3826 yyn = -yyn;
3827 goto yyreduce;
3829 else if (yyn == 0)
3830 goto yyerrpop;
3832 if (yyn == YYFINAL)
3833 YYACCEPT;
3835 #if YYDEBUG != 0
3836 if (yydebug)
3837 fprintf(stderr, "Shifting error token, ");
3838 #endif
3840 *++yyvsp = yylval;
3841 #ifdef YYLSP_NEEDED
3842 *++yylsp = yylloc;
3843 #endif
3845 yystate = yyn;
3846 goto yynewstate;
3848 #line 2186 "c-parse.y"