1 |
2 | /* A Bison parser, made from parse.y
3 | by GNU Bison version 1.25
4 | */
5 |
6 | #define YYBISON 1 /* Identify Bison output. */
7 |
8 | #define IDENTIFIER 258
9 | #define TYPE_NAME 259
10 | #define LITERAL 260
11 | #define STRING_LITERAL 261
12 | #define ELLIPSES 262
13 | #define MUL_ASSIGN 263
14 | #define DIV_ASSIGN 264
15 | #define MOD_ASSIGN 265
16 | #define ADD_ASSIGN 266
17 | #define SUB_ASSIGN 267
18 | #define LEFT_ASSIGN 268
19 | #define RIGHT_ASSIGN 269
20 | #define AND_ASSIGN 270
21 | #define XOR_ASSIGN 271
22 | #define OR_ASSIGN 272
23 | #define EQ_OP 273
24 | #define NE_OP 274
25 | #define PTR_OP 275
26 | #define AND_OP 276
27 | #define OR_OP 277
28 | #define DEC_OP 278
29 | #define INC_OP 279
30 | #define LE_OP 280
31 | #define GE_OP 281
32 | #define LEFT_SHIFT 282
33 | #define RIGHT_SHIFT 283
34 | #define SIZEOF 284
35 | #define TYPEDEF 285
36 | #define EXTERN 286
37 | #define STATIC 287
38 | #define AUTO 288
39 | #define REGISTER 289
40 | #define CONST 290
41 | #define VOLATILE 291
42 | #define VOID 292
43 | #define INLINE 293
44 | #define CHAR 294
45 | #define SHORT 295
46 | #define INT 296
47 | #define LONG 297
48 | #define SIGNED 298
49 | #define UNSIGNED 299
50 | #define FLOAT 300
51 | #define DOUBLE 301
52 | #define STRUCT 302
53 | #define UNION 303
54 | #define ENUM 304
55 | #define CASE 305
56 | #define DEFAULT 306
57 | #define IF 307
58 | #define ELSE 308
59 | #define SWITCH 309
60 | #define WHILE 310
61 | #define DO 311
62 | #define FOR 312
63 | #define GOTO 313
64 | #define CONTINUE 314
65 | #define BREAK 315
66 | #define RETURN 316
67 | #define ASM 317
68 |
69 |
70 | /***************************************
71 | $Header: /home/amb/cxref/RCS/parse.y 1.38 1999/01/27 19:19:31 amb Exp $
72 |
73 | C Cross Referencing & Documentation tool. Version 1.5.
74 |
75 | C parser.
76 | ******************/ /******************
77 | Written by Andrew M. Bishop
78 |
79 | This file Copyright 1995,96,97,98 Andrew M. Bishop
80 | It may be distributed under the GNU Public License, version 2, or
81 | any higher version. See section COPYING of the GNU Public license
82 | for conditions under which this file may be redistributed.
83 | ***************************************/
84 |
85 | #include <string.h>
86 | #include "parse-yy.h"
87 | #include "cxref.h"
88 | #include "memory.h"
89 |
90 | /*+ A structure to hold the information about an object. +*/
91 | typedef struct _stack
92 | {
93 | char *name; /*+ The name of the object. +*/
94 | char *type; /*+ The type of the object. +*/
95 | char *qual; /*+ The type qualifier of the object. +*/
96 | }
97 | stack;
98 |
99 | #define yylex cxref_yylex
100 |
101 | static int cxref_yylex(void);
102 |
103 | static void yyerror(char *s);
104 |
105 | /*+ When in a header file, some stuff can be skipped over quickly. +*/
106 | extern int in_header;
107 |
108 | /*+ A flag that is set to true when typedef is seen in a statement. +*/
109 | int in_typedef=0;
110 |
111 | /*+ The scope of the function / variable that is being examined. +*/
112 | static int scope;
113 |
114 | /*+ The variable must be LOCAL or EXTERNAL or GLOBAL, so this checks and sets that. +*/
115 | #define SCOPE ( scope&(LOCAL|EXTERNAL|EXTERN_H|EXTERN_F) ? scope : scope|GLOBAL )
116 |
117 | /*+ When in a function or a function definition, the behaviour is different. +*/
118 | static int in_function=0,in_funcdef=0,in_funcbody=0;
119 |
120 | /*+ The parsing stack +*/
121 | static stack first={NULL,NULL,NULL}, /*+ first value. +*/
122 | *list=NULL, /*+ list of all values. +*/
123 | *current=&first; /*+ current values. +*/
124 |
125 | /*+ The depth of the stack +*/
126 | static int depth=0, /*+ currently in use. +*/
127 | maxdepth=0; /*+ total malloced. +*/
128 |
129 | /*+ Declarations that are in the same statement share this comment. +*/
130 | static char* common_comment=NULL;
131 |
132 | /*+ When inside a struct / union / enum definition, this is the depth. +*/
133 | static int in_structunion=0;
134 |
135 | /*+ When inside a struct / union definition, this is the component type. +*/
136 | static char *comp_type=NULL;
137 |
138 | /*+ To solve the problem where a type name is used as an identifier. +*/
139 | static int in_type_spec=0;
140 |
141 |
142 | /*++++++++++++++++++++++++++++++++++++++
143 | Reset the current level on the stack.
144 | ++++++++++++++++++++++++++++++++++++++*/
145 |
146 | static void reset(void)
147 | {
148 | current->name=NULL;
149 | current->type=NULL;
150 | current->qual=NULL;
151 | }
152 |
153 |
154 | /*++++++++++++++++++++++++++++++++++++++
155 | Push a level onto the stack.
156 | ++++++++++++++++++++++++++++++++++++++*/
157 |
158 | static void push(void)
159 | {
160 | if(list==NULL)
161 | {
162 | list=(stack*)Malloc(8*sizeof(struct _stack));
163 | list[0]=first;
164 | maxdepth=8;
165 | }
166 | else if(depth==maxdepth)
167 | {
168 | list=Realloc(list,(maxdepth+8)*sizeof(struct _stack));
169 | maxdepth+=8;
170 | }
171 |
172 | depth++;
173 | current=&list[depth];
174 |
175 | reset();
176 | }
177 |
178 |
179 | /*++++++++++++++++++++++++++++++++++++++
180 | Pop a level from the stack.
181 | ++++++++++++++++++++++++++++++++++++++*/
182 |
183 | static void pop(void)
184 | {
185 | reset();
186 |
187 | depth--;
188 | current=&list[depth];
189 | }
190 |
191 |
192 | /*++++++++++++++++++++++++++++++++++++++
193 | Reset the Parser, ready for the next file.
194 | ++++++++++++++++++++++++++++++++++++++*/
195 |
196 | void ResetParser(void)
197 | {
198 | in_typedef=0;
199 | scope=0;
200 | in_function=0;
201 | in_funcdef=0;
202 | in_funcbody=0;
203 | depth=0;
204 | maxdepth=0;
205 | if(list) Free(list);
206 | list=NULL;
207 | current=&first;
208 | reset();
209 | common_comment=NULL;
210 | in_structunion=0;
211 | comp_type=NULL;
212 | in_type_spec=0;
213 | }
214 |
215 | #ifndef YYSTYPE
216 | #define YYSTYPE int
217 | #endif
218 | #include <stdio.h>
219 |
220 | #ifndef __cplusplus
221 | #ifndef __STDC__
222 | #define const
223 | #endif
224 | #endif
225 |
226 |
227 |
228 | #define YYFINAL 554
229 | #define YYFLAG -32768
230 | #define YYNTBASE 87
231 |
232 | #define YYTRANSLATE(x) ((unsigned)(x) <= 317 ? yytranslate[x] : 255)
233 |
234 | static const char yytranslate[] = { 0,
235 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
236 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
237 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
238 | 2, 2, 85, 2, 2, 2, 83, 77, 2, 68,
239 | 69, 72, 80, 64, 81, 86, 82, 2, 2, 2,
240 | 2, 2, 2, 2, 2, 2, 2, 73, 63, 78,
241 | 65, 79, 74, 2, 2, 2, 2, 2, 2, 2,
242 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
243 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
244 | 70, 2, 71, 76, 2, 2, 2, 2, 2, 2,
245 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
246 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
247 | 2, 2, 66, 75, 67, 84, 2, 2, 2, 2,
248 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
249 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
250 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
251 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
252 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
253 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
254 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
255 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
256 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
257 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
258 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
259 | 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
260 | 2, 2, 2, 2, 2, 1, 2, 3, 4, 5,
261 | 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
262 | 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
263 | 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
264 | 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
265 | 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
266 | 56, 57, 58, 59, 60, 61, 62
267 | };
268 |
269 | #if YYDEBUG != 0
270 | static const short yyprhs[] = { 0,
271 | 0, 1, 3, 5, 8, 10, 12, 14, 16, 18,
272 | 21, 25, 28, 30, 32, 35, 37, 40, 42, 45,
273 | 47, 48, 53, 55, 57, 60, 63, 67, 70, 72,
274 | 76, 78, 81, 85, 90, 92, 95, 97, 101, 104,
275 | 108, 112, 117, 120, 124, 128, 133, 135, 138, 140,
276 | 143, 146, 150, 152, 156, 158, 160, 162, 166, 167,
277 | 168, 175, 177, 179, 181, 183, 185, 187, 189, 191,
278 | 194, 196, 198, 200, 202, 204, 206, 208, 210, 212,
279 | 214, 216, 218, 221, 224, 226, 229, 232, 234, 236,
280 | 238, 240, 242, 244, 246, 248, 250, 253, 255, 257,
281 | 258, 264, 265, 272, 274, 277, 279, 283, 285, 289,
282 | 291, 294, 296, 298, 300, 302, 303, 309, 310, 317,
283 | 320, 322, 324, 326, 328, 329, 335, 336, 343, 346,
284 | 348, 350, 351, 353, 355, 358, 360, 363, 366, 368,
285 | 369, 374, 375, 381, 382, 388, 390, 394, 396, 398,
286 | 400, 403, 407, 409, 411, 413, 414, 418, 420, 422,
287 | 425, 428, 432, 434, 436, 439, 440, 446, 448, 449,
288 | 451, 453, 455, 459, 461, 465, 467, 471, 474, 476,
289 | 479, 481, 483, 485, 487, 489, 491, 493, 495, 497,
290 | 499, 501, 503, 505, 508, 509, 510, 516, 517, 519,
291 | 521, 524, 526, 528, 530, 538, 544, 546, 548, 550,
292 | 558, 564, 567, 571, 575, 579, 584, 589, 594, 600,
293 | 606, 609, 612, 615, 618, 620, 622, 628, 631, 634,
294 | 637, 641, 643, 646, 650, 652, 654, 658, 660, 662,
295 | 666, 672, 674, 676, 678, 680, 682, 684, 686, 688,
296 | 690, 692, 694, 696, 702, 707, 709, 713, 715, 719,
297 | 721, 725, 727, 731, 733, 737, 739, 743, 745, 747,
298 | 749, 753, 755, 757, 759, 761, 763, 767, 769, 771,
299 | 773, 777, 779, 781, 783, 787, 789, 791, 793, 795,
300 | 797, 799, 801, 803, 805, 807, 809, 811, 813, 815,
301 | 818, 821, 826, 833, 840, 843, 846, 849, 852, 857,
302 | 860, 863, 866, 868, 870, 872, 874, 876, 878, 880,
303 | 882, 884, 888, 892, 896, 901, 905, 910, 913, 916,
304 | 921, 923, 925, 927, 929, 931, 934, 938, 939, 940,
305 | 946, 948, 950, 954, 960, 968, 978, 990, 992, 995,
306 | 998, 999, 1001, 1005, 1010, 1011, 1013, 1017, 1022, 1025,
307 | 1027, 1031, 1032, 1034, 1038, 1042, 1048, 1053, 1060, 1062
308 | };
309 |
310 | static const short yyrhs[] = { -1,
311 | 88, 0, 89, 0, 88, 89, 0, 91, 0, 157,
312 | 0, 244, 0, 195, 0, 91, 0, 90, 91, 0,
313 | 92, 94, 63, 0, 92, 63, 0, 93, 0, 111,
314 | 0, 111, 93, 0, 114, 0, 114, 93, 0, 113,
315 | 0, 113, 93, 0, 96, 0, 0, 94, 64, 95,
316 | 96, 0, 97, 0, 103, 0, 103, 249, 0, 103,
317 | 98, 0, 103, 249, 98, 0, 65, 100, 0, 100,
318 | 0, 99, 64, 100, 0, 199, 0, 66, 67, 0,
319 | 66, 99, 67, 0, 66, 99, 64, 67, 0, 104,
320 | 0, 104, 102, 0, 102, 0, 68, 101, 69, 0,
321 | 70, 71, 0, 102, 70, 71, 0, 70, 242, 71,
322 | 0, 102, 70, 242, 71, 0, 68, 69, 0, 102,
323 | 68, 69, 0, 68, 168, 69, 0, 102, 68, 168,
324 | 69, 0, 105, 0, 104, 105, 0, 72, 0, 72,
325 | 112, 0, 72, 104, 0, 72, 112, 104, 0, 106,
326 | 0, 68, 103, 69, 0, 107, 0, 163, 0, 3,
327 | 0, 105, 70, 71, 0, 0, 0, 105, 70, 108,
328 | 242, 109, 71, 0, 3, 0, 33, 0, 31, 0,
329 | 34, 0, 32, 0, 30, 0, 38, 0, 113, 0,
330 | 112, 113, 0, 35, 0, 36, 0, 115, 0, 122,
331 | 0, 116, 0, 117, 0, 132, 0, 119, 0, 138,
332 | 0, 120, 0, 45, 0, 46, 0, 46, 42, 0,
333 | 42, 46, 0, 118, 0, 118, 113, 0, 117, 118,
334 | 0, 43, 0, 44, 0, 39, 0, 40, 0, 41,
335 | 0, 42, 0, 4, 0, 37, 0, 92, 0, 92,
336 | 101, 0, 123, 0, 130, 0, 0, 49, 66, 124,
337 | 126, 67, 0, 0, 49, 131, 66, 125, 126, 67,
338 | 0, 127, 0, 127, 64, 0, 128, 0, 127, 64,
339 | 128, 0, 129, 0, 129, 65, 199, 0, 3, 0,
340 | 49, 131, 0, 3, 0, 4, 0, 133, 0, 136,
341 | 0, 0, 47, 66, 134, 144, 67, 0, 0, 47,
342 | 137, 66, 135, 144, 67, 0, 47, 137, 0, 3,
343 | 0, 4, 0, 139, 0, 142, 0, 0, 48, 66,
344 | 140, 144, 67, 0, 0, 48, 143, 66, 141, 144,
345 | 67, 0, 48, 143, 0, 3, 0, 4, 0, 0,
346 | 145, 0, 146, 0, 145, 146, 0, 63, 0, 133,
347 | 63, 0, 139, 63, 0, 147, 0, 0, 114, 148,
348 | 151, 63, 0, 0, 112, 114, 149, 151, 63, 0,
349 | 0, 114, 112, 150, 151, 63, 0, 152, 0, 151,
350 | 64, 152, 0, 153, 0, 154, 0, 103, 0, 73,
351 | 155, 0, 103, 73, 155, 0, 199, 0, 3, 0,
352 | 4, 0, 0, 159, 158, 173, 0, 160, 0, 161,
353 | 0, 92, 161, 0, 161, 90, 0, 92, 161, 90,
354 | 0, 162, 0, 163, 0, 104, 163, 0, 0, 165,
355 | 68, 164, 166, 69, 0, 105, 0, 0, 168, 0,
356 | 167, 0, 3, 0, 167, 64, 3, 0, 169, 0,
357 | 169, 64, 7, 0, 170, 0, 169, 64, 170, 0,
358 | 92, 103, 0, 92, 0, 92, 101, 0, 244, 0,
359 | 173, 0, 178, 0, 181, 0, 186, 0, 190, 0,
360 | 191, 0, 192, 0, 193, 0, 194, 0, 195, 0,
361 | 196, 0, 171, 0, 172, 171, 0, 0, 0, 66,
362 | 174, 176, 175, 67, 0, 0, 177, 0, 172, 0,
363 | 177, 172, 0, 90, 0, 180, 0, 179, 0, 52,
364 | 68, 197, 69, 171, 53, 171, 0, 52, 68, 197,
365 | 69, 171, 0, 182, 0, 183, 0, 185, 0, 56,
366 | 171, 55, 68, 197, 69, 63, 0, 57, 68, 184,
367 | 69, 171, 0, 63, 63, 0, 197, 63, 63, 0,
368 | 63, 197, 63, 0, 63, 63, 197, 0, 63, 197,
369 | 63, 197, 0, 197, 63, 63, 197, 0, 197, 63,
370 | 197, 63, 0, 197, 63, 197, 63, 197, 0, 55,
371 | 68, 197, 69, 171, 0, 187, 73, 0, 189, 73,
372 | 0, 188, 73, 0, 50, 242, 0, 51, 0, 3,
373 | 0, 54, 68, 197, 69, 171, 0, 60, 63, 0,
374 | 59, 63, 0, 197, 63, 0, 58, 3, 63, 0,
375 | 63, 0, 61, 63, 0, 61, 197, 63, 0, 198,
376 | 0, 199, 0, 198, 64, 199, 0, 201, 0, 250,
377 | 0, 217, 200, 199, 0, 217, 200, 66, 251, 67,
378 | 0, 65, 0, 8, 0, 9, 0, 10, 0, 11,
379 | 0, 12, 0, 13, 0, 14, 0, 15, 0, 16,
380 | 0, 17, 0, 202, 0, 202, 74, 197, 73, 201,
381 | 0, 202, 74, 73, 201, 0, 203, 0, 202, 22,
382 | 203, 0, 204, 0, 203, 21, 204, 0, 205, 0,
383 | 204, 75, 205, 0, 206, 0, 205, 76, 206, 0,
384 | 207, 0, 206, 77, 207, 0, 209, 0, 207, 208,
385 | 209, 0, 18, 0, 19, 0, 211, 0, 209, 210,
386 | 211, 0, 78, 0, 25, 0, 79, 0, 26, 0,
387 | 213, 0, 211, 212, 213, 0, 27, 0, 28, 0,
388 | 215, 0, 213, 214, 215, 0, 80, 0, 81, 0,
389 | 217, 0, 215, 216, 217, 0, 72, 0, 82, 0,
390 | 83, 0, 218, 0, 219, 0, 220, 0, 221, 0,
391 | 222, 0, 223, 0, 224, 0, 225, 0, 226, 0,
392 | 227, 0, 228, 0, 77, 217, 0, 84, 217, 0,
393 | 68, 121, 69, 217, 0, 68, 121, 69, 66, 251,
394 | 67, 0, 68, 121, 69, 66, 254, 67, 0, 72,
395 | 217, 0, 85, 217, 0, 23, 217, 0, 24, 217,
396 | 0, 29, 68, 121, 69, 0, 29, 217, 0, 81,
397 | 217, 0, 80, 217, 0, 229, 0, 232, 0, 233,
398 | 0, 234, 0, 235, 0, 236, 0, 237, 0, 230,
399 | 0, 231, 0, 228, 86, 156, 0, 228, 20, 156,
400 | 0, 228, 68, 69, 0, 228, 68, 243, 69, 0,
401 | 110, 68, 69, 0, 110, 68, 243, 69, 0, 228,
402 | 23, 0, 228, 24, 0, 228, 70, 197, 71, 0,
403 | 110, 0, 5, 0, 238, 0, 239, 0, 6, 0,
404 | 238, 6, 0, 68, 197, 69, 0, 0, 0, 68,
405 | 240, 173, 241, 69, 0, 197, 0, 199, 0, 243,
406 | 64, 199, 0, 245, 68, 238, 69, 63, 0, 245,
407 | 68, 238, 73, 246, 69, 63, 0, 245, 68, 238,
408 | 73, 246, 73, 246, 69, 63, 0, 245, 68, 238,
409 | 73, 246, 73, 246, 73, 248, 69, 63, 0, 62,
410 | 0, 62, 36, 0, 36, 62, 0, 0, 247, 0,
411 | 246, 64, 247, 0, 238, 68, 197, 69, 0, 0,
412 | 238, 0, 248, 64, 238, 0, 62, 68, 238, 69,
413 | 0, 21, 189, 0, 252, 0, 251, 64, 252, 0,
414 | 0, 199, 0, 66, 251, 67, 0, 156, 73, 199,
415 | 0, 156, 73, 66, 251, 67, 0, 86, 156, 65,
416 | 199, 0, 86, 156, 65, 66, 251, 67, 0, 253,
417 | 0, 254, 64, 253, 0
418 | };
419 |
420 | #endif
421 |
422 | #if YYDEBUG != 0
423 | static const short yyrline[] = { 0,
424 | 169, 170, 174, 175, 179, 181, 183, 184, 190, 192,
425 | 198, 200, 205, 211, 212, 214, 216, 219, 220, 227,
426 | 228, 229, 232, 279, 280, 281, 282, 286, 290, 291,
427 | 295, 296, 297, 298, 305, 306, 308, 312, 315, 317,
428 | 319, 321, 323, 325, 327, 329, 336, 338, 343, 344,
429 | 346, 348, 353, 354, 358, 359, 363, 370, 372, 372,
430 | 373, 379, 383, 385, 390, 392, 394, 398, 403, 404,
431 | 409, 411, 418, 423, 424, 425, 426, 427, 428, 429,
432 | 433, 434, 435, 437, 442, 443, 445, 450, 451, 452,
433 | 453, 454, 455, 459, 463, 467, 469, 476, 477, 481,
434 | 489, 494, 502, 510, 511, 515, 516, 521, 523, 528,
435 | 532, 537, 538, 544, 545, 549, 557, 562, 570, 578,
436 | 583, 584, 590, 591, 595, 603, 608, 616, 624, 629,
437 | 630, 636, 637, 641, 642, 647, 648, 651, 654, 658,
438 | 660, 662, 664, 666, 668, 673, 675, 681, 682, 686,
439 | 691, 693, 698, 702, 703, 711, 714, 718, 740, 741,
440 | 743, 744, 751, 756, 757, 762, 765, 771, 779, 782,
441 | 783, 787, 789, 795, 796, 802, 805, 811, 813, 815,
442 | 822, 823, 824, 825, 826, 827, 828, 829, 830, 831,
443 | 832, 833, 837, 838, 844, 847, 849, 852, 853, 854,
444 | 855, 859, 865, 866, 870, 874, 880, 881, 882, 886,
445 | 890, 894, 895, 896, 897, 898, 899, 900, 901, 905,
446 | 911, 912, 913, 917, 921, 925, 931, 937, 940, 944,
447 | 948, 952, 956, 957, 963, 969, 970, 977, 978, 979,
448 | 980, 983, 984, 985, 986, 987, 988, 989, 990, 991,
449 | 992, 993, 999, 1000, 1002, 1009, 1010, 1017, 1018, 1025,
450 | 1026, 1033, 1034, 1041, 1042, 1049, 1050, 1054, 1055, 1061,
451 | 1062, 1066, 1067, 1068, 1069, 1075, 1076, 1080, 1081, 1087,
452 | 1088, 1092, 1093, 1099, 1100, 1104, 1105, 1106, 1112, 1113,
453 | 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121, 1122, 1126,
454 | 1130, 1135, 1137, 1138, 1142, 1146, 1151, 1155, 1159, 1161,
455 | 1166, 1171, 1178, 1179, 1180, 1182, 1183, 1184, 1185, 1189,
456 | 1190, 1194, 1198, 1202, 1203, 1207, 1208, 1212, 1216, 1220,
457 | 1224, 1226, 1227, 1228, 1231, 1232, 1236, 1238, 1238, 1239,
458 | 1244, 1248, 1249, 1257, 1258, 1259, 1260, 1264, 1265, 1266,
459 | 1270, 1271, 1272, 1276, 1280, 1281, 1282, 1286, 1292, 1298,
460 | 1299, 1303, 1304, 1305, 1309, 1310, 1311, 1312, 1316, 1317
461 | };
462 | #endif
463 |
464 |
465 | #if YYDEBUG != 0 || defined (YYERROR_VERBOSE)
466 |
467 | static const char * const yytname[] = { "$","error","$undefined.","IDENTIFIER",
468 | "TYPE_NAME","LITERAL","STRING_LITERAL","ELLIPSES","MUL_ASSIGN","DIV_ASSIGN",
469 | "MOD_ASSIGN","ADD_ASSIGN","SUB_ASSIGN","LEFT_ASSIGN","RIGHT_ASSIGN","AND_ASSIGN",
470 | "XOR_ASSIGN","OR_ASSIGN","EQ_OP","NE_OP","PTR_OP","AND_OP","OR_OP","DEC_OP",
471 | "INC_OP","LE_OP","GE_OP","LEFT_SHIFT","RIGHT_SHIFT","SIZEOF","TYPEDEF","EXTERN",
472 | "STATIC","AUTO","REGISTER","CONST","VOLATILE","VOID","INLINE","CHAR","SHORT",
473 | "INT","LONG","SIGNED","UNSIGNED","FLOAT","DOUBLE","STRUCT","UNION","ENUM","CASE",
474 | "DEFAULT","IF","ELSE","SWITCH","WHILE","DO","FOR","GOTO","CONTINUE","BREAK",
475 | "RETURN","ASM","';'","','","'='","'{'","'}'","'('","')'","'['","']'","'*'","':'",
476 | "'?'","'|'","'^'","'&'","'<'","'>'","'+'","'-'","'/'","'%'","'~'","'!'","'.'",
477 | "file","program","top_level_declaration","declaration_list","declaration","declaration_specifiers",
478 | "declaration_specifiers1","initialized_declarator_list","@1","initialized_declarator",
479 | "initialized_declarator1","initializer_part","initializer_list","initializer",
480 | "abstract_declarator","direct_abstract_declarator","declarator","pointer","direct_declarator",
481 | "simple_declarator","array_declarator","@2","@3","name","storage_class_specifier",
482 | "type_qualifier_list","type_qualifier","type_specifier","type_specifier1","floating_type_specifier",
483 | "integer_type_specifier","integer_type_specifier_part","typedef_name","void_type_specifier",
484 | "type_name","enumeration_type_specifier","enumeration_type_definition","@4",
485 | "@5","enumeration_definition_list","enumeration_definition_list1","enumeration_constant_definition",
486 | "enumeration_constant","enumeration_type_reference","enumeration_tag","structure_type_specifier",
487 | "structure_type_definition","@6","@7","structure_type_reference","structure_tag",
488 | "union_type_specifier","union_type_definition","@8","@9","union_type_reference",
489 | "union_tag","field_list","field_list1","field_list2","component_declaration",
490 | "@10","@11","@12","component_declarator_list","component_declarator","simple_component",
491 | "bit_field","width","component_name","function_definition","@13","function_specifier",
492 | "function_specifier1","function_declarator","function_declarator0","function_direct_declarator",
493 | "@14","function_declarator1","function_declarator2","identifier_list","parameter_type_list",
494 | "parameter_list","parameter_declaration","statement","statement_list","compound_statement",
495 | "@15","@16","compound_statement_body","inner_declaration_list","conditional_statement",
496 | "if_else_statement","if_statement","iterative_statement","do_statement","for_statement",
497 | "for_expressions","while_statement","labeled_statement","case_label","default_label",
498 | "named_label","switch_statement","break_statement","continue_statement","expression_statement",
499 | "goto_statement","null_statement","return_statement","expression","comma_expression",
500 | "assignment_expression","assignment_op","conditional_expression","logical_or_expression",
501 | "logical_and_expression","bitwise_or_expression","bitwise_xor_expression","bitwise_and_expression",
502 | "equality_expression","equality_op","relational_expression","relational_op",
503 | "shift_expression","shift_op","additive_expression","add_op","multiplicative_expression",
504 | "mult_op","unary_expression","address_expression","bitwise_negation_expression",
505 | "cast_expression","indirection_expression","logical_negation_expression","predecrement_expression",
506 | "preincrement_expression","sizeof_expression","unary_minus_expression","unary_plus_expression",
507 | "postfix_expression","component_selection_expression","direct_component_selection",
508 | "indirect_component_selection","function_call","function_call_direct","postdecrement_expression",
509 | "postincrement_expression","subscript_expression","primary_expression","string_literal",
510 | "parenthesized_expression","@17","@18","constant_expression","expression_list",
511 | "asm_statement","asm_type","asm_inout_list","asm_inout","asm_clobber_list","asm_label",
512 | "named_label_address","assignment_expression_list","assignment_expression_list_item",
513 | "named_assignment","named_assignment_list", NULL
514 | };
515 | #endif
516 |
517 | static const short yyr1[] = { 0,
518 | 87, 87, 88, 88, 89, 89, 89, 89, 90, 90,
519 | 91, 91, 92, 93, 93, 93, 93, 93, 93, 94,
520 | 95, 94, 96, 97, 97, 97, 97, 98, 99, 99,
521 | 100, 100, 100, 100, 101, 101, 101, 102, 102, 102,
522 | 102, 102, 102, 102, 102, 102, 103, 103, 104, 104,
523 | 104, 104, 105, 105, 105, 105, 106, 107, 108, 109,
524 | 107, 110, 111, 111, 111, 111, 111, 111, 112, 112,
525 | 113, 113, 114, 115, 115, 115, 115, 115, 115, 115,
526 | 116, 116, 116, 116, 117, 117, 117, 118, 118, 118,
527 | 118, 118, 118, 119, 120, 121, 121, 122, 122, 124,
528 | 123, 125, 123, 126, 126, 127, 127, 128, 128, 129,
529 | 130, 131, 131, 132, 132, 134, 133, 135, 133, 136,
530 | 137, 137, 138, 138, 140, 139, 141, 139, 142, 143,
531 | 143, 144, 144, 145, 145, 146, 146, 146, 146, 148,
532 | 147, 149, 147, 150, 147, 151, 151, 152, 152, 153,
533 | 154, 154, 155, 156, 156, 158, 157, 159, 160, 160,
534 | 160, 160, 161, 162, 162, 164, 163, 165, 166, 166,
535 | 166, 167, 167, 168, 168, 169, 169, 170, 170, 170,
536 | 171, 171, 171, 171, 171, 171, 171, 171, 171, 171,
537 | 171, 171, 172, 172, 174, 175, 173, 176, 176, 176,
538 | 176, 177, 178, 178, 179, 180, 181, 181, 181, 182,
539 | 183, 184, 184, 184, 184, 184, 184, 184, 184, 185,
540 | 186, 186, 186, 187, 188, 189, 190, 191, 192, 193,
541 | 194, 195, 196, 196, 197, 198, 198, 199, 199, 199,
542 | 199, 200, 200, 200, 200, 200, 200, 200, 200, 200,
543 | 200, 200, 201, 201, 201, 202, 202, 203, 203, 204,
544 | 204, 205, 205, 206, 206, 207, 207, 208, 208, 209,
545 | 209, 210, 210, 210, 210, 211, 211, 212, 212, 213,
546 | 213, 214, 214, 215, 215, 216, 216, 216, 217, 217,
547 | 217, 217, 217, 217, 217, 217, 217, 217, 217, 218,
548 | 219, 220, 220, 220, 221, 222, 223, 224, 225, 225,
549 | 226, 227, 228, 228, 228, 228, 228, 228, 228, 229,
550 | 229, 230, 231, 232, 232, 233, 233, 234, 235, 236,
551 | 237, 237, 237, 237, 238, 238, 239, 240, 241, 239,
552 | 242, 243, 243, 244, 244, 244, 244, 245, 245, 245,
553 | 246, 246, 246, 247, 248, 248, 248, 249, 250, 251,
554 | 251, 252, 252, 252, 253, 253, 253, 253, 254, 254
555 | };
556 |
557 | static const short yyr2[] = { 0,
558 | 0, 1, 1, 2, 1, 1, 1, 1, 1, 2,
559 | 3, 2, 1, 1, 2, 1, 2, 1, 2, 1,
560 | 0, 4, 1, 1, 2, 2, 3, 2, 1, 3,
561 | 1, 2, 3, 4, 1, 2, 1, 3, 2, 3,
562 | 3, 4, 2, 3, 3, 4, 1, 2, 1, 2,
563 | 2, 3, 1, 3, 1, 1, 1, 3, 0, 0,
564 | 6, 1, 1, 1, 1, 1, 1, 1, 1, 2,
565 | 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
566 | 1, 1, 2, 2, 1, 2, 2, 1, 1, 1,
567 | 1, 1, 1, 1, 1, 1, 2, 1, 1, 0,
568 | 5, 0, 6, 1, 2, 1, 3, 1, 3, 1,
569 | 2, 1, 1, 1, 1, 0, 5, 0, 6, 2,
570 | 1, 1, 1, 1, 0, 5, 0, 6, 2, 1,
571 | 1, 0, 1, 1, 2, 1, 2, 2, 1, 0,
572 | 4, 0, 5, 0, 5, 1, 3, 1, 1, 1,
573 | 2, 3, 1, 1, 1, 0, 3, 1, 1, 2,
574 | 2, 3, 1, 1, 2, 0, 5, 1, 0, 1,
575 | 1, 1, 3, 1, 3, 1, 3, 2, 1, 2,
576 | 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
577 | 1, 1, 1, 2, 0, 0, 5, 0, 1, 1,
578 | 2, 1, 1, 1, 7, 5, 1, 1, 1, 7,
579 | 5, 2, 3, 3, 3, 4, 4, 4, 5, 5,
580 | 2, 2, 2, 2, 1, 1, 5, 2, 2, 2,
581 | 3, 1, 2, 3, 1, 1, 3, 1, 1, 3,
582 | 5, 1, 1, 1, 1, 1, 1, 1, 1, 1,
583 | 1, 1, 1, 5, 4, 1, 3, 1, 3, 1,
584 | 3, 1, 3, 1, 3, 1, 3, 1, 1, 1,
585 | 3, 1, 1, 1, 1, 1, 3, 1, 1, 1,
586 | 3, 1, 1, 1, 3, 1, 1, 1, 1, 1,
587 | 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
588 | 2, 4, 6, 6, 2, 2, 2, 2, 4, 2,
589 | 2, 2, 1, 1, 1, 1, 1, 1, 1, 1,
590 | 1, 3, 3, 3, 4, 3, 4, 2, 2, 4,
591 | 1, 1, 1, 1, 1, 2, 3, 0, 0, 5,
592 | 1, 1, 3, 5, 7, 9, 11, 1, 2, 2,
593 | 0, 1, 3, 4, 0, 1, 3, 4, 2, 1,
594 | 3, 0, 1, 3, 3, 5, 4, 6, 1, 3
595 | };
596 |
597 | static const short yydefact[] = { 1,
598 | 57, 94, 67, 64, 66, 63, 65, 71, 72, 95,
599 | 68, 90, 91, 92, 93, 88, 89, 81, 82, 0,
600 | 0, 0, 348, 232, 0, 49, 2, 3, 5, 0,
601 | 13, 0, 168, 53, 55, 14, 18, 16, 73, 75,
602 | 76, 85, 78, 80, 74, 98, 99, 77, 114, 115,
603 | 79, 123, 124, 6, 156, 158, 159, 163, 164, 0,
604 | 8, 7, 0, 350, 84, 83, 121, 122, 116, 120,
605 | 130, 131, 125, 129, 112, 113, 100, 111, 349, 0,
606 | 0, 47, 56, 72, 51, 50, 69, 4, 12, 0,
607 | 20, 23, 24, 0, 160, 165, 59, 15, 19, 17,
608 | 93, 87, 86, 0, 161, 9, 0, 166, 0, 132,
609 | 118, 132, 127, 0, 102, 54, 48, 52, 70, 11,
610 | 21, 0, 0, 26, 25, 162, 58, 0, 195, 157,
611 | 10, 169, 335, 0, 136, 0, 140, 114, 123, 0,
612 | 133, 134, 139, 132, 0, 132, 110, 0, 104, 106,
613 | 108, 0, 0, 0, 62, 332, 0, 0, 0, 0,
614 | 0, 338, 0, 0, 0, 0, 0, 0, 28, 331,
615 | 31, 238, 253, 256, 258, 260, 262, 264, 266, 270,
616 | 276, 280, 284, 289, 290, 291, 292, 293, 294, 295,
617 | 296, 297, 298, 299, 313, 320, 321, 314, 315, 316,
618 | 317, 318, 319, 333, 334, 239, 27, 341, 235, 236,
619 | 60, 198, 172, 179, 0, 171, 170, 174, 176, 336,
620 | 0, 351, 142, 144, 0, 137, 138, 117, 135, 0,
621 | 126, 0, 101, 105, 0, 0, 22, 0, 226, 359,
622 | 307, 308, 338, 310, 32, 0, 29, 96, 0, 0,
623 | 0, 305, 300, 312, 311, 301, 306, 0, 0, 0,
624 | 0, 0, 0, 0, 268, 269, 0, 273, 275, 272,
625 | 274, 0, 278, 279, 0, 282, 283, 0, 286, 287,
626 | 288, 0, 243, 244, 245, 246, 247, 248, 249, 250,
627 | 251, 252, 242, 0, 0, 328, 329, 0, 0, 0,
628 | 0, 0, 62, 0, 225, 0, 0, 0, 0, 0,
629 | 0, 0, 0, 0, 202, 193, 200, 182, 196, 199,
630 | 183, 204, 203, 184, 207, 208, 209, 185, 0, 0,
631 | 0, 186, 187, 188, 189, 190, 191, 192, 0, 181,
632 | 0, 0, 180, 37, 178, 35, 167, 0, 0, 344,
633 | 0, 0, 352, 0, 0, 0, 150, 0, 146, 148,
634 | 149, 119, 128, 107, 109, 103, 358, 0, 0, 33,
635 | 0, 97, 35, 0, 337, 339, 326, 342, 0, 257,
636 | 284, 0, 0, 259, 261, 263, 265, 267, 271, 277,
637 | 281, 285, 362, 240, 154, 155, 323, 324, 0, 0,
638 | 322, 237, 61, 224, 0, 0, 0, 0, 0, 0,
639 | 0, 229, 228, 233, 0, 194, 0, 201, 221, 223,
640 | 222, 230, 43, 0, 0, 39, 0, 0, 0, 36,
641 | 173, 175, 177, 0, 0, 0, 351, 0, 0, 151,
642 | 153, 0, 141, 0, 309, 34, 30, 362, 302, 0,
643 | 0, 327, 255, 0, 362, 363, 0, 360, 325, 330,
644 | 0, 0, 0, 0, 0, 0, 0, 231, 234, 197,
645 | 38, 45, 41, 44, 0, 40, 0, 0, 353, 345,
646 | 0, 143, 145, 152, 147, 62, 0, 0, 0, 369,
647 | 0, 340, 343, 254, 0, 362, 241, 0, 0, 0,
648 | 0, 212, 0, 0, 0, 46, 42, 354, 0, 355,
649 | 0, 0, 303, 0, 304, 364, 361, 206, 227, 220,
650 | 0, 215, 214, 211, 213, 0, 346, 356, 0, 0,
651 | 362, 365, 370, 0, 0, 216, 217, 218, 0, 0,
652 | 362, 367, 0, 205, 210, 219, 357, 347, 0, 366,
653 | 368, 0, 0, 0
654 | };
655 |
656 | static const short yydefgoto[] = { 552,
657 | 27, 28, 105, 106, 107, 31, 90, 153, 91, 92,
658 | 124, 246, 169, 424, 344, 357, 81, 82, 34, 35,
659 | 128, 302, 170, 36, 136, 37, 38, 39, 40, 41,
660 | 42, 43, 44, 249, 45, 46, 114, 152, 148, 149,
661 | 150, 151, 47, 78, 48, 49, 110, 144, 50, 70,
662 | 51, 52, 112, 146, 53, 74, 140, 141, 142, 143,
663 | 225, 354, 355, 358, 359, 360, 361, 440, 488, 54,
664 | 104, 55, 56, 57, 58, 83, 132, 60, 215, 216,
665 | 425, 218, 219, 316, 317, 318, 212, 417, 319, 320,
666 | 321, 322, 323, 324, 325, 326, 466, 327, 328, 329,
667 | 330, 331, 332, 333, 334, 335, 336, 337, 338, 339,
668 | 209, 210, 294, 172, 173, 174, 175, 176, 177, 178,
669 | 267, 179, 272, 180, 275, 181, 278, 182, 282, 183,
670 | 184, 185, 186, 187, 188, 189, 190, 191, 192, 193,
671 | 194, 195, 196, 197, 198, 199, 200, 201, 202, 203,
672 | 204, 205, 251, 450, 211, 379, 340, 63, 352, 353,
673 | 529, 125, 206, 457, 458, 490, 491
674 | };
675 |
676 | static const short yypact[] = { 1250,
677 | -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, -16,-32768,
678 | -32768,-32768,-32768,-32768, 21,-32768,-32768,-32768, 43, 61,
679 | 76, 78, 71,-32768, 60, 34, 1250,-32768,-32768, 36,
680 | -32768, 27, 49,-32768,-32768, 1517, 1517, 1517,-32768,-32768,
681 | 210, 178,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
682 | -32768,-32768,-32768,-32768,-32768,-32768, 1517,-32768, 175, 57,
683 | -32768,-32768, 89,-32768,-32768,-32768,-32768,-32768,-32768, 87,
684 | -32768,-32768,-32768, 102,-32768,-32768,-32768, 159,-32768, 103,
685 | 27, -2,-32768,-32768,-32768, 34,-32768,-32768,-32768, 183,
686 | -32768,-32768, 13, 27, 1517, 175, 158,-32768,-32768,-32768,
687 | -32768,-32768,-32768, 205, 1517,-32768, 36,-32768, 249, 1404,
688 | -32768, 1404,-32768, 258,-32768,-32768, -2,-32768,-32768,-32768,
689 | -32768, 211, 650,-32768, 233, 1517,-32768, 1143,-32768,-32768,
690 | -32768, 1451,-32768, 18,-32768, 1313, 178, 237, 239, 236,
691 | 1404,-32768,-32768, 1404, 238, 1404,-32768, 241, 242,-32768,
692 | 245, 258, 60, 249,-32768,-32768, 304, 1171, 1171, 1193,
693 | 618, 500, 1171, 1171, 1171, 1171, 1171, 1171,-32768, 243,
694 | -32768,-32768, 10, 291, 248, 244, 247, 223, 86, 240,
695 | 189, -11, 278,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
696 | -32768,-32768,-32768, 53,-32768,-32768,-32768,-32768,-32768,-32768,
697 | -32768,-32768,-32768, 307,-32768,-32768,-32768,-32768, 250,-32768,
698 | -32768, 430,-32768, 54, 246, 252,-32768, 253,-32768,-32768,
699 | 255, 249,-32768, 178, 24,-32768,-32768,-32768,-32768, 264,
700 | -32768, 265,-32768, 258, 1143, 266,-32768, 17,-32768,-32768,
701 | -32768,-32768, 500,-32768,-32768, 124,-32768, 138, 256, 267,
702 | 205,-32768,-32768,-32768,-32768,-32768,-32768, 723, 1171, 733,
703 | 1171, 1171, 1171, 1171,-32768,-32768, 1171,-32768,-32768,-32768,
704 | -32768, 1171,-32768,-32768, 1171,-32768,-32768, 1171,-32768,-32768,
705 | -32768, 1171,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
706 | -32768,-32768,-32768, 755, 270,-32768,-32768, 765, 1143, 270,
707 | 1143, 268, 262, 1143,-32768, 269, 273, 276, 550, 277,
708 | 343, 284, 285, 838, 1517,-32768, 550,-32768,-32768, 550,
709 | -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 279, 280,
710 | 281,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 288,-32768,
711 | 1297, 849,-32768, 70,-32768, 30,-32768, 353, 1471,-32768,
712 | 68, 85,-32768, 24, 24, 1143, 286, 212,-32768,-32768,
713 | -32768,-32768,-32768,-32768,-32768,-32768,-32768, 289, 640,-32768,
714 | 1343,-32768, 139, 1103,-32768,-32768,-32768,-32768, -9, 291,
715 | -32768, 1171, 287, 248, 244, 247, 223, 86, 240, 189,
716 | -11,-32768, 871,-32768,-32768,-32768,-32768,-32768, 106, 290,
717 | -32768,-32768,-32768,-32768, 1143, 1143, 1143, -16, 302, 939,
718 | 299,-32768,-32768,-32768, 305,-32768, 300, 550,-32768,-32768,
719 | -32768,-32768,-32768, 301, 309,-32768, 298, 1389, 961, 70,
720 | -32768,-32768,-32768, 1143, 249, 308, 249, 214, 220,-32768,
721 | -32768, 1143,-32768, 24, 1103,-32768,-32768, 360,-32768, 313,
722 | 1143,-32768,-32768, 1171, 871,-32768, 126,-32768,-32768,-32768,
723 | 316, 317, 318, 306, 971, 319, 310,-32768,-32768,-32768,
724 | -32768,-32768,-32768,-32768, 321,-32768, 322, 323,-32768,-32768,
725 | 151,-32768,-32768,-32768,-32768, 324, 270, 326, 163,-32768,
726 | 167,-32768,-32768,-32768, 169, 871,-32768, 550, 550, 550,
727 | 1143, 1143, 331, 550, 1007,-32768,-32768,-32768, 332, 249,
728 | 337, 1044,-32768, 16,-32768,-32768,-32768, 350,-32768,-32768,
729 | 327,-32768, 1143,-32768, 1143, 341,-32768, 307, 114, 1075,
730 | 871,-32768,-32768, 550, 342,-32768,-32768, 1143, 249, 344,
731 | 871,-32768, 193,-32768,-32768,-32768, 307,-32768, 195,-32768,
732 | -32768, 406, 408,-32768
733 | };
734 |
735 | static const short yypgoto[] = {-32768,
736 | -32768, 384, -81, 4, 1, 227,-32768,-32768, 259,-32768,
737 | 292,-32768, -151, -189, -284, -19, 8, 9,-32768,-32768,
738 | -32768,-32768,-32768,-32768, -8, 75, 40,-32768,-32768,-32768,
739 | 373,-32768,-32768, 172,-32768,-32768,-32768,-32768, 271,-32768,
740 | 182,-32768,-32768,-32768,-32768, 59,-32768,-32768,-32768,-32768,
741 | -32768, 82,-32768,-32768,-32768,-32768, 55,-32768, 283,-32768,
742 | -32768,-32768,-32768, -58, -26,-32768,-32768, -23, -283,-32768,
743 | -32768,-32768,-32768, 391,-32768, 26,-32768,-32768,-32768,-32768,
744 | -127,-32768, 73, -302, 105, -91,-32768,-32768,-32768,-32768,
745 | -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
746 | -32768, 274,-32768,-32768,-32768,-32768,-32768, 83,-32768, -125,
747 | -32768, -121,-32768, -361,-32768, 168, 177, 180, 176, 179,
748 | -32768, 181,-32768, 184,-32768, 174,-32768, 216,-32768, -116,
749 | -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
750 | -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
751 | -109,-32768,-32768,-32768, -288, 149, 155,-32768, 15, 20,
752 | -32768,-32768,-32768, -426, -46, -57,-32768
753 | };
754 |
755 |
756 | #define YYLAST 1566
757 |
758 |
759 | static const short yytable[] = { 134,
760 | 30, 171, 208, 29, 217, 80, 409, 32, 33, 247,
761 | 93, 397, 130, 126, 416, 404, 401, 86, 395, 396,
762 | 453, 489, 220, 220, 343, 59, 1, 30, 495, 1,
763 | 29, 259, 1, 85, 32, 33, 250, 94, 1, 171,
764 | 33, 241, 242, 244, 238, 64, 252, 253, 254, 255,
765 | 256, 257, 59, 427, 451, 59, 1, 96, 372, 452,
766 | 279, 430, 1, 67, 68, -168, 65, 97, 8, 84,
767 | 280, 281, 295, 220, 122, 296, 297, 123, 71, 72,
768 | 75, 76, 61, 260, 66, 367, 221, 93, 430, 117,
769 | 222, 25, 494, 118, 25, 26, 356, 341, 89, 342,
770 | 87, 487, 117, 25, 543, 26, 79, 26, 131, 61,
771 | 268, 269, 351, 365, 549, 416, 103, 250, 97, 96,
772 | 298, 341, 299, 342, 108, 26, 69, 25, 224, 131,
773 | 315, 26, 214, 93, 383, 434, 378, 428, 300, 429,
774 | 477, 73, 381, 77, 381, 381, 381, 381, 435, 137,
775 | 381, 137, 111, 436, 62, 381, 109, 437, 381, 376,
776 | 119, 381, 248, 270, 271, 392, 145, 113, 138, 451,
777 | 138, 116, 394, 400, 459, 223, 378, 539, 208, 402,
778 | 137, 62, 540, 137, 87, 137, 87, 369, 415, 496,
779 | 370, 139, 497, 139, 345, 518, 519, 520, 230, 138,
780 | 232, 524, 138, 511, 138, 371, 371, 342, 342, 26,
781 | 119, 87, 8, 84, 435, 87, 208, 447, 87, 509,
782 | 87, 346, 139, 510, 115, 139, 496, 139, 127, 513,
783 | 514, 544, 496, 515, 441, 516, -56, -56, -56, -56,
784 | 265, 266, -56, 248, -56, 120, 121, 171, 12, 13,
785 | 14, 101, 16, 17, 133, 373, 496, 449, 496, 550,
786 | 147, 551, 98, 99, 100, 381, 273, 274, 276, 277,
787 | 129, 456, 395, 396, 443, 444, 482, 444, 154, 461,
788 | 462, 463, 483, 444, 467, 283, 284, 285, 286, 287,
789 | 288, 289, 290, 291, 292, 438, 439, 123, 119, 226,
790 | 475, 227, 228, 208, 231, 234, 239, 233, 478, 235,
791 | 258, 261, 220, 301, 347, 348, 349, 350, 131, 263,
792 | 441, 80, 262, 264, 374, 351, 456, 351, 449, 493,
793 | 362, 363, 366, 456, -226, 375, 405, 381, 403, 503,
794 | 406, 214, 293, 407, 410, 411, 412, 413, 346, 214,
795 | 422, 419, 420, 421, 117, 431, 464, 445, 442, 454,
796 | 460, 468, 486, 396, 156, 133, 470, 469, 473, 471,
797 | 480, 214, 505, 501, 456, 521, 522, 472, 373, 526,
798 | 157, 492, 158, 159, 498, 499, 500, 504, 160, 506,
799 | 532, 508, 507, 523, 527, 535, -154, 536, 512, 537,
800 | 528, 530, 534, 538, 545, 553, 548, 554, 542, 456,
801 | 88, 237, 546, 102, 368, 364, 207, 485, 484, 456,
802 | 95, 433, 236, 229, 418, 455, 380, 162, 214, 547,
803 | 240, 163, 303, 2, 156, 133, 164, 384, 386, 165,
804 | 166, 385, 387, 167, 168, 487, 399, 388, 390, 517,
805 | 157, 481, 158, 159, 479, 389, 533, 0, 160, 3,
806 | 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
807 | 14, 15, 16, 17, 18, 19, 20, 21, 22, 304,
808 | 305, 306, 0, 307, 308, 309, 310, 311, 312, 313,
809 | 314, 23, 24, 391, 0, 129, 0, 162, 0, 0,
810 | 0, 163, 155, 2, 156, 133, 164, 0, 0, 165,
811 | 166, 0, 0, 167, 168, 0, 0, 0, 0, 0,
812 | 157, 0, 158, 159, 0, 0, 0, 0, 160, 3,
813 | 4, 5, 6, 7, 8, 84, 10, 11, 12, 13,
814 | 14, 15, 16, 17, 18, 19, 20, 21, 22, 0,
815 | 0, 0, 303, 0, 156, 133, 0, 0, 0, 0,
816 | 0, 0, 0, 0, 0, 0, 0, 162, 0, 0,
817 | 157, 163, 158, 159, 0, 0, 164, 0, 160, 165,
818 | 166, 0, 0, 167, 168, 408, 0, 0, 0, 0,
819 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 304,
820 | 305, 306, 0, 307, 308, 309, 310, 311, 312, 313,
821 | 314, 23, 24, 0, 0, 129, 0, 162, 0, 0,
822 | 155, 163, 156, 133, 0, 0, 164, 0, 0, 165,
823 | 166, 0, 0, 167, 168, 0, 0, 0, 157, 0,
824 | 158, 159, 155, 0, 156, 133, 160, 0, 0, 0,
825 | 0, 0, 155, 0, 156, 133, 0, 0, 0, 0,
826 | 157, 0, 158, 159, 0, 0, 0, 0, 160, 0,
827 | 157, 0, 158, 159, 0, 0, 0, 0, 160, 0,
828 | 0, 0, 0, 161, 245, 162, 0, 0, 0, 163,
829 | 0, 0, 0, 0, 164, 0, 0, 165, 166, 0,
830 | 0, 167, 168, 0, 0, 161, 446, 162, 0, 0,
831 | 0, 163, 0, 0, 0, 161, 164, 162, 0, 165,
832 | 166, 163, 0, 167, 168, 155, 164, 156, 133, 165,
833 | 166, 0, 0, 167, 168, 155, 0, 156, 133, 0,
834 | 0, 0, 0, 157, 0, 158, 159, 0, 0, 0,
835 | 0, 160, 0, 157, 0, 158, 159, 155, 0, 156,
836 | 133, 160, 0, 0, 0, 0, 0, 155, 0, 156,
837 | 133, 0, 0, 0, 0, 157, 0, 158, 159, 0,
838 | 0, 0, 0, 160, 0, 157, 0, 158, 159, 0,
839 | 162, 377, 0, 160, 163, 0, 0, 0, 0, 164,
840 | 162, 0, 165, 166, 163, 382, 167, 168, 0, 164,
841 | 0, 0, 165, 166, 0, 0, 167, 168, 0, 0,
842 | 393, 0, 162, 0, 0, 0, 163, 0, 0, 0,
843 | 0, 164, 162, 398, 165, 166, 163, 0, 167, 168,
844 | 155, 164, 156, 133, 165, 166, 0, 0, 167, 168,
845 | 0, 155, 0, 156, 133, 0, 0, 0, 157, 0,
846 | 158, 159, 0, 0, 0, 0, 160, 0, 0, 157,
847 | 0, 158, 159, 155, 0, 156, 133, 160, 0, 0,
848 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
849 | 0, 157, 0, 158, 159, 0, 0, 0, 0, 160,
850 | 414, 0, 0, 0, 0, 162, 0, 0, 0, 163,
851 | 0, 0, 0, 0, 164, 0, 162, 165, 166, 426,
852 | 163, 167, 168, 0, 0, 164, 0, 0, 165, 166,
853 | 0, 0, 167, 168, 0, 0, 455, 0, 162, 0,
854 | 0, 155, 163, 156, 133, 0, 0, 164, 0, 0,
855 | 165, 166, 0, 0, 167, 168, 0, 0, 0, 157,
856 | 0, 158, 159, 155, 0, 156, 133, 160, 0, 0,
857 | 0, 0, 0, 155, 0, 156, 133, 0, 0, 0,
858 | 0, 157, 0, 158, 159, 0, 0, 0, 0, 160,
859 | 0, 157, 0, 158, 159, 0, 0, 0, 0, 160,
860 | 0, 465, 0, 0, 0, 0, 162, 0, 0, 155,
861 | 163, 156, 133, 0, 0, 164, 0, 0, 165, 166,
862 | 0, 0, 167, 168, 0, 0, 0, 157, 162, 158,
863 | 159, 476, 163, 502, 0, 160, 0, 164, 162, 0,
864 | 165, 166, 163, 0, 167, 168, 155, 164, 156, 133,
865 | 165, 166, 0, 0, 167, 168, 0, 0, 0, 0,
866 | 0, 0, 0, 0, 157, 0, 158, 159, 0, 525,
867 | 0, 0, 160, 0, 162, 0, 0, 155, 163, 156,
868 | 133, 0, 0, 164, 0, 0, 165, 166, 0, 0,
869 | 167, 168, 0, 0, 0, 157, 0, 158, 159, 0,
870 | 0, 0, 0, 160, 0, 155, 0, 156, 133, 531,
871 | 0, 162, 0, 0, 0, 163, 0, 0, 0, 0,
872 | 164, 0, 0, 165, 166, 158, 159, 167, 168, 0,
873 | 0, 160, 0, 0, 0, 0, 0, 0, 0, 0,
874 | 541, 0, 162, 0, 0, 155, 163, 156, 133, 0,
875 | 0, 164, 0, 0, 165, 166, 0, 0, 167, 168,
876 | 0, 0, 0, 157, 0, 158, 159, 0, 448, 0,
877 | 162, 160, 0, 155, 163, 156, 133, 0, 0, 164,
878 | 0, 0, 165, 166, 0, 0, 167, 168, 0, 0,
879 | 0, 0, 0, 158, 159, 155, 0, 156, 133, 160,
880 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
881 | 162, 0, 0, 0, 163, 158, 159, 0, 0, 164,
882 | 0, 160, 165, 166, 0, 0, 167, 168, 0, 0,
883 | 0, 0, 0, 0, 0, 0, 0, 0, 162, 0,
884 | 0, 0, 163, 0, 0, 0, 0, 164, 0, 0,
885 | 165, 166, 1, 2, 167, 168, 0, 0, 0, 0,
886 | 243, 0, 0, 0, 163, 0, 0, 0, 0, 164,
887 | 0, 0, 165, 166, 0, 0, 167, 168, 0, 3,
888 | 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,
889 | 14, 15, 16, 17, 18, 19, 20, 21, 22, 1,
890 | 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
891 | 0, 23, 24, 0, 0, 0, 2, 25, 0, 0,
892 | 0, 26, 0, 0, 0, 0, 3, 4, 5, 6,
893 | 7, 8, 84, 10, 11, 12, 13, 14, 15, 16,
894 | 17, 18, 19, 20, 21, 22, 2, 8, 84, 10,
895 | 0, 12, 13, 14, 15, 16, 17, 18, 19, 20,
896 | 21, 22, 0, 0, 341, 423, 342, 0, 26, 0,
897 | 0, 0, 3, 4, 5, 6, 7, 8, 84, 10,
898 | 11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
899 | 21, 22, 2, 0, 0, 0, 0, 0, 0, 0,
900 | 0, 0, 0, 0, 0, 0, 0, 2, 0, 0,
901 | 371, 423, 342, 0, 26, 0, 0, 0, 3, 4,
902 | 5, 6, 7, 8, 84, 10, 11, 12, 13, 14,
903 | 15, 16, 17, 18, 19, 20, 21, 22, 8, 84,
904 | 10, 0, 12, 13, 14, 15, 16, 17, 18, 19,
905 | 20, 21, 22, 213, 2, 0, 0, 474, 0, 0,
906 | 0, 0, 0, 0, 0, 0, 135, 0, 0, 0,
907 | 0, 0, 0, 0, 2, 0, 0, 432, 0, 0,
908 | 3, 4, 5, 6, 7, 8, 84, 10, 11, 12,
909 | 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
910 | 3, 4, 5, 6, 7, 8, 84, 10, 11, 12,
911 | 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
912 | 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,
913 | 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
914 | 0, 0, 0, 0, 0, 0, 3, 4, 5, 6,
915 | 7, 8, 84, 10, 11, 12, 13, 14, 15, 16,
916 | 17, 18, 19, 20, 21, 22
917 | };
918 |
919 | static const short yycheck[] = { 109,
920 | 0, 123, 128, 0, 132, 25, 309, 0, 0, 161,
921 | 30, 295, 104, 95, 317, 304, 300, 26, 3, 4,
922 | 382, 448, 6, 6, 214, 0, 3, 27, 455, 3,
923 | 27, 22, 3, 26, 27, 27, 162, 30, 3, 161,
924 | 32, 158, 159, 160, 154, 62, 163, 164, 165, 166,
925 | 167, 168, 27, 342, 64, 30, 3, 32, 248, 69,
926 | 72, 346, 3, 3, 4, 68, 46, 70, 35, 36,
927 | 82, 83, 20, 6, 62, 23, 24, 65, 3, 4,
928 | 3, 4, 0, 74, 42, 69, 69, 107, 373, 81,
929 | 73, 68, 454, 86, 68, 72, 73, 68, 63, 70,
930 | 26, 86, 94, 68, 531, 72, 36, 72, 105, 27,
931 | 25, 26, 222, 235, 541, 418, 42, 243, 70, 94,
932 | 68, 68, 70, 70, 68, 72, 66, 68, 137, 126,
933 | 212, 72, 132, 153, 260, 68, 258, 68, 86, 70,
934 | 429, 66, 259, 66, 261, 262, 263, 264, 64, 110,
935 | 267, 112, 66, 69, 0, 272, 68, 73, 275, 251,
936 | 86, 278, 162, 78, 79, 282, 112, 66, 110, 64,
937 | 112, 69, 294, 299, 69, 136, 298, 64, 304, 301,
938 | 141, 27, 69, 144, 110, 146, 112, 64, 314, 64,
939 | 67, 110, 67, 112, 214, 498, 499, 500, 144, 141,
940 | 146, 504, 144, 487, 146, 68, 68, 70, 70, 72,
941 | 136, 137, 35, 36, 64, 141, 342, 369, 144, 69,
942 | 146, 214, 141, 73, 66, 144, 64, 146, 71, 67,
943 | 64, 534, 64, 67, 356, 67, 62, 63, 64, 65,
944 | 18, 19, 68, 243, 70, 63, 64, 369, 39, 40,
945 | 41, 42, 43, 44, 6, 248, 64, 374, 64, 67,
946 | 3, 67, 36, 37, 38, 382, 27, 28, 80, 81,
947 | 66, 393, 3, 4, 63, 64, 63, 64, 68, 405,
948 | 406, 407, 63, 64, 410, 8, 9, 10, 11, 12,
949 | 13, 14, 15, 16, 17, 354, 355, 65, 224, 63,
950 | 428, 63, 67, 429, 67, 64, 3, 67, 434, 65,
951 | 68, 21, 6, 64, 69, 64, 64, 63, 315, 76,
952 | 442, 341, 75, 77, 69, 435, 448, 437, 445, 451,
953 | 67, 67, 67, 455, 73, 69, 68, 454, 71, 465,
954 | 68, 341, 65, 68, 68, 3, 63, 63, 341, 349,
955 | 63, 73, 73, 73, 346, 3, 55, 69, 73, 73,
956 | 71, 63, 3, 4, 5, 6, 67, 63, 71, 69,
957 | 63, 371, 63, 68, 496, 501, 502, 69, 371, 505,
958 | 21, 69, 23, 24, 69, 69, 69, 69, 29, 69,
959 | 512, 69, 71, 63, 63, 69, 73, 523, 73, 525,
960 | 510, 65, 53, 63, 63, 0, 63, 0, 530, 531,
961 | 27, 153, 538, 41, 243, 234, 125, 444, 442, 541,
962 | 30, 349, 152, 141, 320, 66, 259, 68, 428, 539,
963 | 157, 72, 3, 4, 5, 6, 77, 261, 263, 80,
964 | 81, 262, 264, 84, 85, 86, 298, 267, 275, 496,
965 | 21, 437, 23, 24, 435, 272, 514, -1, 29, 30,
966 | 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
967 | 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
968 | 51, 52, -1, 54, 55, 56, 57, 58, 59, 60,
969 | 61, 62, 63, 278, -1, 66, -1, 68, -1, -1,
970 | -1, 72, 3, 4, 5, 6, 77, -1, -1, 80,
971 | 81, -1, -1, 84, 85, -1, -1, -1, -1, -1,
972 | 21, -1, 23, 24, -1, -1, -1, -1, 29, 30,
973 | 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
974 | 41, 42, 43, 44, 45, 46, 47, 48, 49, -1,
975 | -1, -1, 3, -1, 5, 6, -1, -1, -1, -1,
976 | -1, -1, -1, -1, -1, -1, -1, 68, -1, -1,
977 | 21, 72, 23, 24, -1, -1, 77, -1, 29, 80,
978 | 81, -1, -1, 84, 85, 36, -1, -1, -1, -1,
979 | -1, -1, -1, -1, -1, -1, -1, -1, -1, 50,
980 | 51, 52, -1, 54, 55, 56, 57, 58, 59, 60,
981 | 61, 62, 63, -1, -1, 66, -1, 68, -1, -1,
982 | 3, 72, 5, 6, -1, -1, 77, -1, -1, 80,
983 | 81, -1, -1, 84, 85, -1, -1, -1, 21, -1,
984 | 23, 24, 3, -1, 5, 6, 29, -1, -1, -1,
985 | -1, -1, 3, -1, 5, 6, -1, -1, -1, -1,
986 | 21, -1, 23, 24, -1, -1, -1, -1, 29, -1,
987 | 21, -1, 23, 24, -1, -1, -1, -1, 29, -1,
988 | -1, -1, -1, 66, 67, 68, -1, -1, -1, 72,
989 | -1, -1, -1, -1, 77, -1, -1, 80, 81, -1,
990 | -1, 84, 85, -1, -1, 66, 67, 68, -1, -1,
991 | -1, 72, -1, -1, -1, 66, 77, 68, -1, 80,
992 | 81, 72, -1, 84, 85, 3, 77, 5, 6, 80,
993 | 81, -1, -1, 84, 85, 3, -1, 5, 6, -1,
994 | -1, -1, -1, 21, -1, 23, 24, -1, -1, -1,
995 | -1, 29, -1, 21, -1, 23, 24, 3, -1, 5,
996 | 6, 29, -1, -1, -1, -1, -1, 3, -1, 5,
997 | 6, -1, -1, -1, -1, 21, -1, 23, 24, -1,
998 | -1, -1, -1, 29, -1, 21, -1, 23, 24, -1,
999 | 68, 69, -1, 29, 72, -1, -1, -1, -1, 77,
1000 | 68, -1, 80, 81, 72, 73, 84, 85, -1, 77,
1001 | -1, -1, 80, 81, -1, -1, 84, 85, -1, -1,
1002 | 66, -1, 68, -1, -1, -1, 72, -1, -1, -1,
1003 | -1, 77, 68, 69, 80, 81, 72, -1, 84, 85,
1004 | 3, 77, 5, 6, 80, 81, -1, -1, 84, 85,
1005 | -1, 3, -1, 5, 6, -1, -1, -1, 21, -1,
1006 | 23, 24, -1, -1, -1, -1, 29, -1, -1, 21,
1007 | -1, 23, 24, 3, -1, 5, 6, 29, -1, -1,
1008 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1009 | -1, 21, -1, 23, 24, -1, -1, -1, -1, 29,
1010 | 63, -1, -1, -1, -1, 68, -1, -1, -1, 72,
1011 | -1, -1, -1, -1, 77, -1, 68, 80, 81, 71,
1012 | 72, 84, 85, -1, -1, 77, -1, -1, 80, 81,
1013 | -1, -1, 84, 85, -1, -1, 66, -1, 68, -1,
1014 | -1, 3, 72, 5, 6, -1, -1, 77, -1, -1,
1015 | 80, 81, -1, -1, 84, 85, -1, -1, -1, 21,
1016 | -1, 23, 24, 3, -1, 5, 6, 29, -1, -1,
1017 | -1, -1, -1, 3, -1, 5, 6, -1, -1, -1,
1018 | -1, 21, -1, 23, 24, -1, -1, -1, -1, 29,
1019 | -1, 21, -1, 23, 24, -1, -1, -1, -1, 29,
1020 | -1, 63, -1, -1, -1, -1, 68, -1, -1, 3,
1021 | 72, 5, 6, -1, -1, 77, -1, -1, 80, 81,
1022 | -1, -1, 84, 85, -1, -1, -1, 21, 68, 23,
1023 | 24, 71, 72, 63, -1, 29, -1, 77, 68, -1,
1024 | 80, 81, 72, -1, 84, 85, 3, 77, 5, 6,
1025 | 80, 81, -1, -1, 84, 85, -1, -1, -1, -1,
1026 | -1, -1, -1, -1, 21, -1, 23, 24, -1, 63,
1027 | -1, -1, 29, -1, 68, -1, -1, 3, 72, 5,
1028 | 6, -1, -1, 77, -1, -1, 80, 81, -1, -1,
1029 | 84, 85, -1, -1, -1, 21, -1, 23, 24, -1,
1030 | -1, -1, -1, 29, -1, 3, -1, 5, 6, 66,
1031 | -1, 68, -1, -1, -1, 72, -1, -1, -1, -1,
1032 | 77, -1, -1, 80, 81, 23, 24, 84, 85, -1,
1033 | -1, 29, -1, -1, -1, -1, -1, -1, -1, -1,
1034 | 66, -1, 68, -1, -1, 3, 72, 5, 6, -1,
1035 | -1, 77, -1, -1, 80, 81, -1, -1, 84, 85,
1036 | -1, -1, -1, 21, -1, 23, 24, -1, 66, -1,
1037 | 68, 29, -1, 3, 72, 5, 6, -1, -1, 77,
1038 | -1, -1, 80, 81, -1, -1, 84, 85, -1, -1,
1039 | -1, -1, -1, 23, 24, 3, -1, 5, 6, 29,
1040 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1041 | 68, -1, -1, -1, 72, 23, 24, -1, -1, 77,
1042 | -1, 29, 80, 81, -1, -1, 84, 85, -1, -1,
1043 | -1, -1, -1, -1, -1, -1, -1, -1, 68, -1,
1044 | -1, -1, 72, -1, -1, -1, -1, 77, -1, -1,
1045 | 80, 81, 3, 4, 84, 85, -1, -1, -1, -1,
1046 | 68, -1, -1, -1, 72, -1, -1, -1, -1, 77,
1047 | -1, -1, 80, 81, -1, -1, 84, 85, -1, 30,
1048 | 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
1049 | 41, 42, 43, 44, 45, 46, 47, 48, 49, 3,
1050 | 4, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1051 | -1, 62, 63, -1, -1, -1, 4, 68, -1, -1,
1052 | -1, 72, -1, -1, -1, -1, 30, 31, 32, 33,
1053 | 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
1054 | 44, 45, 46, 47, 48, 49, 4, 35, 36, 37,
1055 | -1, 39, 40, 41, 42, 43, 44, 45, 46, 47,
1056 | 48, 49, -1, -1, 68, 69, 70, -1, 72, -1,
1057 | -1, -1, 30, 31, 32, 33, 34, 35, 36, 37,
1058 | 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
1059 | 48, 49, 4, -1, -1, -1, -1, -1, -1, -1,
1060 | -1, -1, -1, -1, -1, -1, -1, 4, -1, -1,
1061 | 68, 69, 70, -1, 72, -1, -1, -1, 30, 31,
1062 | 32, 33, 34, 35, 36, 37, 38, 39, 40, 41,
1063 | 42, 43, 44, 45, 46, 47, 48, 49, 35, 36,
1064 | 37, -1, 39, 40, 41, 42, 43, 44, 45, 46,
1065 | 47, 48, 49, 3, 4, -1, -1, 69, -1, -1,
1066 | -1, -1, -1, -1, -1, -1, 63, -1, -1, -1,
1067 | -1, -1, -1, -1, 4, -1, -1, 7, -1, -1,
1068 | 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
1069 | 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
1070 | 30, 31, 32, 33, 34, 35, 36, 37, 38, 39,
1071 | 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,
1072 | 4, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1073 | -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1074 | -1, -1, -1, -1, -1, -1, 30, 31, 32, 33,
1075 | 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,
1076 | 44, 45, 46, 47, 48, 49
1077 | };
1078 | /* -*-C-*- Note some compilers choke on comments on `#line' lines. */
1079 |
1080 |
1081 | /* Skeleton output parser for bison,
1082 | Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
1083 |
1084 | This program is free software; you can redistribute it and/or modify
1085 | it under the terms of the GNU General Public License as published by
1086 | the Free Software Foundation; either version 2, or (at your option)
1087 | any later version.
1088 |
1089 | This program is distributed in the hope that it will be useful,
1090 | but WITHOUT ANY WARRANTY; without even the implied warranty of
1091 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1092 | GNU General Public License for more details.
1093 |
1094 | You should have received a copy of the GNU General Public License
1095 | along with this program; if not, write to the Free Software
1096 | Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
1097 |
1098 | /* As a special exception, when this file is copied by Bison into a
1099 | Bison output file, you may use that output file without restriction.
1100 | This special exception was added by the Free Software Foundation
1101 | in version 1.24 of Bison. */
1102 |
1103 | #ifndef alloca
1104 | #ifdef __GNUC__
1105 | #define alloca __builtin_alloca
1106 | #else /* not GNU C. */
1107 | #if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
1108 | #include <alloca.h>
1109 | #else /* not sparc */
1110 | #if defined (MSDOS) && !defined (__TURBOC__)
1111 | #include <malloc.h>
1112 | #else /* not MSDOS, or __TURBOC__ */
1113 | #if defined(_AIX)
1114 | #include <malloc.h>
1115 | #pragma alloca
1116 | #else /* not MSDOS, __TURBOC__, or _AIX */
1117 | #ifdef __hpux
1118 | #ifdef __cplusplus
1119 | extern "C" {
1120 | void *alloca (unsigned int);
1121 | };
1122 | #else /* not __cplusplus */
1123 | void *alloca ();
1124 | #endif /* not __cplusplus */
1125 | #endif /* __hpux */
1126 | #endif /* not _AIX */
1127 | #endif /* not MSDOS, or __TURBOC__ */
1128 | #endif /* not sparc. */
1129 | #endif /* not GNU C. */
1130 | #endif /* alloca not defined. */
1131 |
1132 | /* This is the parser code that is written into each bison parser
1133 | when the %semantic_parser declaration is not specified in the grammar.
1134 | It was written by Richard Stallman by simplifying the hairy parser
1135 | used when %semantic_parser is specified. */
1136 |
1137 | /* Note: there must be only one dollar sign in this file.
1138 | It is replaced by the list of actions, each action
1139 | as one case of the switch. */
1140 |
1141 | #define yyerrok (yyerrstatus = 0)
1142 | #define yyclearin (yychar = YYEMPTY)
1143 | #define YYEMPTY -2
1144 | #define YYEOF 0
1145 | #define YYACCEPT return(0)
1146 | #define YYABORT return(1)
1147 | #define YYERROR goto yyerrlab1
1148 | /* Like YYERROR except do call yyerror.
1149 | This remains here temporarily to ease the
1150 | transition to the new meaning of YYERROR, for GCC.
1151 | Once GCC version 2 has supplanted version 1, this can go. */
1152 | #define YYFAIL goto yyerrlab
1153 | #define YYRECOVERING() (!!yyerrstatus)
1154 | #define YYBACKUP(token, value) \
1155 | do \
1156 | if (yychar == YYEMPTY && yylen == 1) \
1157 | { yychar = (token), yylval = (value); \
1158 | yychar1 = YYTRANSLATE (yychar); \
1159 | YYPOPSTACK; \
1160 | goto yybackup; \
1161 | } \
1162 | else \
1163 | { yyerror ("syntax error: cannot back up"); YYERROR; } \
1164 | while (0)
1165 |
1166 | #define YYTERROR 1
1167 | #define YYERRCODE 256
1168 |
1169 | #ifndef YYPURE
1170 | #define YYLEX yylex()
1171 | #endif
1172 |
1173 | #ifdef YYPURE
1174 | #ifdef YYLSP_NEEDED
1175 | #ifdef YYLEX_PARAM
1176 | #define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM)
1177 | #else
1178 | #define YYLEX yylex(&yylval, &yylloc)
1179 | #endif
1180 | #else /* not YYLSP_NEEDED */
1181 | #ifdef YYLEX_PARAM
1182 | #define YYLEX yylex(&yylval, YYLEX_PARAM)
1183 | #else
1184 | #define YYLEX yylex(&yylval)
1185 | #endif
1186 | #endif /* not YYLSP_NEEDED */
1187 | #endif
1188 |
1189 | /* If nonreentrant, generate the variables here */
1190 |
1191 | #ifndef YYPURE
1192 |
1193 | int yychar; /* the lookahead symbol */
1194 | YYSTYPE yylval; /* the semantic value of the */
1195 | /* lookahead symbol */
1196 |
1197 | #ifdef YYLSP_NEEDED
1198 | YYLTYPE yylloc; /* location data for the lookahead */
1199 | /* symbol */
1200 | #endif
1201 |
1202 | int yynerrs; /* number of parse errors so far */
1203 | #endif /* not YYPURE */
1204 |
1205 | #if YYDEBUG != 0
1206 | int yydebug; /* nonzero means print parse trace */
1207 | /* Since this is uninitialized, it does not stop multiple parsers
1208 | from coexisting. */
1209 | #endif
1210 |
1211 | /* YYINITDEPTH indicates the initial size of the parser's stacks */
1212 |
1213 | #ifndef YYINITDEPTH
1214 | #define YYINITDEPTH 200
1215 | #endif
1216 |
1217 | /* YYMAXDEPTH is the maximum size the stacks can grow to
1218 | (effective only if the built-in stack extension method is used). */
1219 |
1220 | #if YYMAXDEPTH == 0
1221 | #undef YYMAXDEPTH
1222 | #endif
1223 |
1224 | #ifndef YYMAXDEPTH
1225 | #define YYMAXDEPTH 10000
1226 | #endif
1227 |
1228 | /* Prevent warning if -Wstrict-prototypes. */
1229 | #ifdef __GNUC__
1230 | int yyparse (void);
1231 | #endif
1232 |
1233 | #if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
1234 | #define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT)
1235 | #else /* not GNU C or C++ */
1236 | #ifndef __cplusplus
1237 |
1238 | /* This is the most reliable way to avoid incompatibilities
1239 | in available built-in functions on various systems. */
1240 | static void
1241 | __yy_memcpy (to, from, count)
1242 | char *to;
1243 | char *from;
1244 | int count;
1245 | {
1246 | register char *f = from;
1247 | register char *t = to;
1248 | register int i = count;
1249 |
1250 | while (i-- > 0)
1251 | *t++ = *f++;
1252 | }
1253 |
1254 | #else /* __cplusplus */
1255 |
1256 | /* This is the most reliable way to avoid incompatibilities
1257 | in available built-in functions on various systems. */
1258 | static void
1259 | __yy_memcpy (char *to, char *from, int count)
1260 | {
1261 | register char *f = from;
1262 | register char *t = to;
1263 | register int i = count;
1264 |
1265 | while (i-- > 0)
1266 | *t++ = *f++;
1267 | }
1268 |
1269 | #endif
1270 | #endif
1271 |
1272 |
1273 |
1274 | /* The user can define YYPARSE_PARAM as the name of an argument to be passed
1275 | into yyparse. The argument should have type void *.
1276 | It should actually point to an object.
1277 | Grammar actions can access the variable by casting it
1278 | to the proper pointer type. */
1279 |
1280 | #ifdef YYPARSE_PARAM
1281 | #ifdef __cplusplus
1282 | #define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
1283 | #define YYPARSE_PARAM_DECL
1284 | #else /* not __cplusplus */
1285 | #define YYPARSE_PARAM_ARG YYPARSE_PARAM
1286 | #define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
1287 | #endif /* not __cplusplus */
1288 | #else /* not YYPARSE_PARAM */
1289 | #define YYPARSE_PARAM_ARG
1290 | #define YYPARSE_PARAM_DECL
1291 | #endif /* not YYPARSE_PARAM */
1292 |
1293 | int
1294 | yyparse(YYPARSE_PARAM_ARG)
1295 | YYPARSE_PARAM_DECL
1296 | {
1297 | register int yystate;
1298 | register int yyn;
1299 | register short *yyssp;
1300 | register YYSTYPE *yyvsp;
1301 | int yyerrstatus; /* number of tokens to shift before error messages enabled */
1302 | int yychar1 = 0; /* lookahead token as an internal (translated) token number */
1303 |
1304 | short yyssa[YYINITDEPTH]; /* the state stack */
1305 | YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */
1306 |
1307 | short *yyss = yyssa; /* refer to the stacks thru separate pointers */
1308 | YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */
1309 |
1310 | #ifdef YYLSP_NEEDED
1311 | YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */
1312 | YYLTYPE *yyls = yylsa;
1313 | YYLTYPE *yylsp;
1314 |
1315 | #define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
1316 | #else
1317 | #define YYPOPSTACK (yyvsp--, yyssp--)
1318 | #endif
1319 |
1320 | int yystacksize = YYINITDEPTH;
1321 |
1322 | #ifdef YYPURE
1323 | int yychar;
1324 | YYSTYPE yylval;
1325 | int yynerrs;
1326 | #ifdef YYLSP_NEEDED
1327 | YYLTYPE yylloc;
1328 | #endif
1329 | #endif
1330 |
1331 | YYSTYPE yyval; /* the variable used to return */
1332 | /* semantic values from the action */
1333 | /* routines */
1334 |
1335 | int yylen;
1336 |
1337 | #if YYDEBUG != 0
1338 | if (yydebug)
1339 | fprintf(stderr, "Starting parse\n");
1340 | #endif
1341 |
1342 | yystate = 0;
1343 | yyerrstatus = 0;
1344 | yynerrs = 0;
1345 | yychar = YYEMPTY; /* Cause a token to be read. */
1346 |
1347 | /* Initialize stack pointers.
1348 | Waste one element of value and location stack
1349 | so that they stay on the same level as the state stack.
1350 | The wasted elements are never initialized. */
1351 |
1352 | yyssp = yyss - 1;
1353 | yyvsp = yyvs;
1354 | #ifdef YYLSP_NEEDED
1355 | yylsp = yyls;
1356 | #endif
1357 |
1358 | /* Push a new state, which is found in yystate . */
1359 | /* In all cases, when you get here, the value and location stacks
1360 | have just been pushed. so pushing a state here evens the stacks. */
1361 | yynewstate:
1362 |
1363 | *++yyssp = yystate;
1364 |
1365 | if (yyssp >= yyss + yystacksize - 1)
1366 | {
1367 | /* Give user a chance to reallocate the stack */
1368 | /* Use copies of these so that the &'s don't force the real ones into memory. */
1369 | YYSTYPE *yyvs1 = yyvs;
1370 | short *yyss1 = yyss;
1371 | #ifdef YYLSP_NEEDED
1372 | YYLTYPE *yyls1 = yyls;
1373 | #endif
1374 |
1375 | /* Get the current used size of the three stacks, in elements. */
1376 | int size = yyssp - yyss + 1;
1377 |
1378 | #ifdef yyoverflow
1379 | /* Each stack pointer address is followed by the size of
1380 | the data in use in that stack, in bytes. */
1381 | #ifdef YYLSP_NEEDED
1382 | /* This used to be a conditional around just the two extra args,
1383 | but that might be undefined if yyoverflow is a macro. */
1384 | yyoverflow("parser stack overflow",
1385 | &yyss1, size * sizeof (*yyssp),
1386 | &yyvs1, size * sizeof (*yyvsp),
1387 | &yyls1, size * sizeof (*yylsp),
1388 | &yystacksize);
1389 | #else
1390 | yyoverflow("parser stack overflow",
1391 | &yyss1, size * sizeof (*yyssp),
1392 | &yyvs1, size * sizeof (*yyvsp),
1393 | &yystacksize);
1394 | #endif
1395 |
1396 | yyss = yyss1; yyvs = yyvs1;
1397 | #ifdef YYLSP_NEEDED
1398 | yyls = yyls1;
1399 | #endif
1400 | #else /* no yyoverflow */
1401 | /* Extend the stack our own way. */
1402 | if (yystacksize >= YYMAXDEPTH)
1403 | {
1404 | yyerror("parser stack overflow");
1405 | return 2;
1406 | }
1407 | yystacksize *= 2;
1408 | if (yystacksize > YYMAXDEPTH)
1409 | yystacksize = YYMAXDEPTH;
1410 | yyss = (short *) alloca (yystacksize * sizeof (*yyssp));
1411 | __yy_memcpy ((char *)yyss, (char *)yyss1, size * sizeof (*yyssp));
1412 | yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp));
1413 | __yy_memcpy ((char *)yyvs, (char *)yyvs1, size * sizeof (*yyvsp));
1414 | #ifdef YYLSP_NEEDED
1415 | yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp));
1416 | __yy_memcpy ((char *)yyls, (char *)yyls1, size * sizeof (*yylsp));
1417 | #endif
1418 | #endif /* no yyoverflow */
1419 |
1420 | yyssp = yyss + size - 1;
1421 | yyvsp = yyvs + size - 1;
1422 | #ifdef YYLSP_NEEDED
1423 | yylsp = yyls + size - 1;
1424 | #endif
1425 |
1426 | #if YYDEBUG != 0
1427 | if (yydebug)
1428 | fprintf(stderr, "Stack size increased to %d\n", yystacksize);
1429 | #endif
1430 |
1431 | if (yyssp >= yyss + yystacksize - 1)
1432 | YYABORT;
1433 | }
1434 |
1435 | #if YYDEBUG != 0
1436 | if (yydebug)
1437 | fprintf(stderr, "Entering state %d\n", yystate);
1438 | #endif
1439 |
1440 | goto yybackup;
1441 | yybackup:
1442 |
1443 | /* Do appropriate processing given the current state. */
1444 | /* Read a lookahead token if we need one and don't already have one. */
1445 | /* yyresume: */
1446 |
1447 | /* First try to decide what to do without reference to lookahead token. */
1448 |
1449 | yyn = yypact[yystate];
1450 | if (yyn == YYFLAG)
1451 | goto yydefault;
1452 |
1453 | /* Not known => get a lookahead token if don't already have one. */
1454 |
1455 | /* yychar is either YYEMPTY or YYEOF
1456 | or a valid token in external form. */
1457 |
1458 | if (yychar == YYEMPTY)
1459 | {
1460 | #if YYDEBUG != 0
1461 | if (yydebug)
1462 | fprintf(stderr, "Reading a token: ");
1463 | #endif
1464 | yychar = YYLEX;
1465 | }
1466 |
1467 | /* Convert token to internal form (in yychar1) for indexing tables with */
1468 |
1469 | if (yychar <= 0) /* This means end of input. */
1470 | {
1471 | yychar1 = 0;
1472 | yychar = YYEOF; /* Don't call YYLEX any more */
1473 |
1474 | #if YYDEBUG != 0
1475 | if (yydebug)
1476 | fprintf(stderr, "Now at end of input.\n");
1477 | #endif
1478 | }
1479 | else
1480 | {
1481 | yychar1 = YYTRANSLATE(yychar);
1482 |
1483 | #if YYDEBUG != 0
1484 | if (yydebug)
1485 | {
1486 | fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
1487 | /* Give the individual parser a way to print the precise meaning
1488 | of a token, for further debugging info. */
1489 | #ifdef YYPRINT
1490 | YYPRINT (stderr, yychar, yylval);
1491 | #endif
1492 | fprintf (stderr, ")\n");
1493 | }
1494 | #endif
1495 | }
1496 |
1497 | yyn += yychar1;
1498 | if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
1499 | goto yydefault;
1500 |
1501 | yyn = yytable[yyn];
1502 |
1503 | /* yyn is what to do for this token type in this state.
1504 | Negative => reduce, -yyn is rule number.
1505 | Positive => shift, yyn is new state.
1506 | New state is final state => don't bother to shift,
1507 | just return success.
1508 | 0, or most negative number => error. */
1509 |
1510 | if (yyn < 0)
1511 | {
1512 | if (yyn == YYFLAG)
1513 | goto yyerrlab;
1514 | yyn = -yyn;
1515 | goto yyreduce;
1516 | }
1517 | else if (yyn == 0)
1518 | goto yyerrlab;
1519 |
1520 | if (yyn == YYFINAL)
1521 | YYACCEPT;
1522 |
1523 | /* Shift the lookahead token. */
1524 |
1525 | #if YYDEBUG != 0
1526 | if (yydebug)
1527 | fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
1528 | #endif
1529 |
1530 | /* Discard the token being shifted unless it is eof. */
1531 | if (yychar != YYEOF)
1532 | yychar = YYEMPTY;
1533 |
1534 | *++yyvsp = yylval;
1535 | #ifdef YYLSP_NEEDED
1536 | *++yylsp = yylloc;
1537 | #endif
1538 |
1539 | /* count tokens shifted since error; after three, turn off error status. */
1540 | if (yyerrstatus) yyerrstatus--;
1541 |
1542 | yystate = yyn;
1543 | goto yynewstate;
1544 |
1545 | /* Do the default action for the current state. */
1546 | yydefault:
1547 |
1548 | yyn = yydefact[yystate];
1549 | if (yyn == 0)
1550 | goto yyerrlab;
1551 |
1552 | /* Do a reduction. yyn is the number of a rule to reduce with. */
1553 | yyreduce:
1554 | yylen = yyr2[yyn];
1555 | if (yylen > 0)
1556 | yyval = yyvsp[1-yylen]; /* implement default value of the action */
1557 |
1558 | #if YYDEBUG != 0
1559 | if (yydebug)
1560 | {
1561 | int i;
1562 |
1563 | fprintf (stderr, "Reducing via rule %d (line %d), ",
1564 | yyn, yyrline[yyn]);
1565 |
1566 | /* Print the symbols being reduced, and their result. */
1567 | for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
1568 | fprintf (stderr, "%s ", yytname[yyrhs[i]]);
1569 | fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
1570 | }
1571 | #endif
1572 |
1573 |
1574 | switch (yyn) {
1575 |
1576 | case 5:
1577 | { scope=0; reset(); common_comment=NULL; in_typedef=0; GetCurrentComment(); ;
1578 | break;}
1579 | case 6:
1580 | { scope=0; reset(); common_comment=NULL; in_typedef=0; GetCurrentComment(); ;
1581 | break;}
1582 | case 9:
1583 | { scope=0; reset(); common_comment=NULL; in_typedef=0; ;
1584 | break;}
1585 | case 10:
1586 | { scope=0; reset(); common_comment=NULL; in_typedef=0;
1587 | yyval=yyvsp[0]; ;
1588 | break;}
1589 | case 11:
1590 | { in_type_spec=0; ;
1591 | break;}
1592 | case 12:
1593 | { in_type_spec=0; ;
1594 | break;}
1595 | case 13:
1596 | { if(!in_typedef && !in_function && !common_comment)
1597 | {common_comment=CopyString(GetCurrentComment()); SetCurrentComment(common_comment);} ;
1598 | break;}
1599 | case 15:
1600 | { if(yyvsp[-1]) yyval=ConcatStrings(3,yyvsp[-1]," ",yyvsp[0]); else yyval=yyvsp[0]; ;
1601 | break;}
1602 | case 16:
1603 | { if(!current->type) current->type=yyvsp[0]; ;
1604 | break;}
1605 | case 17:
1606 | { if(!current->type) current->type=yyvsp[-1];
1607 | yyval=ConcatStrings(3,yyvsp[-1]," ",yyvsp[0]); ;
1608 | break;}
1609 | case 19:
1610 | { yyval=ConcatStrings(3,yyvsp[-1]," ",yyvsp[0]); ;
1611 | break;}
1612 | case 21:
1613 | { in_type_spec=1; ;
1614 | break;}
1615 | case 23:
1616 | {
1617 | if((in_function==0 || in_function==3) && !in_funcdef && !in_structunion)
1618 | {
1619 | char* specific_comment=GetCurrentComment();
1620 | if(!common_comment) SetCurrentComment(specific_comment); else
1621 | if(!specific_comment) SetCurrentComment(common_comment); else
1622 | if(strcmp(common_comment,specific_comment)) SetCurrentComment(ConcatStrings(3,common_comment," ",specific_comment)); else
1623 | SetCurrentComment(common_comment);
1624 | }
1625 |
1626 | if(in_typedef)
1627 | {
1628 | char* vname=strstr(yyvsp[0],current->name);
1629 | SeenTypedefName(current->name,vname[strlen(current->name)]=='('?-1:1);
1630 | if(!in_header)
1631 | SeenTypedef(current->name,ConcatStrings(3,current->qual,current->type,yyvsp[0]));
1632 | if(in_function==3)
1633 | DownScope();
1634 | }
1635 | else
1636 | if(in_function==2)
1637 | SeenFunctionArg(current->name,ConcatStrings(3,current->qual,current->type,yyvsp[0]));
1638 | else
1639 | {
1640 | char* vname=strstr(yyvsp[0],current->name);
1641 | if(vname[strlen(current->name)]!='(' && IsATypeName(current->type)!='f')
1642 | {
1643 | if((in_funcbody==0 || scope&EXTERN_F) && !in_structunion && !(in_header==GLOBAL && scope&EXTERN_H))
1644 | SeenVariableDefinition(current->name,ConcatStrings(3,current->qual,current->type,yyvsp[0]),SCOPE);
1645 | else
1646 | if(in_funcbody)
1647 | SeenScopeVariable(current->name);
1648 | }
1649 | else
1650 | {
1651 | SeenFunctionProto(current->name,in_funcbody);
1652 | if(in_function==3)
1653 | DownScope();
1654 | }
1655 | }
1656 |
1657 | if(in_function==3) in_function=0;
1658 | ;
1659 | break;}
1660 | case 36:
1661 | { yyval=ConcatStrings(2,yyvsp[-1],yyvsp[0]); ;
1662 | break;}
1663 | case 38:
1664 | { yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]);
1665 | { int i=0; while(yyvsp[-1][i] && yyvsp[-1][i]=='*') i++; if(!yyvsp[-1][i]) in_type_spec=0; } ;
1666 | break;}
1667 | case 39:
1668 | { yyval=ConcatStrings(2,yyvsp[-1],yyvsp[0]); ;
1669 | break;}
1670 | case 40:
1671 | { yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); ;
1672 | break;}
1673 | case 41:
1674 | { yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); ;
1675 | break;}
1676 | case 42:
1677 | { yyval=ConcatStrings(4,yyvsp[-3],yyvsp[-2],yyvsp[-1],yyvsp[0]); ;
1678 | break;}
1679 | case 43:
1680 | { yyval=ConcatStrings(2,yyvsp[-1],yyvsp[0]); ;
1681 | break;}
1682 | case 44:
1683 | { yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); ;
1684 | break;}
1685 | case 45:
1686 | { yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); ;
1687 | break;}
1688 | case 46:
1689 | { yyval=ConcatStrings(4,yyvsp[-3],yyvsp[-2],yyvsp[-1],yyvsp[0]); ;
1690 | break;}
1691 | case 47:
1692 | { in_type_spec=0; ;
1693 | break;}
1694 | case 48:
1695 | { in_type_spec=0; yyval=ConcatStrings(2,yyvsp[-1],yyvsp[0]); ;
1696 | break;}
1697 | case 50:
1698 | { yyval=ConcatStrings(3,yyvsp[-1]," ",yyvsp[0]); ;
1699 | break;}
1700 | case 51:
1701 | { yyval=ConcatStrings(2,yyvsp[-1],yyvsp[0]); ;
1702 | break;}
1703 | case 52:
1704 | { yyval=ConcatStrings(4,yyvsp[-2]," ",yyvsp[-1],yyvsp[0]); ;
1705 | break;}
1706 | case 54:
1707 | { if(yyvsp[-1][0]=='*' && yyvsp[-1][1]==' ') { yyvsp[-1]=&yyvsp[-1][1]; yyvsp[-1][0]='*'; }
1708 | yyval=ConcatStrings(4," ",yyvsp[-2],yyvsp[-1],yyvsp[0]);
1709 | ;
1710 | break;}
1711 | case 57:
1712 | { yyval=ConcatStrings(2," ",yyvsp[0]); current->name=yyvsp[0];
1713 | if(!current->type) current->type="int";
1714 | if(in_funcdef==1 && in_function!=3 && !in_structunion) SeenScopeVariable(yyvsp[0]); ;
1715 | break;}
1716 | case 58:
1717 | { yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); ;
1718 | break;}
1719 | case 59:
1720 | { in_type_spec=0; ;
1721 | break;}
1722 | case 60:
1723 | { in_type_spec=1; ;
1724 | break;}
1725 | case 61:
1726 | { yyval=ConcatStrings(4,yyvsp[-5],yyvsp[-4],yyvsp[-2],yyvsp[0]); ;
1727 | break;}
1728 | case 63:
1729 | { yyval=NULL; ;
1730 | break;}
1731 | case 64:
1732 | { yyval=NULL;
1733 | if(in_funcbody) scope|=EXTERN_F;
1734 | else if(in_header) scope|=EXTERN_H;
1735 | else scope|=EXTERNAL; ;
1736 | break;}
1737 | case 65:
1738 | { yyval=NULL; ;
1739 | break;}
1740 | case 66:
1741 | { yyval=NULL; scope |= LOCAL; ;
1742 | break;}
1743 | case 67:
1744 | { yyval=NULL;
1745 | in_typedef=1; if(!in_header) SeenTypedef(NULL,NULL);
1746 | common_comment=CopyString(GetCurrentComment()); ;
1747 | break;}
1748 | case 68:
1749 | { yyval=NULL; scope |= INLINED; ;
1750 | break;}
1751 | case 70:
1752 | { yyval=ConcatStrings(3,yyvsp[-1]," ",yyvsp[0]); ;
1753 | break;}
1754 | case 71:
1755 | { if(!current->type) current->qual=ConcatStrings(3,current->qual,yyvsp[0]," "); ;
1756 | break;}
1757 | case 72:
1758 | { if(!current->type) current->qual=ConcatStrings(3,current->qual,yyvsp[0]," "); ;
1759 | break;}
1760 | case 73:
1761 | { in_type_spec=1; ;
1762 | break;}
1763 | case 83:
1764 | { yyval=ConcatStrings(3,yyvsp[-1]," ",yyvsp[0]); ;
1765 | break;}
1766 | case 84:
1767 | { yyval=ConcatStrings(3,yyvsp[-1]," ",yyvsp[0]); ;
1768 | break;}
1769 | case 86:
1770 | { yyval=ConcatStrings(3,yyvsp[-1]," ",yyvsp[0]); ;
1771 | break;}
1772 | case 87:
1773 | { yyval=ConcatStrings(3,yyvsp[-1]," ",yyvsp[0]); ;
1774 | break;}
1775 | case 96:
1776 | { in_type_spec=0; ;
1777 | break;}
1778 | case 97:
1779 | { in_type_spec=0; yyval=ConcatStrings(2,yyvsp[-1],yyvsp[0]); ;
1780 | break;}
1781 | case 100:
1782 | { push();
1783 | if(!in_header)
1784 | {
1785 | if(in_structunion) SeenStructUnionComp(yyvsp[-1],in_structunion);
1786 | else SeenStructUnionStart(yyvsp[-1]);
1787 | }
1788 | in_structunion++; ;
1789 | break;}
1790 | case 101:
1791 | { pop(); in_structunion--;
1792 | if(!in_structunion && !current->type) current->type=ConcatStrings(2,yyvsp[-4]," {...}");
1793 | if(!in_header && !in_structunion && in_typedef) SeenStructUnionEnd();
1794 | yyval=ConcatStrings(5,yyvsp[-4]," ",yyvsp[-3],yyvsp[-1],yyvsp[0]); ;
1795 | break;}
1796 | case 102:
1797 | { push();
1798 | if(!in_header)
1799 | {
1800 | if(in_structunion) SeenStructUnionComp(ConcatStrings(3,yyvsp[-2]," ",yyvsp[-1]),in_structunion);
1801 | else SeenStructUnionStart(ConcatStrings(3,yyvsp[-2]," ",yyvsp[-1]));
1802 | }
1803 | in_structunion++; ;
1804 | break;}
1805 | case 103:
1806 | { pop(); in_structunion--;
1807 | if(!in_structunion && !current->type) current->type=ConcatStrings(3,yyvsp[-5]," ",yyvsp[-4]);
1808 | if(!in_header && !in_structunion) SeenStructUnionEnd();
1809 | yyval=ConcatStrings(7,yyvsp[-5]," ",yyvsp[-4]," ",yyvsp[-3],yyvsp[-1],yyvsp[0]);;
1810 | break;}
1811 | case 107:
1812 | { yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); ;
1813 | break;}
1814 | case 108:
1815 | { if(!in_header) SeenStructUnionComp(yyvsp[0],in_structunion); ;
1816 | break;}
1817 | case 109:
1818 | { yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); if(!in_header) SeenStructUnionComp(yyvsp[-2],in_structunion); ;
1819 | break;}
1820 | case 111:
1821 | { yyval=ConcatStrings(3,yyvsp[-1]," ",yyvsp[0]); ;
1822 | break;}
1823 | case 116:
1824 | { push();
1825 | if(!in_header)
1826 | {
1827 | if(in_structunion) SeenStructUnionComp(yyvsp[-1],in_structunion);
1828 | else SeenStructUnionStart(yyvsp[-1]);
1829 | }
1830 | in_structunion++; ;
1831 | break;}
1832 | case 117:
1833 | { pop(); in_structunion--;
1834 | if(!in_structunion && !current->type) current->type=ConcatStrings(2,yyvsp[-4]," {...}");
1835 | if(!in_header && !in_structunion && in_typedef) SeenStructUnionEnd();
1836 | yyval=ConcatStrings(5,yyvsp[-4]," ",yyvsp[-3],yyvsp[-1],yyvsp[0]); ;
1837 | break;}
1838 | case 118:
1839 | { push();
1840 | if(!in_header)
1841 | {
1842 | if(in_structunion) SeenStructUnionComp(ConcatStrings(3,yyvsp[-2]," ",yyvsp[-1]),in_structunion);
1843 | else SeenStructUnionStart(ConcatStrings(3,yyvsp[-2]," ",yyvsp[-1]));
1844 | }
1845 | in_structunion++; ;
1846 | break;}
1847 | case 119:
1848 | { pop(); in_structunion--;
1849 | if(!in_structunion && !current->type) current->type=ConcatStrings(3,yyvsp[-5]," ",yyvsp[-4]);
1850 | if(!in_header && !in_structunion) SeenStructUnionEnd();
1851 | yyval=ConcatStrings(7,yyvsp[-5]," ",yyvsp[-4]," ",yyvsp[-3],yyvsp[-1],yyvsp[0]);;
1852 | break;}
1853 | case 120:
1854 | { yyval=ConcatStrings(3,yyvsp[-1]," ",yyvsp[0]); ;
1855 | break;}
1856 | case 125:
1857 | { push();
1858 | if(!in_header)
1859 | {
1860 | if(in_structunion) SeenStructUnionComp(yyvsp[-1],in_structunion);
1861 | else SeenStructUnionStart(yyvsp[-1]);
1862 | }
1863 | in_structunion++; ;
1864 | break;}
1865 | case 126:
1866 | { pop(); in_structunion--;
1867 | if(!in_structunion && !current->type) current->type=ConcatStrings(2,yyvsp[-4]," {...}");
1868 | if(!in_header && !in_structunion && in_typedef) SeenStructUnionEnd();
1869 | yyval=ConcatStrings(5,yyvsp[-4]," ",yyvsp[-3],yyvsp[-1],yyvsp[0]); ;
1870 | break;}
1871 | case 127:
1872 | { push();
1873 | if(!in_header)
1874 | {
1875 | if(in_structunion) SeenStructUnionComp(ConcatStrings(3,yyvsp[-2]," ",yyvsp[-1]),in_structunion);
1876 | else SeenStructUnionStart(ConcatStrings(3,yyvsp[-2]," ",yyvsp[-1]));
1877 | }
1878 | in_structunion++; ;
1879 | break;}
1880 | case 128:
1881 | { pop(); in_structunion--;
1882 | if(!in_structunion && !current->type) current->type=ConcatStrings(3,yyvsp[-5]," ",yyvsp[-4]);
1883 | if(!in_header && !in_structunion) SeenStructUnionEnd();
1884 | yyval=ConcatStrings(7,yyvsp[-5]," ",yyvsp[-4]," ",yyvsp[-3],yyvsp[-1],yyvsp[0]);;
1885 | break;}
1886 | case 129:
1887 | { yyval=ConcatStrings(3,yyvsp[-1]," ",yyvsp[0]); ;
1888 | break;}
1889 | case 135:
1890 | { yyval=ConcatStrings(2,yyvsp[-1],yyvsp[0]); ;
1891 | break;}
1892 | case 137:
1893 | { yyval = ConcatStrings(3, yyvsp[-1], " ", yyvsp[0]);
1894 | if(!in_header) SeenStructUnionComp(yyvsp[-1],in_structunion); ;
1895 | break;}
1896 | case 138:
1897 | { yyval = ConcatStrings(3, yyvsp[-1], " ", yyvsp[0]);
1898 | if(!in_header) SeenStructUnionComp(yyvsp[-1],in_structunion); ;
1899 | break;}
1900 | case 140:
1901 | { comp_type=yyvsp[0]; ;
1902 | break;}
1903 | case 141:
1904 | { yyval=ConcatStrings(3,yyvsp[-3],yyvsp[-1],yyvsp[0]); reset(); in_type_spec=0; ;
1905 | break;}
1906 | case 142:
1907 | { comp_type=ConcatStrings(3,yyvsp[-1]," ",yyvsp[0]); ;
1908 | break;}
1909 | case 143:
1910 | { yyval=ConcatStrings(4,yyvsp[-4],yyvsp[-3],yyvsp[-1],yyvsp[0]); reset(); in_type_spec=0; ;
1911 | break;}
1912 | case 144:
1913 | { comp_type=ConcatStrings(3,yyvsp[-1]," ",yyvsp[0]); ;
1914 | break;}
1915 | case 145:
1916 | { yyval=ConcatStrings(4,yyvsp[-4],yyvsp[-3],yyvsp[-1],yyvsp[0]); reset(); in_type_spec=0; ;
1917 | break;}
1918 | case 146:
1919 | { if(!in_header) SeenStructUnionComp(ConcatStrings(2,comp_type,yyvsp[0]),in_structunion); ;
1920 | break;}
1921 | case 147:
1922 | { yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]);
1923 | if(!in_header) SeenStructUnionComp(ConcatStrings(2,comp_type,yyvsp[0]),in_structunion); ;
1924 | break;}
1925 | case 150:
1926 | { if(in_function==2) { DownScope(); pop(); in_function=0; } ;
1927 | break;}
1928 | case 151:
1929 | { yyval=ConcatStrings(2,yyvsp[-1],yyvsp[0]); ;
1930 | break;}
1931 | case 152:
1932 | { yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); ;
1933 | break;}
1934 | case 156:
1935 | { pop(); in_funcbody=1; in_function=0; ;
1936 | break;}
1937 | case 157:
1938 | { in_funcbody=in_function=0; DownScope(); SeenFunctionDefinition(NULL); ;
1939 | break;}
1940 | case 158:
1941 | { char *func_type,*fname=strstr(yyvsp[0],(current-1)->name),*parenth=strstr(yyvsp[0],"(");
1942 | if(parenth>fname)
1943 | {parenth[0]=0;func_type=ConcatStrings(3,(current-1)->qual,(current-1)->type,yyvsp[0]);}
1944 | else
1945 | {
1946 | int open=1;
1947 | char *argbeg=strstr(&parenth[1],"("),*argend;
1948 | argbeg[1]=0;
1949 | for(argend=argbeg+2;*argend;argend++)
1950 | {
1951 | if(*argend=='(') open++;
1952 | if(*argend==')') open--;
1953 | if(!open) break;
1954 | }
1955 | func_type=ConcatStrings(4,(current-1)->qual,(current-1)->type,yyvsp[0],argend);
1956 | }
1957 | SeenFunctionDefinition(func_type);
1958 | ;
1959 | break;}
1960 | case 160:
1961 | { yyval=ConcatStrings(3,current->qual,current->type,yyvsp[0]); ;
1962 | break;}
1963 | case 162:
1964 | { yyval=ConcatStrings(3,current->qual,current->type,yyvsp[-1]); ;
1965 | break;}
1966 | case 163:
1967 | { push(); in_function=2; ;
1968 | break;}
1969 | case 165:
1970 | { yyval=ConcatStrings(2,yyvsp[-1],yyvsp[0]); ;
1971 | break;}
1972 | case 166:
1973 | { push(); if(in_function==0) UpScope();
1974 | if(in_function==0 && !in_funcdef) in_function=1; if(in_function!=3) in_funcdef++; ;
1975 | break;}
1976 | case 167:
1977 | { pop(); if(in_function!=3) in_funcdef--; if(in_funcdef==0) in_function=3;
1978 | yyval=ConcatStrings(4,yyvsp[-4],yyvsp[-3],yyvsp[-1],yyvsp[0]); ;
1979 | break;}
1980 | case 168:
1981 | {
1982 | if(!in_funcdef && !in_function && !in_funcbody) SeenFunctionDeclaration(current->name,SCOPE);
1983 | in_type_spec=0;
1984 | ;
1985 | break;}
1986 | case 169:
1987 | { if(in_function==1 && in_funcdef==1) SeenFunctionArg("void","void");
1988 | if(in_structunion) yyval=NULL; else yyval="void"; ;
1989 | break;}
1990 | case 172:
1991 | { if(in_function==1 && in_funcdef==1 && in_funcbody==0) { SeenFunctionArg(yyvsp[0],NULL); SeenScopeVariable(yyvsp[0]); } ;
1992 | break;}
1993 | case 173:
1994 | { if(in_function==1 && in_funcdef==1 && in_funcbody==0) { SeenFunctionArg(yyvsp[0],NULL); SeenScopeVariable(yyvsp[0]); }
1995 | yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); ;
1996 | break;}
1997 | case 175:
1998 | { if(in_function==1 && in_funcdef==1 && in_funcbody==0) SeenFunctionArg(yyvsp[0],yyvsp[0]);
1999 | yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); ;
2000 | break;}
2001 | case 176:
2002 | { if(in_function==1 && in_funcdef==1 && in_funcbody==0) SeenFunctionArg(strcmp("void",yyvsp[0])?current->name:"void",yyvsp[0]);
2003 | in_type_spec=0; ;
2004 | break;}
2005 | case 177:
2006 | { if(in_function==1 && in_funcdef==1 && in_funcbody==0) SeenFunctionArg(current->name,yyvsp[0]);
2007 | in_type_spec=0; yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); ;
2008 | break;}
2009 | case 178:
2010 | { in_type_spec=0; yyval=ConcatStrings(2,yyvsp[-1],yyvsp[0]); ;
2011 | break;}
2012 | case 179:
2013 | { in_type_spec=0; ;
2014 | break;}
2015 | case 180:
2016 | { in_type_spec=0; yyval=ConcatStrings(2,yyvsp[-1],yyvsp[0]); ;
2017 | break;}
2018 | case 195:
2019 | { UpScope(); reset(); ;
2020 | break;}
2021 | case 196:
2022 | { DownScope(); ;
2023 | break;}
2024 | case 237:
2025 | { yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); ;
2026 | break;}
2027 | case 254:
2028 | { yyval=ConcatStrings(5,yyvsp[-4],yyvsp[-3],yyvsp[-2],yyvsp[-1],yyvsp[0]); ;
2029 | break;}
2030 | case 255:
2031 | { yyval=ConcatStrings(4,yyvsp[-3],yyvsp[-2],yyvsp[-1],yyvsp[0]); ;
2032 | break;}
2033 | case 257:
2034 | { yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); ;
2035 | break;}
2036 | case 259:
2037 | { yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); ;
2038 | break;}
2039 | case 261:
2040 | { yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); ;
2041 | break;}
2042 | case 263:
2043 | { yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); ;
2044 | break;}
2045 | case 265:
2046 | { yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); ;
2047 | break;}
2048 | case 267:
2049 | { yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); ;
2050 | break;}
2051 | case 271:
2052 | { yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); ;
2053 | break;}
2054 | case 277:
2055 | { yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); ;
2056 | break;}
2057 | case 281:
2058 | { yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); ;
2059 | break;}
2060 | case 285:
2061 | { yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); ;
2062 | break;}
2063 | case 301:
2064 | { yyval=ConcatStrings(2,yyvsp[-1],yyvsp[0]); ;
2065 | break;}
2066 | case 302:
2067 | { yyval=ConcatStrings(4,yyvsp[-3],yyvsp[-2],yyvsp[-1],yyvsp[0]); ;
2068 | break;}
2069 | case 306:
2070 | { yyval=ConcatStrings(2,yyvsp[-1],yyvsp[0]); ;
2071 | break;}
2072 | case 309:
2073 | { yyval=ConcatStrings(4,yyvsp[-3],yyvsp[-2],yyvsp[-1],yyvsp[0]); ;
2074 | break;}
2075 | case 310:
2076 | { yyval=ConcatStrings(2,yyvsp[-1],yyvsp[0]); ;
2077 | break;}
2078 | case 311:
2079 | { yyval=ConcatStrings(2,yyvsp[-1],yyvsp[0]); ;
2080 | break;}
2081 | case 312:
2082 | { yyval=ConcatStrings(2,yyvsp[-1],yyvsp[0]); ;
2083 | break;}
2084 | case 315:
2085 | { if(!IsAScopeVariable(yyvsp[0])) SeenFunctionCall(yyvsp[0]); ;
2086 | break;}
2087 | case 331:
2088 | { CheckFunctionVariableRef(yyvsp[0],in_funcbody); ;
2089 | break;}
2090 | case 337:
2091 | { yyval=ConcatStrings(3,yyvsp[-2],yyvsp[-1],yyvsp[0]); ;
2092 | break;}
2093 | case 338:
2094 | { push(); ;
2095 | break;}
2096 | case 339:
2097 | { pop(); ;
2098 | break;}
2099 | }
2100 | /* the action file gets copied in in place of this dollarsign */
2101 |
2102 |
2103 | yyvsp -= yylen;
2104 | yyssp -= yylen;
2105 | #ifdef YYLSP_NEEDED
2106 | yylsp -= yylen;
2107 | #endif
2108 |
2109 | #if YYDEBUG != 0
2110 | if (yydebug)
2111 | {
2112 | short *ssp1 = yyss - 1;
2113 | fprintf (stderr, "state stack now");
2114 | while (ssp1 != yyssp)
2115 | fprintf (stderr, " %d", *++ssp1);
2116 | fprintf (stderr, "\n");
2117 | }
2118 | #endif
2119 |
2120 | *++yyvsp = yyval;
2121 |
2122 | #ifdef YYLSP_NEEDED
2123 | yylsp++;
2124 | if (yylen == 0)
2125 | {
2126 | yylsp->first_line = yylloc.first_line;
2127 | yylsp->first_column = yylloc.first_column;
2128 | yylsp->last_line = (yylsp-1)->last_line;
2129 | yylsp->last_column = (yylsp-1)->last_column;
2130 | yylsp->text = 0;
2131 | }
2132 | else
2133 | {
2134 | yylsp->last_line = (yylsp+yylen-1)->last_line;
2135 | yylsp->last_column = (yylsp+yylen-1)->last_column;
2136 | }
2137 | #endif
2138 |
2139 | /* Now "shift" the result of the reduction.
2140 | Determine what state that goes to,
2141 | based on the state we popped back to
2142 | and the rule number reduced by. */
2143 |
2144 | yyn = yyr1[yyn];
2145 |
2146 | yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
2147 | if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
2148 | yystate = yytable[yystate];
2149 | else
2150 | yystate = yydefgoto[yyn - YYNTBASE];
2151 |
2152 | goto yynewstate;
2153 |
2154 | yyerrlab: /* here on detecting error */
2155 |
2156 | if (! yyerrstatus)
2157 | /* If not already recovering from an error, report this error. */
2158 | {
2159 | ++yynerrs;
2160 |
2161 | #ifdef YYERROR_VERBOSE
2162 | yyn = yypact[yystate];
2163 |
2164 | if (yyn > YYFLAG && yyn < YYLAST)
2165 | {
2166 | int size = 0;
2167 | char *msg;
2168 | int x, count;
2169 |
2170 | count = 0;
2171 | /* Start X at -yyn if nec to avoid negative indexes in yycheck. */
2172 | for (x = (yyn < 0 ? -yyn : 0);
2173 | x < (sizeof(yytname) / sizeof(char *)); x++)
2174 | if (yycheck[x + yyn] == x)
2175 | size += strlen(yytname[x]) + 15, count++;
2176 | msg = (char *) malloc(size + 15);
2177 | if (msg != 0)
2178 | {
2179 | strcpy(msg, "parse error");
2180 |
2181 | if (count < 5)
2182 | {
2183 | count = 0;
2184 | for (x = (yyn < 0 ? -yyn : 0);
2185 | x < (sizeof(yytname) / sizeof(char *)); x++)
2186 | if (yycheck[x + yyn] == x)
2187 | {
2188 | strcat(msg, count == 0 ? ", expecting `" : " or `");
2189 | strcat(msg, yytname[x]);
2190 | strcat(msg, "'");
2191 | count++;
2192 | }
2193 | }
2194 | yyerror(msg);
2195 | free(msg);
2196 | }
2197 | else
2198 | yyerror ("parse error; also virtual memory exceeded");
2199 | }
2200 | else
2201 | #endif /* YYERROR_VERBOSE */
2202 | yyerror("parse error");
2203 | }
2204 |
2205 | goto yyerrlab1;
2206 | yyerrlab1: /* here on error raised explicitly by an action */
2207 |
2208 | if (yyerrstatus == 3)
2209 | {
2210 | /* if just tried and failed to reuse lookahead token after an error, discard it. */
2211 |
2212 | /* return failure if at end of input */
2213 | if (yychar == YYEOF)
2214 | YYABORT;
2215 |
2216 | #if YYDEBUG != 0
2217 | if (yydebug)
2218 | fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
2219 | #endif
2220 |
2221 | yychar = YYEMPTY;
2222 | }
2223 |
2224 | /* Else will try to reuse lookahead token
2225 | after shifting the error token. */
2226 |
2227 | yyerrstatus = 3; /* Each real token shifted decrements this */
2228 |
2229 | goto yyerrhandle;
2230 |
2231 | yyerrdefault: /* current state does not do anything special for the error token. */
2232 |
2233 | #if 0
2234 | /* This is wrong; only states that explicitly want error tokens
2235 | should shift them. */
2236 | yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/
2237 | if (yyn) goto yydefault;
2238 | #endif
2239 |
2240 | yyerrpop: /* pop the current state because it cannot handle the error token */
2241 |
2242 | if (yyssp == yyss) YYABORT;
2243 | yyvsp--;
2244 | yystate = *--yyssp;
2245 | #ifdef YYLSP_NEEDED
2246 | yylsp--;
2247 | #endif
2248 |
2249 | #if YYDEBUG != 0
2250 | if (yydebug)
2251 | {
2252 | short *ssp1 = yyss - 1;
2253 | fprintf (stderr, "Error: state stack now");
2254 | while (ssp1 != yyssp)
2255 | fprintf (stderr, " %d", *++ssp1);
2256 | fprintf (stderr, "\n");
2257 | }
2258 | #endif
2259 |
2260 | yyerrhandle:
2261 |
2262 | yyn = yypact[yystate];
2263 | if (yyn == YYFLAG)
2264 | goto yyerrdefault;
2265 |
2266 | yyn += YYTERROR;
2267 | if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
2268 | goto yyerrdefault;
2269 |
2270 | yyn = yytable[yyn];
2271 | if (yyn < 0)
2272 | {
2273 | if (yyn == YYFLAG)
2274 | goto yyerrpop;
2275 | yyn = -yyn;
2276 | goto yyreduce;
2277 | }
2278 | else if (yyn == 0)
2279 | goto yyerrpop;
2280 |
2281 | if (yyn == YYFINAL)
2282 | YYACCEPT;
2283 |
2284 | #if YYDEBUG != 0
2285 | if (yydebug)
2286 | fprintf(stderr, "Shifting error token, ");
2287 | #endif
2288 |
2289 | *++yyvsp = yylval;
2290 | #ifdef YYLSP_NEEDED
2291 | *++yylsp = yylloc;
2292 | #endif
2293 |
2294 | yystate = yyn;
2295 | goto yynewstate;
2296 | }
2297 |
2298 |
2299 | #if YYDEBUG
2300 |
2301 | static int last_yylex[11];
2302 | static char *last_yylval[11];
2303 | static int count=0,modcount=0;
2304 |
2305 | #endif /* YYDEBUG */
2306 |
2307 |
2308 | /*++++++++++++++++++++++++++++++++++++++
2309 | Stop parsing the current file, due to an error.
2310 |
2311 | char *s The error message to print out.
2312 | ++++++++++++++++++++++++++++++++++++++*/
2313 |
2314 | static void yyerror( char *s )
2315 | {
2316 | #if YYDEBUG
2317 | int i;
2318 | #endif
2319 |
2320 | fflush(stdout);
2321 | fprintf(stderr,"%s:%d: cxref: %s\n\n",parse_file,parse_line,s);
2322 |
2323 | #if YYDEBUG
2324 |
2325 | fprintf(stderr,"The previous 10, current and next 10 symbols are:\n");
2326 |
2327 | for(i=count>10?count-11:0,modcount=i%11;i<count-1;i++,modcount=i%11)
2328 | #ifdef YYBISON
2329 | fprintf(stderr,"%3d | %3d : %16s : %s\n",i+1-count,last_yylex[modcount],last_yylex[modcount]>255?yytname[last_yylex[modcount]-255]:"",last_yylval[modcount]);
2330 | #else
2331 | fprintf(stderr,"%3d | %3d : %s\n",i+1-count,last_yylex[modcount],last_yylval[modcount]);
2332 | #endif
2333 |
2334 | #ifdef YYBISON
2335 | fprintf(stderr," 0 | %3d : %16s : %s\n",yychar,yychar>255?yytname[yychar-255]:"",yylval);
2336 | #else
2337 | fprintf(stderr," 0 | %3d : %s\n",yychar,yylval);
2338 | #endif
2339 |
2340 | for(i=0;i<10;i++)
2341 | {
2342 | yychar=yylex();
2343 | if(!yychar)
2344 | {fprintf(stderr,"END OF FILE\n");break;}
2345 | #ifdef YYBISON
2346 | fprintf(stderr,"%3d | %3d : %16s : %s\n",i+1,yychar,yychar>255?yytname[yychar-255]:"",yylval);
2347 | #else
2348 | fprintf(stderr,"%3d | %3d : %s\n",i+1,yychar,yylval);
2349 | #endif
2350 | }
2351 |
2352 | fprintf(stderr,"\n");
2353 |
2354 | #endif /* YYDEBUG */
2355 |
2356 | /* Finish off the input. */
2357 |
2358 | #undef yylex
2359 |
2360 | if(yychar)
2361 | while((yychar=yylex()));
2362 | }
2363 |
2364 |
2365 | /*++++++++++++++++++++++++++++++++++++++
2366 | Call the lexer, the feedback from the parser to the lexer is applied here.
2367 |
2368 | int cxref_yylex Returns the value from the lexer, modified due to parser feedback.
2369 | ++++++++++++++++++++++++++++++++++++++*/
2370 |
2371 | static int cxref_yylex(void)
2372 | {
2373 | static int last_yyl=0;
2374 | int yyl=yylex();
2375 |
2376 | if(yyl==TYPE_NAME)
2377 | if(in_type_spec || (in_structunion && last_yyl=='}') || last_yyl==TYPE_NAME ||
2378 | last_yyl==CHAR || last_yyl==SHORT || last_yyl==INT || last_yyl==LONG ||
2379 | last_yyl==SIGNED || last_yyl==UNSIGNED ||
2380 | last_yyl==FLOAT || last_yyl==DOUBLE)
2381 | yyl=IDENTIFIER;
2382 |
2383 | last_yyl=yyl;
2384 |
2385 | #if YYDEBUG
2386 |
2387 | last_yylex [modcount]=yyl;
2388 | last_yylval[modcount]=yylval;
2389 |
2390 | if(yyl)
2391 | {
2392 | count++;
2393 | modcount=count%11;
2394 | }
2395 | else
2396 | {
2397 | count=0;
2398 | modcount=0;
2399 | }
2400 |
2401 | #if YYDEBUG == 2
2402 |
2403 | if(yyl)
2404 | #ifdef YYBISON
2405 | printf("#parse.y# %6d | %16s:%4d | %3d : %16s : %s\n",count,parse_file,parse_line,yyl,yyl>255?yytname[yyl-255]:"",yylval);
2406 | #else
2407 | printf("#parse.y# %6d | %16s:%4d | %3d : %s\n",count,parse_file,parse_line,yyl,yylval);
2408 | #endif /* YYBISON */
2409 | else
2410 | printf("#parse.y# %6d | %16s:%4d | END OF FILE\n",count,parse_file,parse_line);
2411 |
2412 | fflush(stdout);
2413 |
2414 | #endif /* YYDEBUG==2 */
2415 |
2416 | #endif /* YYDEBUG */
2417 |
2418 | return(yyl);
2419 | }