#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); }