/
Sapphire/bin/
Sapphire/db/
Sapphire/db/OLC_rooms/
Sapphire/db/abi/
Sapphire/db/em_src/
Sapphire/db/helps/
Sapphire/db/helps/emman/ifunc/
Sapphire/db/npcs/Tatt/
Sapphire/db/objects/Tatt/
Sapphire/db/q_data/
Sapphire/db/rooms/Tatt/
Sapphire/doc/
Sapphire/doc/em/
Sapphire/etc/
Sapphire/src/abic/
Sapphire/src/areacon/
Sapphire/src/client/
Sapphire/src/embc/
Sapphire/src/emi/
Sapphire/src/emi/test/
Sapphire/src/include/
Sapphire/src/sapphire/em/
Sapphire/src/tcon/
#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);
}