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