CParser
using CLanguage.Parser.yyParser;
using CLanguage.Syntax;
using CLanguage.Types;
using System;
using System.Collections.Generic;
using System.IO;
namespace CLanguage.Parser
{
public class CParser
{
public TextWriter ErrorOutput = Console.Out;
public int eof_token;
protected const int yyFinal = 27;
protected static readonly string[] yyNames = new string[321] {
"end-of-file",
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
"'!'",
null,
null,
null,
"'%'",
"'&'",
null,
"'('",
"')'",
"'*'",
"'+'",
"','",
"'-'",
"'.'",
"'/'",
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
"':'",
"';'",
"'<'",
"'='",
"'>'",
"'?'",
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
"'['",
null,
"']'",
"'^'",
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
"'{'",
"'|'",
"'}'",
"'~'",
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
null,
"IDENTIFIER",
"CONSTANT",
"STRING_LITERAL",
"SIZEOF",
"PTR_OP",
"INC_OP",
"DEC_OP",
"LEFT_OP",
"RIGHT_OP",
"LE_OP",
"GE_OP",
"EQ_OP",
"NE_OP",
"AND_OP",
"OR_OP",
"MUL_ASSIGN",
"DIV_ASSIGN",
"MOD_ASSIGN",
"ADD_ASSIGN",
"SUB_ASSIGN",
"LEFT_ASSIGN",
"RIGHT_ASSIGN",
"AND_ASSIGN",
"XOR_ASSIGN",
"OR_ASSIGN",
"TYPE_NAME",
"TYPEDEF",
"EXTERN",
"STATIC",
"AUTO",
"REGISTER",
"INLINE",
"RESTRICT",
"CHAR",
"SHORT",
"INT",
"LONG",
"SIGNED",
"UNSIGNED",
"FLOAT",
"DOUBLE",
"CONST",
"VOLATILE",
"VOID",
"BOOL",
"COMPLEX",
"IMAGINARY",
"STRUCT",
"CLASS",
"UNION",
"ENUM",
"ELLIPSIS",
"CASE",
"DEFAULT",
"IF",
"ELSE",
"SWITCH",
"WHILE",
"DO",
"FOR",
"GOTO",
"CONTINUE",
"BREAK",
"RETURN"
};
private int yyExpectingState;
protected int yyMax;
private static int[] global_yyStates;
private static object[] global_yyVals;
protected bool use_global_stacks;
private object[] yyVals;
private object yyVal;
private int yyToken;
private int yyTop;
private static readonly short[] yyLhs = new short[231] {
-1,
1,
1,
1,
1,
3,
3,
3,
3,
3,
3,
3,
3,
3,
3,
4,
4,
8,
8,
8,
8,
8,
8,
8,
8,
10,
10,
10,
10,
9,
9,
11,
11,
11,
11,
12,
12,
12,
13,
13,
13,
14,
14,
14,
14,
14,
15,
15,
15,
16,
16,
17,
17,
18,
18,
19,
19,
20,
20,
21,
21,
7,
7,
22,
22,
22,
22,
22,
22,
22,
22,
22,
22,
22,
2,
2,
23,
24,
24,
25,
25,
25,
25,
25,
25,
25,
25,
26,
26,
31,
31,
27,
27,
27,
27,
27,
28,
28,
28,
28,
28,
28,
28,
28,
28,
28,
28,
28,
28,
28,
28,
34,
34,
34,
36,
36,
36,
38,
38,
38,
38,
35,
35,
35,
35,
35,
39,
39,
40,
40,
30,
32,
32,
42,
42,
42,
42,
42,
42,
42,
42,
42,
42,
42,
42,
42,
41,
41,
41,
41,
43,
43,
29,
29,
29,
44,
44,
46,
46,
47,
47,
47,
45,
45,
5,
5,
48,
48,
48,
49,
49,
49,
49,
49,
49,
49,
49,
49,
49,
49,
33,
33,
33,
6,
6,
6,
6,
50,
51,
51,
52,
52,
53,
53,
53,
53,
53,
53,
54,
54,
54,
37,
37,
59,
59,
60,
60,
55,
55,
56,
56,
56,
57,
57,
57,
57,
57,
57,
58,
58,
58,
58,
58,
0,
0,
61,
61,
62,
62,
63,
63
};
private static readonly short[] yyLen = new short[231] {
2,
1,
1,
1,
3,
1,
4,
3,
4,
3,
3,
2,
2,
6,
7,
1,
3,
1,
2,
2,
2,
2,
2,
2,
4,
1,
1,
1,
1,
1,
4,
1,
3,
3,
3,
1,
3,
3,
1,
3,
3,
1,
3,
3,
3,
3,
1,
3,
3,
1,
3,
1,
3,
1,
3,
1,
3,
1,
3,
1,
5,
1,
3,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
3,
1,
2,
3,
1,
2,
1,
2,
1,
2,
1,
2,
1,
3,
1,
3,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
3,
2,
2,
1,
1,
1,
2,
1,
2,
1,
4,
5,
5,
6,
2,
1,
3,
1,
3,
1,
2,
1,
1,
3,
5,
4,
4,
6,
6,
5,
4,
3,
4,
4,
3,
1,
2,
2,
3,
1,
2,
1,
1,
1,
1,
3,
1,
3,
2,
2,
1,
1,
3,
1,
2,
1,
1,
2,
3,
2,
3,
3,
4,
3,
4,
2,
3,
3,
4,
1,
3,
4,
1,
2,
3,
4,
2,
1,
2,
3,
2,
1,
1,
1,
1,
1,
1,
3,
4,
3,
2,
3,
1,
2,
1,
1,
1,
2,
5,
7,
5,
5,
7,
6,
7,
6,
7,
3,
2,
2,
2,
3,
1,
2,
1,
1,
4,
3,
1,
2
};
private static readonly short[] yyDefRed = new short[385] {
0,
110,
91,
92,
93,
94,
95,
130,
153,
97,
98,
99,
100,
103,
104,
101,
102,
152,
154,
96,
105,
106,
107,
114,
115,
116,
0,
0,
226,
0,
0,
0,
0,
0,
108,
109,
0,
223,
225,
0,
0,
224,
133,
0,
0,
77,
0,
87,
0,
0,
0,
80,
82,
84,
86,
0,
0,
112,
0,
0,
0,
126,
0,
150,
148,
0,
0,
78,
0,
229,
0,
228,
0,
0,
0,
0,
111,
0,
2,
3,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
201,
0,
0,
25,
26,
27,
28,
207,
5,
0,
0,
74,
0,
31,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
61,
205,
193,
206,
192,
194,
195,
196,
197,
0,
203,
0,
0,
121,
0,
134,
151,
149,
88,
0,
1,
0,
180,
90,
230,
227,
162,
145,
0,
0,
0,
0,
157,
0,
142,
0,
0,
0,
0,
0,
23,
0,
18,
19,
29,
76,
0,
0,
0,
0,
0,
0,
0,
0,
219,
220,
221,
0,
0,
0,
0,
0,
0,
20,
21,
0,
208,
0,
11,
12,
0,
0,
0,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
63,
0,
22,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
202,
204,
122,
0,
129,
123,
127,
0,
0,
0,
183,
0,
0,
188,
0,
0,
159,
0,
160,
0,
143,
144,
0,
0,
0,
141,
137,
0,
136,
0,
0,
198,
0,
0,
0,
200,
0,
0,
0,
0,
0,
0,
218,
222,
4,
0,
117,
119,
0,
0,
165,
75,
10,
7,
0,
15,
0,
9,
62,
32,
33,
34,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
124,
0,
191,
181,
0,
184,
187,
189,
176,
0,
0,
170,
0,
0,
0,
0,
0,
163,
156,
158,
0,
0,
140,
135,
0,
0,
199,
0,
0,
0,
0,
0,
0,
0,
30,
8,
0,
6,
0,
190,
182,
185,
0,
177,
169,
174,
171,
178,
0,
172,
0,
0,
138,
139,
0,
211,
212,
0,
0,
0,
0,
0,
0,
16,
60,
186,
179,
175,
173,
0,
0,
216,
0,
214,
0,
13,
0,
210,
213,
217,
215,
14
};
protected static readonly short[] yyDgoto = new short[64] {
27,
103,
104,
105,
279,
179,
234,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
204,
166,
28,
70,
46,
30,
31,
32,
33,
47,
62,
235,
34,
35,
36,
122,
182,
60,
61,
49,
50,
65,
312,
150,
151,
152,
313,
244,
236,
237,
238,
123,
124,
125,
126,
127,
128,
129,
130,
37,
38,
72
};
protected static readonly short[] yySindex = new short[385] {
2462,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
-83,
2462,
0,
-24,
2462,
2462,
2462,
2462,
0,
0,
-64,
0,
0,
-76,
-196,
0,
0,
-13,
-17,
0,
96,
0,
970,
16,
2,
0,
0,
0,
0,
-35,
64,
0,
-196,
7,
6,
0,
53,
0,
0,
-17,
-13,
0,
-28,
0,
-24,
0,
2357,
2,
344,
3,
0,
47,
0,
0,
2228,
2261,
2261,
2295,
99,
165,
170,
184,
493,
202,
49,
261,
270,
956,
433,
0,
2295,
2295,
0,
0,
0,
0,
0,
0,
160,
137,
0,
130,
0,
2295,
164,
242,
148,
66,
216,
255,
231,
210,
106,
-55,
0,
0,
0,
0,
0,
0,
0,
0,
0,
133,
0,
9,
2295,
0,
-101,
0,
0,
0,
0,
327,
0,
2033,
0,
0,
0,
0,
0,
0,
-36,
356,
97,
357,
0,
5,
0,
2056,
321,
621,
493,
433,
0,
433,
0,
0,
0,
0,
383,
493,
2295,
2295,
2295,
131,
532,
397,
0,
0,
0,
163,
110,
419,
2285,
2285,
34,
0,
0,
2295,
0,
213,
0,
0,
2064,
2295,
217,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
2295,
0,
2295,
2295,
2295,
2295,
2295,
2295,
2295,
2295,
2295,
2295,
2295,
2295,
2295,
2295,
2295,
2295,
2295,
2295,
2295,
0,
0,
0,
-88,
0,
0,
0,
2295,
220,
21,
0,
-28,
251,
0,
756,
2087,
0,
-37,
0,
61,
0,
0,
256,
2409,
1045,
0,
0,
2295,
0,
2098,
441,
0,
496,
501,
493,
0,
173,
234,
239,
505,
2112,
2112,
0,
0,
0,
2134,
0,
0,
893,
109,
0,
0,
0,
0,
266,
0,
18,
0,
0,
0,
0,
0,
164,
164,
242,
242,
148,
148,
148,
148,
66,
66,
216,
255,
231,
210,
106,
27,
0,
460,
0,
0,
1791,
0,
0,
0,
0,
513,
514,
0,
2156,
463,
61,
476,
2172,
0,
0,
0,
464,
465,
0,
0,
437,
437,
0,
493,
493,
493,
2295,
2185,
2199,
2033,
0,
0,
2295,
0,
2295,
0,
0,
0,
-28,
0,
0,
0,
0,
0,
520,
0,
2236,
469,
0,
0,
252,
0,
0,
273,
493,
274,
493,
413,
22,
0,
0,
0,
0,
0,
0,
493,
507,
0,
493,
0,
493,
0,
1993,
0,
0,
0,
0,
0
};
protected static readonly short[] yyRindex = new short[385] {
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
-21,
488,
527,
629,
0,
0,
0,
0,
0,
657,
0,
0,
0,
0,
39,
0,
0,
0,
232,
0,
863,
0,
0,
0,
0,
832,
0,
0,
0,
23,
0,
0,
0,
0,
0,
59,
0,
0,
0,
0,
0,
0,
0,
944,
0,
0,
0,
1251,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
1278,
0,
1346,
0,
0,
1356,
1369,
1657,
1794,
19,
2344,
74,
2448,
28,
144,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
232,
0,
0,
0,
0,
0,
0,
0,
0,
414,
0,
0,
535,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
155,
295,
537,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
428,
0,
438,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
539,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
1414,
1441,
1603,
1629,
1680,
1703,
1726,
1754,
1817,
1894,
1917,
2408,
2419,
2472,
101,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
442,
0,
0,
0,
0,
0,
0,
0,
0,
0,
1318,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
205,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
};
protected static readonly short[] yyGindex = new short[64] {
0,
0,
517,
0,
0,
228,
237,
-68,
760,
-45,
0,
331,
332,
125,
333,
362,
363,
361,
365,
366,
0,
-74,
0,
-93,
36,
1,
0,
0,
300,
2389,
0,
518,
157,
-66,
0,
0,
0,
491,
368,
530,
-104,
70,
-27,
-26,
-61,
0,
0,
337,
31,
-62,
-263,
0,
353,
-77,
0,
-146,
0,
0,
0,
0,
466,
565,
0,
0
};
protected static readonly short[] yyTable = new short[2770] {
142,
29,
143,
239,
239,
101,
44,
156,
224,
165,
96,
171,
94,
149,
97,
98,
43,
99,
44,
79,
79,
79,
73,
79,
230,
44,
266,
43,
29,
44,
231,
51,
52,
53,
54,
45,
101,
303,
79,
229,
40,
96,
74,
94,
345,
155,
98,
58,
99,
157,
134,
183,
184,
228,
240,
240,
43,
49,
165,
56,
49,
59,
185,
49,
205,
307,
379,
128,
132,
57,
79,
185,
57,
142,
273,
148,
44,
49,
49,
146,
146,
256,
49,
146,
69,
341,
57,
57,
56,
255,
260,
57,
121,
75,
135,
141,
154,
101,
100,
147,
147,
318,
96,
147,
94,
158,
97,
98,
144,
99,
184,
340,
49,
49,
64,
53,
345,
276,
53,
334,
335,
57,
280,
102,
231,
240,
215,
249,
216,
100,
146,
133,
53,
53,
227,
137,
283,
53,
246,
304,
66,
247,
58,
49,
49,
58,
306,
378,
128,
273,
147,
269,
319,
57,
185,
67,
59,
167,
165,
58,
58,
284,
285,
286,
58,
121,
101,
53,
142,
59,
308,
96,
316,
94,
39,
97,
98,
190,
99,
243,
317,
323,
329,
192,
324,
59,
48,
56,
59,
95,
100,
203,
102,
55,
58,
118,
118,
118,
53,
53,
240,
208,
59,
59,
185,
168,
206,
185,
265,
184,
169,
207,
317,
275,
330,
73,
223,
185,
242,
186,
42,
42,
268,
139,
170,
337,
58,
139,
191,
140,
78,
79,
80,
42,
81,
82,
79,
59,
209,
142,
148,
344,
172,
209,
42,
209,
118,
209,
209,
148,
209,
354,
274,
357,
358,
359,
56,
351,
225,
100,
140,
78,
79,
80,
209,
81,
82,
367,
142,
59,
184,
366,
8,
42,
148,
331,
89,
142,
185,
368,
332,
17,
18,
185,
374,
209,
376,
210,
153,
49,
49,
89,
8,
219,
8,
380,
146,
233,
382,
57,
383,
17,
18,
17,
18,
241,
173,
338,
184,
242,
339,
142,
309,
344,
373,
375,
147,
185,
185,
148,
174,
77,
78,
79,
80,
220,
81,
82,
209,
175,
209,
209,
213,
214,
221,
120,
120,
120,
291,
292,
293,
294,
232,
274,
53,
53,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
58,
83,
84,
85,
222,
86,
87,
88,
89,
90,
91,
92,
93,
147,
120,
257,
68,
258,
77,
78,
79,
80,
180,
81,
82,
245,
187,
188,
189,
248,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
211,
212,
251,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
259,
83,
84,
85,
264,
86,
87,
88,
89,
90,
91,
92,
93,
377,
161,
267,
185,
161,
180,
270,
180,
209,
209,
209,
209,
101,
209,
209,
166,
277,
96,
166,
94,
282,
97,
98,
305,
99,
167,
180,
180,
167,
168,
217,
218,
168,
209,
209,
209,
209,
209,
209,
209,
209,
209,
209,
209,
209,
209,
209,
209,
209,
209,
209,
209,
209,
209,
209,
209,
209,
209,
209,
320,
209,
209,
209,
350,
209,
209,
209,
209,
209,
209,
209,
209,
101,
57,
81,
81,
81,
96,
81,
94,
326,
97,
98,
327,
99,
71,
287,
288,
328,
289,
290,
333,
76,
81,
271,
272,
295,
296,
102,
342,
346,
347,
349,
355,
356,
100,
336,
369,
371,
145,
372,
101,
381,
83,
83,
83,
96,
83,
94,
365,
97,
98,
155,
99,
164,
81,
166,
297,
299,
298,
138,
322,
83,
300,
131,
301,
310,
102,
41,
0,
0,
226,
0,
0,
0,
0,
0,
146,
0,
0,
0,
0,
0,
0,
0,
0,
177,
178,
0,
0,
0,
0,
56,
0,
83,
100,
0,
0,
0,
0,
0,
0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
0,
0,
101,
0,
0,
0,
100,
96,
0,
94,
0,
254,
98,
0,
99,
0,
0,
85,
85,
85,
0,
85,
0,
0,
178,
0,
178,
0,
0,
0,
0,
0,
0,
261,
262,
263,
85,
0,
140,
78,
79,
80,
0,
81,
82,
125,
125,
125,
0,
125,
0,
0,
0,
0,
0,
0,
281,
0,
0,
0,
0,
0,
253,
1,
125,
0,
0,
0,
85,
0,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
302,
0,
0,
0,
81,
0,
100,
125,
0,
77,
78,
79,
80,
0,
81,
82,
0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
83,
0,
0,
0,
0,
140,
78,
79,
80,
0,
81,
82,
239,
311,
44,
0,
0,
0,
83,
84,
85,
0,
86,
87,
88,
89,
90,
91,
92,
93,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
160,
162,
163,
164,
0,
0,
0,
240,
0,
0,
360,
362,
364,
0,
0,
0,
164,
164,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
164,
0,
0,
113,
113,
113,
0,
113,
0,
140,
78,
79,
80,
0,
81,
82,
0,
85,
0,
0,
0,
0,
113,
164,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
132,
0,
252,
132,
0,
0,
8,
0,
0,
0,
125,
164,
0,
0,
0,
17,
18,
0,
132,
113,
132,
0,
0,
0,
0,
0,
0,
0,
0,
273,
311,
44,
0,
0,
0,
125,
125,
125,
125,
125,
125,
125,
125,
125,
125,
125,
125,
125,
125,
125,
125,
125,
125,
125,
125,
125,
125,
125,
125,
125,
125,
0,
164,
164,
164,
164,
164,
164,
164,
164,
164,
164,
164,
164,
164,
164,
164,
164,
164,
164,
240,
131,
132,
0,
131,
101,
0,
0,
164,
0,
96,
0,
94,
0,
97,
98,
0,
99,
0,
131,
0,
131,
0,
0,
0,
0,
0,
0,
0,
42,
164,
176,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
164,
68,
0,
0,
0,
0,
0,
0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
0,
0,
0,
131,
0,
0,
0,
0,
0,
0,
0,
164,
0,
0,
101,
0,
0,
0,
100,
96,
0,
94,
0,
97,
98,
113,
99,
0,
0,
56,
0,
0,
0,
0,
0,
0,
0,
164,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
164,
113,
113,
113,
113,
113,
113,
113,
113,
113,
113,
113,
113,
113,
113,
113,
113,
113,
113,
113,
113,
113,
113,
113,
113,
113,
113,
0,
0,
0,
0,
0,
132,
132,
132,
132,
132,
132,
132,
132,
132,
132,
132,
132,
132,
132,
132,
132,
132,
132,
132,
132,
132,
132,
132,
132,
132,
132,
100,
0,
0,
0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
140,
78,
79,
80,
0,
81,
82,
0,
0,
0,
0,
0,
0,
131,
131,
131,
131,
131,
131,
131,
131,
131,
131,
131,
131,
131,
131,
131,
131,
131,
131,
131,
131,
131,
131,
131,
131,
131,
131,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
1,
1,
0,
1,
0,
1,
1,
1,
1,
1,
1,
0,
0,
0,
140,
78,
79,
80,
0,
81,
82,
0,
1,
1,
1,
1,
1,
17,
17,
0,
0,
17,
17,
17,
17,
17,
0,
17,
0,
0,
0,
0,
0,
0,
0,
0,
8,
0,
17,
17,
17,
17,
17,
17,
1,
17,
18,
1,
0,
0,
0,
0,
0,
0,
0,
0,
0,
24,
24,
0,
0,
24,
24,
24,
24,
24,
0,
24,
0,
0,
0,
0,
0,
17,
17,
0,
0,
1,
24,
24,
24,
24,
24,
24,
0,
29,
29,
0,
0,
29,
29,
29,
29,
29,
0,
29,
35,
0,
0,
35,
0,
35,
35,
35,
17,
17,
29,
29,
29,
38,
29,
29,
38,
24,
24,
38,
35,
35,
35,
0,
35,
35,
0,
0,
0,
0,
0,
0,
0,
38,
38,
38,
0,
38,
38,
0,
0,
0,
0,
0,
0,
29,
29,
0,
24,
24,
0,
0,
0,
0,
0,
35,
35,
0,
36,
0,
0,
36,
0,
36,
36,
36,
0,
0,
38,
38,
0,
0,
0,
0,
0,
0,
29,
29,
36,
36,
36,
0,
36,
36,
0,
37,
35,
35,
37,
0,
37,
37,
37,
0,
0,
0,
0,
0,
0,
38,
38,
0,
0,
0,
0,
37,
37,
37,
0,
37,
37,
0,
0,
36,
36,
0,
0,
0,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
1,
0,
37,
37,
0,
0,
36,
36,
0,
0,
17,
17,
17,
17,
17,
17,
17,
17,
17,
17,
17,
17,
17,
17,
17,
17,
17,
17,
0,
0,
0,
0,
0,
37,
37,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
24,
24,
24,
24,
24,
24,
24,
24,
24,
24,
24,
24,
24,
24,
24,
24,
24,
24,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
29,
29,
29,
29,
29,
29,
29,
29,
0,
0,
35,
35,
35,
35,
35,
35,
35,
35,
0,
0,
0,
0,
0,
38,
38,
38,
38,
38,
38,
38,
38,
39,
0,
0,
39,
0,
0,
39,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
39,
39,
39,
0,
39,
39,
40,
0,
0,
40,
0,
0,
40,
0,
0,
0,
0,
36,
36,
36,
36,
36,
36,
36,
36,
0,
40,
40,
40,
0,
40,
40,
0,
0,
41,
39,
39,
41,
0,
0,
41,
0,
0,
0,
37,
37,
37,
37,
37,
37,
37,
37,
0,
0,
41,
41,
41,
44,
41,
41,
44,
40,
40,
44,
0,
0,
39,
39,
0,
0,
0,
0,
0,
0,
0,
0,
0,
44,
44,
44,
45,
44,
44,
45,
0,
0,
45,
0,
0,
41,
41,
0,
40,
40,
0,
0,
0,
0,
0,
0,
45,
45,
45,
42,
45,
45,
42,
0,
0,
42,
0,
0,
44,
44,
0,
0,
0,
0,
0,
0,
41,
41,
0,
42,
42,
42,
0,
42,
42,
0,
0,
43,
0,
0,
43,
45,
45,
43,
0,
0,
0,
0,
0,
44,
44,
0,
0,
0,
0,
0,
0,
43,
43,
43,
0,
43,
43,
0,
42,
42,
0,
0,
0,
101,
0,
0,
45,
45,
96,
0,
94,
46,
97,
98,
46,
99,
233,
46,
0,
0,
0,
0,
0,
0,
0,
0,
43,
43,
0,
42,
42,
46,
46,
0,
47,
0,
46,
47,
0,
0,
47,
0,
0,
0,
0,
0,
39,
39,
39,
39,
39,
39,
39,
39,
47,
47,
0,
43,
43,
47,
0,
232,
0,
0,
0,
0,
46,
46,
0,
0,
0,
0,
40,
40,
40,
40,
40,
40,
40,
40,
0,
0,
0,
0,
0,
0,
0,
0,
0,
47,
47,
0,
0,
141,
0,
343,
100,
46,
46,
0,
0,
0,
41,
41,
41,
41,
41,
41,
0,
0,
0,
48,
0,
0,
48,
0,
0,
48,
0,
0,
47,
47,
0,
0,
0,
44,
44,
44,
44,
44,
44,
48,
48,
0,
50,
0,
48,
50,
0,
0,
50,
0,
0,
0,
0,
0,
0,
0,
45,
45,
45,
45,
45,
45,
50,
50,
0,
0,
0,
50,
0,
0,
0,
0,
0,
0,
48,
48,
0,
0,
0,
42,
42,
42,
42,
42,
42,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
50,
50,
0,
0,
0,
0,
0,
0,
48,
48,
43,
43,
43,
43,
43,
43,
101,
0,
0,
0,
0,
96,
0,
94,
0,
97,
98,
0,
99,
233,
0,
50,
50,
0,
0,
0,
0,
0,
140,
78,
79,
80,
0,
81,
82,
0,
0,
0,
0,
0,
0,
0,
46,
46,
46,
46,
101,
0,
0,
0,
0,
96,
0,
94,
0,
97,
98,
0,
99,
233,
0,
0,
0,
0,
232,
47,
47,
47,
47,
101,
0,
0,
0,
0,
96,
0,
94,
101,
97,
98,
0,
99,
96,
0,
94,
278,
97,
98,
0,
99,
0,
0,
0,
0,
0,
0,
141,
0,
384,
100,
101,
0,
0,
0,
232,
96,
0,
94,
0,
315,
98,
101,
99,
0,
0,
0,
96,
0,
94,
0,
97,
98,
0,
99,
0,
101,
0,
0,
0,
250,
96,
0,
94,
0,
97,
98,
141,
99,
0,
100,
0,
0,
48,
48,
48,
48,
0,
101,
0,
0,
0,
102,
96,
0,
94,
0,
97,
98,
0,
99,
314,
0,
100,
0,
0,
0,
0,
50,
50,
101,
100,
325,
0,
0,
96,
0,
94,
0,
97,
98,
0,
99,
0,
0,
0,
101,
0,
0,
0,
0,
96,
0,
94,
100,
353,
98,
0,
99,
101,
0,
0,
0,
0,
96,
100,
94,
361,
97,
98,
0,
99,
0,
101,
0,
0,
0,
0,
96,
100,
94,
363,
97,
98,
0,
99,
0,
0,
0,
0,
348,
140,
78,
79,
80,
0,
81,
82,
336,
0,
0,
100,
101,
0,
0,
0,
352,
96,
0,
159,
101,
97,
98,
0,
99,
96,
0,
94,
0,
97,
98,
0,
99,
100,
0,
0,
0,
0,
0,
0,
0,
140,
78,
79,
80,
101,
81,
82,
0,
100,
96,
0,
161,
0,
97,
98,
0,
99,
0,
0,
0,
0,
100,
0,
140,
78,
79,
80,
0,
81,
82,
0,
140,
78,
79,
80,
100,
81,
82,
101,
370,
0,
0,
0,
96,
0,
94,
0,
97,
98,
0,
99,
0,
0,
0,
140,
78,
79,
80,
0,
81,
82,
0,
0,
0,
100,
140,
78,
79,
80,
0,
81,
82,
100,
0,
0,
0,
0,
0,
0,
140,
78,
79,
80,
0,
81,
82,
0,
0,
0,
0,
0,
0,
0,
0,
0,
51,
0,
100,
51,
0,
0,
140,
78,
79,
80,
0,
81,
82,
0,
0,
0,
0,
51,
51,
0,
0,
0,
51,
0,
0,
0,
0,
0,
140,
78,
79,
80,
0,
81,
82,
0,
100,
0,
0,
0,
0,
0,
0,
0,
140,
78,
79,
80,
63,
81,
82,
0,
51,
51,
0,
0,
0,
140,
78,
79,
80,
0,
81,
82,
52,
0,
0,
52,
0,
136,
0,
140,
78,
79,
80,
54,
81,
82,
54,
63,
0,
52,
52,
51,
51,
0,
52,
0,
0,
0,
0,
0,
54,
54,
0,
56,
0,
54,
181,
0,
140,
78,
79,
80,
55,
81,
82,
55,
140,
78,
79,
80,
0,
81,
82,
0,
52,
52,
0,
0,
0,
55,
55,
0,
0,
0,
55,
54,
56,
0,
0,
56,
0,
140,
78,
79,
80,
0,
81,
82,
0,
0,
0,
0,
0,
56,
56,
52,
52,
0,
56,
0,
0,
0,
0,
0,
55,
63,
54,
54,
0,
136,
0,
181,
0,
181,
0,
140,
78,
79,
80,
0,
81,
82,
0,
0,
0,
0,
0,
0,
56,
0,
1,
0,
181,
181,
0,
0,
55,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
0,
0,
0,
0,
56,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
51,
51,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
136,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
52,
52,
0,
0,
0,
0,
0,
0,
0,
0,
0,
54,
54,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
321,
55,
55,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
56,
56,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26
};
protected static readonly short[] yyCheck = new short[2770] {
68,
0,
68,
40,
40,
33,
42,
75,
63,
83,
38,
88,
40,
74,
42,
43,
40,
45,
42,
40,
41,
42,
49,
44,
125,
42,
172,
40,
27,
42,
134,
30,
31,
32,
33,
59,
33,
125,
59,
132,
123,
38,
40,
40,
307,
42,
43,
123,
45,
75,
44,
96,
97,
44,
91,
91,
40,
38,
132,
123,
41,
257,
44,
44,
109,
44,
44,
44,
61,
41,
91,
44,
44,
141,
40,
74,
42,
58,
59,
40,
41,
158,
63,
44,
48,
58,
58,
59,
123,
157,
167,
63,
56,
91,
41,
123,
93,
33,
126,
40,
41,
40,
38,
44,
40,
58,
42,
43,
72,
45,
155,
93,
93,
94,
44,
41,
379,
185,
44,
265,
266,
93,
190,
59,
228,
91,
60,
153,
62,
126,
91,
125,
58,
59,
125,
65,
204,
63,
41,
232,
44,
44,
41,
124,
125,
44,
125,
125,
125,
40,
91,
41,
91,
125,
44,
59,
257,
58,
232,
58,
59,
206,
207,
208,
63,
129,
33,
93,
236,
257,
236,
38,
240,
40,
257,
42,
43,
40,
45,
148,
242,
249,
259,
46,
252,
41,
29,
123,
44,
125,
126,
61,
59,
257,
93,
40,
41,
42,
124,
125,
91,
37,
58,
59,
44,
40,
42,
44,
172,
254,
40,
47,
274,
182,
41,
242,
271,
44,
148,
59,
257,
257,
59,
66,
40,
270,
125,
70,
91,
257,
258,
259,
260,
257,
262,
263,
257,
93,
33,
307,
239,
307,
40,
38,
257,
40,
91,
42,
43,
248,
45,
319,
182,
330,
331,
332,
123,
318,
125,
126,
257,
258,
259,
260,
59,
262,
263,
341,
336,
125,
315,
339,
289,
257,
273,
41,
44,
345,
44,
345,
41,
298,
299,
44,
361,
43,
363,
45,
285,
270,
271,
59,
289,
38,
289,
372,
257,
46,
375,
271,
377,
298,
299,
298,
299,
148,
257,
41,
353,
239,
44,
379,
61,
379,
41,
41,
257,
44,
44,
318,
59,
257,
258,
259,
260,
94,
262,
263,
123,
59,
125,
126,
266,
267,
124,
40,
41,
42,
213,
214,
215,
216,
91,
273,
270,
271,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
271,
309,
310,
311,
270,
313,
314,
315,
316,
317,
318,
319,
320,
41,
91,
159,
61,
161,
257,
258,
259,
260,
94,
262,
263,
41,
261,
262,
263,
44,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
264,
265,
93,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
58,
309,
310,
311,
314,
313,
314,
315,
316,
317,
318,
319,
320,
41,
41,
59,
44,
44,
159,
41,
161,
257,
258,
259,
260,
33,
262,
263,
41,
257,
38,
44,
40,
257,
42,
43,
257,
45,
41,
180,
181,
44,
41,
268,
269,
44,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
257,
309,
310,
311,
41,
313,
314,
315,
316,
317,
318,
319,
320,
33,
36,
40,
41,
42,
38,
44,
40,
93,
42,
43,
41,
45,
48,
209,
210,
41,
211,
212,
40,
55,
59,
180,
181,
217,
218,
59,
93,
41,
41,
93,
93,
93,
126,
123,
41,
93,
72,
312,
33,
59,
40,
41,
42,
38,
44,
40,
336,
42,
43,
41,
45,
41,
91,
41,
219,
221,
220,
66,
248,
59,
222,
58,
223,
237,
59,
27,
-1,
-1,
129,
-1,
-1,
-1,
-1,
-1,
257,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
93,
94,
-1,
-1,
-1,
-1,
123,
-1,
91,
126,
-1,
-1,
-1,
-1,
-1,
-1,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
-1,
-1,
33,
-1,
-1,
-1,
126,
38,
-1,
40,
-1,
42,
43,
-1,
45,
-1,
-1,
40,
41,
42,
-1,
44,
-1,
-1,
159,
-1,
161,
-1,
-1,
-1,
-1,
-1,
-1,
168,
169,
170,
59,
-1,
257,
258,
259,
260,
-1,
262,
263,
40,
41,
42,
-1,
44,
-1,
-1,
-1,
-1,
-1,
-1,
191,
-1,
-1,
-1,
-1,
-1,
93,
282,
59,
-1,
-1,
-1,
91,
-1,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
224,
-1,
-1,
-1,
257,
-1,
126,
91,
-1,
257,
258,
259,
260,
-1,
262,
263,
-1,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
257,
-1,
-1,
-1,
-1,
257,
258,
259,
260,
-1,
262,
263,
40,
41,
42,
-1,
-1,
-1,
309,
310,
311,
-1,
313,
314,
315,
316,
317,
318,
319,
320,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
80,
81,
82,
83,
-1,
-1,
-1,
91,
-1,
-1,
333,
334,
335,
-1,
-1,
-1,
96,
97,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
109,
-1,
-1,
40,
41,
42,
-1,
44,
-1,
257,
258,
259,
260,
-1,
262,
263,
-1,
257,
-1,
-1,
-1,
-1,
59,
132,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
41,
-1,
285,
44,
-1,
-1,
289,
-1,
-1,
-1,
257,
155,
-1,
-1,
-1,
298,
299,
-1,
59,
91,
61,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
40,
41,
42,
-1,
-1,
-1,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
-1,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
91,
41,
123,
-1,
44,
33,
-1,
-1,
232,
-1,
38,
-1,
40,
-1,
42,
43,
-1,
45,
-1,
59,
-1,
61,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
257,
254,
59,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
270,
61,
-1,
-1,
-1,
-1,
-1,
-1,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
-1,
-1,
-1,
123,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
315,
-1,
-1,
33,
-1,
-1,
-1,
126,
38,
-1,
40,
-1,
42,
43,
257,
45,
-1,
-1,
123,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
341,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
353,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
-1,
-1,
-1,
-1,
-1,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
126,
-1,
-1,
-1,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
257,
258,
259,
260,
-1,
262,
263,
-1,
-1,
-1,
-1,
-1,
-1,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
37,
38,
-1,
40,
-1,
42,
43,
44,
45,
46,
47,
-1,
-1,
-1,
257,
258,
259,
260,
-1,
262,
263,
-1,
59,
60,
61,
62,
63,
37,
38,
-1,
-1,
41,
42,
43,
44,
45,
-1,
47,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
289,
-1,
58,
59,
60,
61,
62,
63,
91,
298,
299,
94,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
37,
38,
-1,
-1,
41,
42,
43,
44,
45,
-1,
47,
-1,
-1,
-1,
-1,
-1,
93,
94,
-1,
-1,
124,
58,
59,
60,
61,
62,
63,
-1,
37,
38,
-1,
-1,
41,
42,
43,
44,
45,
-1,
47,
38,
-1,
-1,
41,
-1,
43,
44,
45,
124,
125,
58,
59,
60,
38,
62,
63,
41,
93,
94,
44,
58,
59,
60,
-1,
62,
63,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
58,
59,
60,
-1,
62,
63,
-1,
-1,
-1,
-1,
-1,
-1,
93,
94,
-1,
124,
125,
-1,
-1,
-1,
-1,
-1,
93,
94,
-1,
38,
-1,
-1,
41,
-1,
43,
44,
45,
-1,
-1,
93,
94,
-1,
-1,
-1,
-1,
-1,
-1,
124,
125,
58,
59,
60,
-1,
62,
63,
-1,
38,
124,
125,
41,
-1,
43,
44,
45,
-1,
-1,
-1,
-1,
-1,
-1,
124,
125,
-1,
-1,
-1,
-1,
58,
59,
60,
-1,
62,
63,
-1,
-1,
93,
94,
-1,
-1,
-1,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
-1,
93,
94,
-1,
-1,
124,
125,
-1,
-1,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
-1,
-1,
-1,
-1,
-1,
124,
125,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
264,
265,
266,
267,
268,
269,
270,
271,
-1,
-1,
264,
265,
266,
267,
268,
269,
270,
271,
-1,
-1,
-1,
-1,
-1,
264,
265,
266,
267,
268,
269,
270,
271,
38,
-1,
-1,
41,
-1,
-1,
44,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
58,
59,
60,
-1,
62,
63,
38,
-1,
-1,
41,
-1,
-1,
44,
-1,
-1,
-1,
-1,
264,
265,
266,
267,
268,
269,
270,
271,
-1,
58,
59,
60,
-1,
62,
63,
-1,
-1,
38,
93,
94,
41,
-1,
-1,
44,
-1,
-1,
-1,
264,
265,
266,
267,
268,
269,
270,
271,
-1,
-1,
58,
59,
60,
38,
62,
63,
41,
93,
94,
44,
-1,
-1,
124,
125,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
58,
59,
60,
38,
62,
63,
41,
-1,
-1,
44,
-1,
-1,
93,
94,
-1,
124,
125,
-1,
-1,
-1,
-1,
-1,
-1,
58,
59,
60,
38,
62,
63,
41,
-1,
-1,
44,
-1,
-1,
93,
94,
-1,
-1,
-1,
-1,
-1,
-1,
124,
125,
-1,
58,
59,
60,
-1,
62,
63,
-1,
-1,
38,
-1,
-1,
41,
93,
94,
44,
-1,
-1,
-1,
-1,
-1,
124,
125,
-1,
-1,
-1,
-1,
-1,
-1,
58,
59,
60,
-1,
62,
63,
-1,
93,
94,
-1,
-1,
-1,
33,
-1,
-1,
124,
125,
38,
-1,
40,
38,
42,
43,
41,
45,
46,
44,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
93,
94,
-1,
124,
125,
58,
59,
-1,
38,
-1,
63,
41,
-1,
-1,
44,
-1,
-1,
-1,
-1,
-1,
264,
265,
266,
267,
268,
269,
270,
271,
58,
59,
-1,
124,
125,
63,
-1,
91,
-1,
-1,
-1,
-1,
93,
94,
-1,
-1,
-1,
-1,
264,
265,
266,
267,
268,
269,
270,
271,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
93,
94,
-1,
-1,
123,
-1,
125,
126,
124,
125,
-1,
-1,
-1,
266,
267,
268,
269,
270,
271,
-1,
-1,
-1,
38,
-1,
-1,
41,
-1,
-1,
44,
-1,
-1,
124,
125,
-1,
-1,
-1,
266,
267,
268,
269,
270,
271,
58,
59,
-1,
38,
-1,
63,
41,
-1,
-1,
44,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
266,
267,
268,
269,
270,
271,
58,
59,
-1,
-1,
-1,
63,
-1,
-1,
-1,
-1,
-1,
-1,
93,
94,
-1,
-1,
-1,
266,
267,
268,
269,
270,
271,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
93,
94,
-1,
-1,
-1,
-1,
-1,
-1,
124,
125,
266,
267,
268,
269,
270,
271,
33,
-1,
-1,
-1,
-1,
38,
-1,
40,
-1,
42,
43,
-1,
45,
46,
-1,
124,
125,
-1,
-1,
-1,
-1,
-1,
257,
258,
259,
260,
-1,
262,
263,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
268,
269,
270,
271,
33,
-1,
-1,
-1,
-1,
38,
-1,
40,
-1,
42,
43,
-1,
45,
46,
-1,
-1,
-1,
-1,
91,
268,
269,
270,
271,
33,
-1,
-1,
-1,
-1,
38,
-1,
40,
33,
42,
43,
-1,
45,
38,
-1,
40,
41,
42,
43,
-1,
45,
-1,
-1,
-1,
-1,
-1,
-1,
123,
-1,
125,
126,
33,
-1,
-1,
-1,
91,
38,
-1,
40,
-1,
42,
43,
33,
45,
-1,
-1,
-1,
38,
-1,
40,
-1,
42,
43,
-1,
45,
-1,
33,
-1,
-1,
-1,
93,
38,
-1,
40,
-1,
42,
43,
123,
45,
-1,
126,
-1,
-1,
268,
269,
270,
271,
-1,
33,
-1,
-1,
-1,
59,
38,
-1,
40,
-1,
42,
43,
-1,
45,
93,
-1,
126,
-1,
-1,
-1,
-1,
270,
271,
33,
126,
93,
-1,
-1,
38,
-1,
40,
-1,
42,
43,
-1,
45,
-1,
-1,
-1,
33,
-1,
-1,
-1,
-1,
38,
-1,
40,
126,
42,
43,
-1,
45,
33,
-1,
-1,
-1,
-1,
38,
126,
40,
41,
42,
43,
-1,
45,
-1,
33,
-1,
-1,
-1,
-1,
38,
126,
40,
41,
42,
43,
-1,
45,
-1,
-1,
-1,
-1,
93,
257,
258,
259,
260,
-1,
262,
263,
123,
-1,
-1,
126,
33,
-1,
-1,
-1,
93,
38,
-1,
40,
33,
42,
43,
-1,
45,
38,
-1,
40,
-1,
42,
43,
-1,
45,
126,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
257,
258,
259,
260,
33,
262,
263,
-1,
126,
38,
-1,
40,
-1,
42,
43,
-1,
45,
-1,
-1,
-1,
-1,
126,
-1,
257,
258,
259,
260,
-1,
262,
263,
-1,
257,
258,
259,
260,
126,
262,
263,
33,
93,
-1,
-1,
-1,
38,
-1,
40,
-1,
42,
43,
-1,
45,
-1,
-1,
-1,
257,
258,
259,
260,
-1,
262,
263,
-1,
-1,
-1,
126,
257,
258,
259,
260,
-1,
262,
263,
126,
-1,
-1,
-1,
-1,
-1,
-1,
257,
258,
259,
260,
-1,
262,
263,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
41,
-1,
126,
44,
-1,
-1,
257,
258,
259,
260,
-1,
262,
263,
-1,
-1,
-1,
-1,
58,
59,
-1,
-1,
-1,
63,
-1,
-1,
-1,
-1,
-1,
257,
258,
259,
260,
-1,
262,
263,
-1,
126,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
257,
258,
259,
260,
44,
262,
263,
-1,
93,
94,
-1,
-1,
-1,
257,
258,
259,
260,
-1,
262,
263,
41,
-1,
-1,
44,
-1,
65,
-1,
257,
258,
259,
260,
41,
262,
263,
44,
75,
-1,
58,
59,
124,
125,
-1,
63,
-1,
-1,
-1,
-1,
-1,
58,
59,
-1,
123,
-1,
63,
94,
-1,
257,
258,
259,
260,
41,
262,
263,
44,
257,
258,
259,
260,
-1,
262,
263,
-1,
93,
94,
-1,
-1,
-1,
58,
59,
-1,
-1,
-1,
63,
93,
41,
-1,
-1,
44,
-1,
257,
258,
259,
260,
-1,
262,
263,
-1,
-1,
-1,
-1,
-1,
58,
59,
124,
125,
-1,
63,
-1,
-1,
-1,
-1,
-1,
93,
153,
124,
125,
-1,
157,
-1,
159,
-1,
161,
-1,
257,
258,
259,
260,
-1,
262,
263,
-1,
-1,
-1,
-1,
-1,
-1,
93,
-1,
282,
-1,
180,
181,
-1,
-1,
125,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
-1,
-1,
-1,
-1,
125,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
270,
271,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
249,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
270,
271,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
270,
271,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
270,
271,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
-1,
270,
271,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307
};
public static int yacc_verbose_flag;
private TranslationUnit _tu;
public void yyerror(string message)
{
yyerror(message, null);
}
public void yyerror(string message, string[] expected)
{
if (yacc_verbose_flag > 0 && expected != null && expected.Length != 0) {
ErrorOutput.Write(message + ", expecting");
for (int i = 0; i < expected.Length; i++) {
ErrorOutput.Write(" " + expected[i]);
}
ErrorOutput.WriteLine();
} else
ErrorOutput.WriteLine(message);
}
protected int[] yyExpectingTokens(int state)
{
int num = 0;
bool[] array = new bool[yyNames.Length];
int num2;
int i;
if ((num2 = yySindex[state]) != 0) {
for (i = ((num2 < 0) ? (-num2) : 0); i < yyNames.Length && num2 + i < yyTable.Length; i++) {
if (yyCheck[num2 + i] == i && !array[i] && yyNames[i] != null) {
num++;
array[i] = true;
}
}
}
if ((num2 = yyRindex[state]) != 0) {
for (i = ((num2 < 0) ? (-num2) : 0); i < yyNames.Length && num2 + i < yyTable.Length; i++) {
if (yyCheck[num2 + i] == i && !array[i] && yyNames[i] != null) {
num++;
array[i] = true;
}
}
}
int[] array2 = new int[num];
num2 = (i = 0);
while (num2 < num) {
if (array[i])
array2[num2++] = i;
i++;
}
return array2;
}
protected string[] yyExpecting(int state)
{
int[] array = yyExpectingTokens(state);
string[] array2 = new string[array.Length];
for (int i = 0; i < array.Length; i++) {
array2[i++] = yyNames[array[i]];
}
return array2;
}
internal object yyparse(yyInput yyLex, object yyd)
{
return yyparse(yyLex);
}
protected object yyDefault(object first)
{
return first;
}
internal object yyparse(yyInput yyLex)
{
if (yyMax <= 0)
yyMax = 256;
int num = 0;
yyVal = null;
yyToken = -1;
int num2 = 0;
int[] array;
if (use_global_stacks && global_yyStates != null) {
yyVals = global_yyVals;
array = global_yyStates;
} else {
yyVals = new object[yyMax];
array = new int[yyMax];
if (use_global_stacks) {
global_yyVals = yyVals;
global_yyStates = array;
}
}
yyTop = 0;
while (true) {
if (yyTop >= array.Length) {
Array.Resize(ref array, array.Length + yyMax);
Array.Resize(ref yyVals, yyVals.Length + yyMax);
}
array[yyTop] = num;
yyVals[yyTop] = yyVal;
while (true) {
int num3;
if ((num3 = yyDefRed[num]) == 0) {
if (yyToken < 0)
yyToken = (yyLex.advance() ? yyLex.token() : 0);
if ((num3 = yySindex[num]) != 0 && (num3 += yyToken) >= 0 && num3 < yyTable.Length && yyCheck[num3] == yyToken) {
num = yyTable[num3];
yyVal = yyLex.value();
yyToken = -1;
if (num2 > 0)
num2--;
break;
}
if ((num3 = yyRindex[num]) == 0 || (num3 += yyToken) < 0 || num3 >= yyTable.Length || yyCheck[num3] != yyToken) {
switch (num2) {
case 0:
yyExpectingState = num;
if (yyToken == 0 || yyToken == eof_token)
throw new yyUnexpectedEof();
break;
case 1:
case 2:
break;
case 3:
goto IL_0250;
default:
goto IL_026f;
}
num2 = 3;
while ((num3 = yySindex[array[yyTop]]) == 0 || (num3 += 256) < 0 || num3 >= yyTable.Length || yyCheck[num3] != 256) {
if (--yyTop < 0)
throw new yyException("irrecoverable syntax error");
}
num = yyTable[num3];
yyVal = yyLex.value();
break;
}
num3 = yyTable[num3];
}
goto IL_026f;
IL_026f:
int num4 = yyTop + 1 - yyLen[num3];
yyVal = ((num4 > yyTop) ? null : yyVals[num4]);
switch (num3) {
case 1:
yyVal = new VariableExpression(yyVals[yyTop].ToString());
break;
case 2:
yyVal = new ConstantExpression(yyVals[yyTop]);
break;
case 3:
yyVal = new ConstantExpression(yyVals[yyTop]);
break;
case 4:
yyVal = yyVals[-1 + yyTop];
break;
case 5:
yyVal = yyVals[yyTop];
break;
case 6:
yyVal = new ArrayElementExpression((Expression)yyVals[-3 + yyTop], (Expression)yyVals[-1 + yyTop]);
break;
case 7:
yyVal = new FuncallExpression((Expression)yyVals[-2 + yyTop]);
break;
case 8:
yyVal = new FuncallExpression((Expression)yyVals[-3 + yyTop], (List<Expression>)yyVals[-1 + yyTop]);
break;
case 9:
yyVal = new MemberFromReferenceExpression((Expression)yyVals[-2 + yyTop], yyVals[yyTop].ToString());
break;
case 10:
throw new NotSupportedException("Syntax: postfix_expression PTR_OP IDENTIFIER");
case 11:
yyVal = new UnaryExpression(Unop.PostIncrement, (Expression)yyVals[-1 + yyTop]);
break;
case 12:
yyVal = new UnaryExpression(Unop.PostDecrement, (Expression)yyVals[-1 + yyTop]);
break;
case 13:
throw new NotSupportedException("Syntax: '(' type_name ')' '{' initializer_list '}'");
case 14:
throw new NotSupportedException("Syntax: '(' type_name ')' '{' initializer_list ',' '}'");
case 15:
case_15();
break;
case 16:
case_16();
break;
case 17:
yyVal = yyVals[yyTop];
break;
case 18:
yyVal = new UnaryExpression(Unop.PreIncrement, (Expression)yyVals[yyTop]);
break;
case 19:
yyVal = new UnaryExpression(Unop.PreDecrement, (Expression)yyVals[yyTop]);
break;
case 20:
throw new NotSupportedException("Syntax: '&' cast_expression");
case 21:
throw new NotSupportedException("Syntax: '*' cast_expression");
case 22:
yyVal = new UnaryExpression((Unop)yyVals[-1 + yyTop], (Expression)yyVals[yyTop]);
break;
case 23:
throw new NotSupportedException("Syntax: SIZEOF unary_expression");
case 24:
throw new NotSupportedException("Syntax: SIZEOF '(' type_name ')'");
case 25:
yyVal = Unop.None;
break;
case 26:
yyVal = Unop.Negate;
break;
case 27:
yyVal = Unop.BinaryComplement;
break;
case 28:
yyVal = Unop.Not;
break;
case 29:
yyVal = yyVals[yyTop];
break;
case 30:
yyVal = yyVals[yyTop];
break;
case 31:
yyVal = yyVals[yyTop];
break;
case 32:
yyVal = new BinaryExpression((Expression)yyVals[-2 + yyTop], Binop.Multiply, (Expression)yyVals[yyTop]);
break;
case 33:
yyVal = new BinaryExpression((Expression)yyVals[-2 + yyTop], Binop.Divide, (Expression)yyVals[yyTop]);
break;
case 34:
yyVal = new BinaryExpression((Expression)yyVals[-2 + yyTop], Binop.Mod, (Expression)yyVals[yyTop]);
break;
case 36:
yyVal = new BinaryExpression((Expression)yyVals[-2 + yyTop], Binop.Add, (Expression)yyVals[yyTop]);
break;
case 37:
yyVal = new BinaryExpression((Expression)yyVals[-2 + yyTop], Binop.Subtract, (Expression)yyVals[yyTop]);
break;
case 39:
yyVal = new BinaryExpression((Expression)yyVals[-2 + yyTop], Binop.ShiftLeft, (Expression)yyVals[yyTop]);
break;
case 40:
yyVal = new BinaryExpression((Expression)yyVals[-2 + yyTop], Binop.ShiftRight, (Expression)yyVals[yyTop]);
break;
case 42:
yyVal = new RelationalExpression((Expression)yyVals[-2 + yyTop], RelationalOp.LessThan, (Expression)yyVals[yyTop]);
break;
case 43:
yyVal = new RelationalExpression((Expression)yyVals[-2 + yyTop], RelationalOp.GreaterThan, (Expression)yyVals[yyTop]);
break;
case 44:
yyVal = new RelationalExpression((Expression)yyVals[-2 + yyTop], RelationalOp.LessThanOrEqual, (Expression)yyVals[yyTop]);
break;
case 45:
yyVal = new RelationalExpression((Expression)yyVals[-2 + yyTop], RelationalOp.GreaterThanOrEqual, (Expression)yyVals[yyTop]);
break;
case 47:
yyVal = new RelationalExpression((Expression)yyVals[-2 + yyTop], RelationalOp.Equals, (Expression)yyVals[yyTop]);
break;
case 48:
yyVal = new RelationalExpression((Expression)yyVals[-2 + yyTop], RelationalOp.NotEquals, (Expression)yyVals[yyTop]);
break;
case 50:
yyVal = new BinaryExpression((Expression)yyVals[-2 + yyTop], Binop.BinaryAnd, (Expression)yyVals[yyTop]);
break;
case 52:
yyVal = new BinaryExpression((Expression)yyVals[-2 + yyTop], Binop.BinaryXor, (Expression)yyVals[yyTop]);
break;
case 54:
yyVal = new BinaryExpression((Expression)yyVals[-2 + yyTop], Binop.BinaryOr, (Expression)yyVals[yyTop]);
break;
case 56:
yyVal = new LogicExpression((Expression)yyVals[-2 + yyTop], LogicOp.And, (Expression)yyVals[yyTop]);
break;
case 58:
yyVal = new LogicExpression((Expression)yyVals[-2 + yyTop], LogicOp.Or, (Expression)yyVals[yyTop]);
break;
case 59:
yyVal = yyVals[yyTop];
break;
case 60:
yyVal = new ConditionalExpression((Expression)yyVals[-4 + yyTop], (Expression)yyVals[-2 + yyTop], (Expression)yyVals[yyTop]);
break;
case 62:
case_62();
break;
case 63:
yyVal = RelationalOp.Equals;
break;
case 64:
yyVal = Binop.Multiply;
break;
case 65:
yyVal = Binop.Divide;
break;
case 66:
yyVal = Binop.Mod;
break;
case 67:
yyVal = Binop.Add;
break;
case 68:
yyVal = Binop.Subtract;
break;
case 69:
yyVal = Binop.ShiftLeft;
break;
case 70:
yyVal = Binop.ShiftRight;
break;
case 71:
yyVal = Binop.BinaryAnd;
break;
case 72:
yyVal = Binop.BinaryXor;
break;
case 73:
yyVal = Binop.BinaryOr;
break;
case 74:
yyVal = yyVals[yyTop];
break;
case 75:
yyVal = new SequenceExpression((Expression)yyVals[-2 + yyTop], (Expression)yyVals[yyTop]);
break;
case 77:
case_77();
break;
case 78:
case_78();
break;
case 79:
case_79();
break;
case 80:
case_80();
break;
case 81:
case_81();
break;
case 82:
case_82();
break;
case 83:
case_83();
break;
case 84:
case_84();
break;
case 85:
case_85();
break;
case 86:
case_86();
break;
case 87:
case_87();
break;
case 88:
case_88();
break;
case 89:
case_89();
break;
case 90:
case_90();
break;
case 91:
yyVal = StorageClassSpecifier.Typedef;
break;
case 92:
yyVal = StorageClassSpecifier.Extern;
break;
case 93:
yyVal = StorageClassSpecifier.Static;
break;
case 94:
yyVal = StorageClassSpecifier.Auto;
break;
case 95:
yyVal = StorageClassSpecifier.Register;
break;
case 96:
yyVal = new TypeSpecifier(TypeSpecifierKind.Builtin, "void", null);
break;
case 97:
yyVal = new TypeSpecifier(TypeSpecifierKind.Builtin, "char", null);
break;
case 98:
yyVal = new TypeSpecifier(TypeSpecifierKind.Builtin, "short", null);
break;
case 99:
yyVal = new TypeSpecifier(TypeSpecifierKind.Builtin, "int", null);
break;
case 100:
yyVal = new TypeSpecifier(TypeSpecifierKind.Builtin, "long", null);
break;
case 101:
yyVal = new TypeSpecifier(TypeSpecifierKind.Builtin, "float", null);
break;
case 102:
yyVal = new TypeSpecifier(TypeSpecifierKind.Builtin, "double", null);
break;
case 103:
yyVal = new TypeSpecifier(TypeSpecifierKind.Builtin, "signed", null);
break;
case 104:
yyVal = new TypeSpecifier(TypeSpecifierKind.Builtin, "unsigned", null);
break;
case 105:
yyVal = new TypeSpecifier(TypeSpecifierKind.Builtin, "bool", null);
break;
case 106:
yyVal = new TypeSpecifier(TypeSpecifierKind.Builtin, "complex", null);
break;
case 107:
yyVal = new TypeSpecifier(TypeSpecifierKind.Builtin, "imaginary", null);
break;
case 110:
yyVal = new TypeSpecifier(TypeSpecifierKind.Typename, yyVals[yyTop].ToString(), null);
break;
case 111:
yyVal = new TypeSpecifier((TypeSpecifierKind)yyVals[-2 + yyTop], yyVals[-1 + yyTop].ToString(), (Block)yyVals[yyTop]);
break;
case 112:
yyVal = new TypeSpecifier((TypeSpecifierKind)yyVals[-1 + yyTop], "", (Block)yyVals[yyTop]);
break;
case 113:
yyVal = new TypeSpecifier((TypeSpecifierKind)yyVals[-1 + yyTop], yyVals[yyTop].ToString(), null);
break;
case 114:
yyVal = TypeSpecifierKind.Struct;
break;
case 115:
yyVal = TypeSpecifierKind.Class;
break;
case 116:
yyVal = TypeSpecifierKind.Union;
break;
case 121:
yyVal = new TypeSpecifier(TypeSpecifierKind.Enum, "", null);
break;
case 122:
yyVal = new TypeSpecifier(TypeSpecifierKind.Enum, yyVals[-3 + yyTop].ToString(), null);
break;
case 123:
yyVal = new TypeSpecifier(TypeSpecifierKind.Enum, "", null);
break;
case 124:
yyVal = new TypeSpecifier(TypeSpecifierKind.Enum, yyVals[-4 + yyTop].ToString(), null);
break;
case 125:
yyVal = new TypeSpecifier(TypeSpecifierKind.Enum, yyVals[yyTop].ToString(), null);
break;
case 130:
yyVal = FunctionSpecifier.Inline;
break;
case 131:
yyVal = new PointerDeclarator((Pointer)yyVals[-1 + yyTop], (Declarator)yyVals[yyTop]);
break;
case 132:
yyVal = yyVals[yyTop];
break;
case 133:
yyVal = new IdentifierDeclarator(yyVals[yyTop].ToString());
break;
case 134:
case_134();
break;
case 135:
yyVal = MakeArrayDeclarator((Declarator)yyVals[-4 + yyTop], (TypeQualifiers)yyVals[-2 + yyTop], (Expression)yyVals[-1 + yyTop], false);
break;
case 136:
yyVal = MakeArrayDeclarator((Declarator)yyVals[-3 + yyTop], TypeQualifiers.None, null, false);
break;
case 137:
yyVal = MakeArrayDeclarator((Declarator)yyVals[-3 + yyTop], TypeQualifiers.None, (Expression)yyVals[-1 + yyTop], false);
break;
case 138:
yyVal = MakeArrayDeclarator((Declarator)yyVals[-5 + yyTop], (TypeQualifiers)yyVals[-2 + yyTop], (Expression)yyVals[-1 + yyTop], true);
break;
case 139:
yyVal = MakeArrayDeclarator((Declarator)yyVals[-5 + yyTop], (TypeQualifiers)yyVals[-3 + yyTop], (Expression)yyVals[-1 + yyTop], true);
break;
case 140:
yyVal = MakeArrayDeclarator((Declarator)yyVals[-4 + yyTop], (TypeQualifiers)yyVals[-2 + yyTop], null, false);
break;
case 141:
yyVal = MakeArrayDeclarator((Declarator)yyVals[-3 + yyTop], TypeQualifiers.None, null, false);
break;
case 142:
yyVal = MakeArrayDeclarator((Declarator)yyVals[-2 + yyTop], TypeQualifiers.None, null, false);
break;
case 143:
case_143();
break;
case 144:
case_144();
break;
case 145:
case_145();
break;
case 146:
yyVal = new Pointer(TypeQualifiers.None);
break;
case 147:
yyVal = new Pointer((TypeQualifiers)yyVals[yyTop]);
break;
case 148:
yyVal = new Pointer(TypeQualifiers.None, (Pointer)yyVals[yyTop]);
break;
case 149:
yyVal = new Pointer((TypeQualifiers)yyVals[-1 + yyTop], (Pointer)yyVals[yyTop]);
break;
case 150:
yyVal = yyVals[yyTop];
break;
case 151:
yyVal = ((TypeQualifiers)yyVals[-1 + yyTop] | (TypeQualifiers)yyVals[yyTop]);
break;
case 152:
yyVal = TypeQualifiers.Const;
break;
case 153:
yyVal = TypeQualifiers.Restrict;
break;
case 154:
yyVal = TypeQualifiers.Volatile;
break;
case 155:
yyVal = yyVals[yyTop];
break;
case 156:
case_156();
break;
case 157:
case_157();
break;
case 158:
case_158();
break;
case 159:
case_159();
break;
case 160:
case_160();
break;
case 161:
case_161();
break;
case 162:
case_162();
break;
case 163:
case_163();
break;
case 169:
case_169();
break;
case 170:
yyVal = MakeArrayDeclarator(null, TypeQualifiers.None, null, false);
break;
case 171:
yyVal = MakeArrayDeclarator(null, TypeQualifiers.None, (Expression)yyVals[-1 + yyTop], false);
break;
case 172:
yyVal = MakeArrayDeclarator((Declarator)yyVals[-2 + yyTop], TypeQualifiers.None, null, false);
break;
case 173:
yyVal = MakeArrayDeclarator((Declarator)yyVals[-3 + yyTop], TypeQualifiers.None, (Expression)yyVals[-1 + yyTop], false);
break;
case 174:
yyVal = MakeArrayDeclarator(null, TypeQualifiers.None, null, false);
break;
case 175:
yyVal = MakeArrayDeclarator((Declarator)yyVals[-3 + yyTop], TypeQualifiers.None, null, false);
break;
case 176:
case_176();
break;
case 177:
case_177();
break;
case 178:
case_178();
break;
case 179:
case_179();
break;
case 180:
yyVal = new ExpressionInitializer((Expression)yyVals[yyTop]);
break;
case 181:
yyVal = yyVals[-1 + yyTop];
break;
case 182:
yyVal = yyVals[-2 + yyTop];
break;
case 183:
case_183();
break;
case 184:
case_184();
break;
case 185:
case_185();
break;
case 186:
case_186();
break;
case 187:
yyVal = new InitializerDesignation((List<InitializerDesignator>)yyVals[-1 + yyTop]);
break;
case 201:
yyVal = new Block(GetLocation(yyVals[-1 + yyTop]), GetLocation(yyVals[yyTop]));
break;
case 202:
yyVal = new Block(GetLocation(yyVals[-2 + yyTop]), (List<Statement>)yyVals[-1 + yyTop], GetLocation(yyVals[yyTop]));
break;
case 203:
yyVal = new List<Statement>(1) {
(Statement)yyVals[yyTop]
};
break;
case 204:
((List<Statement>)yyVals[-1 + yyTop]).Add((Statement)yyVals[yyTop]);
yyVal = yyVals[-1 + yyTop];
break;
case 207:
yyVal = null;
break;
case 208:
yyVal = new ExpressionStatement((Expression)yyVals[-1 + yyTop]);
break;
case 209:
yyVal = new IfStatement((Expression)yyVals[-2 + yyTop], (Statement)yyVals[yyTop], GetLocation(yyVals[-4 + yyTop]));
break;
case 210:
yyVal = new IfStatement((Expression)yyVals[-4 + yyTop], (Statement)yyVals[-2 + yyTop], (Statement)yyVals[yyTop], GetLocation(yyVals[-6 + yyTop]));
break;
case 212:
yyVal = new WhileStatement(false, (Expression)yyVals[-2 + yyTop], (Statement)yyVals[yyTop]);
break;
case 213:
yyVal = new WhileStatement(true, (Expression)yyVals[-2 + yyTop], (Statement)yyVals[-5 + yyTop]);
break;
case 214:
yyVal = new ForStatement((Statement)yyVals[-3 + yyTop], ((ExpressionStatement)yyVals[-2 + yyTop]).Expression, (Statement)yyVals[yyTop], null, GetLocation(yyVals[-5 + yyTop]), GetLocation(yyVals[yyTop]));
break;
case 215:
yyVal = new ForStatement((Statement)yyVals[-4 + yyTop], ((ExpressionStatement)yyVals[-3 + yyTop]).Expression, (Expression)yyVals[-2 + yyTop], (Statement)yyVals[yyTop], null, GetLocation(yyVals[-6 + yyTop]), GetLocation(yyVals[yyTop]));
break;
case 216:
yyVal = new ForStatement((Statement)yyVals[-3 + yyTop], ((ExpressionStatement)yyVals[-2 + yyTop]).Expression, (Statement)yyVals[yyTop]);
break;
case 217:
yyVal = new ForStatement((Statement)yyVals[-4 + yyTop], ((ExpressionStatement)yyVals[-3 + yyTop]).Expression, (Expression)yyVals[-2 + yyTop], (Statement)yyVals[yyTop]);
break;
case 221:
yyVal = new ReturnStatement();
break;
case 222:
yyVal = new ReturnStatement((Expression)yyVals[-1 + yyTop]);
break;
case 223:
case_223();
break;
case 224:
case_224();
break;
case 227:
case_227();
break;
case 228:
case_228();
break;
case 229:
case_229();
break;
case 230:
case_230();
break;
}
yyTop -= yyLen[num3];
num = array[yyTop];
int num5 = yyLhs[num3];
if (num != 0 || num5 != 0) {
num = (((num3 = yyGindex[num5]) == 0 || (num3 += num) < 0 || num3 >= yyTable.Length || yyCheck[num3] != num) ? yyDgoto[num5] : yyTable[num3]);
break;
}
num = 27;
if (yyToken < 0)
yyToken = (yyLex.advance() ? yyLex.token() : 0);
if (yyToken != 0)
break;
return yyVal;
IL_0250:
if (yyToken == 0)
throw new yyException("irrecoverable syntax error at end-of-file");
yyToken = -1;
}
yyTop++;
}
}
private void case_15()
{
List<Expression> list = new List<Expression>();
list.Add((Expression)yyVals[yyTop]);
yyVal = list;
}
private void case_16()
{
List<Expression> list = (List<Expression>)yyVals[-2 + yyTop];
list.Add((Expression)yyVals[yyTop]);
yyVal = list;
}
private void case_62()
{
if (yyVals[-1 + yyTop] is RelationalOp && (RelationalOp)yyVals[-1 + yyTop] == RelationalOp.Equals)
yyVal = new AssignExpression((Expression)yyVals[-2 + yyTop], (Expression)yyVals[yyTop]);
else {
Expression left = (Expression)yyVals[-2 + yyTop];
yyVal = new AssignExpression(left, new BinaryExpression(left, (Binop)yyVals[-1 + yyTop], (Expression)yyVals[yyTop]));
}
}
private void case_77()
{
MultiDeclaratorStatement multiDeclaratorStatement = new MultiDeclaratorStatement();
multiDeclaratorStatement.Specifiers = (DeclarationSpecifiers)yyVals[-1 + yyTop];
yyVal = multiDeclaratorStatement;
}
private void case_78()
{
MultiDeclaratorStatement multiDeclaratorStatement = new MultiDeclaratorStatement();
multiDeclaratorStatement.Specifiers = (DeclarationSpecifiers)yyVals[-2 + yyTop];
multiDeclaratorStatement.InitDeclarators = (List<InitDeclarator>)yyVals[-1 + yyTop];
yyVal = multiDeclaratorStatement;
}
private void case_79()
{
DeclarationSpecifiers declarationSpecifiers = new DeclarationSpecifiers();
declarationSpecifiers.StorageClassSpecifier = (StorageClassSpecifier)yyVals[yyTop];
yyVal = declarationSpecifiers;
}
private void case_80()
{
DeclarationSpecifiers declarationSpecifiers = (DeclarationSpecifiers)yyVals[yyTop];
declarationSpecifiers.StorageClassSpecifier |= (StorageClassSpecifier)yyVals[-1 + yyTop];
yyVal = declarationSpecifiers;
}
private void case_81()
{
DeclarationSpecifiers declarationSpecifiers = new DeclarationSpecifiers();
declarationSpecifiers.TypeSpecifiers.Add((TypeSpecifier)yyVals[yyTop]);
yyVal = declarationSpecifiers;
}
private void case_82()
{
DeclarationSpecifiers declarationSpecifiers = (DeclarationSpecifiers)yyVals[yyTop];
declarationSpecifiers.TypeSpecifiers.Add((TypeSpecifier)yyVals[-1 + yyTop]);
yyVal = declarationSpecifiers;
}
private void case_83()
{
DeclarationSpecifiers declarationSpecifiers = new DeclarationSpecifiers();
declarationSpecifiers.TypeQualifiers = (TypeQualifiers)yyVals[yyTop];
yyVal = declarationSpecifiers;
}
private void case_84()
{
DeclarationSpecifiers declarationSpecifiers = (DeclarationSpecifiers)yyVals[yyTop];
declarationSpecifiers.TypeQualifiers = (TypeQualifiers)yyVals[-1 + yyTop];
yyVal = declarationSpecifiers;
}
private void case_85()
{
DeclarationSpecifiers declarationSpecifiers = new DeclarationSpecifiers();
declarationSpecifiers.FunctionSpecifier = (FunctionSpecifier)yyVals[yyTop];
yyVal = declarationSpecifiers;
}
private void case_86()
{
DeclarationSpecifiers declarationSpecifiers = (DeclarationSpecifiers)yyVals[yyTop];
declarationSpecifiers.FunctionSpecifier = (FunctionSpecifier)yyVals[-1 + yyTop];
yyVal = declarationSpecifiers;
}
private void case_87()
{
List<InitDeclarator> list = new List<InitDeclarator>();
list.Add((InitDeclarator)yyVals[yyTop]);
yyVal = list;
}
private void case_88()
{
List<InitDeclarator> list = (List<InitDeclarator>)yyVals[-2 + yyTop];
list.Add((InitDeclarator)yyVals[yyTop]);
yyVal = list;
}
private void case_89()
{
InitDeclarator initDeclarator = new InitDeclarator();
initDeclarator.Declarator = (Declarator)yyVals[yyTop];
yyVal = initDeclarator;
}
private void case_90()
{
InitDeclarator initDeclarator = new InitDeclarator();
initDeclarator.Declarator = (Declarator)yyVals[-2 + yyTop];
initDeclarator.Initializer = (Initializer)yyVals[yyTop];
yyVal = initDeclarator;
}
private void case_134()
{
Declarator declarator = (Declarator)yyVals[-1 + yyTop];
Declarator declarator2 = FixPointerAndArrayPrecedence(declarator);
if (declarator2 != null)
yyVal = declarator2;
else {
declarator.StrongBinding = true;
yyVal = declarator;
}
}
private void case_143()
{
FunctionDeclarator functionDeclarator = new FunctionDeclarator();
functionDeclarator.InnerDeclarator = (Declarator)yyVals[-3 + yyTop];
functionDeclarator.Parameters = (List<ParameterDeclaration>)yyVals[-1 + yyTop];
yyVal = functionDeclarator;
}
private void case_144()
{
FunctionDeclarator functionDeclarator = new FunctionDeclarator();
functionDeclarator.InnerDeclarator = (Declarator)yyVals[-3 + yyTop];
functionDeclarator.Parameters = new List<ParameterDeclaration>();
foreach (string item in (List<string>)yyVals[-1 + yyTop]) {
functionDeclarator.Parameters.Add(new ParameterDeclaration(item));
}
yyVal = functionDeclarator;
}
private void case_145()
{
FunctionDeclarator functionDeclarator = new FunctionDeclarator();
functionDeclarator.InnerDeclarator = (Declarator)yyVals[-2 + yyTop];
functionDeclarator.Parameters = new List<ParameterDeclaration>();
yyVal = functionDeclarator;
}
private void case_156()
{
List<ParameterDeclaration> list = (List<ParameterDeclaration>)yyVals[-2 + yyTop];
list.Add(new VarParameter());
yyVal = list;
}
private void case_157()
{
List<ParameterDeclaration> list = new List<ParameterDeclaration>();
list.Add((ParameterDeclaration)yyVals[yyTop]);
yyVal = list;
}
private void case_158()
{
List<ParameterDeclaration> list = (List<ParameterDeclaration>)yyVals[-2 + yyTop];
list.Add((ParameterDeclaration)yyVals[yyTop]);
yyVal = list;
}
private void case_159()
{
ParameterDeclaration parameterDeclaration = (ParameterDeclaration)(yyVal = new ParameterDeclaration((DeclarationSpecifiers)yyVals[-1 + yyTop], (Declarator)yyVals[yyTop]));
}
private void case_160()
{
ParameterDeclaration parameterDeclaration = (ParameterDeclaration)(yyVal = new ParameterDeclaration((DeclarationSpecifiers)yyVals[-1 + yyTop], (Declarator)yyVals[yyTop]));
}
private void case_161()
{
ParameterDeclaration parameterDeclaration = (ParameterDeclaration)(yyVal = new ParameterDeclaration((DeclarationSpecifiers)yyVals[yyTop]));
}
private void case_162()
{
List<string> list = new List<string>();
list.Add(yyVals[yyTop].ToString());
yyVal = list;
}
private void case_163()
{
List<string> list = (List<string>)yyVals[-2 + yyTop];
list.Add(yyVals[yyTop].ToString());
yyVal = list;
}
private void case_169()
{
Declarator declarator = (Declarator)yyVals[-1 + yyTop];
Declarator declarator2 = FixPointerAndArrayPrecedence(declarator);
if (declarator2 != null)
yyVal = declarator2;
else {
declarator.StrongBinding = true;
yyVal = declarator;
}
}
private void case_176()
{
FunctionDeclarator functionDeclarator = new FunctionDeclarator();
functionDeclarator.InnerDeclarator = (Declarator)yyVals[-1 + yyTop];
functionDeclarator.Parameters = new List<ParameterDeclaration>();
yyVal = functionDeclarator;
}
private void case_177()
{
FunctionDeclarator functionDeclarator = new FunctionDeclarator();
functionDeclarator.Parameters = (List<ParameterDeclaration>)yyVals[-1 + yyTop];
yyVal = functionDeclarator;
}
private void case_178()
{
FunctionDeclarator functionDeclarator = new FunctionDeclarator();
functionDeclarator.InnerDeclarator = (Declarator)yyVals[-2 + yyTop];
functionDeclarator.Parameters = new List<ParameterDeclaration>();
yyVal = functionDeclarator;
}
private void case_179()
{
FunctionDeclarator functionDeclarator = new FunctionDeclarator();
functionDeclarator.InnerDeclarator = (Declarator)yyVals[-3 + yyTop];
functionDeclarator.Parameters = (List<ParameterDeclaration>)yyVals[-1 + yyTop];
yyVal = functionDeclarator;
}
private void case_183()
{
StructuredInitializer structuredInitializer = new StructuredInitializer();
Initializer init = (Initializer)yyVals[yyTop];
structuredInitializer.Add(init);
yyVal = structuredInitializer;
}
private void case_184()
{
StructuredInitializer structuredInitializer = new StructuredInitializer();
Initializer initializer = (Initializer)yyVals[yyTop];
initializer.Designation = (InitializerDesignation)yyVals[-1 + yyTop];
structuredInitializer.Add(initializer);
yyVal = structuredInitializer;
}
private void case_185()
{
StructuredInitializer structuredInitializer = (StructuredInitializer)yyVals[-2 + yyTop];
Initializer init = (Initializer)yyVals[yyTop];
structuredInitializer.Add(init);
yyVal = structuredInitializer;
}
private void case_186()
{
StructuredInitializer structuredInitializer = (StructuredInitializer)yyVals[-3 + yyTop];
Initializer initializer = (Initializer)yyVals[yyTop];
initializer.Designation = (InitializerDesignation)yyVals[-1 + yyTop];
structuredInitializer.Add(initializer);
yyVal = structuredInitializer;
}
private void case_223()
{
AddDeclaration(yyVals[yyTop]);
yyVal = _tu;
}
private void case_224()
{
AddDeclaration(yyVals[yyTop]);
yyVal = _tu;
}
private void case_227()
{
FunctionDefinition functionDefinition = new FunctionDefinition();
functionDefinition.Specifiers = (DeclarationSpecifiers)yyVals[-3 + yyTop];
functionDefinition.Declarator = (Declarator)yyVals[-2 + yyTop];
functionDefinition.ParameterDeclarations = (List<Declaration>)yyVals[-1 + yyTop];
functionDefinition.Body = (Block)yyVals[yyTop];
yyVal = functionDefinition;
}
private void case_228()
{
FunctionDefinition functionDefinition = new FunctionDefinition();
functionDefinition.Specifiers = (DeclarationSpecifiers)yyVals[-2 + yyTop];
functionDefinition.Declarator = (Declarator)yyVals[-1 + yyTop];
functionDefinition.Body = (Block)yyVals[yyTop];
yyVal = functionDefinition;
}
private void case_229()
{
List<Declaration> list = new List<Declaration>();
list.Add((Declaration)yyVals[yyTop]);
yyVal = list;
}
private void case_230()
{
List<Declaration> list = (List<Declaration>)yyVals[-1 + yyTop];
list.Add((Declaration)yyVals[yyTop]);
yyVal = list;
}
public TranslationUnit ParseTranslationUnit(string name, string code, Report report = null)
{
Lexer lexer = new Lexer(name, code, report);
return ParseTranslationUnit(lexer);
}
public TranslationUnit ParseTranslationUnit(Lexer lexer)
{
Report report = lexer.Report;
_tu = new TranslationUnit();
Dictionary<string, CType> typedefs = _tu.Typedefs;
lexer.IsTypedef = typedefs.ContainsKey;
try {
yyparse(lexer);
} catch (NotImplementedException ex) {
report.Error(9003, "Feature not implemented: " + ex.Message);
} catch (NotSupportedException ex2) {
report.Error(9002, "Feature not supported: " + ex2.Message);
} catch (Exception ex3) {
report.Error(9001, "Internal compiler error: " + ex3.Message);
}
lexer.IsTypedef = null;
return _tu;
}
private void AddDeclaration(object a)
{
_tu.AddStatement((Statement)a);
}
private Declarator FixPointerAndArrayPrecedence(Declarator d)
{
if (d is PointerDeclarator && d.InnerDeclarator != null && d.InnerDeclarator is ArrayDeclarator) {
Declarator innerDeclarator = d.InnerDeclarator;
Declarator innerDeclarator2 = innerDeclarator.InnerDeclarator;
innerDeclarator.InnerDeclarator = d;
d.InnerDeclarator = innerDeclarator2;
return innerDeclarator;
}
return null;
}
private Declarator MakeArrayDeclarator(Declarator left, TypeQualifiers tq, Expression len, bool isStatic)
{
ArrayDeclarator arrayDeclarator = new ArrayDeclarator();
arrayDeclarator.LengthExpression = len;
if (left.StrongBinding) {
Declarator declarator = arrayDeclarator.InnerDeclarator = left.InnerDeclarator;
left.InnerDeclarator = arrayDeclarator;
return left;
}
arrayDeclarator.InnerDeclarator = left;
return arrayDeclarator;
}
private Location GetLocation(object obj)
{
return null;
}
}
}