/********************************************************************
This file is part of the abs 0.907 distribution.  abs is a spreadsheet
with graphical user interface.

Copyright (C) 1998-2001  André Bertin (Andre.Bertin@ping.be) 

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version if in the same spirit as version 2.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

Concact: abs@pi.be
         http://home.pi.be/bertin/abs.shtml

*********************************************************************/






























#ifndef lint
static char yysccsid[] = "@(#)yaccpar	1.9 (Berkeley) 02/21/93";
#endif
#define YYBYACC 1
#define YYMAJOR 1
#define YYMINOR 9
#define yyclearin (yychar=(-1))
#define yyerrok (yyerrflag=0)
#define YYRECOVERING (yyerrflag!=0)
#define YYPREFIX "yy"
#line 2 "gram.y"
#include <stdio.h>
#include "gram_ext.h"
#include "object.h"
#include "node.h"
#include "interpret.h"
#include "module.h"

extern int yylex ();

#ifdef ABV4ABS
extern void XeditPrintf (char *buf);
int yyerror (char *s);
#endif








#define YYERROR_VERBOSE 10

#line 27 "gram.y"
typedef union
  {
    
    
    obj o;
    nodeType *nPtr;		
  }
YYSTYPE;
#line 43 "y.tab.c"
#define END_OF_MODULE 257
#define BEGIN_OF_MODULE 258
#define BEGIN_OF_FORMULA 259
#define END_OF_FORMULA 260
#define SUB 261
#define FUNCTION 262
#define ARG 263
#define END 264
#define IF 265
#define THEN 266
#define ENDIF 267
#define CASE 268
#define SELECT 269
#define CASEELSE 270
#define WHILE 271
#define WEND 272
#define DO 273
#define LOOP 274
#define UNTIL 275
#define LOOPUNTIL 276
#define LOOPWHILE 277
#define FOR 278
#define EACH 279
#define IN 280
#define EXIT 281
#define TO 282
#define STEP 283
#define NEXT 284
#define CALL 285
#define GOTO 286
#define CONTINUE 287
#define BREAK 288
#define RETURN 289
#define NEWLINE 290
#define INTEGER_CONSTANT 291
#define FLOATING_CONSTANT 292
#define STRING_CONSTANT 293
#define CHARACTER_CONSTANT 294
#define DATE_CONSTANT 295
#define IDENTIFIER 296
#define DEREFID 297
#define BASEOBJECT 298
#define RETURNOBJECT 299
#define FCTMEMBERFCT 300
#define OBJMEMBERFCT 301
#define BUILTINFUNCTION 302
#define USERFUNCTION 303
#define MEMBERFUNCTION 304
#define DEREFMF 305
#define ALONEOBJ 306
#define OPERATION 307
#define MEMBER 308
#define WITH 309
#define DIM 310
#define PUBLIC 311
#define STATIC 312
#define AS 313
#define NEW 314
#define CONST 315
#define CONSTCONST 316
#define DIMS 317
#define STATICS 318
#define PUBLICS 319
#define PRIVATE 320
#define PRIVATES 321
#define OBJECT 322
#define BYTE 323
#define INTEGER 324
#define LONG 325
#define SINGLE 326
#define DOUBLE 327
#define CURRENCY 328
#define STRING 329
#define BOOLEAN 330
#define VARIANT 331
#define DATE 332
#define OBJARG 333
#define SET 334
#define SUBARG 335
#define OPEN 336
#define SPC 337
#define TAB 338
#define CLOSE 339
#define PRINT 340
#define WRITE 341
#define INPUT 342
#define IDLIST 343
#define BYVAL 344
#define BYREF 345
#define OPTION 346
#define OUTPUT 347
#define BINARY 348
#define APPEND 349
#define RANDOM 350
#define NOT 351
#define AND 352
#define OR 353
#define XOR 354
#define EQV 355
#define IMP 356
#define EQ 357
#define NE 358
#define LT 359
#define GT 360
#define LE 361
#define GE 362
#define LIKE 363
#define LS 364
#define MOD 365
#define UMINUS 366
#define UPLUS 367
#define ELSE 368
#define YYERRCODE 256
short yylhs[] =
{-1,
 0, 0, 0, 0, 38, 39, 3, 3, 3, 4,
 4, 5, 1, 1, 1, 1, 1, 1, 1, 1,
 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
 6, 6, 6, 6, 28, 28, 16, 16, 16, 35,
 35, 35, 30, 30, 25, 25, 25, 29, 29, 34,
 34, 24, 24, 24, 24, 24, 24, 24, 24, 24,
 24, 24, 7, 7, 7, 7, 27, 27, 27, 27,
 27, 27, 27, 27, 8, 8, 8, 8, 8, 8,
 8, 8, 23, 23, 9, 9, 9, 9, 9, 9,
 31, 31, 31, 31, 31, 32, 32, 32, 36, 36,
 36, 36, 36, 33, 33, 10, 10, 10, 11, 11,
 11, 12, 12, 12, 18, 18, 17, 13, 13, 13,
 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
 2, 2, 2, 2, 2, 14, 14, 14, 14, 14,
 14, 37, 37, 37, 15, 15, 26, 19, 19, 19,
 19, 19, 19, 19, 20, 21, 22, 22,
};
short yylen[] =
{2,
 2, 3, 4, 4, 2, 2, 0, 1, 2, 2,
 2, 2, 1, 1, 1, 1, 1, 1, 1, 1,
 2, 2, 2, 2, 3, 2, 10, 10, 10, 10,
 9, 9, 2, 6, 4, 6, 0, 1, 1, 0,
 3, 5, 1, 1, 0, 2, 3, 0, 2, 0,
 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
 1, 1, 7, 10, 4, 7, 4, 4, 4, 4,
 5, 5, 5, 5, 6, 5, 6, 6, 6, 9,
 11, 8, 1, 2, 3, 2, 2, 2, 2, 2,
 5, 4, 4, 6, 2, 0, 5, 5, 1, 1,
 1, 1, 1, 1, 2, 3, 4, 4, 2, 3,
 1, 1, 3, 3, 1, 3, 4, 1, 1, 1,
 2, 2, 3, 3, 3, 3, 3, 3, 3, 3,
 3, 3, 3, 3, 3, 3, 3, 3, 2, 3,
 3, 3, 3, 3, 1, 1, 1, 1, 1, 1,
 1, 1, 2, 1, 1, 3, 1, 1, 2, 2,
 2, 2, 2, 2, 2, 2, 1, 2,
};
short yydefred[] =
{0,
 0, 0, 0, 0, 0, 1, 5, 0, 146, 147,
 152, 154, 155, 157, 0, 0, 0, 0, 0, 145,
 0, 0, 0, 158, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 8, 0, 13, 15, 16, 17, 14, 0, 0,
 0, 0, 0, 19, 0, 0, 122, 121, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 165, 0, 115, 0, 161, 0, 160, 0,
 164, 0, 153, 0, 0, 0, 0, 0, 0, 0,
 167, 0, 0, 0, 0, 0, 90, 89, 88, 87,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 12, 0, 0, 0, 0, 0, 0,
 95, 0, 0, 0, 0, 0, 0, 9, 2, 0,
 0, 0, 4, 143, 3, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 129, 156, 0, 109, 0, 0, 0,
 0, 166, 0, 0, 0, 0, 0, 0, 0, 168,
 0, 0, 0, 85, 0, 51, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 6,
 0, 0, 0, 0, 110, 0, 116, 39, 38, 0,
 0, 0, 65, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 99, 100, 101, 102, 103, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 76, 0, 0, 0, 0, 0, 0, 0,
 0, 52, 53, 54, 55, 56, 57, 58, 59, 60,
 61, 62, 46, 0, 35, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 41, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 75, 77, 0, 0, 0, 0,
 34, 47, 0, 0, 0, 0, 0, 0, 94, 0,
 0, 0, 0, 0, 63, 0, 0, 0, 0, 0,
 66, 0, 0, 0, 0, 0, 36, 0, 0, 0,
 0, 0, 0, 42, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 0, 82, 0, 0, 0,
 0, 0, 0, 97, 98, 31, 32, 0, 0, 0,
 0, 0, 0, 0, 80, 0, 0, 0, 0, 64,
 0, 29, 30, 27, 28, 81,
};
short yydgoto[] =
{4,
 50, 140, 51, 52, 53, 54, 55, 56, 57, 58,
 93, 179, 59, 20, 21, 220, 95, 96, 22, 23,
 99, 112, 357, 283, 234, 24, 262, 125, 285, 63,
 64, 250, 141, 197, 221, 247, 25, 5, 149,
};
short yysindex[] =
{44,
 -224, -206, 388, 0, 4274, 0, 0, -145, 0, 0,
 0, 0, 0, 0, 716, 716, 716, 716, 234, 0,
 -30, -175, -175, 0, -157, -142, -142, 716, -102, 716,
 -173, -216, -111, -142, 716, -142, -142, -133, -142, -142,
 -118, 4408, -214, 716, 211, 211, 211, 211, -142, -101,
 3404, 0, -101, 0, 0, 0, 0, 0, 110, -28,
 -175, -175, -121, 0, -78, 572, 0, 0, 615, -77,
 716, 716, 716, 716, 716, 716, 716, 716, 716, 716,
 716, 716, 716, 716, 716, 716, 716, 716, 716, -142,
 -142, 564, 0, -7, 0, 191, 0, -33, 0, -33,
 0, -33, 0, 120, 137, 1827, 716, 1769, 716, 716,
 0, 3486, 716, 187, -175, -175, 0, 0, 0, 0,
 -32, 2101, -29, -32, 213, -142, -142, 213, 213, 213,
 -142, -142, 213, 0, -22, -37, -175, 1912, 716, 2101,
 0, 239, 240, 246, 263, 30, 40, 0, 0, 30,
 716, -142, 0, 0, 0, 572, 572, 572, 572, 572,
 7, 7, 7, 7, 7, 7, 26, -27, -27, 203,
 203, 203, 203, 0, 0, 263, 0, 2101, 105, 248,
 -142, 0, -240, -240, 4356, 1769, 3486, 1769, 1769, 0,
 3538, 1958, 716, 0, 3486, 0, 3, -142, 141, 152,
 176, 177, 716, 716, -116, 2101, -213, 716, 716, 0,
 2101, 213, 716, 716, 0, 716, 0, 0, 0, -142,
 104, 195, 0, 3486, -212, 3620, 3486, 3486, -106, 716,
 1972, 3672, -127, 271, -32, -240, -240, -240, -240, 2101,
 2101, 0, 0, 0, 0, 0, 27, 299, 301, 716,
 79, 79, 2101, 2101, 2101, -31, -240, -101, -101, 3318,
 19, -85, 0, 3724, 3776, 716, 716, 1769, 716, 43,
 363, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 716, 0, 3, 206, 226, 264, 273,
 211, 716, 716, 79, 0, -142, 3486, 3486, 95, -101,
 -49, 1852, 94, 92, 0, 0, 2101, 2101, 3486, 1668,
 0, 0, 2101, 271, -101, -101, -101, -101, 0, 2013,
 2043, -31, 3828, 3880, 0, 3486, 4274, 3486, 4274, 3486,
 0, -45, 1875, 3962, 716, 3486, 0, 3486, 3486, 3486,
 3486, 302, 309, 0, 117, 113, 4014, 4274, 4274, 4274,
 4274, 4274, 3486, 4274, 3486, -142, 0, 1769, 3962, 4066,
 4118, 4170, 4222, 0, 0, 0, 0, 124, 4274, 4274,
 4274, 4274, 263, 3486, 0, 121, 128, 132, 133, 0,
 3962, 0, 0, 0, 0, 0,
};
short yyrindex[] =
{0,
 0, 0, 0, 0, 142, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 1797, 1137, 1194, 0, 114, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 83, 0, 0,
 86, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 341,
 -47, 11, 0, 0, 0, 2768, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 1343, 0, 740, 0, 863,
 0, 991, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 129, 0, 0, 344, 346, 0, 0, 0, 0,
 0, 118, 0, -38, 119, 0, 0, 125, 130, 131,
 0, 0, 134, 0, 0, 0, 0, 0, 0, -25,
 0, 0, 0, 0, 136, 3180, 0, 0, 0, 3266,
 0, 0, 0, 0, 0, 2777, 2828, 2907, 2928, 2939,
 2387, 2406, 2444, 2550, 2577, 2662, 2302, 2217, 2244, 1468,
 1523, 1626, 1682, 0, 0, 1018, 0, 16, 0, 0,
 0, 0, -1, -1, 0, 0, 139, 0, 0, 0,
 0, 0, 0, 0, 155, 0, 9, 0, 0, 0,
 0, 0, 0, 0, 0, -3, 823, 0, 0, 0,
 140, 144, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 0, -234, 0, 0, 129, 129, 0, 0,
 0, 0, 0, -2, -38, -1, -1, -1, -1, 145,
 146, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 147, 148, 17, 47, 1148, 318, 127, 0, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 9, 0, 0, 0, 0,
 0, 0, 0, 149, 0, 0, 155, 155, 0, 0,
 0, 0, 0, 0, 0, 0, 150, 151, 158, 0,
 0, 0, 4, -2, 0, 0, 0, 0, 0, 0,
 0, 318, 0, 0, 0, 155, -80, -80, -80, -80,
 0, 0, 0, 0, 0, 158, 0, 155, 155, 155,
 155, 0, 0, 0, 0, 0, 0, -57, -44, -26,
 -24, -80, -80, -80, -80, 154, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 0, -15, -6,
 5, 21, 157, 158, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 0,
};
short yygindex[] =
{0,
 -17, 735, 3081, 528, 0, 0, 0, 0, 0, 0,
 -21, -119, 397, 0, -5, 175, 267, 0, 186, 374,
 508, 3039, -285, 174, -239, 436, 0, 73, 135, 0,
 0, 0, 62, 217, -97, 0, 0, 0, 0,
};
#define YYTABLESIZE 4754
short yytable[] =
{60,
 90, 90, 90, 90, 90, 50, 92, 92, 327, 92,
 90, 92, 352, 120, 85, 94, 295, 92, 104, 86,
 104, 105, 50, 204, 134, 90, 60, 91, 121, 7,
 123, 124, 124, 124, 124, 124, 60, 135, 203, 40,
 105, 48, 40, 145, 82, 60, 314, 49, 85, 83,
 180, 84, 45, 86, 94, 261, 112, 113, 18, 112,
 113, 16, 113, 17, 87, 6, 89, 85, 83, 45,
 84, 119, 86, 375, 112, 113, 182, 190, 182, 13,
 182, 13, 344, 7, 175, 176, 222, 114, 251, 252,
 114, 14, 94, 14, 94, 386, 94, 109, 87, 194,
 89, 110, 196, 218, 219, 114, 60, 142, 143, 144,
 128, 129, 130, 133, 65, 94, 111, 87, 94, 89,
 199, 200, 213, 248, 249, 201, 202, 126, 127, 94,
 294, 18, 14, 7, 16, 103, 17, 214, 287, 288,
 289, 290, 131, 132, 258, 215, 124, 257, 213, 117,
 118, 148, 90, 13, 148, 148, 148, 148, 148, 183,
 148, 119, 13, 214, 266, 107, 120, 223, 267, 90,
 151, 148, 148, 90, 148, 94, 184, 13, 303, 60,
 236, 60, 304, 7, 90, 60, 271, 7, 111, 60,
 61, 237, 235, 152, 272, 273, 274, 275, 276, 277,
 278, 279, 280, 281, 282, 148, 70, 148, 90, 90,
 70, 153, 155, 196, 256, 238, 239, 115, 60, 69,
 60, 60, 60, 69, 212, 242, 60, 61, 136, 94,
 243, 244, 245, 246, 181, 259, 61, 68, 257, 67,
 111, 68, 20, 67, 111, 139, 315, 193, 74, 257,
 18, 50, 74, 16, 60, 17, 198, 73, 60, 60,
 111, 73, 13, 13, 104, 13, 316, 13, 72, 257,
 14, 82, 72, 13, 50, 85, 83, 14, 84, 14,
 86, 233, 207, 208, 71, 14, 105, 48, 71, 209,
 322, 60, 60, 49, 37, 90, 89, 61, 45, 1,
 18, 2, 3, 60, 317, 112, 113, 257, 216, 9,
 10, 11, 12, 318, 13, 233, 257, 60, 60, 190,
 60, 60, 60, 60, 60, 87, 14, 89, 60, 210,
 60, 284, 60, 60, 60, 60, 114, 88, 292, 291,
 293, 60, 60, 60, 60, 60, 60, 60, 60, 60,
 373, 311, 319, 60, 60, 60, 60, 60, 45, 325,
 364, 45, 331, 60, 60, 60, 60, 365, 60, 15,
 61, 88, 61, 148, 367, 60, 61, 366, 62, 148,
 61, 382, 9, 10, 11, 12, 301, 13, 380, 383,
 88, 148, 384, 148, 385, 148, 148, 43, 7, 14,
 44, 118, 7, 148, 120, 116, 119, 86, 21, 61,
 7, 61, 61, 61, 23, 62, 137, 61, 7, 22,
 26, 148, 37, 24, 62, 33, 148, 18, 114, 106,
 16, 296, 17, 25, 108, 107, 92, 93, 91, 79,
 78, 7, 15, 83, 312, 61, 84, 217, 337, 61,
 61, 286, 0, 0, 0, 0, 98, 100, 102, 332,
 0, 0, 0, 0, 0, 148, 148, 148, 148, 148,
 148, 148, 148, 148, 148, 148, 0, 0, 148, 0,
 0, 0, 61, 61, 0, 62, 0, 0, 0, 0,
 0, 0, 0, 70, 61, 98, 100, 102, 0, 0,
 0, 9, 10, 11, 12, 0, 13, 0, 61, 61,
 0, 61, 61, 61, 61, 61, 0, 0, 14, 61,
 0, 61, 0, 61, 61, 61, 61, 0, 97, 0,
 101, 0, 61, 61, 61, 61, 61, 61, 61, 61,
 61, 0, 0, 0, 61, 61, 61, 61, 61, 0,
 100, 102, 0, 0, 61, 61, 61, 61, 62, 61,
 62, 15, 0, 0, 62, 0, 61, 97, 62, 101,
 98, 100, 102, 0, 0, 0, 0, 0, 148, 0,
 0, 0, 0, 0, 0, 71, 72, 73, 74, 75,
 76, 77, 78, 79, 80, 81, 0, 62, 88, 62,
 62, 62, 0, 18, 177, 62, 16, 0, 17, 82,
 0, 0, 0, 85, 83, 0, 84, 0, 86, 0,
 0, 0, 0, 101, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 62, 0, 0, 0, 62, 62, 0,
 0, 0, 97, 8, 101, 0, 0, 0, 0, 0,
 0, 0, 82, 0, 0, 154, 85, 83, 0, 84,
 0, 86, 0, 87, 0, 89, 0, 0, 0, 0,
 62, 62, 0, 0, 0, 0, 0, 0, 9, 10,
 11, 12, 62, 13, 272, 273, 274, 275, 276, 277,
 278, 279, 280, 281, 282, 14, 62, 62, 0, 62,
 62, 62, 62, 62, 0, 0, 87, 62, 89, 62,
 0, 62, 62, 62, 62, 0, 0, 0, 148, 0,
 62, 62, 62, 62, 62, 62, 62, 62, 62, 0,
 0, 0, 62, 62, 62, 62, 62, 19, 15, 0,
 0, 0, 62, 62, 62, 62, 0, 62, 0, 66,
 67, 68, 69, 148, 62, 18, 0, 0, 16, 148,
 17, 0, 106, 0, 108, 0, 0, 0, 0, 122,
 0, 0, 0, 0, 0, 0, 0, 162, 138, 0,
 162, 162, 162, 162, 162, 0, 162, 148, 0, 0,
 0, 148, 148, 0, 0, 0, 0, 162, 162, 0,
 162, 0, 0, 0, 0, 156, 157, 158, 159, 160,
 161, 162, 163, 164, 165, 166, 167, 168, 169, 170,
 171, 172, 173, 174, 0, 0, 178, 0, 0, 0,
 0, 162, 0, 162, 0, 0, 0, 0, 0, 0,
 0, 186, 0, 188, 189, 0, 0, 192, 0, 0,
 148, 148, 0, 0, 9, 10, 11, 12, 0, 13,
 0, 148, 96, 0, 0, 96, 0, 96, 0, 0,
 0, 14, 0, 206, 148, 148, 148, 148, 148, 0,
 0, 0, 0, 0, 0, 211, 148, 148, 148, 148,
 148, 0, 0, 0, 0, 0, 148, 148, 148, 148,
 159, 0, 0, 159, 159, 159, 159, 159, 148, 159,
 0, 0, 0, 0, 15, 0, 0, 0, 0, 0,
 159, 159, 0, 159, 0, 0, 0, 231, 76, 77,
 78, 79, 80, 81, 0, 0, 88, 240, 241, 0,
 0, 0, 178, 178, 0, 0, 0, 253, 254, 0,
 255, 0, 0, 0, 159, 0, 159, 0, 0, 0,
 0, 0, 0, 0, 268, 0, 71, 72, 73, 74,
 75, 76, 77, 78, 79, 80, 81, 0, 0, 88,
 0, 0, 0, 0, 178, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 302, 0, 0, 0, 162,
 307, 308, 0, 310, 0, 162, 9, 10, 11, 12,
 0, 13, 0, 0, 0, 0, 0, 162, 313, 162,
 0, 162, 162, 14, 0, 0, 320, 321, 163, 162,
 0, 163, 163, 163, 163, 163, 0, 163, 333, 0,
 0, 0, 0, 0, 0, 0, 0, 162, 163, 163,
 0, 163, 162, 0, 0, 144, 0, 0, 144, 144,
 144, 144, 144, 0, 144, 0, 15, 0, 0, 358,
 0, 0, 0, 0, 0, 144, 144, 0, 144, 0,
 0, 0, 163, 0, 163, 0, 0, 0, 0, 0,
 0, 162, 162, 162, 162, 162, 162, 162, 162, 162,
 162, 162, 0, 0, 162, 0, 0, 0, 0, 144,
 0, 144, 0, 96, 96, 96, 96, 0, 96, 0,
 0, 0, 159, 0, 0, 0, 0, 0, 159, 0,
 96, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 159, 0, 159, 0, 159, 159, 0, 0, 0, 0,
 0, 0, 159, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 159, 0, 0, 96, 150, 159, 0, 150, 150, 150,
 150, 150, 0, 150, 0, 0, 0, 0, 117, 0,
 0, 117, 0, 0, 150, 150, 0, 150, 0, 0,
 0, 0, 0, 0, 0, 117, 117, 0, 117, 0,
 0, 0, 0, 0, 159, 159, 159, 159, 159, 159,
 159, 159, 159, 159, 159, 0, 0, 159, 150, 0,
 150, 151, 0, 0, 151, 151, 151, 151, 151, 0,
 151, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 163, 151, 151, 0, 151, 0, 163, 0, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 0, 163, 0,
 163, 0, 163, 163, 0, 0, 0, 144, 0, 0,
 163, 0, 0, 144, 0, 151, 0, 151, 0, 0,
 0, 0, 0, 0, 0, 144, 0, 144, 163, 144,
 144, 0, 0, 163, 0, 0, 0, 144, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 144, 0, 0, 0, 0,
 144, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 163, 163, 163, 163, 163, 163, 163, 163,
 163, 163, 163, 0, 0, 163, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 144,
 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
 111, 0, 144, 111, 111, 111, 0, 111, 0, 111,
 0, 0, 0, 0, 0, 0, 150, 0, 0, 0,
 111, 111, 150, 111, 0, 0, 0, 117, 0, 0,
 0, 0, 0, 117, 150, 0, 150, 0, 150, 150,
 0, 0, 0, 0, 0, 117, 150, 117, 0, 117,
 117, 0, 0, 0, 111, 0, 111, 117, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 150,
 0, 0, 0, 151, 0, 117, 0, 0, 0, 151,
 117, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 151, 0, 151, 0, 151, 151, 0, 0, 0,
 0, 0, 0, 151, 0, 0, 0, 0, 150, 150,
 150, 150, 150, 150, 150, 150, 150, 150, 150, 0,
 0, 150, 0, 0, 0, 125, 151, 0, 125, 125,
 125, 125, 125, 0, 125, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 125, 125, 0, 125, 0,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 151, 151, 151, 151, 151,
 151, 151, 151, 151, 151, 151, 0, 0, 151, 125,
 126, 0, 0, 126, 126, 126, 126, 126, 0, 126,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 126, 126, 0, 126, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 111, 0, 0, 0, 0, 0, 111, 0,
 0, 0, 0, 0, 126, 0, 0, 0, 0, 0,
 111, 0, 111, 0, 111, 111, 0, 0, 0, 0,
 0, 0, 111, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 111, 0, 0, 0, 0, 111, 0, 0, 0, 0,
 0, 0, 0, 127, 0, 0, 127, 127, 127, 127,
 127, 0, 127, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 127, 127, 0, 127, 0, 0, 0,
 0, 0, 0, 0, 111, 111, 111, 111, 111, 111,
 111, 111, 111, 111, 111, 82, 0, 111, 0, 85,
 83, 0, 84, 0, 86, 0, 0, 127, 0, 128,
 0, 0, 128, 128, 128, 128, 128, 125, 128, 0,
 0, 0, 0, 125, 0, 0, 0, 0, 0, 128,
 128, 0, 128, 0, 0, 125, 0, 125, 0, 125,
 125, 0, 0, 0, 0, 0, 0, 125, 0, 87,
 0, 89, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 128, 0, 125, 0, 0, 0, 0,
 125, 0, 126, 0, 0, 0, 0, 0, 126, 0,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 126, 0, 126, 0, 126, 126, 82, 0, 0, 0,
 85, 83, 126, 84, 0, 86, 0, 0, 0, 125,
 125, 125, 125, 125, 125, 125, 125, 125, 125, 125,
 126, 0, 125, 0, 149, 126, 0, 149, 149, 149,
 149, 149, 0, 149, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 149, 0, 149, 0, 0,
 87, 0, 89, 0, 82, 0, 0, 0, 85, 83,
 0, 84, 0, 86, 126, 126, 126, 126, 126, 126,
 126, 126, 126, 126, 126, 127, 0, 126, 149, 82,
 149, 127, 0, 85, 83, 0, 84, 0, 86, 0,
 0, 0, 0, 127, 0, 127, 0, 127, 127, 329,
 0, 0, 82, 0, 0, 127, 85, 83, 87, 84,
 89, 86, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 354, 127, 0, 0, 0, 0, 127, 0,
 0, 128, 0, 87, 0, 89, 0, 128, 0, 82,
 335, 0, 0, 85, 83, 0, 84, 111, 86, 128,
 0, 128, 0, 128, 128, 0, 87, 0, 89, 0,
 0, 128, 0, 0, 0, 0, 0, 127, 127, 127,
 127, 127, 127, 127, 127, 127, 127, 127, 0, 128,
 127, 0, 0, 0, 128, 82, 0, 0, 0, 85,
 83, 0, 84, 87, 86, 89, 0, 0, 0, 82,
 0, 0, 0, 85, 83, 0, 84, 0, 86, 71,
 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
 0, 0, 88, 128, 128, 128, 128, 128, 128, 128,
 128, 128, 128, 128, 0, 0, 128, 0, 0, 87,
 82, 89, 0, 342, 85, 83, 149, 84, 111, 86,
 0, 0, 149, 87, 0, 89, 0, 0, 0, 0,
 0, 0, 0, 0, 149, 0, 149, 0, 149, 149,
 82, 0, 0, 343, 85, 83, 149, 84, 0, 86,
 0, 0, 185, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 87, 0, 89, 0, 0, 149,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
 81, 0, 0, 88, 87, 0, 89, 0, 82, 0,
 0, 111, 85, 83, 0, 84, 0, 86, 149, 149,
 149, 149, 149, 149, 149, 149, 149, 149, 149, 0,
 0, 149, 0, 0, 111, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 0, 71, 72,
 73, 74, 75, 76, 77, 78, 79, 80, 81, 205,
 0, 88, 87, 0, 89, 0, 0, 0, 0, 0,
 0, 0, 0, 71, 72, 73, 74, 75, 76, 77,
 78, 79, 80, 81, 0, 0, 88, 0, 0, 0,
 0, 0, 0, 0, 0, 0, 71, 72, 73, 74,
 75, 76, 77, 78, 79, 80, 81, 230, 0, 88,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 269, 123, 0, 0, 123, 0, 123,
 123, 123, 0, 71, 72, 73, 74, 75, 76, 77,
 78, 79, 80, 81, 123, 123, 88, 123, 0, 0,
 0, 124, 0, 0, 124, 0, 124, 124, 124, 0,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 124, 124, 0, 124, 0, 0, 0, 0, 71,
 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
 0, 0, 88, 71, 72, 73, 74, 75, 76, 77,
 78, 79, 80, 81, 0, 0, 88, 0, 0, 142,
 0, 0, 142, 0, 0, 142, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 142,
 142, 0, 142, 0, 71, 72, 73, 74, 75, 76,
 77, 78, 79, 80, 81, 0, 0, 88, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 71, 72, 73, 74, 75, 76,
 77, 78, 79, 80, 81, 0, 0, 88, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 134, 0, 0,
 134, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 134, 134, 135, 134, 0, 135,
 0, 0, 71, 72, 73, 74, 75, 76, 77, 78,
 79, 80, 81, 135, 135, 88, 135, 0, 0, 0,
 0, 0, 0, 0, 0, 0, 123, 0, 0, 0,
 0, 0, 123, 0, 130, 0, 0, 130, 0, 0,
 0, 0, 0, 0, 123, 0, 123, 0, 123, 123,
 0, 130, 130, 124, 130, 0, 123, 0, 0, 124,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 124, 0, 124, 123, 124, 124, 0, 0, 123,
 0, 0, 0, 124, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 124, 0, 0, 0, 0, 124, 0, 0, 0,
 0, 142, 0, 0, 0, 0, 0, 142, 123, 123,
 123, 123, 123, 123, 123, 123, 123, 123, 123, 142,
 0, 142, 0, 142, 142, 0, 0, 0, 0, 0,
 132, 142, 0, 132, 0, 124, 124, 124, 124, 124,
 124, 124, 124, 124, 124, 124, 0, 132, 132, 142,
 132, 0, 0, 0, 142, 0, 0, 131, 0, 0,
 131, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 131, 131, 0, 131, 0, 0,
 0, 0, 0, 0, 0, 0, 134, 0, 0, 0,
 0, 0, 134, 142, 142, 142, 142, 142, 142, 142,
 142, 142, 142, 142, 134, 135, 134, 0, 134, 134,
 0, 135, 0, 0, 0, 0, 134, 0, 0, 0,
 0, 0, 0, 135, 0, 135, 0, 135, 135, 0,
 0, 0, 0, 0, 134, 135, 0, 0, 0, 134,
 0, 0, 133, 130, 0, 133, 0, 0, 0, 130,
 0, 0, 0, 135, 0, 0, 0, 0, 135, 133,
 133, 130, 133, 130, 0, 130, 130, 0, 0, 0,
 0, 0, 0, 130, 0, 0, 0, 0, 134, 134,
 134, 134, 134, 134, 134, 134, 134, 134, 134, 0,
 0, 130, 0, 0, 0, 0, 130, 135, 135, 135,
 135, 135, 135, 135, 135, 135, 135, 135, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 130, 130, 130, 130, 130,
 130, 130, 130, 130, 130, 130, 0, 0, 139, 132,
 0, 139, 0, 0, 0, 132, 0, 136, 0, 0,
 136, 0, 0, 0, 0, 139, 139, 132, 139, 132,
 0, 132, 132, 0, 136, 136, 131, 136, 0, 132,
 0, 0, 131, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 131, 0, 131, 132, 131, 131,
 0, 0, 132, 0, 0, 0, 131, 0, 140, 0,
 0, 140, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 131, 140, 140, 0, 140, 131,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 132, 132, 132, 132, 132, 132, 132, 132, 132,
 132, 132, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 133, 0, 0, 0, 0, 0, 133, 131, 131,
 131, 131, 131, 131, 131, 131, 131, 131, 131, 133,
 0, 133, 0, 133, 133, 0, 0, 141, 0, 0,
 141, 133, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 141, 141, 0, 141, 137, 133,
 0, 137, 0, 0, 133, 0, 0, 0, 0, 138,
 0, 0, 138, 0, 0, 137, 137, 0, 137, 0,
 0, 0, 0, 0, 0, 0, 138, 138, 0, 138,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 133, 133, 133, 133, 133, 133, 133,
 133, 133, 133, 133, 0, 0, 0, 139, 0, 0,
 0, 0, 0, 139, 0, 0, 136, 0, 0, 0,
 0, 0, 136, 0, 0, 139, 0, 139, 0, 139,
 139, 0, 0, 0, 136, 0, 136, 139, 136, 136,
 0, 0, 0, 0, 0, 0, 136, 0, 0, 0,
 0, 0, 0, 0, 0, 139, 0, 0, 0, 0,
 139, 0, 0, 0, 136, 0, 0, 140, 146, 136,
 0, 150, 0, 140, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 140, 0, 140, 0, 140,
 140, 0, 0, 0, 0, 0, 0, 140, 0, 139,
 139, 139, 139, 139, 0, 0, 0, 0, 136, 136,
 136, 136, 136, 0, 0, 140, 0, 0, 0, 0,
 140, 0, 0, 0, 0, 0, 187, 0, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 195, 0, 0, 0, 0, 141, 0, 0, 0,
 0, 0, 141, 0, 0, 0, 0, 0, 0, 140,
 140, 140, 140, 140, 141, 0, 141, 137, 141, 141,
 0, 0, 191, 137, 0, 0, 141, 0, 138, 0,
 0, 0, 0, 0, 138, 137, 0, 137, 0, 137,
 137, 0, 0, 0, 141, 0, 138, 137, 138, 141,
 138, 138, 0, 224, 225, 0, 227, 228, 138, 0,
 0, 0, 0, 0, 0, 137, 0, 0, 0, 0,
 137, 0, 0, 0, 0, 0, 138, 0, 0, 0,
 0, 138, 0, 0, 0, 0, 0, 0, 141, 141,
 141, 141, 141, 0, 0, 0, 0, 226, 0, 0,
 0, 0, 0, 0, 0, 232, 0, 0, 0, 137,
 137, 137, 137, 137, 0, 0, 0, 0, 0, 0,
 138, 138, 138, 138, 138, 0, 297, 298, 0, 0,
 0, 0, 0, 0, 260, 0, 309, 264, 265, 0,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 0, 326, 328,
 330, 0, 0, 0, 0, 0, 0, 0, 336, 0,
 0, 0, 0, 338, 339, 340, 341, 0, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 353, 355, 0, 0, 0, 0, 0, 323, 324, 0,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 334,
 0, 0, 0, 0, 0, 0, 374, 0, 0, 0,
 0, 0, 0, 0, 0, 0, 347, 348, 349, 350,
 351, 0, 0, 0, 0, 0, 359, 0, 360, 361,
 362, 363, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 369, 370, 371, 372, 10, 0, 0, 0,
 10, 10, 0, 10, 10, 0, 0, 10, 10, 0,
 10, 10, 10, 10, 381, 0, 0, 10, 0, 0,
 10, 0, 0, 10, 10, 10, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 10, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 10, 10, 10,
 10, 10, 0, 0, 10, 0, 0, 0, 0, 10,
 0, 0, 0, 10, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 10, 0, 10, 0, 0, 10, 10,
 10, 10, 11, 0, 0, 10, 11, 11, 0, 11,
 11, 0, 0, 11, 11, 0, 11, 11, 11, 11,
 0, 0, 0, 11, 0, 0, 11, 10, 0, 11,
 11, 11, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 11, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 11, 11, 11, 11, 11, 26, 27,
 11, 299, 28, 0, 0, 11, 29, 0, 30, 11,
 31, 0, 0, 0, 0, 32, 0, 0, 33, 11,
 0, 11, 34, 35, 11, 11, 11, 11, 0, 0,
 0, 11, 0, 13, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 14, 36, 37, 38, 39,
 0, 0, 40, 11, 0, 0, 0, 41, 0, 0,
 0, 42, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 43, 0, 44, 0, 0, 45, 46, 47, 48,
 147, 0, 0, 49, 26, 27, 0, 0, 28, 0,
 0, 0, 29, 0, 30, 0, 31, 0, 0, 0,
 0, 32, 0, 0, 33, 300, 0, 0, 34, 35,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 13,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 14, 36, 37, 38, 39, 0, 0, 40, 0,
 0, 0, 0, 41, 0, 0, 0, 42, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 43, 0, 44,
 0, 0, 45, 46, 47, 48, 26, 27, 0, 49,
 28, 0, 0, 0, 29, 0, 30, 0, 31, 0,
 0, 0, 0, 32, 0, 0, 33, 0, 0, 0,
 34, 35, 0, 0, 0, 190, 0, 0, 0, 0,
 0, 13, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 14, 36, 37, 38, 39, 26, 27,
 40, 0, 28, 0, 0, 41, 29, 0, 30, 42,
 31, 229, 0, 0, 0, 32, 0, 0, 33, 43,
 0, 44, 34, 35, 45, 46, 47, 48, 0, 0,
 0, 49, 0, 13, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 14, 36, 37, 38, 39,
 0, 0, 40, 0, 0, 0, 0, 41, 0, 0,
 0, 42, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 43, 0, 44, 0, 0, 45, 46, 47, 48,
 26, 27, 0, 49, 28, 0, 0, 0, 29, 0,
 30, 263, 31, 0, 0, 0, 0, 32, 0, 0,
 33, 0, 0, 0, 34, 35, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 13, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 14, 36, 37,
 38, 39, 26, 27, 40, 270, 28, 0, 0, 41,
 29, 0, 30, 42, 31, 0, 0, 0, 0, 32,
 0, 0, 33, 43, 0, 44, 34, 35, 45, 46,
 47, 48, 0, 0, 0, 49, 0, 13, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 14,
 36, 37, 38, 39, 26, 27, 40, 0, 28, 0,
 0, 41, 29, 0, 30, 42, 31, 305, 0, 0,
 0, 32, 0, 0, 33, 43, 0, 44, 34, 35,
 45, 46, 47, 48, 0, 0, 0, 49, 0, 13,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 14, 36, 37, 38, 39, 26, 27, 40, 0,
 28, 0, 0, 41, 29, 0, 30, 42, 31, 306,
 0, 0, 0, 32, 0, 0, 33, 43, 0, 44,
 34, 35, 45, 46, 47, 48, 0, 0, 0, 49,
 0, 13, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 14, 36, 37, 38, 39, 26, 27,
 40, 345, 28, 0, 0, 41, 29, 0, 30, 42,
 31, 0, 0, 0, 0, 32, 0, 0, 33, 43,
 0, 44, 34, 35, 45, 46, 47, 48, 0, 0,
 0, 49, 0, 13, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 14, 36, 37, 38, 39,
 26, 27, 40, 346, 28, 0, 0, 41, 29, 0,
 30, 42, 31, 0, 0, 0, 0, 32, 0, 0,
 33, 43, 0, 44, 34, 35, 45, 46, 47, 48,
 0, 0, 0, 49, 0, 13, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 14, 36, 37,
 38, 39, 0, 0, 40, 0, 0, 0, 0, 41,
 0, 0, 0, 42, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 43, 0, 44, 0, 0, 45, 46,
 47, 48, 26, 27, 0, 49, 28, 0, 0, 0,
 29, 0, 30, 0, 31, 0, 0, 0, 0, 32,
 0, 0, 33, 0, 0, 356, 34, 35, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 13, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 14,
 36, 37, 38, 39, 26, 27, 40, 368, 28, 0,
 0, 41, 29, 0, 30, 42, 31, 0, 0, 0,
 0, 32, 0, 0, 33, 43, 0, 44, 34, 35,
 45, 46, 47, 48, 0, 0, 0, 49, 0, 13,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 14, 36, 37, 38, 39, 26, 27, 40, 376,
 28, 0, 0, 41, 29, 0, 30, 42, 31, 0,
 0, 0, 0, 32, 0, 0, 33, 43, 0, 44,
 34, 35, 45, 46, 47, 48, 0, 0, 0, 49,
 0, 13, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 14, 36, 37, 38, 39, 26, 27,
 40, 377, 28, 0, 0, 41, 29, 0, 30, 42,
 31, 0, 0, 0, 0, 32, 0, 0, 33, 43,
 0, 44, 34, 35, 45, 46, 47, 48, 0, 0,
 0, 49, 0, 13, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 14, 36, 37, 38, 39,
 26, 27, 40, 378, 28, 0, 0, 41, 29, 0,
 30, 42, 31, 0, 0, 0, 0, 32, 0, 0,
 33, 43, 0, 44, 34, 35, 45, 46, 47, 48,
 0, 0, 0, 49, 0, 13, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 14, 36, 37,
 38, 39, 26, 27, 40, 379, 28, 0, 0, 41,
 29, 0, 30, 42, 31, 0, 0, 0, 0, 32,
 0, 0, 33, 43, 0, 44, 34, 35, 45, 46,
 47, 48, 0, 0, 0, 49, 0, 13, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 14,
 36, 37, 38, 39, 26, 27, 40, 0, 28, 0,
 0, 41, 29, 0, 30, 42, 31, 0, 0, 0,
 0, 32, 0, 0, 33, 43, 0, 44, 34, 35,
 45, 46, 47, 48, 0, 0, 0, 49, 0, 13,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 14, 36, 37, 38, 39, 0, 0, 40, 0,
 0, 0, 0, 41, 0, 0, 0, 42, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 43, 0, 44,
 0, 0, 45, 46, 47, 48, 26, 27, 0, 49,
 28, 0, 0, 0, 29, 0, 30, 0, 31, 0,
 0, 0, 0, 32, 0, 0, 33, 0, 0, 0,
 34, 35, 0, 0, 0, 111, 0, 0, 0, 0,
 0, 13, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 14, 36, 37, 38, 39, 26, 27,
 40, 0, 28, 0, 0, 41, 29, 0, 30, 0,
 31, 0, 0, 0, 0, 32, 0, 0, 33, 43,
 0, 44, 34, 35, 45, 46, 47, 48, 0, 0,
 0, 49, 0, 13, 0, 0, 0, 0, 0, 0,
 0, 0, 0, 0, 0, 14, 36, 37, 38, 39,
 0, 0, 40, 0, 0, 0, 0, 41, 0, 0,
 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 0, 43, 0, 44, 0, 0, 45, 46, 47, 48,
 0, 0, 0, 49,
};
short yycheck[] =
{5,
 33, 33, 33, 33, 33, 44, 40, 40, 58, 40,
 33, 40, 58, 61, 42, 21, 256, 40, 44, 47,
 26, 27, 61, 61, 42, 33, 32, 58, 34, 264,
 36, 37, 38, 39, 40, 41, 42, 43, 61, 41,
 44, 44, 44, 49, 38, 51, 286, 44, 42, 43,
 58, 45, 44, 47, 60, 268, 41, 41, 40, 44,
 44, 43, 279, 45, 92, 290, 94, 42, 43, 61,
 45, 61, 47, 359, 59, 59, 98, 290, 100, 296,
 102, 296, 322, 290, 90, 91, 184, 41, 208, 209,
 44, 308, 98, 308, 100, 381, 102, 271, 92, 121,
 94, 275, 124, 344, 345, 59, 112, 46, 47, 48,
 38, 39, 40, 41, 260, 121, 290, 92, 124, 94,
 126, 127, 44, 337, 338, 131, 132, 261, 262, 135,
 250, 40, 308, 368, 43, 293, 45, 59, 236, 237,
 238, 239, 261, 262, 41, 41, 152, 44, 44, 261,
 262, 38, 33, 296, 41, 42, 43, 44, 45, 40,
 47, 273, 296, 59, 271, 268, 278, 185, 275, 33,
 61, 58, 59, 33, 61, 181, 40, 296, 264, 185,
 40, 187, 268, 264, 33, 191, 314, 268, 290, 195,
 5, 40, 198, 315, 322, 323, 324, 325, 326, 327,
 328, 329, 330, 331, 332, 92, 264, 94, 33, 33,
 268, 290, 290, 235, 220, 40, 40, 32, 224, 264,
 226, 227, 228, 268, 152, 342, 232, 42, 43, 235,
 347, 348, 349, 350, 44, 41, 51, 264, 44, 264,
 290, 268, 290, 268, 290, 35, 41, 61, 264, 44,
 40, 290, 268, 43, 260, 45, 44, 264, 264, 265,
 290, 268, 296, 296, 290, 296, 41, 296, 264, 44,
 308, 38, 268, 296, 313, 42, 43, 308, 45, 308,
 47, 313, 44, 44, 264, 308, 290, 290, 268, 44,
 296, 297, 298, 290, 296, 33, 94, 112, 290, 256,
 290, 258, 259, 309, 41, 290, 290, 44, 61, 291,
 292, 293, 294, 41, 296, 313, 44, 323, 324, 290,
 326, 327, 328, 329, 330, 92, 308, 94, 334, 290,
 336, 61, 338, 339, 340, 341, 290, 365, 40, 313,
 40, 347, 348, 349, 350, 351, 352, 353, 354, 355,
 356, 309, 291, 359, 360, 361, 362, 363, 41, 265,
 59, 44, 269, 369, 370, 371, 372, 59, 374, 351,
 185, 365, 187, 260, 262, 381, 191, 261, 5, 266,
 195, 261, 291, 292, 293, 294, 368, 296, 265, 262,
 365, 278, 261, 280, 262, 282, 283, 315, 257, 308,
 315, 61, 274, 290, 61, 32, 61, 290, 290, 224,
 272, 226, 227, 228, 290, 42, 43, 232, 264, 290,
 290, 308, 296, 290, 51, 290, 313, 40, 32, 290,
 43, 257, 45, 290, 290, 290, 290, 290, 290, 290,
 290, 284, 351, 290, 271, 260, 290, 181, 314, 264,
 265, 235, -1, -1, -1, -1, 21, 22, 23, 368,
 -1, -1, -1, -1, -1, 352, 353, 354, 355, 356,
 357, 358, 359, 360, 361, 362, -1, -1, 365, -1,
 -1, -1, 297, 298, -1, 112, -1, -1, -1, -1,
 -1, -1, -1, 260, 309, 60, 61, 62, -1, -1,
 -1, 291, 292, 293, 294, -1, 296, -1, 323, 324,
 -1, 326, 327, 328, 329, 330, -1, -1, 308, 334,
 -1, 336, -1, 338, 339, 340, 341, -1, 21, -1,
 23, -1, 347, 348, 349, 350, 351, 352, 353, 354,
 355, -1, -1, -1, 359, 360, 361, 362, 363, -1,
 115, 116, -1, -1, 369, 370, 371, 372, 185, 374,
 187, 351, -1, -1, 191, -1, 381, 60, 195, 62,
 135, 136, 137, -1, -1, -1, -1, -1, 51, -1,
 -1, -1, -1, -1, -1, 352, 353, 354, 355, 356,
 357, 358, 359, 360, 361, 362, -1, 224, 365, 226,
 227, 228, -1, 40, 41, 232, 43, -1, 45, 38,
 -1, -1, -1, 42, 43, -1, 45, -1, 47, -1,
 -1, -1, -1, 116, -1, -1, -1, -1, -1, -1,
 -1, -1, -1, 260, -1, -1, -1, 264, 265, -1,
 -1, -1, 135, 256, 137, -1, -1, -1, -1, -1,
 -1, -1, 38, -1, -1, 41, 42, 43, -1, 45,
 -1, 47, -1, 92, -1, 94, -1, -1, -1, -1,
 297, 298, -1, -1, -1, -1, -1, -1, 291, 292,
 293, 294, 309, 296, 322, 323, 324, 325, 326, 327,
 328, 329, 330, 331, 332, 308, 323, 324, -1, 326,
 327, 328, 329, 330, -1, -1, 92, 334, 94, 336,
 -1, 338, 339, 340, 341, -1, -1, -1, 191, -1,
 347, 348, 349, 350, 351, 352, 353, 354, 355, -1,
 -1, -1, 359, 360, 361, 362, 363, 3, 351, -1,
 -1, -1, 369, 370, 371, 372, -1, 374, -1, 15,
 16, 17, 18, 226, 381, 40, -1, -1, 43, 232,
 45, -1, 28, -1, 30, -1, -1, -1, -1, 35,
 -1, -1, -1, -1, -1, -1, -1, 38, 44, -1,
 41, 42, 43, 44, 45, -1, 47, 260, -1, -1,
 -1, 264, 265, -1, -1, -1, -1, 58, 59, -1,
 61, -1, -1, -1, -1, 71, 72, 73, 74, 75,
 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
 86, 87, 88, 89, -1, -1, 92, -1, -1, -1,
 -1, 92, -1, 94, -1, -1, -1, -1, -1, -1,
 -1, 107, -1, 109, 110, -1, -1, 113, -1, -1,
 323, 324, -1, -1, 291, 292, 293, 294, -1, 296,
 -1, 334, 40, -1, -1, 43, -1, 45, -1, -1,
 -1, 308, -1, 139, 347, 348, 349, 350, 351, -1,
 -1, -1, -1, -1, -1, 151, 359, 360, 361, 362,
 363, -1, -1, -1, -1, -1, 369, 370, 371, 372,
 38, -1, -1, 41, 42, 43, 44, 45, 381, 47,
 -1, -1, -1, -1, 351, -1, -1, -1, -1, -1,
 58, 59, -1, 61, -1, -1, -1, 193, 357, 358,
 359, 360, 361, 362, -1, -1, 365, 203, 204, -1,
 -1, -1, 208, 209, -1, -1, -1, 213, 214, -1,
 216, -1, -1, -1, 92, -1, 94, -1, -1, -1,
 -1, -1, -1, -1, 230, -1, 352, 353, 354, 355,
 356, 357, 358, 359, 360, 361, 362, -1, -1, 365,
 -1, -1, -1, -1, 250, -1, -1, -1, -1, -1,
 -1, -1, -1, -1, -1, 261, -1, -1, -1, 260,
 266, 267, -1, 269, -1, 266, 291, 292, 293, 294,
 -1, 296, -1, -1, -1, -1, -1, 278, 284, 280,
 -1, 282, 283, 308, -1, -1, 292, 293, 38, 290,
 -1, 41, 42, 43, 44, 45, -1, 47, 304, -1,
 -1, -1, -1, -1, -1, -1, -1, 308, 58, 59,
 -1, 61, 313, -1, -1, 38, -1, -1, 41, 42,
 43, 44, 45, -1, 47, -1, 351, -1, -1, 335,
 -1, -1, -1, -1, -1, 58, 59, -1, 61, -1,
 -1, -1, 92, -1, 94, -1, -1, -1, -1, -1,
 -1, 352, 353, 354, 355, 356, 357, 358, 359, 360,
 361, 362, -1, -1, 365, -1, -1, -1, -1, 92,
 -1, 94, -1, 291, 292, 293, 294, -1, 296, -1,
 -1, -1, 260, -1, -1, -1, -1, -1, 266, -1,
 308, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 278, -1, 280, -1, 282, 283, -1, -1, -1, -1,
 -1, -1, 290, -1, -1, -1, -1, -1, -1, -1,
 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 308, -1, -1, 351, 38, 313, -1, 41, 42, 43,
 44, 45, -1, 47, -1, -1, -1, -1, 41, -1,
 -1, 44, -1, -1, 58, 59, -1, 61, -1, -1,
 -1, -1, -1, -1, -1, 58, 59, -1, 61, -1,
 -1, -1, -1, -1, 352, 353, 354, 355, 356, 357,
 358, 359, 360, 361, 362, -1, -1, 365, 92, -1,
 94, 38, -1, -1, 41, 42, 43, 44, 45, -1,
 47, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 260, 58, 59, -1, 61, -1, 266, -1, -1, -1,
 -1, -1, -1, -1, -1, -1, -1, -1, 278, -1,
 280, -1, 282, 283, -1, -1, -1, 260, -1, -1,
 290, -1, -1, 266, -1, 92, -1, 94, -1, -1,
 -1, -1, -1, -1, -1, 278, -1, 280, 308, 282,
 283, -1, -1, 313, -1, -1, -1, 290, -1, -1,
 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 -1, -1, -1, -1, -1, 308, -1, -1, -1, -1,
 313, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 -1, -1, 352, 353, 354, 355, 356, 357, 358, 359,
 360, 361, 362, -1, -1, 365, -1, -1, -1, -1,
 -1, -1, -1, -1, -1, -1, -1, -1, -1, 352,
 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
 38, -1, 365, 41, 42, 43, -1, 45, -1, 47,
 -1, -1, -1, -1, -1, -1, 260, -1, -1, -1,
 58, 59, 266, 61, -1, -1, -1, 260, -1, -1,
 -1, -1, -1, 266, 278, -1, 280, -1, 282, 283,
 -1, -1, -1, -1, -1, 278, 290, 280, -1, 282,
 283, -1, -1, -1, 92, -1, 94, 290, -1, -1,
 -1, -1, -1, -1, -1, -1, -1, -1, -1, 313,
 -1, -1, -1, 260, -1, 308, -1, -1, -1, 266,
 313, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 -1, 278, -1, 280, -1, 282, 283, -1, -1, -1,
 -1, -1, -1, 290, -1, -1, -1, -1, 352, 353,
 354, 355, 356, 357, 358, 359, 360, 361, 362, -1,
 -1, 365, -1, -1, -1, 38, 313, -1, 41, 42,
 43, 44, 45, -1, 47, -1, -1, -1, -1, -1,
 -1, -1, -1, -1, -1, 58, 59, -1, 61, -1,
 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 -1, -1, -1, -1, -1, 352, 353, 354, 355, 356,
 357, 358, 359, 360, 361, 362, -1, -1, 365, 92,
 38, -1, -1, 41, 42, 43, 44, 45, -1, 47,
 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 58, 59, -1, 61, -1, -1, -1, -1, -1, -1,
 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 -1, -1, 260, -1, -1, -1, -1, -1, 266, -1,
 -1, -1, -1, -1, 92, -1, -1, -1, -1, -1,
 278, -1, 280, -1, 282, 283, -1, -1, -1, -1,
 -1, -1, 290, -1, -1, -1, -1, -1, -1, -1,
 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 308, -1, -1, -1, -1, 313, -1, -1, -1, -1,
 -1, -1, -1, 38, -1, -1, 41, 42, 43, 44,
 45, -1, 47, -1, -1, -1, -1, -1, -1, -1,
 -1, -1, -1, 58, 59, -1, 61, -1, -1, -1,
 -1, -1, -1, -1, 352, 353, 354, 355, 356, 357,
 358, 359, 360, 361, 362, 38, -1, 365, -1, 42,
 43, -1, 45, -1, 47, -1, -1, 92, -1, 38,
 -1, -1, 41, 42, 43, 44, 45, 260, 47, -1,
 -1, -1, -1, 266, -1, -1, -1, -1, -1, 58,
 59, -1, 61, -1, -1, 278, -1, 280, -1, 282,
 283, -1, -1, -1, -1, -1, -1, 290, -1, 92,
 -1, 94, -1, -1, -1, -1, -1, -1, -1, -1,
 -1, -1, -1, 92, -1, 308, -1, -1, -1, -1,
 313, -1, 260, -1, -1, -1, -1, -1, 266, -1,
 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 278, -1, 280, -1, 282, 283, 38, -1, -1, -1,
 42, 43, 290, 45, -1, 47, -1, -1, -1, 352,
 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
 308, -1, 365, -1, 38, 313, -1, 41, 42, 43,
 44, 45, -1, 47, -1, -1, -1, -1, -1, -1,
 -1, -1, -1, -1, -1, 59, -1, 61, -1, -1,
 92, -1, 94, -1, 38, -1, -1, -1, 42, 43,
 -1, 45, -1, 47, 352, 353, 354, 355, 356, 357,
 358, 359, 360, 361, 362, 260, -1, 365, 92, 38,
 94, 266, -1, 42, 43, -1, 45, -1, 47, -1,
 -1, -1, -1, 278, -1, 280, -1, 282, 283, 58,
 -1, -1, 38, -1, -1, 290, 42, 43, 92, 45,
 94, 47, -1, -1, -1, -1, -1, -1, -1, -1,
 -1, -1, 58, 308, -1, -1, -1, -1, 313, -1,
 -1, 260, -1, 92, -1, 94, -1, 266, -1, 38,
 283, -1, -1, 42, 43, -1, 45, 290, 47, 278,
 -1, 280, -1, 282, 283, -1, 92, -1, 94, -1,
 -1, 290, -1, -1, -1, -1, -1, 352, 353, 354,
 355, 356, 357, 358, 359, 360, 361, 362, -1, 308,
 365, -1, -1, -1, 313, 38, -1, -1, -1, 42,
 43, -1, 45, 92, 47, 94, -1, -1, -1, 38,
 -1, -1, -1, 42, 43, -1, 45, -1, 47, 352,
 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
 -1, -1, 365, 352, 353, 354, 355, 356, 357, 358,
 359, 360, 361, 362, -1, -1, 365, -1, -1, 92,
 38, 94, -1, 41, 42, 43, 260, 45, 290, 47,
 -1, -1, 266, 92, -1, 94, -1, -1, -1, -1,
 -1, -1, -1, -1, 278, -1, 280, -1, 282, 283,
 38, -1, -1, 41, 42, 43, 290, 45, -1, 47,
 -1, -1, 266, -1, -1, -1, -1, -1, -1, -1,
 -1, -1, -1, -1, 92, -1, 94, -1, -1, 313,
 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 352, 353, 354, 355, 356, 357, 358, 359, 360, 361,
 362, -1, -1, 365, 92, -1, 94, -1, 38, -1,
 -1, 290, 42, 43, -1, 45, -1, 47, 352, 353,
 354, 355, 356, 357, 358, 359, 360, 361, 362, -1,
 -1, 365, -1, -1, 290, -1, -1, -1, -1, -1,
 -1, -1, -1, -1, -1, -1, -1, -1, 352, 353,
 354, 355, 356, 357, 358, 359, 360, 361, 362, 278,
 -1, 365, 92, -1, 94, -1, -1, -1, -1, -1,
 -1, -1, -1, 352, 353, 354, 355, 356, 357, 358,
 359, 360, 361, 362, -1, -1, 365, -1, -1, -1,
 -1, -1, -1, -1, -1, -1, 352, 353, 354, 355,
 356, 357, 358, 359, 360, 361, 362, 280, -1, 365,
 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 -1, -1, -1, 282, 38, -1, -1, 41, -1, 43,
 44, 45, -1, 352, 353, 354, 355, 356, 357, 358,
 359, 360, 361, 362, 58, 59, 365, 61, -1, -1,
 -1, 38, -1, -1, 41, -1, 43, 44, 45, -1,
 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 -1, 58, 59, -1, 61, -1, -1, -1, -1, 352,
 353, 354, 355, 356, 357, 358, 359, 360, 361, 362,
 -1, -1, 365, 352, 353, 354, 355, 356, 357, 358,
 359, 360, 361, 362, -1, -1, 365, -1, -1, 38,
 -1, -1, 41, -1, -1, 44, -1, -1, -1, -1,
 -1, -1, -1, -1, -1, -1, -1, -1, -1, 58,
 59, -1, 61, -1, 352, 353, 354, 355, 356, 357,
 358, 359, 360, 361, 362, -1, -1, 365, -1, -1,
 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 -1, -1, -1, -1, 352, 353, 354, 355, 356, 357,
 358, 359, 360, 361, 362, -1, -1, 365, -1, -1,
 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 -1, -1, -1, -1, -1, -1, -1, 41, -1, -1,
 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 -1, -1, -1, -1, 58, 59, 41, 61, -1, 44,
 -1, -1, 352, 353, 354, 355, 356, 357, 358, 359,
 360, 361, 362, 58, 59, 365, 61, -1, -1, -1,
 -1, -1, -1, -1, -1, -1, 260, -1, -1, -1,
 -1, -1, 266, -1, 41, -1, -1, 44, -1, -1,
 -1, -1, -1, -1, 278, -1, 280, -1, 282, 283,
 -1, 58, 59, 260, 61, -1, 290, -1, -1, 266,
 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 -1, 278, -1, 280, 308, 282, 283, -1, -1, 313,
 -1, -1, -1, 290, -1, -1, -1, -1, -1, -1,
 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 -1, 308, -1, -1, -1, -1, 313, -1, -1, -1,
 -1, 260, -1, -1, -1, -1, -1, 266, 352, 353,
 354, 355, 356, 357, 358, 359, 360, 361, 362, 278,
 -1, 280, -1, 282, 283, -1, -1, -1, -1, -1,
 41, 290, -1, 44, -1, 352, 353, 354, 355, 356,
 357, 358, 359, 360, 361, 362, -1, 58, 59, 308,
 61, -1, -1, -1, 313, -1, -1, 41, -1, -1,
 44, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 -1, -1, -1, -1, 58, 59, -1, 61, -1, -1,
 -1, -1, -1, -1, -1, -1, 260, -1, -1, -1,
 -1, -1, 266, 352, 353, 354, 355, 356, 357, 358,
 359, 360, 361, 362, 278, 260, 280, -1, 282, 283,
 -1, 266, -1, -1, -1, -1, 290, -1, -1, -1,
 -1, -1, -1, 278, -1, 280, -1, 282, 283, -1,
 -1, -1, -1, -1, 308, 290, -1, -1, -1, 313,
 -1, -1, 41, 260, -1, 44, -1, -1, -1, 266,
 -1, -1, -1, 308, -1, -1, -1, -1, 313, 58,
 59, 278, 61, 280, -1, 282, 283, -1, -1, -1,
 -1, -1, -1, 290, -1, -1, -1, -1, 352, 353,
 354, 355, 356, 357, 358, 359, 360, 361, 362, -1,
 -1, 308, -1, -1, -1, -1, 313, 352, 353, 354,
 355, 356, 357, 358, 359, 360, 361, 362, -1, -1,
 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 -1, -1, -1, -1, -1, 352, 353, 354, 355, 356,
 357, 358, 359, 360, 361, 362, -1, -1, 41, 260,
 -1, 44, -1, -1, -1, 266, -1, 41, -1, -1,
 44, -1, -1, -1, -1, 58, 59, 278, 61, 280,
 -1, 282, 283, -1, 58, 59, 260, 61, -1, 290,
 -1, -1, 266, -1, -1, -1, -1, -1, -1, -1,
 -1, -1, -1, -1, 278, -1, 280, 308, 282, 283,
 -1, -1, 313, -1, -1, -1, 290, -1, 41, -1,
 -1, 44, -1, -1, -1, -1, -1, -1, -1, -1,
 -1, -1, -1, -1, 308, 58, 59, -1, 61, 313,
 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 -1, 352, 353, 354, 355, 356, 357, 358, 359, 360,
 361, 362, -1, -1, -1, -1, -1, -1, -1, -1,
 -1, 260, -1, -1, -1, -1, -1, 266, 352, 353,
 354, 355, 356, 357, 358, 359, 360, 361, 362, 278,
 -1, 280, -1, 282, 283, -1, -1, 41, -1, -1,
 44, 290, -1, -1, -1, -1, -1, -1, -1, -1,
 -1, -1, -1, -1, 58, 59, -1, 61, 41, 308,
 -1, 44, -1, -1, 313, -1, -1, -1, -1, 41,
 -1, -1, 44, -1, -1, 58, 59, -1, 61, -1,
 -1, -1, -1, -1, -1, -1, 58, 59, -1, 61,
 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 -1, -1, -1, 352, 353, 354, 355, 356, 357, 358,
 359, 360, 361, 362, -1, -1, -1, 260, -1, -1,
 -1, -1, -1, 266, -1, -1, 260, -1, -1, -1,
 -1, -1, 266, -1, -1, 278, -1, 280, -1, 282,
 283, -1, -1, -1, 278, -1, 280, 290, 282, 283,
 -1, -1, -1, -1, -1, -1, 290, -1, -1, -1,
 -1, -1, -1, -1, -1, 308, -1, -1, -1, -1,
 313, -1, -1, -1, 308, -1, -1, 260, 50, 313,
 -1, 53, -1, 266, -1, -1, -1, -1, -1, -1,
 -1, -1, -1, -1, -1, 278, -1, 280, -1, 282,
 283, -1, -1, -1, -1, -1, -1, 290, -1, 352,
 353, 354, 355, 356, -1, -1, -1, -1, 352, 353,
 354, 355, 356, -1, -1, 308, -1, -1, -1, -1,
 313, -1, -1, -1, -1, -1, 108, -1, -1, -1,
 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 -1, 123, -1, -1, -1, -1, 260, -1, -1, -1,
 -1, -1, 266, -1, -1, -1, -1, -1, -1, 352,
 353, 354, 355, 356, 278, -1, 280, 260, 282, 283,
 -1, -1, 112, 266, -1, -1, 290, -1, 260, -1,
 -1, -1, -1, -1, 266, 278, -1, 280, -1, 282,
 283, -1, -1, -1, 308, -1, 278, 290, 280, 313,
 282, 283, -1, 185, 186, -1, 188, 189, 290, -1,
 -1, -1, -1, -1, -1, 308, -1, -1, -1, -1,
 313, -1, -1, -1, -1, -1, 308, -1, -1, -1,
 -1, 313, -1, -1, -1, -1, -1, -1, 352, 353,
 354, 355, 356, -1, -1, -1, -1, 187, -1, -1,
 -1, -1, -1, -1, -1, 195, -1, -1, -1, 352,
 353, 354, 355, 356, -1, -1, -1, -1, -1, -1,
 352, 353, 354, 355, 356, -1, 258, 259, -1, -1,
 -1, -1, -1, -1, 224, -1, 268, 227, 228, -1,
 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 -1, -1, -1, -1, -1, -1, -1, -1, 300, 301,
 302, -1, -1, -1, -1, -1, -1, -1, 310, -1,
 -1, -1, -1, 315, 316, 317, 318, -1, -1, -1,
 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 332, 333, -1, -1, -1, -1, -1, 297, 298, -1,
 -1, -1, -1, -1, -1, -1, -1, -1, -1, 309,
 -1, -1, -1, -1, -1, -1, 358, -1, -1, -1,
 -1, -1, -1, -1, -1, -1, 326, 327, 328, 329,
 330, -1, -1, -1, -1, -1, 336, -1, 338, 339,
 340, 341, -1, -1, -1, -1, -1, -1, -1, -1,
 -1, -1, 352, 353, 354, 355, 257, -1, -1, -1,
 261, 262, -1, 264, 265, -1, -1, 268, 269, -1,
 271, 272, 273, 274, 374, -1, -1, 278, -1, -1,
 281, -1, -1, 284, 285, 286, -1, -1, -1, -1,
 -1, -1, -1, -1, -1, 296, -1, -1, -1, -1,
 -1, -1, -1, -1, -1, -1, -1, 308, 309, 310,
 311, 312, -1, -1, 315, -1, -1, -1, -1, 320,
 -1, -1, -1, 324, -1, -1, -1, -1, -1, -1,
 -1, -1, -1, 334, -1, 336, -1, -1, 339, 340,
 341, 342, 257, -1, -1, 346, 261, 262, -1, 264,
 265, -1, -1, 268, 269, -1, 271, 272, 273, 274,
 -1, -1, -1, 278, -1, -1, 281, 368, -1, 284,
 285, 286, -1, -1, -1, -1, -1, -1, -1, -1,
 -1, 296, -1, -1, -1, -1, -1, -1, -1, -1,
 -1, -1, -1, 308, 309, 310, 311, 312, 261, 262,
 315, 264, 265, -1, -1, 320, 269, -1, 271, 324,
 273, -1, -1, -1, -1, 278, -1, -1, 281, 334,
 -1, 336, 285, 286, 339, 340, 341, 342, -1, -1,
 -1, 346, -1, 296, -1, -1, -1, -1, -1, -1,
 -1, -1, -1, -1, -1, 308, 309, 310, 311, 312,
 -1, -1, 315, 368, -1, -1, -1, 320, -1, -1,
 -1, 324, -1, -1, -1, -1, -1, -1, -1, -1,
 -1, 334, -1, 336, -1, -1, 339, 340, 341, 342,
 257, -1, -1, 346, 261, 262, -1, -1, 265, -1,
 -1, -1, 269, -1, 271, -1, 273, -1, -1, -1,
 -1, 278, -1, -1, 281, 368, -1, -1, 285, 286,
 -1, -1, -1, -1, -1, -1, -1, -1, -1, 296,
 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 -1, 308, 309, 310, 311, 312, -1, -1, 315, -1,
 -1, -1, -1, 320, -1, -1, -1, 324, -1, -1,
 -1, -1, -1, -1, -1, -1, -1, 334, -1, 336,
 -1, -1, 339, 340, 341, 342, 261, 262, -1, 346,
 265, -1, -1, -1, 269, -1, 271, -1, 273, -1,
 -1, -1, -1, 278, -1, -1, 281, -1, -1, -1,
 285, 286, -1, -1, -1, 290, -1, -1, -1, -1,
 -1, 296, -1, -1, -1, -1, -1, -1, -1, -1,
 -1, -1, -1, 308, 309, 310, 311, 312, 261, 262,
 315, -1, 265, -1, -1, 320, 269, -1, 271, 324,
 273, 274, -1, -1, -1, 278, -1, -1, 281, 334,
 -1, 336, 285, 286, 339, 340, 341, 342, -1, -1,
 -1, 346, -1, 296, -1, -1, -1, -1, -1, -1,
 -1, -1, -1, -1, -1, 308, 309, 310, 311, 312,
 -1, -1, 315, -1, -1, -1, -1, 320, -1, -1,
 -1, 324, -1, -1, -1, -1, -1, -1, -1, -1,
 -1, 334, -1, 336, -1, -1, 339, 340, 341, 342,
 261, 262, -1, 346, 265, -1, -1, -1, 269, -1,
 271, 272, 273, -1, -1, -1, -1, 278, -1, -1,
 281, -1, -1, -1, 285, 286, -1, -1, -1, -1,
 -1, -1, -1, -1, -1, 296, -1, -1, -1, -1,
 -1, -1, -1, -1, -1, -1, -1, 308, 309, 310,
 311, 312, 261, 262, 315, 264, 265, -1, -1, 320,
 269, -1, 271, 324, 273, -1, -1, -1, -1, 278,
 -1, -1, 281, 334, -1, 336, 285, 286, 339, 340,
 341, 342, -1, -1, -1, 346, -1, 296, -1, -1,
 -1, -1, -1, -1, -1, -1, -1, -1, -1, 308,
 309, 310, 311, 312, 261, 262, 315, -1, 265, -1,
 -1, 320, 269, -1, 271, 324, 273, 274, -1, -1,
 -1, 278, -1, -1, 281, 334, -1, 336, 285, 286,
 339, 340, 341, 342, -1, -1, -1, 346, -1, 296,
 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 -1, 308, 309, 310, 311, 312, 261, 262, 315, -1,
 265, -1, -1, 320, 269, -1, 271, 324, 273, 274,
 -1, -1, -1, 278, -1, -1, 281, 334, -1, 336,
 285, 286, 339, 340, 341, 342, -1, -1, -1, 346,
 -1, 296, -1, -1, -1, -1, -1, -1, -1, -1,
 -1, -1, -1, 308, 309, 310, 311, 312, 261, 262,
 315, 264, 265, -1, -1, 320, 269, -1, 271, 324,
 273, -1, -1, -1, -1, 278, -1, -1, 281, 334,
 -1, 336, 285, 286, 339, 340, 341, 342, -1, -1,
 -1, 346, -1, 296, -1, -1, -1, -1, -1, -1,
 -1, -1, -1, -1, -1, 308, 309, 310, 311, 312,
 261, 262, 315, 264, 265, -1, -1, 320, 269, -1,
 271, 324, 273, -1, -1, -1, -1, 278, -1, -1,
 281, 334, -1, 336, 285, 286, 339, 340, 341, 342,
 -1, -1, -1, 346, -1, 296, -1, -1, -1, -1,
 -1, -1, -1, -1, -1, -1, -1, 308, 309, 310,
 311, 312, -1, -1, 315, -1, -1, -1, -1, 320,
 -1, -1, -1, 324, -1, -1, -1, -1, -1, -1,
 -1, -1, -1, 334, -1, 336, -1, -1, 339, 340,
 341, 342, 261, 262, -1, 346, 265, -1, -1, -1,
 269, -1, 271, -1, 273, -1, -1, -1, -1, 278,
 -1, -1, 281, -1, -1, 284, 285, 286, -1, -1,
 -1, -1, -1, -1, -1, -1, -1, 296, -1, -1,
 -1, -1, -1, -1, -1, -1, -1, -1, -1, 308,
 309, 310, 311, 312, 261, 262, 315, 264, 265, -1,
 -1, 320, 269, -1, 271, 324, 273, -1, -1, -1,
 -1, 278, -1, -1, 281, 334, -1, 336, 285, 286,
 339, 340, 341, 342, -1, -1, -1, 346, -1, 296,
 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 -1, 308, 309, 310, 311, 312, 261, 262, 315, 264,
 265, -1, -1, 320, 269, -1, 271, 324, 273, -1,
 -1, -1, -1, 278, -1, -1, 281, 334, -1, 336,
 285, 286, 339, 340, 341, 342, -1, -1, -1, 346,
 -1, 296, -1, -1, -1, -1, -1, -1, -1, -1,
 -1, -1, -1, 308, 309, 310, 311, 312, 261, 262,
 315, 264, 265, -1, -1, 320, 269, -1, 271, 324,
 273, -1, -1, -1, -1, 278, -1, -1, 281, 334,
 -1, 336, 285, 286, 339, 340, 341, 342, -1, -1,
 -1, 346, -1, 296, -1, -1, -1, -1, -1, -1,
 -1, -1, -1, -1, -1, 308, 309, 310, 311, 312,
 261, 262, 315, 264, 265, -1, -1, 320, 269, -1,
 271, 324, 273, -1, -1, -1, -1, 278, -1, -1,
 281, 334, -1, 336, 285, 286, 339, 340, 341, 342,
 -1, -1, -1, 346, -1, 296, -1, -1, -1, -1,
 -1, -1, -1, -1, -1, -1, -1, 308, 309, 310,
 311, 312, 261, 262, 315, 264, 265, -1, -1, 320,
 269, -1, 271, 324, 273, -1, -1, -1, -1, 278,
 -1, -1, 281, 334, -1, 336, 285, 286, 339, 340,
 341, 342, -1, -1, -1, 346, -1, 296, -1, -1,
 -1, -1, -1, -1, -1, -1, -1, -1, -1, 308,
 309, 310, 311, 312, 261, 262, 315, -1, 265, -1,
 -1, 320, 269, -1, 271, 324, 273, -1, -1, -1,
 -1, 278, -1, -1, 281, 334, -1, 336, 285, 286,
 339, 340, 341, 342, -1, -1, -1, 346, -1, 296,
 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 -1, 308, 309, 310, 311, 312, -1, -1, 315, -1,
 -1, -1, -1, 320, -1, -1, -1, 324, -1, -1,
 -1, -1, -1, -1, -1, -1, -1, 334, -1, 336,
 -1, -1, 339, 340, 341, 342, 261, 262, -1, 346,
 265, -1, -1, -1, 269, -1, 271, -1, 273, -1,
 -1, -1, -1, 278, -1, -1, 281, -1, -1, -1,
 285, 286, -1, -1, -1, 290, -1, -1, -1, -1,
 -1, 296, -1, -1, -1, -1, -1, -1, -1, -1,
 -1, -1, -1, 308, 309, 310, 311, 312, 261, 262,
 315, -1, 265, -1, -1, 320, 269, -1, 271, -1,
 273, -1, -1, -1, -1, 278, -1, -1, 281, 334,
 -1, 336, 285, 286, 339, 340, 341, 342, -1, -1,
 -1, 346, -1, 296, -1, -1, -1, -1, -1, -1,
 -1, -1, -1, -1, -1, 308, 309, 310, 311, 312,
 -1, -1, 315, -1, -1, -1, -1, 320, -1, -1,
 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 -1, 334, -1, 336, -1, -1, 339, 340, 341, 342,
 -1, -1, -1, 346,
};
#define YYFINAL 4
#ifndef YYDEBUG
#define YYDEBUG 0
#endif
#define YYMAXTOKEN 368
#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, "END_OF_MODULE", "BEGIN_OF_MODULE",
  "BEGIN_OF_FORMULA", "END_OF_FORMULA", "SUB", "FUNCTION", "ARG", "END", "IF", "THEN",
  "ENDIF", "CASE", "SELECT", "CASEELSE", "WHILE", "WEND", "DO", "LOOP", "UNTIL",
  "LOOPUNTIL", "LOOPWHILE", "FOR", "EACH", "IN", "EXIT", "TO", "STEP", "NEXT", "CALL",
  "GOTO", "CONTINUE", "BREAK", "RETURN", "NEWLINE", "INTEGER_CONSTANT",
  "FLOATING_CONSTANT", "STRING_CONSTANT", "CHARACTER_CONSTANT", "DATE_CONSTANT",
  "IDENTIFIER", "DEREFID", "BASEOBJECT", "RETURNOBJECT", "FCTMEMBERFCT",
  "OBJMEMBERFCT", "BUILTINFUNCTION", "USERFUNCTION", "MEMBERFUNCTION", "DEREFMF",
  "ALONEOBJ", "OPERATION", "MEMBER", "WITH", "DIM", "PUBLIC", "STATIC", "AS", "NEW",
  "CONST", "CONSTCONST", "DIMS", "STATICS", "PUBLICS", "PRIVATE", "PRIVATES", "OBJECT",
  "BYTE", "INTEGER", "LONG", "SINGLE", "DOUBLE", "CURRENCY", "STRING", "BOOLEAN",
  "VARIANT", "DATE", "OBJARG", "SET", "SUBARG", "OPEN", "SPC", "TAB", "CLOSE", "PRINT",
  "WRITE", "INPUT", "IDLIST", "BYVAL", "BYREF", "OPTION", "OUTPUT", "BINARY", "APPEND",
  "RANDOM", "NOT", "AND", "OR", "XOR", "EQV", "IMP", "EQ", "NE", "LT", "GT", "LE", "GE",
  "LIKE", "LS", "MOD", "UMINUS", "UPLUS", "ELSE",
};
char *yyrule[] =
{
  "$accept : module",
  "module : error NEWLINE",
  "module : begin stat_list end",
  "module : BEGIN_OF_FORMULA expr END_OF_FORMULA NEWLINE",
  "module : BEGIN_OF_FORMULA error END_OF_FORMULA NEWLINE",
  "begin : BEGIN_OF_MODULE NEWLINE",
  "end : END_OF_MODULE NEWLINE",
  "stat_list :",
  "stat_list : statement",
  "stat_list : stat_list statement",
  "statement : stat newline",
  "statement : labeled_stat newline",
  "labeled_stat : INTEGER stat",
  "stat : declar_stat",
  "stat : expr_stat",
  "stat : select_stat",
  "stat : iter_stat",
  "stat : jump_stat",
  "stat : function",
  "stat : io_stat",
  "stat : object",
  "declar_stat : DIM idlist",
  "declar_stat : STATIC idlist",
  "declar_stat : PUBLIC idlist",
  "declar_stat : PRIVATE idlist",
  "declar_stat : const_scope CONST idlist",
  "declar_stat : CONST idlist",
  "declar_stat : PRIVATE SUB identifier '(' subarg ')' newline stat_list END SUB",
  "declar_stat : PRIVATE FUNCTION identifier '(' subarg ')' newline stat_list END FUNCTION",
  "declar_stat : PUBLIC SUB identifier '(' subarg ')' newline stat_list END SUB",
  "declar_stat : PUBLIC FUNCTION identifier '(' subarg ')' newline stat_list END FUNCTION",
  "declar_stat : SUB identifier '(' subarg ')' newline stat_list END SUB",
  "declar_stat : FUNCTION identifier '(' subarg ')' newline stat_list END FUNCTION",
  "declar_stat : OPTION identifier",
  "declar_stat : WITH identifier newline stat_list END WITH",
  "idlist : identifier subscript type_specifier initval",
  "idlist : idlist ',' identifier subscript type_specifier initval",
  "transmit :",
  "transmit : BYREF",
  "transmit : BYVAL",
  "subarg :",
  "subarg : transmit identifier type_specifier",
  "subarg : subarg ',' transmit identifier type_specifier",
  "const_scope : PUBLIC",
  "const_scope : PRIVATE",
  "type_specifier :",
  "type_specifier : AS type",
  "type_specifier : AS NEW type",
  "initval :",
  "initval : '=' expr",
  "subscript :",
  "subscript : arglist",
  "type : OBJECT",
  "type : BYTE",
  "type : INTEGER",
  "type : LONG",
  "type : SINGLE",
  "type : DOUBLE",
  "type : CURRENCY",
  "type : STRING",
  "type : BOOLEAN",
  "type : VARIANT",
  "type : DATE",
  "select_stat : IF expr THEN newline stat_list END IF",
"select_stat : IF expr THEN newline stat_list ELSE newline stat_list END IF",
  "select_stat : IF expr THEN stat",
  "select_stat : SELECT CASE expr newline case_list END SELECT",
  "case_list : CASE expr newline stat_list",
  "case_list : CASE expr ':' stat_list",
  "case_list : CASE ELSE newline stat_list",
  "case_list : CASE ELSE ':' stat_list",
  "case_list : case_list CASE expr newline stat_list",
  "case_list : case_list CASE expr ':' stat_list",
  "case_list : case_list CASE ELSE newline stat_list",
  "case_list : case_list CASE ELSE ':' stat_list",
  "iter_stat : DO WHILE expr newline stat_list LOOP",
  "iter_stat : WHILE expr newline stat_list WEND",
  "iter_stat : DO UNTIL expr newline stat_list LOOP",
  "iter_stat : DO newline stat_list LOOP UNTIL expr",
  "iter_stat : DO newline stat_list LOOP WHILE expr",
  "iter_stat : FOR leftexpr '=' expr TO expr newline stat_list next_stat",
  "iter_stat : FOR leftexpr '=' expr TO expr STEP expr newline stat_list next_stat",
  "iter_stat : FOR EACH expr IN expr newline stat_list next_stat",
  "next_stat : NEXT",
  "next_stat : NEXT identifier",
  "jump_stat : CALL identifier arglist",
  "jump_stat : GOTO expr",
  "jump_stat : EXIT FOR",
  "jump_stat : EXIT DO",
  "jump_stat : EXIT FUNCTION",
  "jump_stat : EXIT SUB",
  "io_stat : PRINT filenumber ',' colpos expr_list",
  "io_stat : WRITE filenumber ',' expr_list",
  "io_stat : INPUT filenumber ',' expr_list",
  "io_stat : OPEN expr FOR mode AS filenumber",
  "io_stat : CLOSE filenumber",
  "colpos :",
  "colpos : SPC '(' expr ')' ';'",
  "colpos : TAB '(' expr ')' ';'",
  "mode : INPUT",
  "mode : OUTPUT",
  "mode : BINARY",
  "mode : APPEND",
  "mode : RANDOM",
  "filenumber : expr",
  "filenumber : '#' expr",
  "expr_stat : leftexpr '=' expr",
  "expr_stat : SET object '=' expr",
  "expr_stat : SET identifier '=' expr",
  "arglist : '(' ')'",
  "arglist : '(' expr_list ')'",
  "arglist : objarg_list",
  "expr_list : expr",
  "expr_list : expr_list ',' expr",
  "expr_list : expr_list ';' expr",
  "objarg_list : objarg",
  "objarg_list : objarg_list ',' objarg",
  "objarg : identifier ':' '=' expr",
  "leftexpr : identifier",
  "leftexpr : function",
  "leftexpr : object",
  "expr : '-' expr",
  "expr : '+' expr",
  "expr : expr '+' expr",
  "expr : expr '-' expr",
  "expr : expr '*' expr",
  "expr : expr '/' expr",
  "expr : expr '\\\\' expr",
  "expr : expr MOD expr",
  "expr : expr '^' expr",
  "expr : expr LT expr",
  "expr : expr LE expr",
  "expr : expr GT expr",
  "expr : expr GE expr",
  "expr : expr EQ expr",
  "expr : expr NE expr",
  "expr : expr AND expr",
  "expr : expr EQV expr",
  "expr : expr IMP expr",
  "expr : NOT expr",
  "expr : expr OR expr",
  "expr : expr XOR expr",
  "expr : expr '&' expr",
  "expr : '(' expr ')'",
  "expr : identifier ':' identifier",
  "expr : primary_expr",
  "primary_expr : INTEGER_CONSTANT",
  "primary_expr : FLOATING_CONSTANT",
  "primary_expr : string",
  "primary_expr : identifier",
  "primary_expr : object",
  "primary_expr : function",
  "string : STRING_CONSTANT",
  "string : string STRING_CONSTANT",
  "string : CHARACTER_CONSTANT",
  "identifier : IDENTIFIER",
  "identifier : identifier '!' identifier",
  "member : MEMBER",
  "object : member",
  "object : object member",
  "object : object memberfunction",
  "object : identifier memberfunction",
  "object : identifier member",
  "object : function member",
  "object : function memberfunction",
  "function : identifier arglist",
  "memberfunction : member arglist",
  "newline : NEWLINE",
  "newline : newline NEWLINE",
};
#endif
#ifdef YYSTACKSIZE
#undef YYMAXDEPTH
#define YYMAXDEPTH YYSTACKSIZE
#else
#ifdef YYMAXDEPTH
#define YYSTACKSIZE YYMAXDEPTH
#else
#define YYSTACKSIZE 500
#define YYMAXDEPTH 500
#endif
#endif
int yydebug;
int yynerrs;
int yyerrflag;
int yychar;
short *yyssp;
YYSTYPE *yyvsp;
YYSTYPE yyval;
YYSTYPE yylval;
short yyss[YYSTACKSIZE];
YYSTYPE yyvs[YYSTACKSIZE];
#define yystacksize YYSTACKSIZE
#line 362 "gram.y"
#include "parser_ext.h"

int
yyerror (s)
     char *s;
{
  parseerror ();
  return 0;
}

int
yywrap ()
{
  return 1;
}
#line 1527 "y.tab.c"
#define YYABORT goto yyabort
#define YYREJECT goto yyabort
#define YYACCEPT goto yyaccept
#define YYERROR goto yyerrlab
int
yyparse ()
{
  register int yym, yyn, yystate;
#if YYDEBUG
  register char *yys;
  extern char *getenv ();

  if (yys = getenv ("YYDEBUG"))
    {
      yyn = *yys;
      if (yyn >= '0' && yyn <= '9')
	yydebug = yyn - '0';
    }
#endif

  yynerrs = 0;
  yyerrflag = 0;
  yychar = (-1);

  yyssp = yyss;
  yyvsp = yyvs;
  *yyssp = yystate = 0;

yyloop:
  if (yyn = yydefred[yystate])
    goto yyreduce;
  if (yychar < 0)
    {
      if ((yychar = yylex ()) < 0)
	yychar = 0;
#if YYDEBUG
      if (yydebug)
	{
	  yys = 0;
	  if (yychar <= YYMAXTOKEN)
	    yys = yyname[yychar];
	  if (!yys)
	    yys = "illegal-symbol";
	  printf ("%sdebug: state %d, reading %d (%s)\n",
		  YYPREFIX, yystate, yychar, yys);
	}
#endif
    }
  if ((yyn = yysindex[yystate]) && (yyn += yychar) >= 0 &&
      yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
    {
#if YYDEBUG
      if (yydebug)
	printf ("%sdebug: state %d, shifting to state %d\n",
		YYPREFIX, yystate, yytable[yyn]);
#endif
      if (yyssp >= yyss + yystacksize - 1)
	{
	  goto yyoverflow;
	}
      *++yyssp = yystate = yytable[yyn];
      *++yyvsp = yylval;
      yychar = (-1);
      if (yyerrflag > 0)
	--yyerrflag;
      goto yyloop;
    }
  if ((yyn = yyrindex[yystate]) && (yyn += yychar) >= 0 &&
      yyn <= YYTABLESIZE && yycheck[yyn] == yychar)
    {
      yyn = yytable[yyn];
      goto yyreduce;
    }
  if (yyerrflag)
    goto yyinrecovery;
#ifdef lint
  goto yynewerror;
#endif
yynewerror:
  yyerror ("syntax error");
#ifdef lint
  goto yyerrlab;
#endif
yyerrlab:
  ++yynerrs;
yyinrecovery:
  if (yyerrflag < 3)
    {
      yyerrflag = 3;
      for (;;)
	{
	  if ((yyn = yysindex[*yyssp]) && (yyn += YYERRCODE) >= 0 &&
	      yyn <= YYTABLESIZE && yycheck[yyn] == YYERRCODE)
	    {
#if YYDEBUG
	      if (yydebug)
		printf ("%sdebug: state %d, error recovery shifting\
 to state %d\n", YYPREFIX, *yyssp, yytable[yyn]);
#endif
	      if (yyssp >= yyss + yystacksize - 1)
		{
		  goto yyoverflow;
		}
	      *++yyssp = yystate = yytable[yyn];
	      *++yyvsp = yylval;
	      goto yyloop;
	    }
	  else
	    {
#if YYDEBUG
	      if (yydebug)
		printf ("%sdebug: error recovery discarding state %d\n",
			YYPREFIX, *yyssp);
#endif
	      if (yyssp <= yyss)
		goto yyabort;
	      --yyssp;
	      --yyvsp;
	    }
	}
    }
  else
    {
      if (yychar == 0)
	goto yyabort;
#if YYDEBUG
      if (yydebug)
	{
	  yys = 0;
	  if (yychar <= YYMAXTOKEN)
	    yys = yyname[yychar];
	  if (!yys)
	    yys = "illegal-symbol";
	  printf ("%sdebug: state %d, error recovery discards token %d (%s)\n",
		  YYPREFIX, yystate, yychar, yys);
	}
#endif
      yychar = (-1);
      goto yyloop;
    }
yyreduce:
#if YYDEBUG
  if (yydebug)
    printf ("%sdebug: state %d, reducing by rule %d (%s)\n",
	    YYPREFIX, yystate, yyn, yyrule[yyn]);
#endif
  yym = yylen[yyn];
  yyval = yyvsp[1 - yym];
  switch (yyn)
    {
    case 1:
#line 104 "gram.y"
      {
	yyerrok;
	return 1;
      }
      break;
    case 2:
#line 109 "gram.y"
      {
	ActiveNode = yyvsp[-1].nPtr;
	return 0;		
      }
      break;
    case 3:
#line 110 "gram.y"
      {
	ActiveNode = yyvsp[-2].nPtr;
	return 0;		
      }
      break;
    case 4:
#line 111 "gram.y"
      {
	return 1;
      }
      break;
    case 7:
#line 117 "gram.y"
      {
	yyval.nPtr = opr (UPLUS, "nothing", 0, NULL);
      }
      break;
    case 8:
#line 118 "gram.y"
      {
	yyval.nPtr = opr (NEWLINE, "sl", 1, yyvsp[0].nPtr);
      }
      break;
    case 9:
#line 119 "gram.y"
      {
	yyval.nPtr = addarg (yyvsp[-1].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 10:
#line 122 "gram.y"
      {
	yyval.nPtr = yyvsp[-1].nPtr;
      }
      break;
    case 11:
#line 123 "gram.y"
      {
	yyval.nPtr = yyvsp[-1].nPtr;
      }
      break;
    case 12:
#line 125 "gram.y"
      {
	yyval.nPtr = yyvsp[0].nPtr;
      }
      break;
    case 13:
#line 128 "gram.y"
      {
	yyval.nPtr = yyvsp[0].nPtr;
      }
      break;
    case 14:
#line 129 "gram.y"
      {
	yyval.nPtr = yyvsp[0].nPtr;
      }
      break;
    case 15:
#line 130 "gram.y"
      {
	yyval.nPtr = yyvsp[0].nPtr;
      }
      break;
    case 16:
#line 131 "gram.y"
      {
	yyval.nPtr = yyvsp[0].nPtr;
      }
      break;
    case 17:
#line 132 "gram.y"
      {
	yyval.nPtr = yyvsp[0].nPtr;
      }
      break;
    case 18:
#line 133 "gram.y"
      {
	yyval.nPtr = yyvsp[0].nPtr;
      }
      break;
    case 19:
#line 134 "gram.y"
      {
	yyval.nPtr = yyvsp[0].nPtr;
      }
      break;
    case 20:
#line 135 "gram.y"
      {
	yyval.nPtr = opr (ALONEOBJ, "alone obj", 1, yyvsp[0].nPtr);
      }
      break;
    case 21:
#line 139 "gram.y"
      {
	yyval.nPtr = opr (DIM, "Dim", 1, yyvsp[0].nPtr);
      }
      break;
    case 22:
#line 140 "gram.y"
      {
	yyval.nPtr = opr (STATIC, "Static", 1, yyvsp[0].nPtr);
      }
      break;
    case 23:
#line 141 "gram.y"
      {
	yyval.nPtr = opr (PUBLIC, "Public", 1, yyvsp[0].nPtr);
      }
      break;
    case 24:
#line 142 "gram.y"
      {
	yyval.nPtr = opr (PRIVATE, "Private", 1, yyvsp[0].nPtr);
      }
      break;
    case 25:
#line 143 "gram.y"
      {
	yyval.nPtr = opr (CONST, "Const", 2, yyvsp[-2].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 26:
#line 144 "gram.y"
      {
	yyval.nPtr = opr (CONST, "Const", 1, yyvsp[0].nPtr);
      }
      break;
    case 27:
#line 147 "gram.y"
      {
	yyval.nPtr = opr (SUB, "Sub", 3, yyvsp[-7].nPtr, yyvsp[-5].nPtr, yyvsp[-2].nPtr);
	emitlabel (yyval.nPtr, PRIVATE);
      }
      break;
    case 28:
#line 148 "gram.y"
      {
	yyval.nPtr = opr (SUB, "Sub", 3, yyvsp[-7].nPtr, yyvsp[-5].nPtr, yyvsp[-2].nPtr);
	emitlabel (yyval.nPtr, PRIVATE);
      }
      break;
    case 29:
#line 149 "gram.y"
      {
	yyval.nPtr = opr (SUB, "Sub", 3, yyvsp[-7].nPtr, yyvsp[-5].nPtr, yyvsp[-2].nPtr);
	emitlabel (yyval.nPtr, PUBLIC);
      }
      break;
    case 30:
#line 150 "gram.y"
      {
	yyval.nPtr = opr (SUB, "Sub", 3, yyvsp[-7].nPtr, yyvsp[-5].nPtr, yyvsp[-2].nPtr);
	emitlabel (yyval.nPtr, PUBLIC);
      }
      break;
    case 31:
#line 151 "gram.y"
      {
	yyval.nPtr = opr (SUB, "Sub", 3, yyvsp[-7].nPtr, yyvsp[-5].nPtr, yyvsp[-2].nPtr);
	emitlabel (yyval.nPtr, PUBLIC);
      }
      break;
    case 32:
#line 152 "gram.y"
      {
	yyval.nPtr = opr (SUB, "Sub", 3, yyvsp[-7].nPtr, yyvsp[-5].nPtr, yyvsp[-2].nPtr);
	emitlabel (yyval.nPtr, PUBLIC);
      }
      break;
    case 33:
#line 153 "gram.y"
      {
	yyval.nPtr = opr (OPTION, "Option", 0, NULL);
      }
      break;
    case 34:
#line 155 "gram.y"
      {
	yyval.nPtr = opr (WITH, "With", 2, yyvsp[-4].nPtr, yyvsp[-2].nPtr);
      }
      break;
    case 35:
#line 159 "gram.y"
      {
	yyval.nPtr = opr (IDLIST, "Idlist", 4, yyvsp[-3].nPtr, yyvsp[-2].nPtr, yyvsp[-1].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 36:
#line 160 "gram.y"
      {
	yyval.nPtr = opr (IDLIST, "Idlist", 5, yyvsp[-5].nPtr, yyvsp[-3].nPtr, yyvsp[-2].nPtr, yyvsp[-1].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 37:
#line 163 "gram.y"
      {
	yyval.nPtr = NULL;
      }
      break;
    case 38:
#line 164 "gram.y"
      {
	yyval.nPtr = opr (BYREF, "Byref", 0, NULL);
      }
      break;
    case 39:
#line 165 "gram.y"
      {
	yyval.nPtr = opr (BYVAL, "Byval", 0, NULL);
      }
      break;
    case 40:
#line 167 "gram.y"
      {
	yyval.nPtr = NULL;
      }
      break;
    case 41:
#line 168 "gram.y"
      {
	yyval.nPtr = opr (SUBARG, "Subparam", 3, yyvsp[-2].nPtr, yyvsp[-1].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 42:
#line 169 "gram.y"
      {
	yyval.nPtr = opr (SUBARG, "Subparam", 4, yyvsp[-4].nPtr, yyvsp[-2].nPtr, yyvsp[-1].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 43:
#line 171 "gram.y"
      {
	yyval.nPtr = opr (PUBLIC, "public", 0, NULL);
      }
      break;
    case 44:
#line 172 "gram.y"
      {
	yyval.nPtr = opr (PRIVATE, "private", 0, NULL);
      }
      break;
    case 45:
#line 174 "gram.y"
      {
	yyval.nPtr = NULL;
      }
      break;
    case 46:
#line 175 "gram.y"
      {
	yyval.nPtr = yyvsp[0].nPtr;
      }
      break;
    case 47:
#line 176 "gram.y"
      {
	yyval.nPtr = opr (NEW, "new", 1, yyvsp[0].nPtr);
      }
      break;
    case 48:
#line 178 "gram.y"
      {
	yyval.nPtr = NULL;
      }
      break;
    case 49:
#line 179 "gram.y"
      {
	yyval.nPtr = yyvsp[0].nPtr;
      }
      break;
    case 50:
#line 181 "gram.y"
      {
	yyval.nPtr = NULL;
      }
      break;
    case 51:
#line 182 "gram.y"
      {
	yyval.nPtr = yyvsp[0].nPtr;
      }
      break;
    case 52:
#line 184 "gram.y"
      {
	yyval.nPtr = opr (OBJECT, "object", 0, NULL);
      }
      break;
    case 53:
#line 185 "gram.y"
      {
	yyval.nPtr = opr (BYTE, "object", 0, NULL);
      }
      break;
    case 54:
#line 186 "gram.y"
      {
	yyval.nPtr = opr (INTEGER, "object", 0, NULL);
      }
      break;
    case 55:
#line 187 "gram.y"
      {
	yyval.nPtr = opr (LONG, "object", 0, NULL);
      }
      break;
    case 56:
#line 188 "gram.y"
      {
	yyval.nPtr = opr (SINGLE, "object", 0, NULL);
      }
      break;
    case 57:
#line 189 "gram.y"
      {
	yyval.nPtr = opr (DOUBLE, "object", 0, NULL);
      }
      break;
    case 58:
#line 190 "gram.y"
      {
	yyval.nPtr = opr (CURRENCY, "object", 0, NULL);
      }
      break;
    case 59:
#line 191 "gram.y"
      {
	yyval.nPtr = opr (STRING, "object", 0, NULL);
      }
      break;
    case 60:
#line 192 "gram.y"
      {
	yyval.nPtr = opr (BOOLEAN, "object", 0, NULL);
      }
      break;
    case 61:
#line 193 "gram.y"
      {
	yyval.nPtr = opr (VARIANT, "object", 0, NULL);
      }
      break;
    case 62:
#line 194 "gram.y"
      {
	yyval.nPtr = opr (DATE, "object", 0, NULL);
      }
      break;
    case 63:
#line 196 "gram.y"
      {
	yyval.nPtr = opr (IF, "IfThen", 2, yyvsp[-5].nPtr, yyvsp[-2].nPtr);
      }
      break;
    case 64:
#line 197 "gram.y"
      {
	yyval.nPtr = opr (IF, "IfThenElse", 3, yyvsp[-8].nPtr, yyvsp[-5].nPtr, yyvsp[-2].nPtr);
      }
      break;
    case 65:
#line 198 "gram.y"
      {
	yyval.nPtr = opr (IF, "If", 2, yyvsp[-2].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 66:
#line 199 "gram.y"
      {
	yyval.nPtr = opr (SELECT, "Selectcase", 2, yyvsp[-4].nPtr, yyvsp[-2].nPtr);
      }
      break;
    case 67:
#line 201 "gram.y"
      {
	yyval.nPtr = opr (CASE, "case", 2, yyvsp[-2].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 68:
#line 202 "gram.y"
      {
	yyval.nPtr = opr (CASE, "case", 2, yyvsp[-2].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 69:
#line 203 "gram.y"
      {
	yyval.nPtr = opr (CASEELSE, "caseelse", 1, yyvsp[0].nPtr);
      }
      break;
    case 70:
#line 204 "gram.y"
      {
	yyval.nPtr = opr (CASEELSE, "caseelse", 1, yyvsp[0].nPtr);
      }
      break;
    case 71:
#line 205 "gram.y"
      {
	yyval.nPtr = opr (CASE, "case", 3, yyvsp[-4].nPtr, yyvsp[-2].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 72:
#line 206 "gram.y"
      {
	yyval.nPtr = opr (CASE, "case", 3, yyvsp[-4].nPtr, yyvsp[-2].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 73:
#line 207 "gram.y"
      {
	yyval.nPtr = opr (CASEELSE, "caseelse", 2, yyvsp[-4].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 74:
#line 208 "gram.y"
      {
	yyval.nPtr = opr (CASEELSE, "caseelse", 2, yyvsp[-4].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 75:
#line 210 "gram.y"
      {
	yyval.nPtr = opr (WHILE, "While", 2, yyvsp[-3].nPtr, yyvsp[-1].nPtr);
      }
      break;
    case 76:
#line 211 "gram.y"
      {
	yyval.nPtr = opr (WHILE, "While", 2, yyvsp[-3].nPtr, yyvsp[-1].nPtr);
      }
      break;
    case 77:
#line 212 "gram.y"
      {
	yyval.nPtr = opr (UNTIL, "Until", 2, yyvsp[-3].nPtr, yyvsp[-1].nPtr);
      }
      break;
    case 78:
#line 213 "gram.y"
      {
	yyval.nPtr = opr (LOOPUNTIL, "LoopUntil", 2, yyvsp[0].nPtr, yyvsp[-3].nPtr);
      }
      break;
    case 79:
#line 214 "gram.y"
      {
	yyval.nPtr = opr (LOOPWHILE, "LoopWhile", 2, yyvsp[0].nPtr, yyvsp[-3].nPtr);
      }
      break;
    case 80:
#line 215 "gram.y"
      {
	yyval.nPtr = opr (FOR, "For", 5, yyvsp[-7].nPtr, yyvsp[-5].nPtr, yyvsp[-3].nPtr, yyvsp[-1].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 81:
#line 216 "gram.y"
      {
	yyval.nPtr = opr (FOR, "ForStep", 6, yyvsp[-9].nPtr, yyvsp[-7].nPtr, yyvsp[-5].nPtr, yyvsp[-3].nPtr, yyvsp[-1].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 82:
#line 217 "gram.y"
      {
	yyval.nPtr = opr (EACH, "Foreach", 4, yyvsp[-5].nPtr, yyvsp[-3].nPtr, yyvsp[-1].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 83:
#line 219 "gram.y"
      {
	yyval.nPtr = opr (NEXT, "Next", 0);
      }
      break;
    case 84:
#line 220 "gram.y"
      {
	yyval.nPtr = opr (NEXT, "Nextid", 1, yyvsp[0].nPtr);
      }
      break;
    case 85:
#line 222 "gram.y"
      {
	yyval.nPtr = opr (CALL, "Call", 2, yyvsp[-1].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 86:
#line 223 "gram.y"
      {
      }
      break;
    case 87:
#line 224 "gram.y"
      {
      }
      break;
    case 88:
#line 225 "gram.y"
      {
      }
      break;
    case 89:
#line 226 "gram.y"
      {
      }
      break;
    case 90:
#line 227 "gram.y"
      {
      }
      break;
    case 91:
#line 229 "gram.y"
      {
	yyval.nPtr = opr (PRINT, "Print", 3, yyvsp[-3].nPtr, yyvsp[-1].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 92:
#line 230 "gram.y"
      {
	yyval.nPtr = opr (WRITE, "Write", 2, yyvsp[-2].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 93:
#line 231 "gram.y"
      {
	yyval.nPtr = opr (INPUT, "Input", 2, yyvsp[-2].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 94:
#line 232 "gram.y"
      {
	yyval.nPtr = opr (OPEN, "Open", 3, yyvsp[-4].nPtr, yyvsp[-2].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 95:
#line 233 "gram.y"
      {
	yyval.nPtr = opr (CLOSE, "Close", 1, yyvsp[0].nPtr);
      }
      break;
    case 96:
#line 235 "gram.y"
      {
	yyval.nPtr = NULL;
      }
      break;
    case 97:
#line 236 "gram.y"
      {
	yyval.nPtr = opr (SPC, "Spc", 1, yyvsp[-2].nPtr);
      }
      break;
    case 98:
#line 237 "gram.y"
      {
	yyval.nPtr = opr (TAB, "Tab", 1, yyvsp[-2].nPtr);
      }
      break;
    case 99:
#line 240 "gram.y"
      {
	yyval.nPtr = opr (INPUT, "Input", 0, NULL);
      }
      break;
    case 100:
#line 241 "gram.y"
      {
	yyval.nPtr = opr (OUTPUT, "Output", 0, NULL);
      }
      break;
    case 101:
#line 242 "gram.y"
      {
	yyval.nPtr = opr (BINARY, "Binary", 0, NULL);
      }
      break;
    case 102:
#line 243 "gram.y"
      {
	yyval.nPtr = opr (APPEND, "Append", 0, NULL);
      }
      break;
    case 103:
#line 244 "gram.y"
      {
	yyval.nPtr = opr (RANDOM, "Random", 0, NULL);
      }
      break;
    case 104:
#line 259 "gram.y"
      {
	yyval.nPtr = yyvsp[0].nPtr;
      }
      break;
    case 105:
#line 260 "gram.y"
      {
	yyval.nPtr = yyvsp[0].nPtr;
      }
      break;
    case 106:
#line 279 "gram.y"
      {
	yyval.nPtr = opr2 ('=', "=", yyvsp[-2].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 107:
#line 280 "gram.y"
      {
	yyval.nPtr = opr2 ('=', "=", yyvsp[-2].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 108:
#line 281 "gram.y"
      {
	yyval.nPtr = opr2 ('=', "=", yyvsp[-2].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 109:
#line 283 "gram.y"
      {
	yyval.nPtr = opr (ARG, "Arg", 0);
      }
      break;
    case 110:
#line 284 "gram.y"
      {
	yyval.nPtr = yyvsp[-1].nPtr;
      }
      break;
    case 112:
#line 289 "gram.y"
      {
	yyval.nPtr = opr (ARG, "Arg", 1, yyvsp[0].nPtr);
      }
      break;
    case 113:
#line 290 "gram.y"
      {
	yyval.nPtr = opr (ARG, "Arg", 2, yyvsp[-2].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 114:
#line 291 "gram.y"
      {
	yyval.nPtr = opr (ARG, "Arg", 2, yyvsp[-2].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 115:
#line 294 "gram.y"
      {
	yyval.nPtr = opr (OBJARG, "ObjArg", 1, yyvsp[0].nPtr);
      }
      break;
    case 116:
#line 295 "gram.y"
      {
	yyval.nPtr = opr (OBJARG, "ObjArg", 2, yyvsp[-2].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 117:
#line 297 "gram.y"
      {
	yyval.nPtr = opr (OBJARG, "ObjArg", 1, yyvsp[-3].nPtr);
      }
      break;
    case 118:
#line 299 "gram.y"
      {
	yyval.nPtr = yyvsp[0].nPtr;
      }
      break;
    case 119:
#line 300 "gram.y"
      {
	yyval.nPtr = yyvsp[0].nPtr;
      }
      break;
    case 120:
#line 301 "gram.y"
      {
	yyval.nPtr = yyvsp[0].nPtr;
      }
      break;
    case 121:
#line 303 "gram.y"
      {
	yyval.nPtr = opr1 (UMINUS, "u-", yyvsp[0].nPtr);
      }
      break;
    case 122:
#line 304 "gram.y"
      {
	yyval.nPtr = yyvsp[0].nPtr;
      }
      break;
    case 123:
#line 305 "gram.y"
      {
	yyval.nPtr = opr2 ('+', "+", yyvsp[-2].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 124:
#line 306 "gram.y"
      {
	yyval.nPtr = opr2 ('-', "-", yyvsp[-2].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 125:
#line 307 "gram.y"
      {
	yyval.nPtr = opr2 ('*', "*", yyvsp[-2].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 126:
#line 308 "gram.y"
      {
	yyval.nPtr = opr2 ('/', "/", yyvsp[-2].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 127:
#line 309 "gram.y"
      {
	yyval.nPtr = opr2 ('\\', "\\", yyvsp[-2].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 128:
#line 310 "gram.y"
      {
	yyval.nPtr = opr2 (MOD, "Mod", yyvsp[-2].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 129:
#line 311 "gram.y"
      {
	yyval.nPtr = opr2 ('^', "^", yyvsp[-2].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 130:
#line 312 "gram.y"
      {
	yyval.nPtr = opr (LT, "<", 2, yyvsp[-2].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 131:
#line 313 "gram.y"
      {
	yyval.nPtr = opr (LE, "<=", 2, yyvsp[-2].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 132:
#line 314 "gram.y"
      {
	yyval.nPtr = opr (GT, ">", 2, yyvsp[-2].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 133:
#line 315 "gram.y"
      {
	yyval.nPtr = opr (GE, ">=", 2, yyvsp[-2].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 134:
#line 316 "gram.y"
      {
	yyval.nPtr = opr (EQ, "==", 2, yyvsp[-2].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 135:
#line 317 "gram.y"
      {
	yyval.nPtr = opr (NE, "<>", 2, yyvsp[-2].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 136:
#line 318 "gram.y"
      {
	yyval.nPtr = opr (AND, "And", 2, yyvsp[-2].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 137:
#line 319 "gram.y"
      {
	yyval.nPtr = opr (EQV, "Eqv", 2, yyvsp[-2].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 138:
#line 320 "gram.y"
      {
	yyval.nPtr = opr (IMP, "Imp", 2, yyvsp[-2].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 139:
#line 321 "gram.y"
      {
	yyval.nPtr = opr (NOT, "Not", 1, yyvsp[0].nPtr);
      }
      break;
    case 140:
#line 322 "gram.y"
      {
	yyval.nPtr = opr (OR, "Or", 2, yyvsp[-2].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 141:
#line 323 "gram.y"
      {
	yyval.nPtr = opr (XOR, "Xor", 2, yyvsp[-2].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 142:
#line 324 "gram.y"
      {
	yyval.nPtr = opr ('&', "&", 2, yyvsp[-2].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 143:
#line 325 "gram.y"
      {
	yyval.nPtr = yyvsp[-1].nPtr;
      }
      break;
    case 144:
#line 326 "gram.y"
      {
	yyval.nPtr = opr (':', ":", 2, yyvsp[-2].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 145:
#line 327 "gram.y"
      {
	yyval.nPtr = yyvsp[0].nPtr;
      }
      break;
    case 146:
#line 329 "gram.y"
      {
	yyval.nPtr = con (putinteger ());
      }
      break;
    case 147:
#line 330 "gram.y"
      {
	yyval.nPtr = con (putfloat ());
      }
      break;
    case 148:
#line 331 "gram.y"
      {
	yyval.nPtr = con (cleanstring (yyvsp[0].o));
      }
      break;
    case 149:
#line 332 "gram.y"
      {
	yyval.nPtr = yyvsp[0].nPtr;
      }
      break;
    case 150:
#line 333 "gram.y"
      {
	yyval.nPtr = yyvsp[0].nPtr;
      }
      break;
    case 151:
#line 334 "gram.y"
      {
	yyval.nPtr = yyvsp[0].nPtr;
      }
      break;
    case 152:
#line 336 "gram.y"
      {
	yyval.o = putstring ();
      }
      break;
    case 153:
#line 337 "gram.y"
      {
	yyval.o = addstring (yyvsp[-1].o);
      }
      break;
    case 154:
#line 338 "gram.y"
      {
	yyval.o = putchars ();
      }
      break;
    case 155:
#line 340 "gram.y"
      {
	yyval.nPtr = id (putidentifier ());
      }
      break;
    case 156:
#line 341 "gram.y"
      {
	yyval.nPtr = opr ('!', "!", 2, yyvsp[-2].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 157:
#line 343 "gram.y"
      {
	yyval.nPtr = member (putmember ());
      }
      break;
    case 158:
#line 345 "gram.y"
      {
	yyval.nPtr = opr (BASEOBJECT, "member", 1, yyvsp[0].nPtr);
      }
      break;
    case 159:
#line 346 "gram.y"
      {
	yyval.nPtr = opr ('.', ".", 2, yyvsp[-1].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 160:
#line 347 "gram.y"
      {
	yyval.nPtr = opr (OBJMEMBERFCT, "object.Memberfct", 2, yyvsp[-1].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 161:
#line 348 "gram.y"
      {
	yyval.nPtr = opr (OBJMEMBERFCT, "identif.Memberfct", 2, yyvsp[-1].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 162:
#line 349 "gram.y"
      {
	yyval.nPtr = opr ('.', ".", 2, yyvsp[-1].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 163:
#line 350 "gram.y"
      {
	yyval.nPtr = opr (RETURNOBJECT, "Function.object", 2, yyvsp[-1].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 164:
#line 351 "gram.y"
      {
	yyval.nPtr = opr (FCTMEMBERFCT, "Function.Memberfct", 2, yyvsp[-1].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 165:
#line 353 "gram.y"
      {
	yyval.nPtr = opr (CALL, "Call", 2, yyvsp[-1].nPtr, yyvsp[0].nPtr);
      }
      break;
    case 166:
#line 356 "gram.y"
      {
	yyval.nPtr = opr (MEMBERFUNCTION, "MemberFct", 2, opr (BASEOBJECT, "member", 1, yyvsp[-1].nPtr), yyvsp[0].nPtr);
      }
      break;
    case 167:
#line 359 "gram.y"
      {
      }
      break;
    case 168:
#line 360 "gram.y"
      {
      }
      break;
#line 2331 "y.tab.c"
    }
  yyssp -= yym;
  yystate = *yyssp;
  yyvsp -= yym;
  yym = yylhs[yyn];
  if (yystate == 0 && yym == 0)
    {
#if YYDEBUG
      if (yydebug)
	printf ("%sdebug: after reduction, shifting from state 0 to\
 state %d\n", YYPREFIX, YYFINAL);
#endif
      yystate = YYFINAL;
      *++yyssp = YYFINAL;
      *++yyvsp = yyval;
      if (yychar < 0)
	{
	  if ((yychar = yylex ()) < 0)
	    yychar = 0;
#if YYDEBUG
	  if (yydebug)
	    {
	      yys = 0;
	      if (yychar <= YYMAXTOKEN)
		yys = yyname[yychar];
	      if (!yys)
		yys = "illegal-symbol";
	      printf ("%sdebug: state %d, reading %d (%s)\n",
		      YYPREFIX, YYFINAL, yychar, yys);
	    }
#endif
	}
      if (yychar == 0)
	goto yyaccept;
      goto yyloop;
    }
  if ((yyn = yygindex[yym]) && (yyn += yystate) >= 0 &&
      yyn <= YYTABLESIZE && yycheck[yyn] == yystate)
    yystate = yytable[yyn];
  else
    yystate = yydgoto[yym];
#if YYDEBUG
  if (yydebug)
    printf ("%sdebug: after reduction, shifting from state %d \
to state %d\n", YYPREFIX, *yyssp, yystate);
#endif
  if (yyssp >= yyss + yystacksize - 1)
    {
      goto yyoverflow;
    }
  *++yyssp = yystate;
  *++yyvsp = yyval;
  goto yyloop;
yyoverflow:
  yyerror ("yacc stack overflow");
yyabort:
  return (1);
yyaccept:
  return (0);
}


syntax highlighted by Code2HTML, v. 0.9.1