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