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