+#define YYXBYACC 1 /* XBYACC -- modified Berkeley yacc */
+/*
+ Berkeley yacc modified so only tables and
+ yydebug and yylval are global
+ #define YYGLOBAL -- gives standard byacc
+ #define YYPURE -- gives a reentrant parser
+
+ Mike Brennan 11/05/91
+*/
+#line 24 "parse.y"
+#include <stdio.h>
+#include "mawk.h"
+#include "code.h"
+#include "symtype.h"
+#include "memory.h"
+#include "bi_funct.h"
+#include "bi_vars.h"
+#include "jmp.h"
+#include "field.h"
+#include "files.h"
+
+#ifdef YYXBYACC
+#define YYBYACC 1
+#endif
+
+#define YYMAXDEPTH 200
+
+/* Bison's use of MSDOS and ours clashes */
+#undef MSDOS
+
+extern void PROTO( eat_nl, (void) ) ;
+static void PROTO( resize_fblock, (FBLOCK *, INST *) ) ;
+static void PROTO( code_array, (SYMTAB *) ) ;
+static void PROTO( code_call_id, (CA_REC *, SYMTAB *) ) ;
+static void PROTO( field_A2I, (void)) ;
+static int PROTO( current_offset, (void) ) ;
+static void PROTO( check_var, (SYMTAB *) ) ;
+static void PROTO( check_array, (SYMTAB *) ) ;
+static void PROTO( RE_as_arg, (void)) ;
+
+static int scope ;
+static FBLOCK *active_funct ;
+ /* when scope is SCOPE_FUNCT */
+
+#define code_address(x) if( is_local(x) )\
+ { code1(L_PUSHA) ; code1((x)->offset) ; }\
+ else code2(_PUSHA, (x)->stval.cp)
+
+/* this nonsense caters to MSDOS large model */
+#define CODE_FE_PUSHA() code_ptr->ptr = (PTR) 0 ; code1(FE_PUSHA)
+
+#line 67 "parse.y"
+typedef union{
+CELL *cp ;
+SYMTAB *stp ;
+INST *start ; /* code starting address */
+PF_CP fp ; /* ptr to a (print/printf) or (sub/gsub) function */
+BI_REC *bip ; /* ptr to info about a builtin */
+FBLOCK *fbp ; /* ptr to a function block */
+ARG2_REC *arg2p ;
+CA_REC *ca_p ;
+int ival ;
+PTR ptr ;
+} YYSTYPE;
+#line 69 "y.tab.c"
+#define UNEXPECTED 257
+#define BAD_DECIMAL 258
+#define NL 259
+#define SEMI_COLON 260
+#define LBRACE 261
+#define RBRACE 262
+#define LBOX 263
+#define RBOX 264
+#define COMMA 265
+#define IO_OUT 266
+#define ASSIGN 267
+#define ADD_ASG 268
+#define SUB_ASG 269
+#define MUL_ASG 270
+#define DIV_ASG 271
+#define MOD_ASG 272
+#define POW_ASG 273
+#define QMARK 274
+#define COLON 275
+#define OR 276
+#define AND 277
+#define IN 278
+#define MATCH 279
+#define EQ 280
+#define NEQ 281
+#define LT 282
+#define LTE 283
+#define GT 284
+#define GTE 285
+#define CAT 286
+#define GETLINE 287
+#define PLUS 288
+#define MINUS 289
+#define MUL 290
+#define DIV 291
+#define MOD 292
+#define NOT 293
+#define UMINUS 294
+#define IO_IN 295
+#define PIPE 296
+#define POW 297
+#define INC_or_DEC 298
+#define DOLLAR 299
+#define FIELD 300
+#define LPAREN 301
+#define RPAREN 302
+#define DOUBLE 303
+#define STRING_ 304
+#define RE 305
+#define ID 306
+#define D_ID 307
+#define FUNCT_ID 308
+#define BUILTIN 309
+#define PRINT 310
+#define PRINTF 311
+#define SPLIT 312
+#define MATCH_FUNC 313
+#define SUB 314
+#define GSUB 315
+#define DO 316
+#define WHILE 317
+#define FOR 318
+#define BREAK 319
+#define CONTINUE 320
+#define IF 321
+#define ELSE 322
+#define DELETE 323
+#define BEGIN 324
+#define END 325
+#define EXIT 326
+#define NEXT 327
+#define RETURN 328
+#define FUNCTION 329
+#define YYERRCODE 256
+short yylhs[] = { -1,
+ 0, 0, 36, 36, 36, 37, 39, 37, 40, 37,
+ 41, 37, 42, 43, 37, 1, 1, 2, 2, 3,
+ 3, 4, 4, 4, 4, 4, 4, 4, 4, 44,
+ 44, 13, 13, 13, 13, 13, 13, 13, 13, 13,
+ 13, 13, 13, 13, 13, 13, 45, 13, 46, 13,
+ 47, 48, 13, 14, 14, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
+ 15, 15, 15, 15, 10, 25, 25, 26, 26, 8,
+ 5, 4, 27, 27, 6, 6, 6, 7, 7, 49,
+ 49, 17, 4, 50, 4, 51, 4, 16, 4, 4,
+ 18, 18, 19, 19, 52, 52, 13, 13, 10, 15,
+ 15, 4, 20, 4, 11, 11, 11, 11, 11, 15,
+ 13, 13, 13, 13, 13, 13, 13, 15, 22, 53,
+ 53, 15, 23, 4, 4, 21, 21, 15, 15, 15,
+ 15, 15, 54, 12, 12, 9, 9, 15, 28, 28,
+ 24, 24, 38, 29, 30, 30, 34, 34, 35, 35,
+ 15, 31, 31, 32, 32, 32, 33, 33,
+};
+short yylen[] = { 2,
+ 1, 2, 1, 1, 2, 1, 0, 3, 0, 3,
+ 0, 3, 0, 0, 6, 3, 3, 1, 1, 1,
+ 2, 1, 2, 1, 2, 2, 2, 1, 2, 1,
+ 1, 1, 3, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 0, 4, 0, 4,
+ 0, 0, 7, 1, 2, 1, 1, 1, 3, 1,
+ 3, 3, 3, 3, 3, 3, 2, 2, 2, 1,
+ 2, 2, 2, 2, 1, 0, 1, 1, 3, 5,
+ 0, 5, 1, 1, 1, 3, 2, 3, 3, 0,
+ 2, 4, 2, 1, 4, 1, 7, 4, 2, 4,
+ 3, 4, 1, 2, 1, 2, 3, 5, 5, 5,
+ 6, 7, 6, 2, 1, 2, 6, 2, 3, 1,
+ 3, 3, 3, 3, 3, 3, 3, 2, 5, 1,
+ 3, 6, 1, 2, 3, 2, 3, 1, 2, 2,
+ 3, 4, 1, 1, 1, 2, 3, 6, 1, 1,
+ 1, 3, 2, 4, 2, 2, 0, 1, 1, 3,
+ 3, 2, 2, 1, 3, 3, 2, 2,
+};
+short yydefred[] = { 0,
+ 0, 0, 143, 0, 0, 0, 0, 0, 115, 0,
+ 56, 57, 60, 0, 81, 81, 0, 0, 149, 150,
+ 7, 9, 0, 0, 6, 70, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1, 3, 4, 0,
+ 5, 0, 30, 31, 83, 84, 96, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 22, 0, 20, 0,
+ 0, 0, 0, 0, 28, 81, 24, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 72, 74, 0, 118,
+ 0, 0, 0, 71, 0, 0, 0, 0, 0, 0,
+ 0, 155, 156, 2, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,
+ 13, 51, 47, 49, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 130, 128, 0, 153, 0, 146, 144, 145,
+ 0, 17, 25, 0, 0, 26, 27, 0, 81, 0,
+ 134, 29, 0, 136, 0, 16, 21, 23, 99, 0,
+ 103, 0, 0, 114, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 119, 0, 59, 0, 0, 161, 0,
+ 0, 0, 0, 8, 10, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 107, 0, 40, 41, 42, 43, 44,
+ 45, 18, 12, 19, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 159, 0, 0, 147, 0, 101,
+ 0, 0, 0, 0, 135, 137, 94, 0, 104, 105,
+ 0, 0, 0, 0, 0, 85, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 162, 0, 0, 163, 0,
+ 0, 0, 0, 0, 0, 0, 142, 131, 0, 154,
+ 0, 98, 0, 102, 92, 0, 95, 106, 100, 87,
+ 0, 0, 0, 0, 0, 0, 0, 0, 108, 0,
+ 166, 168, 165, 167, 80, 129, 0, 0, 52, 0,
+ 160, 0, 0, 0, 0, 82, 0, 0, 0, 109,
+ 117, 111, 132, 15, 0, 0, 151, 148, 113, 0,
+ 0, 0, 0, 112, 97, 152,
+};
+short yydgoto[] = { 24,
+ 57, 213, 58, 59, 85, 244, 81, 26, 27, 28,
+ 29, 141, 60, 31, 32, 61, 62, 63, 163, 64,
+ 65, 33, 224, 318, 246, 247, 66, 34, 35, 36,
+ 179, 180, 259, 226, 227, 37, 38, 39, 90, 91,
+ 123, 200, 298, 67, 202, 203, 201, 315, 283, 238,
+ 68, 242, 134, 40,
+};
+short yysindex[] = { 38,
+ -259, 276, 0, 2215, 2215, 2215, -158, 2128, 0, 2244,
+ 0, 0, 0, -290, 0, 0, -286, -274, 0, 0,
+ 0, 0, -212, 38, 0, 0, 2215, 282, 2122, 2514,
+ 2215, 116, -242, -270, -259, -261, 0, 0, 0, -223,
+ 0, -125, 0, 0, 0, 0, 0, -255, -250, -197,
+ -197, -234, -222, 1702, -197, 1702, 0, 130, 0, 2466,
+ 349, 349, 1792, 349, 0, 0, 0, 349, 2244, -290,
+ -210, -260, -260, -260, -103, 0, 0, 0, 0, 0,
+ -241, -84, 2069, 0, -147, -169, -143, 2244, 2244, -259,
+ -259, 0, 0, 0, -130, 2244, 2244, 2244, 2244, 2244,
+ 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 2244, 0,
+ 0, 0, 0, 0, -135, 2244, 2244, 2244, 2244, 2244,
+ 2244, 2244, -44, 116, 2215, 2215, 2215, 2215, 2215, -110,
+ 2215, 2244, 0, 0, 2244, 0, -106, 0, 0, 0,
+ -69, 0, 0, 2244, 1822, 0, 0, 2244, 0, 2466,
+ 0, 0, 2466, 0, -197, 0, 0, 0, 0, -95,
+ 0, 2478, 2157, 0, 2273, -88, 2373, -22, -59, -14,
+ -10, 2244, -24, 0, 2244, 0, 2244, -46, 0, 2302,
+ 2244, 2535, 2556, 0, 0, 2580, 2580, 2580, 2580, 2580,
+ 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2580, 2244,
+ 2244, 2244, 2244, 0, 204, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, -25, -25, -260, -260, -260, -158,
+ -130, 2385, 2580, -8, 0, -43, -4, 0, 2400, 0,
+ -266, 2493, 2412, 5, 0, 0, 0, 349, 0, 0,
+ 2427, 349, 2186, -2, 2580, 0, -3, -32, 2244, 2244,
+ 2244, 2580, -31, 2580, -184, 0, -248, 2096, 0, -28,
+ -19, 2244, 2580, 2568, 2589, 197, 0, 0, 2244, 0,
+ -18, 0, -6, 0, 0, 2244, 0, 0, 0, 0,
+ -237, 2244, -197, 2244, 2244, -126, -111, -102, 0, -17,
+ 0, 0, 0, 0, 0, 0, -20, -44, 0, 2123,
+ 0, 2, -90, -24, 2580, 0, 2580, 2439, -17, 0,
+ 0, 0, 0, 0, 2244, -158, 0, 0, 0, -197,
+ -197, 2580, 6, 0, 0, 0,
+};
+short yyrindex[] = { 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 590, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1559, 19,
+ 95, 1616, 0, 0, 0, 0, 0, 0, 0, 1388,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 533,
+ 647, 875, 932, 989, 0, 419, 0, 0, 476, 0,
+ 0, 1917, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1046, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1673, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 11, 0, 0, 0,
+ 704, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 203,
+ 0, 0, 0, 0, -109, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 2331, 0, 0,
+ 12, 0, 0, 0, 0, -217, 135, 208, 281, 354,
+ 1974, 1982, 1994, 2002, 2014, 2022, 2034, 2042, 2054, 0,
+ 0, 0, 0, 0, -54, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1445, 1502, 1103, 1160, 1217, 1331,
+ 761, 0, -236, 0, 0, 0, 15, 0, 0, 0,
+ 1758, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -80, -173, 0, -207, 0, 0, 0,
+ 0, -231, 0, -227, 0, 0, 1875, 0, 0, 0,
+ 0, 0, 37, 0, -29, 46, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1274,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, -67, -51, 0, -26, 0, 818, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2062, 0, 0, 0, 0,
+};
+short yygindex[] = { 0,
+ 21, 4, 0, -48, 3, 0, 41, 0, 0, -7,
+ -1, -185, 1, 0, 164, 0, 0, 0, 0, 0,
+ 0, 0, 39, 0, 122, -136, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 294, 0, 0, 0, 0,
+ 0, 0, 0, 105, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0,
+};
+#define YYTABLESIZE 2874
+short yytable[] = { 77,
+ 30, 2, 71, 71, 71, 78, 71, 84, 82, 157,
+ 83, 273, 159, 160, 88, 164, 291, 86, 87, 166,
+ 25, 41, 132, 172, 30, 71, 89, 172, 133, 71,
+ 135, 84, 139, 89, 267, 130, 131, 88, 140, 137,
+ 255, 33, 33, 33, 25, 144, 33, 33, 33, 84,
+ 145, 77, 77, 292, 150, 136, 153, 33, 77, 133,
+ 173, 43, 44, 162, 304, 133, 148, 82, 165, 167,
+ 89, 138, 168, 169, 88, 8, 9, 75, 170, 290,
+ 284, 171, 76, 149, 33, 78, 78, 110, 182, 183,
+ 78, 78, 78, 92, 77, 93, 186, 187, 188, 189,
+ 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
+ 184, 185, 286, 287, 288, 177, 205, 206, 207, 208,
+ 209, 210, 211, 71, 71, 71, 71, 71, 78, 71,
+ 323, 178, 222, 43, 44, 223, 142, 309, 284, 303,
+ 8, 9, 75, 212, 229, 232, 143, 76, 233, 76,
+ 76, 234, 310, 284, 146, 147, 76, 181, 151, 152,
+ 154, 311, 284, 241, 158, 245, 131, 72, 73, 74,
+ 204, 80, 252, 320, 284, 254, 220, 245, 90, 90,
+ 258, 245, 103, 104, 105, 106, 107, 108, 109, 277,
+ 95, 86, 86, 279, 124, 8, 9, 75, 86, 225,
+ 263, 264, 265, 266, 46, 46, 46, 91, 91, 46,
+ 46, 46, 139, 110, 43, 44, 2, 174, 140, 46,
+ 46, 46, 46, 46, 46, 228, 237, 214, 248, 48,
+ 48, 48, 79, 79, 48, 48, 48, 79, 79, 79,
+ 249, 82, 174, 83, 48, 48, 48, 46, 250, 245,
+ 245, 245, 251, 253, 235, 256, 269, 236, 270, 143,
+ 271, 284, 223, 282, 127, 128, 129, 276, 285, 300,
+ 130, 131, 48, 295, 289, 79, 245, 11, 11, 11,
+ 312, 313, 305, 281, 307, 308, 296, 301, 215, 216,
+ 217, 218, 219, 1, 221, 14, 14, 14, 2, 302,
+ 297, 314, 260, 319, 50, 50, 50, 326, 139, 50,
+ 50, 50, 157, 76, 140, 322, 158, 94, 212, 50,
+ 50, 50, 50, 0, 3, 4, 5, 0, 0, 0,
+ 6, 0, 0, 0, 0, 7, 8, 9, 10, 0,
+ 11, 12, 13, 14, 0, 15, 16, 50, 0, 17,
+ 18, 19, 20, 32, 32, 32, 0, 0, 32, 32,
+ 32, 21, 22, 0, 0, 0, 23, 0, 32, 32,
+ 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+ 0, 0, 0, 0, 0, 155, 0, 306, 43, 44,
+ 2, 156, 0, 34, 34, 34, 32, 0, 34, 34,
+ 34, 0, 214, 125, 126, 127, 128, 129, 0, 34,
+ 0, 130, 131, 0, 0, 0, 3, 4, 5, 0,
+ 0, 0, 6, 0, 324, 325, 0, 7, 8, 9,
+ 10, 0, 11, 12, 13, 14, 34, 15, 16, 45,
+ 46, 17, 18, 19, 20, 47, 48, 49, 50, 51,
+ 52, 0, 53, 0, 0, 54, 55, 56, 93, 0,
+ 0, 93, 93, 93, 93, 0, 35, 35, 35, 0,
+ 0, 35, 35, 35, 115, 116, 117, 118, 119, 120,
+ 121, 122, 35, 117, 118, 119, 120, 121, 122, 93,
+ 93, 93, 0, 0, 0, 93, 0, 0, 0, 0,
+ 93, 93, 93, 93, 0, 93, 93, 93, 93, 35,
+ 93, 93, 93, 93, 93, 93, 93, 93, 93, 93,
+ 93, 93, 93, 93, 0, 93, 0, 0, 93, 93,
+ 93, 42, 0, 0, 43, 44, 2, 0, 0, 36,
+ 36, 36, 0, 0, 36, 36, 36, 0, 96, 97,
+ 98, 99, 100, 101, 102, 36, 0, 0, 0, 0,
+ 0, 0, 3, 4, 5, 0, 0, 0, 6, 0,
+ 0, 0, 0, 7, 8, 9, 10, 0, 11, 12,
+ 13, 14, 36, 15, 16, 45, 46, 17, 18, 19,
+ 20, 47, 48, 49, 50, 51, 52, 0, 53, 0,
+ 0, 54, 55, 56, 155, 0, 0, 43, 44, 2,
+ 0, 0, 37, 37, 37, 0, 0, 37, 37, 37,
+ 0, 0, 0, 0, 0, 0, 0, 0, 37, 0,
+ 0, 0, 0, 0, 0, 3, 4, 5, 0, 0,
+ 0, 6, 0, 0, 0, 0, 7, 8, 9, 10,
+ 0, 11, 12, 13, 14, 37, 15, 16, 45, 46,
+ 17, 18, 19, 20, 47, 48, 49, 50, 51, 52,
+ 0, 53, 0, 0, 54, 55, 56, 75, 75, 75,
+ 0, 81, 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 0, 75, 75, 75, 75, 75,
+ 75, 75, 0, 75, 75, 75, 75, 75, 75, 75,
+ 75, 75, 75, 75, 75, 0, 75, 75, 0, 0,
+ 75, 75, 75, 75, 116, 116, 116, 0, 81, 116,
+ 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
+ 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
+ 116, 0, 116, 116, 116, 116, 116, 116, 116, 0,
+ 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
+ 116, 116, 0, 116, 116, 0, 0, 116, 116, 116,
+ 116, 58, 58, 58, 0, 81, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 58, 58, 58, 0, 58,
+ 58, 58, 58, 58, 58, 58, 0, 58, 58, 58,
+ 0, 58, 58, 58, 58, 58, 58, 58, 58, 0,
+ 58, 58, 0, 0, 58, 58, 58, 58, 58, 58,
+ 58, 0, 81, 58, 58, 58, 75, 75, 75, 75,
+ 75, 75, 75, 58, 58, 58, 58, 58, 58, 58,
+ 58, 58, 58, 58, 58, 0, 58, 58, 58, 58,
+ 58, 58, 58, 0, 0, 58, 58, 0, 58, 58,
+ 58, 58, 58, 58, 58, 58, 0, 58, 58, 0,
+ 0, 58, 58, 58, 58, 120, 120, 120, 0, 0,
+ 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
+ 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
+ 120, 120, 0, 120, 120, 120, 120, 120, 120, 120,
+ 0, 120, 120, 120, 0, 120, 120, 120, 120, 120,
+ 120, 120, 120, 0, 120, 120, 0, 0, 120, 120,
+ 120, 120, 139, 139, 139, 0, 0, 139, 139, 139,
+ 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
+ 139, 139, 139, 139, 139, 139, 139, 139, 139, 0,
+ 139, 139, 139, 139, 139, 139, 139, 0, 0, 139,
+ 139, 139, 139, 139, 139, 139, 139, 139, 139, 139,
+ 0, 139, 139, 0, 0, 139, 139, 139, 139, 66,
+ 66, 66, 0, 0, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 66, 66, 66, 66, 0, 66, 66, 66,
+ 66, 66, 66, 66, 0, 66, 66, 0, 66, 66,
+ 66, 66, 66, 66, 66, 66, 66, 0, 66, 66,
+ 0, 0, 66, 66, 66, 66, 110, 110, 110, 0,
+ 0, 110, 110, 110, 110, 110, 110, 110, 110, 110,
+ 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
+ 110, 110, 110, 0, 110, 110, 110, 110, 110, 110,
+ 110, 0, 110, 110, 110, 0, 110, 110, 110, 110,
+ 110, 110, 110, 110, 0, 110, 110, 0, 0, 110,
+ 110, 110, 110, 68, 68, 68, 0, 0, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 68, 68, 68, 68, 68, 68, 68, 68, 68,
+ 0, 68, 68, 68, 68, 68, 68, 68, 0, 68,
+ 0, 0, 68, 68, 68, 68, 68, 68, 68, 68,
+ 68, 0, 68, 68, 0, 0, 68, 68, 68, 68,
+ 69, 69, 69, 0, 0, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 69, 69,
+ 69, 69, 69, 69, 69, 69, 69, 0, 69, 69,
+ 69, 69, 69, 69, 69, 0, 69, 0, 0, 69,
+ 69, 69, 69, 69, 69, 69, 69, 69, 0, 69,
+ 69, 0, 0, 69, 69, 69, 69, 67, 67, 67,
+ 0, 0, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 67, 67, 67, 67, 67,
+ 67, 67, 67, 67, 0, 67, 67, 67, 67, 67,
+ 67, 67, 0, 67, 0, 0, 67, 67, 67, 67,
+ 67, 67, 67, 67, 67, 0, 67, 67, 0, 0,
+ 67, 67, 67, 67, 140, 140, 140, 0, 0, 140,
+ 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
+ 140, 140, 140, 140, 140, 140, 140, 140, 140, 140,
+ 140, 0, 140, 140, 140, 140, 140, 140, 140, 0,
+ 140, 0, 0, 140, 140, 140, 140, 140, 140, 140,
+ 140, 140, 0, 140, 140, 0, 0, 140, 140, 140,
+ 140, 63, 63, 63, 0, 0, 63, 63, 63, 63,
+ 63, 63, 63, 63, 63, 63, 63, 63, 63, 63,
+ 63, 63, 63, 63, 63, 63, 63, 63, 0, 63,
+ 63, 63, 63, 63, 63, 63, 0, 63, 0, 0,
+ 63, 63, 63, 63, 63, 63, 63, 63, 63, 0,
+ 63, 63, 0, 0, 63, 63, 63, 63, 64, 64,
+ 64, 0, 0, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
+ 64, 64, 64, 64, 64, 0, 64, 64, 64, 64,
+ 64, 64, 64, 0, 64, 0, 0, 64, 64, 64,
+ 64, 64, 64, 64, 64, 64, 0, 64, 64, 0,
+ 0, 64, 64, 64, 64, 65, 65, 65, 0, 0,
+ 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 65, 65, 65, 65, 65, 65, 65,
+ 65, 65, 0, 65, 65, 65, 65, 65, 65, 65,
+ 0, 65, 0, 0, 65, 65, 65, 65, 65, 65,
+ 65, 65, 65, 0, 65, 65, 0, 0, 65, 65,
+ 65, 65, 110, 110, 110, 0, 0, 110, 110, 110,
+ 109, 109, 109, 109, 109, 109, 109, 110, 110, 110,
+ 110, 110, 110, 110, 110, 110, 110, 110, 110, 0,
+ 110, 110, 110, 110, 110, 110, 110, 0, 0, 110,
+ 110, 0, 110, 110, 110, 110, 110, 110, 110, 110,
+ 0, 110, 110, 0, 0, 110, 110, 110, 110, 141,
+ 141, 141, 0, 0, 141, 141, 141, 141, 141, 141,
+ 141, 141, 141, 141, 141, 141, 141, 141, 141, 141,
+ 141, 141, 141, 141, 141, 141, 0, 141, 141, 141,
+ 141, 141, 141, 141, 0, 141, 141, 141, 141, 0,
+ 0, 0, 141, 141, 141, 141, 0, 0, 141, 141,
+ 0, 0, 141, 141, 141, 141, 138, 138, 138, 0,
+ 0, 138, 138, 138, 138, 138, 138, 138, 138, 138,
+ 138, 138, 138, 138, 138, 138, 138, 138, 138, 138,
+ 138, 138, 138, 0, 138, 138, 138, 138, 138, 138,
+ 138, 0, 0, 138, 138, 138, 0, 0, 0, 138,
+ 138, 138, 138, 0, 0, 138, 138, 0, 0, 138,
+ 138, 138, 138, 61, 61, 61, 0, 0, 61, 61,
+ 61, 61, 61, 61, 61, 61, 61, 61, 61, 61,
+ 61, 61, 61, 61, 61, 61, 61, 61, 61, 61,
+ 0, 61, 61, 61, 0, 0, 0, 61, 0, 61,
+ 0, 0, 61, 61, 61, 61, 61, 61, 61, 61,
+ 61, 0, 61, 61, 0, 0, 61, 61, 61, 61,
+ 62, 62, 62, 0, 0, 62, 62, 62, 62, 62,
+ 62, 62, 62, 62, 62, 62, 62, 62, 62, 62,
+ 62, 62, 62, 62, 62, 62, 62, 0, 62, 62,
+ 62, 0, 0, 0, 62, 0, 62, 0, 0, 62,
+ 62, 62, 62, 62, 62, 62, 62, 62, 0, 62,
+ 62, 0, 0, 62, 62, 62, 62, 120, 120, 120,
+ 0, 0, 120, 120, 120, 0, 0, 0, 0, 0,
+ 0, 0, 120, 120, 120, 120, 120, 120, 120, 120,
+ 120, 120, 120, 120, 0, 120, 120, 120, 120, 120,
+ 120, 120, 0, 0, 120, 120, 0, 120, 120, 120,
+ 120, 120, 120, 120, 120, 0, 120, 120, 0, 0,
+ 120, 120, 120, 120, 54, 54, 54, 0, 0, 54,
+ 54, 54, 0, 0, 0, 0, 0, 0, 0, 54,
+ 54, 54, 54, 54, 54, 54, 54, 54, 54, 54,
+ 54, 0, 54, 0, 0, 0, 0, 0, 54, 0,
+ 0, 0, 0, 54, 54, 54, 54, 54, 54, 54,
+ 54, 54, 0, 54, 54, 0, 0, 54, 54, 54,
+ 54, 55, 55, 55, 0, 0, 55, 55, 55, 0,
+ 0, 0, 0, 0, 0, 0, 55, 55, 55, 55,
+ 55, 55, 55, 55, 55, 55, 55, 55, 0, 55,
+ 43, 44, 0, 0, 0, 55, 0, 0, 0, 0,
+ 55, 55, 55, 55, 55, 55, 55, 55, 55, 0,
+ 55, 55, 0, 0, 55, 55, 55, 55, 3, 4,
+ 5, 0, 0, 0, 6, 0, 0, 0, 0, 7,
+ 8, 9, 10, 0, 11, 12, 13, 14, 0, 15,
+ 16, 0, 0, 17, 18, 19, 20, 58, 0, 0,
+ 81, 0, 0, 0, 75, 75, 75, 75, 75, 75,
+ 75, 58, 0, 58, 58, 0, 58, 58, 58, 58,
+ 58, 58, 58, 0, 58, 58, 58, 58, 58, 58,
+ 58, 161, 0, 58, 58, 0, 58, 58, 58, 0,
+ 58, 58, 58, 58, 0, 58, 58, 0, 0, 58,
+ 58, 58, 58, 0, 0, 0, 0, 0, 3, 4,
+ 5, 230, 0, 0, 6, 0, 0, 0, 0, 7,
+ 8, 9, 10, 0, 11, 12, 13, 14, 0, 15,
+ 16, 0, 0, 17, 18, 19, 20, 0, 3, 4,
+ 5, 0, 0, 0, 6, 0, 0, 0, 0, 7,
+ 8, 9, 10, 0, 11, 12, 13, 231, 0, 15,
+ 16, 0, 0, 17, 18, 19, 20, 81, 0, 0,
+ 0, 75, 75, 75, 75, 75, 75, 75, 58, 0,
+ 58, 58, 58, 58, 58, 58, 58, 58, 58, 58,
+ 0, 58, 58, 58, 58, 58, 58, 58, 0, 0,
+ 58, 58, 0, 58, 58, 58, 0, 58, 58, 58,
+ 58, 120, 58, 58, 0, 0, 58, 58, 58, 58,
+ 120, 0, 120, 120, 120, 120, 120, 120, 120, 120,
+ 120, 120, 0, 120, 120, 120, 120, 120, 120, 120,
+ 0, 0, 120, 120, 0, 120, 120, 120, 0, 120,
+ 120, 120, 120, 0, 120, 120, 0, 0, 120, 120,
+ 120, 120, 38, 38, 38, 0, 0, 38, 38, 38,
+ 39, 39, 39, 0, 0, 39, 39, 39, 38, 0,
+ 0, 0, 121, 121, 121, 0, 39, 121, 121, 121,
+ 122, 122, 122, 0, 0, 122, 122, 122, 121, 0,
+ 0, 0, 123, 123, 123, 38, 122, 123, 123, 123,
+ 124, 124, 124, 39, 0, 124, 124, 124, 123, 0,
+ 0, 0, 125, 125, 125, 121, 124, 125, 125, 125,
+ 126, 126, 126, 122, 0, 126, 126, 126, 125, 0,
+ 0, 0, 127, 127, 127, 123, 126, 127, 127, 127,
+ 53, 53, 53, 124, 0, 53, 53, 53, 127, 0,
+ 0, 0, 0, 175, 0, 125, 53, 0, 0, 0,
+ 0, 0, 112, 126, 113, 114, 115, 116, 117, 118,
+ 119, 120, 121, 122, 0, 127, 0, 0, 0, 0,
+ 293, 0, 0, 53, 0, 0, 0, 0, 0, 112,
+ 176, 113, 114, 115, 116, 117, 118, 119, 120, 121,
+ 122, 0, 0, 0, 0, 0, 0, 316, 103, 104,
+ 105, 106, 107, 108, 109, 0, 112, 294, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 0, 0,
+ 0, 0, 0, 0, 3, 4, 5, 0, 0, 110,
+ 6, 0, 0, 0, 317, 7, 8, 9, 69, 0,
+ 11, 12, 13, 70, 79, 15, 16, 0, 0, 17,
+ 18, 19, 20, 3, 4, 5, 0, 0, 0, 6,
+ 0, 0, 0, 0, 7, 8, 9, 10, 240, 11,
+ 12, 13, 14, 0, 15, 16, 0, 0, 17, 18,
+ 19, 20, 3, 4, 5, 0, 0, 0, 6, 0,
+ 0, 0, 0, 7, 8, 9, 10, 280, 11, 12,
+ 13, 14, 0, 15, 16, 0, 0, 17, 18, 19,
+ 20, 3, 4, 5, 0, 0, 0, 6, 0, 0,
+ 0, 0, 7, 8, 9, 69, 0, 11, 12, 13,
+ 70, 0, 15, 16, 0, 0, 17, 18, 19, 20,
+ 3, 4, 5, 0, 0, 0, 6, 0, 0, 0,
+ 0, 7, 8, 9, 10, 0, 11, 12, 13, 14,
+ 0, 15, 16, 0, 0, 17, 18, 19, 20, 3,
+ 4, 5, 0, 0, 0, 6, 0, 0, 0, 0,
+ 7, 8, 9, 243, 0, 11, 12, 13, 14, 0,
+ 15, 16, 0, 0, 17, 18, 19, 20, 3, 4,
+ 5, 0, 0, 0, 6, 0, 0, 0, 0, 7,
+ 8, 9, 10, 0, 11, 12, 13, 257, 0, 15,
+ 16, 0, 0, 17, 18, 19, 20, 164, 164, 164,
+ 0, 0, 0, 164, 0, 0, 0, 0, 164, 164,
+ 164, 164, 0, 164, 164, 164, 164, 0, 164, 164,
+ 0, 0, 164, 164, 164, 164, 112, 0, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 112, 0,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
+ 0, 0, 0, 112, 176, 113, 114, 115, 116, 117,
+ 118, 119, 120, 121, 122, 112, 268, 113, 114, 115,
+ 116, 117, 118, 119, 120, 121, 122, 0, 0, 0,
+ 112, 272, 113, 114, 115, 116, 117, 118, 119, 120,
+ 121, 122, 112, 275, 113, 114, 115, 116, 117, 118,
+ 119, 120, 121, 122, 43, 44, 0, 0, 278, 0,
+ 0, 0, 0, 0, 0, 0, 0, 239, 0, 112,
+ 321, 113, 114, 115, 116, 117, 118, 119, 120, 121,
+ 122, 112, 274, 113, 114, 115, 116, 117, 118, 119,
+ 120, 121, 122, 0, 0, 0, 112, 0, 113, 114,
+ 115, 116, 117, 118, 119, 120, 121, 122, 111, 0,
+ 0, 0, 0, 0, 0, 0, 0, 112, 0, 113,
+ 114, 115, 116, 117, 118, 119, 120, 121, 122, 261,
+ 0, 0, 0, 0, 0, 0, 0, 0, 112, 0,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121, 122,
+ 262, 0, 0, 0, 0, 0, 0, 0, 0, 112,
+ 0, 113, 114, 115, 116, 117, 118, 119, 120, 121,
+ 122, 112, 299, 113, 114, 115, 116, 117, 118, 119,
+ 120, 121, 122, 112, 0, 113, 114, 115, 116, 117,
+ 118, 119, 120, 121, 122, 114, 115, 116, 117, 118,
+ 119, 120, 121, 122,
+};
+short yycheck[] = { 7,
+ 0, 261, 4, 5, 6, 7, 8, 298, 10, 58,
+ 10, 278, 61, 62, 301, 64, 265, 15, 16, 68,
+ 0, 1, 265, 265, 24, 27, 301, 265, 265, 31,
+ 301, 298, 40, 265, 220, 296, 297, 265, 40, 301,
+ 177, 259, 260, 261, 24, 301, 264, 265, 266, 298,
+ 301, 259, 260, 302, 54, 35, 56, 275, 266, 302,
+ 302, 259, 260, 63, 302, 302, 301, 69, 66, 69,
+ 302, 295, 70, 75, 302, 299, 300, 301, 76, 264,
+ 265, 79, 306, 306, 302, 259, 260, 298, 88, 89,
+ 264, 265, 266, 306, 302, 308, 96, 97, 98, 99,
+ 100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
+ 90, 91, 249, 250, 251, 263, 116, 117, 118, 119,
+ 120, 121, 122, 125, 126, 127, 128, 129, 302, 131,
+ 316, 301, 132, 259, 260, 135, 262, 264, 265, 276,
+ 299, 300, 301, 123, 144, 145, 42, 306, 148, 259,
+ 260, 149, 264, 265, 50, 51, 266, 301, 54, 55,
+ 56, 264, 265, 163, 60, 165, 297, 4, 5, 6,
+ 306, 8, 172, 264, 265, 175, 287, 177, 259, 260,
+ 180, 181, 267, 268, 269, 270, 271, 272, 273, 238,
+ 27, 259, 260, 242, 31, 299, 300, 301, 266, 306,
+ 200, 201, 202, 203, 259, 260, 261, 259, 260, 264,
+ 265, 266, 220, 298, 259, 260, 261, 302, 220, 274,
+ 275, 276, 277, 278, 279, 295, 322, 123, 317, 259,
+ 260, 261, 259, 260, 264, 265, 266, 264, 265, 266,
+ 263, 243, 302, 243, 274, 275, 276, 302, 263, 249,
+ 250, 251, 263, 278, 150, 302, 265, 153, 302, 155,
+ 265, 265, 262, 266, 290, 291, 292, 263, 301, 269,
+ 296, 297, 302, 302, 306, 302, 276, 259, 260, 261,
+ 298, 302, 282, 243, 284, 285, 306, 306, 125, 126,
+ 127, 128, 129, 256, 131, 259, 260, 261, 261, 306,
+ 262, 298, 181, 302, 259, 260, 261, 302, 316, 264,
+ 265, 266, 302, 302, 316, 315, 302, 24, 298, 274,
+ 275, 276, 277, -1, 287, 288, 289, -1, -1, -1,
+ 293, -1, -1, -1, -1, 298, 299, 300, 301, -1,
+ 303, 304, 305, 306, -1, 308, 309, 302, -1, 312,
+ 313, 314, 315, 259, 260, 261, -1, -1, 264, 265,
+ 266, 324, 325, -1, -1, -1, 329, -1, 274, 275,
+ 276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
+ -1, -1, -1, -1, -1, 256, -1, 283, 259, 260,
+ 261, 262, -1, 259, 260, 261, 302, -1, 264, 265,
+ 266, -1, 298, 288, 289, 290, 291, 292, -1, 275,
+ -1, 296, 297, -1, -1, -1, 287, 288, 289, -1,
+ -1, -1, 293, -1, 320, 321, -1, 298, 299, 300,
+ 301, -1, 303, 304, 305, 306, 302, 308, 309, 310,
+ 311, 312, 313, 314, 315, 316, 317, 318, 319, 320,
+ 321, -1, 323, -1, -1, 326, 327, 328, 256, -1,
+ -1, 259, 260, 261, 262, -1, 259, 260, 261, -1,
+ -1, 264, 265, 266, 278, 279, 280, 281, 282, 283,
+ 284, 285, 275, 280, 281, 282, 283, 284, 285, 287,
+ 288, 289, -1, -1, -1, 293, -1, -1, -1, -1,
+ 298, 299, 300, 301, -1, 303, 304, 305, 306, 302,
+ 308, 309, 310, 311, 312, 313, 314, 315, 316, 317,
+ 318, 319, 320, 321, -1, 323, -1, -1, 326, 327,
+ 328, 256, -1, -1, 259, 260, 261, -1, -1, 259,
+ 260, 261, -1, -1, 264, 265, 266, -1, 267, 268,
+ 269, 270, 271, 272, 273, 275, -1, -1, -1, -1,
+ -1, -1, 287, 288, 289, -1, -1, -1, 293, -1,
+ -1, -1, -1, 298, 299, 300, 301, -1, 303, 304,
+ 305, 306, 302, 308, 309, 310, 311, 312, 313, 314,
+ 315, 316, 317, 318, 319, 320, 321, -1, 323, -1,
+ -1, 326, 327, 328, 256, -1, -1, 259, 260, 261,
+ -1, -1, 259, 260, 261, -1, -1, 264, 265, 266,
+ -1, -1, -1, -1, -1, -1, -1, -1, 275, -1,
+ -1, -1, -1, -1, -1, 287, 288, 289, -1, -1,
+ -1, 293, -1, -1, -1, -1, 298, 299, 300, 301,
+ -1, 303, 304, 305, 306, 302, 308, 309, 310, 311,
+ 312, 313, 314, 315, 316, 317, 318, 319, 320, 321,
+ -1, 323, -1, -1, 326, 327, 328, 259, 260, 261,
+ -1, 263, 264, 265, 266, 267, 268, 269, 270, 271,
+ 272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
+ 282, 283, 284, 285, -1, 287, 288, 289, 290, 291,
+ 292, 293, -1, 295, 296, 297, 298, 299, 300, 301,
+ 302, 303, 304, 305, 306, -1, 308, 309, -1, -1,
+ 312, 313, 314, 315, 259, 260, 261, -1, 263, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+ 285, -1, 287, 288, 289, 290, 291, 292, 293, -1,
+ 295, 296, 297, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, -1, 308, 309, -1, -1, 312, 313, 314,
+ 315, 259, 260, 261, -1, 263, 264, 265, 266, 267,
+ 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
+ 278, 279, 280, 281, 282, 283, 284, 285, -1, 287,
+ 288, 289, 290, 291, 292, 293, -1, 295, 296, 297,
+ -1, 299, 300, 301, 302, 303, 304, 305, 306, -1,
+ 308, 309, -1, -1, 312, 313, 314, 315, 259, 260,
+ 261, -1, 263, 264, 265, 266, 267, 268, 269, 270,
+ 271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
+ 281, 282, 283, 284, 285, -1, 287, 288, 289, 290,
+ 291, 292, 293, -1, -1, 296, 297, -1, 299, 300,
+ 301, 302, 303, 304, 305, 306, -1, 308, 309, -1,
+ -1, 312, 313, 314, 315, 259, 260, 261, -1, -1,
+ 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
+ 274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
+ 284, 285, -1, 287, 288, 289, 290, 291, 292, 293,
+ -1, 295, 296, 297, -1, 299, 300, 301, 302, 303,
+ 304, 305, 306, -1, 308, 309, -1, -1, 312, 313,
+ 314, 315, 259, 260, 261, -1, -1, 264, 265, 266,
+ 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
+ 277, 278, 279, 280, 281, 282, 283, 284, 285, -1,
+ 287, 288, 289, 290, 291, 292, 293, -1, -1, 296,
+ 297, 298, 299, 300, 301, 302, 303, 304, 305, 306,
+ -1, 308, 309, -1, -1, 312, 313, 314, 315, 259,
+ 260, 261, -1, -1, 264, 265, 266, 267, 268, 269,
+ 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
+ 280, 281, 282, 283, 284, 285, -1, 287, 288, 289,
+ 290, 291, 292, 293, -1, 295, 296, -1, 298, 299,
+ 300, 301, 302, 303, 304, 305, 306, -1, 308, 309,
+ -1, -1, 312, 313, 314, 315, 259, 260, 261, -1,
+ -1, 264, 265, 266, 267, 268, 269, 270, 271, 272,
+ 273, 274, 275, 276, 277, 278, 279, 280, 281, 282,
+ 283, 284, 285, -1, 287, 288, 289, 290, 291, 292,
+ 293, -1, 295, 296, 297, -1, 299, 300, 301, 302,
+ 303, 304, 305, 306, -1, 308, 309, -1, -1, 312,
+ 313, 314, 315, 259, 260, 261, -1, -1, 264, 265,
+ 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
+ 276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
+ -1, 287, 288, 289, 290, 291, 292, 293, -1, 295,
+ -1, -1, 298, 299, 300, 301, 302, 303, 304, 305,
+ 306, -1, 308, 309, -1, -1, 312, 313, 314, 315,
+ 259, 260, 261, -1, -1, 264, 265, 266, 267, 268,
+ 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
+ 279, 280, 281, 282, 283, 284, 285, -1, 287, 288,
+ 289, 290, 291, 292, 293, -1, 295, -1, -1, 298,
+ 299, 300, 301, 302, 303, 304, 305, 306, -1, 308,
+ 309, -1, -1, 312, 313, 314, 315, 259, 260, 261,
+ -1, -1, 264, 265, 266, 267, 268, 269, 270, 271,
+ 272, 273, 274, 275, 276, 277, 278, 279, 280, 281,
+ 282, 283, 284, 285, -1, 287, 288, 289, 290, 291,
+ 292, 293, -1, 295, -1, -1, 298, 299, 300, 301,
+ 302, 303, 304, 305, 306, -1, 308, 309, -1, -1,
+ 312, 313, 314, 315, 259, 260, 261, -1, -1, 264,
+ 265, 266, 267, 268, 269, 270, 271, 272, 273, 274,
+ 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+ 285, -1, 287, 288, 289, 290, 291, 292, 293, -1,
+ 295, -1, -1, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, -1, 308, 309, -1, -1, 312, 313, 314,
+ 315, 259, 260, 261, -1, -1, 264, 265, 266, 267,
+ 268, 269, 270, 271, 272, 273, 274, 275, 276, 277,
+ 278, 279, 280, 281, 282, 283, 284, 285, -1, 287,
+ 288, 289, 290, 291, 292, 293, -1, 295, -1, -1,
+ 298, 299, 300, 301, 302, 303, 304, 305, 306, -1,
+ 308, 309, -1, -1, 312, 313, 314, 315, 259, 260,
+ 261, -1, -1, 264, 265, 266, 267, 268, 269, 270,
+ 271, 272, 273, 274, 275, 276, 277, 278, 279, 280,
+ 281, 282, 283, 284, 285, -1, 287, 288, 289, 290,
+ 291, 292, 293, -1, 295, -1, -1, 298, 299, 300,
+ 301, 302, 303, 304, 305, 306, -1, 308, 309, -1,
+ -1, 312, 313, 314, 315, 259, 260, 261, -1, -1,
+ 264, 265, 266, 267, 268, 269, 270, 271, 272, 273,
+ 274, 275, 276, 277, 278, 279, 280, 281, 282, 283,
+ 284, 285, -1, 287, 288, 289, 290, 291, 292, 293,
+ -1, 295, -1, -1, 298, 299, 300, 301, 302, 303,
+ 304, 305, 306, -1, 308, 309, -1, -1, 312, 313,
+ 314, 315, 259, 260, 261, -1, -1, 264, 265, 266,
+ 267, 268, 269, 270, 271, 272, 273, 274, 275, 276,
+ 277, 278, 279, 280, 281, 282, 283, 284, 285, -1,
+ 287, 288, 289, 290, 291, 292, 293, -1, -1, 296,
+ 297, -1, 299, 300, 301, 302, 303, 304, 305, 306,
+ -1, 308, 309, -1, -1, 312, 313, 314, 315, 259,
+ 260, 261, -1, -1, 264, 265, 266, 267, 268, 269,
+ 270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
+ 280, 281, 282, 283, 284, 285, -1, 287, 288, 289,
+ 290, 291, 292, 293, -1, 295, 296, 297, 298, -1,
+ -1, -1, 302, 303, 304, 305, -1, -1, 308, 309,
+ -1, -1, 312, 313, 314, 315, 259, 260, 261, -1,
+ -1, 264, 265, 266, 267, 268, 269, 270, 271, 272,
+ 273, 274, 275, 276, 277, 278, 279, 280, 281, 282,
+ 283, 284, 285, -1, 287, 288, 289, 290, 291, 292,
+ 293, -1, -1, 296, 297, 298, -1, -1, -1, 302,
+ 303, 304, 305, -1, -1, 308, 309, -1, -1, 312,
+ 313, 314, 315, 259, 260, 261, -1, -1, 264, 265,
+ 266, 267, 268, 269, 270, 271, 272, 273, 274, 275,
+ 276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
+ -1, 287, 288, 289, -1, -1, -1, 293, -1, 295,
+ -1, -1, 298, 299, 300, 301, 302, 303, 304, 305,
+ 306, -1, 308, 309, -1, -1, 312, 313, 314, 315,
+ 259, 260, 261, -1, -1, 264, 265, 266, 267, 268,
+ 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
+ 279, 280, 281, 282, 283, 284, 285, -1, 287, 288,
+ 289, -1, -1, -1, 293, -1, 295, -1, -1, 298,
+ 299, 300, 301, 302, 303, 304, 305, 306, -1, 308,
+ 309, -1, -1, 312, 313, 314, 315, 259, 260, 261,
+ -1, -1, 264, 265, 266, -1, -1, -1, -1, -1,
+ -1, -1, 274, 275, 276, 277, 278, 279, 280, 281,
+ 282, 283, 284, 285, -1, 287, 288, 289, 290, 291,
+ 292, 293, -1, -1, 296, 297, -1, 299, 300, 301,
+ 302, 303, 304, 305, 306, -1, 308, 309, -1, -1,
+ 312, 313, 314, 315, 259, 260, 261, -1, -1, 264,
+ 265, 266, -1, -1, -1, -1, -1, -1, -1, 274,
+ 275, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+ 285, -1, 287, -1, -1, -1, -1, -1, 293, -1,
+ -1, -1, -1, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, -1, 308, 309, -1, -1, 312, 313, 314,
+ 315, 259, 260, 261, -1, -1, 264, 265, 266, -1,
+ -1, -1, -1, -1, -1, -1, 274, 275, 276, 277,
+ 278, 279, 280, 281, 282, 283, 284, 285, -1, 287,
+ 259, 260, -1, -1, -1, 293, -1, -1, -1, -1,
+ 298, 299, 300, 301, 302, 303, 304, 305, 306, -1,
+ 308, 309, -1, -1, 312, 313, 314, 315, 287, 288,
+ 289, -1, -1, -1, 293, -1, -1, -1, -1, 298,
+ 299, 300, 301, -1, 303, 304, 305, 306, -1, 308,
+ 309, -1, -1, 312, 313, 314, 315, 260, -1, -1,
+ 263, -1, -1, -1, 267, 268, 269, 270, 271, 272,
+ 273, 274, -1, 276, 277, -1, 279, 280, 281, 282,
+ 283, 284, 285, -1, 287, 288, 289, 290, 291, 292,
+ 293, 260, -1, 296, 297, -1, 299, 300, 301, -1,
+ 303, 304, 305, 306, -1, 308, 309, -1, -1, 312,
+ 313, 314, 315, -1, -1, -1, -1, -1, 287, 288,
+ 289, 260, -1, -1, 293, -1, -1, -1, -1, 298,
+ 299, 300, 301, -1, 303, 304, 305, 306, -1, 308,
+ 309, -1, -1, 312, 313, 314, 315, -1, 287, 288,
+ 289, -1, -1, -1, 293, -1, -1, -1, -1, 298,
+ 299, 300, 301, -1, 303, 304, 305, 306, -1, 308,
+ 309, -1, -1, 312, 313, 314, 315, 263, -1, -1,
+ -1, 267, 268, 269, 270, 271, 272, 273, 274, -1,
+ 276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
+ -1, 287, 288, 289, 290, 291, 292, 293, -1, -1,
+ 296, 297, -1, 299, 300, 301, -1, 303, 304, 305,
+ 306, 265, 308, 309, -1, -1, 312, 313, 314, 315,
+ 274, -1, 276, 277, 278, 279, 280, 281, 282, 283,
+ 284, 285, -1, 287, 288, 289, 290, 291, 292, 293,
+ -1, -1, 296, 297, -1, 299, 300, 301, -1, 303,
+ 304, 305, 306, -1, 308, 309, -1, -1, 312, 313,
+ 314, 315, 259, 260, 261, -1, -1, 264, 265, 266,
+ 259, 260, 261, -1, -1, 264, 265, 266, 275, -1,
+ -1, -1, 259, 260, 261, -1, 275, 264, 265, 266,
+ 259, 260, 261, -1, -1, 264, 265, 266, 275, -1,
+ -1, -1, 259, 260, 261, 302, 275, 264, 265, 266,
+ 259, 260, 261, 302, -1, 264, 265, 266, 275, -1,
+ -1, -1, 259, 260, 261, 302, 275, 264, 265, 266,
+ 259, 260, 261, 302, -1, 264, 265, 266, 275, -1,
+ -1, -1, 259, 260, 261, 302, 275, 264, 265, 266,
+ 259, 260, 261, 302, -1, 264, 265, 266, 275, -1,
+ -1, -1, -1, 265, -1, 302, 275, -1, -1, -1,
+ -1, -1, 274, 302, 276, 277, 278, 279, 280, 281,
+ 282, 283, 284, 285, -1, 302, -1, -1, -1, -1,
+ 265, -1, -1, 302, -1, -1, -1, -1, -1, 274,
+ 302, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+ 285, -1, -1, -1, -1, -1, -1, 265, 267, 268,
+ 269, 270, 271, 272, 273, -1, 274, 302, 276, 277,
+ 278, 279, 280, 281, 282, 283, 284, 285, -1, -1,
+ -1, -1, -1, -1, 287, 288, 289, -1, -1, 298,
+ 293, -1, -1, -1, 302, 298, 299, 300, 301, -1,
+ 303, 304, 305, 306, 307, 308, 309, -1, -1, 312,
+ 313, 314, 315, 287, 288, 289, -1, -1, -1, 293,
+ -1, -1, -1, -1, 298, 299, 300, 301, 302, 303,
+ 304, 305, 306, -1, 308, 309, -1, -1, 312, 313,
+ 314, 315, 287, 288, 289, -1, -1, -1, 293, -1,
+ -1, -1, -1, 298, 299, 300, 301, 302, 303, 304,
+ 305, 306, -1, 308, 309, -1, -1, 312, 313, 314,
+ 315, 287, 288, 289, -1, -1, -1, 293, -1, -1,
+ -1, -1, 298, 299, 300, 301, -1, 303, 304, 305,
+ 306, -1, 308, 309, -1, -1, 312, 313, 314, 315,
+ 287, 288, 289, -1, -1, -1, 293, -1, -1, -1,
+ -1, 298, 299, 300, 301, -1, 303, 304, 305, 306,
+ -1, 308, 309, -1, -1, 312, 313, 314, 315, 287,
+ 288, 289, -1, -1, -1, 293, -1, -1, -1, -1,
+ 298, 299, 300, 301, -1, 303, 304, 305, 306, -1,
+ 308, 309, -1, -1, 312, 313, 314, 315, 287, 288,
+ 289, -1, -1, -1, 293, -1, -1, -1, -1, 298,
+ 299, 300, 301, -1, 303, 304, 305, 306, -1, 308,
+ 309, -1, -1, 312, 313, 314, 315, 287, 288, 289,
+ -1, -1, -1, 293, -1, -1, -1, -1, 298, 299,
+ 300, 301, -1, 303, 304, 305, 306, -1, 308, 309,
+ -1, -1, 312, 313, 314, 315, 274, -1, 276, 277,
+ 278, 279, 280, 281, 282, 283, 284, 285, 274, -1,
+ 276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
+ -1, -1, -1, 274, 302, 276, 277, 278, 279, 280,
+ 281, 282, 283, 284, 285, 274, 302, 276, 277, 278,
+ 279, 280, 281, 282, 283, 284, 285, -1, -1, -1,
+ 274, 302, 276, 277, 278, 279, 280, 281, 282, 283,
+ 284, 285, 274, 302, 276, 277, 278, 279, 280, 281,
+ 282, 283, 284, 285, 259, 260, -1, -1, 302, -1,
+ -1, -1, -1, -1, -1, -1, -1, 260, -1, 274,
+ 302, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+ 285, 274, 260, 276, 277, 278, 279, 280, 281, 282,
+ 283, 284, 285, -1, -1, -1, 274, -1, 276, 277,
+ 278, 279, 280, 281, 282, 283, 284, 285, 265, -1,
+ -1, -1, -1, -1, -1, -1, -1, 274, -1, 276,
+ 277, 278, 279, 280, 281, 282, 283, 284, 285, 265,
+ -1, -1, -1, -1, -1, -1, -1, -1, 274, -1,
+ 276, 277, 278, 279, 280, 281, 282, 283, 284, 285,
+ 265, -1, -1, -1, -1, -1, -1, -1, -1, 274,
+ -1, 276, 277, 278, 279, 280, 281, 282, 283, 284,
+ 285, 274, 275, 276, 277, 278, 279, 280, 281, 282,
+ 283, 284, 285, 274, -1, 276, 277, 278, 279, 280,
+ 281, 282, 283, 284, 285, 277, 278, 279, 280, 281,
+ 282, 283, 284, 285,
+};
+#define YYFINAL 24
+#ifndef YYDEBUG
+#define YYDEBUG 0
+#endif
+#define YYMAXTOKEN 329
+#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,0,
+0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"UNEXPECTED","BAD_DECIMAL","NL",
+"SEMI_COLON","LBRACE","RBRACE","LBOX","RBOX","COMMA","IO_OUT","ASSIGN",
+"ADD_ASG","SUB_ASG","MUL_ASG","DIV_ASG","MOD_ASG","POW_ASG","QMARK","COLON",
+"OR","AND","IN","MATCH","EQ","NEQ","LT","LTE","GT","GTE","CAT","GETLINE","PLUS",
+"MINUS","MUL","DIV","MOD","NOT","UMINUS","IO_IN","PIPE","POW","INC_or_DEC",
+"DOLLAR","FIELD","LPAREN","RPAREN","DOUBLE","STRING_","RE","ID","D_ID",
+"FUNCT_ID","BUILTIN","PRINT","PRINTF","SPLIT","MATCH_FUNC","SUB","GSUB","DO",
+"WHILE","FOR","BREAK","CONTINUE","IF","ELSE","DELETE","BEGIN","END","EXIT",
+"NEXT","RETURN","FUNCTION",
+};
+char *yyrule[] = {
+"$accept : program",
+"program : program_block",
+"program : program program_block",
+"program_block : PA_block",
+"program_block : function_def",
+"program_block : error block",
+"PA_block : block",
+"$$1 :",
+"PA_block : BEGIN $$1 block",
+"$$2 :",
+"PA_block : END $$2 block",
+"$$3 :",
+"PA_block : expr $$3 block_or_separator",
+"$$4 :",
+"$$5 :",
+"PA_block : expr COMMA $$4 expr $$5 block_or_separator",
+"block : LBRACE statement_list RBRACE",
+"block : LBRACE error RBRACE",
+"block_or_separator : block",
+"block_or_separator : separator",
+"statement_list : statement",
+"statement_list : statement_list statement",
+"statement : block",
+"statement : expr separator",
+"statement : separator",
+"statement : error separator",
+"statement : BREAK separator",
+"statement : CONTINUE separator",
+"statement : return_statement",
+"statement : NEXT separator",
+"separator : NL",
+"separator : SEMI_COLON",
+"expr : cat_expr",
+"expr : lvalue ASSIGN expr",
+"expr : lvalue ADD_ASG expr",
+"expr : lvalue SUB_ASG expr",
+"expr : lvalue MUL_ASG expr",
+"expr : lvalue DIV_ASG expr",
+"expr : lvalue MOD_ASG expr",
+"expr : lvalue POW_ASG expr",
+"expr : expr EQ expr",
+"expr : expr NEQ expr",
+"expr : expr LT expr",
+"expr : expr LTE expr",
+"expr : expr GT expr",
+"expr : expr GTE expr",
+"expr : expr MATCH expr",
+"$$6 :",
+"expr : expr OR $$6 expr",
+"$$7 :",
+"expr : expr AND $$7 expr",
+"$$8 :",
+"$$9 :",
+"expr : expr QMARK $$8 expr COLON $$9 expr",
+"cat_expr : p_expr",
+"cat_expr : cat_expr p_expr",
+"p_expr : DOUBLE",
+"p_expr : STRING_",
+"p_expr : ID",
+"p_expr : LPAREN expr RPAREN",
+"p_expr : RE",
+"p_expr : p_expr PLUS p_expr",
+"p_expr : p_expr MINUS p_expr",
+"p_expr : p_expr MUL p_expr",
+"p_expr : p_expr DIV p_expr",
+"p_expr : p_expr MOD p_expr",
+"p_expr : p_expr POW p_expr",
+"p_expr : NOT p_expr",
+"p_expr : PLUS p_expr",
+"p_expr : MINUS p_expr",
+"p_expr : builtin",
+"p_expr : ID INC_or_DEC",
+"p_expr : INC_or_DEC lvalue",
+"p_expr : field INC_or_DEC",
+"p_expr : INC_or_DEC field",
+"lvalue : ID",
+"arglist :",
+"arglist : args",
+"args : expr",
+"args : args COMMA expr",
+"builtin : BUILTIN mark LPAREN arglist RPAREN",
+"mark :",
+"statement : print mark pr_args pr_direction separator",
+"print : PRINT",
+"print : PRINTF",
+"pr_args : arglist",
+"pr_args : LPAREN arg2 RPAREN",
+"pr_args : LPAREN RPAREN",
+"arg2 : expr COMMA expr",
+"arg2 : arg2 COMMA expr",
+"pr_direction :",
+"pr_direction : IO_OUT expr",
+"if_front : IF LPAREN expr RPAREN",
+"statement : if_front statement",
+"else : ELSE",
+"statement : if_front statement else statement",
+"do : DO",
+"statement : do statement WHILE LPAREN expr RPAREN separator",
+"while_front : WHILE LPAREN expr RPAREN",
+"statement : while_front statement",
+"statement : for1 for2 for3 statement",
+"for1 : FOR LPAREN SEMI_COLON",
+"for1 : FOR LPAREN expr SEMI_COLON",
+"for2 : SEMI_COLON",
+"for2 : expr SEMI_COLON",
+"for3 : RPAREN",
+"for3 : expr RPAREN",
+"expr : expr IN ID",
+"expr : LPAREN arg2 RPAREN IN ID",
+"lvalue : ID mark LBOX args RBOX",
+"p_expr : ID mark LBOX args RBOX",
+"p_expr : ID mark LBOX args RBOX INC_or_DEC",
+"statement : DELETE ID mark LBOX args RBOX separator",
+"array_loop_front : FOR LPAREN ID IN ID RPAREN",
+"statement : array_loop_front statement",
+"field : FIELD",
+"field : DOLLAR D_ID",
+"field : DOLLAR D_ID mark LBOX args RBOX",
+"field : DOLLAR p_expr",
+"field : LPAREN field RPAREN",
+"p_expr : field",
+"expr : field ASSIGN expr",
+"expr : field ADD_ASG expr",
+"expr : field SUB_ASG expr",
+"expr : field MUL_ASG expr",
+"expr : field DIV_ASG expr",
+"expr : field MOD_ASG expr",
+"expr : field POW_ASG expr",
+"p_expr : split_front split_back",
+"split_front : SPLIT LPAREN expr COMMA ID",
+"split_back : RPAREN",
+"split_back : COMMA expr RPAREN",
+"p_expr : MATCH_FUNC LPAREN expr COMMA re_arg RPAREN",
+"re_arg : expr",
+"statement : EXIT separator",
+"statement : EXIT expr separator",
+"return_statement : RETURN separator",
+"return_statement : RETURN expr separator",
+"p_expr : getline",
+"p_expr : getline fvalue",
+"p_expr : getline_file p_expr",
+"p_expr : p_expr PIPE GETLINE",
+"p_expr : p_expr PIPE GETLINE fvalue",
+"getline : GETLINE",
+"fvalue : lvalue",
+"fvalue : field",
+"getline_file : getline IO_IN",
+"getline_file : getline fvalue IO_IN",
+"p_expr : sub_or_gsub LPAREN re_arg COMMA expr sub_back",
+"sub_or_gsub : SUB",
+"sub_or_gsub : GSUB",
+"sub_back : RPAREN",
+"sub_back : COMMA fvalue RPAREN",
+"function_def : funct_start block",
+"funct_start : funct_head LPAREN f_arglist RPAREN",
+"funct_head : FUNCTION ID",
+"funct_head : FUNCTION FUNCT_ID",
+"f_arglist :",
+"f_arglist : f_args",
+"f_args : ID",
+"f_args : f_args COMMA ID",
+"p_expr : FUNCT_ID mark call_args",
+"call_args : LPAREN RPAREN",
+"call_args : ca_front ca_back",
+"ca_front : LPAREN",
+"ca_front : ca_front expr COMMA",
+"ca_front : ca_front ID COMMA",
+"ca_back : expr RPAREN",
+"ca_back : ID RPAREN",
+};
+#endif
+#ifdef YYPURE
+#undef YYGLOBAL
+#define YYLEX() yylex(&yylval)
+#else
+#define YYLEX() yylex()
+#endif
+
+#define yyclearin (yychar=(-1))
+#define yyerrok (yyerrflag=0)
+#ifdef YYSTACKSIZE
+#ifndef YYMAXDEPTH
+#define YYMAXDEPTH YYSTACKSIZE
+#endif
+#else
+#ifdef YYMAXDEPTH
+#define YYSTACKSIZE YYMAXDEPTH
+#else
+#define YYSTACKSIZE 500
+#define YYMAXDEPTH 500
+#endif
+#endif
+int yydebug;
+#ifndef YYPURE
+YYSTYPE yylval;
+#endif
+
+#ifdef YYGLOBAL
+int yynerrs;
+int yyerrflag;
+int yychar;
+short *yyssp;
+YYSTYPE *yyvsp;
+YYSTYPE yyval;
+short yyss[YYSTACKSIZE];
+YYSTYPE yyvs[YYSTACKSIZE];
+#endif
+#define yystacksize YYSTACKSIZE
+#line 1041 "parse.y"
+
+/* resize the code for a user function */
+
+static void resize_fblock( fbp, code_ptr )
+ FBLOCK *fbp ;
+ INST *code_ptr ;
+{ int size ;
+
+ code1(_RET0) ; /* make sure there is always a return statement */
+
+#if !SM_DOS
+ if ( dump_code )
+ { code1(_HALT) ; /*stops da() */
+ add_to_fdump_list(fbp) ;
+ }
+#endif
+
+ if ( (size = code_ptr - fbp->code) > PAGE_SZ-1 )
+ overflow("function code size", PAGE_SZ ) ;
+
+ /* resize the code */
+ fbp->code = (INST*) zrealloc(fbp->code, PAGE_SZ*sizeof(INST),
+ size * sizeof(INST) ) ;