#ifndef lint
static char yysccsid[] = "@(#)yaccpar 1.9 (Berkeley) 02/21/93 (BSDI)";
#endif
#include <stdlib.h>
#define YYBYACC 1
#define YYMAJOR 1
#define YYMINOR 9
#define YYEMPTY (-1)
#define YYLEX yylex()
#define yyclearin (yychar=YYEMPTY)
#define yyerrok (yyerrflag=0)
#define YYRECOVERING (yyerrflag!=0)
#define YYPREFIX "yy"
#line 2 "em.y"
/*
* Copyright (C) 1995-1997 Christopher D. Granz
*
* This header may not be removed.
*
* Refer to the file "License" included in this package for further
* information and before using any of the following.
*/
#include <stdio.h>
#include "emc.h"
NODE *pTemp;
#line 22 "em.y"
typedef union
{
long lInt;
double dFloat;
intt iType;
NODE *pNode;
} YYSTYPE;
#line 42 "y.tab.c"
#define INT_CONSTANT 257
#define FLOAT_CONSTANT 258
#define STRING_LITERAL 259
#define IDENTIFIER 260
#define INFO 261
#define GLOBAL 262
#define RETURNED 263
#define INC_OP 264
#define DEC_OP 265
#define LEFT_OP 266
#define RIGHT_OP 267
#define LE_OP 268
#define GE_OP 269
#define EQ_OP 270
#define NE_OP 271
#define AND_OP 272
#define OR_OP 273
#define MUL_ASSIGN 274
#define DIV_ASSIGN 275
#define MOD_ASSIGN 276
#define ADD_ASSIGN 277
#define SUB_ASSIGN 278
#define LEFT_ASSIGN 279
#define RIGHT_ASSIGN 280
#define AND_ASSIGN 281
#define XOR_ASSIGN 282
#define OR_ASSIGN 283
#define INT 284
#define FLOAT 285
#define STRING 286
#define OBJECT 287
#define ARRAY 288
#define IF 289
#define ELSE 290
#define DO 291
#define WHILE 292
#define FOR 293
#define BROKEN 294
#define CONTINUED 295
#define BREAK 296
#define CONTINUE 297
#define RETURN 298
#define LELSE 299
#define LBROKEN 300
#define LCONTINUED 301
#define YYERRCODE 256
short yylhs[] = { -1,
0, 0, 46, 4, 4, 5, 5, 6, 6, 7,
7, 8, 9, 10, 10, 10, 10, 10, 11, 11,
11, 11, 11, 12, 12, 12, 12, 2, 2, 2,
2, 2, 2, 13, 13, 13, 13, 14, 14, 14,
15, 15, 15, 16, 16, 16, 16, 16, 17, 17,
17, 18, 18, 19, 19, 20, 20, 21, 21, 22,
22, 23, 23, 24, 24, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 25, 25, 26, 26,
27, 28, 28, 29, 29, 30, 30, 31, 31, 32,
32, 33, 33, 34, 34, 35, 35, 36, 36, 1,
1, 1, 1, 1, 37, 37, 38, 38, 39, 39,
40, 40, 40, 40, 40, 40, 41, 41, 42, 43,
43, 43, 44, 44, 44, 44, 44, 44, 44, 44,
44, 44, 44, 45, 45, 45, 45,
};
short yylen[] = { 2,
0, 1, 0, 4, 4, 5, 6, 1, 3, 0,
1, 2, 1, 1, 1, 1, 1, 3, 1, 4,
4, 2, 2, 1, 2, 2, 2, 1, 1, 1,
1, 1, 1, 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, 0, 1,
1, 0, 1, 7, 3, 1, 3, 1, 2, 1,
3, 1, 3, 1, 3, 1, 3, 1, 3, 1,
1, 1, 1, 1, 1, 3, 1, 2, 1, 2,
1, 1, 1, 1, 1, 1, 2, 3, 2, 5,
6, 7, 5, 7, 7, 9, 9, 6, 8, 8,
10, 10, 9, 2, 2, 3, 5,
};
short yydefred[] = { 0,
13, 100, 101, 102, 103, 104, 0, 98, 2, 0,
0, 0, 0, 0, 0, 0, 0, 8, 99, 0,
0, 107, 12, 0, 0, 0, 108, 9, 0, 6,
0, 15, 16, 17, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 28, 29, 30, 31, 32,
33, 117, 0, 0, 14, 19, 0, 34, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 64, 81,
0, 0, 77, 111, 0, 109, 112, 113, 114, 115,
116, 7, 0, 0, 25, 26, 0, 0, 0, 0,
134, 135, 0, 83, 0, 0, 0, 90, 0, 27,
22, 23, 67, 68, 69, 70, 71, 72, 73, 74,
75, 76, 0, 0, 66, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 119, 118, 110, 0,
0, 86, 88, 0, 0, 0, 0, 0, 136, 18,
85, 0, 0, 0, 0, 65, 35, 36, 37, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 78, 89, 0, 0, 0,
0, 0, 0, 0, 91, 0, 96, 93, 21, 20,
0, 87, 0, 0, 0, 0, 0, 0, 137, 0,
94, 63, 0, 121, 0, 0, 0, 0, 0, 0,
97, 84, 122, 0, 0, 0, 125, 0, 95, 0,
130, 0, 0, 0, 0, 0, 126, 127, 133, 131,
132,
};
short yydgoto[] = { 7,
53, 54, 116, 0, 9, 16, 17, 18, 55, 56,
57, 58, 59, 60, 61, 62, 63, 64, 65, 66,
67, 68, 69, 70, 71, 72, 73, 95, 74, 141,
142, 97, 98, 200, 188, 11, 0, 99, 75, 76,
77, 78, 79, 80, 81, 0,
};
short yysindex[] = { -73,
0, 0, 0, 0, 0, 0, 0, 0, 0, -16,
-43, -111, -111, 16, -40, -27, 18, 0, 0, -111,
-40, 0, 0, -111, -50, 27, 0, 0, 96, 0,
-50, 0, 0, 0, -42, 1169, 1169, 85, 414, 88,
91, 28, 61, 1182, 1169, 0, 0, 0, 0, 0,
0, 0, -40, 1169, 0, 0, 411, 0, 80, 51,
-129, 37, -127, 53, 22, 9, -126, -57, 0, 0,
104, 94, 0, 0, 357, 0, 0, 0, 0, 0,
0, 0, 138, -31, 0, 0, 1169, -133, 1169, 1169,
0, 0, 1169, 0, 102, 114, 6, 0, 110, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1169, 1169, 0, 1169, 1169, 1169, 1169, 1169,
1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169, 1169,
1169, 1169, 1169, 1169, 1169, 1169, 0, 0, 0, -40,
-14, 0, 0, 137, 143, 149, 132, 67, 0, 0,
0, -40, 1218, 161, 112, 0, 0, 0, 0, 80,
80, 51, 51, -129, -129, -129, -129, 37, 37, -127,
53, 22, 9, -126, -55, 0, 0, 138, 142, 372,
1169, 414, 1169, 150, 0, 1218, 0, 0, 0, 0,
1169, 0, 34, 414, -82, 182, -143, 185, 0, -2,
0, 0, -36, 0, 414, -137, 414, 414, 1169, 1218,
0, 0, 0, 414, 414, -47, 0, 216, 0, -10,
0, 414, 414, 414, 414, 414, 0, 0, 0, 0,
0,
};
short yyrindex[] = { 277,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 245, 0, 0, 0, 254, 0, 0, 0, 245,
0, 0, 0, 0, 0, 0, 0, 0, 241, 0,
0, 0, 0, 0, 0, 0, 0, 0, 241, 0,
0, 0, 0, 242, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 476, 0, 486, 759,
827, 1043, 1141, -23, 1213, 1260, -30, -7, 0, 0,
7, 0, 0, 0, 241, 0, 0, 0, 0, 0,
0, 0, 0, 449, 0, 0, 0, 0, 266, 241,
0, 0, 194, 0, 0, 0, 0, 0, 45, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 292, 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, 722,
730, 767, 804, 855, 881, 923, 1020, 1117, 1125, 1185,
1049, 1239, 1276, 17, 0, 0, 0, 0, 0, 241,
266, 241, 241, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 241, -33, 0, 39, 0, 0, 0,
0, 0, 0, 0, 241, 81, 241, 241, 292, 0,
0, 0, 0, 241, 241, -18, 0, 0, 0, 24,
0, 241, 241, 241, 241, 241, 0, 0, 0, 0,
0,
};
short yygindex[] = { 0,
418, 0, 0, 0, 0, 0, 314, 318, 32, 0,
1433, 76, 46, 47, 111, 57, 213, 217, 215, 218,
223, 214, 159, 236, 0, -74, 1285, -81, 0, 0,
180, 0, 210, 0, -132, 0, 0, 23, 0, -26,
20, 0, 0, 0, 0, 0,
};
#define YYTABLESIZE 1626
short yytable[] = { 120,
13, 21, 191, 113, 120, 135, 120, 146, 113, 120,
60, 120, 88, 60, 124, 147, 24, 54, 148, 124,
54, 124, 212, 12, 124, 120, 124, 60, 60, 178,
120, 10, 60, 62, 54, 54, 62, 23, 154, 54,
124, 210, 14, 27, 30, 124, 22, 80, 139, 152,
82, 62, 22, 201, 114, 20, 129, 61, 25, 114,
61, 129, 60, 129, 151, 80, 129, 31, 129, 54,
54, 123, 29, 45, 61, 61, 123, 219, 123, 61,
83, 123, 129, 123, 22, 62, 91, 129, 92, 120,
130, 120, 120, 120, 60, 121, 126, 123, 127, 196,
54, 54, 123, 92, 124, 143, 124, 124, 198, 61,
179, 85, 86, 128, 22, 131, 119, 62, 128, 92,
128, 117, 211, 128, 87, 128, 118, 89, 51, 100,
90, 80, 132, 46, 218, 45, 122, 123, 48, 128,
49, 61, 128, 129, 128, 133, 129, 136, 129, 129,
207, 208, 137, 195, 150, 197, 214, 215, 145, 47,
149, 123, 177, 123, 123, 160, 161, 204, 162, 163,
153, 22, 2, 3, 4, 5, 6, 180, 213, 21,
216, 217, 181, 22, 168, 169, 1, 220, 221, 182,
183, 184, 157, 158, 159, 227, 228, 229, 230, 231,
143, 189, 193, 128, 190, 128, 128, 205, 199, 22,
2, 3, 4, 5, 6, 134, 1, 134, 29, 1,
52, 50, 206, 120, 120, 120, 120, 101, 102, 120,
120, 120, 101, 102, 164, 165, 166, 167, 124, 124,
124, 124, 60, 209, 124, 124, 124, 222, 54, 54,
120, 120, 120, 120, 120, 120, 224, 120, 120, 120,
120, 120, 120, 120, 120, 124, 124, 124, 124, 124,
124, 124, 124, 124, 124, 124, 1, 124, 124, 124,
129, 129, 129, 129, 225, 10, 129, 129, 129, 61,
32, 33, 34, 1, 11, 123, 123, 123, 123, 79,
82, 123, 123, 123, 124, 125, 82, 129, 129, 129,
129, 129, 129, 129, 129, 129, 129, 129, 79, 129,
129, 129, 123, 123, 123, 123, 123, 123, 123, 123,
123, 123, 79, 26, 123, 123, 123, 128, 128, 128,
128, 28, 170, 128, 128, 128, 172, 171, 175, 202,
173, 156, 32, 33, 34, 1, 174, 192, 35, 36,
37, 185, 0, 0, 128, 128, 128, 128, 128, 128,
128, 128, 128, 128, 0, 0, 128, 128, 128, 2,
3, 4, 5, 6, 38, 0, 39, 40, 41, 51,
0, 42, 43, 44, 46, 0, 45, 1, 0, 48,
0, 49, 0, 0, 51, 0, 0, 0, 0, 46,
0, 45, 0, 0, 48, 0, 49, 8, 0, 0,
47, 2, 3, 4, 5, 6, 0, 0, 0, 15,
19, 0, 0, 0, 0, 47, 0, 15, 0, 0,
0, 15, 0, 0, 0, 0, 51, 0, 0, 0,
113, 46, 0, 45, 0, 0, 48, 0, 49, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 115, 0, 0, 0, 0, 0, 47, 0, 29,
0, 138, 50, 0, 0, 24, 24, 0, 0, 24,
24, 24, 24, 24, 29, 24, 0, 50, 0, 0,
140, 114, 0, 0, 0, 0, 24, 24, 24, 0,
24, 24, 24, 24, 0, 0, 24, 24, 24, 24,
24, 0, 24, 38, 0, 0, 38, 0, 38, 38,
38, 0, 0, 0, 24, 24, 29, 24, 24, 50,
0, 24, 24, 38, 38, 38, 0, 38, 38, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 24, 24,
0, 0, 24, 24, 0, 0, 0, 0, 38, 38,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 140, 0, 0, 0, 24,
24, 0, 0, 0, 0, 0, 0, 0, 0, 38,
38, 0, 0, 32, 33, 34, 1, 0, 0, 35,
36, 37, 0, 0, 0, 0, 0, 0, 32, 33,
34, 1, 0, 0, 35, 36, 37, 0, 0, 0,
2, 3, 4, 5, 6, 38, 0, 39, 40, 41,
0, 0, 42, 43, 44, 2, 3, 4, 5, 6,
38, 194, 39, 40, 41, 0, 0, 42, 43, 44,
32, 33, 34, 1, 101, 102, 35, 36, 37, 0,
0, 0, 0, 0, 103, 104, 105, 106, 107, 108,
109, 110, 111, 112, 0, 0, 0, 2, 3, 4,
5, 6, 38, 0, 39, 40, 41, 0, 0, 42,
43, 44, 0, 0, 24, 24, 24, 24, 24, 24,
24, 24, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 24, 24, 24, 24, 24, 24, 24, 24, 0,
0, 38, 38, 38, 38, 38, 38, 38, 38, 39,
0, 0, 39, 0, 39, 39, 39, 40, 0, 0,
40, 0, 40, 40, 40, 0, 0, 0, 0, 39,
39, 39, 0, 39, 39, 0, 0, 40, 40, 40,
0, 40, 40, 0, 0, 0, 41, 0, 0, 41,
0, 0, 41, 0, 42, 0, 0, 42, 0, 0,
42, 0, 0, 0, 39, 39, 41, 41, 41, 0,
41, 41, 40, 40, 42, 42, 42, 0, 42, 42,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 43, 0, 0, 43, 39, 39, 43, 0, 0,
0, 41, 41, 40, 40, 0, 0, 0, 0, 42,
42, 43, 43, 43, 44, 43, 43, 44, 0, 0,
44, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 41, 41, 44, 44, 44, 0, 44, 44,
42, 42, 47, 0, 0, 47, 43, 43, 47, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 47, 47, 47, 0, 47, 47, 48, 44,
44, 48, 0, 0, 48, 0, 0, 43, 43, 0,
0, 0, 0, 0, 0, 0, 0, 0, 48, 48,
48, 0, 48, 48, 0, 0, 0, 47, 47, 0,
44, 44, 0, 0, 0, 0, 0, 0, 0, 0,
45, 0, 0, 45, 0, 0, 45, 0, 0, 0,
0, 0, 0, 48, 48, 0, 0, 0, 47, 47,
45, 45, 45, 0, 45, 45, 0, 39, 39, 39,
39, 39, 39, 39, 39, 40, 40, 40, 40, 40,
40, 40, 40, 0, 48, 48, 0, 0, 0, 0,
0, 0, 0, 0, 0, 45, 45, 0, 0, 0,
0, 0, 0, 0, 41, 41, 41, 41, 41, 41,
41, 41, 42, 42, 42, 42, 42, 42, 42, 42,
0, 0, 0, 0, 0, 0, 45, 45, 0, 0,
0, 0, 0, 0, 0, 0, 0, 46, 0, 0,
46, 0, 0, 46, 0, 0, 0, 0, 0, 43,
43, 43, 43, 43, 43, 43, 43, 46, 46, 46,
49, 46, 46, 49, 0, 0, 49, 0, 0, 55,
0, 0, 55, 0, 44, 44, 44, 44, 44, 44,
49, 49, 0, 0, 0, 49, 55, 55, 0, 0,
0, 55, 46, 46, 0, 0, 0, 0, 0, 0,
0, 0, 47, 47, 47, 47, 47, 47, 0, 0,
0, 0, 0, 0, 0, 49, 49, 0, 0, 0,
0, 55, 55, 46, 46, 0, 0, 0, 48, 48,
48, 48, 48, 48, 50, 0, 0, 50, 0, 0,
50, 0, 51, 0, 0, 51, 49, 49, 51, 0,
0, 0, 55, 55, 50, 50, 0, 0, 52, 50,
0, 52, 51, 51, 52, 0, 0, 51, 0, 0,
45, 45, 45, 45, 45, 45, 0, 0, 52, 52,
0, 51, 0, 52, 0, 0, 46, 0, 45, 50,
50, 48, 0, 49, 51, 0, 0, 51, 51, 46,
0, 45, 53, 0, 48, 53, 49, 0, 53, 0,
0, 0, 47, 52, 52, 0, 0, 0, 0, 0,
50, 50, 53, 53, 0, 47, 0, 53, 51, 51,
51, 0, 0, 56, 0, 46, 56, 45, 0, 0,
48, 0, 49, 0, 52, 52, 0, 0, 0, 0,
56, 56, 0, 0, 0, 56, 0, 53, 53, 57,
0, 47, 57, 0, 0, 0, 0, 46, 46, 46,
46, 46, 46, 0, 50, 0, 57, 57, 0, 0,
58, 57, 0, 58, 93, 56, 0, 50, 53, 53,
0, 0, 49, 49, 49, 49, 59, 58, 58, 59,
55, 55, 58, 0, 0, 0, 0, 0, 94, 96,
0, 57, 0, 59, 59, 0, 56, 56, 59, 0,
186, 0, 0, 50, 0, 0, 0, 0, 0, 0,
0, 0, 58, 0, 0, 0, 0, 0, 0, 0,
0, 0, 57, 57, 0, 0, 0, 0, 59, 0,
0, 144, 0, 94, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 58, 0, 50, 50, 50, 50,
0, 0, 0, 0, 51, 51, 51, 51, 155, 0,
59, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 52, 52, 0, 0, 0, 0, 0, 0,
176, 0, 0, 0, 0, 32, 33, 34, 1, 0,
0, 0, 36, 37, 0, 0, 0, 187, 32, 33,
34, 1, 0, 0, 0, 36, 37, 0, 0, 0,
0, 0, 0, 0, 0, 0, 53, 53, 0, 0,
0, 0, 0, 0, 0, 94, 0, 0, 84, 84,
187, 0, 0, 0, 32, 33, 34, 1, 0, 0,
0, 36, 37, 0, 56, 56, 84, 0, 0, 0,
0, 0, 0, 0, 187, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
57, 57, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 58, 58, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 59, 59, 84,
84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
84, 84, 84, 84, 84, 84, 84, 84, 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, 84, 0, 203,
};
short yycheck[] = { 33,
44, 42, 58, 40, 38, 63, 40, 89, 40, 43,
41, 45, 39, 44, 33, 90, 44, 41, 93, 38,
44, 40, 59, 40, 43, 59, 45, 58, 59, 44,
64, 0, 63, 41, 58, 59, 44, 15, 113, 63,
59, 44, 11, 21, 25, 64, 15, 41, 75, 44,
31, 59, 21, 186, 91, 40, 33, 41, 41, 91,
44, 38, 93, 40, 59, 59, 43, 41, 45, 93,
94, 33, 123, 40, 58, 59, 38, 210, 40, 63,
123, 43, 59, 45, 53, 93, 59, 64, 44, 123,
38, 125, 126, 43, 125, 45, 60, 59, 62, 181,
124, 125, 64, 59, 123, 83, 125, 126, 183, 93,
125, 36, 37, 33, 83, 94, 37, 125, 38, 59,
40, 42, 125, 43, 40, 45, 47, 40, 33, 54,
40, 125, 124, 38, 209, 40, 266, 267, 43, 59,
45, 125, 270, 271, 64, 272, 123, 44, 125, 126,
294, 295, 59, 180, 41, 182, 294, 295, 292, 64,
59, 123, 140, 125, 126, 120, 121, 194, 122, 123,
61, 140, 284, 285, 286, 287, 288, 41, 205, 42,
207, 208, 40, 152, 128, 129, 260, 214, 215, 41,
59, 125, 117, 118, 119, 222, 223, 224, 225, 226,
178, 41, 61, 123, 93, 125, 126, 290, 59, 178,
284, 285, 286, 287, 288, 273, 260, 273, 123, 260,
125, 126, 41, 257, 258, 259, 260, 264, 265, 263,
264, 265, 264, 265, 124, 125, 126, 127, 257, 258,
259, 260, 273, 59, 263, 264, 265, 295, 272, 273,
284, 285, 286, 287, 288, 289, 41, 291, 292, 293,
294, 295, 296, 297, 298, 284, 285, 286, 287, 288,
289, 290, 291, 292, 293, 294, 0, 296, 297, 298,
257, 258, 259, 260, 295, 41, 263, 264, 265, 273,
257, 258, 259, 260, 41, 257, 258, 259, 260, 59,
59, 263, 264, 265, 268, 269, 41, 284, 285, 286,
287, 288, 289, 290, 291, 292, 293, 294, 125, 296,
297, 298, 284, 285, 286, 287, 288, 289, 290, 291,
292, 293, 41, 20, 296, 297, 298, 257, 258, 259,
260, 24, 130, 263, 264, 265, 132, 131, 135, 191,
133, 116, 257, 258, 259, 260, 134, 178, 263, 264,
265, 152, -1, -1, 284, 285, 286, 287, 288, 289,
290, 291, 292, 293, -1, -1, 296, 297, 298, 284,
285, 286, 287, 288, 289, -1, 291, 292, 293, 33,
-1, 296, 297, 298, 38, -1, 40, 260, -1, 43,
-1, 45, -1, -1, 33, -1, -1, -1, -1, 38,
-1, 40, -1, -1, 43, -1, 45, 0, -1, -1,
64, 284, 285, 286, 287, 288, -1, -1, -1, 12,
13, -1, -1, -1, -1, 64, -1, 20, -1, -1,
-1, 24, -1, -1, -1, -1, 33, -1, -1, -1,
40, 38, -1, 40, -1, -1, 43, -1, 45, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 61, -1, -1, -1, -1, -1, 64, -1, 123,
-1, 125, 126, -1, -1, 37, 38, -1, -1, 41,
42, 43, 44, 45, 123, 47, -1, 126, -1, -1,
83, 91, -1, -1, -1, -1, 58, 59, 60, -1,
62, 63, 37, 38, -1, -1, 41, 42, 43, 44,
45, -1, 47, 38, -1, -1, 41, -1, 43, 44,
45, -1, -1, -1, 59, 60, 123, 62, 63, 126,
-1, 93, 94, 58, 59, 60, -1, 62, 63, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 93, 94,
-1, -1, 124, 125, -1, -1, -1, -1, 93, 94,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 178, -1, -1, -1, 124,
125, -1, -1, -1, -1, -1, -1, -1, -1, 124,
125, -1, -1, 257, 258, 259, 260, -1, -1, 263,
264, 265, -1, -1, -1, -1, -1, -1, 257, 258,
259, 260, -1, -1, 263, 264, 265, -1, -1, -1,
284, 285, 286, 287, 288, 289, -1, 291, 292, 293,
-1, -1, 296, 297, 298, 284, 285, 286, 287, 288,
289, 290, 291, 292, 293, -1, -1, 296, 297, 298,
257, 258, 259, 260, 264, 265, 263, 264, 265, -1,
-1, -1, -1, -1, 274, 275, 276, 277, 278, 279,
280, 281, 282, 283, -1, -1, -1, 284, 285, 286,
287, 288, 289, -1, 291, 292, 293, -1, -1, 296,
297, 298, -1, -1, 266, 267, 268, 269, 270, 271,
272, 273, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 266, 267, 268, 269, 270, 271, 272, 273, -1,
-1, 266, 267, 268, 269, 270, 271, 272, 273, 38,
-1, -1, 41, -1, 43, 44, 45, 38, -1, -1,
41, -1, 43, 44, 45, -1, -1, -1, -1, 58,
59, 60, -1, 62, 63, -1, -1, 58, 59, 60,
-1, 62, 63, -1, -1, -1, 38, -1, -1, 41,
-1, -1, 44, -1, 38, -1, -1, 41, -1, -1,
44, -1, -1, -1, 93, 94, 58, 59, 60, -1,
62, 63, 93, 94, 58, 59, 60, -1, 62, 63,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 38, -1, -1, 41, 124, 125, 44, -1, -1,
-1, 93, 94, 124, 125, -1, -1, -1, -1, 93,
94, 58, 59, 60, 38, 62, 63, 41, -1, -1,
44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 124, 125, 58, 59, 60, -1, 62, 63,
124, 125, 38, -1, -1, 41, 93, 94, 44, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 58, 59, 60, -1, 62, 63, 38, 93,
94, 41, -1, -1, 44, -1, -1, 124, 125, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 58, 59,
60, -1, 62, 63, -1, -1, -1, 93, 94, -1,
124, 125, -1, -1, -1, -1, -1, -1, -1, -1,
38, -1, -1, 41, -1, -1, 44, -1, -1, -1,
-1, -1, -1, 93, 94, -1, -1, -1, 124, 125,
58, 59, 60, -1, 62, 63, -1, 266, 267, 268,
269, 270, 271, 272, 273, 266, 267, 268, 269, 270,
271, 272, 273, -1, 124, 125, -1, -1, -1, -1,
-1, -1, -1, -1, -1, 93, 94, -1, -1, -1,
-1, -1, -1, -1, 266, 267, 268, 269, 270, 271,
272, 273, 266, 267, 268, 269, 270, 271, 272, 273,
-1, -1, -1, -1, -1, -1, 124, 125, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 38, -1, -1,
41, -1, -1, 44, -1, -1, -1, -1, -1, 266,
267, 268, 269, 270, 271, 272, 273, 58, 59, 60,
38, 62, 63, 41, -1, -1, 44, -1, -1, 41,
-1, -1, 44, -1, 268, 269, 270, 271, 272, 273,
58, 59, -1, -1, -1, 63, 58, 59, -1, -1,
-1, 63, 93, 94, -1, -1, -1, -1, -1, -1,
-1, -1, 268, 269, 270, 271, 272, 273, -1, -1,
-1, -1, -1, -1, -1, 93, 94, -1, -1, -1,
-1, 93, 94, 124, 125, -1, -1, -1, 268, 269,
270, 271, 272, 273, 38, -1, -1, 41, -1, -1,
44, -1, 38, -1, -1, 41, 124, 125, 44, -1,
-1, -1, 124, 125, 58, 59, -1, -1, 38, 63,
-1, 41, 58, 59, 44, -1, -1, 63, -1, -1,
268, 269, 270, 271, 272, 273, -1, -1, 58, 59,
-1, 33, -1, 63, -1, -1, 38, -1, 40, 93,
94, 43, -1, 45, 33, -1, -1, 93, 94, 38,
-1, 40, 38, -1, 43, 41, 45, -1, 44, -1,
-1, -1, 64, 93, 94, -1, -1, -1, -1, -1,
124, 125, 58, 59, -1, 64, -1, 63, 124, 125,
33, -1, -1, 41, -1, 38, 44, 40, -1, -1,
43, -1, 45, -1, 124, 125, -1, -1, -1, -1,
58, 59, -1, -1, -1, 63, -1, 93, 94, 41,
-1, 64, 44, -1, -1, -1, -1, 268, 269, 270,
271, 272, 273, -1, 126, -1, 58, 59, -1, -1,
41, 63, -1, 44, 123, 93, -1, 126, 124, 125,
-1, -1, 270, 271, 272, 273, 41, 58, 59, 44,
272, 273, 63, -1, -1, -1, -1, -1, 44, 45,
-1, 93, -1, 58, 59, -1, 124, 125, 63, -1,
123, -1, -1, 126, -1, -1, -1, -1, -1, -1,
-1, -1, 93, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 124, 125, -1, -1, -1, -1, 93, -1,
-1, 87, -1, 89, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 125, -1, 270, 271, 272, 273,
-1, -1, -1, -1, 270, 271, 272, 273, 114, -1,
125, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 272, 273, -1, -1, -1, -1, -1, -1,
136, -1, -1, -1, -1, 257, 258, 259, 260, -1,
-1, -1, 264, 265, -1, -1, -1, 153, 257, 258,
259, 260, -1, -1, -1, 264, 265, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 272, 273, -1, -1,
-1, -1, -1, -1, -1, 181, -1, -1, 36, 37,
186, -1, -1, -1, 257, 258, 259, 260, -1, -1,
-1, 264, 265, -1, 272, 273, 54, -1, -1, -1,
-1, -1, -1, -1, 210, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
272, 273, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 272, 273, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 272, 273, 117,
118, 119, 120, 121, 122, 123, 124, 125, 126, 127,
128, 129, 130, 131, 132, 133, 134, 135, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 191, -1, 193,
};
#define YYFINAL 7
#ifndef YYDEBUG
#define YYDEBUG 0
#endif
#define YYMAXTOKEN 301
#if YYDEBUG
char *yyname[] = {
"end-of-file",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,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,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,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,"INT_CONSTANT",
"FLOAT_CONSTANT","STRING_LITERAL","IDENTIFIER","INFO","GLOBAL","RETURNED",
"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","INT",
"FLOAT","STRING","OBJECT","ARRAY","IF","ELSE","DO","WHILE","FOR","BROKEN",
"CONTINUED","BREAK","CONTINUE","RETURN","LELSE","LBROKEN","LCONTINUED",
};
char *yyrule[] = {
"$accept : top_level",
"top_level :",
"top_level : function",
"$$1 :",
"global_statement : INFO STRING_LITERAL $$1 ';'",
"global_statement : GLOBAL type_specifier declarator_list ';'",
"function : identifier '(' opt_parameter_list ')' compound_statement",
"function : type_specifier_list identifier '(' opt_parameter_list ')' compound_statement",
"parameter_list : parameter_declaration",
"parameter_list : parameter_list ',' parameter_declaration",
"opt_parameter_list :",
"opt_parameter_list : parameter_list",
"parameter_declaration : type_specifier declarator",
"identifier : IDENTIFIER",
"primary_expr : identifier",
"primary_expr : INT_CONSTANT",
"primary_expr : FLOAT_CONSTANT",
"primary_expr : STRING_LITERAL",
"primary_expr : '(' expr ')'",
"postfix_expr : primary_expr",
"postfix_expr : postfix_expr '[' expr ']'",
"postfix_expr : postfix_expr '(' opt_expr_list ')'",
"postfix_expr : postfix_expr INC_OP",
"postfix_expr : postfix_expr DEC_OP",
"unary_expr : postfix_expr",
"unary_expr : INC_OP unary_expr",
"unary_expr : DEC_OP unary_expr",
"unary_expr : unary_operator unary_expr",
"unary_operator : '&'",
"unary_operator : '@'",
"unary_operator : '+'",
"unary_operator : '-'",
"unary_operator : '~'",
"unary_operator : '!'",
"multiplicative_expr : unary_expr",
"multiplicative_expr : multiplicative_expr '*' unary_expr",
"multiplicative_expr : multiplicative_expr '/' unary_expr",
"multiplicative_expr : multiplicative_expr '%' unary_expr",
"additive_expr : multiplicative_expr",
"additive_expr : additive_expr '+' multiplicative_expr",
"additive_expr : additive_expr '-' multiplicative_expr",
"shift_expr : additive_expr",
"shift_expr : shift_expr LEFT_OP additive_expr",
"shift_expr : shift_expr RIGHT_OP additive_expr",
"relational_expr : shift_expr",
"relational_expr : relational_expr '<' shift_expr",
"relational_expr : relational_expr '>' shift_expr",
"relational_expr : relational_expr LE_OP shift_expr",
"relational_expr : relational_expr GE_OP shift_expr",
"equality_expr : relational_expr",
"equality_expr : equality_expr EQ_OP relational_expr",
"equality_expr : equality_expr NE_OP relational_expr",
"and_expr : equality_expr",
"and_expr : and_expr '&' equality_expr",
"exclusive_or_expr : and_expr",
"exclusive_or_expr : exclusive_or_expr '^' and_expr",
"inclusive_or_expr : exclusive_or_expr",
"inclusive_or_expr : inclusive_or_expr '|' exclusive_or_expr",
"logical_and_expr : inclusive_or_expr",
"logical_and_expr : logical_and_expr AND_OP inclusive_or_expr",
"logical_or_expr : logical_and_expr",
"logical_or_expr : logical_or_expr OR_OP logical_and_expr",
"conditional_expr : logical_or_expr",
"conditional_expr : logical_or_expr '?' logical_or_expr ':' conditional_expr",
"assignment_expr : conditional_expr",
"assignment_expr : postfix_expr assignment_operator assignment_expr",
"assignment_operator : '='",
"assignment_operator : MUL_ASSIGN",
"assignment_operator : DIV_ASSIGN",
"assignment_operator : MOD_ASSIGN",
"assignment_operator : ADD_ASSIGN",
"assignment_operator : SUB_ASSIGN",
"assignment_operator : LEFT_ASSIGN",
"assignment_operator : RIGHT_ASSIGN",
"assignment_operator : AND_ASSIGN",
"assignment_operator : XOR_ASSIGN",
"assignment_operator : OR_ASSIGN",
"expr_list : expr",
"expr_list : expr_list ',' expr",
"opt_expr_list :",
"opt_expr_list : expr_list",
"expr : assignment_expr",
"opt_expr :",
"opt_expr : expr",
"declaration : RETURNED '{' returned_list '}' '=' postfix_expr ';'",
"declaration : type_specifier init_declarator_list ';'",
"returned_list : returned",
"returned_list : returned_list ',' returned",
"returned : declarator",
"returned : type_specifier declarator",
"init_declarator_list : init_declarator",
"init_declarator_list : init_declarator_list ',' init_declarator",
"init_declarator : declarator",
"init_declarator : declarator '=' initializer",
"initializer_list : initializer",
"initializer_list : initializer_list ',' initializer",
"initializer : expr",
"initializer : '{' initializer_list '}'",
"type_specifier_list : type_specifier",
"type_specifier_list : type_specifier_list ',' type_specifier",
"type_specifier : INT",
"type_specifier : FLOAT",
"type_specifier : STRING",
"type_specifier : OBJECT",
"type_specifier : ARRAY",
"declarator_list : declarator",
"declarator_list : declarator_list ',' declarator",
"declarator : identifier",
"declarator : '*' declarator",
"statement_list : statement",
"statement_list : statement_list statement",
"statement : declaration",
"statement : compound_statement",
"statement : expression_statement",
"statement : if_statement",
"statement : loop_statement",
"statement : jump_statement",
"compound_statement : '{' '}'",
"compound_statement : '{' statement_list '}'",
"expression_statement : opt_expr_list ';'",
"if_statement : IF '(' expr ')' statement",
"if_statement : IF '(' expr ')' ELSE statement",
"if_statement : IF '(' expr ')' statement ELSE statement",
"loop_statement : WHILE '(' opt_expr ')' statement",
"loop_statement : WHILE '(' opt_expr ')' statement BROKEN statement",
"loop_statement : WHILE '(' opt_expr ')' statement CONTINUED statement",
"loop_statement : WHILE '(' opt_expr ')' statement BROKEN statement CONTINUED statement",
"loop_statement : WHILE '(' opt_expr ')' statement CONTINUED statement BROKEN statement",
"loop_statement : DO statement WHILE '(' opt_expr ')'",
"loop_statement : DO statement WHILE '(' opt_expr ')' BROKEN statement",
"loop_statement : DO statement WHILE '(' opt_expr ')' CONTINUED statement",
"loop_statement : DO statement WHILE '(' opt_expr ')' BROKEN statement CONTINUED statement",
"loop_statement : DO statement WHILE '(' opt_expr ')' CONTINUED statement BROKEN statement",
"loop_statement : FOR '(' opt_expr_list ';' opt_expr_list ';' opt_expr_list ')' statement",
"jump_statement : BREAK ';'",
"jump_statement : CONTINUE ';'",
"jump_statement : RETURN opt_expr ';'",
"jump_statement : RETURN '{' opt_expr_list '}' ';'",
};
#endif
#ifdef YYSTACKSIZE
#undef YYMAXDEPTH
#define YYMAXDEPTH YYSTACKSIZE
#else
#ifdef YYMAXDEPTH
#define YYSTACKSIZE YYMAXDEPTH
#else
#define YYSTACKSIZE 10000
#define YYMAXDEPTH 10000
#endif
#endif
#define YYINITSTACKSIZE 200
int yydebug;
int yynerrs;
struct yystack {
short *ssp;
YYSTYPE *vsp;
short *ss;
YYSTYPE *vs;
int stacksize;
short *sslim;
};
int yychar; /* some people use this, so we copy it in & out */
int yyerrflag; /* must be global for yyerrok & YYRECOVERING */
YYSTYPE yylval;
#line 518 "em.y"
extern char *yytext;
extern int column;
int yyerror( char *str )
{
fflush( stderr );
fprintf( stderr, "\n%*s\n%*s\n", column, "^", column, str );
return ( 0 );
}
/*
* End of em.y
*/
#line 751 "y.tab.c"
/* allocate initial stack */
#if defined(__STDC__) || defined(__cplusplus)
static int yyinitstack(struct yystack *sp)
#else
static int yyinitstack(sp)
struct yystack *sp;
#endif
{
int newsize;
short *newss;
YYSTYPE *newvs;
newsize = YYINITSTACKSIZE;
newss = (short *)malloc(newsize * sizeof *newss);
newvs = (YYSTYPE *)malloc(newsize * sizeof *newvs);
sp->ss = sp->ssp = newss;
sp->vs = sp->vsp = newvs;
if (newss == NULL || newvs == NULL) return -1;
sp->stacksize = newsize;
sp->sslim = newss + newsize - 1;
return 0;
}
/* double stack size, up to YYMAXDEPTH */
#if defined(__STDC__) || defined(__cplusplus)
static int yygrowstack(struct yystack *sp)
#else
static int yygrowstack(sp)
struct yystack *sp;
#endif
{
int newsize, i;
short *newss;
YYSTYPE *newvs;
if ((newsize = sp->stacksize) >= YYMAXDEPTH) return -1;
if ((newsize *= 2) > YYMAXDEPTH) newsize = YYMAXDEPTH;
i = sp->ssp - sp->ss;
if ((newss = (short *)realloc(sp->ss, newsize * sizeof *newss)) == NULL)
return -1;
sp->ss = newss;
sp->ssp = newss + i;
if ((newvs = (YYSTYPE *)realloc(sp->vs, newsize * sizeof *newvs)) == NULL)
return -1;
sp->vs = newvs;
sp->vsp = newvs + i;
sp->stacksize = newsize;
sp->sslim = newss + newsize - 1;
return 0;
}
#define YYFREESTACK(sp) { free((sp)->ss); free((sp)->vs); }
#define YYABORT goto yyabort
#define YYREJECT goto yyabort
#define YYACCEPT goto yyaccept
#define YYERROR goto yyerrlab
int
yyparse()
{
register int yym, yyn, yystate, yych;
register YYSTYPE *yyvsp;
YYSTYPE yyval;
struct yystack yystk;
#if YYDEBUG
register char *yys;
extern char *getenv();
if (yys = getenv("YYDEBUG"))
{
yyn = *yys;
if (yyn >= '0' && yyn <= '9')
yydebug = yyn - '0';
}
#endif
yynerrs = 0;
yyerrflag = 0;
yychar = yych = YYEMPTY;
if (yyinitstack(&yystk)) goto yyoverflow;
*yystk.ssp = yystate = 0;
yyloop:
if (yyn = yydefred[yystate]) goto yyreduce;
if (yych < 0)
{
if ((yych = YYLEX) < 0) yych = 0;
yychar = yych;
#if YYDEBUG
if (yydebug)
{
yys = 0;
if (yych <= YYMAXTOKEN) yys = yyname[yych];
if (!yys) yys = "illegal-symbol";
printf("%sdebug: state %d, reading %d (%s)\n",
YYPREFIX, yystate, yych, yys);
}
#endif
}
if ((yyn = yysindex[yystate]) && (yyn += yych) >= 0 &&
yyn <= YYTABLESIZE && yycheck[yyn] == yych)
{
#if YYDEBUG
if (yydebug)
printf("%sdebug: state %d, shifting to state %d\n",
YYPREFIX, yystate, yytable[yyn]);
#endif
if (yystk.ssp >= yystk.sslim && yygrowstack(&yystk))
goto yyoverflow;
*++yystk.ssp = yystate = yytable[yyn];
*++yystk.vsp = yylval;
yychar = yych = YYEMPTY;
if (yyerrflag > 0) --yyerrflag;
goto yyloop;
}
if ((yyn = yyrindex[yystate]) && (yyn += yych) >= 0 &&
yyn <= YYTABLESIZE && yycheck[yyn] == yych)
{
yyn = yytable[yyn];
goto yyreduce;
}
if (yyerrflag) goto yyinrecovery;
#ifdef lint
goto yynewerror;
#endif
yynewerror:
yyerror("syntax error");
#ifdef lint
goto yyerrlab;
#endif
yyerrlab:
++yynerrs;
yyinrecovery:
if (yyerrflag < 3)
{
yyerrflag = 3;
for (;;)
{
if ((yyn = yysindex[*yystk.ssp]) &&
(yyn += YYERRCODE) >= 0 &&
yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
{
#if YYDEBUG
if (yydebug)
printf("%sdebug: state %d, error recovery shifting\
to state %d\n", YYPREFIX, *yystk.ssp, yytable[yyn]);
#endif
if (yystk.ssp >= yystk.sslim && yygrowstack(&yystk))
goto yyoverflow;
*++yystk.ssp = yystate = yytable[yyn];
*++yystk.vsp = yylval;
goto yyloop;
}
else
{
#if YYDEBUG
if (yydebug)
printf("%sdebug: error recovery discarding state %d\n",
YYPREFIX, *yystk.ssp);
#endif
if (yystk.ssp <= yystk.ss) goto yyabort;
--yystk.ssp;
--yystk.vsp;
}
}
}
else
{
if (yych == 0) goto yyabort;
#if YYDEBUG
if (yydebug)
{
yys = 0;
if (yych <= YYMAXTOKEN) yys = yyname[yych];
if (!yys) yys = "illegal-symbol";
printf("%sdebug: state %d, error recovery discards token %d (%s)\n",
YYPREFIX, yystate, yych, yys);
}
#endif
yychar = yych = YYEMPTY;
goto yyloop;
}
yyreduce:
#if YYDEBUG
if (yydebug)
printf("%sdebug: state %d, reducing by rule %d (%s)\n",
YYPREFIX, yystate, yyn, yyrule[yyn]);
#endif
yym = yylen[yyn];
yyvsp = yystk.vsp; /* for speed in code under switch() */
yyval = yyvsp[1-yym];
switch (yyn)
{
case 1:
#line 79 "em.y"
{ yyval.pNode = pNodeTree = NULL; }
break;
case 2:
#line 81 "em.y"
{ yyval.pNode = pNodeTree = yyvsp[0].pNode; }
break;
case 3:
#line 86 "em.y"
{ pTemp = node_string( NODE_INFO, yytext ); }
break;
case 4:
#line 88 "em.y"
{ yyval.pNode = pTemp; }
break;
case 5:
#line 90 "em.y"
{ yyval.pNode = node_tree( yyvsp[-2].iType, NULL, yyvsp[-1].pNode ); }
break;
case 6:
#line 95 "em.y"
{ yyval.pNode = node_tree( NODE_FUNCTION, yyvsp[-4].pNode,
node_tree( NODE_TREE, NULL,
node_tree( NODE_TREE, yyvsp[-2].pNode, yyvsp[0].pNode ) ) ); }
break;
case 7:
#line 100 "em.y"
{ yyval.pNode = node_tree( NODE_FUNCTION, yyvsp[-4].pNode,
node_tree( NODE_TREE, yyvsp[-5].pNode,
node_tree( NODE_TREE, yyvsp[-2].pNode, yyvsp[0].pNode ) ) ); }
break;
case 8:
#line 107 "em.y"
{ yyval.pNode = yyvsp[0].pNode; }
break;
case 9:
#line 109 "em.y"
{ yyval.pNode = node_tree( NODE_TREE, yyvsp[-2].pNode, yyvsp[0].pNode ); }
break;
case 10:
#line 114 "em.y"
{ yyval.pNode = NULL; }
break;
case 11:
#line 116 "em.y"
{ yyval.pNode = yyvsp[0].pNode; }
break;
case 12:
#line 121 "em.y"
{ yyval.pNode = node_tree( yyvsp[-1].iType, NULL, yyvsp[0].pNode ); }
break;
case 13:
#line 126 "em.y"
{ yyval.pNode = node_string( NODE_IDENTIFIER, yytext ); }
break;
case 14:
#line 131 "em.y"
{ yyval.pNode = yyvsp[0].pNode; }
break;
case 15:
#line 133 "em.y"
{ yyval.pNode = node_int( yyvsp[0].lInt ); }
break;
case 16:
#line 135 "em.y"
{ yyval.pNode = node_float( yyvsp[0].dFloat ); }
break;
case 17:
#line 137 "em.y"
{ yyval.pNode = node_string( NODE_STRING, yytext ); }
break;
case 18:
#line 139 "em.y"
{ yyval.pNode = yyvsp[-1].pNode; }
break;
case 19:
#line 144 "em.y"
{ yyval.pNode = yyvsp[0].pNode; }
break;
case 20:
#line 146 "em.y"
{ yyval.pNode = node_tree( NODE_OPER_INDEX, yyvsp[-3].pNode, yyvsp[-1].pNode ); }
break;
case 21:
#line 148 "em.y"
{ yyval.pNode = node_tree( NODE_OPER_FUNC_CALL, yyvsp[-3].pNode, yyvsp[-1].pNode ); }
break;
case 22:
#line 150 "em.y"
{ yyval.pNode = node_tree( NODE_OPER_INC, yyvsp[-1].pNode, NULL ); }
break;
case 23:
#line 152 "em.y"
{ yyval.pNode = node_tree( NODE_OPER_DEC, yyvsp[-1].pNode, NULL ); }
break;
case 24:
#line 157 "em.y"
{ yyval.pNode = yyvsp[0].pNode; }
break;
case 25:
#line 159 "em.y"
{ yyval.pNode = node_tree( NODE_UOPER_INC, NULL, yyvsp[0].pNode ); }
break;
case 26:
#line 161 "em.y"
{ yyval.pNode = node_tree( NODE_UOPER_DEC, NULL, yyvsp[0].pNode ); }
break;
case 27:
#line 163 "em.y"
{ yyval.pNode = node_tree( yyvsp[-1].iType, NULL, yyvsp[0].pNode ); }
break;
case 28:
#line 168 "em.y"
{ yyval.iType = NODE_UOPER_ADDRESS_OF; }
break;
case 29:
#line 170 "em.y"
{ yyval.iType = NODE_UOPER_BUILTIN_FUNC; }
break;
case 30:
#line 172 "em.y"
{ yyval.iType = NODE_UOPER_PLUS; }
break;
case 31:
#line 174 "em.y"
{ yyval.iType = NODE_UOPER_MINUS; }
break;
case 32:
#line 176 "em.y"
{ yyval.iType = 0; }
break;
case 33:
#line 178 "em.y"
{ yyval.iType = NODE_UOPER_NOT_EQUAL; }
break;
case 34:
#line 183 "em.y"
{ yyval.pNode = yyvsp[0].pNode; }
break;
case 35:
#line 185 "em.y"
{ yyval.pNode = node_tree( NODE_OPER_MUL, yyvsp[-2].pNode, yyvsp[0].pNode ); }
break;
case 36:
#line 187 "em.y"
{ yyval.pNode = node_tree( NODE_OPER_DIV, yyvsp[-2].pNode, yyvsp[0].pNode ); }
break;
case 37:
#line 189 "em.y"
{ yyval.pNode = node_tree( NODE_OPER_MOD, yyvsp[-2].pNode, yyvsp[0].pNode ); }
break;
case 38:
#line 194 "em.y"
{ yyval.pNode = yyvsp[0].pNode; }
break;
case 39:
#line 196 "em.y"
{ yyval.pNode = node_tree( NODE_OPER_ADD, yyvsp[-2].pNode, yyvsp[0].pNode ); }
break;
case 40:
#line 198 "em.y"
{ yyval.pNode = node_tree( NODE_OPER_SUB, yyvsp[-2].pNode, yyvsp[0].pNode ); }
break;
case 41:
#line 203 "em.y"
{ yyval.pNode = yyvsp[0].pNode; }
break;
case 42:
#line 205 "em.y"
{ yyval.pNode = node_tree( NODE_OPER_LEFT, yyvsp[-2].pNode, yyvsp[0].pNode ); }
break;
case 43:
#line 207 "em.y"
{ yyval.pNode = node_tree( NODE_OPER_RIGHT, yyvsp[-2].pNode, yyvsp[0].pNode ); }
break;
case 44:
#line 212 "em.y"
{ yyval.pNode = yyvsp[0].pNode; }
break;
case 45:
#line 214 "em.y"
{ yyval.pNode = node_tree( NODE_ROPER_LESS, yyvsp[-2].pNode, yyvsp[0].pNode ); }
break;
case 46:
#line 216 "em.y"
{ yyval.pNode = node_tree( NODE_ROPER_GREATER, yyvsp[-2].pNode, yyvsp[0].pNode ); }
break;
case 47:
#line 218 "em.y"
{ yyval.pNode = node_tree( NODE_ROPER_LESS_EQUAL, yyvsp[-2].pNode, yyvsp[0].pNode ); }
break;
case 48:
#line 220 "em.y"
{ yyval.pNode = node_tree( NODE_ROPER_GREATER_EQUAL, yyvsp[-2].pNode, yyvsp[0].pNode ); }
break;
case 49:
#line 225 "em.y"
{ yyval.pNode = yyvsp[0].pNode; }
break;
case 50:
#line 227 "em.y"
{ yyval.pNode = node_tree( NODE_ROPER_EQUAL, yyvsp[-2].pNode, yyvsp[0].pNode ); }
break;
case 51:
#line 229 "em.y"
{ yyval.pNode = node_tree( NODE_ROPER_NOT_EQUAL, yyvsp[-2].pNode, yyvsp[0].pNode ); }
break;
case 52:
#line 234 "em.y"
{ yyval.pNode = yyvsp[0].pNode; }
break;
case 53:
#line 236 "em.y"
{ yyval.pNode = node_tree( NODE_OPER_AND, yyvsp[-2].pNode, yyvsp[0].pNode ); }
break;
case 54:
#line 241 "em.y"
{ yyval.pNode = yyvsp[0].pNode; }
break;
case 55:
#line 243 "em.y"
{ yyval.pNode = node_tree( NODE_OPER_XOR, yyvsp[-2].pNode, yyvsp[0].pNode ); }
break;
case 56:
#line 248 "em.y"
{ yyval.pNode = yyvsp[0].pNode; }
break;
case 57:
#line 250 "em.y"
{ yyval.pNode = node_tree( NODE_OPER_OR, yyvsp[-2].pNode, yyvsp[0].pNode ); }
break;
case 58:
#line 255 "em.y"
{ yyval.pNode = yyvsp[0].pNode; }
break;
case 59:
#line 257 "em.y"
{ yyval.pNode = node_tree( NODE_LOPER_AND, yyvsp[-2].pNode, yyvsp[0].pNode ); }
break;
case 60:
#line 262 "em.y"
{ yyval.pNode = yyvsp[0].pNode; }
break;
case 61:
#line 264 "em.y"
{ yyval.pNode = node_tree( NODE_LOPER_OR, yyvsp[-2].pNode, yyvsp[0].pNode ); }
break;
case 62:
#line 269 "em.y"
{ yyval.pNode = yyvsp[0].pNode; }
break;
case 63:
#line 271 "em.y"
{ yyval.pNode = node_tree( NODE_COPER_QUEST, yyvsp[-4].pNode,
node_tree( NODE_COPER_COLON, yyvsp[-2].pNode, yyvsp[0].pNode ) ); }
break;
case 64:
#line 277 "em.y"
{ yyval.pNode = yyvsp[0].pNode; }
break;
case 65:
#line 279 "em.y"
{ yyval.pNode = node_tree( yyvsp[-1].iType, yyvsp[-2].pNode, yyvsp[0].pNode ); }
break;
case 66:
#line 284 "em.y"
{ yyval.iType = NODE_OPER_ASSIGN; }
break;
case 67:
#line 286 "em.y"
{ yyval.iType = NODE_OPER_MUL_ASSIGN; }
break;
case 68:
#line 288 "em.y"
{ yyval.iType = NODE_OPER_DIV_ASSIGN; }
break;
case 69:
#line 290 "em.y"
{ yyval.iType = NODE_OPER_MOD_ASSIGN; }
break;
case 70:
#line 292 "em.y"
{ yyval.iType = NODE_OPER_ADD_ASSIGN; }
break;
case 71:
#line 294 "em.y"
{ yyval.iType = NODE_OPER_SUB_ASSIGN; }
break;
case 72:
#line 296 "em.y"
{ yyval.iType = NODE_OPER_LEFT_ASSIGN; }
break;
case 73:
#line 298 "em.y"
{ yyval.iType = NODE_OPER_RIGHT_ASSIGN; }
break;
case 74:
#line 300 "em.y"
{ yyval.iType = NODE_OPER_AND_ASSIGN; }
break;
case 75:
#line 302 "em.y"
{ yyval.iType = NODE_OPER_XOR_ASSIGN; }
break;
case 76:
#line 304 "em.y"
{ yyval.iType = NODE_OPER_OR_ASSIGN; }
break;
case 77:
#line 309 "em.y"
{ yyval.pNode = yyvsp[0].pNode; }
break;
case 78:
#line 311 "em.y"
{ yyval.pNode = node_tree( NODE_TREE, yyvsp[-2].pNode, yyvsp[0].pNode ); }
break;
case 79:
#line 316 "em.y"
{ yyval.pNode = NULL; }
break;
case 80:
#line 318 "em.y"
{ yyval.pNode = yyvsp[0].pNode; }
break;
case 81:
#line 323 "em.y"
{ yyval.pNode = yyvsp[0].pNode; }
break;
case 82:
#line 328 "em.y"
{ yyval.pNode = NULL; }
break;
case 83:
#line 330 "em.y"
{ yyval.pNode = yyvsp[0].pNode; }
break;
case 84:
#line 335 "em.y"
{ yyval.pNode = node_tree( NODE_RETURNED, yyvsp[-4].pNode, yyvsp[-1].pNode ); }
break;
case 85:
#line 337 "em.y"
{ yyval.pNode = node_tree( yyvsp[-2].iType, NULL, yyvsp[-1].pNode ); }
break;
case 86:
#line 342 "em.y"
{ yyval.pNode = yyvsp[0].pNode; }
break;
case 87:
#line 344 "em.y"
{ yyval.pNode = node_tree( NODE_TREE, yyvsp[-2].pNode, yyvsp[0].pNode ); }
break;
case 88:
#line 349 "em.y"
{ yyval.pNode = yyvsp[0].pNode; }
break;
case 89:
#line 351 "em.y"
{ yyval.pNode = node_tree( yyvsp[-1].iType, NULL, yyvsp[0].pNode ); }
break;
case 90:
#line 356 "em.y"
{ yyval.pNode = yyvsp[0].pNode; }
break;
case 91:
#line 358 "em.y"
{ yyval.pNode = node_tree( NODE_TREE, yyvsp[-2].pNode, yyvsp[0].pNode ); }
break;
case 92:
#line 363 "em.y"
{ yyval.pNode = yyvsp[0].pNode; }
break;
case 93:
#line 365 "em.y"
{ yyval.pNode = node_tree( NODE_OPER_ASSIGN, yyvsp[-2].pNode, yyvsp[0].pNode ); }
break;
case 94:
#line 370 "em.y"
{ yyval.pNode = yyvsp[0].pNode; }
break;
case 95:
#line 372 "em.y"
{ yyval.pNode = node_tree( NODE_TREE, yyvsp[-2].pNode, yyvsp[0].pNode ); }
break;
case 96:
#line 377 "em.y"
{ yyval.pNode = yyvsp[0].pNode; }
break;
case 97:
#line 379 "em.y"
{ yyval.pNode = yyvsp[-1].pNode; }
break;
case 98:
#line 384 "em.y"
{ yyval.pNode = node_tree( yyvsp[0].iType, NULL, NULL ); }
break;
case 99:
#line 386 "em.y"
{ yyval.pNode = node_tree( NODE_TREE, yyvsp[-2].pNode, node_tree( yyvsp[0].iType, NULL, NULL ) ); }
break;
case 100:
#line 391 "em.y"
{ yyval.iType = NODE_TYPE_INT; }
break;
case 101:
#line 393 "em.y"
{ yyval.iType = NODE_TYPE_FLOAT; }
break;
case 102:
#line 395 "em.y"
{ yyval.iType = NODE_TYPE_STRING; }
break;
case 103:
#line 397 "em.y"
{ yyval.iType = NODE_TYPE_OBJECT; }
break;
case 104:
#line 399 "em.y"
{ yyval.iType = NODE_TYPE_ARRAY; }
break;
case 105:
#line 404 "em.y"
{ yyval.pNode = yyvsp[0].pNode; }
break;
case 106:
#line 406 "em.y"
{ yyval.pNode = node_tree( NODE_TREE, yyvsp[-2].pNode, yyvsp[0].pNode ); }
break;
case 107:
#line 411 "em.y"
{ yyval.pNode = yyvsp[0].pNode; }
break;
case 108:
#line 413 "em.y"
{ yyval.pNode = node_tree( NODE_STAR, NULL, yyvsp[0].pNode ); }
break;
case 109:
#line 418 "em.y"
{ yyval.pNode = yyvsp[0].pNode; }
break;
case 110:
#line 420 "em.y"
{ yyval.pNode = node_tree( NODE_TREE, yyvsp[-1].pNode, yyvsp[0].pNode ); }
break;
case 111:
#line 425 "em.y"
{ yyval.pNode = yyvsp[0].pNode; }
break;
case 112:
#line 427 "em.y"
{ yyval.pNode = yyvsp[0].pNode; }
break;
case 113:
#line 429 "em.y"
{ yyval.pNode = yyvsp[0].pNode; }
break;
case 114:
#line 431 "em.y"
{ yyval.pNode = yyvsp[0].pNode; }
break;
case 115:
#line 433 "em.y"
{ yyval.pNode = yyvsp[0].pNode; }
break;
case 116:
#line 435 "em.y"
{ yyval.pNode = yyvsp[0].pNode; }
break;
case 117:
#line 440 "em.y"
{ yyval.pNode = NULL; }
break;
case 118:
#line 442 "em.y"
{ yyval.pNode = yyvsp[-1].pNode; }
break;
case 119:
#line 447 "em.y"
{ yyval.pNode = yyvsp[-1].pNode; }
break;
case 120:
#line 452 "em.y"
{ yyval.pNode = node_tree( NODE_IF, yyvsp[-2].pNode, yyvsp[0].pNode ); }
break;
case 121:
#line 454 "em.y"
{ yyval.pNode = node_tree( NODE_IF, yyvsp[-3].pNode,
node_tree( NODE_ELSE, NULL, yyvsp[0].pNode ) ); }
break;
case 122:
#line 457 "em.y"
{ yyval.pNode = node_tree( NODE_IF, yyvsp[-4].pNode,
node_tree( NODE_ELSE, yyvsp[-2].pNode, yyvsp[0].pNode ) ); }
break;
case 123:
#line 463 "em.y"
{ yyval.pNode = node_tree( NODE_WHILE, yyvsp[-2].pNode, yyvsp[0].pNode ); }
break;
case 124:
#line 465 "em.y"
{ yyval.pNode = node_tree( NODE_WHILE, yyvsp[-4].pNode,
node_tree( NODE_BROKEN, yyvsp[-2].pNode, yyvsp[0].pNode ) ); }
break;
case 125:
#line 469 "em.y"
{ yyval.pNode = node_tree( NODE_WHILE, yyvsp[-4].pNode,
node_tree( NODE_CONTINUED, yyvsp[-2].pNode, yyvsp[0].pNode ) ); }
break;
case 126:
#line 473 "em.y"
{ yyval.pNode = node_tree( NODE_WHILE, yyvsp[-6].pNode,
node_tree( NODE_BROKEN, yyvsp[-4].pNode,
node_tree( NODE_CONTINUED, yyvsp[-2].pNode, yyvsp[0].pNode ) ) ); }
break;
case 127:
#line 478 "em.y"
{ yyval.pNode = node_tree( NODE_WHILE, yyvsp[-6].pNode,
node_tree( NODE_CONTINUED, yyvsp[-4].pNode,
node_tree( NODE_BROKEN, yyvsp[-2].pNode, yyvsp[0].pNode ) ) ); }
break;
case 128:
#line 482 "em.y"
{ yyval.pNode = node_tree( NODE_WHILE, yyvsp[-1].pNode, yyvsp[-4].pNode ); }
break;
case 129:
#line 484 "em.y"
{ yyval.pNode = node_tree( NODE_WHILE, yyvsp[-3].pNode,
node_tree( NODE_BROKEN, yyvsp[-6].pNode, yyvsp[0].pNode ) ); }
break;
case 130:
#line 488 "em.y"
{ yyval.pNode = node_tree( NODE_WHILE, yyvsp[-3].pNode,
node_tree( NODE_CONTINUED, yyvsp[-6].pNode, yyvsp[0].pNode ) ); }
break;
case 131:
#line 492 "em.y"
{ yyval.pNode = node_tree( NODE_WHILE, yyvsp[-5].pNode,
node_tree( NODE_BROKEN, yyvsp[-8].pNode,
node_tree( NODE_CONTINUED, yyvsp[-2].pNode, yyvsp[0].pNode ) ) ); }
break;
case 132:
#line 497 "em.y"
{ yyval.pNode = node_tree( NODE_WHILE, yyvsp[-5].pNode,
node_tree( NODE_CONTINUED, yyvsp[-8].pNode,
node_tree( NODE_BROKEN, yyvsp[-2].pNode, yyvsp[0].pNode ) ) ); }
break;
case 133:
#line 502 "em.y"
{ yyval.pNode = NULL; }
break;
case 134:
#line 507 "em.y"
{ yyval.pNode = node_tree( NODE_BREAK, NULL, NULL ); }
break;
case 135:
#line 509 "em.y"
{ yyval.pNode = node_tree( NODE_CONTINUE, NULL, NULL ); }
break;
case 136:
#line 511 "em.y"
{ yyval.pNode = node_tree( NODE_RETURN, yyvsp[-1].pNode, NULL ); }
break;
case 137:
#line 513 "em.y"
{ yyval.pNode = node_tree( NODE_RETURN, yyvsp[-2].pNode, NULL ); }
break;
#line 1513 "y.tab.c"
}
yystk.ssp -= yym;
yystate = *yystk.ssp;
yystk.vsp -= yym;
yym = yylhs[yyn];
yych = yychar;
if (yystate == 0 && yym == 0)
{
#if YYDEBUG
if (yydebug)
printf("%sdebug: after reduction, shifting from state 0 to\
state %d\n", YYPREFIX, YYFINAL);
#endif
yystate = YYFINAL;
*++yystk.ssp = YYFINAL;
*++yystk.vsp = yyval;
if (yych < 0)
{
if ((yych = YYLEX) < 0) yych = 0;
yychar = yych;
#if YYDEBUG
if (yydebug)
{
yys = 0;
if (yych <= YYMAXTOKEN) yys = yyname[yych];
if (!yys) yys = "illegal-symbol";
printf("%sdebug: state %d, reading %d (%s)\n",
YYPREFIX, YYFINAL, yych, yys);
}
#endif
}
if (yych == 0) goto yyaccept;
goto yyloop;
}
if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
yystate = yytable[yyn];
else
yystate = yydgoto[yym];
#if YYDEBUG
if (yydebug)
printf("%sdebug: after reduction, shifting from state %d \
to state %d\n", YYPREFIX, *yystk.ssp, yystate);
#endif
if (yystk.ssp >= yystk.sslim && yygrowstack(&yystk))
goto yyoverflow;
*++yystk.ssp = yystate;
*++yystk.vsp = yyval;
goto yyloop;
yyoverflow:
yyerror("yacc stack overflow");
yyabort:
YYFREESTACK(&yystk);
return (1);
yyaccept:
YYFREESTACK(&yystk);
return (0);
}