Subversion Repositories planix.SVN

Rev

Blame | Last modification | View Log | RSS feed


#line   26      "/n/ports/tools/ota/awk/awkgram.y"
#include <stdio.h>
#include <string.h>
#include "awk.h"

void checkdup(Node *list, Cell *item);
int yywrap(void) { return(1); }

Node    *beginloc = 0;
Node    *endloc = 0;
int     infunc  = 0;    /* = 1 if in arglist or body of func */
int     inloop  = 0;    /* = 1 if in while, for, do */
char    *curfname = 0;  /* current function name */
Node    *arglist = 0;   /* list of args for current function */

#line   41      "/n/ports/tools/ota/awk/awkgram.y"
typedef union  {
        Node    *p;
        Cell    *cp;
        int     i;
        char    *s;
} YYSTYPE;
extern  int     yyerrflag;
#ifndef YYMAXDEPTH
#define YYMAXDEPTH      150
#endif
YYSTYPE yylval;
YYSTYPE yyval;
#define FIRSTTOKEN      57346
#define PROGRAM 57347
#define PASTAT  57348
#define PASTAT2 57349
#define XBEGIN  57350
#define XEND    57351
#define NL      57352
#define ARRAY   57353
#define MATCH   57354
#define NOTMATCH        57355
#define MATCHOP 57356
#define FINAL   57357
#define DOT     57358
#define ALL     57359
#define CCL     57360
#define NCCL    57361
#define CHAR    57362
#define OR      57363
#define STAR    57364
#define QUEST   57365
#define PLUS    57366
#define EMPTYRE 57367
#define AND     57368
#define BOR     57369
#define APPEND  57370
#define EQ      57371
#define GE      57372
#define GT      57373
#define LE      57374
#define LT      57375
#define NE      57376
#define IN      57377
#define ARG     57378
#define BLTIN   57379
#define BREAK   57380
#define CLOSE   57381
#define CONTINUE        57382
#define DELETE  57383
#define DO      57384
#define EXIT    57385
#define FOR     57386
#define FUNC    57387
#define SUB     57388
#define GSUB    57389
#define IF      57390
#define INDEX   57391
#define LSUBSTR 57392
#define MATCHFCN        57393
#define NEXT    57394
#define NEXTFILE        57395
#define ADD     57396
#define MINUS   57397
#define MULT    57398
#define DIVIDE  57399
#define MOD     57400
#define ASSIGN  57401
#define ASGNOP  57402
#define ADDEQ   57403
#define SUBEQ   57404
#define MULTEQ  57405
#define DIVEQ   57406
#define MODEQ   57407
#define POWEQ   57408
#define PRINT   57409
#define PRINTF  57410
#define SPRINTF 57411
#define ELSE    57412
#define INTEST  57413
#define CONDEXPR        57414
#define POSTINCR        57415
#define PREINCR 57416
#define POSTDECR        57417
#define PREDECR 57418
#define VAR     57419
#define IVAR    57420
#define VARNF   57421
#define CALL    57422
#define NUMBER  57423
#define STRING  57424
#define REGEXPR 57425
#define GETLINE 57426
#define RETURN  57427
#define SPLIT   57428
#define SUBSTR  57429
#define WHILE   57430
#define CAT     57431
#define NOT     57432
#define UMINUS  57433
#define UPLUS   57434
#define POWER   57435
#define DECR    57436
#define INCR    57437
#define INDIRECT        57438
#define LASTTOKEN       57439
#define YYEOFCODE 1
#define YYERRCODE 2

#line   445     "/n/ports/tools/ota/awk/awkgram.y"


void setfname(Cell *p)
{
        if (isarr(p))
                SYNTAX("%s is an array, not a function", p->nval);
        else if (isfcn(p))
                SYNTAX("you can't define function %s more than once", p->nval);
        curfname = p->nval;
}

int constnode(Node *p)
{
        return isvalue(p) && ((Cell *) (p->narg[0]))->csub == CCON;
}

char *strnode(Node *p)
{
        return ((Cell *)(p->narg[0]))->sval;
}

Node *notnull(Node *n)
{
        switch (n->nobj) {
        case LE: case LT: case EQ: case NE: case GT: case GE:
        case BOR: case AND: case NOT:
                return n;
        default:
                return op2(NE, n, nullnode);
        }
}

void checkdup(Node *vl, Cell *cp)       /* check if name already in list */
{
        char *s = cp->nval;
        for ( ; vl; vl = vl->nnext) {
                if (strcmp(s, ((Cell *)(vl->narg[0]))->nval) == 0) {
                        SYNTAX("duplicate argument %s", s);
                        break;
                }
        }
}
short   yyexca[] =
{-1, 0,
        1, 28,
        8, 28,
        9, 28,
        12, 28,
        13, 28,
        16, 28,
        46, 28,
        47, 28,
        49, 28,
        55, 28,
        56, 28,
        57, 28,
        59, 28,
        61, 28,
        79, 28,
        87, 28,
        88, 28,
        89, 28,
        90, 28,
        91, 28,
        92, 28,
        96, 28,
        98, 28,
        99, 28,
        102, 28,
        103, 28,
        106, 28,
        110, 28,
        111, 28,
        112, 28,
        -2, 0,
-1, 1,
        1, -1,
        -2, 0,
-1, 157,
        15, 30,
        -2, 0,
-1, 176,
        14, 0,
        24, 0,
        39, 0,
        40, 0,
        41, 0,
        42, 0,
        43, 0,
        44, 0,
        45, 0,
        -2, 63,
-1, 177,
        14, 0,
        24, 0,
        39, 0,
        40, 0,
        41, 0,
        42, 0,
        43, 0,
        44, 0,
        45, 0,
        -2, 64,
-1, 178,
        14, 0,
        24, 0,
        39, 0,
        40, 0,
        41, 0,
        42, 0,
        43, 0,
        44, 0,
        45, 0,
        -2, 65,
-1, 179,
        14, 0,
        24, 0,
        39, 0,
        40, 0,
        41, 0,
        42, 0,
        43, 0,
        44, 0,
        45, 0,
        -2, 66,
-1, 180,
        14, 0,
        24, 0,
        39, 0,
        40, 0,
        41, 0,
        42, 0,
        43, 0,
        44, 0,
        45, 0,
        -2, 67,
-1, 181,
        14, 0,
        24, 0,
        39, 0,
        40, 0,
        41, 0,
        42, 0,
        43, 0,
        44, 0,
        45, 0,
        -2, 68,
-1, 183,
        14, 0,
        24, 0,
        39, 0,
        40, 0,
        41, 0,
        42, 0,
        43, 0,
        44, 0,
        45, 0,
        -2, 70,
-1, 289,
        24, 0,
        45, 0,
        -2, 53,
-1, 334,
        17, 30,
        -2, 0,
-1, 356,
        17, 30,
        -2, 0,
};
#define YYNPROD 185
#define YYPRIVATE 57344
#define YYLAST  4424
short   yyact[] =
{
  17, 140,  66, 228, 200, 105, 107,  62, 277,  10,
 125,  24,  11,  43, 112, 135, 100, 308,  51, 141,
  79,  80, 243, 185, 100, 215, 100, 100, 100, 102,
 249, 100, 122, 123, 124, 103, 104, 253,  54, 107,
  43, 223,  82, 314, 253,  83,  43, 252, 113, 206,
 244,   9, 113, 278,  42,  22,  44, 353,  11, 143,
 253, 147, 103, 104, 352, 150, 151, 153, 154, 103,
 104, 351, 136, 163, 276, 100, 190, 190, 321,  23,
  43,  42,  22,  44, 156, 316, 258,  42, 136,  44,
 134, 190, 108, 109, 110, 111,  43, 336,  85, 112,
 100, 149, 133, 320, 269, 182,  23, 100, 100, 100,
 100, 100, 100, 100, 318, 137,  86, 232, 168, 169,
 142,  42,  22,  44, 203, 205, 100, 110, 111, 190,
 190, 275, 112, 137, 211, 324, 278,  42, 310,  44,
 332, 233, 212, 190, 234, 217,  23, 100, 221, 284,
 190, 190, 190, 100, 226, 190, 265, 260, 219, 190,
 230, 259, 136, 100,   6, 188,  48, 236, 170,   7,
 167,  49, 100, 158, 100, 157, 100, 100, 100, 100,
 100, 100, 100,   3, 100,  21, 251, 100, 100, 131,
 130,   6, 129, 128, 100, 127,   7, 126, 120, 119,
  52,  16, 100,  16, 312, 137, 274, 100, 218, 100,
 100, 100, 144,   4, 100, 100, 155, 271, 145, 132,
 317, 348,  50,  55, 362, 270, 365, 162,   1,  72,
  40, 224, 100, 100, 100, 100, 163,   5, 163, 163,
 163, 163,  20,  58, 163,  67, 100, 222,  61, 292,
  60,  19, 288, 248, 293, 100, 100, 294,  96, 166,
  81, 238,   8, 159, 160,   2, 114,   0, 116, 117,
 118,   0,   0, 121, 300, 301,   0, 115, 139, 239,
 184,   0,   0, 100,   0, 148, 100, 100, 100, 313,
 100, 309, 100,   0,   0, 136,   0, 100,   0, 100,
 100,   0,   0, 100,   0, 100, 100, 100,   0, 307,
   0,   0,   0,   0,   0, 165, 163,  96,   0,   0,
 335,   0,   0,   0, 164, 339, 334, 342,   0, 343,
 136,   0,   0,   0, 100, 341,   0, 230, 347, 100,
   0, 100, 116, 229,   0, 100, 100,   0,   0,  96,
 194, 195, 196, 197, 198, 199, 357, 360, 139, 230,
 361,   0, 356,   0,   0,   0, 136,   0, 207, 220,
 363,   0,   0, 139,   0,   0,   0,   0, 349, 227,
   0, 238,   0,   0, 238, 238, 238,   0, 238,  96,
 238,   0, 139, 139,   0,  96,   0,   0,   0, 239,
   0, 257, 239, 239, 239, 242, 239,   0, 239,   0,
   0,   0,   0,   0,  96,   0,  96,   0,  96,  96,
  96,  96,  96,  96,  96,   0,  96, 290,   0,  96,
  96,   0,   0,   0,   0,   0, 256, 238, 297,   0,
   0,   0,   0,   0,  96,   0, 273,   0,   0, 261,
 303,  96,  96,  96,   0, 239,  96,  96,   0,   0,
   0,   0, 311, 282,   0, 285, 286, 287, 289,   0,
   0, 291,   0,   0,  96, 279, 280, 281, 165,   0,
 165, 165, 165, 165,   0,   0, 165, 164,  96, 164,
 164, 164, 164,   0,   0, 164,   0,  96,  96,   0,
 337,   0,   0,   0,   0,  74,   0, 189, 191,   0,
  15,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0, 106, 242,   0,   0, 242, 242,
 242, 139, 242,   0, 242,   0,   0,   0,   0,  96,
   0,  96,  96, 338,   0,  96,   0,  96,  96,  96,
   0,   0,   0,   0,   0,   0,  15,   0, 165,   0,
   0,   0, 235,   0,   0, 146,   0, 164,   0,   0,
   0, 152, 358, 139,   0,   0,  96,   0,   0,   0,
   0, 242,   0,  96,   0,   0, 364,  96,  96, 366,
 171, 173, 175, 176, 177, 178, 179, 180, 181, 183,
   0,   0,   0,   0,   0,   0,   0, 186, 187,   0,
 262, 263, 264,   0, 266, 267, 268,   0,   0, 201,
   0,   0,   0,   0,   0, 201, 201,   0,   0,   0,
   0,   0, 208, 209, 210, 201, 213, 214, 189,   0,
   0,  15,   0,   0,   0,   0, 190,   0, 101,  95,
 295,   0, 330,   0,   0,   0,   0,   0,   0,  93,
   0,   0,   0,   0, 231,   0,   0, 106,   0,   0,
   0,  98,  97, 245,  87,  88,  89,  90,  91,  92,
  94,  43,  28,   0,  30,   0,   0,   0,   0,   0,
   0,  46,  47,   0,  34, 254,  35, 255,   0,   0,
   0,   0,   0,   0,   0, 323, 326, 328, 329,   0,
   0,   0,   0,   0,  38, 189,   0,   0,   0,   0,
   0,   0,  42,  22,  44,  29,  36,  39,   0,  84,
   0,  33,   0,  37,  41,   0,   0,  27,  26,   0,
   0,  99,   0,   0,   0,  31,  32,  23,   0,   0,
 201,   0,   0,   0,   0,   0, 296,   0,   0,   0,
   0,   0,   0, 298,   0,   0,   0,   0, 299, 302,
   0,   0, 304, 305, 306,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0, 106,
   0,   0,   0,   0,   0,  75,   0,   0,   0,   0,
   0,   0,   0,   0,   0,  16,  18,   0,  68,  45,
   0, 359,   0,   0,   0, 333,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0, 340,
   0,   0,   0,   0,   0, 344,   0,   0, 345,  43,
  28,  56,  30,  57,  73,  69,  59,  70,   0,  46,
  47,  71,  34,   0,  35,  63,  64,   0,   0,   0,
   0,   0,   0,   0,   0,  75,   0,   0,   0,   0,
  77,  78,  38,  53,   0,  16,  18,   0,  68,  45,
  42,  22,  44,  29,  36,  39,   0,   0,   0,  33,
  65,  37,  41,  76,   0,  27,  26,   0,   0,  25,
   0,   0,   0,  31,  32,  23,   0,   0,   0,  43,
  28,  56,  30,  57,  73,  69,  59,  70,   0,  46,
  47,  71,  34,   0,  35,  63,  64,   0,   0,   0,
   0,   0,   0,  75,   0,   0,   0,   0,   0,   0,
  77,  78,  38,  16,  18,   0,  68,  45,   0, 331,
  42,  22,  44,  29,  36,  39,   0,   0,   0,  33,
  65,  37,  41,  76,   0,  27,  26,   0,   0,  25,
   0,   0,   0,  31,  32,  23,   0,  43,  28,  56,
  30,  57,  73,  69,  59,  70,   0,  46,  47,  71,
  34,   0,  35,  63,  64,   0,   0,   0,   0,   0,
   0,   0,   0,  75,   0,   0,   0,   0,  77,  78,
  38, 272,   0,  16,  18,   0,  68,  45,  42,  22,
  44,  29,  36,  39,   0,   0,   0,  33,  65,  37,
  41,  76,   0,  27,  26,   0,   0,  25,   0,   0,
   0,  31,  32,  23,   0,   0,   0,  43,  28,  56,
  30,  57,  73,  69,  59,  70,   0,  46,  47,  71,
  34,   0,  35,  63,  64,   0,   0,   0,   0,   0,
   0,  75,   0,   0,   0,   0,   0,   0,  77,  78,
  38,  16,  18,   0,  68,  45,   0, 247,  42,  22,
  44,  29,  36,  39,   0,   0,   0,  33,  65,  37,
  41,  76,   0,  27,  26,   0,   0,  25,   0,   0,
   0,  31,  32,  23,   0,  43,  28,  56,  30,  57,
  73,  69,  59,  70,   0,  46,  47,  71,  34,   0,
  35,  63,  64,   0,   0,   0,   0,   0,   0,  75,
   0,   0,   0,   0,   0,   0,  77,  78,  38,  16,
  18,   0,  68,  45,   0, 246,  42,  22,  44,  29,
  36,  39,   0,   0,   0,  33,  65,  37,  41,  76,
   0,  27,  26,   0,   0,  25,   0,   0,   0,  31,
  32,  23,   0,  43,  28,  56,  30,  57,  73,  69,
  59,  70,   0,  46,  47,  71,  34,   0,  35,  63,
  64,   0,   0,   0,   0,   0,   0,  75,   0,   0,
   0,   0,   0,   0,  77,  78,  38,  16,  18,   0,
  68,  45,   0, 225,  42,  22,  44,  29,  36,  39,
   0,   0,   0,  33,  65,  37,  41,  76,   0,  27,
  26,   0,   0,  25,   0,   0,   0,  31,  32,  23,
   0,  43,  28,  56,  30,  57,  73,  69,  59,  70,
   0,  46,  47,  71,  34,   0,  35,  63,  64,   0,
   0,   0,   0,   0,   0,  75,   0,   0,   0,   0,
   0,   0,  77,  78,  38,  16,  18,   0,  68,  45,
   0, 216,  42,  22,  44,  29,  36,  39,   0,   0,
   0,  33,  65,  37,  41,  76,   0,  27,  26,   0,
   0,  25,   0,   0,   0,  31,  32,  23,   0,  43,
  28,  56,  30,  57,  73,  69,  59,  70,   0,  46,
  47,  71,  34,   0,  35,  63,  64,   0,   0,   0,
   0,   0,   0,  75,   0,   0,   0,   0,   0,   0,
  77,  78,  38,  16,  18,   0,  68,  45,   0, 138,
  42,  22,  44,  29,  36,  39,   0,   0,   0,  33,
  65,  37,  41,  76,   0,  27,  26,   0,   0,  25,
   0,   0,   0,  31,  32,  23,   0,  43,  28,  56,
  30,  57,  73,  69,  59,  70,   0,  46,  47,  71,
  34,   0,  35,  63,  64,   0,   0,   0,   0,   0,
   0,  75,   0,   0,   0,   0,   0,   0,  77,  78,
  38,  16,  18,   0,  68,  45,   0,   0,  42,  22,
  44,  29,  36,  39,   0,   0,   0,  33,  65,  37,
  41,  76,   0,  27,  26,   0,   0,  25,   0,   0,
   0,  31,  32,  23,   0,  43,  28,  56,  30,  57,
  73,  69,  59,  70,   0,  46,  47,  71,  34,   0,
  35,  63,  64,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,  77,  78,  38,   0,
   0,   0,   0,   0,   0,   0,  42,  22,  44,  29,
  36,  39,   0,   0,   0,  33,  65,  37,  41,  76,
   0,  27,  26,   0,   0,  25,   0,   0,   0,  31,
  32,  23, 190,   0, 101,  95,   0,   0, 327,   0,
   0,   0,   0,   0,   0,  93,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,  98,  97,   0,
  87,  88,  89,  90,  91,  92,  94,  43,  28,   0,
  30,   0,   0,   0,   0,   0,   0,  46,  47,   0,
  34,   0,  35,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
  38,   0,   0,   0,   0,   0,   0,   0,  42,  22,
  44,  29,  36,  39,   0,  84,   0,  33,   0,  37,
  41,   0,   0,  27,  26,   0,   0,  99,   0,   0,
   0,  31,  32,  23, 190,   0, 101,  95,   0,   0,
 325,   0,   0,   0,   0,   0,   0,  93,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,  98,
  97,   0,  87,  88,  89,  90,  91,  92,  94,  43,
  28,   0,  30,   0,   0,   0,   0,   0,   0,  46,
  47,   0,  34,   0,  35,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,  38,   0,   0,   0,   0,   0,   0,   0,
  42,  22,  44,  29,  36,  39,   0,  84,   0,  33,
   0,  37,  41,   0,   0,  27,  26, 137,   0,  99,
 101,  95, 142,  31,  32,  23,   0,   0,   0,   0,
   0,  93,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,  98,  97,   0,  87,  88,  89,  90,
  91,  92,  94,  43,  28,   0,  30,   0,   0,   0,
   0,   0,   0,  46,  47,   0,  34,   0,  35,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,  38,   0,   0,   0,
   0,   0,   0,   0,  42,  22,  44,  29,  36,  39,
   0,  84,   0,  33,   0,  37,  41,   0,   0,  27,
  26,   0,   0,  99,   0,   0,   0,  31,  32,  23,
 190,   0, 101,  95,   0,   0, 192,   0,   0,   0,
   0,   0,   0,  93,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,  98,  97,   0,  87,  88,
  89,  90,  91,  92,  94,  43,  28,   0,  30,   0,
   0,   0,   0,   0,   0,  46,  47,   0,  34,   0,
  35,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,  38,   0,
   0,   0,   0,   0,   0,   0,  42,  22,  44,  29,
  36,  39,   0,  84,   0,  33,   0,  37,  41,   0,
   0,  27,  26, 101,  95,  99,   0, 355,   0,  31,
  32,  23,   0,   0,  93,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,  98,  97,   0,  87,
  88,  89,  90,  91,  92,  94,  43,  28,   0,  30,
   0,   0,   0,   0,   0,   0,  46,  47,   0,  34,
   0,  35,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,  38,
   0,   0,   0,   0,   0,   0,   0,  42,  22,  44,
  29,  36,  39,   0,  84,   0,  33,   0,  37,  41,
   0,   0,  27,  26, 101,  95,  99,   0, 354,   0,
  31,  32,  23,   0,   0,  93,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,  98,  97,   0,
  87,  88,  89,  90,  91,  92,  94,  43,  28,   0,
  30,   0,   0,   0,   0,   0,   0,  46,  47,   0,
  34,   0,  35,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
  38,   0,   0,   0,   0,   0,   0,   0,  42,  22,
  44,  29,  36,  39,   0,  84,   0,  33,   0,  37,
  41,   0,   0,  27,  26, 101,  95,  99,   0, 350,
   0,  31,  32,  23,   0,   0,  93,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,  98,  97,
   0,  87,  88,  89,  90,  91,  92,  94,  43,  28,
   0,  30,   0,   0,   0,   0,   0,   0,  46,  47,
   0,  34,   0,  35,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,  38,   0,   0,   0,   0,   0,   0,   0,  42,
  22,  44,  29,  36,  39,   0,  84,   0,  33,   0,
  37,  41,   0,   0,  27,  26,   0,   0,  99, 101,
  95, 346,  31,  32,  23,   0,   0,   0,   0,   0,
  93,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,  98,  97,   0,  87,  88,  89,  90,  91,
  92,  94,  43,  28,   0,  30,   0,   0,   0,   0,
   0,   0,  46,  47,   0,  34,   0,  35,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,  38,   0,   0,   0,   0,
   0,   0,   0,  42,  22,  44,  29,  36,  39,   0,
  84,   0,  33,   0,  37,  41,   0,   0,  27,  26,
 101,  95,  99,   0, 322,   0,  31,  32,  23,   0,
   0,  93,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,  98,  97,   0,  87,  88,  89,  90,
  91,  92,  94,  43,  28,   0,  30,   0,   0,   0,
   0,   0,   0,  46,  47,   0,  34,   0,  35,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,  38,   0,   0,   0,
   0,   0,   0,   0,  42,  22,  44,  29,  36,  39,
   0,  84,   0,  33,   0,  37,  41,   0,   0,  27,
  26, 101,  95,  99,   0, 319,   0,  31,  32,  23,
   0,   0,  93,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,  98,  97,   0,  87,  88,  89,
  90,  91,  92,  94,  43,  28,   0,  30,   0,   0,
   0,   0,   0,   0,  46,  47,   0,  34,   0,  35,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,  38,   0,   0,
   0,   0,   0,   0,   0,  42,  22,  44,  29,  36,
  39,   0,  84,   0,  33,   0,  37,  41,   0,   0,
  27,  26, 101,  95,  99,   0, 278,   0,  31,  32,
  23,   0,   0,  93,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,  98,  97,   0,  87,  88,
  89,  90,  91,  92,  94,  43,  28,   0,  30,   0,
   0,   0,   0,   0,   0,  46,  47,   0,  34,   0,
  35,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,  38,   0,
   0,   0,   0,   0,   0,   0,  42,  22,  44,  29,
  36,  39,   0,  84,   0,  33,   0,  37,  41,   0,
   0,  27,  26,   0, 190,  99, 101,  95,   0,  31,
  32,  23,   0,   0,   0,   0,   0,  93,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,  98,
  97,   0,  87,  88,  89,  90,  91,  92,  94,  43,
  28,   0,  30,   0,   0,   0,   0,   0,   0,  46,
  47,   0,  34,   0,  35,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,  38,   0,   0,   0,   0,   0,   0,   0,
  42,  22,  44,  29,  36,  39,   0,  84,   0,  33,
   0,  37,  41,   0,   0,  27,  26, 101,  95,  99,
   0, 192,   0,  31,  32,  23,   0,   0,  93,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
  98,  97,   0,  87,  88,  89,  90,  91,  92,  94,
  43,  28,   0,  30,   0,   0,   0,   0,   0,   0,
  46,  47,   0,  34,   0,  35,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,  38,   0,   0,   0,   0,   0,   0,
   0,  42,  22,  44,  29,  36,  39,   0,  84,   0,
  33,   0,  37,  41,   0,   0,  27,  26, 101,  95,
  99,   0,   0,   0,  31,  32,  23,   0,   0,  93,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,  98,  97,   0,  87,  88,  89,  90,  91,  92,
  94,  43,  28,   0,  30,   0,   0,   0,   0,   0,
   0,  46,  47,   0,  34,   0,  35,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,  38,   0,   0,   0,   0,   0,
   0,   0,  42,  22,  44,  29,  36,  39,   0,  84,
 250,  33,   0,  37,  41,   0,   0,  27,  26, 101,
  95,  99,   0,   0,   0,  31,  32,  23,   0,   0,
  93,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,  98,  97,   0,  87,  88,  89,  90,  91,
  92,  94,  43,  28,   0,  30,   0,   0,   0,   0,
   0,   0,  46,  47,   0,  34,   0,  35,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,  38,   0,   0,   0,   0,
   0,   0,   0,  42,  22,  44,  29,  36,  39,   0,
  84,   0,  33,   0,  37,  41,   0,   0,  27,  26,
 101,  95,  99,   0,   0,   0,  31,  32,  23,   0,
   0,  93,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,  98,   0,   0,  87,  88,  89,  90,
  91,  92,  94,  43,  28,   0,  30,   0,   0,   0,
   0,   0,   0,  46,  47,   0,  34,   0,  35,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,  38,   0,   0,   0,
   0,   0,   0,   0,  42,  22,  44,  29,  36,  39,
 101,  95,   0,  33,   0,  37,  41,   0,   0,  27,
  26,  93,   0,  99,   0,   0,   0,  31,  32,  23,
   0,   0,   0,   0,   0,   0,  87,  88,  89,  90,
  91,  92,  94,  43,  28,   0,  30,   0,   0,   0,
   0,   0,   0,  46,  47,   0,  34,   0,  35,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,  38,   0,   0,   0,
   0, 101,   0,   0,  42,  22,  44,  29,  36,  39,
   0,   0, 240,  33,   0,  37,  41,   0,   0,  27,
  26,   0,   0,  99,  98,  97,   0,  31,  32,  23,
   0,   0,   0, 241,  43,  28,   0,  30,   0,   0,
   0,   0,   0,   0,  46,  47,   0,  34,  75,  35,
   0,   0,   0,   0,   0,   0,   0,   0,   0,  18,
   0,   0,  45,   0,   0,   0,   0,  38,   0,   0,
   0,   0,   0,   0,   0,  42,  22,  44,  29,  36,
  39,   0, 237, 315,  33,   0,  37,  41,   0,   0,
  27,  26,  43,  28,  99,  30,   0,  73,  31,  32,
  23,   0,  46,  47,   0,  34,   0,  35,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,  77,  78,  38,   0,   0,   0,   0,
 101,   0,   0,  42,  22,  44,  29,  36,  39,   0,
   0, 240,  33,   0,  37,  41,   0,   0,  27,  26,
   0,   0,  25,  98,  97,   0,  31,  32,  23,   0,
   0,   0, 241,  43,  28,   0,  30,   0,   0,   0,
   0,   0,   0,  46,  47,   0,  34,   0,  35,   0,
   0,   0,   0,  12,  13,   0,   0,  16,  18,   0,
   0,  45,   0,   0,   0,   0,  38,   0,   0,   0,
   0,   0,   0,   0,  42,  22,  44,  29,  36,  39,
   0, 237,   0,  33,   0,  37,  41,   0,   0,  27,
  26,  43,  28,  99,  30,   0,   0,  31,  32,  23,
  14,  46,  47,   0,  34,   0,  35,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,  38,   0,   0, 101,   0,   0,
   0,   0,  42,  22,  44,  29,  36,  39, 240,   0,
   0,  33,   0,  37,  41,   0,   0,  27,  26,   0,
  98,  25,   0,   0,   0,  31,  32,  23,   0, 241,
  43,  28,   0,  30,   0,   0,   0,   0,   0,   0,
  46,  47,   0,  34,   0,  35,   0,   0,   0,   0,
   0,   0, 137,   0,   0,  18,   0, 142,  45,   0,
   0,   0,   0,  38,   0,   0,   0,   0,   0,   0,
   0,  42,  22,  44,  29,  36,  39,   0,   0,   0,
  33,   0,  37,  41,   0,   0,  27,  26,  43,  28,
  99,  30,   0,   0,  31,  32,  23,   0,  46,  47,
   0,  34,   0,  35,   0,   0,   0,   0,   0,   0,
 253,   0,   0,  18,   0,   0,  45,   0,   0,   0,
   0,  38,   0,   0,   0,   0,   0,   0,   0,  42,
  22,  44,  29,  36,  39,   0,   0,   0,  33,   0,
  37,  41,   0,   0,  27,  26,  43,  28,  25,  30,
   0,   0,  31,  32,  23,   0,  46,  47,   0,  34,
   0,  35,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,  38,
   0,   0, 101,   0,   0,   0,   0,  42,  22,  44,
  29,  36,  39, 240,   0,   0,  33,   0,  37,  41,
   0,   0,  27,  26,   0,   0,  25,   0,   0,   0,
  31,  32,  23,   0, 241,  43,  28,   0,  30,   0,
   0,   0,   0,   0,   0,  46,  47,   0,  34,   0,
  35,   0,   0,   0,   0,   0,   0, 174,   0,   0,
 283,   0,   0,  45,   0,   0,   0,   0,  38,   0,
   0,   0,   0,   0,   0,   0,  42,  22,  44,  29,
  36,  39,   0,   0,   0,  33,   0,  37,  41,   0,
   0,  27,  26,  43,  28,  99,  30,   0,   0,  31,
  32,  23,   0,  46,  47,   0,  34,   0,  35,   0,
   0,   0,   0,   0,   0, 172,   0,   0, 283,   0,
   0,  45,   0,   0,   0,   0,  38,   0,   0,   0,
   0,   0,   0,   0,  42,  22,  44,  29,  36,  39,
   0,   0,   0,  33,   0,  37,  41,   0,   0,  27,
  26,  43,  28,  25,  30,   0,   0,  31,  32,  23,
   0,  46,  47,   0,  34,   0,  35,   0,   0,   0,
   0,   0,   0, 253,   0,   0, 283,   0,   0,  45,
   0,   0,   0,   0,  38,   0,   0,   0,   0,   0,
   0,   0,  42,  22,  44,  29,  36,  39,   0,   0,
   0,  33,   0,  37,  41,   0,   0,  27,  26,  43,
  28,  25,  30,   0,   0,  31,  32,  23,   0,  46,
  47,   0,  34,   0,  35,   0,   0,   0,   0,   0,
   0,   0,   0,   0,  18,   0,   0,  45, 204,   0,
   0,   0,  38,   0,   0,   0,   0,   0,   0,   0,
  42,  22,  44,  29,  36,  39,   0,   0,   0,  33,
   0,  37,  41,   0,   0,  27,  26,  43,  28,  25,
  30,   0,   0,  31,  32,  23,   0,  46,  47,   0,
  34,   0,  35,   0,   0,   0,   0,   0,   0,   0,
   0,   0,  18,   0,   0,  45, 202,   0,   0,   0,
  38,   0,   0,   0,   0,   0,   0,   0,  42,  22,
  44,  29,  36,  39,   0,   0,   0,  33,   0,  37,
  41,   0,   0,  27,  26,  43,  28,  25,  30,   0,
   0,  31,  32,  23,   0,  46,  47,   0,  34,   0,
  35,   0,   0,   0,   0,   0,   0, 174,   0,   0,
  18,   0,   0,  45,   0,   0,   0,   0,  38,   0,
   0,   0,   0,   0,   0,   0,  42,  22,  44,  29,
  36,  39,   0,   0,   0,  33,   0,  37,  41,   0,
   0,  27,  26,  43,  28,  25,  30,   0,   0,  31,
  32,  23,   0,  46,  47,   0,  34,   0,  35,   0,
   0,   0,   0,   0,   0, 172,   0,   0,  18,   0,
   0,  45,   0,   0,   0,   0,  38,   0,   0,   0,
   0,   0,   0,   0,  42,  22,  44,  29,  36,  39,
   0,   0,   0,  33,   0,  37,  41,   0,   0,  27,
  26,  43,  28,  25,  30,   0,   0,  31,  32,  23,
   0,  46,  47,   0,  34,   0,  35,   0,   0,   0,
   0,   0,   0,   0,   0,   0,  18,   0,   0,  45,
   0,   0,   0,   0,  38,   0,   0,   0,   0,   0,
   0,   0,  42,  22,  44,  29,  36,  39,   0,   0,
   0,  33,   0,  37,  41,   0,   0,  27,  26,  43,
  28,  25,  30,   0,   0,  31,  32,  23,   0,  46,
  47,   0,  34,   0,  35,   0,   0,   0,   0,   0,
   0,   0,   0,   0, 283,   0,   0,  45,   0,   0,
   0,   0,  38,   0,   0,   0,   0,   0,   0,   0,
  42,  22,  44,  29,  36,  39,   0,   0,   0,  33,
   0,  37,  41,   0,   0,  27,  26,  43,  28,  25,
  30,   0,   0,  31,  32,  23,   0,  46,  47,   0,
  34,   0,  35,   0,   0,   0,   0,   0,   0,   0,
   0,   0, 101,   0,   0,   0,   0,   0,   0,   0,
  38,   0,   0,   0,   0,   0,   0,   0,  42,  22,
  44,  29,  36,  39,   0,   0,   0,  33,   0,  37,
  41,   0,   0,  27,  26,  43,  28,  25,  30,   0,
   0,  31,  32,  23,   0,  46,  47,   0,  34,   0,
  35,   0,   0,   0,   0,   0,   0,   0,   0, 193,
 161,   0,   0,  45,   0,   0,   0,   0,  38,   0,
   0,   0,   0,   0,   0,   0,  42,  22,  44,  29,
  36,  39,   0,   0,   0,  33,   0,  37,  41,   0,
   0,  27,  26,  43,  28,  99,  30,   0,   0,  31,
  32,  23,   0,  46,  47,   0,  34,   0,  35,   0,
   0,   0,   0,   0,   0,   0,   0,   0, 101,   0,
   0,  45,   0,   0,   0,   0,  38,   0,   0,   0,
   0,   0,   0,   0,  42,  22,  44,  29,  36,  39,
   0,   0,   0,  33,   0,  37,  41,   0,   0,  27,
  26,  43,  28,  25,  30,   0,   0,  31,  32,  23,
   0,  46,  47,   0,  34,   0,  35,   0,   0,   0,
   0,   0,   0,   0,   0,   0, 101,   0,   0,   0,
   0,   0,   0,   0,  38,   0,   0,   0,   0,   0,
   0,   0,  42,  22,  44,  29,  36,  39,   0,   0,
   0,  33,   0,  37,  41,   0,   0,  27,  26,  43,
  28,  25,  30,   0,   0,  31,  32,  23,   0,  46,
  47,   0,  34,   0,  35,   0,   0,   0,   0,   0,
   0,   0,   0,   0, 101,   0,   0,   0,   0,   0,
   0,   0,  38,   0,   0,   0,   0,   0,   0,   0,
  42,  22,  44,  29,  36,  39,   0,   0,   0,  33,
   0,  37,  41,   0,   0,  27,  26,  43,  28,  99,
  30,   0,   0,  31,  32,  23,   0,  46,  47,   0,
  34,   0,  35,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
  38,   0,   0,   0,   0,   0,   0,   0,  42,  22,
  44,  29,  36,  39,   0,   0,   0,   0,   0,  37,
  41,   0,   0,  27,  26,   0,   0,  99,   0,   0,
   0,  31,  32,  23
};
short   yypact[] =
{
 181,-1000,-1000,-1000,3245, 156,-1000,-1000, 154,-1000,
 189, 863, 191, 191, -45,2816,-1000, -41,3963,-1000,
 -10,  33,-1000,4253,-1000,4195,4253,4253, 186, 185,
4253,  -6,  -6, -33, 184, 182,-1000, 180, 179,-1000,
 177, 176,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
3245, 863, 195,-1000,1341,-1000, 105, 105, 202,3372,
-1000,1409, 863, 105, 105,3372, 105,-1000, 195,-1000,
 162, 160,4137,   0,2816,-1000, 157,-1000,-1000, 863,
 863, 155,-1000,-1000,3963,3905,3847,3963,3963,3963,
3963,3963,3963,3963,   0, -73, -10,-1000,-1000,4253,
 -75,3963,3963,-1000,-1000, 148,1809,4079,4253,4253,
4253,4253,4253,3963,-1000,-1000, -95, -95, -95,3789,
3731, -10,-1000,-1000,   6,4253,3963,3963,3963,3963,
3963,3963, -68,-1000,1273,3963, 198,-1000,-1000,-1000,
-1000, 198, 195,-1000,-1000,1409,1707,-1000, -39,1205,
-1000,-1000,1707,-1000,-1000,1409,-1000,3116,3963, 103,
 141,3963,3187, -48,-1000, -10,  31,3963,1137,1069,
 -57,2725,-1000,2907,-1000,2987,4311,4311,4311,4311,
4311,4311,-1000,4311,-1000,  -6,2634,2816,   2,3430,
-1000,3430,-1000,4253, -95,  23,  23, -95, -95, -95,
  66,2816,-1000, 144,-1000, 140,4253, -10,2543,2543,
2543, 139, 141,2543,2543,  88,-1000, 191,-1000,-1000,
-1000,-1000,1001,-1000, 196,-1000,-1000,-1000, 116,  29,
-1000,2449,4253,4253,4253,3673, 132,4021,3615,3557,
4021,   0, -10,4021,3963,2449,-1000,-1000, 119,-1000,
3963,-1000,   0,-1000,2816,2816, -10,3430,-1000,-1000,
-1000, -10,3430,3430,  50,-1000,3430,3430,3430,-1000,
 863, -83,-1000,-1000,-1000, 123,   0, 194,-1000, -10,
 -10, -10,3187,3963,  -2,3058,3314,3499,-1000,4311,
-1000,3187,  65, 194, 194,  27,2816,-1000,2816,2358,
  86,  61,2267, 118,1613,1511, 635, 931, 127,3963,
 195,  36,-1000,  80,   0,4021,-1000, 191,-1000,-1000,
-1000,-1000,-1000,3430,-1000,-1000,  34,-1000,  34,3430,
-1000,-1000,3963,2176,3116, 194,  -2,-1000,3187, 863,
2082,  54,  47,  40,1991,1900, 195,  36,1409, 793,
-1000,-1000,-1000,-1000,-1000, 105,3116, 194,-1000,-1000,
-1000,  36,1409, 194,-1000,1409,-1000
};
short   yypgo[] =
{
   0, 265, 505, 227,   5, 264,   4, 263, 242, 251,
   9,  51, 262,  11,   2,   3, 223,  38,   0, 185,
 260, 253, 250, 248, 247, 245, 243,   1, 237, 213,
   7, 231,   8, 401,  19,  15, 116,  98, 230, 229,
 228, 226, 224, 221, 220, 219, 218, 217, 216
};
short   yyr1[] =
{
   0,  40,  40,  36,  36,  37,  37,  33,  33,  26,
  26,  24,  24,  41,  22,  42,  22,  43,  22,  20,
  20,  23,  30,  30,  34,  34,  35,  35,  29,  29,
  15,  15,   1,   1,  10,  11,  11,  11,  11,  11,
  11,  11,  44,  11,  12,  12,   6,   6,   3,   3,
   3,   3,   3,   3,   3,   3,   3,   3,   3,   2,
   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
   2,   2,   2,   2,   2,   2,   2,   2,   4,   4,
   5,   5,   7,   7,   7,  39,  39,  28,  28,  28,
  28,  31,  31,   9,   9,  45,  13,  32,  32,  14,
  14,  14,  14,  14,  14,  14,  14,  27,  27,  16,
  16,  46,  47,  16,  16,  16,  16,  16,  16,  16,
  16,  16,  16,  16,  16,  48,  16,  16,  17,  17,
  38,  38,   8,   8,   8,   8,   8,   8,   8,   8,
   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,
   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,
   8,   8,   8,   8,   8,   8,   8,   8,   8,   8,
   8,   8,   8,   8,  18,  18,  18,  18,  21,  21,
  21,  19,  19,  19,  25
};
short   yyr2[] =
{
   0,   1,   1,   1,   2,   1,   2,   1,   2,   1,
   2,   1,   2,   0,  12,   0,  10,   0,   8,   1,
   1,   4,   1,   2,   1,   2,   0,   1,   0,   1,
   0,   1,   1,   3,   1,   1,   4,   4,   7,   3,
   4,   4,   0,   9,   1,   3,   1,   3,   3,   5,
   3,   3,   3,   3,   3,   5,   2,   1,   1,   3,
   5,   3,   3,   3,   3,   3,   3,   3,   3,   3,
   3,   3,   5,   4,   3,   2,   1,   1,   3,   3,
   1,   3,   0,   1,   3,   1,   1,   1,   1,   2,
   2,   1,   2,   1,   2,   0,   4,   1,   2,   4,
   4,   4,   2,   5,   2,   1,   1,   1,   2,   2,
   2,   0,   0,   9,   3,   2,   1,   4,   2,   3,
   2,   2,   3,   2,   2,   0,   3,   2,   1,   2,
   1,   1,   4,   3,   3,   3,   3,   3,   3,   2,
   2,   2,   3,   4,   1,   3,   4,   2,   2,   2,
   2,   2,   4,   3,   2,   1,   6,   6,   3,   6,
   6,   1,   8,   8,   6,   4,   1,   6,   6,   8,
   8,   8,   6,   1,   1,   4,   1,   2,   0,   1,
   3,   1,   1,   1,   4
};
short   yychk[] =
{
-1000, -40,  -1,   2, -29, -28,  10,  15, -12, -11,
 -10, -30,   8,   9,  55,  -2,  12, -18,  13,  -9,
  -8, -19,  88, 112, -13, 106, 103, 102,  47,  90,
  49, 110, 111,  96,  59,  61,  91,  98,  79,  92,
 -38,  99,  87,  46,  89,  16,  56,  57,  10,  15,
 -29, -30,  11,  10, -17, -16,  48,  50, -26,  53,
 -22, -23, -30,  62,  63,  97, -14, -25,  15,  52,
  54,  58, -39,  51,  -2,   2, 100,  77,  78, -30,
 -30, -20,  87,  90,  94, -37, -36,  39,  40,  41,
  42,  43,  44,  24,  45,  14,  -8,  37,  36, 106,
 -18,  13,  70, 110, 111,  -4,  -2,  16, 102, 103,
 104, 105, 109,  19,  -8,  -9,  -8,  -8,  -8,  13,
  13,  -8, -18, -18, -18,  43,  13,  13,  13,  13,
  13,  13, -45, -11, -17, -35, -34,  10,  18, -16,
 -27, -34,  15, -27,  10, -46,  -2, -27, -16, -17,
 -27, -27,  -2, -27, -27, -48, -35,  13,  13,  -7,
  -5,  13,  -3, -18,  -9,  -8, -19,  13, -17, -17,
  13,  -2,  10,  -2,  10,  -2,  -2,  -2,  -2,  -2,
  -2,  -2, -13,  -2, -19,  96,  -2,  -2,  17, -33,
  11, -33,  17,  70,  -8,  -8,  -8,  -8,  -8,  -8,
  -6,  -2,  17,  -6,  17,  -6,  43,  -8,  -2,  -2,
  -2,  -6, -13,  -2,  -2,  93,  18, -10,  10, -35,
 -16, -27, -24,  80, -31,  18, -27, -16, -15, -19,
 -14,  -2,  14,  38,  41, -33,  -4,  94, -37, -36,
  24,  45,  -8,  70,  19,  -2,  18,  18, -21,  87,
  95, -18,  45,  10,  -2,  -2,  -8, -33,  20,  17,
  17,  -8, -33, -33, -33,  17, -33, -33, -33,  16,
 -30, -47,  10, -16,  10,  15,  45, -32,  17,  -8,
  -8,  -8,  -3,  13,  17,  -3,  -3,  -3, -13,  -3,
 -19,  -3,  -6, -32, -32, -33,  -2, -19,  -2,  -2,
 -13, -13,  -2, -19,  -2,  -2,  -2, -17, 100, -35,
  15, -19,  10,  -4,  45,  95,  20, -44,  87,  17,
  17,  17,  17, -33,  17,  17, -33,  17, -33, -33,
  17,  18,  13,  -2, -35, -32,  17, -19,  -3, -30,
  -2, -13, -18, -18,  -2,  -2,  15, -15, -43, -17,
  17,  17,  17,  17,  17,  17, -35, -32, -16,  18,
 -27, -15, -42, -32, -16, -41, -16
};
short   yydef[] =
{
  -2,  -2,   1,   2,  32,  29,  87,  88,  28,  44,
  35,   0,   0,   0,   0,  34,  22, 173,   0,  76,
  77, 174, 176,   0,  93,   0,   0,   0, 144,   0,
   0,   0,   0, 155,   0,   0, 161,   0,   0, 166,
   0,   0, 181, 182, 183,  95, 130, 131,  89,  90,
  33,   0,  26,  23,   0, 128,   0,   0, 111,   0,
 116,   0,   0,   0,   0,   0,   0, 125,  26,   9,
   0,   0,  82,   0, 105, 106,   0,  85,  86,   0,
   0,   0,  19,  20,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,  75,   5,   3,   0,
 173,   0,   0, 150, 151,   0,   0,   0,   0,   0,
   0,   0,   0,   0, 177,  94, 141, 139, 140,   0,
   0, 147, 148, 149, 154,   0,   0,   0,   0,   0,
   0,   0,   0,  45,   0,   0,  27,  24,  39, 129,
 109, 107,  26, 110,  10,   0,   0, 115, 118,   0,
 120, 121,   0, 123, 124,   0, 127,  -2,   0, 102,
  83,   0,  80, 173,  57,  58, 104,   0,   0,   0,
 178,   0,   6,  61,   4,  62,  -2,  -2,  -2,  -2,
  -2,  -2,  69,  -2,  71,  74,   0,  59,   0,   0,
   7,   0, 158,   0, 136, 133, 134, 135, 137, 138,
   0,  46, 142,   0, 145,   0,   0, 153,   0,   0,
   0,   0,  93,   0,   0,   0,  36,  37,  25, 108,
 112, 114,   0,  11, 119,  91, 122, 126,   0, 174,
  31,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,  56,   0,   0,   0,  40,  41,   0, 179,
   0,  73,   0,   8,  79,  78, 132,   0, 175, 143,
 146, 152,   0,   0,   0, 165,   0,   0,   0,  96,
   0,   0,  12, 117,  92,  26,   0,  21,  97,  99,
 100, 101,  81,   0,  84,   0,  50,  51,  52,  -2,
  54,  48,   0, 184,  42,   0,  60,  72,  47,   0,
  93,  93,   0,   0,   0,   0,   0,   0,   0,   0,
  26,   0,  98,   0,   0,   0, 103,   0, 180, 156,
 157, 159, 160,   0, 164, 167,   0, 168,   0,   0,
 172,  38,   0,   0,  -2,  17,   0,  55,  49,   0,
   0,  93,   0,   0,   0,   0,  26,   0,   0,   0,
 162, 163, 169, 170, 171,   0,  -2,  15,  18,  43,
 113,   0,   0,  13,  16,   0,  14
};
short   yytok1[] =
{
   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0, 105,   0,   0,
  13,  17, 104, 102,  11, 103,   0,  16,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,  95,  15,
   0,   0,   0,  94,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,  19,   0,  20,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
   0,   0,   0,  12,  14,  18
};
short   yytok2[] =
{
   2,   3,   4,   5,   6,   7,   8,   9,  10,  21,
  22,  23,  24,  25,  26,  27,  28,  29,  30,  31,
  32,  33,  34,  35,  36,  37,  38,  39,  40,  41,
  42,  43,  44,  45,  46,  47,  48,  49,  50,  51,
  52,  53,  54,  55,  56,  57,  58,  59,  60,  61,
  62,  63,  64,  65,  66,  67,  68,  69,  70,  71,
  72,  73,  74,  75,  76,  77,  78,  79,  80,  81,
  82,  83,  84,  85,  86,  87,  88,  89,  90,  91,
  92,  93,  96,  97,  98,  99, 100, 101, 106, 107,
 108, 109, 110, 111, 112, 113
};
long    yytok3[] =
{
   0
};
#define YYFLAG          -1000
#define YYERROR         goto yyerrlab
#define YYACCEPT        return(0)
#define YYABORT         return(1)
#define yyclearin       yychar = -1
#define yyerrok         yyerrflag = 0

#ifdef  yydebug
#include        "y.debug"
#else
#define yydebug         0
char*   yytoknames[1];          /* for debugging */
char*   yystates[1];            /* for debugging */
#endif

/*      parser for yacc output  */

int     yynerrs = 0;            /* number of errors */
int     yyerrflag = 0;          /* error recovery flag */

char*
yytokname(int yyc)
{
        static char x[16];

        if(yyc > 0 && yyc <= sizeof(yytoknames)/sizeof(yytoknames[0]))
        if(yytoknames[yyc-1])
                return yytoknames[yyc-1];
        sprintf(x, "<%d>", yyc);
        return x;
}

char*
yystatname(int yys)
{
        static char x[16];

        if(yys >= 0 && yys < sizeof(yystates)/sizeof(yystates[0]))
        if(yystates[yys])
                return yystates[yys];
        sprintf(x, "<%d>\n", yys);
        return x;
}

long
yylex1(void)
{
        long yychar;
        long *t3p;
        int c;

        yychar = yylex();
        if(yychar <= 0) {
                c = yytok1[0];
                goto out;
        }
        if(yychar < sizeof(yytok1)/sizeof(yytok1[0])) {
                c = yytok1[yychar];
                goto out;
        }
        if(yychar >= YYPRIVATE)
                if(yychar < YYPRIVATE+sizeof(yytok2)/sizeof(yytok2[0])) {
                        c = yytok2[yychar-YYPRIVATE];
                        goto out;
                }
        for(t3p=yytok3;; t3p+=2) {
                c = t3p[0];
                if(c == yychar) {
                        c = t3p[1];
                        goto out;
                }
                if(c == 0)
                        break;
        }
        c = 0;

out:
        if(c == 0)
                c = yytok2[1];  /* unknown char */
        if(yydebug >= 3)
                printf("lex %.4lX %s\n", yychar, yytokname(c));
        return c;
}

int
yyparse(void)
{
        struct
        {
                YYSTYPE yyv;
                int     yys;
        } yys[YYMAXDEPTH], *yyp, *yypt;
        short *yyxi;
        int yyj, yym, yystate, yyn, yyg;
        YYSTYPE save1, save2;
        int save3, save4;
        long yychar;

        save1 = yylval;
        save2 = yyval;
        save3 = yynerrs;
        save4 = yyerrflag;

        yystate = 0;
        yychar = -1;
        yynerrs = 0;
        yyerrflag = 0;
        yyp = &yys[-1];
        goto yystack;

ret0:
        yyn = 0;
        goto ret;

ret1:
        yyn = 1;
        goto ret;

ret:
        yylval = save1;
        yyval = save2;
        yynerrs = save3;
        yyerrflag = save4;
        return yyn;

yystack:
        /* put a state and value onto the stack */
        if(yydebug >= 4)
                printf("char %s in %s", yytokname(yychar), yystatname(yystate));

        yyp++;
        if(yyp >= &yys[YYMAXDEPTH]) {
                yyerror("yacc stack overflow");
                goto ret1;
        }
        yyp->yys = yystate;
        yyp->yyv = yyval;

yynewstate:
        yyn = yypact[yystate];
        if(yyn <= YYFLAG)
                goto yydefault; /* simple state */
        if(yychar < 0)
                yychar = yylex1();
        yyn += yychar;
        if(yyn < 0 || yyn >= YYLAST)
                goto yydefault;
        yyn = yyact[yyn];
        if(yychk[yyn] == yychar) { /* valid shift */
                yychar = -1;
                yyval = yylval;
                yystate = yyn;
                if(yyerrflag > 0)
                        yyerrflag--;
                goto yystack;
        }

yydefault:
        /* default state action */
        yyn = yydef[yystate];
        if(yyn == -2) {
                if(yychar < 0)
                        yychar = yylex1();

                /* look through exception table */
                for(yyxi=yyexca;; yyxi+=2)
                        if(yyxi[0] == -1 && yyxi[1] == yystate)
                                break;
                for(yyxi += 2;; yyxi += 2) {
                        yyn = yyxi[0];
                        if(yyn < 0 || yyn == yychar)
                                break;
                }
                yyn = yyxi[1];
                if(yyn < 0)
                        goto ret0;
        }
        if(yyn == 0) {
                /* error ... attempt to resume parsing */
                switch(yyerrflag) {
                case 0:   /* brand new error */
                        yyerror("syntax error");
                        if(yydebug >= 1) {
                                printf("%s", yystatname(yystate));
                                printf("saw %s\n", yytokname(yychar));
                        }
yyerrlab:
                        yynerrs++;

                case 1:
                case 2: /* incompletely recovered error ... try again */
                        yyerrflag = 3;

                        /* find a state where "error" is a legal shift action */
                        while(yyp >= yys) {
                                yyn = yypact[yyp->yys] + YYERRCODE;
                                if(yyn >= 0 && yyn < YYLAST) {
                                        yystate = yyact[yyn];  /* simulate a shift of "error" */
                                        if(yychk[yystate] == YYERRCODE)
                                                goto yystack;
                                }

                                /* the current yyp has no shift onn "error", pop stack */
                                if(yydebug >= 2)
                                        printf("error recovery pops state %d, uncovers %d\n",
                                                yyp->yys, (yyp-1)->yys );
                                yyp--;
                        }
                        /* there is no state on the stack with an error shift ... abort */
                        goto ret1;

                case 3:  /* no shift yet; clobber input char */
                        if(yydebug >= YYEOFCODE)
                                printf("error recovery discards %s\n", yytokname(yychar));
                        if(yychar == YYEOFCODE)
                                goto ret1;
                        yychar = -1;
                        goto yynewstate;   /* try again in the same state */
                }
        }

        /* reduction by production yyn */
        if(yydebug >= 2)
                printf("reduce %d in:\n\t%s", yyn, yystatname(yystate));

        yypt = yyp;
        yyp -= yyr2[yyn];
        yyval = (yyp+1)->yyv;
        yym = yyn;

        /* consult goto table to find next state */
        yyn = yyr1[yyn];
        yyg = yypgo[yyn];
        yyj = yyg + yyp->yys + 1;

        if(yyj >= YYLAST || yychk[yystate=yyact[yyj]] != -yyn)
                yystate = yyact[yyg];
        switch(yym) {
                
case 1:
#line   98      "/n/ports/tools/ota/awk/awkgram.y"
{ if (errorflag==0)
                        winner = (Node *)stat3(PROGRAM, beginloc, yypt[-0].yyv.p, endloc); } break;
case 2:
#line   100     "/n/ports/tools/ota/awk/awkgram.y"
{ yyclearin; bracecheck(); SYNTAX("bailing out"); } break;
case 13:
#line   124     "/n/ports/tools/ota/awk/awkgram.y"
{inloop++;} break;
case 14:
#line   125     "/n/ports/tools/ota/awk/awkgram.y"
{ --inloop; yyval.p = stat4(FOR, yypt[-9].yyv.p, notnull(yypt[-6].yyv.p), yypt[-3].yyv.p, yypt[-0].yyv.p); } break;
case 15:
#line   126     "/n/ports/tools/ota/awk/awkgram.y"
{inloop++;} break;
case 16:
#line   127     "/n/ports/tools/ota/awk/awkgram.y"
{ --inloop; yyval.p = stat4(FOR, yypt[-7].yyv.p, NIL, yypt[-3].yyv.p, yypt[-0].yyv.p); } break;
case 17:
#line   128     "/n/ports/tools/ota/awk/awkgram.y"
{inloop++;} break;
case 18:
#line   129     "/n/ports/tools/ota/awk/awkgram.y"
{ --inloop; yyval.p = stat3(IN, yypt[-5].yyv.p, makearr(yypt[-3].yyv.p), yypt[-0].yyv.p); } break;
case 19:
#line   133     "/n/ports/tools/ota/awk/awkgram.y"
{ setfname(yypt[-0].yyv.cp); } break;
case 20:
#line   134     "/n/ports/tools/ota/awk/awkgram.y"
{ setfname(yypt[-0].yyv.cp); } break;
case 21:
#line   138     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = notnull(yypt[-1].yyv.p); } break;
case 26:
#line   150     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.i = 0; } break;
case 28:
#line   155     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.i = 0; } break;
case 30:
#line   161     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = 0; } break;
case 32:
#line   166     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = 0; } break;
case 33:
#line   167     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = yypt[-1].yyv.p; } break;
case 34:
#line   171     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = notnull(yypt[-0].yyv.p); } break;
case 35:
#line   175     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = stat2(PASTAT, yypt[-0].yyv.p, stat2(PRINT, rectonode(), NIL)); } break;
case 36:
#line   176     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = stat2(PASTAT, yypt[-3].yyv.p, yypt[-1].yyv.p); } break;
case 37:
#line   177     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = pa2stat(yypt[-3].yyv.p, yypt[-0].yyv.p, stat2(PRINT, rectonode(), NIL)); } break;
case 38:
#line   178     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = pa2stat(yypt[-6].yyv.p, yypt[-3].yyv.p, yypt[-1].yyv.p); } break;
case 39:
#line   179     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = stat2(PASTAT, NIL, yypt[-1].yyv.p); } break;
case 40:
#line   181     "/n/ports/tools/ota/awk/awkgram.y"
{ beginloc = linkum(beginloc, yypt[-1].yyv.p); yyval.p = 0; } break;
case 41:
#line   183     "/n/ports/tools/ota/awk/awkgram.y"
{ endloc = linkum(endloc, yypt[-1].yyv.p); yyval.p = 0; } break;
case 42:
#line   184     "/n/ports/tools/ota/awk/awkgram.y"
{infunc++;} break;
case 43:
#line   185     "/n/ports/tools/ota/awk/awkgram.y"
{ infunc--; curfname=0; defn((Cell *)yypt[-7].yyv.p, yypt[-5].yyv.p, yypt[-1].yyv.p); yyval.p = 0; } break;
case 45:
#line   190     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = linkum(yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 47:
#line   195     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = linkum(yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 48:
#line   199     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 49:
#line   201     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op3(CONDEXPR, notnull(yypt[-4].yyv.p), yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 50:
#line   203     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op2(BOR, notnull(yypt[-2].yyv.p), notnull(yypt[-0].yyv.p)); } break;
case 51:
#line   205     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op2(AND, notnull(yypt[-2].yyv.p), notnull(yypt[-0].yyv.p)); } break;
case 52:
#line   206     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op3(yypt[-1].yyv.i, NIL, yypt[-2].yyv.p, (Node*)makedfa(yypt[-0].yyv.s, 0)); } break;
case 53:
#line   208     "/n/ports/tools/ota/awk/awkgram.y"
{ if (constnode(yypt[-0].yyv.p))
                        yyval.p = op3(yypt[-1].yyv.i, NIL, yypt[-2].yyv.p, (Node*)makedfa(strnode(yypt[-0].yyv.p), 0));
                  else
                        yyval.p = op3(yypt[-1].yyv.i, (Node *)1, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 54:
#line   212     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op2(INTEST, yypt[-2].yyv.p, makearr(yypt[-0].yyv.p)); } break;
case 55:
#line   213     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op2(INTEST, yypt[-3].yyv.p, makearr(yypt[-0].yyv.p)); } break;
case 56:
#line   214     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op2(CAT, yypt[-1].yyv.p, yypt[-0].yyv.p); } break;
case 59:
#line   220     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 60:
#line   222     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op3(CONDEXPR, notnull(yypt[-4].yyv.p), yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 61:
#line   224     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op2(BOR, notnull(yypt[-2].yyv.p), notnull(yypt[-0].yyv.p)); } break;
case 62:
#line   226     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op2(AND, notnull(yypt[-2].yyv.p), notnull(yypt[-0].yyv.p)); } break;
case 63:
#line   227     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 64:
#line   228     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 65:
#line   229     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 66:
#line   230     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 67:
#line   231     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 68:
#line   232     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op2(yypt[-1].yyv.i, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 69:
#line   233     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op3(yypt[-1].yyv.i, NIL, yypt[-2].yyv.p, (Node*)makedfa(yypt[-0].yyv.s, 0)); } break;
case 70:
#line   235     "/n/ports/tools/ota/awk/awkgram.y"
{ if (constnode(yypt[-0].yyv.p))
                        yyval.p = op3(yypt[-1].yyv.i, NIL, yypt[-2].yyv.p, (Node*)makedfa(strnode(yypt[-0].yyv.p), 0));
                  else
                        yyval.p = op3(yypt[-1].yyv.i, (Node *)1, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 71:
#line   239     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op2(INTEST, yypt[-2].yyv.p, makearr(yypt[-0].yyv.p)); } break;
case 72:
#line   240     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op2(INTEST, yypt[-3].yyv.p, makearr(yypt[-0].yyv.p)); } break;
case 73:
#line   241     "/n/ports/tools/ota/awk/awkgram.y"
{ 
                        if (safe) SYNTAX("cmd | getline is unsafe");
                        else yyval.p = op3(GETLINE, yypt[-0].yyv.p, itonp(yypt[-2].yyv.i), yypt[-3].yyv.p); } break;
case 74:
#line   244     "/n/ports/tools/ota/awk/awkgram.y"
{ 
                        if (safe) SYNTAX("cmd | getline is unsafe");
                        else yyval.p = op3(GETLINE, (Node*)0, itonp(yypt[-1].yyv.i), yypt[-2].yyv.p); } break;
case 75:
#line   247     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op2(CAT, yypt[-1].yyv.p, yypt[-0].yyv.p); } break;
case 78:
#line   253     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = linkum(yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 79:
#line   254     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = linkum(yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 81:
#line   259     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = linkum(yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 82:
#line   263     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = rectonode(); } break;
case 84:
#line   265     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = yypt[-1].yyv.p; } break;
case 93:
#line   282     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op3(MATCH, NIL, rectonode(), (Node*)makedfa(yypt[-0].yyv.s, 0)); } break;
case 94:
#line   283     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op1(NOT, notnull(yypt[-0].yyv.p)); } break;
case 95:
#line   287     "/n/ports/tools/ota/awk/awkgram.y"
{startreg();} break;
case 96:
#line   287     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.s = yypt[-1].yyv.s; } break;
case 99:
#line   295     "/n/ports/tools/ota/awk/awkgram.y"
{ 
                        if (safe) SYNTAX("print | is unsafe");
                        else yyval.p = stat3(yypt[-3].yyv.i, yypt[-2].yyv.p, itonp(yypt[-1].yyv.i), yypt[-0].yyv.p); } break;
case 100:
#line   298     "/n/ports/tools/ota/awk/awkgram.y"
{
                        if (safe) SYNTAX("print >> is unsafe");
                        else yyval.p = stat3(yypt[-3].yyv.i, yypt[-2].yyv.p, itonp(yypt[-1].yyv.i), yypt[-0].yyv.p); } break;
case 101:
#line   301     "/n/ports/tools/ota/awk/awkgram.y"
{
                        if (safe) SYNTAX("print > is unsafe");
                        else yyval.p = stat3(yypt[-3].yyv.i, yypt[-2].yyv.p, itonp(yypt[-1].yyv.i), yypt[-0].yyv.p); } break;
case 102:
#line   304     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = stat3(yypt[-1].yyv.i, yypt[-0].yyv.p, NIL, NIL); } break;
case 103:
#line   305     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = stat2(DELETE, makearr(yypt[-3].yyv.p), yypt[-1].yyv.p); } break;
case 104:
#line   306     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = stat2(DELETE, makearr(yypt[-0].yyv.p), 0); } break;
case 105:
#line   307     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = exptostat(yypt[-0].yyv.p); } break;
case 106:
#line   308     "/n/ports/tools/ota/awk/awkgram.y"
{ yyclearin; SYNTAX("illegal statement"); } break;
case 109:
#line   317     "/n/ports/tools/ota/awk/awkgram.y"
{ if (!inloop) SYNTAX("break illegal outside of loops");
                                  yyval.p = stat1(BREAK, NIL); } break;
case 110:
#line   319     "/n/ports/tools/ota/awk/awkgram.y"
{  if (!inloop) SYNTAX("continue illegal outside of loops");
                                  yyval.p = stat1(CONTINUE, NIL); } break;
case 111:
#line   321     "/n/ports/tools/ota/awk/awkgram.y"
{inloop++;} break;
case 112:
#line   321     "/n/ports/tools/ota/awk/awkgram.y"
{--inloop;} break;
case 113:
#line   322     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = stat2(DO, yypt[-6].yyv.p, notnull(yypt[-2].yyv.p)); } break;
case 114:
#line   323     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = stat1(EXIT, yypt[-1].yyv.p); } break;
case 115:
#line   324     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = stat1(EXIT, NIL); } break;
case 117:
#line   326     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = stat3(IF, yypt[-3].yyv.p, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 118:
#line   327     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = stat3(IF, yypt[-1].yyv.p, yypt[-0].yyv.p, NIL); } break;
case 119:
#line   328     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = yypt[-1].yyv.p; } break;
case 120:
#line   329     "/n/ports/tools/ota/awk/awkgram.y"
{ if (infunc)
                                SYNTAX("next is illegal inside a function");
                          yyval.p = stat1(NEXT, NIL); } break;
case 121:
#line   332     "/n/ports/tools/ota/awk/awkgram.y"
{ if (infunc)
                                SYNTAX("nextfile is illegal inside a function");
                          yyval.p = stat1(NEXTFILE, NIL); } break;
case 122:
#line   335     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = stat1(RETURN, yypt[-1].yyv.p); } break;
case 123:
#line   336     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = stat1(RETURN, NIL); } break;
case 125:
#line   338     "/n/ports/tools/ota/awk/awkgram.y"
{inloop++;} break;
case 126:
#line   338     "/n/ports/tools/ota/awk/awkgram.y"
{ --inloop; yyval.p = stat2(WHILE, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 127:
#line   339     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = 0; } break;
case 129:
#line   344     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = linkum(yypt[-1].yyv.p, yypt[-0].yyv.p); } break;
case 132:
#line   352     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op2(DIVEQ, yypt[-3].yyv.p, yypt[-0].yyv.p); } break;
case 133:
#line   353     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op2(ADD, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 134:
#line   354     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op2(MINUS, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 135:
#line   355     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op2(MULT, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 136:
#line   356     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op2(DIVIDE, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 137:
#line   357     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op2(MOD, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 138:
#line   358     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op2(POWER, yypt[-2].yyv.p, yypt[-0].yyv.p); } break;
case 139:
#line   359     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op1(UMINUS, yypt[-0].yyv.p); } break;
case 140:
#line   360     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op1(UPLUS, yypt[-0].yyv.p); } break;
case 141:
#line   361     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op1(NOT, notnull(yypt[-0].yyv.p)); } break;
case 142:
#line   362     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op2(BLTIN, itonp(yypt[-2].yyv.i), rectonode()); } break;
case 143:
#line   363     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op2(BLTIN, itonp(yypt[-3].yyv.i), yypt[-1].yyv.p); } break;
case 144:
#line   364     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op2(BLTIN, itonp(yypt[-0].yyv.i), rectonode()); } break;
case 145:
#line   365     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op2(CALL, celltonode(yypt[-2].yyv.cp,CVAR), NIL); } break;
case 146:
#line   366     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op2(CALL, celltonode(yypt[-3].yyv.cp,CVAR), yypt[-1].yyv.p); } break;
case 147:
#line   367     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op1(CLOSE, yypt[-0].yyv.p); } break;
case 148:
#line   368     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op1(PREDECR, yypt[-0].yyv.p); } break;
case 149:
#line   369     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op1(PREINCR, yypt[-0].yyv.p); } break;
case 150:
#line   370     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op1(POSTDECR, yypt[-1].yyv.p); } break;
case 151:
#line   371     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op1(POSTINCR, yypt[-1].yyv.p); } break;
case 152:
#line   372     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op3(GETLINE, yypt[-2].yyv.p, itonp(yypt[-1].yyv.i), yypt[-0].yyv.p); } break;
case 153:
#line   373     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op3(GETLINE, NIL, itonp(yypt[-1].yyv.i), yypt[-0].yyv.p); } break;
case 154:
#line   374     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op3(GETLINE, yypt[-0].yyv.p, NIL, NIL); } break;
case 155:
#line   375     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op3(GETLINE, NIL, NIL, NIL); } break;
case 156:
#line   377     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op2(INDEX, yypt[-3].yyv.p, yypt[-1].yyv.p); } break;
case 157:
#line   379     "/n/ports/tools/ota/awk/awkgram.y"
{ SYNTAX("index() doesn't permit regular expressions");
                  yyval.p = op2(INDEX, yypt[-3].yyv.p, (Node*)yypt[-1].yyv.s); } break;
case 158:
#line   381     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = yypt[-1].yyv.p; } break;
case 159:
#line   383     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op3(MATCHFCN, NIL, yypt[-3].yyv.p, (Node*)makedfa(yypt[-1].yyv.s, 1)); } break;
case 160:
#line   385     "/n/ports/tools/ota/awk/awkgram.y"
{ if (constnode(yypt[-1].yyv.p))
                        yyval.p = op3(MATCHFCN, NIL, yypt[-3].yyv.p, (Node*)makedfa(strnode(yypt[-1].yyv.p), 1));
                  else
                        yyval.p = op3(MATCHFCN, (Node *)1, yypt[-3].yyv.p, yypt[-1].yyv.p); } break;
case 161:
#line   389     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = celltonode(yypt[-0].yyv.cp, CCON); } break;
case 162:
#line   391     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op4(SPLIT, yypt[-5].yyv.p, makearr(yypt[-3].yyv.p), yypt[-1].yyv.p, (Node*)STRING); } break;
case 163:
#line   393     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op4(SPLIT, yypt[-5].yyv.p, makearr(yypt[-3].yyv.p), (Node*)makedfa(yypt[-1].yyv.s, 1), (Node *)REGEXPR); } break;
case 164:
#line   395     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op4(SPLIT, yypt[-3].yyv.p, makearr(yypt[-1].yyv.p), NIL, (Node*)STRING); } break;
case 165:
#line   396     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op1(yypt[-3].yyv.i, yypt[-1].yyv.p); } break;
case 166:
#line   397     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = celltonode(yypt[-0].yyv.cp, CCON); } break;
case 167:
#line   399     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op4(yypt[-5].yyv.i, NIL, (Node*)makedfa(yypt[-3].yyv.s, 1), yypt[-1].yyv.p, rectonode()); } break;
case 168:
#line   401     "/n/ports/tools/ota/awk/awkgram.y"
{ if (constnode(yypt[-3].yyv.p))
                        yyval.p = op4(yypt[-5].yyv.i, NIL, (Node*)makedfa(strnode(yypt[-3].yyv.p), 1), yypt[-1].yyv.p, rectonode());
                  else
                        yyval.p = op4(yypt[-5].yyv.i, (Node *)1, yypt[-3].yyv.p, yypt[-1].yyv.p, rectonode()); } break;
case 169:
#line   406     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op4(yypt[-7].yyv.i, NIL, (Node*)makedfa(yypt[-5].yyv.s, 1), yypt[-3].yyv.p, yypt[-1].yyv.p); } break;
case 170:
#line   408     "/n/ports/tools/ota/awk/awkgram.y"
{ if (constnode(yypt[-5].yyv.p))
                        yyval.p = op4(yypt[-7].yyv.i, NIL, (Node*)makedfa(strnode(yypt[-5].yyv.p), 1), yypt[-3].yyv.p, yypt[-1].yyv.p);
                  else
                        yyval.p = op4(yypt[-7].yyv.i, (Node *)1, yypt[-5].yyv.p, yypt[-3].yyv.p, yypt[-1].yyv.p); } break;
case 171:
#line   413     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op3(SUBSTR, yypt[-5].yyv.p, yypt[-3].yyv.p, yypt[-1].yyv.p); } break;
case 172:
#line   415     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op3(SUBSTR, yypt[-3].yyv.p, yypt[-1].yyv.p, NIL); } break;
case 175:
#line   421     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op2(ARRAY, makearr(yypt[-3].yyv.p), yypt[-1].yyv.p); } break;
case 176:
#line   422     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op1(INDIRECT, celltonode(yypt[-0].yyv.cp, CVAR)); } break;
case 177:
#line   423     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op1(INDIRECT, yypt[-0].yyv.p); } break;
case 178:
#line   427     "/n/ports/tools/ota/awk/awkgram.y"
{ arglist = yyval.p = 0; } break;
case 179:
#line   428     "/n/ports/tools/ota/awk/awkgram.y"
{ arglist = yyval.p = celltonode(yypt[-0].yyv.cp,CVAR); } break;
case 180:
#line   429     "/n/ports/tools/ota/awk/awkgram.y"
{
                        checkdup(yypt[-2].yyv.p, yypt[-0].yyv.cp);
                        arglist = yyval.p = linkum(yypt[-2].yyv.p,celltonode(yypt[-0].yyv.cp,CVAR)); } break;
case 181:
#line   435     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = celltonode(yypt[-0].yyv.cp, CVAR); } break;
case 182:
#line   436     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op1(ARG, itonp(yypt[-0].yyv.i)); } break;
case 183:
#line   437     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = op1(VARNF, (Node *) yypt[-0].yyv.cp); } break;
case 184:
#line   442     "/n/ports/tools/ota/awk/awkgram.y"
{ yyval.p = notnull(yypt[-1].yyv.p); } break;
        }
        goto yystack;  /* stack new state and value */
}