diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 2346821f01..cfaf52c206 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,6 +8,38 @@ 2002-12-01 13:30 UTC+0100 Foo Bar */ +2006-11-28 19:30 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl) + * harbour/source/compiler/harbour.y + * use HB_COMP_PARAM macro in expression destructor instead of + direct accessing hb_comp_data global variable to make compiler + code MT safe + + + harbour/source/compiler/harbour.yyc + + harbour/source/compiler/harbour.yyh + + harbour/source/macro/macro.yyc + + harbour/source/macro/macro.yyh + + added generated by bison 2.3 grammar parsers for compiler and + macro compiler + + * harbour/config/dos/global.cf + * harbour/config/dos/install.cf + * harbour/config/w32/global.cf + * changed CP definition for COMMAND.COM so it can work as standalone + command and added DIRSEP macro + + * harbour/config/c.cf + + added support for HB_REBUILD_PARSER=no environment variable. + When it's set then during build process grammars parsers + will not be generated from grammar definitions files (.y) + but instead the predefined ones (.yyc) used. + Tested and works well in Linux and DOS + + * harbour/makefile.bc + + added support for HB_REBUILD_PARSER=no environment variable. + Not tested. It's even possible that I've just broken the BCC + compilation with this modification. Please check it and fix + me if necessary. + 2006-11-28 05:40 UTC+0100 Przemyslaw Czerpak (druzus/at/priv.onet.pl) * harbour/source/compiler/harbour.c ! fixed typo in last modification which caused memory leak diff --git a/harbour/config/c.cf b/harbour/config/c.cf index 5b5ea210df..00ef20c9ae 100644 --- a/harbour/config/c.cf +++ b/harbour/config/c.cf @@ -8,10 +8,6 @@ C_MAIN_OBJ = $(C_MAIN:.c=$(OBJ_EXT)) ifdef YACC_SOURCE YACC_BASE = $(YACC_SOURCE:.y=) -#must be harbour.sly -ifeq ($(YACC_BASE),$(YACC_SOURCE)) -YACC_BASE = $(YACC_SOURCE:.sly=) -endif YACC_C = $(YACC_BASE)y.c YACC_H_TMP = $(YACC_C:.c=.h) YACC_H = y_tab.h @@ -31,9 +27,17 @@ ALL_C_OBJS = $(YACC_OBJ) $(LEX_OBJ) $(C_OBJS) $(C_MAIN_OBJ) $(YACC_OBJ) : $(YACC_C) +ifeq ($(HB_REBUILD_PARSER),no) +ifeq ($(DIRSEP),) +DIRSEP = / +endif +%y.c : ../../%.yyc + $(CP) $(subst /,$(DIRSEP),$<) $@ + $(CP) $(subst /,$(DIRSEP),$(<:.yyc=.yyh)) $(@:.c=.h) +else $(YACC_C) : ../../$(YACC_SOURCE) $(YACC_HB_H) $(YACC) $(YACC_FLAGS) -o$@ $< - +endif $(LEX_OBJ) : $(LEX_C) diff --git a/harbour/config/dos/global.cf b/harbour/config/dos/global.cf index d93b0d2087..238c31c4b1 100644 --- a/harbour/config/dos/global.cf +++ b/harbour/config/dos/global.cf @@ -26,6 +26,8 @@ ifeq ($(SHLVL),) # COMMAND.COM # and some DOS commands require '\' (ARCH_DOS) ARCH_DIR = $(subst \,/,$(HB_ARCH)) ARCH_DOS = $(subst /,\,$(HB_ARCH)) +DIRSEP = $(subst /,\,\) + MK := $(subst \,/,$(subst \~,~,$(MAKE))) ifeq ($(COMSPEC),) #location of command.com @@ -56,7 +58,7 @@ endif RM = del RD = rmdir -CP = copy +CP = $(COMSPEC) /Ccopy MV = move MD = md diff --git a/harbour/config/dos/install.cf b/harbour/config/dos/install.cf index 2a73736967..6c62a89c7c 100644 --- a/harbour/config/dos/install.cf +++ b/harbour/config/dos/install.cf @@ -14,7 +14,7 @@ ifeq ($(SHLVL),) # COMMAND.COM # NOTE: The empty line directly before 'endef' HAVE TO exist! # It causes that every commands will be separated by LF define inst_file -$(COMSPEC) /C$(CP) $(file) $(subst /,\,$(INSTALL_DIR)) +$(CP) $(file) $(subst /,\,$(INSTALL_DIR)) endef diff --git a/harbour/config/w32/global.cf b/harbour/config/w32/global.cf index 6df385f9fd..baa9bb13f0 100644 --- a/harbour/config/w32/global.cf +++ b/harbour/config/w32/global.cf @@ -25,6 +25,8 @@ ifeq ($(SHLVL),) # COMMAND.COM # and some DOS commands require '\' (ARCH_DOS) ARCH_DIR = $(subst \,/,$(HB_ARCH)) ARCH_DOS = $(subst /,\,$(HB_ARCH)) +DIRSEP = $(subst /,\,\) + MK := $(subst \,/,$(subst \~,~,$(MAKE))) ifeq ($(COMSPEC),) #location of command.com @@ -44,7 +46,7 @@ endif RM = del RD = rmdir MD = md -CP = copy +CP = $(COMSPEC) /C copy MV = move ifeq ($(CMD_EXE),yes) diff --git a/harbour/makefile.bc b/harbour/makefile.bc index 2cfcc1b2a2..49b8d2221f 100644 --- a/harbour/makefile.bc +++ b/harbour/makefile.bc @@ -628,26 +628,42 @@ $(PP_DIR)\pptable.c : $(BIN_DIR)\ppgen.exe include\hbstdgen.ch #********************************************************** +!if "$(HB_REBUILD_PARSER)" == "no" + +$(OBJ_DIR)\macroy.c : $(HARBOUR_DIR)\macro.yyc + copy /A /Y $** $@ >> inst_$(CC_DIRNAME).log + copy /A /Y $(**:.yyc=.yyh) $(@:.c=.h) >> inst_$(CC_DIRNAME).log + +$(OBJ_DIR)\harboury.c : $(HARBOUR_DIR)\harbour.yyc + copy /A /Y $** $@ >> inst_$(CC_DIRNAME).log + copy /A /Y $(**:.yyc=.yyh) $(@:.c=.h) >> inst_$(CC_DIRNAME).log + +!else + $(OBJ_DIR)\macroy.c : $(MACRO_DIR)\macro.y bison --no-line -p hb_macro -d $** -o$@ +$(OBJ_DIR)\harboury.c : $(HARBOUR_DIR)\harbour.y + bison --no-line -d $** -o$@ + +!endif + +#********************************************************** + $(OBJ_DIR)\macrol.c : $(MACRO_DIR)\macro.l flex -Phb_macro -i -8 -o$@ $** +$(OBJ_DIR)\harbourl.c : $(HARBOUR_DIR)\harbour.l + flex -i -8 -o$@ $** + +#********************************************************** + $(OBJ_DIR)\macroy.obj : $(OBJ_DIR)\macroy.c $(OBJ_DIR)\macrol.obj : $(OBJ_DIR)\macrol.c $(ECHO) > $(OBJ_DIR)\unistd.h $(CC) $(CLIBFLAGS) -I$(OBJ_DIR) -o$@ $** $(DEL) $(OBJ_DIR)\unistd.h -#********************************************************** - -$(OBJ_DIR)\harboury.c : $(HARBOUR_DIR)\harbour.y - bison --no-line -d $** -o$@ - -$(OBJ_DIR)\harbourl.c : $(HARBOUR_DIR)\harbour.l - flex -i -8 -o$@ $** - $(OBJ_DIR)\harboury.obj : $(OBJ_DIR)\harboury.c $(OBJ_DIR)\harbourl.obj : $(OBJ_DIR)\harbourl.c $(ECHO) > $(OBJ_DIR)\unistd.h @@ -656,26 +672,42 @@ $(OBJ_DIR)\harbourl.obj : $(OBJ_DIR)\harbourl.c #********************************************************** +!if "$(HB_REBUILD_PARSER)" == "no" + +$(DLL_OBJ_DIR)\macroy.c : $(HARBOUR_DIR)\macro.yyc + copy /A /Y $** $@ >> inst_$(CC_DIRNAME).log + copy /A /Y $(**:.yyc=.yyh) $(@:.c=.h) >> inst_$(CC_DIRNAME).log + +$(DLL_OBJ_DIR)\harboury.c : $(HARBOUR_DIR)\harbour.yyc + copy /A /Y $** $@ >> inst_$(CC_DIRNAME).log + copy /A /Y $(**:.yyc=.yyh) $(@:.c=.h) >> inst_$(CC_DIRNAME).log + +!else + $(DLL_OBJ_DIR)\macroy.c : $(MACRO_DIR)\macro.y bison --no-line -p hb_macro -d $** -o$@ +$(DLL_OBJ_DIR)\harboury.c : $(HARBOUR_DIR)\harbour.y + bison --no-line -d $** -o$@ + +!endif + +#********************************************************** + $(DLL_OBJ_DIR)\macrol.c : $(MACRO_DIR)\macro.l flex -Phb_macro -i -8 -o$@ $** +$(DLL_OBJ_DIR)\harbourl.c : $(HARBOUR_DIR)\harbour.l + flex -i -8 -o$@ $** + +#********************************************************** + $(DLL_OBJ_DIR)\macroy.obj : $(DLL_OBJ_DIR)\macroy.c $(DLL_OBJ_DIR)\macrol.obj : $(DLL_OBJ_DIR)\macrol.c $(ECHO) > $(DLL_OBJ_DIR)\unistd.h $(CC) $(CLIBFLAGS) -I$(DLL_OBJ_DIR) -o$@ $** $(DEL) $(DLL_OBJ_DIR)\unistd.h -#********************************************************** - -$(DLL_OBJ_DIR)\harboury.c : $(HARBOUR_DIR)\harbour.y - bison --no-line -d $** -o$@ - -$(DLL_OBJ_DIR)\harbourl.c : $(HARBOUR_DIR)\harbour.l - flex -i -8 -o$@ $** - $(DLL_OBJ_DIR)\harboury.obj : $(DLL_OBJ_DIR)\harboury.c $(DLL_OBJ_DIR)\harbourl.obj : $(DLL_OBJ_DIR)\harbourl.c $(ECHO) > $(DLL_OBJ_DIR)\unistd.h diff --git a/harbour/source/compiler/harbour.y b/harbour/source/compiler/harbour.y index 32b26e23a3..097d09c9c9 100644 --- a/harbour/source/compiler/harbour.y +++ b/harbour/source/compiler/harbour.y @@ -241,7 +241,7 @@ extern void yyerror( HB_COMP_DECL, char * ); /* parsing error management fun it as is. [druzus] */ %destructor { - hb_compExprDelete( $$, hb_comp_data ); + hb_compExprDelete( $$, HB_COMP_PARAM ); } ArgList ElemList BlockExpList BlockVarList BlockNoVar DoName DoProc DoArgument DoArgList diff --git a/harbour/source/compiler/harbour.yyc b/harbour/source/compiler/harbour.yyc new file mode 100644 index 0000000000..0953e8eefe --- /dev/null +++ b/harbour/source/compiler/harbour.yyc @@ -0,0 +1,9575 @@ +/* A Bison parser, made by GNU Bison 2.3. */ + +/* Skeleton implementation for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + 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, or (at your option) + any later version. + + 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., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* C LALR(1) parser skeleton written by Richard Stallman, by + simplifying the original so-called "semantic" parser. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output. */ +#define YYBISON 1 + +/* Bison version. */ +#define YYBISON_VERSION "2.3" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 1 + +/* Using locations. */ +#define YYLSP_NEEDED 0 + + + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + FUNCTION = 258, + PROCEDURE = 259, + IDENTIFIER = 260, + RETURN = 261, + NIL = 262, + NUM_DOUBLE = 263, + INASSIGN = 264, + NUM_LONG = 265, + LOCAL = 266, + STATIC = 267, + IIF = 268, + IF = 269, + ELSE = 270, + ELSEIF = 271, + END = 272, + ENDIF = 273, + LITERAL = 274, + TRUEVALUE = 275, + FALSEVALUE = 276, + ANNOUNCE = 277, + EXTERN = 278, + INIT = 279, + EXIT = 280, + AND = 281, + OR = 282, + NOT = 283, + PUBLIC = 284, + EQ = 285, + NE1 = 286, + NE2 = 287, + INC = 288, + DEC = 289, + ALIASOP = 290, + DOCASE = 291, + CASE = 292, + OTHERWISE = 293, + ENDCASE = 294, + ENDDO = 295, + MEMVAR = 296, + WHILE = 297, + LOOP = 298, + FOR = 299, + NEXT = 300, + TO = 301, + STEP = 302, + LE = 303, + GE = 304, + FIELD = 305, + IN = 306, + PARAMETERS = 307, + PLUSEQ = 308, + MINUSEQ = 309, + MULTEQ = 310, + DIVEQ = 311, + POWER = 312, + EXPEQ = 313, + MODEQ = 314, + PRIVATE = 315, + BEGINSEQ = 316, + BREAK = 317, + RECOVER = 318, + RECOVERUSING = 319, + DO = 320, + WITH = 321, + SELF = 322, + LINE = 323, + MACROVAR = 324, + MACROTEXT = 325, + AS_ARRAY = 326, + AS_BLOCK = 327, + AS_CHARACTER = 328, + AS_CLASS = 329, + AS_DATE = 330, + AS_LOGICAL = 331, + AS_NUMERIC = 332, + AS_OBJECT = 333, + AS_VARIANT = 334, + DECLARE = 335, + OPTIONAL = 336, + DECLARE_CLASS = 337, + DECLARE_MEMBER = 338, + AS_ARRAY_ARRAY = 339, + AS_BLOCK_ARRAY = 340, + AS_CHARACTER_ARRAY = 341, + AS_CLASS_ARRAY = 342, + AS_DATE_ARRAY = 343, + AS_LOGICAL_ARRAY = 344, + AS_NUMERIC_ARRAY = 345, + AS_OBJECT_ARRAY = 346, + PROCREQ = 347, + CBSTART = 348, + DOIDENT = 349, + FOREACH = 350, + DESCEND = 351, + DOSWITCH = 352, + WITHOBJECT = 353, + NUM_DATE = 354, + EPSILON = 355, + POST = 356, + UNARY = 357, + PRE = 358 + }; +#endif +/* Tokens. */ +#define FUNCTION 258 +#define PROCEDURE 259 +#define IDENTIFIER 260 +#define RETURN 261 +#define NIL 262 +#define NUM_DOUBLE 263 +#define INASSIGN 264 +#define NUM_LONG 265 +#define LOCAL 266 +#define STATIC 267 +#define IIF 268 +#define IF 269 +#define ELSE 270 +#define ELSEIF 271 +#define END 272 +#define ENDIF 273 +#define LITERAL 274 +#define TRUEVALUE 275 +#define FALSEVALUE 276 +#define ANNOUNCE 277 +#define EXTERN 278 +#define INIT 279 +#define EXIT 280 +#define AND 281 +#define OR 282 +#define NOT 283 +#define PUBLIC 284 +#define EQ 285 +#define NE1 286 +#define NE2 287 +#define INC 288 +#define DEC 289 +#define ALIASOP 290 +#define DOCASE 291 +#define CASE 292 +#define OTHERWISE 293 +#define ENDCASE 294 +#define ENDDO 295 +#define MEMVAR 296 +#define WHILE 297 +#define LOOP 298 +#define FOR 299 +#define NEXT 300 +#define TO 301 +#define STEP 302 +#define LE 303 +#define GE 304 +#define FIELD 305 +#define IN 306 +#define PARAMETERS 307 +#define PLUSEQ 308 +#define MINUSEQ 309 +#define MULTEQ 310 +#define DIVEQ 311 +#define POWER 312 +#define EXPEQ 313 +#define MODEQ 314 +#define PRIVATE 315 +#define BEGINSEQ 316 +#define BREAK 317 +#define RECOVER 318 +#define RECOVERUSING 319 +#define DO 320 +#define WITH 321 +#define SELF 322 +#define LINE 323 +#define MACROVAR 324 +#define MACROTEXT 325 +#define AS_ARRAY 326 +#define AS_BLOCK 327 +#define AS_CHARACTER 328 +#define AS_CLASS 329 +#define AS_DATE 330 +#define AS_LOGICAL 331 +#define AS_NUMERIC 332 +#define AS_OBJECT 333 +#define AS_VARIANT 334 +#define DECLARE 335 +#define OPTIONAL 336 +#define DECLARE_CLASS 337 +#define DECLARE_MEMBER 338 +#define AS_ARRAY_ARRAY 339 +#define AS_BLOCK_ARRAY 340 +#define AS_CHARACTER_ARRAY 341 +#define AS_CLASS_ARRAY 342 +#define AS_DATE_ARRAY 343 +#define AS_LOGICAL_ARRAY 344 +#define AS_NUMERIC_ARRAY 345 +#define AS_OBJECT_ARRAY 346 +#define PROCREQ 347 +#define CBSTART 348 +#define DOIDENT 349 +#define FOREACH 350 +#define DESCEND 351 +#define DOSWITCH 352 +#define WITHOBJECT 353 +#define NUM_DATE 354 +#define EPSILON 355 +#define POST 356 +#define UNARY 357 +#define PRE 358 + + + + +/* Copy the first part of user declarations. */ +#line 4 "../../harbour.y" + +/* + * $Id$ + */ + +/* + * Harbour Project source code: + * Compiler YACC rules and actions + * + * Copyright 1999 Antonio Linares + * www - http://www.harbour-project.org + * + * 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. + * + * 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 (or visit + * their web site at http://www.gnu.org/). + * + */ + +/* TODO list + * 1) Change the pcode generated by ::cVar from Self:cVar to QSELF():cVar + * The major problem to solve is how to support QSELF() inside a codeblock. + */ + +#include "hbcomp.h" +#undef alloca +#define alloca hb_xgrab +#undef malloc +#define malloc hb_xgrab +#undef realloc +#define realloc hb_xrealloc +#undef free +#define free hb_xfree + +/* Compile using: bison -d -v harbour.y */ + +static void hb_compLoopStart( HB_COMP_DECL ); +static void hb_compLoopEnd( HB_COMP_DECL ); +static void hb_compLoopLoop( HB_COMP_DECL ); +static void hb_compLoopExit( HB_COMP_DECL ); +static void hb_compLoopHere( HB_COMP_DECL ); + +static void * hb_compElseIfGen( HB_COMP_DECL, void * pFirstElseIf, ULONG ulOffset ); /* generates a support structure for elseifs pcode fixups */ +static void hb_compElseIfFix( HB_COMP_DECL, void * pIfElseIfs ); /* implements the ElseIfs pcode fixups */ + +static void hb_compRTVariableAdd( HB_COMP_DECL, HB_EXPR_PTR, BOOL ); +static void hb_compRTVariableGen( HB_COMP_DECL, char * ); + +static void hb_compVariableDim( char *, HB_EXPR_PTR, HB_COMP_DECL ); + +static void hb_compForStart( HB_COMP_DECL, char *szVarName, BOOL bForEach ); +static void hb_compForEnd( HB_COMP_DECL, char *szVarName ); +static void hb_compEnumStart( HB_COMP_DECL, HB_EXPR_PTR pVars, HB_EXPR_PTR pExprs, int descend ); +static void hb_compEnumNext( HB_COMP_DECL, HB_EXPR_PTR pExpr, int descend ); +static void hb_compEnumEnd( HB_COMP_DECL, HB_EXPR_PTR pExpr ); + +static void hb_compSwitchStart( HB_COMP_DECL ); +static void hb_compSwitchAdd( HB_COMP_DECL, HB_EXPR_PTR ); +static void hb_compSwitchEnd( HB_COMP_DECL ); + +static HB_EXPR_PTR hb_compCheckPassByRef( HB_COMP_DECL, HB_EXPR_PTR pExpr ); + +#ifdef HARBOUR_YYDEBUG + #define YYDEBUG 1 /* Parser debug information support */ +#endif + +/* Controls if passing by reference '@' is allowed */ +#define HB_PASSBYREF_OFF 0 +#define HB_PASSBYREF_FUNCALL 1 +#define HB_PASSBYREF_ARRAY 2 + +static void hb_compDebugStart( void ) { }; + + + +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* Enabling the token table. */ +#ifndef YYTOKEN_TABLE +# define YYTOKEN_TABLE 0 +#endif + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 90 "../../harbour.y" +{ + char * string; /* to hold a string returned by lex */ + int iNumber; /* to hold a temporary integer number */ + HB_LONG lNumber; /* to hold a temporary long number */ + BOOL bTrue; + struct + { + HB_LONG lNumber; /* to hold a long number returned by lex */ + UCHAR bWidth; /* to hold the width of the value */ + } valLong; + struct + { + double dNumber; /* to hold a double number returned by lex */ + /* NOTE: Intentionally using "unsigned char" instead of "BYTE" */ + UCHAR bWidth; /* to hold the width of the value */ + UCHAR bDec; /* to hold the number of decimal points in the value */ + } valDouble; + HB_EXPR_PTR asExpr; + struct + { + char * string; + int length; + BOOL dealloc; + } valChar; + struct + { + char * string; + int length; + BOOL lateEval; /* Flag for early {|| ¯o} (0) or late {|| &(macro)} (1) binding */ + BOOL isMacro; + } asCodeblock; + struct + { + BOOL bMacro; + union + { + char * string; + HB_EXPR_PTR macro; + } value; + } asMessage; + void * pVoid; /* to hold any memory structure we may need */ +} +/* Line 193 of yacc.c. */ +#line 430 "harboury.c" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + + + +/* Copy the second part of user declarations. */ +#line 133 "../../harbour.y" + +/* This must be placed after the above union - the union is + * typedef-ined to YYSTYPE + */ +extern int yylex( YYSTYPE *, HB_COMP_DECL ); /* main lex token function, called by yyparse() */ +extern int yyparse( HB_COMP_DECL ); /* main yacc parsing function */ +extern void yyerror( HB_COMP_DECL, char * ); /* parsing error management function */ + + +/* Line 216 of yacc.c. */ +#line 451 "harboury.c" + +#ifdef short +# undef short +#endif + +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; +#else +typedef unsigned char yytype_uint8; +#endif + +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; +#elif (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +typedef signed char yytype_int8; +#else +typedef short int yytype_int8; +#endif + +#ifdef YYTYPE_UINT16 +typedef YYTYPE_UINT16 yytype_uint16; +#else +typedef unsigned short int yytype_uint16; +#endif + +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; +#else +typedef short int yytype_int16; +#endif + +#ifndef YYSIZE_T +# ifdef __SIZE_TYPE__ +# define YYSIZE_T __SIZE_TYPE__ +# elif defined size_t +# define YYSIZE_T size_t +# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned int +# endif +#endif + +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) + +#ifndef YY_ +# if YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(msgid) dgettext ("bison-runtime", msgid) +# endif +# endif +# ifndef YY_ +# define YY_(msgid) msgid +# endif +#endif + +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YYUSE(e) ((void) (e)) +#else +# define YYUSE(e) /* empty */ +#endif + +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(n) (n) +#else +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static int +YYID (int i) +#else +static int +YYID (i) + int i; +#endif +{ + return i; +} +#endif + +#if ! defined yyoverflow || YYERROR_VERBOSE + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# elif defined __BUILTIN_VA_ARG_INCR +# include /* INFRINGES ON USER NAME SPACE */ +# elif defined _AIX +# define YYSTACK_ALLOC __alloca +# elif defined _MSC_VER +# include /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca +# else +# define YYSTACK_ALLOC alloca +# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) +# ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM +# endif +# if (defined __cplusplus && ! defined _STDLIB_H \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# endif +#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ + + +#if (! defined yyoverflow \ + && (! defined __cplusplus \ + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + yytype_int16 yyss; + YYSTYPE yyvs; + }; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (YYID (0)) +# endif +# endif + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack, Stack, yysize); \ + Stack = &yyptr->Stack; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (0)) + +#endif + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 3 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 7275 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 126 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 247 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 767 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 1299 + +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 358 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +static const yytype_uint8 yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 115, 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, 105, 110, 113, 2, + 119, 118, 108, 106, 117, 107, 2, 109, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 122, 116, + 103, 102, 104, 2, 114, 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, + 2, 124, 2, 123, 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, 2, + 2, 2, 2, 120, 125, 121, 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, 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, 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, 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, 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, 2, 2, 2, 2, 2, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 111, 112 +}; + +#if YYDEBUG +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const yytype_uint16 yyprhs[] = +{ + 0, 0, 3, 4, 7, 8, 10, 12, 14, 16, + 18, 20, 22, 24, 26, 29, 32, 35, 38, 41, + 44, 47, 50, 53, 56, 60, 65, 72, 77, 79, + 83, 84, 90, 91, 97, 98, 107, 108, 117, 118, + 120, 122, 124, 125, 127, 129, 133, 134, 136, 138, + 140, 142, 144, 146, 148, 151, 153, 155, 157, 159, + 161, 163, 165, 167, 169, 171, 174, 177, 182, 183, + 187, 190, 193, 196, 199, 202, 205, 208, 211, 214, + 217, 220, 223, 226, 229, 232, 233, 238, 241, 242, + 247, 248, 249, 255, 256, 257, 263, 264, 268, 269, + 273, 277, 278, 283, 284, 287, 289, 291, 293, 295, + 297, 302, 310, 315, 323, 324, 326, 328, 330, 332, + 335, 337, 341, 343, 345, 347, 349, 351, 353, 355, + 357, 359, 361, 363, 365, 367, 369, 371, 373, 375, + 377, 379, 381, 384, 387, 389, 392, 394, 397, 400, + 402, 404, 407, 409, 412, 413, 418, 421, 424, 427, + 429, 432, 434, 436, 439, 442, 445, 448, 452, 455, + 458, 461, 464, 467, 470, 473, 476, 479, 482, 485, + 488, 491, 493, 495, 497, 500, 503, 506, 509, 512, + 515, 518, 521, 524, 527, 530, 533, 536, 539, 542, + 545, 548, 551, 554, 557, 560, 563, 566, 569, 572, + 575, 578, 581, 584, 587, 590, 593, 596, 599, 602, + 605, 608, 611, 614, 617, 620, 621, 627, 629, 630, + 636, 637, 643, 645, 649, 652, 654, 656, 658, 662, + 666, 670, 674, 678, 682, 686, 690, 694, 698, 702, + 706, 710, 714, 718, 722, 726, 730, 734, 738, 741, + 744, 745, 751, 754, 756, 758, 760, 762, 764, 766, + 768, 769, 773, 775, 777, 779, 781, 783, 785, 787, + 788, 792, 794, 796, 797, 801, 803, 804, 808, 810, + 812, 814, 816, 818, 820, 822, 824, 826, 828, 830, + 832, 833, 837, 838, 842, 845, 848, 851, 854, 857, + 858, 860, 862, 864, 866, 868, 870, 872, 874, 876, + 878, 881, 884, 887, 890, 893, 896, 899, 902, 905, + 908, 911, 914, 917, 920, 923, 926, 929, 932, 935, + 938, 941, 944, 947, 950, 954, 958, 962, 966, 970, + 974, 978, 982, 986, 990, 994, 998, 1002, 1006, 1010, + 1014, 1018, 1022, 1026, 1030, 1034, 1038, 1042, 1046, 1050, + 1054, 1058, 1062, 1066, 1070, 1074, 1078, 1082, 1086, 1090, + 1094, 1098, 1102, 1106, 1110, 1114, 1118, 1122, 1126, 1130, + 1134, 1138, 1142, 1146, 1150, 1154, 1158, 1162, 1166, 1170, + 1174, 1178, 1182, 1186, 1190, 1194, 1198, 1202, 1206, 1210, + 1214, 1218, 1222, 1226, 1230, 1234, 1238, 1242, 1246, 1250, + 1254, 1258, 1262, 1266, 1270, 1274, 1278, 1282, 1286, 1290, + 1294, 1298, 1302, 1306, 1310, 1314, 1318, 1322, 1326, 1330, + 1334, 1338, 1342, 1346, 1350, 1354, 1358, 1362, 1366, 1370, + 1374, 1378, 1382, 1386, 1390, 1394, 1398, 1402, 1406, 1410, + 1414, 1418, 1422, 1426, 1430, 1434, 1438, 1442, 1446, 1450, + 1454, 1458, 1462, 1466, 1470, 1474, 1478, 1482, 1486, 1490, + 1494, 1498, 1502, 1506, 1510, 1514, 1518, 1522, 1526, 1530, + 1534, 1538, 1542, 1546, 1550, 1554, 1558, 1562, 1564, 1566, + 1568, 1570, 1572, 1574, 1578, 1582, 1586, 1590, 1594, 1598, + 1602, 1606, 1610, 1614, 1618, 1622, 1626, 1630, 1634, 1638, + 1642, 1645, 1648, 1652, 1657, 1659, 1663, 1664, 1671, 1672, + 1679, 1681, 1685, 1686, 1689, 1694, 1697, 1700, 1703, 1706, + 1708, 1710, 1712, 1714, 1717, 1720, 1724, 1728, 1732, 1736, + 1739, 1740, 1749, 1752, 1753, 1758, 1759, 1764, 1765, 1770, + 1772, 1776, 1778, 1782, 1784, 1787, 1792, 1795, 1799, 1800, + 1804, 1805, 1806, 1813, 1816, 1820, 1823, 1826, 1830, 1835, + 1836, 1841, 1844, 1849, 1853, 1854, 1859, 1862, 1867, 1868, + 1877, 1878, 1884, 1888, 1892, 1893, 1901, 1903, 1907, 1909, + 1912, 1914, 1917, 1918, 1925, 1926, 1930, 1931, 1933, 1935, + 1939, 1941, 1945, 1947, 1950, 1954, 1960, 1965, 1971, 1979, + 1983, 1988, 1995, 2001, 2008, 2017, 2019, 2021, 2023, 2025, + 2027, 2029, 2031, 2034, 2038, 2042, 2047, 2049, 2052, 2053, + 2055, 2056, 2057, 2064, 2065, 2066, 2073, 2074, 2075, 2082, + 2083, 2084, 2091, 2092, 2093, 2100, 2101, 2106, 2107, 2108, + 2115, 2116, 2117, 2125, 2127, 2129, 2133, 2137, 2140, 2145, + 2147, 2149, 2150, 2154, 2156, 2159, 2160, 2161, 2168, 2169, + 2170, 2178, 2179, 2180, 2186, 2187, 2193, 2194, 2195, 2203, + 2205, 2207, 2209, 2210, 2211, 2212, 2225, 2227, 2229, 2230, + 2233, 2236, 2240, 2243, 2247, 2249, 2251, 2253, 2257, 2259, + 2263, 2264, 2265, 2266, 2277, 2278, 2280, 2281, 2286, 2289, + 2291, 2292, 2297, 2299, 2302, 2303, 2309, 2310, 2317, 2319, + 2322, 2323, 2324, 2330, 2331, 2332, 2333, 2342, 2343, 2344, + 2349, 2350, 2355, 2357, 2360, 2362, 2364, 2366, 2369, 2374, + 2376, 2380, 2382, 2385, 2387, 2390, 2394, 2396, 2399, 2402, + 2404, 2406, 2409, 2412, 2413, 2420, 2425, 2427 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yytype_int16 yyrhs[] = +{ + 127, 0, -1, -1, 128, 129, -1, -1, 372, -1, + 254, -1, 267, -1, 270, -1, 273, -1, 133, -1, + 144, -1, 130, -1, 131, -1, 1, 372, -1, 129, + 372, -1, 129, 254, -1, 129, 267, -1, 129, 270, + -1, 129, 273, -1, 129, 133, -1, 129, 144, -1, + 129, 130, -1, 129, 131, -1, 129, 1, 372, -1, + 68, 10, 19, 372, -1, 68, 10, 19, 114, 19, + 372, -1, 92, 132, 118, 372, -1, 19, -1, 19, + 106, 19, -1, -1, 138, 3, 162, 134, 372, -1, + -1, 138, 4, 162, 135, 372, -1, -1, 138, 3, + 162, 136, 119, 139, 118, 372, -1, -1, 138, 4, + 162, 137, 119, 139, 118, 372, -1, -1, 12, -1, + 24, -1, 25, -1, -1, 100, -1, 143, -1, 143, + 117, 100, -1, -1, 141, -1, 77, -1, 73, -1, + 75, -1, 76, -1, 72, -1, 78, -1, 74, 162, + -1, 79, -1, 142, -1, 71, -1, 90, -1, 86, + -1, 88, -1, 89, -1, 84, -1, 85, -1, 91, + -1, 87, 162, -1, 162, 140, -1, 143, 117, 162, + 140, -1, -1, 288, 145, 155, -1, 370, 155, -1, + 251, 155, -1, 195, 155, -1, 190, 155, -1, 203, + 155, -1, 182, 155, -1, 184, 155, -1, 245, 155, + -1, 218, 155, -1, 217, 155, -1, 228, 155, -1, + 221, 155, -1, 220, 155, -1, 367, 155, -1, 62, + 155, -1, -1, 62, 146, 211, 372, -1, 6, 155, + -1, -1, 6, 147, 211, 372, -1, -1, -1, 29, + 148, 259, 149, 372, -1, -1, -1, 60, 150, 259, + 151, 372, -1, -1, 25, 152, 155, -1, -1, 43, + 153, 155, -1, 23, 161, 372, -1, -1, 22, 162, + 154, 372, -1, -1, 156, 372, -1, 372, -1, 144, + -1, 273, -1, 130, -1, 158, -1, 159, 3, 162, + 372, -1, 159, 3, 162, 119, 139, 118, 372, -1, + 159, 4, 162, 372, -1, 159, 4, 162, 119, 139, + 118, 372, -1, -1, 12, -1, 24, -1, 25, -1, + 157, -1, 160, 157, -1, 162, -1, 161, 117, 162, + -1, 5, -1, 47, -1, 46, -1, 43, -1, 25, + -1, 51, -1, 81, -1, 23, -1, 22, -1, 11, + -1, 41, -1, 12, -1, 60, -1, 29, -1, 52, + -1, 92, -1, 96, -1, 8, -1, 10, -1, 99, + -1, 10, 35, -1, 8, 35, -1, 7, -1, 166, + 35, -1, 19, -1, 168, 35, -1, 235, 35, -1, + 20, -1, 21, -1, 171, 35, -1, 67, -1, 173, + 35, -1, -1, 120, 176, 234, 121, -1, 175, 35, + -1, 175, 232, -1, 178, 35, -1, 162, -1, 162, + 35, -1, 69, -1, 70, -1, 182, 35, -1, 113, + 245, -1, 184, 35, -1, 50, 35, -1, 50, 35, + 186, -1, 186, 181, -1, 186, 165, -1, 186, 246, + -1, 186, 183, -1, 186, 185, -1, 186, 167, -1, + 186, 169, -1, 186, 172, -1, 186, 170, -1, 186, + 174, -1, 186, 177, -1, 186, 179, -1, 186, 253, + -1, 162, -1, 182, -1, 184, -1, 165, 188, -1, + 183, 188, -1, 185, 188, -1, 246, 188, -1, 167, + 188, -1, 169, 188, -1, 172, 188, -1, 170, 188, + -1, 174, 188, -1, 177, 188, -1, 179, 188, -1, + 192, 188, -1, 253, 188, -1, 199, 188, -1, 202, + 188, -1, 205, 188, -1, 181, 188, -1, 186, 188, + -1, 187, 188, -1, 165, 245, -1, 181, 245, -1, + 183, 245, -1, 185, 245, -1, 246, 245, -1, 186, + 245, -1, 166, 232, -1, 168, 232, -1, 235, 232, + -1, 171, 232, -1, 173, 232, -1, 180, 232, -1, + 189, 232, -1, 190, 232, -1, 182, 232, -1, 184, + 232, -1, 201, 232, -1, 203, 232, -1, 195, 232, + -1, 251, 232, -1, 245, 232, -1, 191, 35, -1, + -1, 162, 119, 194, 198, 118, -1, 193, -1, -1, + 182, 119, 196, 198, 118, -1, -1, 184, 119, 197, + 198, 118, -1, 214, -1, 198, 117, 214, -1, 195, + 35, -1, 162, -1, 182, -1, 184, -1, 163, 122, + 200, -1, 166, 122, 200, -1, 164, 122, 200, -1, + 168, 122, 200, -1, 180, 122, 200, -1, 235, 122, + 200, -1, 171, 122, 200, -1, 173, 122, 200, -1, + 175, 122, 200, -1, 178, 122, 200, -1, 189, 122, + 200, -1, 190, 122, 200, -1, 182, 122, 200, -1, + 184, 122, 200, -1, 195, 122, 200, -1, 251, 122, + 200, -1, 245, 122, 200, -1, 191, 122, 200, -1, + 203, 122, 200, -1, 201, 122, 200, -1, 122, 200, + -1, 201, 35, -1, -1, 201, 119, 204, 198, 118, + -1, 203, 35, -1, 163, -1, 166, -1, 164, -1, + 168, -1, 235, -1, 171, -1, 173, -1, -1, 173, + 207, 141, -1, 175, -1, 178, -1, 189, -1, 182, + -1, 184, -1, 191, -1, 195, -1, -1, 195, 208, + 141, -1, 251, -1, 201, -1, -1, 201, 209, 141, + -1, 203, -1, -1, 203, 210, 141, -1, 190, -1, + 220, -1, 228, -1, 217, -1, 218, -1, 219, -1, + 229, -1, 230, -1, 231, -1, 180, -1, 206, -1, + 245, -1, -1, 180, 212, 141, -1, -1, 245, 213, + 141, -1, 114, 162, -1, 114, 193, -1, 114, 182, + -1, 114, 189, -1, 114, 201, -1, -1, 211, -1, + 162, -1, 189, -1, 182, -1, 184, -1, 201, -1, + 191, -1, 245, -1, 33, -1, 34, -1, 163, 216, + -1, 166, 216, -1, 168, 216, -1, 235, 216, -1, + 171, 216, -1, 173, 216, -1, 175, 216, -1, 178, + 216, -1, 180, 216, -1, 182, 216, -1, 184, 216, + -1, 189, 216, -1, 190, 216, -1, 191, 216, -1, + 245, 216, -1, 251, 216, -1, 195, 216, -1, 201, + 216, -1, 203, 216, -1, 33, 211, -1, 34, 211, + -1, 28, 211, -1, 107, 211, -1, 106, 211, -1, + 163, 9, 211, -1, 166, 9, 211, -1, 168, 9, + 211, -1, 235, 9, 211, -1, 171, 9, 211, -1, + 173, 9, 211, -1, 175, 9, 211, -1, 178, 9, + 211, -1, 180, 9, 211, -1, 182, 9, 211, -1, + 184, 9, 211, -1, 189, 9, 211, -1, 190, 9, + 211, -1, 191, 9, 211, -1, 245, 9, 211, -1, + 251, 9, 211, -1, 195, 9, 211, -1, 201, 9, + 211, -1, 203, 9, 211, -1, 163, 102, 211, -1, + 166, 102, 211, -1, 164, 102, 211, -1, 168, 102, + 211, -1, 235, 102, 211, -1, 171, 102, 211, -1, + 173, 102, 211, -1, 175, 102, 211, -1, 178, 102, + 211, -1, 180, 102, 211, -1, 182, 102, 211, -1, + 184, 102, 211, -1, 189, 102, 211, -1, 190, 102, + 211, -1, 191, 102, 211, -1, 245, 102, 211, -1, + 251, 102, 211, -1, 195, 102, 211, -1, 201, 102, + 211, -1, 203, 102, 211, -1, 163, 53, 211, -1, + 166, 53, 211, -1, 168, 53, 211, -1, 235, 53, + 211, -1, 171, 53, 211, -1, 173, 53, 211, -1, + 175, 53, 211, -1, 178, 53, 211, -1, 180, 53, + 211, -1, 182, 53, 211, -1, 184, 53, 211, -1, + 189, 53, 211, -1, 190, 53, 211, -1, 191, 53, + 211, -1, 245, 53, 211, -1, 251, 53, 211, -1, + 195, 53, 211, -1, 201, 53, 211, -1, 203, 53, + 211, -1, 163, 54, 211, -1, 166, 54, 211, -1, + 168, 54, 211, -1, 235, 54, 211, -1, 171, 54, + 211, -1, 173, 54, 211, -1, 175, 54, 211, -1, + 178, 54, 211, -1, 180, 54, 211, -1, 182, 54, + 211, -1, 184, 54, 211, -1, 189, 54, 211, -1, + 190, 54, 211, -1, 191, 54, 211, -1, 245, 54, + 211, -1, 251, 54, 211, -1, 195, 54, 211, -1, + 201, 54, 211, -1, 203, 54, 211, -1, 163, 55, + 211, -1, 166, 55, 211, -1, 168, 55, 211, -1, + 235, 55, 211, -1, 171, 55, 211, -1, 173, 55, + 211, -1, 175, 55, 211, -1, 178, 55, 211, -1, + 180, 55, 211, -1, 182, 55, 211, -1, 184, 55, + 211, -1, 189, 55, 211, -1, 190, 55, 211, -1, + 191, 55, 211, -1, 245, 55, 211, -1, 251, 55, + 211, -1, 195, 55, 211, -1, 201, 55, 211, -1, + 203, 55, 211, -1, 163, 56, 211, -1, 166, 56, + 211, -1, 168, 56, 211, -1, 235, 56, 211, -1, + 171, 56, 211, -1, 173, 56, 211, -1, 175, 56, + 211, -1, 178, 56, 211, -1, 180, 56, 211, -1, + 182, 56, 211, -1, 184, 56, 211, -1, 189, 56, + 211, -1, 190, 56, 211, -1, 191, 56, 211, -1, + 245, 56, 211, -1, 251, 56, 211, -1, 195, 56, + 211, -1, 201, 56, 211, -1, 203, 56, 211, -1, + 163, 59, 211, -1, 166, 59, 211, -1, 168, 59, + 211, -1, 235, 59, 211, -1, 171, 59, 211, -1, + 173, 59, 211, -1, 175, 59, 211, -1, 178, 59, + 211, -1, 180, 59, 211, -1, 182, 59, 211, -1, + 184, 59, 211, -1, 189, 59, 211, -1, 190, 59, + 211, -1, 191, 59, 211, -1, 245, 59, 211, -1, + 251, 59, 211, -1, 195, 59, 211, -1, 201, 59, + 211, -1, 203, 59, 211, -1, 163, 58, 211, -1, + 166, 58, 211, -1, 168, 58, 211, -1, 235, 58, + 211, -1, 171, 58, 211, -1, 173, 58, 211, -1, + 175, 58, 211, -1, 178, 58, 211, -1, 180, 58, + 211, -1, 182, 58, 211, -1, 184, 58, 211, -1, + 189, 58, 211, -1, 190, 58, 211, -1, 191, 58, + 211, -1, 245, 58, 211, -1, 251, 58, 211, -1, + 195, 58, 211, -1, 201, 58, 211, -1, 203, 58, + 211, -1, 222, -1, 223, -1, 224, -1, 225, -1, + 226, -1, 227, -1, 211, 106, 211, -1, 211, 107, + 211, -1, 211, 108, 211, -1, 211, 109, 211, -1, + 211, 110, 211, -1, 211, 57, 211, -1, 211, 26, + 211, -1, 211, 27, 211, -1, 211, 30, 211, -1, + 211, 103, 211, -1, 211, 104, 211, -1, 211, 48, + 211, -1, 211, 49, 211, -1, 211, 31, 211, -1, + 211, 32, 211, -1, 211, 105, 211, -1, 211, 102, + 211, -1, 233, 123, -1, 124, 211, -1, 233, 117, + 211, -1, 233, 123, 124, 211, -1, 214, -1, 234, + 117, 214, -1, -1, 93, 236, 239, 125, 238, 121, + -1, -1, 93, 237, 240, 125, 238, 121, -1, 211, + -1, 238, 117, 211, -1, -1, 162, 140, -1, 240, + 117, 162, 140, -1, 247, 118, -1, 248, 118, -1, + 249, 118, -1, 250, 118, -1, 241, -1, 242, -1, + 243, -1, 244, -1, 245, 35, -1, 119, 214, -1, + 247, 117, 214, -1, 248, 117, 214, -1, 249, 117, + 214, -1, 250, 117, 214, -1, 13, 243, -1, -1, + 14, 247, 117, 214, 117, 252, 214, 118, -1, 251, + 35, -1, -1, 11, 255, 258, 372, -1, -1, 12, + 256, 258, 372, -1, -1, 52, 257, 272, 372, -1, + 261, -1, 258, 117, 261, -1, 260, -1, 259, 117, + 260, -1, 261, -1, 182, 140, -1, 182, 140, 9, + 211, -1, 182, 265, -1, 182, 265, 142, -1, -1, + 162, 140, 262, -1, -1, -1, 162, 140, 263, 9, + 264, 211, -1, 162, 265, -1, 162, 265, 142, -1, + 266, 123, -1, 124, 211, -1, 266, 117, 211, -1, + 266, 123, 124, 211, -1, -1, 50, 268, 269, 372, + -1, 162, 140, -1, 269, 117, 162, 140, -1, 269, + 51, 162, -1, -1, 41, 271, 272, 372, -1, 162, + 140, -1, 272, 117, 162, 140, -1, -1, 80, 162, + 119, 274, 283, 118, 140, 372, -1, -1, 80, 162, + 275, 278, 372, -1, 82, 162, 372, -1, 83, 279, + 372, -1, -1, 83, 120, 140, 276, 277, 121, 372, + -1, 281, -1, 277, 117, 281, -1, 279, -1, 278, + 279, -1, 281, -1, 278, 281, -1, -1, 162, 119, + 280, 283, 118, 140, -1, -1, 162, 282, 140, -1, + -1, 286, -1, 287, -1, 286, 117, 287, -1, 285, + -1, 284, 117, 285, -1, 214, -1, 162, 140, -1, + 114, 162, 140, -1, 114, 162, 119, 284, 118, -1, + 286, 117, 162, 140, -1, 286, 117, 114, 162, 140, + -1, 286, 117, 114, 162, 119, 284, 118, -1, 81, + 162, 140, -1, 81, 114, 162, 140, -1, 81, 114, + 162, 119, 284, 118, -1, 287, 117, 81, 162, 140, + -1, 287, 117, 81, 114, 162, 140, -1, 287, 117, + 81, 114, 162, 119, 284, 118, -1, 289, -1, 311, + -1, 325, -1, 330, -1, 357, -1, 340, -1, 345, + -1, 292, 310, -1, 292, 303, 310, -1, 292, 305, + 310, -1, 292, 305, 303, 310, -1, 157, -1, 290, + 157, -1, -1, 290, -1, -1, -1, 14, 206, 293, + 372, 294, 291, -1, -1, -1, 14, 180, 295, 372, + 296, 291, -1, -1, -1, 14, 241, 297, 372, 298, + 291, -1, -1, -1, 14, 242, 299, 372, 300, 291, + -1, -1, -1, 14, 244, 301, 372, 302, 291, -1, + -1, 15, 372, 304, 291, -1, -1, -1, 16, 306, + 211, 372, 307, 291, -1, -1, -1, 305, 16, 308, + 211, 372, 309, 291, -1, 18, -1, 17, -1, 315, + 316, 312, -1, 315, 321, 312, -1, 315, 312, -1, + 315, 316, 321, 312, -1, 39, -1, 17, -1, -1, + 36, 314, 372, -1, 313, -1, 313, 160, -1, -1, + -1, 37, 317, 211, 372, 318, 291, -1, -1, -1, + 316, 37, 319, 211, 372, 320, 291, -1, -1, -1, + 38, 322, 372, 323, 291, -1, -1, 321, 38, 324, + 372, 291, -1, -1, -1, 328, 211, 372, 326, 291, + 327, 329, -1, 42, -1, 17, -1, 40, -1, -1, + -1, -1, 44, 215, 334, 211, 331, 46, 211, 335, + 332, 372, 333, 336, -1, 102, -1, 9, -1, -1, + 47, 211, -1, 291, 45, -1, 291, 45, 162, -1, + 291, 17, -1, 291, 17, 162, -1, 162, -1, 189, + -1, 337, -1, 338, 117, 337, -1, 211, -1, 339, + 117, 211, -1, -1, -1, -1, 95, 338, 51, 339, + 341, 344, 342, 372, 343, 336, -1, -1, 96, -1, + -1, 350, 346, 351, 347, -1, 350, 347, -1, 17, + -1, -1, 97, 349, 211, 372, -1, 348, -1, 348, + 160, -1, -1, 37, 211, 352, 372, 291, -1, -1, + 351, 37, 211, 353, 372, 291, -1, 354, -1, 351, + 354, -1, -1, -1, 38, 355, 372, 356, 291, -1, + -1, -1, -1, 61, 358, 372, 291, 359, 361, 360, + 17, -1, -1, -1, 364, 372, 362, 291, -1, -1, + 365, 372, 363, 291, -1, 63, -1, 64, 162, -1, + 162, -1, 182, -1, 184, -1, 65, 366, -1, 65, + 366, 66, 368, -1, 94, -1, 94, 66, 368, -1, + 117, -1, 117, 369, -1, 369, -1, 368, 117, -1, + 368, 117, 369, -1, 162, -1, 114, 193, -1, 114, + 162, -1, 206, -1, 245, -1, 114, 182, -1, 114, + 189, -1, -1, 98, 211, 372, 371, 290, 17, -1, + 98, 211, 372, 17, -1, 115, -1, 116, -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const yytype_uint16 yyrline[] = +{ + 0, 285, 285, 285, 286, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 311, 312, 315, 318, 326, + 339, 339, 340, 340, 341, 341, 342, 342, 345, 346, + 347, 348, 351, 352, 353, 354, 357, 358, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 383, 384, 392, 392, + 393, 394, 395, 396, 397, 398, 404, 410, 411, 412, + 413, 414, 415, 416, 417, 419, 419, 423, 437, 437, + 457, 459, 457, 463, 465, 463, 470, 470, 471, 471, + 472, 473, 473, 489, 489, 492, 493, 494, 495, 496, + 499, 500, 501, 502, 505, 506, 507, 508, 511, 512, + 515, 516, 519, 520, 521, 522, 523, 524, 525, 526, + 527, 528, 529, 530, 531, 532, 533, 534, 535, 540, + 541, 544, 552, 553, 558, 561, 566, 571, 576, 581, + 582, 585, 590, 593, 598, 598, 601, 606, 609, 614, + 617, 622, 623, 626, 631, 634, 641, 642, 647, 648, + 649, 650, 651, 652, 653, 654, 655, 656, 657, 658, + 659, 662, 663, 664, 667, 668, 669, 670, 671, 672, + 673, 674, 675, 676, 677, 678, 679, 680, 681, 682, + 683, 684, 685, 694, 695, 696, 697, 698, 699, 704, + 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, + 715, 716, 717, 718, 721, 726, 726, 729, 730, 730, + 731, 731, 734, 735, 738, 744, 745, 746, 749, 750, + 751, 752, 753, 754, 755, 756, 757, 758, 759, 760, + 761, 762, 763, 764, 765, 766, 767, 768, 769, 775, + 780, 780, 783, 792, 793, 794, 795, 796, 797, 798, + 799, 799, 800, 801, 802, 803, 804, 805, 806, 807, + 807, 808, 809, 810, 810, 811, 812, 812, 813, 814, + 815, 816, 817, 818, 819, 820, 821, 824, 825, 826, + 827, 827, 828, 828, 829, 830, 831, 832, 833, 836, + 837, 840, 841, 842, 843, 844, 845, 846, 852, 853, + 860, 861, 862, 863, 864, 865, 866, 867, 868, 869, + 870, 871, 872, 873, 874, 875, 876, 877, 878, 881, + 882, 885, 886, 887, 894, 895, 896, 897, 898, 899, + 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, + 910, 911, 912, 915, 916, 917, 918, 919, 920, 921, + 922, 923, 924, 925, 926, 927, 928, 929, 930, 931, + 932, 933, 934, 937, 938, 939, 940, 941, 942, 943, + 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, + 954, 955, 958, 959, 960, 961, 962, 963, 964, 965, + 966, 967, 968, 969, 970, 971, 972, 973, 974, 975, + 976, 979, 980, 981, 982, 983, 984, 985, 986, 987, + 988, 989, 990, 991, 992, 993, 994, 995, 996, 997, + 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, + 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1021, + 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, 1031, + 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1042, 1043, + 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, + 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1063, 1064, 1065, + 1066, 1067, 1068, 1071, 1072, 1073, 1074, 1075, 1076, 1079, + 1080, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, + 1094, 1100, 1101, 1102, 1105, 1106, 1109, 1109, 1111, 1111, + 1117, 1118, 1124, 1127, 1128, 1138, 1141, 1144, 1147, 1150, + 1151, 1152, 1153, 1156, 1159, 1162, 1165, 1168, 1169, 1172, + 1174, 1173, 1179, 1182, 1182, 1183, 1183, 1184, 1184, 1191, + 1192, 1195, 1196, 1204, 1205, 1207, 1211, 1218, 1227, 1227, + 1241, 1244, 1241, 1269, 1270, 1276, 1279, 1280, 1281, 1285, + 1285, 1288, 1289, 1290, 1293, 1293, 1296, 1297, 1300, 1300, + 1323, 1323, 1324, 1325, 1326, 1326, 1329, 1330, 1333, 1334, + 1335, 1336, 1339, 1339, 1361, 1361, 1417, 1418, 1419, 1420, + 1423, 1424, 1427, 1433, 1434, 1435, 1436, 1437, 1438, 1441, + 1442, 1443, 1444, 1445, 1446, 1449, 1450, 1451, 1452, 1453, + 1454, 1455, 1458, 1459, 1460, 1461, 1464, 1465, 1468, 1469, + 1472, 1472, 1472, 1476, 1476, 1476, 1480, 1480, 1480, 1484, + 1484, 1484, 1488, 1488, 1488, 1493, 1493, 1497, 1499, 1497, + 1507, 1509, 1507, 1518, 1519, 1522, 1526, 1530, 1533, 1539, + 1543, 1549, 1549, 1552, 1553, 1561, 1562, 1561, 1573, 1574, + 1573, 1586, 1586, 1586, 1588, 1588, 1593, 1598, 1592, 1610, + 1613, 1614, 1618, 1629, 1634, 1617, 1694, 1695, 1698, 1699, + 1702, 1703, 1704, 1705, 1708, 1709, 1712, 1713, 1716, 1717, + 1721, 1727, 1736, 1720, 1756, 1757, 1761, 1760, 1773, 1781, + 1789, 1788, 1798, 1799, 1807, 1807, 1810, 1810, 1813, 1815, + 1818, 1818, 1818, 1822, 1824, 1832, 1822, 1853, 1854, 1854, + 1855, 1855, 1858, 1868, 1885, 1886, 1887, 1890, 1892, 1894, + 1899, 1906, 1907, 1908, 1909, 1910, 1913, 1914, 1915, 1916, + 1917, 1918, 1919, 1923, 1922, 1934, 1937, 1938 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "$end", "error", "$undefined", "FUNCTION", "PROCEDURE", "IDENTIFIER", + "RETURN", "NIL", "NUM_DOUBLE", "INASSIGN", "NUM_LONG", "LOCAL", "STATIC", + "IIF", "IF", "ELSE", "ELSEIF", "END", "ENDIF", "LITERAL", "TRUEVALUE", + "FALSEVALUE", "ANNOUNCE", "EXTERN", "INIT", "EXIT", "AND", "OR", "NOT", + "PUBLIC", "EQ", "NE1", "NE2", "INC", "DEC", "ALIASOP", "DOCASE", "CASE", + "OTHERWISE", "ENDCASE", "ENDDO", "MEMVAR", "WHILE", "LOOP", "FOR", + "NEXT", "TO", "STEP", "LE", "GE", "FIELD", "IN", "PARAMETERS", "PLUSEQ", + "MINUSEQ", "MULTEQ", "DIVEQ", "POWER", "EXPEQ", "MODEQ", "PRIVATE", + "BEGINSEQ", "BREAK", "RECOVER", "RECOVERUSING", "DO", "WITH", "SELF", + "LINE", "MACROVAR", "MACROTEXT", "AS_ARRAY", "AS_BLOCK", "AS_CHARACTER", + "AS_CLASS", "AS_DATE", "AS_LOGICAL", "AS_NUMERIC", "AS_OBJECT", + "AS_VARIANT", "DECLARE", "OPTIONAL", "DECLARE_CLASS", "DECLARE_MEMBER", + "AS_ARRAY_ARRAY", "AS_BLOCK_ARRAY", "AS_CHARACTER_ARRAY", + "AS_CLASS_ARRAY", "AS_DATE_ARRAY", "AS_LOGICAL_ARRAY", + "AS_NUMERIC_ARRAY", "AS_OBJECT_ARRAY", "PROCREQ", "CBSTART", "DOIDENT", + "FOREACH", "DESCEND", "DOSWITCH", "WITHOBJECT", "NUM_DATE", "EPSILON", + "POST", "'='", "'<'", "'>'", "'$'", "'+'", "'-'", "'*'", "'/'", "'%'", + "UNARY", "PRE", "'&'", "'@'", "'\\n'", "';'", "','", "')'", "'('", "'{'", + "'}'", "':'", "']'", "'['", "'|'", "$accept", "Main", "@1", "Source", + "Line", "ProcReq", "CompTimeStr", "Function", "@2", "@3", "@4", "@5", + "FunScope", "Params", "AsType", "StrongType", "AsArray", "ParamList", + "Statement", "@6", "@7", "@8", "@9", "@10", "@11", "@12", "@13", "@14", + "@15", "CrlfStmnt", "@16", "LineStat", "ControlError", "FunScopeId", + "Statements", "ExtList", "IdentName", "NumValue", "DateValue", + "NumAlias", "NilValue", "NilAlias", "LiteralValue", "LiteralAlias", + "CodeBlockAlias", "Logical", "LogicalAlias", "SelfValue", "SelfAlias", + "Array", "@17", "ArrayAlias", "ArrayAt", "ArrayAtAlias", "Variable", + "VarAlias", "MacroVar", "MacroVarAlias", "MacroExpr", "MacroExprAlias", + "FieldAlias", "FieldVarAlias", "AliasId", "AliasVar", "AliasExpr", + "VariableAt", "VariableAtAlias", "FunIdentCall", "@18", "FunCall", "@19", + "@20", "ArgList", "FunCallAlias", "SendId", "ObjectData", + "ObjectDataAlias", "ObjectMethod", "@21", "ObjectMethodAlias", + "SimpleExpression", "@22", "@23", "@24", "@25", "Expression", "@26", + "@27", "EmptyExpression", "LValue", "PostOp", "ExprPostOp", "ExprPreOp", + "ExprUnary", "ExprAssign", "ExprEqual", "ExprPlusEq", "ExprMinusEq", + "ExprMultEq", "ExprDivEq", "ExprModEq", "ExprExpEq", "ExprOperEq", + "ExprMath", "ExprBool", "ExprRelation", "ArrayIndex", "IndexList", + "ElemList", "CodeBlock", "@28", "@29", "BlockExpList", "BlockNoVar", + "BlockVarList", "PareExpList1", "PareExpList2", "PareExpList3", + "PareExpListN", "PareExpList", "PareExpListAlias", "ExpList1", + "ExpList2", "ExpList3", "ExpList", "IfInline", "@30", "IfInlineAlias", + "VarDefs", "@31", "@32", "@33", "VarList", "ExtVarList", "ExtVarDef", + "VarDef", "@34", "@35", "@36", "DimList", "DimIndex", "FieldsDef", "@37", + "FieldList", "MemvarDef", "@38", "MemvarList", "Declaration", "@39", + "@40", "@41", "DecDataList", "ClassInfo", "DecMethod", "@42", "DecData", + "@43", "DecList", "DummyArgList", "DummyArgument", "FormalList", + "OptList", "ExecFlow", "IfEndif", "EmptyStatements", "EmptyStats", + "IfBegin", "@44", "@45", "@46", "@47", "@48", "@49", "@50", "@51", "@52", + "@53", "IfElse", "@54", "IfElseIf", "@55", "@56", "@57", "@58", "EndIf", + "DoCase", "EndCase", "DoCaseStart", "@59", "DoCaseBegin", "Cases", "@60", + "@61", "@62", "@63", "Otherwise", "@64", "@65", "@66", "DoWhile", "@67", + "@68", "WhileBegin", "EndWhile", "ForNext", "@69", "@70", "@71", + "ForAssign", "StepExpr", "ForStatements", "ForVar", "ForList", "ForExpr", + "ForEach", "@72", "@73", "@74", "Descend", "DoSwitch", "@75", + "EndSwitch", "SwitchStart", "@76", "SwitchBegin", "SwitchCases", "@77", + "@78", "SwitchDefault", "@79", "@80", "BeginSeq", "@81", "@82", "@83", + "RecoverSeq", "@84", "@85", "RecoverEmpty", "RecoverUsing", "DoName", + "DoProc", "DoArgList", "DoArgument", "WithObject", "@86", "Crlf", 0 +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ +static const yytype_uint16 yytoknum[] = +{ + 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 61, 60, 62, 36, 43, 45, 42, 47, + 37, 357, 358, 38, 64, 10, 59, 44, 41, 40, + 123, 125, 58, 93, 91, 124 +}; +# endif + +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint16 yyr1[] = +{ + 0, 126, 128, 127, 127, 129, 129, 129, 129, 129, + 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, + 129, 129, 129, 129, 129, 130, 130, 131, 132, 132, + 134, 133, 135, 133, 136, 133, 137, 133, 138, 138, + 138, 138, 139, 139, 139, 139, 140, 140, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 142, 142, 142, + 142, 142, 142, 142, 142, 142, 143, 143, 145, 144, + 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, + 144, 144, 144, 144, 144, 146, 144, 144, 147, 144, + 148, 149, 144, 150, 151, 144, 152, 144, 153, 144, + 144, 154, 144, 156, 155, 157, 157, 157, 157, 157, + 158, 158, 158, 158, 159, 159, 159, 159, 160, 160, + 161, 161, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 163, + 163, 164, 165, 165, 166, 167, 168, 169, 170, 171, + 171, 172, 173, 174, 176, 175, 177, 178, 179, 180, + 181, 182, 182, 183, 184, 185, 186, 186, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 188, 188, 188, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 189, 189, 189, 190, 190, 190, 190, 190, 190, 191, + 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, + 191, 191, 191, 191, 192, 194, 193, 195, 196, 195, + 197, 195, 198, 198, 199, 200, 200, 200, 201, 201, + 201, 201, 201, 201, 201, 201, 201, 201, 201, 201, + 201, 201, 201, 201, 201, 201, 201, 201, 201, 202, + 204, 203, 205, 206, 206, 206, 206, 206, 206, 206, + 207, 206, 206, 206, 206, 206, 206, 206, 206, 208, + 206, 206, 206, 209, 206, 206, 210, 206, 206, 206, + 206, 206, 206, 206, 206, 206, 206, 211, 211, 211, + 212, 211, 213, 211, 211, 211, 211, 211, 211, 214, + 214, 215, 215, 215, 215, 215, 215, 215, 216, 216, + 217, 217, 217, 217, 217, 217, 217, 217, 217, 217, + 217, 217, 217, 217, 217, 217, 217, 217, 217, 218, + 218, 219, 219, 219, 220, 220, 220, 220, 220, 220, + 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, + 220, 220, 220, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 221, 221, 221, 221, 221, 221, 221, + 221, 221, 221, 222, 222, 222, 222, 222, 222, 222, + 222, 222, 222, 222, 222, 222, 222, 222, 222, 222, + 222, 222, 223, 223, 223, 223, 223, 223, 223, 223, + 223, 223, 223, 223, 223, 223, 223, 223, 223, 223, + 223, 224, 224, 224, 224, 224, 224, 224, 224, 224, + 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, + 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, + 225, 225, 225, 225, 225, 225, 225, 225, 225, 226, + 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, + 226, 226, 226, 226, 226, 226, 226, 226, 227, 227, + 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, + 227, 227, 227, 227, 227, 227, 227, 228, 228, 228, + 228, 228, 228, 229, 229, 229, 229, 229, 229, 230, + 230, 231, 231, 231, 231, 231, 231, 231, 231, 231, + 232, 233, 233, 233, 234, 234, 236, 235, 237, 235, + 238, 238, 239, 240, 240, 241, 242, 243, 244, 245, + 245, 245, 245, 246, 247, 248, 249, 250, 250, 251, + 252, 251, 253, 255, 254, 256, 254, 257, 254, 258, + 258, 259, 259, 260, 260, 260, 260, 260, 262, 261, + 263, 264, 261, 261, 261, 265, 266, 266, 266, 268, + 267, 269, 269, 269, 271, 270, 272, 272, 274, 273, + 275, 273, 273, 273, 276, 273, 277, 277, 278, 278, + 278, 278, 280, 279, 282, 281, 283, 283, 283, 283, + 284, 284, 285, 286, 286, 286, 286, 286, 286, 287, + 287, 287, 287, 287, 287, 288, 288, 288, 288, 288, + 288, 288, 289, 289, 289, 289, 290, 290, 291, 291, + 293, 294, 292, 295, 296, 292, 297, 298, 292, 299, + 300, 292, 301, 302, 292, 304, 303, 306, 307, 305, + 308, 309, 305, 310, 310, 311, 311, 311, 311, 312, + 312, 314, 313, 315, 315, 317, 318, 316, 319, 320, + 316, 322, 323, 321, 324, 321, 326, 327, 325, 328, + 329, 329, 331, 332, 333, 330, 334, 334, 335, 335, + 336, 336, 336, 336, 337, 337, 338, 338, 339, 339, + 341, 342, 343, 340, 344, 344, 346, 345, 345, 347, + 349, 348, 350, 350, 352, 351, 353, 351, 351, 351, + 355, 356, 354, 358, 359, 360, 357, 361, 362, 361, + 363, 361, 364, 365, 366, 366, 366, 367, 367, 367, + 367, 368, 368, 368, 368, 368, 369, 369, 369, 369, + 369, 369, 369, 371, 370, 370, 372, 372 +}; + +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 0, 2, 0, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 3, 4, 6, 4, 1, 3, + 0, 5, 0, 5, 0, 8, 0, 8, 0, 1, + 1, 1, 0, 1, 1, 3, 0, 1, 1, 1, + 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 2, 2, 4, 0, 3, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 0, 4, 2, 0, 4, + 0, 0, 5, 0, 0, 5, 0, 3, 0, 3, + 3, 0, 4, 0, 2, 1, 1, 1, 1, 1, + 4, 7, 4, 7, 0, 1, 1, 1, 1, 2, + 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 2, 2, 1, 2, 1, 2, 2, 1, + 1, 2, 1, 2, 0, 4, 2, 2, 2, 1, + 2, 1, 1, 2, 2, 2, 2, 3, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 1, 1, 1, 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, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 0, 5, 1, 0, 5, + 0, 5, 1, 3, 2, 1, 1, 1, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, + 0, 5, 2, 1, 1, 1, 1, 1, 1, 1, + 0, 3, 1, 1, 1, 1, 1, 1, 1, 0, + 3, 1, 1, 0, 3, 1, 0, 3, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 0, 3, 0, 3, 2, 2, 2, 2, 2, 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, + 1, 1, 1, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 2, 2, 3, 4, 1, 3, 0, 6, 0, 6, + 1, 3, 0, 2, 4, 2, 2, 2, 2, 1, + 1, 1, 1, 2, 2, 3, 3, 3, 3, 2, + 0, 8, 2, 0, 4, 0, 4, 0, 4, 1, + 3, 1, 3, 1, 2, 4, 2, 3, 0, 3, + 0, 0, 6, 2, 3, 2, 2, 3, 4, 0, + 4, 2, 4, 3, 0, 4, 2, 4, 0, 8, + 0, 5, 3, 3, 0, 7, 1, 3, 1, 2, + 1, 2, 0, 6, 0, 3, 0, 1, 1, 3, + 1, 3, 1, 2, 3, 5, 4, 5, 7, 3, + 4, 6, 5, 6, 8, 1, 1, 1, 1, 1, + 1, 1, 2, 3, 3, 4, 1, 2, 0, 1, + 0, 0, 6, 0, 0, 6, 0, 0, 6, 0, + 0, 6, 0, 0, 6, 0, 4, 0, 0, 6, + 0, 0, 7, 1, 1, 3, 3, 2, 4, 1, + 1, 0, 3, 1, 2, 0, 0, 6, 0, 0, + 7, 0, 0, 5, 0, 5, 0, 0, 7, 1, + 1, 1, 0, 0, 0, 12, 1, 1, 0, 2, + 2, 3, 2, 3, 1, 1, 1, 3, 1, 3, + 0, 0, 0, 10, 0, 1, 0, 4, 2, 1, + 0, 4, 1, 2, 0, 5, 0, 6, 1, 2, + 0, 0, 5, 0, 0, 0, 8, 0, 0, 4, + 0, 4, 1, 2, 1, 1, 1, 2, 4, 1, + 3, 1, 2, 1, 2, 3, 1, 2, 2, 1, + 1, 2, 2, 0, 6, 4, 1, 1 +}; + +/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state + STATE-NUM when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const yytype_uint16 yydefact[] = +{ + 2, 0, 0, 1, 0, 122, 88, 144, 139, 140, + 553, 555, 0, 0, 146, 149, 150, 130, 129, 40, + 126, 90, 0, 0, 671, 584, 689, 125, 0, 124, + 123, 579, 127, 557, 93, 733, 85, 0, 152, 0, + 161, 162, 0, 128, 0, 0, 137, 528, 749, 0, + 138, 720, 0, 141, 0, 766, 767, 309, 154, 0, + 0, 12, 13, 10, 0, 11, 159, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 103, 0, 103, 0, 0, + 0, 0, 103, 0, 0, 227, 103, 0, 0, 0, + 103, 0, 103, 103, 103, 103, 497, 498, 499, 500, + 501, 502, 103, 0, 539, 540, 541, 542, 103, 0, + 0, 0, 0, 0, 103, 0, 6, 7, 8, 9, + 68, 625, 0, 626, 673, 0, 627, 0, 628, 630, + 631, 722, 716, 629, 103, 103, 5, 14, 0, 87, + 0, 143, 142, 0, 0, 549, 0, 0, 0, 131, + 133, 0, 130, 129, 126, 0, 135, 132, 125, 0, + 136, 134, 137, 0, 0, 0, 263, 265, 264, 266, + 268, 269, 272, 273, 297, 275, 276, 274, 288, 277, + 278, 282, 285, 298, 0, 291, 292, 293, 289, 290, + 294, 295, 296, 267, 539, 540, 542, 299, 0, 281, + 101, 0, 120, 103, 0, 297, 298, 339, 340, 0, + 0, 103, 159, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 313, 314, 312, 0, 316, 0, 315, 0, + 0, 0, 317, 0, 166, 0, 0, 0, 0, 0, + 84, 744, 745, 746, 747, 0, 590, 0, 46, 0, + 0, 28, 0, 532, 0, 0, 159, 0, 0, 705, + 0, 0, 0, 706, 0, 0, 0, 164, 310, 544, + 309, 235, 236, 237, 258, 0, 22, 23, 20, 21, + 16, 17, 18, 19, 15, 0, 0, 160, 225, 0, + 318, 319, 0, 0, 0, 0, 0, 0, 0, 0, + 320, 0, 0, 181, 182, 183, 184, 203, 0, 145, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 321, + 209, 0, 188, 0, 147, 0, 0, 0, 0, 0, + 0, 0, 0, 322, 210, 189, 191, 0, 151, 0, + 0, 0, 0, 0, 0, 0, 0, 324, 212, 190, + 0, 153, 0, 0, 0, 0, 0, 0, 0, 0, + 325, 213, 192, 0, 156, 0, 0, 0, 0, 0, + 0, 0, 0, 326, 157, 193, 0, 158, 0, 0, + 0, 0, 0, 0, 0, 0, 327, 194, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 328, 214, 200, + 204, 0, 163, 0, 0, 0, 0, 0, 0, 0, + 228, 0, 75, 329, 217, 185, 205, 0, 165, 0, + 0, 0, 0, 0, 0, 0, 230, 0, 76, 330, + 218, 186, 206, 0, 0, 181, 169, 0, 173, 0, + 174, 176, 0, 175, 0, 177, 0, 178, 0, 179, + 168, 182, 171, 183, 172, 201, 0, 208, 170, 0, + 180, 202, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 331, 215, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 73, 332, 216, 0, 224, 0, 0, 0, + 0, 0, 0, 0, 0, 333, 195, 0, 234, 0, + 0, 0, 0, 0, 0, 0, 0, 72, 336, 221, + 197, 0, 259, 0, 0, 0, 0, 0, 0, 0, + 260, 0, 337, 219, 198, 0, 262, 0, 0, 0, + 0, 0, 0, 0, 0, 74, 338, 220, 199, 79, + 78, 82, 81, 80, 0, 148, 0, 0, 0, 0, + 0, 0, 0, 0, 323, 211, 0, 543, 0, 0, + 0, 0, 0, 0, 0, 0, 77, 334, 223, 187, + 207, 309, 535, 309, 536, 309, 537, 309, 538, 0, + 552, 0, 0, 0, 0, 0, 0, 0, 0, 71, + 335, 222, 196, 103, 0, 657, 664, 663, 0, 0, + 632, 133, 116, 126, 108, 106, 118, 109, 0, 674, + 107, 105, 670, 675, 681, 669, 667, 0, 0, 0, + 723, 719, 0, 718, 83, 70, 0, 104, 46, 0, + 559, 0, 0, 341, 343, 342, 304, 306, 307, 305, + 308, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 309, + 0, 0, 100, 97, 46, 91, 561, 563, 672, 46, + 0, 99, 697, 696, 0, 167, 46, 0, 0, 94, + 638, 0, 0, 0, 588, 0, 592, 57, 52, 49, + 0, 50, 51, 48, 53, 55, 62, 63, 59, 0, + 60, 61, 58, 64, 594, 47, 56, 602, 593, 0, + 0, 0, 46, 0, 0, 751, 159, 298, 299, 750, + 753, 0, 0, 0, 763, 524, 0, 24, 30, 32, + 309, 344, 383, 402, 421, 440, 478, 459, 363, 238, + 365, 240, 345, 384, 403, 422, 441, 479, 460, 364, + 239, 521, 0, 520, 346, 385, 404, 423, 442, 480, + 461, 366, 241, 348, 387, 406, 425, 444, 482, 463, + 368, 244, 349, 388, 407, 426, 445, 483, 464, 369, + 245, 350, 389, 408, 427, 446, 484, 465, 370, 246, + 351, 390, 409, 428, 447, 485, 466, 371, 247, 352, + 391, 410, 429, 448, 486, 467, 372, 242, 353, 392, + 411, 430, 449, 487, 468, 373, 309, 250, 354, 393, + 412, 431, 450, 488, 469, 374, 309, 251, 355, 394, + 413, 432, 451, 489, 470, 375, 248, 356, 395, 414, + 433, 452, 490, 471, 376, 249, 357, 396, 415, 434, + 453, 491, 472, 377, 255, 360, 399, 418, 437, 456, + 494, 475, 380, 252, 361, 400, 419, 438, 457, 495, + 476, 381, 309, 257, 362, 401, 420, 439, 458, 496, + 477, 382, 256, 347, 386, 405, 424, 443, 481, 462, + 367, 243, 358, 397, 416, 435, 454, 492, 473, 378, + 254, 545, 546, 547, 548, 359, 398, 417, 436, 455, + 493, 474, 379, 253, 69, 655, 0, 633, 660, 0, + 634, 0, 0, 119, 0, 0, 678, 665, 0, 684, + 666, 686, 0, 730, 0, 728, 89, 0, 568, 573, + 0, 0, 554, 556, 309, 271, 301, 644, 280, 284, + 287, 641, 509, 510, 511, 516, 517, 514, 515, 508, + 519, 512, 513, 518, 503, 504, 505, 506, 507, 647, + 650, 653, 303, 545, 102, 121, 564, 566, 0, 0, + 586, 0, 585, 692, 581, 0, 0, 580, 558, 0, + 636, 639, 734, 86, 748, 0, 25, 606, 604, 0, + 598, 600, 54, 65, 0, 606, 29, 27, 0, 533, + 0, 0, 304, 306, 307, 305, 752, 754, 708, 710, + 707, 721, 765, 114, 309, 155, 0, 0, 0, 0, + 0, 232, 522, 0, 0, 0, 0, 114, 0, 0, + 635, 0, 0, 0, 682, 0, 668, 0, 114, 724, + 0, 0, 717, 729, 576, 569, 0, 574, 0, 575, + 560, 0, 638, 638, 638, 638, 638, 550, 0, 567, + 562, 92, 46, 0, 583, 46, 95, 637, 737, 0, + 128, 0, 46, 0, 607, 608, 46, 599, 601, 591, + 604, 0, 596, 0, 530, 0, 46, 0, 755, 0, + 714, 114, 525, 31, 42, 33, 42, 309, 226, 523, + 229, 231, 261, 656, 658, 0, 42, 110, 42, 112, + 676, 638, 0, 638, 687, 0, 731, 726, 571, 577, + 0, 645, 642, 648, 651, 654, 309, 565, 587, 0, + 582, 742, 0, 735, 0, 0, 26, 0, 46, 46, + 613, 46, 0, 0, 605, 0, 0, 46, 0, 527, + 534, 529, 709, 715, 711, 764, 43, 0, 44, 46, + 0, 233, 638, 661, 0, 0, 638, 683, 679, 685, + 0, 638, 638, 0, 0, 578, 0, 698, 743, 0, + 738, 740, 46, 619, 309, 614, 0, 0, 46, 609, + 0, 597, 595, 603, 531, 0, 0, 0, 66, 0, + 659, 638, 0, 0, 677, 638, 690, 691, 688, 725, + 732, 638, 572, 551, 0, 693, 736, 114, 114, 309, + 620, 612, 0, 610, 589, 46, 616, 0, 46, 712, + 35, 45, 46, 37, 662, 111, 113, 680, 727, 699, + 0, 739, 741, 0, 309, 615, 309, 617, 46, 622, + 114, 67, 694, 621, 611, 0, 309, 623, 0, 713, + 114, 618, 0, 702, 700, 695, 624, 703, 701 +}; + +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int16 yydefgoto[] = +{ + -1, 1, 2, 60, 614, 62, 262, 63, 1046, 1048, + 1047, 1049, 64, 1187, 724, 725, 726, 1188, 615, 603, + 249, 148, 214, 999, 247, 1009, 213, 221, 680, 149, + 150, 1010, 617, 618, 619, 211, 66, 176, 177, 69, + 178, 71, 179, 73, 74, 180, 76, 181, 78, 182, + 280, 80, 183, 82, 215, 84, 185, 86, 186, 88, + 89, 90, 316, 187, 188, 189, 94, 95, 750, 190, + 836, 846, 1050, 97, 284, 191, 99, 192, 892, 101, + 216, 651, 654, 655, 656, 278, 652, 678, 1251, 240, + 407, 195, 196, 197, 198, 105, 106, 107, 108, 109, + 110, 111, 199, 200, 201, 202, 424, 331, 746, 203, + 263, 264, 1115, 731, 733, 114, 115, 116, 117, 207, + 119, 120, 121, 122, 123, 209, 1156, 125, 126, 153, + 154, 246, 639, 685, 686, 687, 1075, 1076, 1204, 959, + 960, 127, 245, 697, 128, 220, 690, 620, 1017, 705, + 1024, 1111, 1019, 260, 1025, 1021, 1106, 1103, 1252, 1253, + 1104, 1105, 130, 131, 1011, 1288, 132, 657, 1083, 653, + 1082, 675, 1084, 676, 1085, 677, 1086, 608, 1057, 609, + 936, 1192, 1059, 1231, 610, 133, 626, 134, 219, 135, + 627, 944, 1196, 1065, 1235, 628, 945, 1141, 1067, 136, + 1068, 1200, 137, 1238, 138, 1093, 1270, 1290, 694, 1245, + 1289, 273, 274, 1039, 139, 1120, 1225, 1280, 1184, 140, + 632, 633, 141, 275, 142, 954, 1145, 1203, 955, 1070, + 1202, 143, 248, 1098, 1209, 1163, 1247, 1248, 1164, 1165, + 254, 144, 739, 740, 145, 1043, 621 +}; + +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -1198 +static const yytype_int16 yypact[] = +{ + 20, 49, 5207, -1198, 114, -1198, 161, -1198, 18, 50, + 7, 233, -26, 6254, -1198, -1198, -1198, 3826, 3826, -1198, + 21, 466, 6254, 6254, -1198, 853, -1198, 169, 4387, -1198, + -1198, 78, -1198, 977, 1009, -1198, 161, 6929, -1198, 120, + -1198, -1198, 3826, -1198, 3826, 589, 119, 22, 79, 4387, + -1198, -1198, 6254, -1198, -26, -1198, -1198, 6254, -1198, 6929, + 4170, -1198, -1198, -1198, 347, -1198, 9, 405, -68, 3793, + 1112, 6929, 1962, 6929, 6929, 2083, 6929, 2139, 6929, 2246, + 6929, 1742, 6929, 2319, 3793, 1342, 3793, 1448, 3793, 6486, + 6929, 2360, 3042, 2726, 6929, -1198, 2304, 6929, 1501, 6929, + 2331, 6929, -1198, -1198, -1198, -1198, -1198, -1198, -1198, -1198, + -1198, -1198, -1198, 2454, -1198, -1198, -1198, -1198, 2486, 3793, + 251, 258, 298, 319, 2826, 6929, -1198, -1198, -1198, -1198, + -1198, -1198, 456, -1198, 5416, 416, -1198, 6254, -1198, -1198, + -1198, 5416, 141, -1198, -1198, -1198, -1198, -1198, 6254, -1198, + 114, -1198, -1198, 3826, 3826, -1198, 51, 73, 83, -1198, + -1198, -26, -1198, -1198, -1198, 6254, -1198, -1198, -1198, 78, + -1198, -1198, -1198, 6254, 6254, 4387, 600, 96, 3182, 3192, + 3209, 6536, 3309, 504, 5020, 2123, 2990, 305, 1016, 907, + 6595, 4462, 6654, 336, 7094, -1198, -1198, -1198, -1198, -1198, + -1198, -1198, -1198, 3441, 353, 361, 368, 6713, 370, 3478, + -1198, 144, -1198, -1198, 7058, 4883, -1198, -1198, -1198, 114, + 3826, -1198, 8, 116, 96, -17, -4, 55, 132, 175, + 3, -54, -8, 56, -41, -24, 11, 176, 84, 184, + 0, 196, 205, 212, 170, 3826, 3826, 7058, 114, 6254, + -1198, -1198, -1198, -1198, 187, 282, 186, 114, 5107, 193, + 114, 197, 219, -1198, 3826, 3918, 154, -8, 56, -41, + 11, 84, 205, -1198, -23, 6254, 6339, -1198, 7094, -1198, + 6254, -1198, -1198, -1198, -1198, 114, -1198, -1198, -1198, -1198, + -1198, -1198, -1198, -1198, -1198, 3826, 3826, -1198, -1198, 6254, + -1198, -1198, 6254, 6254, 6254, 6254, 6254, 6254, 6254, 6929, + -1198, 6254, 6929, -1198, -1198, -1198, -1198, -1198, 6254, -1198, + 6254, 6254, 6254, 6254, 6254, 6254, 6254, 6929, 6254, -1198, + -1198, 33, -1198, 6254, -1198, 6254, 6254, 6254, 6254, 6254, + 6254, 6254, 6929, -1198, -1198, -1198, -1198, 6254, -1198, 6254, + 6254, 6254, 6254, 6254, 6254, 6254, 6929, -1198, -1198, -1198, + 6254, -1198, 6254, 6254, 6254, 6254, 6254, 6254, 6254, 6929, + -1198, -1198, -1198, 6254, -1198, 6254, 6254, 6254, 6254, 6254, + 6254, 6254, 6929, -1198, -1198, -1198, 6254, -1198, 6254, 6254, + 6254, 6254, 6254, 6254, 6254, 6929, -1198, -1198, 6254, 6254, + 6254, 6254, 6254, 6254, 6254, 6254, 6929, -1198, -1198, -1198, + -1198, 6254, -1198, 6254, 6254, 6254, 6254, 6254, 6254, 6254, + -1198, 6929, -1198, -1198, -1198, -1198, -1198, 6254, -1198, 6254, + 6254, 6254, 6254, 6254, 6254, 6254, -1198, 6929, -1198, -1198, + -1198, -1198, -1198, 18, 50, 280, -1198, 313, -1198, 343, + -1198, -1198, 357, -1198, 366, -1198, -3, -1198, 377, -1198, + -1198, 383, -1198, 385, -1198, -1198, 391, 395, -1198, 399, + -1198, -1198, 6254, 6254, 6254, 6254, 6254, 6254, 6254, 6254, + 6929, -1198, -1198, 6254, 6254, 6254, 6254, 6254, 6254, 6254, + 6254, 6929, -1198, -1198, -1198, 6254, -1198, 6254, 6254, 6254, + 6254, 6254, 6254, 6254, 6929, -1198, -1198, 6254, -1198, 6254, + 6254, 6254, 6254, 6254, 6254, 6254, 6929, -1198, -1198, -1198, + -1198, 6254, -1198, 6254, 6254, 6254, 6254, 6254, 6254, 6254, + -1198, 6929, -1198, -1198, -1198, 6254, -1198, 6254, 6254, 6254, + 6254, 6254, 6254, 6254, 6929, -1198, -1198, -1198, -1198, -1198, + -1198, -1198, -1198, -1198, 6254, -1198, 6254, 6254, 6254, 6254, + 6254, 6254, 6254, 6929, -1198, -1198, 6254, -1198, 6254, 6254, + 6254, 6254, 6254, 6254, 6254, 6929, -1198, -1198, -1198, -1198, + -1198, 6254, -1198, 6254, -1198, 6254, -1198, 6254, -1198, 6254, + -1198, 6254, 6254, 6254, 6254, 6254, 6254, 6254, 6929, -1198, + -1198, -1198, -1198, -1198, 114, -1198, -1198, -1198, 473, 488, + -1198, 540, -1198, 26, -1198, -1198, -1198, -1198, 549, 5416, + -1198, -1198, -1198, -1198, -1198, -1198, -1198, 428, 143, 6339, + 5416, -1198, 534, -1198, -1198, -1198, 6339, -1198, 4696, 326, + -1198, 326, 254, 4316, -1198, -1198, 127, -8, -41, 223, + 84, 5107, 5107, 114, 5107, 5107, 5107, 114, 6254, 6254, + 6254, 6254, 6254, 6254, 6254, 6254, 6254, 6254, 6254, 6254, + 6254, 6254, 6254, 6254, 6254, 114, 114, 114, 5107, 6254, + 114, 3826, -1198, -1198, 4696, 271, -1198, -1198, -1198, 5107, + 378, -1198, -1198, -1198, 6254, -1198, 5107, 266, 378, 271, + 5416, 6339, 3918, 179, -1198, 3826, -1198, -1198, -1198, -1198, + 3826, -1198, -1198, -1198, -1198, -1198, -1198, -1198, -1198, 3826, + -1198, -1198, -1198, -1198, -1198, -1198, -1198, -1198, -1198, 409, + 114, 331, 5107, -66, 4387, 6370, 227, 417, 4246, 345, + -1198, 6254, 4387, 6339, 462, -1198, 131, -1198, 379, 392, + 6254, 7094, 7094, 7094, 7094, 7094, 7094, 7094, 7094, -1198, + 7094, -1198, 7094, 7094, 7094, 7094, 7094, 7094, 7094, 7094, + -1198, 7094, 6254, 394, 7094, 7094, 7094, 7094, 7094, 7094, + 7094, 7094, -1198, 7094, 7094, 7094, 7094, 7094, 7094, 7094, + 7094, -1198, 7094, 7094, 7094, 7094, 7094, 7094, 7094, 7094, + -1198, 7094, 7094, 7094, 7094, 7094, 7094, 7094, 7094, -1198, + 7094, 7094, 7094, 7094, 7094, 7094, 7094, 7094, -1198, 7094, + 7094, 7094, 7094, 7094, 7094, 7094, 7094, -1198, 7094, 7094, + 7094, 7094, 7094, 7094, 7094, 7094, 6254, -1198, 7094, 7094, + 7094, 7094, 7094, 7094, 7094, 7094, 6254, -1198, 7094, 7094, + 7094, 7094, 7094, 7094, 7094, 7094, -1198, 7094, 7094, 7094, + 7094, 7094, 7094, 7094, 7094, -1198, 7094, 7094, 7094, 7094, + 7094, 7094, 7094, 7094, -1198, 7094, 7094, 7094, 7094, 7094, + 7094, 7094, 7094, -1198, 7094, 7094, 7094, 7094, 7094, 7094, + 7094, 7094, 6254, -1198, 7094, 7094, 7094, 7094, 7094, 7094, + 7094, 7094, -1198, 7094, 7094, 7094, 7094, 7094, 7094, 7094, + 7094, -1198, 7094, 7094, 7094, 7094, 7094, 7094, 7094, 7094, + -1198, -1198, -1198, -1198, -1198, 7094, 7094, 7094, 7094, 7094, + 7094, 7094, 7094, -1198, -1198, -1198, 6254, -1198, -1198, 473, + -1198, 3826, 3826, -1198, 6254, 114, -1198, -1198, 143, -1198, + -1198, -1198, 6254, -1198, 294, -1198, -1198, 6254, 507, 913, + 98, 3826, -1198, -1198, 6254, -1198, -1198, -1198, -1198, -1198, + -1198, -1198, 3547, 7094, 4316, 4316, 4316, 4316, 4316, 471, + 4316, 4316, 4316, 4316, 340, 340, 264, 264, 264, -1198, + -1198, -1198, -1198, 406, -1198, -1198, 521, 913, 7058, 114, + -1198, 3826, -1198, 7094, -1198, 3826, 3826, -1198, -1198, 114, + -1198, 5416, -1198, -1198, 345, 517, -1198, 5350, 193, 4038, + -1198, -1198, -1198, -1198, 3826, 5350, -1198, -1198, 6254, -1198, + 3826, 6254, 69, 80, 393, 117, -1198, 6370, 7094, 429, + -1198, -1198, -1198, 6138, 6254, -1198, 114, 431, 114, 435, + 458, -1198, 7094, 6254, 460, 464, 475, 5545, 6339, 6254, + -1198, 270, 279, 6339, -1198, 6254, -1198, 114, 5663, 7094, + 114, 6254, -1198, -1198, 7094, -1198, 539, -1198, 6254, 432, + -1198, 406, 5416, 5416, 5416, 5416, 5416, -1198, 6254, -1198, + -1198, -1198, 5107, 518, -1198, 5107, -1198, -1198, 520, 114, + 6800, 3826, 5107, 449, 452, 472, 5107, -1198, -1198, -1198, + -1198, 207, -1198, 477, 7094, 209, 5107, 245, -1198, 6254, + 503, 5902, -1198, -1198, 6972, -1198, 6972, 6254, -1198, 7094, + -1198, -1198, -1198, -1198, -1198, 6339, 6972, -1198, 6972, -1198, + -1198, 5416, 6339, 5416, -1198, 114, -1198, 7094, -1198, 7094, + 6254, -1198, -1198, -1198, -1198, -1198, 6254, 7094, -1198, 6254, + -1198, -1198, 3826, -1198, 114, 114, -1198, 3826, 5107, 5259, + -1198, 5107, 6843, 529, -1198, 3826, 114, 5107, 6254, -1198, + -1198, -1198, 7094, -1198, -1198, -1198, -1198, 497, 499, 5107, + 502, -1198, 5416, -1198, 505, 506, 5416, -1198, -1198, -1198, + 16, 5416, 5416, 114, 6254, 7094, 509, 6455, -1198, 605, + -1198, -1198, 7086, -1198, 6254, -1198, 114, 3826, 5107, 472, + 6886, -1198, -1198, -1198, 7094, 114, 114, 7015, -1198, 114, + -1198, 5416, 114, 114, -1198, 5416, -1198, -1198, -1198, -1198, + -1198, 5416, 7094, -1198, 6254, -1198, -1198, 6020, 6020, 6254, + -1198, -1198, 480, -1198, -1198, 7135, -1198, 3826, 5107, -1198, + -1198, -1198, 5107, -1198, -1198, -1198, -1198, -1198, -1198, 7094, + 114, -1198, -1198, 485, 6254, -1198, 6254, -1198, 7156, -1198, + 5781, -1198, -1198, -1198, -1198, 487, 6254, -1198, 19, -1198, + 5781, -1198, 490, 3826, 3826, -1198, -1198, -1198, -1198 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = +{ + -1198, -1198, -1198, -1198, 13, 565, -1198, 569, -1198, -1198, + -1198, -1198, -1198, -913, -319, -246, -922, -1198, 46, -1198, + -1198, -1198, -1198, -1198, -1198, -1198, -1198, -1198, -1198, 178, + -1198, -133, -1198, -1198, 496, -1198, 3352, 1449, 1468, 542, + 94, 553, 215, 556, 557, 351, 559, 611, 562, 688, + -1198, 563, 742, 568, 919, 572, -2, 574, 75, 575, + 421, -1198, 3681, 1516, 1609, 1731, -1198, -169, -1198, 1872, + -1198, -1198, -791, -1198, 335, 2091, -1198, 2267, -1198, -1198, + -10, -1198, -1198, -1198, -1198, 4329, -1198, -1198, -36, -1198, + 3605, 619, 1781, -1198, 1949, -1198, -1198, -1198, -1198, -1198, + -1198, -1198, 2213, -1198, -1198, -1198, 4934, -1198, -1198, 988, + -1198, -1198, -365, -1198, -1198, 654, 655, 657, 659, 138, + 585, 10, 663, 664, -1198, 1203, -1198, 591, 618, -1198, + -1198, -1198, 528, 436, -314, -149, -1198, -1198, -1198, 2, + -1198, 627, -1198, -1198, 628, -1198, 443, 48, -1198, -1198, + -1198, -1198, -1198, -703, -1198, -1005, -1198, -332, -1197, -579, + -1198, -476, -1198, -1198, -346, -661, -1198, -1198, -1198, -1198, + -1198, -1198, -1198, -1198, -1198, -1198, -1198, 90, -1198, -1198, + -1198, -1198, -1198, -1198, -598, -1198, -615, -1198, -1198, -1198, + -1198, -1198, -1198, -1198, -1198, 74, -1198, -1198, -1198, -1198, + -1198, -1198, -1198, -1198, -1198, -1198, -1198, -1198, -1198, -1198, + -588, -39, -1198, -1198, -1198, -1198, -1198, -1198, -1198, -1198, + -1198, -248, -1198, -1198, -1198, -1198, -1198, -1198, -247, -1198, + -1198, -1198, -1198, -1198, -1198, -1198, -1198, -1198, -1198, -1198, + -1198, -1198, 6, -728, -1198, -1198, 2935 +}; + +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If zero, do what YYDEFACT says. + If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -763 +static const yytype_int16 yytable[] = +{ + 85, 616, 1020, 193, 640, 640, 649, 1036, 616, 692, + 937, 940, 947, 950, 1108, 61, -131, -311, 319, 1112, + -4, 279, 156, 208, -41, -41, 232, 412, 741, -117, + -117, 334, 374, 1236, 311, 252, 1293, 1077, 387, 1012, + -131, -131, -131, 297, 297, 1054, 496, 267, 65, 3, + 129, 1030, 1273, 151, 312, 1055, 1237, 282, 85, 1031, + -131, -131, -131, -131, 1294, -131, -131, 314, 406, 314, + 328, 314, 314, 286, 314, 1089, 314, 87, 314, 1285, + 314, 480, 314, 328, 314, 152, 314, 461, 314, 1292, + 348, 428, 314, 57, 742, 314, 70, 314, 491, 314, + 328, 1056, 693, 233, 297, 327, 289, 328, 293, -131, + -311, 420, 253, 244, 421, 412, 328, 314, 342, 522, + 328, 328, 225, 314, 268, 395, -131, 298, 298, -131, + 255, -131, 85, 504, 283, 87, -96, -96, 261, 85, + 118, -96, -96, 225, 315, 265, 315, -526, 315, 315, + 772, 315, -227, 315, 70, 315, 773, 315, 631, 315, + 622, 315, 297, 315, 463, 315, 242, 361, 581, 315, + 1221, 642, 315, 647, 315, 436, 315, 356, 437, 328, + 328, 949, 625, 447, -758, -758, -758, 272, 298, 297, + 583, -159, 277, -159, 315, -761, -761, -761, 118, 420, + 315, 586, 421, 530, 328, -704, 531, 317, 328, 87, + 374, 508, 684, 1190, 250, 1078, 87, 72, 312, 536, + 169, 1079, 410, 1194, 426, 1195, 442, 467, 70, 55, + 56, 555, -757, -757, -757, 70, -39, -39, 309, -227, + 567, -227, -133, 226, 745, 684, 298, 590, 1044, -159, + 268, -159, 1045, 702, 369, 737, 328, 580, -227, 55, + 56, 681, 297, 422, 226, 438, -133, -133, -133, 225, + 492, -704, 118, 298, 517, 72, -103, -103, 545, 118, + 549, 550, 551, 552, -98, -98, -133, -133, -133, -133, + 553, -133, -133, 1015, 55, 56, 576, 382, 516, 328, + 328, 703, 599, 729, 449, 704, 544, 282, 328, 1118, + 282, 631, 727, 272, 472, 297, 1107, 1005, 563, 958, + 328, 665, 634, 635, 1175, 282, 1178, 575, 1176, 328, + 1179, 1071, 953, 1066, 598, -133, 328, 730, 300, 301, + 282, 1060, -756, -756, -756, -227, 298, -227, 319, 72, + 295, 296, -133, 75, 282, -133, 72, -133, 473, 474, + 475, 476, 1178, 477, 478, 996, 1181, 282, 581, 582, + 1000, 964, 672, 673, 674, 583, 584, 1004, 334, 227, + 282, 55, 56, 1006, 283, 55, 56, 283, 998, 1136, + 226, 683, 348, 282, 55, 56, 1133, 665, 1138, 691, + 227, 361, 283, 738, 282, 965, 966, 1144, 968, 969, + 970, 75, 387, 1029, 299, 585, 586, 283, 412, 282, + 428, 1151, 1152, 1153, 1154, 1155, 555, 480, 1026, 328, + 567, 283, 992, 622, 590, 282, 587, 588, 300, 301, + 452, 55, 56, 961, 283, 622, 670, 671, 672, 673, + 674, -640, -640, 623, 624, 625, 1028, 283, 302, 303, + 304, 305, 1037, 306, 307, 946, 624, 625, -646, -646, + 283, 604, 605, 606, 607, -135, -649, -649, 282, 1042, + 1197, 283, 1199, -652, -652, 75, 943, 679, 582, 282, + 606, 607, 75, 55, 56, 1001, 283, 943, -34, -135, + -135, -135, 282, 604, 938, 606, 607, 308, -762, -762, + -762, -36, 283, 386, 282, 480, -570, 328, 1053, -135, + -135, -135, -135, 1087, -135, -135, 227, 309, 665, 282, + 1088, 1230, -759, -759, -759, 1234, 1099, 300, 301, 387, + 1239, 1240, 282, -115, -115, 921, 1119, 922, 1148, 923, + 1124, 924, 941, 942, 1126, 283, 1150, 388, 389, 390, + 391, 282, 392, 393, 1159, 1035, 283, 1171, -135, 1172, + 1264, 952, 953, 282, 1267, 1127, 1128, 1127, 1130, 283, + 1268, 1127, 1131, 1161, 1162, -135, 1271, 1272, -135, 1173, + -135, 283, 1127, 1132, 5, 1177, 282, 1274, 1275, 1183, + 159, 160, 1274, 1283, 1274, 1291, 283, 1274, 1296, 299, + 1220, 162, 163, 77, 164, 1226, 1227, 85, 166, 283, + 1229, 102, 1246, 1232, 1233, 287, 395, 1243, 85, 288, + 167, 446, 168, 300, 301, 29, 30, 630, 283, 228, + 32, 170, 448, 993, 759, 450, 451, 761, 453, 171, + 283, 455, 457, 302, 303, 304, 305, 459, 306, 307, + 228, 460, 770, 462, 464, 695, 1117, 204, 205, 155, + 43, 77, 206, 283, 468, 157, 158, 782, 290, 102, + 470, 172, 641, 699, 1090, 50, 997, 291, 292, 698, + 79, 791, 737, 1113, 87, 1284, 1219, 1121, 85, 939, + 454, 948, 1295, 1040, 800, 87, 1072, 1073, 1014, 258, + 0, 0, 0, 70, 1051, 0, 229, 809, 0, 0, + 0, 0, 309, 0, 70, 737, 0, 0, 0, 0, + 818, 0, 1033, 0, 0, 0, 0, 229, 0, 0, + 267, 827, 0, 0, 81, 77, 0, 0, 79, 0, + 0, 0, 77, 102, 0, 0, 837, 118, 0, 0, + 102, 0, 0, 0, 0, 0, 0, 0, 118, 0, + 230, 0, 847, 1158, 0, 87, 1160, 456, 0, 0, + 0, 934, 0, 1170, 0, 0, 228, 1174, 0, 0, + 0, 230, 0, 0, 70, 0, 0, 1180, 0, 0, + 1051, 0, 81, 0, 0, 0, 0, 0, 0, 268, + 1051, 0, 1080, 0, 0, 856, 0, 268, 0, 0, + 0, 0, 79, 0, 0, 0, 865, 0, 225, 79, + 0, 458, 0, 0, 72, 0, 225, 0, 118, 874, + 738, 0, 0, 0, 0, 72, 0, 0, 0, 1213, + 1215, 883, 1216, 0, 0, 0, 1051, 0, 1223, 0, + 0, 0, -132, 229, 0, 0, 893, 0, 0, 0, + 1228, 0, 272, 738, 0, 0, 81, 0, 1097, 902, + 272, 0, 0, 81, 0, 0, -132, -132, -132, 0, + 0, 0, 0, 1250, 0, 0, 0, 0, 911, 1256, + 0, 0, 0, 0, 0, 0, -132, -132, -132, -132, + 920, -132, -132, 0, 0, 72, 495, 230, 0, 0, + 0, 83, 0, 0, 0, 0, 0, 0, 1081, 0, + 0, 0, 184, 933, 0, 0, 1277, 0, 0, 1279, + 300, 301, 496, 1281, 0, 0, 0, 231, 0, 226, + 0, 0, 0, 0, 0, -132, 0, 226, 0, 1287, + 497, 498, 499, 500, 0, 501, 502, 0, 231, 0, + 75, 0, -132, 0, 0, -132, 0, -132, 0, 83, + 0, 75, 0, 0, 707, 0, -136, 0, 1097, 0, + 113, 0, 0, 0, 0, 0, 684, 716, 717, 718, + 719, 720, 721, 722, 723, 0, 0, 0, 1122, 85, + -136, -136, -136, 0, 0, 0, 241, 0, -134, 0, + 0, 0, 0, 0, 0, 483, 0, 737, 0, 504, + -136, -136, -136, -136, 0, -136, -136, 241, 0, 0, + 0, 85, -134, -134, -134, 0, 0, 0, 113, 300, + 301, 75, 0, 83, 0, 85, 0, 0, 0, 0, + 83, 0, -134, -134, -134, -134, 85, -134, -134, 484, + 485, 486, 487, 0, 488, 489, 0, 466, 0, -136, + 85, 85, 85, 85, 85, 227, 87, 0, 0, 0, + 0, 1191, 0, 227, 231, 0, -136, 0, 0, -136, + 0, -136, 0, 0, 0, 70, 0, 0, 0, 0, + 0, -134, 0, 0, 0, 0, 0, 0, 87, 85, + 1206, 318, 113, 0, 0, 0, 0, 0, -134, 113, + 0, -134, 87, -134, 0, 0, 0, 70, 491, 85, + 328, 85, 0, 87, 0, 300, 301, 319, 0, 118, + 0, 70, 0, 0, 0, 0, 0, 87, 87, 87, + 87, 87, 70, 241, 0, 320, 321, 322, 323, 0, + 324, 325, 0, 0, 0, 738, 70, 70, 70, 70, + 70, 118, 0, 0, 0, 0, 0, 0, 0, 0, + 85, 0, 0, 0, 85, 118, 87, 0, 0, 85, + 85, 0, 0, 0, 0, 124, 118, 0, 0, 0, + 0, 0, 0, 0, 326, 70, 87, 0, 87, 0, + 118, 118, 118, 118, 118, 0, 72, 0, 0, 85, + 77, 243, 0, 85, 327, 70, 328, 70, 102, 85, + 0, 77, 0, 0, 0, 85, 85, 0, 0, 102, + 0, 0, 243, 0, 0, 0, 0, 0, 72, 118, + 0, 0, 0, 124, 0, 0, 0, 87, 0, 0, + 0, 87, 72, 0, 0, 0, 87, 87, 85, 118, + 0, 118, 0, 72, 0, 0, 70, 0, 85, 0, + 70, 0, 469, 0, 0, 70, 70, 72, 72, 72, + 72, 72, 0, 0, 0, 0, 87, 79, 0, 0, + 87, 77, 0, 0, 0, 0, 87, 0, 79, 102, + 0, 0, 87, 87, 0, 70, 0, 0, 0, 70, + 118, 0, 0, 0, 118, 70, 72, 124, 0, 118, + 118, 70, 70, 0, 124, 228, 0, 0, 0, 0, + 0, 411, 0, 228, 0, 87, 72, 0, 72, 0, + 0, 81, 75, 0, 0, 87, 0, 0, 0, 118, + 0, 0, 81, 118, 70, 300, 301, 412, 243, 118, + 0, 0, 0, 0, 70, 118, 118, 0, 79, 0, + 0, 0, 0, 0, 75, 413, 414, 415, 416, 0, + 417, 418, 0, 0, 0, 0, 0, 72, 75, 0, + 0, 72, 0, 0, 0, 0, 72, 72, 118, 75, + 0, 0, 229, 0, 0, 0, 0, 0, 118, 0, + 229, 0, 0, 75, 75, 75, 75, 75, 0, 0, + 0, 0, 81, 0, 419, 0, 72, 0, 0, 0, + 72, 67, 0, 0, 0, 0, 72, 427, 0, 0, + 0, 420, 72, 72, 421, 0, 328, 0, 0, 0, + 68, 0, 75, 0, 0, 0, 230, 223, 0, 0, + 0, 300, 301, 428, 230, 0, 0, 0, 0, 0, + 0, 0, 75, 0, 75, 72, 224, 0, 223, 0, + 0, 429, 430, 431, 432, 72, 433, 434, 0, 67, + 521, 0, 0, 0, 0, 0, 0, 224, 91, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 0, + 0, 0, 0, 0, 300, 301, 522, 0, 83, 0, + 0, 0, 0, 75, 234, 0, 0, 75, 0, 83, + 435, 0, 75, 75, 523, 524, 525, 526, 0, 527, + 528, 0, 0, 0, 0, 269, 0, 436, 0, 0, + 437, 0, 328, 0, 0, 0, 91, 0, 0, 0, + 0, 0, 75, 67, 0, 0, 75, 0, 0, 0, + 67, 0, 75, 0, 0, 0, 0, 0, 75, 75, + 0, 0, 68, 529, 0, 0, 0, 113, 0, 68, + 0, 92, 0, 0, 0, 0, 0, 0, 113, 83, + 530, 0, 77, 531, 223, 328, 0, 0, 0, 0, + 102, 75, 0, 0, 0, 0, 0, 235, 0, 0, + 0, 75, 0, 224, 0, 0, 0, 0, 0, 0, + 91, 0, 0, 231, 77, 0, 0, 91, 235, 0, + 0, 231, 102, 0, 0, 0, 0, 0, 77, 92, + 0, 0, 0, 0, 0, 0, 102, 0, 0, 77, + 0, 0, 0, 0, 0, 0, 0, 102, 113, 0, + 0, 648, 0, 77, 77, 77, 77, 77, 0, 79, + 0, 102, 102, 102, 102, 102, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 241, 0, 0, 0, 0, 0, 0, 0, + 241, 79, 77, 93, 0, 0, 0, 0, 0, 0, + 102, 0, 0, 92, 0, 79, 0, 0, 0, 0, + 92, 386, 77, 81, 77, 0, 79, 0, 0, 236, + 102, 0, 102, 0, 0, 0, 0, 0, 0, 0, + 79, 79, 79, 79, 79, 300, 301, 387, 0, 0, + 270, 0, 0, 103, 235, 81, 0, 0, 0, 0, + 0, 93, 0, 0, 0, 388, 389, 390, 391, 81, + 392, 393, 0, 77, 0, 0, 0, 77, 0, 79, + 81, 102, 77, 77, 0, 102, 0, 0, 0, 0, + 102, 102, 124, 0, 81, 81, 81, 81, 81, 79, + 0, 79, 0, 124, 0, 0, 0, 0, 0, 0, + 0, 103, 77, 0, 394, 0, 77, 0, 0, 0, + 102, 0, 77, 0, 102, 0, 0, 0, 77, 77, + 102, 0, 0, 81, 395, 93, 102, 102, 0, 0, + 0, 0, 93, 0, 96, 0, 0, 0, 0, 0, + 79, 0, 0, 81, 79, 81, 0, 0, 0, 79, + 79, 77, 0, 0, 0, 0, 0, 0, 0, 102, + 237, 77, 0, 124, 0, 0, 270, 0, 0, 102, + 0, 0, 0, 0, 0, 103, 0, 0, 0, 79, + 0, 237, 103, 79, 0, 0, 0, 0, 0, 79, + 83, 0, 96, 0, 81, 79, 79, 243, 81, 0, + 0, 0, 0, 81, 81, 243, 0, 0, 0, 0, + 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 83, 0, 0, 0, 0, 0, 79, 0, + 0, 333, 0, 81, 0, 0, 83, 81, 79, 0, + 0, 0, 0, 81, 0, 0, 0, 83, 0, 81, + 81, 0, 0, 0, 0, 300, 301, 334, 0, 113, + 0, 83, 83, 83, 83, 83, 96, 0, 0, 104, + 0, 0, 0, 96, 0, 335, 336, 337, 338, 0, + 339, 340, 81, 0, 0, 0, 0, 0, 0, 0, + 0, 113, 81, 0, 0, 0, 0, 0, 0, 0, + 83, 0, 0, 0, 0, 113, 0, 237, 0, 0, + 0, 0, 0, 0, 0, 0, 113, 0, 0, 0, + 83, 0, 83, 0, 341, 0, 0, 0, 67, 0, + 113, 113, 113, 113, 113, 0, 0, 0, 0, 67, + 0, 0, 0, 104, 342, 0, 328, 68, 0, 0, + 104, 0, 347, 98, 0, 0, 0, 0, 68, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, + 0, 83, 0, 0, 0, 83, 300, 301, 348, 238, + 83, 83, 0, 0, 0, 0, 0, 0, 0, 113, + 0, 113, 411, 0, 0, 91, 349, 350, 351, 352, + 271, 353, 354, 0, 0, 0, 91, 0, 360, 67, + 83, 98, 0, 0, 83, 0, 300, 301, 412, 0, + 83, 0, 0, 0, 0, 0, 83, 83, 68, 0, + 0, 0, 300, 301, 361, 0, 413, 414, 415, 416, + 113, 417, 418, 223, 113, 355, 0, 0, 0, 113, + 113, 223, 362, 363, 364, 365, 0, 366, 367, 83, + 0, 0, 224, 0, 0, 356, 0, 328, 0, 83, + 224, 0, 0, 0, 124, 112, 91, 0, 0, 113, + 0, 0, 0, 113, 0, 98, 0, 0, 92, 113, + 0, 0, 98, 0, 0, 113, 113, 0, 0, 92, + 0, 368, 420, 0, 0, 421, 124, 328, 0, 0, + 1034, 0, 0, 0, 0, 373, 0, 0, 269, 0, + 124, 369, 0, 328, 0, 0, 650, 0, 113, 100, + 0, 124, 0, 112, 0, 0, 0, 0, 113, 300, + 301, 374, 0, 0, 0, 124, 124, 124, 124, 124, + 0, 0, 0, 0, 0, 239, 0, 0, 0, 375, + 376, 377, 378, 0, 379, 380, 0, 0, 0, 92, + 0, 0, 0, 507, 0, 0, 239, 0, 0, 0, + 0, 0, 0, 0, 124, 0, 0, 100, 398, 0, + 0, 0, 0, 0, 0, 0, 0, 300, 301, 508, + 535, 0, 0, 235, 124, 0, 124, 112, 381, 0, + 93, 235, 300, 301, 112, 0, 0, 509, 510, 511, + 512, 93, 513, 514, 300, 301, 536, 0, 382, 472, + 328, 0, 399, 400, 401, 402, 0, 403, 404, 0, + 0, 0, 0, 0, 537, 538, 539, 540, 0, 541, + 542, 0, 0, 300, 301, 124, 0, 0, 0, 124, + 103, 100, 0, 0, 124, 124, 515, 0, 100, 0, + 0, 103, 0, 473, 474, 475, 476, 0, 477, 478, + 0, 405, 0, 0, 0, 0, 516, 0, 328, 0, + 0, 93, 0, 543, 124, 0, 0, 0, 124, 0, + 0, 406, 239, 328, 124, 0, 0, 0, 0, 0, + 124, 124, 0, 544, 0, 328, 0, 0, 0, 0, + 67, 0, 479, 554, 0, 270, 0, 0, 0, 0, + 0, 0, 0, 270, 0, 0, 0, 0, 0, 68, + 0, 103, 480, 124, 328, 0, 0, 300, 301, 555, + 0, 96, 67, 124, 0, 566, 0, 0, 0, 0, + 0, 0, 96, 0, 0, 0, 67, 556, 557, 558, + 559, 68, 560, 561, 0, 0, 0, 67, 0, 300, + 301, 567, 0, 0, 0, 68, 0, 91, 0, 0, + 0, 67, 67, 67, 67, 67, 68, 0, 0, 568, + 569, 570, 571, 0, 572, 573, 0, 0, 0, 0, + 68, 68, 68, 68, 68, 0, 562, 0, 0, 91, + 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, + 67, 0, 96, 91, 0, 0, 563, 0, 328, 104, + 0, 0, 0, 0, 91, 0, 0, 0, 574, 68, + 67, 0, 67, 0, 0, 0, 0, 0, 91, 91, + 91, 91, 91, 0, 0, 0, 237, 0, 575, 68, + 328, 68, 0, 0, 237, 0, 0, 0, 0, 0, + 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 91, 0, 0, + 0, 67, 0, 0, 0, 67, 0, 0, 0, 104, + 67, 67, 92, 0, 0, 0, 0, 91, 0, 91, + 68, 0, 0, 0, 68, 0, 92, 0, 0, 68, + 68, 0, 0, 0, 0, 0, 0, 92, 0, 0, + 67, 0, 0, 0, 67, 0, 0, 0, 0, 0, + 67, 92, 92, 92, 92, 92, 67, 67, 0, 68, + 0, 0, 0, 68, 0, 0, 0, 0, 91, 68, + 98, 0, 91, 0, 0, 68, 68, 91, 91, 0, + 0, 98, 0, 0, 0, 0, 0, 0, 0, 67, + 92, 0, 0, 0, 0, 495, 0, 0, 0, 67, + 0, 0, 93, 0, 0, 0, 0, 91, 68, 0, + 92, 91, 92, 0, 0, 0, 0, 91, 68, 300, + 301, 496, 0, 91, 91, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 93, 0, 0, 0, 0, 497, + 498, 499, 500, 0, 501, 502, 0, 0, 93, 0, + 0, 98, 103, 0, 0, 0, 91, 0, 0, 93, + 0, 92, 0, 0, 0, 92, 91, 0, 0, 0, + 92, 92, 0, 93, 93, 93, 93, 93, 0, 0, + 0, 0, 0, 0, 103, 650, 0, 0, 503, 0, + 0, 0, 112, 271, 0, 589, 0, 0, 103, 0, + 92, 0, 0, 112, 92, 0, 0, 0, 504, 103, + 92, 0, 93, 0, 0, 0, 92, 92, 0, 300, + 301, 590, 0, 103, 103, 103, 103, 103, 0, 0, + 0, 0, 93, 0, 93, 0, 0, 0, 0, 591, + 592, 593, 594, 96, 595, 596, 100, 0, 0, 92, + 0, 0, 0, 0, 0, 0, 0, 100, 0, 92, + 0, 0, 103, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 112, 0, 96, 0, 0, 0, 0, + 0, 0, 103, 93, 103, 0, 0, 93, 597, 96, + 0, 0, 93, 93, 0, 0, 0, 146, 0, 147, + 96, 0, 0, 0, 0, 0, 0, 0, 598, 0, + 328, 0, 0, 0, 96, 96, 96, 96, 96, 0, + 104, 0, 93, 0, 0, 0, 93, 100, 0, 0, + 0, 0, 93, 103, 0, 0, 0, 103, 93, 93, + 0, 0, 103, 103, 0, 0, 0, 0, 0, 0, + 0, 0, 104, 96, 0, 294, 0, 0, 0, 427, + 0, 239, 0, 0, 0, 0, 104, 0, 0, 239, + 0, 93, 103, 96, 0, 96, 103, 104, 0, 0, + 0, 93, 103, 300, 301, 428, 0, 0, 103, 103, + 0, 104, 104, 104, 104, 104, 0, 0, 0, 0, + 0, 0, 0, 429, 430, 431, 432, 0, 433, 434, + 0, 483, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 103, 0, 0, 96, 0, 0, 0, 96, 0, + 104, 103, 0, 96, 96, 300, 301, 0, 0, 0, + 0, 0, 0, 0, 0, 637, 0, 0, 0, 0, + 104, 0, 104, 0, 0, 484, 485, 486, 487, 0, + 488, 489, 98, 96, 0, 0, 0, 96, 0, 436, + 0, 0, 437, 96, 328, 0, 0, 0, 0, 96, + 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 98, 0, 0, 0, 0, 0, + 0, 104, 0, 0, 490, 104, 682, 0, 98, 0, + 104, 104, 96, 0, 688, 0, 0, 0, 0, 98, + 0, 0, 96, 0, 491, 0, 328, 0, 0, 0, + 0, 0, 0, 98, 98, 98, 98, 98, 0, 0, + 104, 0, 0, 700, 104, 0, 0, 0, 0, 0, + 104, 318, 706, 0, 0, 728, 104, 104, 0, 0, + 0, 333, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 744, 98, 0, 0, 300, 301, 319, 347, 0, + 747, 0, 0, 0, 112, 300, 301, 334, 0, 104, + 0, 0, 98, 0, 98, 320, 321, 322, 323, 104, + 324, 325, 300, 301, 348, 335, 336, 337, 338, 0, + 339, 340, 0, 0, 0, 0, 112, 0, 0, 0, + 0, 0, 349, 350, 351, 352, 0, 353, 354, 0, + 112, 0, 0, 0, 0, 0, 0, 0, 100, 0, + 0, 112, 0, 98, 0, 0, 0, 98, 0, 0, + 0, 0, 98, 98, 0, 112, 112, 112, 112, 112, + 0, 0, 0, 0, 327, 0, 328, 0, 0, 0, + 100, 0, 0, 0, 342, 0, 328, 0, 373, 0, + 0, 0, 98, 0, 100, 0, 98, 0, 0, 0, + 0, 356, 98, 328, 112, 100, 0, 0, 98, 98, + 0, 0, 300, 301, 374, 0, 0, 0, 0, 100, + 100, 100, 100, 100, 112, 0, 112, 0, 0, 0, + 0, 0, 375, 376, 377, 378, 0, 379, 380, 210, + 212, 98, 0, 0, 0, 0, 0, 0, 0, 0, + 222, 98, 0, 0, 0, 0, 0, 0, 100, 251, + 0, 0, 0, 0, 256, 0, 257, 259, 0, 0, + 0, 266, 0, 0, 0, 112, 0, 0, 100, 112, + 100, 281, 0, 0, 112, 112, 0, 0, 0, 0, + 0, 313, 0, 313, 0, 313, 313, 0, 313, 0, + 313, 382, 313, 328, 313, 0, 313, 0, 313, 0, + 313, 445, 313, 0, 112, 0, 313, 0, 112, 313, + 554, 313, 0, 313, 112, 0, 0, 0, 0, 100, + 112, 112, 0, 100, 0, 0, 0, 0, 100, 100, + 0, 313, 0, 0, 300, 301, 555, 313, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 589, 0, 0, + 0, 0, 0, 112, 556, 557, 558, 559, 100, 560, + 561, 0, 100, 112, 0, 638, 638, 0, 100, 0, + 0, 300, 301, 590, 100, 100, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 646, 0, 0, + 0, 591, 592, 593, 594, 0, 595, 596, 0, 935, + 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 100, 0, 0, + 0, 0, 0, 563, 951, 328, 638, 0, 0, 0, + 0, 956, 689, 658, 962, 0, 963, 660, 661, 662, + 0, 0, 0, 0, 0, 0, 0, 0, 967, 0, + 0, 0, 971, 0, 0, 663, 664, 696, 689, 638, + 598, 0, 328, 0, 665, 0, 0, 0, 0, 0, + 989, 990, 991, 0, 0, 994, 732, 736, 0, 0, + 0, 0, 0, 0, 0, 1002, 0, 0, 0, 0, + 0, 0, 1007, 1008, 0, 0, 1013, 0, 1016, 0, + 0, 0, 0, 0, 0, 0, 0, 748, 749, 666, + 667, 668, 669, 670, 671, 672, 673, 674, 0, 0, + 0, 281, 0, 0, 281, 1027, 0, 0, 0, 0, + 0, 0, 310, 0, 0, 329, 0, 343, 1041, 281, + 357, 0, 370, 0, 383, 0, 396, 0, 0, 0, + 423, 0, 439, 0, 281, 0, 481, 493, 505, 0, + 0, 518, 0, 532, 0, 546, 0, 0, 281, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 564, 0, + 0, 281, 0, 577, 0, 0, 0, 0, 0, 600, + 0, 0, 0, 0, 281, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 281, 0, 0, + 0, 0, 332, 0, 345, 346, 0, 359, 281, 372, + 0, 385, 0, 397, 0, 409, 0, 425, 0, 441, + 465, 471, 0, 281, 0, 506, 0, 0, 520, 0, + 534, 310, 548, 329, 343, 357, 370, 383, 396, 281, + 423, 439, 481, 493, 505, 518, 532, 546, 5, 0, + 579, 0, 0, 0, 159, 160, 602, 0, 564, 0, + 0, 0, 577, 0, 600, 162, 163, 0, 164, 0, + 0, 0, 166, 0, 0, 0, 0, 0, 0, 0, + 0, 5, 281, 0, 167, 0, 168, 159, 160, 29, + 30, 0, 0, 281, 32, 170, 0, 0, 162, 163, + 0, 164, 0, 171, 0, 166, 281, 0, 0, 0, + 0, 0, 40, 41, 0, 0, 0, 167, 281, 168, + 0, 0, 29, 30, 43, 0, 0, 32, 170, 0, + 1064, 0, 0, 281, 0, 172, 171, 0, 0, 50, + 0, 0, 0, 0, 0, 0, 281, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 54, 43, 0, 0, + 0, 0, 57, 0, 0, 281, 0, 0, 172, 0, + 0, 0, 50, 5, 0, 7, 8, 281, 9, 159, + 160, 12, 161, 0, 1091, 0, 0, 14, 15, 16, + 162, 163, 0, 164, 1096, 0, 165, 166, 0, 0, + 281, 22, 23, 0, 1109, 0, 0, 0, 0, 167, + 0, 168, 0, 0, 29, 30, 0, 0, 169, 32, + 170, 0, 0, 0, 0, 0, 0, 0, 171, 0, + 0, 1123, 0, 1125, 0, 38, 0, 40, 41, 0, + 0, 0, 0, 1134, 0, 0, 1137, 1139, 1140, 43, + 0, 0, 1143, 0, 0, 1146, 0, 0, 0, 0, + 172, 47, 0, 0, 50, 0, 0, 53, 0, 0, + 0, 0, 0, 0, 173, 174, 0, 0, 0, 0, + 0, 54, 734, 995, 1166, 735, 0, 57, 58, 0, + 59, 0, 0, 5, 0, 0, 0, 0, 0, 159, + 160, 0, 0, 0, 736, 0, 0, 1018, 0, 0, + 162, 163, 1022, 164, 0, 0, 0, 166, 0, 0, + 1193, 1023, 0, 0, 0, 0, 0, 1198, 0, 167, + 1201, 168, 0, 0, 29, 30, 1032, 736, 0, 32, + 170, 0, 0, 0, 266, 0, 0, 0, 171, 1210, + 1211, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1222, 0, 0, 0, 0, 0, 0, 0, 43, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 172, 0, 0, 0, 50, 0, 0, 0, 1241, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1254, 0, 55, 56, 0, 0, 0, 0, 0, + 1259, 1260, 0, 0, 1263, 0, 0, 1265, 1266, 0, + -3, 285, 0, -38, -38, 5, 6, 7, 8, 0, + 9, 10, 11, 12, 13, 0, 0, 0, 0, 14, + 15, 16, 17, 18, 19, 20, 0, 0, 0, 21, + 0, 0, 0, 22, 23, 1282, 24, 0, 0, 0, + 0, 25, 26, 27, 28, 0, 29, 30, 0, 0, + 31, 32, 33, 0, 0, 0, 0, 0, 0, 0, + 34, 35, 36, 0, 0, 37, 0, 38, 39, 40, + 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 42, 43, 44, 45, 0, 566, 0, 0, 0, 0, + 0, 0, 46, 47, 48, 49, 50, 51, 52, 53, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 300, + 301, 567, 0, 54, 0, 55, 56, 0, 0, 57, + 58, 0, 59, 1061, 1062, 0, 0, 0, 0, 568, + 569, 570, 571, 0, 572, 573, 0, 0, 0, 0, + 0, 0, 0, 638, 0, 0, 0, -302, -302, -302, + -302, -302, -302, -302, -302, -302, 0, 0, 0, 0, + -302, -302, -302, -302, -302, -302, -302, -302, 0, 0, + 0, 0, 194, 577, 0, 0, 660, 661, 662, 0, + 638, 217, 218, 1092, 0, 0, 0, 1094, 1095, 0, + 0, -760, -760, -760, 663, 664, 0, 0, 575, 1102, + 328, 1018, 0, 665, 0, 0, 1110, 1102, 0, 0, + 0, 276, 1116, 0, 0, 0, 0, 0, 0, 736, + 0, 0, 5, 0, 7, 8, 0, 9, 159, 160, + 12, 161, 0, 0, 0, 0, 14, 15, 16, 162, + 163, 0, 164, 0, 0, 0, 166, 0, 666, 667, + 668, 669, 670, 671, 672, 673, 674, 0, 167, 0, + 168, 0, 0, 29, 30, 0, 0, 169, 32, 170, + 0, 0, 0, 0, 0, 0, 0, 171, 0, 0, + 0, 0, 1168, 1169, 38, 0, 40, 41, 0, 0, + 0, 0, 0, 0, 0, 0, 629, 0, 43, 0, + 0, 521, 0, 0, 0, 0, 1189, 636, 1189, 172, + 47, 0, 0, 50, 0, 0, 53, 0, 1189, 0, + 1189, 0, 0, 0, 643, 300, 301, 522, 0, 0, + 54, 0, 644, 645, 0, 0, 57, 58, 0, 59, + 0, 0, 0, 0, 1208, 523, 524, 525, 526, 1212, + 527, 528, 0, 0, 1218, 0, 0, 1110, 0, 0, + 0, 0, 0, -283, -283, -283, -283, -283, -283, -283, + -283, -283, 0, 0, 0, 0, -283, -283, -283, -283, + -283, -283, -283, -283, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1255, + 0, 0, 1258, 0, 0, 0, 0, 0, 701, 1262, + 0, 530, 0, 0, 531, 0, 328, 0, 0, 0, + 0, 0, 0, 0, 194, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 743, 0, 0, 0, 0, 1278, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 751, 0, + 0, 752, 753, 754, 755, 756, 757, 758, 0, 0, + 760, 0, 0, 0, 0, 1297, 1298, 762, 0, 763, + 764, 765, 766, 767, 768, 769, 0, 771, 0, 0, + 0, 0, 774, 0, 775, 776, 777, 778, 779, 780, + 781, 0, 0, 0, 0, 0, 783, 0, 784, 785, + 786, 787, 788, 789, 790, 0, 0, 0, 0, 792, + 0, 793, 794, 795, 796, 797, 798, 799, 0, 0, + 0, 0, 801, 0, 802, 803, 804, 805, 806, 807, + 808, 0, 0, 0, 0, 810, 0, 811, 812, 813, + 814, 815, 816, 817, 0, 0, 0, 819, 820, 821, + 822, 823, 824, 825, 826, 0, 0, 0, 0, 0, + 828, 0, 829, 830, 831, 832, 833, 834, 835, 0, + 0, 0, 0, 0, 0, 0, 838, 0, 839, 840, + 841, 842, 843, 844, 845, 0, 0, 707, 708, 709, + 710, 711, 712, 713, 714, 715, 0, 0, 0, 0, + 716, 717, 718, 719, 720, 721, 722, 723, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 848, 849, 850, 851, 852, 853, 854, 855, 0, + 0, 0, 857, 858, 859, 860, 861, 862, 863, 864, + 957, 0, 0, 0, 866, 0, 867, 868, 869, 870, + 871, 872, 873, 0, 0, 0, 875, 0, 876, 877, + 878, 879, 880, 881, 882, 0, 0, 0, 0, 0, + 884, 0, 885, 886, 887, 888, 889, 890, 891, 0, + 0, 0, 0, 0, 894, 0, 895, 896, 897, 898, + 899, 900, 901, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 903, 0, 904, 905, 906, 907, 908, + 909, 910, 398, 0, 0, 912, 0, 913, 914, 915, + 916, 917, 918, 919, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 300, 301, 925, 0, + 926, 927, 928, 929, 930, 931, 932, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 399, 400, 401, 402, + 0, 403, 404, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -300, -300, -300, -300, -300, -300, + -300, -300, -300, 0, 0, 0, 0, -300, -300, -300, + -300, -300, -300, -300, -300, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 972, 973, 974, + 975, 976, 977, 978, 979, 980, 981, 982, 983, 984, + 985, 986, 987, 988, 330, 406, 344, 328, 0, 358, + 0, 371, 0, 384, 0, 0, 0, 408, 0, 0, + 0, 440, 0, 1003, 0, 482, 494, 0, 0, 398, + 519, 194, 533, 0, 547, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 565, 0, 0, + 0, 0, 578, 300, 301, 0, 0, 0, 601, 0, + 0, 0, 0, 0, 194, 0, 0, 0, 0, 0, + 1038, 0, 0, 399, 400, 401, 402, 0, 403, 404, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -300, -300, -300, -300, -300, -300, -300, -300, -300, + 0, 1052, 0, 0, -300, -300, -300, -300, -300, -300, + -300, -300, 330, 344, 358, 371, 384, 0, 408, 0, + 440, 482, 494, 0, 519, 533, 547, 0, 0, 0, + 0, 0, 0, 0, 0, -643, -643, 565, 0, 0, + 0, 578, 406, 601, 328, 0, 0, 0, 0, 408, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 330, + 344, 358, 371, 384, 0, 408, 0, 440, 482, 494, + 0, 519, 533, 547, 0, 565, 578, 601, 707, 708, + 709, 710, 711, 712, 713, 714, 715, 0, 0, 0, + 0, 716, 717, 718, 719, 720, 721, 722, 723, 0, + 0, 0, 440, 482, 0, 533, 578, 0, 4, 0, + -38, -38, 5, 6, 7, 8, 0, 9, 10, 11, + 12, 13, 0, 0, 0, 0, 14, 15, 16, 17, + 18, 19, 20, 0, 0, 0, 21, 0, 0, 0, + 22, 23, 0, 24, 0, 0, 0, 0, 25, 26, + 27, 28, 0, 29, 30, 0, 0, 31, 32, 33, + 0, 0, 0, 0, 0, 1058, 0, 34, 35, 36, + 0, 0, 37, 1063, 38, 39, 40, 41, 0, 0, + 0, 1069, 0, 0, 0, 0, 1074, 42, 43, 44, + 45, 0, 0, 0, 0, 0, 0, 0, 0, 46, + 47, 48, 49, 50, 51, 52, 53, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 54, 0, 55, 56, 0, 0, 57, 58, 0, 59, + 707, 708, 709, 710, 711, 712, 713, 714, 715, 0, + 0, 0, 0, 716, 717, 718, 719, 720, 721, 722, + 723, 0, 0, 0, 0, 5, 0, 1114, 0, 0, + 1114, 159, 160, 0, 0, 0, 194, 0, 0, 0, + 0, 0, 162, 163, 0, 164, 0, 0, 1214, 166, + 0, 0, 1129, 0, 0, 0, 0, 0, 1135, 0, + 384, 167, 0, 168, 1142, 0, 29, 30, 0, 0, + 1147, 32, 170, 0, 0, 0, 0, 1149, 0, 0, + 171, 0, 0, 0, 0, 0, 0, 1157, 0, -114, + -114, 5, 6, 7, 8, 0, 9, 159, 611, 12, + 13, 1100, 0, 0, 0, 14, 15, 16, 17, 18, + 612, 613, 172, 0, 0, 21, 50, 0, 1182, 22, + 23, 0, 24, 0, 0, 0, 0, 167, 26, 27, + 28, 0, 29, 30, 1101, 0, 169, 32, 170, 0, + 0, 0, 0, 0, 0, 0, 34, 35, 36, 1205, + 0, 37, 0, 38, 39, 40, 41, 0, 1207, 0, + 0, 0, 0, 0, 0, 0, 42, 43, 44, 45, + 0, 0, 0, 0, 0, 0, 0, 1224, 172, 47, + 48, 49, 50, 51, 52, 53, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, + 0, 55, 56, 1242, 0, 57, 58, 0, 59, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 5, 6, 7, 8, 0, 9, 159, 611, 12, 13, + 0, 0, -638, -638, 14, 15, 16, 17, 18, 612, + 613, 0, 0, 1269, 21, 0, 0, 0, 22, 23, + 0, 24, 482, 0, 533, 0, 167, 26, 27, 28, + 0, 29, 30, 0, 0, 169, 32, 170, 0, 0, + 0, 0, 0, 0, 0, 34, 35, 36, 0, 0, + 37, 0, 38, 39, 40, 41, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 42, 43, 44, 45, 0, + 0, 0, 0, 0, 0, 0, 0, 172, 47, 48, + 49, 50, 51, 52, 53, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, + 55, 56, 0, 0, 57, 58, 0, 59, 5, 6, + 7, 8, 578, 9, 159, 611, 12, 13, 0, 0, + -638, 0, 14, 15, 16, 17, 18, 612, 613, 0, + 0, 0, 21, 0, 0, 0, 22, 23, 0, 24, + 0, 0, 0, -638, 167, 26, 27, 28, 0, 29, + 30, 0, 0, 169, 32, 170, 0, 0, 0, 0, + 0, 0, 0, 34, 35, 36, 0, 0, 37, 0, + 38, 39, 40, 41, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 42, 43, 44, 45, 0, 0, 0, + 0, 0, 0, 0, 0, 172, 47, 48, 49, 50, + 51, 52, 53, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 54, 0, 55, 56, + 0, 0, 57, 58, 0, 59, 5, 6, 7, 8, + 0, 9, 159, 611, 12, 13, 0, 0, -638, 0, + 14, 15, 16, 17, 18, 612, 613, 0, 0, 0, + 21, 0, 0, 0, 22, 23, 0, 24, 0, 0, + 0, 0, 167, 26, 27, 28, -638, 29, 30, 0, + 0, 169, 32, 170, 0, 0, 0, 0, 0, 0, + 0, 34, 35, 36, 0, 0, 37, 0, 38, 39, + 40, 41, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 42, 43, 44, 45, 0, 0, 0, 0, 0, + 0, 0, 0, 172, 47, 48, 49, 50, 51, 52, + 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 54, 0, 55, 56, 0, 0, + 57, 58, 0, 59, 0, 0, 0, 5, 6, 7, + 8, 0, 9, 159, 611, 12, 13, 0, 0, 1185, + 0, 14, 15, 16, 17, 18, 612, 613, 0, 0, + 0, 21, 0, 0, 0, 22, 23, 0, 24, 0, + 0, 0, 0, 167, 26, 27, 28, 0, 29, 30, + 0, 0, 169, 32, 170, 0, 0, 0, 0, 0, + 0, 0, 34, 35, 36, 0, 0, 37, 482, 38, + 39, 40, 41, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 42, 43, 44, 45, 0, 0, 0, 0, + 0, 0, 0, 0, 172, 47, 48, 49, 50, 51, + 52, 53, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 54, 0, 55, 56, 0, + 0, 57, 58, 0, 59, 5, 6, 7, 8, 0, + 9, 159, 611, 12, 13, 0, 0, -638, 0, 14, + 15, 16, 17, 18, 612, 613, 0, 0, 0, 21, + 0, 0, 0, 22, 23, 0, 24, 0, 0, 0, + 0, 167, 26, 27, 28, 0, 29, 30, 0, 0, + 169, 32, 170, 0, 0, 0, 0, 0, 0, 0, + 34, 35, 36, 0, 0, 37, 0, 38, 39, 40, + 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 42, 43, 44, 45, 0, 0, 0, 0, 0, 0, + 0, 0, 172, 47, 48, 49, 50, 51, 52, 53, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 54, 0, 55, 56, 0, 0, 57, + 58, 0, 59, 5, 6, 7, 8, 0, 9, 159, + 611, 12, 13, 0, 0, 0, 0, 14, 15, 16, + 17, 18, 612, 613, 0, 0, 0, 21, 0, 0, + 0, 22, 23, 0, 24, 0, 0, 0, 0, 167, + 26, 27, 28, 0, 29, 30, 0, 0, 169, 32, + 170, 0, 0, 0, 0, 0, 0, 0, 34, 35, + 36, 0, 0, 37, 0, 38, 39, 40, 41, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 42, 43, + 44, 45, 0, 0, 0, 0, 0, 0, 0, 0, + 172, 47, 48, 49, 50, 51, 52, 53, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 54, 0, 55, 56, 0, 0, 57, 58, 5, + 59, 7, 8, 0, 9, 159, 160, 12, 161, 0, + 0, 0, 0, 14, 15, 16, 162, 163, 0, 164, + 0, 0, 165, 166, 0, 0, 0, 22, 23, 0, + 0, 0, 0, 0, 0, 167, 0, 168, 0, 0, + 29, 30, 0, 0, 169, 32, 170, 0, 0, 0, + 0, 0, 0, 0, 171, 0, 0, 0, 0, 0, + 0, 38, 0, 40, 41, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 43, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 172, 47, 0, 0, + 50, 0, 0, 53, 0, 0, 0, 0, 0, 0, + 173, 174, 0, 0, 0, 658, 659, 54, 175, 660, + 661, 662, 0, 57, 58, 5, 59, 7, 8, 0, + 9, 159, 160, 12, 161, 0, 0, 663, 664, 14, + 15, 16, 162, 163, 0, 164, 665, 0, 165, 166, + 0, 0, 0, 22, 23, 0, 0, 0, 0, 0, + 0, 167, 0, 168, 0, 0, 29, 30, 0, 0, + 169, 32, 170, 0, 0, 0, 0, 0, 0, 0, + 171, 0, 0, 0, 0, 0, 0, 38, 0, 40, + 41, 666, 667, 668, 669, 670, 671, 672, 673, 674, + 0, 43, 0, 0, 55, 56, 0, 0, 0, 0, + 0, 0, 172, 47, 0, 0, 50, 0, 0, 53, + 0, 0, 0, 0, 0, 0, 173, 174, 0, 0, + 0, 658, 659, 54, 734, 660, 661, 662, 0, 57, + 58, 5, 59, 7, 443, 0, 444, 159, 160, 12, + 161, 0, 1244, 663, 664, 14, 15, 16, 162, 163, + 0, 164, 665, 0, 0, 166, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 167, 0, 168, + 0, 0, 29, 30, 0, 0, 0, 32, 170, 0, + 0, 0, 0, 0, 0, 360, 171, 0, 0, 0, + 0, 0, 0, 38, 0, 40, 41, 666, 667, 668, + 669, 670, 671, 672, 673, 674, 0, 43, 0, 300, + 301, 361, 0, 0, 0, 0, 0, 0, 172, 47, + 0, 0, 50, 0, 0, 0, 0, 0, 0, 362, + 363, 364, 365, 0, 366, 367, 0, 0, 0, 54, + 0, 0, 0, 0, 507, 57, 58, -270, -270, -270, + -270, -270, -270, -270, -270, -270, 0, 0, 0, 0, + -270, -270, -270, -270, -270, -270, -270, -270, 300, 301, + 508, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 509, 510, + 511, 512, 0, 513, 514, 0, 0, 0, 369, 0, + 328, 0, 0, 535, 0, 0, -279, -279, -279, -279, + -279, -279, -279, -279, -279, 0, 0, 0, 0, -279, + -279, -279, -279, -279, -279, -279, -279, 300, 301, 536, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 537, 538, 539, + 540, 0, 541, 542, 0, 0, 0, 516, 0, 328, + 0, 0, 566, 0, 0, -286, -286, -286, -286, -286, + -286, -286, -286, -286, 0, 0, 0, 0, -286, -286, + -286, -286, -286, -286, -286, -286, 300, 301, 567, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 568, 569, 570, 571, + 0, 572, 573, 0, 0, 0, 544, 0, 328, 0, + 0, 0, 0, 0, -302, -302, -302, -302, -302, -302, + -302, -302, -302, 0, 0, 0, 0, -302, -302, -302, + -302, -302, -302, -302, -302, 5, 0, 0, 0, 0, + 0, 159, 160, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 162, 163, 0, 164, 0, 0, 0, 166, + 0, 0, 0, 0, 0, 575, 0, 328, 0, 0, + 0, 167, 0, 168, 0, 0, 29, 30, 5, 0, + 0, 32, 170, 0, 159, 160, 0, 0, 0, 0, + 171, 0, 0, 0, 0, 162, 163, 0, 164, 0, + 0, 0, 166, 0, 0, 0, 0, 0, 0, 0, + 0, 43, 0, 0, 167, 0, 168, 0, 0, 29, + 30, 5, 172, 0, 32, 170, 50, 159, 160, 0, + 0, 0, 0, 171, 0, 0, 0, 0, 162, 163, + 0, 164, 0, 0, 1167, 166, 0, 0, 0, 0, + 0, 0, 0, 0, 1100, 0, 0, 167, 0, 168, + 0, 0, 29, 30, 5, 172, 0, 32, 170, 50, + 159, 160, 0, 0, 0, 0, 171, 0, 0, 0, + 0, 162, 163, 0, 164, 0, 0, 1217, 166, 0, + 0, 0, 0, 0, 0, 0, 0, 43, 0, 0, + 167, 0, 168, 0, 0, 29, 30, 5, 172, 0, + 32, 170, 50, 159, 160, 0, 0, 0, 0, 171, + 0, 0, 0, 0, 162, 163, 0, 164, 40, 41, + 1257, 166, 0, 0, 0, 0, 0, 0, 0, 0, + 43, 0, 0, 167, 0, 168, 0, 0, 29, 30, + 5, 172, 0, 32, 170, 50, 159, 160, 0, 0, + 0, 0, 171, 0, 0, 0, 0, 162, 163, 0, + 164, 0, 54, 0, 166, 0, 0, 0, 0, 0, + 0, 0, 0, 43, 0, 0, 167, 0, 168, 0, + 0, 29, 30, 5, 172, 0, 32, 170, 50, 159, + 160, 0, 1186, 0, 0, 171, 0, 0, 0, 0, + 162, 163, 0, 164, 0, 0, 0, 166, 0, 0, + 0, 0, 0, 0, 0, 0, 43, 0, 0, 167, + 0, 168, 0, 0, 29, 30, 0, 172, 0, 32, + 170, 50, 0, 0, 0, 1261, 0, 0, 171, 0, + 658, 659, 0, 0, 660, 661, 662, 40, 41, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, + 0, 0, 663, 664, 0, 0, 0, 0, 0, 0, + 172, 665, 0, 0, 50, 0, 0, 707, 708, 709, + 710, 711, 712, 713, 714, 715, 0, 0, 0, 0, + 716, 717, 718, 719, 720, 721, 722, 723, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 666, 667, 668, 669, + 670, 671, 672, 673, 674, 1249, 707, 708, 709, 710, + 711, 712, 713, 714, 715, 0, 0, 0, 0, 716, + 717, 718, 719, 720, 721, 722, 723, 707, 708, 709, + 710, 711, 712, 713, 714, 715, 0, 0, 0, 0, + 716, 717, 718, 719, 720, 721, 722, 723, 0, 0, + 0, 0, 0, 0, 1276, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1286 +}; + +static const yytype_int16 yycheck[] = +{ + 2, 134, 705, 13, 153, 154, 175, 735, 141, 9, + 608, 609, 627, 628, 1019, 2, 9, 9, 35, 1024, + 0, 57, 12, 13, 3, 4, 28, 35, 51, 3, + 4, 35, 35, 17, 102, 37, 17, 959, 35, 700, + 33, 34, 35, 35, 35, 836, 35, 49, 2, 0, + 2, 117, 1249, 35, 122, 846, 40, 59, 60, 125, + 53, 54, 55, 56, 45, 58, 59, 69, 122, 71, + 124, 73, 74, 60, 76, 997, 78, 2, 80, 1276, + 82, 122, 84, 124, 86, 35, 88, 89, 90, 1286, + 35, 35, 94, 119, 117, 97, 2, 99, 122, 101, + 124, 892, 102, 28, 35, 122, 60, 124, 60, 102, + 102, 119, 37, 35, 122, 35, 124, 119, 122, 35, + 124, 124, 28, 125, 49, 122, 119, 119, 119, 122, + 10, 124, 134, 122, 59, 60, 115, 116, 19, 141, + 2, 115, 116, 49, 69, 66, 71, 125, 73, 74, + 117, 76, 35, 78, 60, 80, 123, 82, 17, 84, + 17, 86, 35, 88, 89, 90, 28, 35, 117, 94, + 1175, 161, 97, 175, 99, 119, 101, 122, 122, 124, + 124, 38, 39, 89, 115, 116, 117, 49, 119, 35, + 117, 122, 54, 124, 119, 115, 116, 117, 60, 119, + 125, 118, 122, 119, 124, 51, 122, 69, 124, 134, + 35, 35, 214, 1126, 36, 117, 141, 2, 122, 35, + 50, 123, 84, 1136, 86, 1138, 88, 89, 134, 115, + 116, 35, 115, 116, 117, 141, 3, 4, 122, 122, + 35, 124, 9, 28, 280, 247, 119, 35, 117, 122, + 175, 124, 121, 66, 122, 265, 124, 119, 35, 115, + 116, 117, 35, 85, 49, 87, 33, 34, 35, 175, + 92, 117, 134, 119, 96, 60, 115, 116, 100, 141, + 102, 103, 104, 105, 115, 116, 53, 54, 55, 56, + 112, 58, 59, 114, 115, 116, 118, 122, 122, 124, + 124, 19, 124, 106, 89, 119, 122, 309, 124, 1037, + 312, 17, 119, 175, 9, 35, 1019, 51, 122, 638, + 124, 57, 144, 145, 117, 327, 117, 122, 121, 124, + 121, 37, 38, 948, 122, 102, 124, 118, 33, 34, + 342, 939, 115, 116, 117, 122, 119, 124, 35, 134, + 3, 4, 119, 2, 356, 122, 141, 124, 53, 54, + 55, 56, 117, 58, 59, 684, 121, 369, 117, 118, + 689, 117, 108, 109, 110, 117, 118, 696, 35, 28, + 382, 115, 116, 117, 309, 115, 116, 312, 117, 119, + 175, 213, 35, 395, 115, 116, 1057, 57, 119, 221, + 49, 35, 327, 265, 406, 651, 652, 1068, 654, 655, + 656, 60, 35, 732, 9, 117, 118, 342, 35, 421, + 35, 1082, 1083, 1084, 1085, 1086, 35, 122, 19, 124, + 35, 356, 678, 17, 35, 437, 117, 118, 33, 34, + 89, 115, 116, 117, 369, 17, 106, 107, 108, 109, + 110, 115, 116, 37, 38, 39, 125, 382, 53, 54, + 55, 56, 117, 58, 59, 37, 38, 39, 115, 116, + 395, 15, 16, 17, 18, 9, 115, 116, 480, 17, + 1141, 406, 1143, 115, 116, 134, 619, 117, 118, 491, + 17, 18, 141, 115, 116, 117, 421, 630, 119, 33, + 34, 35, 504, 15, 16, 17, 18, 102, 115, 116, + 117, 119, 437, 9, 516, 122, 9, 124, 124, 53, + 54, 55, 56, 117, 58, 59, 175, 122, 57, 531, + 9, 1192, 115, 116, 117, 1196, 19, 33, 34, 35, + 1201, 1202, 544, 3, 4, 581, 117, 583, 9, 585, + 119, 587, 3, 4, 119, 480, 124, 53, 54, 55, + 56, 563, 58, 59, 46, 734, 491, 118, 102, 117, + 1231, 37, 38, 575, 1235, 117, 118, 117, 118, 504, + 1241, 117, 118, 63, 64, 119, 1247, 1248, 122, 117, + 124, 516, 117, 118, 5, 118, 598, 117, 118, 96, + 11, 12, 117, 118, 117, 118, 531, 117, 118, 9, + 81, 22, 23, 2, 25, 118, 117, 619, 29, 544, + 118, 2, 17, 118, 118, 60, 122, 118, 630, 60, + 41, 89, 43, 33, 34, 46, 47, 141, 563, 28, + 51, 52, 89, 679, 309, 89, 89, 312, 89, 60, + 575, 89, 89, 53, 54, 55, 56, 89, 58, 59, + 49, 89, 327, 89, 89, 244, 1031, 13, 13, 12, + 81, 60, 13, 598, 89, 12, 12, 342, 60, 60, + 89, 92, 154, 247, 998, 96, 684, 60, 60, 246, + 2, 356, 702, 1025, 619, 1274, 1172, 1043, 700, 609, + 89, 627, 1290, 742, 369, 630, 954, 954, 702, 120, + -1, -1, -1, 619, 750, -1, 28, 382, -1, -1, + -1, -1, 122, -1, 630, 735, -1, -1, -1, -1, + 395, -1, 734, -1, -1, -1, -1, 49, -1, -1, + 742, 406, -1, -1, 2, 134, -1, -1, 60, -1, + -1, -1, 141, 134, -1, -1, 421, 619, -1, -1, + 141, -1, -1, -1, -1, -1, -1, -1, 630, -1, + 28, -1, 437, 1092, -1, 700, 1095, 89, -1, -1, + -1, 603, -1, 1102, -1, -1, 175, 1106, -1, -1, + -1, 49, -1, -1, 700, -1, -1, 1116, -1, -1, + 836, -1, 60, -1, -1, -1, -1, -1, -1, 734, + 846, -1, 961, -1, -1, 480, -1, 742, -1, -1, + -1, -1, 134, -1, -1, -1, 491, -1, 734, 141, + -1, 89, -1, -1, 619, -1, 742, -1, 700, 504, + 702, -1, -1, -1, -1, 630, -1, -1, -1, 1168, + 1169, 516, 1171, -1, -1, -1, 892, -1, 1177, -1, + -1, -1, 9, 175, -1, -1, 531, -1, -1, -1, + 1189, -1, 734, 735, -1, -1, 134, -1, 1011, 544, + 742, -1, -1, 141, -1, -1, 33, 34, 35, -1, + -1, -1, -1, 1212, -1, -1, -1, -1, 563, 1218, + -1, -1, -1, -1, -1, -1, 53, 54, 55, 56, + 575, 58, 59, -1, -1, 700, 9, 175, -1, -1, + -1, 2, -1, -1, -1, -1, -1, -1, 964, -1, + -1, -1, 13, 598, -1, -1, 1255, -1, -1, 1258, + 33, 34, 35, 1262, -1, -1, -1, 28, -1, 734, + -1, -1, -1, -1, -1, 102, -1, 742, -1, 1278, + 53, 54, 55, 56, -1, 58, 59, -1, 49, -1, + 619, -1, 119, -1, -1, 122, -1, 124, -1, 60, + -1, 630, -1, -1, 71, -1, 9, -1, 1121, -1, + 2, -1, -1, -1, -1, -1, 998, 84, 85, 86, + 87, 88, 89, 90, 91, -1, -1, -1, 1044, 1011, + 33, 34, 35, -1, -1, -1, 28, -1, 9, -1, + -1, -1, -1, -1, -1, 9, -1, 1037, -1, 122, + 53, 54, 55, 56, -1, 58, 59, 49, -1, -1, + -1, 1043, 33, 34, 35, -1, -1, -1, 60, 33, + 34, 700, -1, 134, -1, 1057, -1, -1, -1, -1, + 141, -1, 53, 54, 55, 56, 1068, 58, 59, 53, + 54, 55, 56, -1, 58, 59, -1, 89, -1, 102, + 1082, 1083, 1084, 1085, 1086, 734, 1011, -1, -1, -1, + -1, 1127, -1, 742, 175, -1, 119, -1, -1, 122, + -1, 124, -1, -1, -1, 1011, -1, -1, -1, -1, + -1, 102, -1, -1, -1, -1, -1, -1, 1043, 1121, + 1156, 9, 134, -1, -1, -1, -1, -1, 119, 141, + -1, 122, 1057, 124, -1, -1, -1, 1043, 122, 1141, + 124, 1143, -1, 1068, -1, 33, 34, 35, -1, 1011, + -1, 1057, -1, -1, -1, -1, -1, 1082, 1083, 1084, + 1085, 1086, 1068, 175, -1, 53, 54, 55, 56, -1, + 58, 59, -1, -1, -1, 1037, 1082, 1083, 1084, 1085, + 1086, 1043, -1, -1, -1, -1, -1, -1, -1, -1, + 1192, -1, -1, -1, 1196, 1057, 1121, -1, -1, 1201, + 1202, -1, -1, -1, -1, 2, 1068, -1, -1, -1, + -1, -1, -1, -1, 102, 1121, 1141, -1, 1143, -1, + 1082, 1083, 1084, 1085, 1086, -1, 1011, -1, -1, 1231, + 619, 28, -1, 1235, 122, 1141, 124, 1143, 619, 1241, + -1, 630, -1, -1, -1, 1247, 1248, -1, -1, 630, + -1, -1, 49, -1, -1, -1, -1, -1, 1043, 1121, + -1, -1, -1, 60, -1, -1, -1, 1192, -1, -1, + -1, 1196, 1057, -1, -1, -1, 1201, 1202, 1280, 1141, + -1, 1143, -1, 1068, -1, -1, 1192, -1, 1290, -1, + 1196, -1, 89, -1, -1, 1201, 1202, 1082, 1083, 1084, + 1085, 1086, -1, -1, -1, -1, 1231, 619, -1, -1, + 1235, 700, -1, -1, -1, -1, 1241, -1, 630, 700, + -1, -1, 1247, 1248, -1, 1231, -1, -1, -1, 1235, + 1192, -1, -1, -1, 1196, 1241, 1121, 134, -1, 1201, + 1202, 1247, 1248, -1, 141, 734, -1, -1, -1, -1, + -1, 9, -1, 742, -1, 1280, 1141, -1, 1143, -1, + -1, 619, 1011, -1, -1, 1290, -1, -1, -1, 1231, + -1, -1, 630, 1235, 1280, 33, 34, 35, 175, 1241, + -1, -1, -1, -1, 1290, 1247, 1248, -1, 700, -1, + -1, -1, -1, -1, 1043, 53, 54, 55, 56, -1, + 58, 59, -1, -1, -1, -1, -1, 1192, 1057, -1, + -1, 1196, -1, -1, -1, -1, 1201, 1202, 1280, 1068, + -1, -1, 734, -1, -1, -1, -1, -1, 1290, -1, + 742, -1, -1, 1082, 1083, 1084, 1085, 1086, -1, -1, + -1, -1, 700, -1, 102, -1, 1231, -1, -1, -1, + 1235, 2, -1, -1, -1, -1, 1241, 9, -1, -1, + -1, 119, 1247, 1248, 122, -1, 124, -1, -1, -1, + 2, -1, 1121, -1, -1, -1, 734, 28, -1, -1, + -1, 33, 34, 35, 742, -1, -1, -1, -1, -1, + -1, -1, 1141, -1, 1143, 1280, 28, -1, 49, -1, + -1, 53, 54, 55, 56, 1290, 58, 59, -1, 60, + 9, -1, -1, -1, -1, -1, -1, 49, 2, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 60, -1, + -1, -1, -1, -1, 33, 34, 35, -1, 619, -1, + -1, -1, -1, 1192, 28, -1, -1, 1196, -1, 630, + 102, -1, 1201, 1202, 53, 54, 55, 56, -1, 58, + 59, -1, -1, -1, -1, 49, -1, 119, -1, -1, + 122, -1, 124, -1, -1, -1, 60, -1, -1, -1, + -1, -1, 1231, 134, -1, -1, 1235, -1, -1, -1, + 141, -1, 1241, -1, -1, -1, -1, -1, 1247, 1248, + -1, -1, 134, 102, -1, -1, -1, 619, -1, 141, + -1, 2, -1, -1, -1, -1, -1, -1, 630, 700, + 119, -1, 1011, 122, 175, 124, -1, -1, -1, -1, + 1011, 1280, -1, -1, -1, -1, -1, 28, -1, -1, + -1, 1290, -1, 175, -1, -1, -1, -1, -1, -1, + 134, -1, -1, 734, 1043, -1, -1, 141, 49, -1, + -1, 742, 1043, -1, -1, -1, -1, -1, 1057, 60, + -1, -1, -1, -1, -1, -1, 1057, -1, -1, 1068, + -1, -1, -1, -1, -1, -1, -1, 1068, 700, -1, + -1, 175, -1, 1082, 1083, 1084, 1085, 1086, -1, 1011, + -1, 1082, 1083, 1084, 1085, 1086, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 734, -1, -1, -1, -1, -1, -1, -1, + 742, 1043, 1121, 2, -1, -1, -1, -1, -1, -1, + 1121, -1, -1, 134, -1, 1057, -1, -1, -1, -1, + 141, 9, 1141, 1011, 1143, -1, 1068, -1, -1, 28, + 1141, -1, 1143, -1, -1, -1, -1, -1, -1, -1, + 1082, 1083, 1084, 1085, 1086, 33, 34, 35, -1, -1, + 49, -1, -1, 2, 175, 1043, -1, -1, -1, -1, + -1, 60, -1, -1, -1, 53, 54, 55, 56, 1057, + 58, 59, -1, 1192, -1, -1, -1, 1196, -1, 1121, + 1068, 1192, 1201, 1202, -1, 1196, -1, -1, -1, -1, + 1201, 1202, 619, -1, 1082, 1083, 1084, 1085, 1086, 1141, + -1, 1143, -1, 630, -1, -1, -1, -1, -1, -1, + -1, 60, 1231, -1, 102, -1, 1235, -1, -1, -1, + 1231, -1, 1241, -1, 1235, -1, -1, -1, 1247, 1248, + 1241, -1, -1, 1121, 122, 134, 1247, 1248, -1, -1, + -1, -1, 141, -1, 2, -1, -1, -1, -1, -1, + 1192, -1, -1, 1141, 1196, 1143, -1, -1, -1, 1201, + 1202, 1280, -1, -1, -1, -1, -1, -1, -1, 1280, + 28, 1290, -1, 700, -1, -1, 175, -1, -1, 1290, + -1, -1, -1, -1, -1, 134, -1, -1, -1, 1231, + -1, 49, 141, 1235, -1, -1, -1, -1, -1, 1241, + 1011, -1, 60, -1, 1192, 1247, 1248, 734, 1196, -1, + -1, -1, -1, 1201, 1202, 742, -1, -1, -1, -1, + -1, 2, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 1043, -1, -1, -1, -1, -1, 1280, -1, + -1, 9, -1, 1231, -1, -1, 1057, 1235, 1290, -1, + -1, -1, -1, 1241, -1, -1, -1, 1068, -1, 1247, + 1248, -1, -1, -1, -1, 33, 34, 35, -1, 1011, + -1, 1082, 1083, 1084, 1085, 1086, 134, -1, -1, 60, + -1, -1, -1, 141, -1, 53, 54, 55, 56, -1, + 58, 59, 1280, -1, -1, -1, -1, -1, -1, -1, + -1, 1043, 1290, -1, -1, -1, -1, -1, -1, -1, + 1121, -1, -1, -1, -1, 1057, -1, 175, -1, -1, + -1, -1, -1, -1, -1, -1, 1068, -1, -1, -1, + 1141, -1, 1143, -1, 102, -1, -1, -1, 619, -1, + 1082, 1083, 1084, 1085, 1086, -1, -1, -1, -1, 630, + -1, -1, -1, 134, 122, -1, 124, 619, -1, -1, + 141, -1, 9, 2, -1, -1, -1, -1, 630, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 1121, + -1, 1192, -1, -1, -1, 1196, 33, 34, 35, 28, + 1201, 1202, -1, -1, -1, -1, -1, -1, -1, 1141, + -1, 1143, 9, -1, -1, 619, 53, 54, 55, 56, + 49, 58, 59, -1, -1, -1, 630, -1, 9, 700, + 1231, 60, -1, -1, 1235, -1, 33, 34, 35, -1, + 1241, -1, -1, -1, -1, -1, 1247, 1248, 700, -1, + -1, -1, 33, 34, 35, -1, 53, 54, 55, 56, + 1192, 58, 59, 734, 1196, 102, -1, -1, -1, 1201, + 1202, 742, 53, 54, 55, 56, -1, 58, 59, 1280, + -1, -1, 734, -1, -1, 122, -1, 124, -1, 1290, + 742, -1, -1, -1, 1011, 2, 700, -1, -1, 1231, + -1, -1, -1, 1235, -1, 134, -1, -1, 619, 1241, + -1, -1, 141, -1, -1, 1247, 1248, -1, -1, 630, + -1, 102, 119, -1, -1, 122, 1043, 124, -1, -1, + 734, -1, -1, -1, -1, 9, -1, -1, 742, -1, + 1057, 122, -1, 124, -1, -1, 175, -1, 1280, 2, + -1, 1068, -1, 60, -1, -1, -1, -1, 1290, 33, + 34, 35, -1, -1, -1, 1082, 1083, 1084, 1085, 1086, + -1, -1, -1, -1, -1, 28, -1, -1, -1, 53, + 54, 55, 56, -1, 58, 59, -1, -1, -1, 700, + -1, -1, -1, 9, -1, -1, 49, -1, -1, -1, + -1, -1, -1, -1, 1121, -1, -1, 60, 9, -1, + -1, -1, -1, -1, -1, -1, -1, 33, 34, 35, + 9, -1, -1, 734, 1141, -1, 1143, 134, 102, -1, + 619, 742, 33, 34, 141, -1, -1, 53, 54, 55, + 56, 630, 58, 59, 33, 34, 35, -1, 122, 9, + 124, -1, 53, 54, 55, 56, -1, 58, 59, -1, + -1, -1, -1, -1, 53, 54, 55, 56, -1, 58, + 59, -1, -1, 33, 34, 1192, -1, -1, -1, 1196, + 619, 134, -1, -1, 1201, 1202, 102, -1, 141, -1, + -1, 630, -1, 53, 54, 55, 56, -1, 58, 59, + -1, 102, -1, -1, -1, -1, 122, -1, 124, -1, + -1, 700, -1, 102, 1231, -1, -1, -1, 1235, -1, + -1, 122, 175, 124, 1241, -1, -1, -1, -1, -1, + 1247, 1248, -1, 122, -1, 124, -1, -1, -1, -1, + 1011, -1, 102, 9, -1, 734, -1, -1, -1, -1, + -1, -1, -1, 742, -1, -1, -1, -1, -1, 1011, + -1, 700, 122, 1280, 124, -1, -1, 33, 34, 35, + -1, 619, 1043, 1290, -1, 9, -1, -1, -1, -1, + -1, -1, 630, -1, -1, -1, 1057, 53, 54, 55, + 56, 1043, 58, 59, -1, -1, -1, 1068, -1, 33, + 34, 35, -1, -1, -1, 1057, -1, 1011, -1, -1, + -1, 1082, 1083, 1084, 1085, 1086, 1068, -1, -1, 53, + 54, 55, 56, -1, 58, 59, -1, -1, -1, -1, + 1082, 1083, 1084, 1085, 1086, -1, 102, -1, -1, 1043, + -1, -1, -1, -1, -1, -1, -1, -1, 619, -1, + 1121, -1, 700, 1057, -1, -1, 122, -1, 124, 630, + -1, -1, -1, -1, 1068, -1, -1, -1, 102, 1121, + 1141, -1, 1143, -1, -1, -1, -1, -1, 1082, 1083, + 1084, 1085, 1086, -1, -1, -1, 734, -1, 122, 1141, + 124, 1143, -1, -1, 742, -1, -1, -1, -1, -1, + 1011, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 1121, -1, -1, + -1, 1192, -1, -1, -1, 1196, -1, -1, -1, 700, + 1201, 1202, 1043, -1, -1, -1, -1, 1141, -1, 1143, + 1192, -1, -1, -1, 1196, -1, 1057, -1, -1, 1201, + 1202, -1, -1, -1, -1, -1, -1, 1068, -1, -1, + 1231, -1, -1, -1, 1235, -1, -1, -1, -1, -1, + 1241, 1082, 1083, 1084, 1085, 1086, 1247, 1248, -1, 1231, + -1, -1, -1, 1235, -1, -1, -1, -1, 1192, 1241, + 619, -1, 1196, -1, -1, 1247, 1248, 1201, 1202, -1, + -1, 630, -1, -1, -1, -1, -1, -1, -1, 1280, + 1121, -1, -1, -1, -1, 9, -1, -1, -1, 1290, + -1, -1, 1011, -1, -1, -1, -1, 1231, 1280, -1, + 1141, 1235, 1143, -1, -1, -1, -1, 1241, 1290, 33, + 34, 35, -1, 1247, 1248, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 1043, -1, -1, -1, -1, 53, + 54, 55, 56, -1, 58, 59, -1, -1, 1057, -1, + -1, 700, 1011, -1, -1, -1, 1280, -1, -1, 1068, + -1, 1192, -1, -1, -1, 1196, 1290, -1, -1, -1, + 1201, 1202, -1, 1082, 1083, 1084, 1085, 1086, -1, -1, + -1, -1, -1, -1, 1043, 734, -1, -1, 102, -1, + -1, -1, 619, 742, -1, 9, -1, -1, 1057, -1, + 1231, -1, -1, 630, 1235, -1, -1, -1, 122, 1068, + 1241, -1, 1121, -1, -1, -1, 1247, 1248, -1, 33, + 34, 35, -1, 1082, 1083, 1084, 1085, 1086, -1, -1, + -1, -1, 1141, -1, 1143, -1, -1, -1, -1, 53, + 54, 55, 56, 1011, 58, 59, 619, -1, -1, 1280, + -1, -1, -1, -1, -1, -1, -1, 630, -1, 1290, + -1, -1, 1121, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 700, -1, 1043, -1, -1, -1, -1, + -1, -1, 1141, 1192, 1143, -1, -1, 1196, 102, 1057, + -1, -1, 1201, 1202, -1, -1, -1, 2, -1, 4, + 1068, -1, -1, -1, -1, -1, -1, -1, 122, -1, + 124, -1, -1, -1, 1082, 1083, 1084, 1085, 1086, -1, + 1011, -1, 1231, -1, -1, -1, 1235, 700, -1, -1, + -1, -1, 1241, 1192, -1, -1, -1, 1196, 1247, 1248, + -1, -1, 1201, 1202, -1, -1, -1, -1, -1, -1, + -1, -1, 1043, 1121, -1, 60, -1, -1, -1, 9, + -1, 734, -1, -1, -1, -1, 1057, -1, -1, 742, + -1, 1280, 1231, 1141, -1, 1143, 1235, 1068, -1, -1, + -1, 1290, 1241, 33, 34, 35, -1, -1, 1247, 1248, + -1, 1082, 1083, 1084, 1085, 1086, -1, -1, -1, -1, + -1, -1, -1, 53, 54, 55, 56, -1, 58, 59, + -1, 9, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 1280, -1, -1, 1192, -1, -1, -1, 1196, -1, + 1121, 1290, -1, 1201, 1202, 33, 34, -1, -1, -1, + -1, -1, -1, -1, -1, 150, -1, -1, -1, -1, + 1141, -1, 1143, -1, -1, 53, 54, 55, 56, -1, + 58, 59, 1011, 1231, -1, -1, -1, 1235, -1, 119, + -1, -1, 122, 1241, 124, -1, -1, -1, -1, 1247, + 1248, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 1043, -1, -1, -1, -1, -1, + -1, 1192, -1, -1, 102, 1196, 211, -1, 1057, -1, + 1201, 1202, 1280, -1, 219, -1, -1, -1, -1, 1068, + -1, -1, 1290, -1, 122, -1, 124, -1, -1, -1, + -1, -1, -1, 1082, 1083, 1084, 1085, 1086, -1, -1, + 1231, -1, -1, 248, 1235, -1, -1, -1, -1, -1, + 1241, 9, 257, -1, -1, 260, 1247, 1248, -1, -1, + -1, 9, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 276, 1121, -1, -1, 33, 34, 35, 9, -1, + 285, -1, -1, -1, 1011, 33, 34, 35, -1, 1280, + -1, -1, 1141, -1, 1143, 53, 54, 55, 56, 1290, + 58, 59, 33, 34, 35, 53, 54, 55, 56, -1, + 58, 59, -1, -1, -1, -1, 1043, -1, -1, -1, + -1, -1, 53, 54, 55, 56, -1, 58, 59, -1, + 1057, -1, -1, -1, -1, -1, -1, -1, 1011, -1, + -1, 1068, -1, 1192, -1, -1, -1, 1196, -1, -1, + -1, -1, 1201, 1202, -1, 1082, 1083, 1084, 1085, 1086, + -1, -1, -1, -1, 122, -1, 124, -1, -1, -1, + 1043, -1, -1, -1, 122, -1, 124, -1, 9, -1, + -1, -1, 1231, -1, 1057, -1, 1235, -1, -1, -1, + -1, 122, 1241, 124, 1121, 1068, -1, -1, 1247, 1248, + -1, -1, 33, 34, 35, -1, -1, -1, -1, 1082, + 1083, 1084, 1085, 1086, 1141, -1, 1143, -1, -1, -1, + -1, -1, 53, 54, 55, 56, -1, 58, 59, 17, + 18, 1280, -1, -1, -1, -1, -1, -1, -1, -1, + 28, 1290, -1, -1, -1, -1, -1, -1, 1121, 37, + -1, -1, -1, -1, 42, -1, 44, 45, -1, -1, + -1, 49, -1, -1, -1, 1192, -1, -1, 1141, 1196, + 1143, 59, -1, -1, 1201, 1202, -1, -1, -1, -1, + -1, 69, -1, 71, -1, 73, 74, -1, 76, -1, + 78, 122, 80, 124, 82, -1, 84, -1, 86, -1, + 88, 89, 90, -1, 1231, -1, 94, -1, 1235, 97, + 9, 99, -1, 101, 1241, -1, -1, -1, -1, 1192, + 1247, 1248, -1, 1196, -1, -1, -1, -1, 1201, 1202, + -1, 119, -1, -1, 33, 34, 35, 125, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 9, -1, -1, + -1, -1, -1, 1280, 53, 54, 55, 56, 1231, 58, + 59, -1, 1235, 1290, -1, 153, 154, -1, 1241, -1, + -1, 33, 34, 35, 1247, 1248, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 175, -1, -1, + -1, 53, 54, 55, 56, -1, 58, 59, -1, 604, + -1, -1, -1, -1, -1, -1, -1, 1280, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 1290, -1, -1, + -1, -1, -1, 122, 629, 124, 214, -1, -1, -1, + -1, 636, 220, 26, 639, -1, 641, 30, 31, 32, + -1, -1, -1, -1, -1, -1, -1, -1, 653, -1, + -1, -1, 657, -1, -1, 48, 49, 245, 246, 247, + 122, -1, 124, -1, 57, -1, -1, -1, -1, -1, + 675, 676, 677, -1, -1, 680, 264, 265, -1, -1, + -1, -1, -1, -1, -1, 690, -1, -1, -1, -1, + -1, -1, 697, 698, -1, -1, 701, -1, 703, -1, + -1, -1, -1, -1, -1, -1, -1, 295, 296, 102, + 103, 104, 105, 106, 107, 108, 109, 110, -1, -1, + -1, 309, -1, -1, 312, 730, -1, -1, -1, -1, + -1, -1, 67, -1, -1, 70, -1, 72, 743, 327, + 75, -1, 77, -1, 79, -1, 81, -1, -1, -1, + 85, -1, 87, -1, 342, -1, 91, 92, 93, -1, + -1, 96, -1, 98, -1, 100, -1, -1, 356, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 113, -1, + -1, 369, -1, 118, -1, -1, -1, -1, -1, 124, + -1, -1, -1, -1, 382, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 395, -1, -1, + -1, -1, 71, -1, 73, 74, -1, 76, 406, 78, + -1, 80, -1, 82, -1, 84, -1, 86, -1, 88, + 89, 90, -1, 421, -1, 94, -1, -1, 97, -1, + 99, 176, 101, 178, 179, 180, 181, 182, 183, 437, + 185, 186, 187, 188, 189, 190, 191, 192, 5, -1, + 119, -1, -1, -1, 11, 12, 125, -1, 203, -1, + -1, -1, 207, -1, 209, 22, 23, -1, 25, -1, + -1, -1, 29, -1, -1, -1, -1, -1, -1, -1, + -1, 5, 480, -1, 41, -1, 43, 11, 12, 46, + 47, -1, -1, 491, 51, 52, -1, -1, 22, 23, + -1, 25, -1, 60, -1, 29, 504, -1, -1, -1, + -1, -1, 69, 70, -1, -1, -1, 41, 516, 43, + -1, -1, 46, 47, 81, -1, -1, 51, 52, -1, + 945, -1, -1, 531, -1, 92, 60, -1, -1, 96, + -1, -1, -1, -1, -1, -1, 544, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 113, 81, -1, -1, + -1, -1, 119, -1, -1, 563, -1, -1, 92, -1, + -1, -1, 96, 5, -1, 7, 8, 575, 10, 11, + 12, 13, 14, -1, 999, -1, -1, 19, 20, 21, + 22, 23, -1, 25, 1009, -1, 28, 29, -1, -1, + 598, 33, 34, -1, 1019, -1, -1, -1, -1, 41, + -1, 43, -1, -1, 46, 47, -1, -1, 50, 51, + 52, -1, -1, -1, -1, -1, -1, -1, 60, -1, + -1, 1046, -1, 1048, -1, 67, -1, 69, 70, -1, + -1, -1, -1, 1058, -1, -1, 1061, 1062, 1063, 81, + -1, -1, 1067, -1, -1, 1070, -1, -1, -1, -1, + 92, 93, -1, -1, 96, -1, -1, 99, -1, -1, + -1, -1, -1, -1, 106, 107, -1, -1, -1, -1, + -1, 113, 114, 681, 1099, 117, -1, 119, 120, -1, + 122, -1, -1, 5, -1, -1, -1, -1, -1, 11, + 12, -1, -1, -1, 702, -1, -1, 705, -1, -1, + 22, 23, 710, 25, -1, -1, -1, 29, -1, -1, + 1135, 719, -1, -1, -1, -1, -1, 1142, -1, 41, + 1145, 43, -1, -1, 46, 47, 734, 735, -1, 51, + 52, -1, -1, -1, 742, -1, -1, -1, 60, 1164, + 1165, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 1176, -1, -1, -1, -1, -1, -1, -1, 81, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 92, -1, -1, -1, 96, -1, -1, -1, 1203, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 1216, -1, 115, 116, -1, -1, -1, -1, -1, + 1225, 1226, -1, -1, 1229, -1, -1, 1232, 1233, -1, + 0, 1, -1, 3, 4, 5, 6, 7, 8, -1, + 10, 11, 12, 13, 14, -1, -1, -1, -1, 19, + 20, 21, 22, 23, 24, 25, -1, -1, -1, 29, + -1, -1, -1, 33, 34, 1270, 36, -1, -1, -1, + -1, 41, 42, 43, 44, -1, 46, 47, -1, -1, + 50, 51, 52, -1, -1, -1, -1, -1, -1, -1, + 60, 61, 62, -1, -1, 65, -1, 67, 68, 69, + 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 80, 81, 82, 83, -1, 9, -1, -1, -1, -1, + -1, -1, 92, 93, 94, 95, 96, 97, 98, 99, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 33, + 34, 35, -1, 113, -1, 115, 116, -1, -1, 119, + 120, -1, 122, 941, 942, -1, -1, -1, -1, 53, + 54, 55, 56, -1, 58, 59, -1, -1, -1, -1, + -1, -1, -1, 961, -1, -1, -1, 71, 72, 73, + 74, 75, 76, 77, 78, 79, -1, -1, -1, -1, + 84, 85, 86, 87, 88, 89, 90, 91, -1, -1, + -1, -1, 13, 738, -1, -1, 30, 31, 32, -1, + 998, 22, 23, 1001, -1, -1, -1, 1005, 1006, -1, + -1, 115, 116, 117, 48, 49, -1, -1, 122, 1017, + 124, 1019, -1, 57, -1, -1, 1024, 1025, -1, -1, + -1, 52, 1030, -1, -1, -1, -1, -1, -1, 1037, + -1, -1, 5, -1, 7, 8, -1, 10, 11, 12, + 13, 14, -1, -1, -1, -1, 19, 20, 21, 22, + 23, -1, 25, -1, -1, -1, 29, -1, 102, 103, + 104, 105, 106, 107, 108, 109, 110, -1, 41, -1, + 43, -1, -1, 46, 47, -1, -1, 50, 51, 52, + -1, -1, -1, -1, -1, -1, -1, 60, -1, -1, + -1, -1, 1100, 1101, 67, -1, 69, 70, -1, -1, + -1, -1, -1, -1, -1, -1, 137, -1, 81, -1, + -1, 9, -1, -1, -1, -1, 1124, 148, 1126, 92, + 93, -1, -1, 96, -1, -1, 99, -1, 1136, -1, + 1138, -1, -1, -1, 165, 33, 34, 35, -1, -1, + 113, -1, 173, 174, -1, -1, 119, 120, -1, 122, + -1, -1, -1, -1, 1162, 53, 54, 55, 56, 1167, + 58, 59, -1, -1, 1172, -1, -1, 1175, -1, -1, + -1, -1, -1, 71, 72, 73, 74, 75, 76, 77, + 78, 79, -1, -1, -1, -1, 84, 85, 86, 87, + 88, 89, 90, 91, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 1217, + -1, -1, 1220, -1, -1, -1, -1, -1, 249, 1227, + -1, 119, -1, -1, 122, -1, 124, -1, -1, -1, + -1, -1, -1, -1, 265, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 275, -1, -1, -1, -1, 1257, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 299, -1, + -1, 302, 303, 304, 305, 306, 307, 308, -1, -1, + 311, -1, -1, -1, -1, 1293, 1294, 318, -1, 320, + 321, 322, 323, 324, 325, 326, -1, 328, -1, -1, + -1, -1, 333, -1, 335, 336, 337, 338, 339, 340, + 341, -1, -1, -1, -1, -1, 347, -1, 349, 350, + 351, 352, 353, 354, 355, -1, -1, -1, -1, 360, + -1, 362, 363, 364, 365, 366, 367, 368, -1, -1, + -1, -1, 373, -1, 375, 376, 377, 378, 379, 380, + 381, -1, -1, -1, -1, 386, -1, 388, 389, 390, + 391, 392, 393, 394, -1, -1, -1, 398, 399, 400, + 401, 402, 403, 404, 405, -1, -1, -1, -1, -1, + 411, -1, 413, 414, 415, 416, 417, 418, 419, -1, + -1, -1, -1, -1, -1, -1, 427, -1, 429, 430, + 431, 432, 433, 434, 435, -1, -1, 71, 72, 73, + 74, 75, 76, 77, 78, 79, -1, -1, -1, -1, + 84, 85, 86, 87, 88, 89, 90, 91, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 472, 473, 474, 475, 476, 477, 478, 479, -1, + -1, -1, 483, 484, 485, 486, 487, 488, 489, 490, + 124, -1, -1, -1, 495, -1, 497, 498, 499, 500, + 501, 502, 503, -1, -1, -1, 507, -1, 509, 510, + 511, 512, 513, 514, 515, -1, -1, -1, -1, -1, + 521, -1, 523, 524, 525, 526, 527, 528, 529, -1, + -1, -1, -1, -1, 535, -1, 537, 538, 539, 540, + 541, 542, 543, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 554, -1, 556, 557, 558, 559, 560, + 561, 562, 9, -1, -1, 566, -1, 568, 569, 570, + 571, 572, 573, 574, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 33, 34, 589, -1, + 591, 592, 593, 594, 595, 596, 597, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 53, 54, 55, 56, + -1, 58, 59, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 71, 72, 73, 74, 75, 76, + 77, 78, 79, -1, -1, -1, -1, 84, 85, 86, + 87, 88, 89, 90, 91, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 658, 659, 660, + 661, 662, 663, 664, 665, 666, 667, 668, 669, 670, + 671, 672, 673, 674, 70, 122, 72, 124, -1, 75, + -1, 77, -1, 79, -1, -1, -1, 83, -1, -1, + -1, 87, -1, 694, -1, 91, 92, -1, -1, 9, + 96, 702, 98, -1, 100, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 113, -1, -1, + -1, -1, 118, 33, 34, -1, -1, -1, 124, -1, + -1, -1, -1, -1, 735, -1, -1, -1, -1, -1, + 741, -1, -1, 53, 54, 55, 56, -1, 58, 59, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 71, 72, 73, 74, 75, 76, 77, 78, 79, + -1, 772, -1, -1, 84, 85, 86, 87, 88, 89, + 90, 91, 178, 179, 180, 181, 182, -1, 184, -1, + 186, 187, 188, -1, 190, 191, 192, -1, -1, -1, + -1, -1, -1, -1, -1, 115, 116, 203, -1, -1, + -1, 207, 122, 209, 124, -1, -1, -1, -1, 215, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 225, + 226, 227, 228, 229, -1, 231, -1, 233, 234, 235, + -1, 237, 238, 239, -1, 241, 242, 243, 71, 72, + 73, 74, 75, 76, 77, 78, 79, -1, -1, -1, + -1, 84, 85, 86, 87, 88, 89, 90, 91, -1, + -1, -1, 268, 269, -1, 271, 272, -1, 1, -1, + 3, 4, 5, 6, 7, 8, -1, 10, 11, 12, + 13, 14, -1, -1, -1, -1, 19, 20, 21, 22, + 23, 24, 25, -1, -1, -1, 29, -1, -1, -1, + 33, 34, -1, 36, -1, -1, -1, -1, 41, 42, + 43, 44, -1, 46, 47, -1, -1, 50, 51, 52, + -1, -1, -1, -1, -1, 936, -1, 60, 61, 62, + -1, -1, 65, 944, 67, 68, 69, 70, -1, -1, + -1, 952, -1, -1, -1, -1, 957, 80, 81, 82, + 83, -1, -1, -1, -1, -1, -1, -1, -1, 92, + 93, 94, 95, 96, 97, 98, 99, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 113, -1, 115, 116, -1, -1, 119, 120, -1, 122, + 71, 72, 73, 74, 75, 76, 77, 78, 79, -1, + -1, -1, -1, 84, 85, 86, 87, 88, 89, 90, + 91, -1, -1, -1, -1, 5, -1, 1028, -1, -1, + 1031, 11, 12, -1, -1, -1, 1037, -1, -1, -1, + -1, -1, 22, 23, -1, 25, -1, -1, 119, 29, + -1, -1, 1053, -1, -1, -1, -1, -1, 1059, -1, + 456, 41, -1, 43, 1065, -1, 46, 47, -1, -1, + 1071, 51, 52, -1, -1, -1, -1, 1078, -1, -1, + 60, -1, -1, -1, -1, -1, -1, 1088, -1, 3, + 4, 5, 6, 7, 8, -1, 10, 11, 12, 13, + 14, 81, -1, -1, -1, 19, 20, 21, 22, 23, + 24, 25, 92, -1, -1, 29, 96, -1, 1119, 33, + 34, -1, 36, -1, -1, -1, -1, 41, 42, 43, + 44, -1, 46, 47, 114, -1, 50, 51, 52, -1, + -1, -1, -1, -1, -1, -1, 60, 61, 62, 1150, + -1, 65, -1, 67, 68, 69, 70, -1, 1159, -1, + -1, -1, -1, -1, -1, -1, 80, 81, 82, 83, + -1, -1, -1, -1, -1, -1, -1, 1178, 92, 93, + 94, 95, 96, 97, 98, 99, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 113, + -1, 115, 116, 1204, -1, 119, 120, -1, 122, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 5, 6, 7, 8, -1, 10, 11, 12, 13, 14, + -1, -1, 17, 18, 19, 20, 21, 22, 23, 24, + 25, -1, -1, 1244, 29, -1, -1, -1, 33, 34, + -1, 36, 648, -1, 650, -1, 41, 42, 43, 44, + -1, 46, 47, -1, -1, 50, 51, 52, -1, -1, + -1, -1, -1, -1, -1, 60, 61, 62, -1, -1, + 65, -1, 67, 68, 69, 70, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 80, 81, 82, 83, -1, + -1, -1, -1, -1, -1, -1, -1, 92, 93, 94, + 95, 96, 97, 98, 99, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 113, -1, + 115, 116, -1, -1, 119, 120, -1, 122, 5, 6, + 7, 8, 738, 10, 11, 12, 13, 14, -1, -1, + 17, -1, 19, 20, 21, 22, 23, 24, 25, -1, + -1, -1, 29, -1, -1, -1, 33, 34, -1, 36, + -1, -1, -1, 40, 41, 42, 43, 44, -1, 46, + 47, -1, -1, 50, 51, 52, -1, -1, -1, -1, + -1, -1, -1, 60, 61, 62, -1, -1, 65, -1, + 67, 68, 69, 70, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 80, 81, 82, 83, -1, -1, -1, + -1, -1, -1, -1, -1, 92, 93, 94, 95, 96, + 97, 98, 99, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 113, -1, 115, 116, + -1, -1, 119, 120, -1, 122, 5, 6, 7, 8, + -1, 10, 11, 12, 13, 14, -1, -1, 17, -1, + 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, + 29, -1, -1, -1, 33, 34, -1, 36, -1, -1, + -1, -1, 41, 42, 43, 44, 45, 46, 47, -1, + -1, 50, 51, 52, -1, -1, -1, -1, -1, -1, + -1, 60, 61, 62, -1, -1, 65, -1, 67, 68, + 69, 70, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 80, 81, 82, 83, -1, -1, -1, -1, -1, + -1, -1, -1, 92, 93, 94, 95, 96, 97, 98, + 99, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 113, -1, 115, 116, -1, -1, + 119, 120, -1, 122, -1, -1, -1, 5, 6, 7, + 8, -1, 10, 11, 12, 13, 14, -1, -1, 17, + -1, 19, 20, 21, 22, 23, 24, 25, -1, -1, + -1, 29, -1, -1, -1, 33, 34, -1, 36, -1, + -1, -1, -1, 41, 42, 43, 44, -1, 46, 47, + -1, -1, 50, 51, 52, -1, -1, -1, -1, -1, + -1, -1, 60, 61, 62, -1, -1, 65, 1034, 67, + 68, 69, 70, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 80, 81, 82, 83, -1, -1, -1, -1, + -1, -1, -1, -1, 92, 93, 94, 95, 96, 97, + 98, 99, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 113, -1, 115, 116, -1, + -1, 119, 120, -1, 122, 5, 6, 7, 8, -1, + 10, 11, 12, 13, 14, -1, -1, 17, -1, 19, + 20, 21, 22, 23, 24, 25, -1, -1, -1, 29, + -1, -1, -1, 33, 34, -1, 36, -1, -1, -1, + -1, 41, 42, 43, 44, -1, 46, 47, -1, -1, + 50, 51, 52, -1, -1, -1, -1, -1, -1, -1, + 60, 61, 62, -1, -1, 65, -1, 67, 68, 69, + 70, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 80, 81, 82, 83, -1, -1, -1, -1, -1, -1, + -1, -1, 92, 93, 94, 95, 96, 97, 98, 99, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 113, -1, 115, 116, -1, -1, 119, + 120, -1, 122, 5, 6, 7, 8, -1, 10, 11, + 12, 13, 14, -1, -1, -1, -1, 19, 20, 21, + 22, 23, 24, 25, -1, -1, -1, 29, -1, -1, + -1, 33, 34, -1, 36, -1, -1, -1, -1, 41, + 42, 43, 44, -1, 46, 47, -1, -1, 50, 51, + 52, -1, -1, -1, -1, -1, -1, -1, 60, 61, + 62, -1, -1, 65, -1, 67, 68, 69, 70, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 80, 81, + 82, 83, -1, -1, -1, -1, -1, -1, -1, -1, + 92, 93, 94, 95, 96, 97, 98, 99, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 113, -1, 115, 116, -1, -1, 119, 120, 5, + 122, 7, 8, -1, 10, 11, 12, 13, 14, -1, + -1, -1, -1, 19, 20, 21, 22, 23, -1, 25, + -1, -1, 28, 29, -1, -1, -1, 33, 34, -1, + -1, -1, -1, -1, -1, 41, -1, 43, -1, -1, + 46, 47, -1, -1, 50, 51, 52, -1, -1, -1, + -1, -1, -1, -1, 60, -1, -1, -1, -1, -1, + -1, 67, -1, 69, 70, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 81, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 92, 93, -1, -1, + 96, -1, -1, 99, -1, -1, -1, -1, -1, -1, + 106, 107, -1, -1, -1, 26, 27, 113, 114, 30, + 31, 32, -1, 119, 120, 5, 122, 7, 8, -1, + 10, 11, 12, 13, 14, -1, -1, 48, 49, 19, + 20, 21, 22, 23, -1, 25, 57, -1, 28, 29, + -1, -1, -1, 33, 34, -1, -1, -1, -1, -1, + -1, 41, -1, 43, -1, -1, 46, 47, -1, -1, + 50, 51, 52, -1, -1, -1, -1, -1, -1, -1, + 60, -1, -1, -1, -1, -1, -1, 67, -1, 69, + 70, 102, 103, 104, 105, 106, 107, 108, 109, 110, + -1, 81, -1, -1, 115, 116, -1, -1, -1, -1, + -1, -1, 92, 93, -1, -1, 96, -1, -1, 99, + -1, -1, -1, -1, -1, -1, 106, 107, -1, -1, + -1, 26, 27, 113, 114, 30, 31, 32, -1, 119, + 120, 5, 122, 7, 8, -1, 10, 11, 12, 13, + 14, -1, 47, 48, 49, 19, 20, 21, 22, 23, + -1, 25, 57, -1, -1, 29, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 41, -1, 43, + -1, -1, 46, 47, -1, -1, -1, 51, 52, -1, + -1, -1, -1, -1, -1, 9, 60, -1, -1, -1, + -1, -1, -1, 67, -1, 69, 70, 102, 103, 104, + 105, 106, 107, 108, 109, 110, -1, 81, -1, 33, + 34, 35, -1, -1, -1, -1, -1, -1, 92, 93, + -1, -1, 96, -1, -1, -1, -1, -1, -1, 53, + 54, 55, 56, -1, 58, 59, -1, -1, -1, 113, + -1, -1, -1, -1, 9, 119, 120, 71, 72, 73, + 74, 75, 76, 77, 78, 79, -1, -1, -1, -1, + 84, 85, 86, 87, 88, 89, 90, 91, 33, 34, + 35, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 53, 54, + 55, 56, -1, 58, 59, -1, -1, -1, 122, -1, + 124, -1, -1, 9, -1, -1, 71, 72, 73, 74, + 75, 76, 77, 78, 79, -1, -1, -1, -1, 84, + 85, 86, 87, 88, 89, 90, 91, 33, 34, 35, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 53, 54, 55, + 56, -1, 58, 59, -1, -1, -1, 122, -1, 124, + -1, -1, 9, -1, -1, 71, 72, 73, 74, 75, + 76, 77, 78, 79, -1, -1, -1, -1, 84, 85, + 86, 87, 88, 89, 90, 91, 33, 34, 35, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 53, 54, 55, 56, + -1, 58, 59, -1, -1, -1, 122, -1, 124, -1, + -1, -1, -1, -1, 71, 72, 73, 74, 75, 76, + 77, 78, 79, -1, -1, -1, -1, 84, 85, 86, + 87, 88, 89, 90, 91, 5, -1, -1, -1, -1, + -1, 11, 12, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 22, 23, -1, 25, -1, -1, -1, 29, + -1, -1, -1, -1, -1, 122, -1, 124, -1, -1, + -1, 41, -1, 43, -1, -1, 46, 47, 5, -1, + -1, 51, 52, -1, 11, 12, -1, -1, -1, -1, + 60, -1, -1, -1, -1, 22, 23, -1, 25, -1, + -1, -1, 29, -1, -1, -1, -1, -1, -1, -1, + -1, 81, -1, -1, 41, -1, 43, -1, -1, 46, + 47, 5, 92, -1, 51, 52, 96, 11, 12, -1, + -1, -1, -1, 60, -1, -1, -1, -1, 22, 23, + -1, 25, -1, -1, 114, 29, -1, -1, -1, -1, + -1, -1, -1, -1, 81, -1, -1, 41, -1, 43, + -1, -1, 46, 47, 5, 92, -1, 51, 52, 96, + 11, 12, -1, -1, -1, -1, 60, -1, -1, -1, + -1, 22, 23, -1, 25, -1, -1, 114, 29, -1, + -1, -1, -1, -1, -1, -1, -1, 81, -1, -1, + 41, -1, 43, -1, -1, 46, 47, 5, 92, -1, + 51, 52, 96, 11, 12, -1, -1, -1, -1, 60, + -1, -1, -1, -1, 22, 23, -1, 25, 69, 70, + 114, 29, -1, -1, -1, -1, -1, -1, -1, -1, + 81, -1, -1, 41, -1, 43, -1, -1, 46, 47, + 5, 92, -1, 51, 52, 96, 11, 12, -1, -1, + -1, -1, 60, -1, -1, -1, -1, 22, 23, -1, + 25, -1, 113, -1, 29, -1, -1, -1, -1, -1, + -1, -1, -1, 81, -1, -1, 41, -1, 43, -1, + -1, 46, 47, 5, 92, -1, 51, 52, 96, 11, + 12, -1, 100, -1, -1, 60, -1, -1, -1, -1, + 22, 23, -1, 25, -1, -1, -1, 29, -1, -1, + -1, -1, -1, -1, -1, -1, 81, -1, -1, 41, + -1, 43, -1, -1, 46, 47, -1, 92, -1, 51, + 52, 96, -1, -1, -1, 100, -1, -1, 60, -1, + 26, 27, -1, -1, 30, 31, 32, 69, 70, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 81, + -1, -1, 48, 49, -1, -1, -1, -1, -1, -1, + 92, 57, -1, -1, 96, -1, -1, 71, 72, 73, + 74, 75, 76, 77, 78, 79, -1, -1, -1, -1, + 84, 85, 86, 87, 88, 89, 90, 91, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 119, 71, 72, 73, 74, + 75, 76, 77, 78, 79, -1, -1, -1, -1, 84, + 85, 86, 87, 88, 89, 90, 91, 71, 72, 73, + 74, 75, 76, 77, 78, 79, -1, -1, -1, -1, + 84, 85, 86, 87, 88, 89, 90, 91, -1, -1, + -1, -1, -1, -1, 119, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 119 +}; + +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint16 yystos[] = +{ + 0, 127, 128, 0, 1, 5, 6, 7, 8, 10, + 11, 12, 13, 14, 19, 20, 21, 22, 23, 24, + 25, 29, 33, 34, 36, 41, 42, 43, 44, 46, + 47, 50, 51, 52, 60, 61, 62, 65, 67, 68, + 69, 70, 80, 81, 82, 83, 92, 93, 94, 95, + 96, 97, 98, 99, 113, 115, 116, 119, 120, 122, + 129, 130, 131, 133, 138, 144, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 189, 190, 191, 192, 193, 195, 199, 201, 202, + 203, 205, 217, 218, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 235, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 253, 254, 267, 270, 273, + 288, 289, 292, 311, 313, 315, 325, 328, 330, 340, + 345, 348, 350, 357, 367, 370, 372, 372, 147, 155, + 156, 35, 35, 255, 256, 243, 247, 248, 249, 11, + 12, 14, 22, 23, 25, 28, 29, 41, 43, 50, + 52, 60, 92, 106, 107, 114, 163, 164, 166, 168, + 171, 173, 175, 178, 180, 182, 184, 189, 190, 191, + 195, 201, 203, 206, 211, 217, 218, 219, 220, 228, + 229, 230, 231, 235, 241, 242, 244, 245, 247, 251, + 162, 161, 162, 152, 148, 180, 206, 211, 211, 314, + 271, 153, 162, 163, 164, 166, 168, 171, 173, 175, + 178, 180, 182, 184, 189, 190, 191, 195, 201, 203, + 215, 235, 245, 251, 35, 268, 257, 150, 358, 146, + 155, 162, 182, 184, 366, 10, 162, 162, 120, 162, + 279, 19, 132, 236, 237, 66, 162, 182, 184, 189, + 191, 201, 245, 337, 338, 349, 211, 245, 211, 214, + 176, 162, 182, 184, 200, 1, 130, 131, 133, 144, + 254, 267, 270, 273, 372, 3, 4, 35, 119, 9, + 33, 34, 53, 54, 55, 56, 58, 59, 102, 122, + 216, 102, 122, 162, 182, 184, 188, 245, 9, 35, + 53, 54, 55, 56, 58, 59, 102, 122, 124, 216, + 232, 233, 188, 9, 35, 53, 54, 55, 56, 58, + 59, 102, 122, 216, 232, 188, 188, 9, 35, 53, + 54, 55, 56, 58, 59, 102, 122, 216, 232, 188, + 9, 35, 53, 54, 55, 56, 58, 59, 102, 122, + 216, 232, 188, 9, 35, 53, 54, 55, 56, 58, + 59, 102, 122, 216, 232, 188, 9, 35, 53, 54, + 55, 56, 58, 59, 102, 122, 216, 188, 9, 53, + 54, 55, 56, 58, 59, 102, 122, 216, 232, 188, + 245, 9, 35, 53, 54, 55, 56, 58, 59, 102, + 119, 122, 155, 216, 232, 188, 245, 9, 35, 53, + 54, 55, 56, 58, 59, 102, 119, 122, 155, 216, + 232, 188, 245, 8, 10, 162, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 177, 178, 179, + 181, 182, 183, 184, 185, 188, 235, 245, 246, 251, + 253, 188, 9, 53, 54, 55, 56, 58, 59, 102, + 122, 216, 232, 9, 53, 54, 55, 56, 58, 59, + 102, 122, 155, 216, 232, 9, 35, 53, 54, 55, + 56, 58, 59, 102, 122, 216, 188, 9, 35, 53, + 54, 55, 56, 58, 59, 102, 122, 155, 216, 232, + 188, 9, 35, 53, 54, 55, 56, 58, 59, 102, + 119, 122, 216, 232, 188, 9, 35, 53, 54, 55, + 56, 58, 59, 102, 122, 155, 216, 232, 188, 155, + 155, 155, 155, 155, 9, 35, 53, 54, 55, 56, + 58, 59, 102, 122, 216, 232, 9, 35, 53, 54, + 55, 56, 58, 59, 102, 122, 155, 216, 232, 188, + 245, 117, 118, 117, 118, 117, 118, 117, 118, 9, + 35, 53, 54, 55, 56, 58, 59, 102, 122, 155, + 216, 232, 188, 145, 15, 16, 17, 18, 303, 305, + 310, 12, 24, 25, 130, 144, 157, 158, 159, 160, + 273, 372, 17, 37, 38, 39, 312, 316, 321, 211, + 160, 17, 346, 347, 155, 155, 211, 372, 162, 258, + 261, 258, 247, 211, 211, 211, 162, 182, 189, 193, + 201, 207, 212, 295, 208, 209, 210, 293, 26, 27, + 30, 31, 32, 48, 49, 57, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 297, 299, 301, 213, 117, + 154, 117, 372, 155, 182, 259, 260, 261, 372, 162, + 272, 155, 9, 102, 334, 186, 162, 269, 272, 259, + 372, 211, 66, 19, 119, 275, 372, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 84, 85, 86, 87, + 88, 89, 90, 91, 140, 141, 142, 119, 372, 106, + 118, 239, 162, 240, 114, 117, 162, 206, 245, 368, + 369, 51, 117, 211, 372, 214, 234, 372, 162, 162, + 194, 211, 211, 211, 211, 211, 211, 211, 211, 200, + 211, 200, 211, 211, 211, 211, 211, 211, 211, 211, + 200, 211, 117, 123, 211, 211, 211, 211, 211, 211, + 211, 211, 200, 211, 211, 211, 211, 211, 211, 211, + 211, 200, 211, 211, 211, 211, 211, 211, 211, 211, + 200, 211, 211, 211, 211, 211, 211, 211, 211, 200, + 211, 211, 211, 211, 211, 211, 211, 211, 200, 211, + 211, 211, 211, 211, 211, 211, 211, 200, 211, 211, + 211, 211, 211, 211, 211, 211, 196, 200, 211, 211, + 211, 211, 211, 211, 211, 211, 197, 200, 211, 211, + 211, 211, 211, 211, 211, 211, 200, 211, 211, 211, + 211, 211, 211, 211, 211, 200, 211, 211, 211, 211, + 211, 211, 211, 211, 200, 211, 211, 211, 211, 211, + 211, 211, 211, 200, 211, 211, 211, 211, 211, 211, + 211, 211, 204, 200, 211, 211, 211, 211, 211, 211, + 211, 211, 200, 211, 211, 211, 211, 211, 211, 211, + 211, 200, 211, 211, 211, 211, 211, 211, 211, 211, + 200, 214, 214, 214, 214, 211, 211, 211, 211, 211, + 211, 211, 211, 200, 155, 372, 306, 310, 16, 303, + 310, 3, 4, 157, 317, 322, 37, 312, 321, 38, + 312, 372, 37, 38, 351, 354, 372, 124, 140, 265, + 266, 117, 372, 372, 117, 141, 141, 372, 141, 141, + 141, 372, 211, 211, 211, 211, 211, 211, 211, 211, + 211, 211, 211, 211, 211, 211, 211, 211, 211, 372, + 372, 372, 141, 214, 372, 162, 140, 265, 117, 149, + 140, 117, 372, 211, 140, 51, 117, 372, 372, 151, + 157, 290, 291, 372, 368, 114, 372, 274, 162, 278, + 279, 281, 162, 162, 276, 280, 19, 372, 125, 140, + 117, 125, 162, 182, 189, 193, 369, 117, 211, 339, + 337, 372, 17, 371, 117, 121, 134, 136, 135, 137, + 198, 214, 211, 124, 198, 198, 198, 304, 211, 308, + 310, 162, 162, 211, 372, 319, 312, 324, 326, 211, + 355, 37, 347, 354, 211, 262, 263, 142, 117, 123, + 261, 214, 296, 294, 298, 300, 302, 117, 9, 142, + 260, 372, 162, 331, 162, 162, 372, 157, 359, 19, + 81, 114, 162, 283, 286, 287, 282, 279, 281, 372, + 162, 277, 281, 283, 211, 238, 162, 238, 369, 117, + 341, 290, 214, 372, 119, 372, 119, 117, 118, 211, + 118, 118, 118, 291, 372, 211, 119, 372, 119, 372, + 372, 323, 211, 372, 291, 352, 372, 211, 9, 211, + 124, 291, 291, 291, 291, 291, 252, 211, 140, 46, + 140, 63, 64, 361, 364, 365, 372, 114, 162, 162, + 140, 118, 117, 117, 140, 117, 121, 118, 117, 121, + 140, 121, 211, 96, 344, 17, 100, 139, 143, 162, + 139, 214, 307, 372, 139, 139, 318, 291, 372, 291, + 327, 372, 356, 353, 264, 211, 214, 211, 162, 360, + 372, 372, 162, 140, 119, 140, 140, 114, 162, 287, + 81, 281, 372, 140, 211, 342, 118, 117, 140, 118, + 291, 309, 118, 118, 291, 320, 17, 40, 329, 291, + 291, 372, 211, 118, 47, 335, 17, 362, 363, 119, + 140, 214, 284, 285, 372, 162, 140, 114, 162, 372, + 372, 100, 162, 372, 291, 372, 372, 291, 291, 211, + 332, 291, 291, 284, 117, 118, 119, 140, 162, 140, + 343, 140, 372, 118, 285, 284, 119, 140, 291, 336, + 333, 118, 284, 17, 45, 336, 118, 162, 162 +}; + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + + +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. */ + +#define YYFAIL goto yyerrlab + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + yytoken = YYTRANSLATE (yychar); \ + YYPOPSTACK (1); \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (pComp, YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (YYID (0)) + + +#define YYTERROR 1 +#define YYERRCODE 256 + + +/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. + If N is 0, then set CURRENT to the empty location which ends + the previous symbol: RHS[0] (always defined). */ + +#define YYRHSLOC(Rhs, K) ((Rhs)[K]) +#ifndef YYLLOC_DEFAULT +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + do \ + if (YYID (N)) \ + { \ + (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ + (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ + (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ + (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ + } \ + else \ + { \ + (Current).first_line = (Current).last_line = \ + YYRHSLOC (Rhs, 0).last_line; \ + (Current).first_column = (Current).last_column = \ + YYRHSLOC (Rhs, 0).last_column; \ + } \ + while (YYID (0)) +#endif + + +/* YY_LOCATION_PRINT -- Print the location on the stream. + This macro was not mandated originally: define only if we know + we won't break user code: when these are the locations we know. */ + +#ifndef YY_LOCATION_PRINT +# if YYLTYPE_IS_TRIVIAL +# define YY_LOCATION_PRINT(File, Loc) \ + fprintf (File, "%d.%d-%d.%d", \ + (Loc).first_line, (Loc).first_column, \ + (Loc).last_line, (Loc).last_column) +# else +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif +#endif + + +/* YYLEX -- calling `yylex' with the right arguments. */ + +#ifdef YYLEX_PARAM +# define YYLEX yylex (&yylval, YYLEX_PARAM) +#else +# define YYLEX yylex (&yylval, pComp) +#endif + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (YYID (0)) + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value, pComp); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (YYID (0)) + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, HB_COMP_PTR pComp) +#else +static void +yy_symbol_value_print (yyoutput, yytype, yyvaluep, pComp) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; + HB_COMP_PTR pComp; +#endif +{ + if (!yyvaluep) + return; + YYUSE (pComp); +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# else + YYUSE (yyoutput); +# endif + switch (yytype) + { + default: + break; + } +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, HB_COMP_PTR pComp) +#else +static void +yy_symbol_print (yyoutput, yytype, yyvaluep, pComp) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; + HB_COMP_PTR pComp; +#endif +{ + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + + yy_symbol_value_print (yyoutput, yytype, yyvaluep, pComp); + YYFPRINTF (yyoutput, ")"); +} + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) +#else +static void +yy_stack_print (bottom, top) + yytype_int16 *bottom; + yytype_int16 *top; +#endif +{ + YYFPRINTF (stderr, "Stack now"); + for (; bottom <= top; ++bottom) + YYFPRINTF (stderr, " %d", *bottom); + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (YYID (0)) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_reduce_print (YYSTYPE *yyvsp, int yyrule, HB_COMP_PTR pComp) +#else +static void +yy_reduce_print (yyvsp, yyrule, pComp) + YYSTYPE *yyvsp; + int yyrule; + HB_COMP_PTR pComp; +#endif +{ + int yynrhs = yyr2[yyrule]; + int yyi; + unsigned long int yylno = yyrline[yyrule]; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + fprintf (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + , pComp); + fprintf (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyvsp, Rule, pComp); \ +} while (YYID (0)) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + + +#if YYERROR_VERBOSE + +# ifndef yystrlen +# if defined __GLIBC__ && defined _STRING_H +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static YYSIZE_T +yystrlen (const char *yystr) +#else +static YYSIZE_T +yystrlen (yystr) + const char *yystr; +#endif +{ + YYSIZE_T yylen; + for (yylen = 0; yystr[yylen]; yylen++) + continue; + return yylen; +} +# endif +# endif + +# ifndef yystpcpy +# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static char * +yystpcpy (char *yydest, const char *yysrc) +#else +static char * +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +#endif +{ + char *yyd = yydest; + const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif + +# ifndef yytnamerr +/* Copy to YYRES the contents of YYSTR after stripping away unnecessary + quotes and backslashes, so that it's suitable for yyerror. The + heuristic is that double-quoting is unnecessary unless the string + contains an apostrophe, a comma, or backslash (other than + backslash-backslash). YYSTR is taken from yytname. If YYRES is + null, do not copy; instead, return the length of what the result + would have been. */ +static YYSIZE_T +yytnamerr (char *yyres, const char *yystr) +{ + if (*yystr == '"') + { + YYSIZE_T yyn = 0; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } + do_not_strip_quotes: ; + } + + if (! yyres) + return yystrlen (yystr); + + return yystpcpy (yyres, yystr) - yyres; +} +# endif + +/* Copy into YYRESULT an error message about the unexpected token + YYCHAR while in state YYSTATE. Return the number of bytes copied, + including the terminating null byte. If YYRESULT is null, do not + copy anything; just return the number of bytes that would be + copied. As a special case, return 0 if an ordinary "syntax error" + message will do. Return YYSIZE_MAXIMUM if overflow occurs during + size calculation. */ +static YYSIZE_T +yysyntax_error (char *yyresult, int yystate, int yychar) +{ + int yyn = yypact[yystate]; + + if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) + return 0; + else + { + int yytype = YYTRANSLATE (yychar); + YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + int yysize_overflow = 0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + int yyx; + +# if 0 + /* This is so xgettext sees the translatable formats that are + constructed on the fly. */ + YY_("syntax error, unexpected %s"); + YY_("syntax error, unexpected %s, expecting %s"); + YY_("syntax error, unexpected %s, expecting %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); +# endif + char *yyfmt; + char const *yyf; + static char const yyunexpected[] = "syntax error, unexpected %s"; + static char const yyexpecting[] = ", expecting %s"; + static char const yyor[] = " or %s"; + char yyformat[sizeof yyunexpected + + sizeof yyexpecting - 1 + + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) + * (sizeof yyor - 1))]; + char const *yyprefix = yyexpecting; + + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yycount = 1; + + yyarg[0] = yytname[yytype]; + yyfmt = yystpcpy (yyformat, yyunexpected); + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + yyformat[sizeof yyunexpected - 1] = '\0'; + break; + } + yyarg[yycount++] = yytname[yyx]; + yysize1 = yysize + yytnamerr (0, yytname[yyx]); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + yyfmt = yystpcpy (yyfmt, yyprefix); + yyprefix = yyor; + } + + yyf = YY_(yyformat); + yysize1 = yysize + yystrlen (yyf); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + + if (yysize_overflow) + return YYSIZE_MAXIMUM; + + if (yyresult) + { + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + char *yyp = yyresult; + int yyi = 0; + while ((*yyp = *yyf) != '\0') + { + if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyf += 2; + } + else + { + yyp++; + yyf++; + } + } + } + return yysize; + } +} +#endif /* YYERROR_VERBOSE */ + + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, HB_COMP_PTR pComp) +#else +static void +yydestruct (yymsg, yytype, yyvaluep, pComp) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; + HB_COMP_PTR pComp; +#endif +{ + YYUSE (yyvaluep); + YYUSE (pComp); + + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + switch (yytype) + { + case 19: /* "LITERAL" */ +#line 281 "../../harbour.y" + { if( (yyvaluep->valChar).dealloc ) hb_xfree( (yyvaluep->valChar).string ); }; +#line 3844 "harboury.c" + break; + case 93: /* "CBSTART" */ +#line 280 "../../harbour.y" + { hb_xfree( (yyvaluep->asCodeblock).string ); }; +#line 3849 "harboury.c" + break; + case 163: /* "NumValue" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 3856 "harboury.c" + break; + case 164: /* "DateValue" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 3863 "harboury.c" + break; + case 165: /* "NumAlias" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 3870 "harboury.c" + break; + case 166: /* "NilValue" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 3877 "harboury.c" + break; + case 167: /* "NilAlias" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 3884 "harboury.c" + break; + case 168: /* "LiteralValue" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 3891 "harboury.c" + break; + case 169: /* "LiteralAlias" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 3898 "harboury.c" + break; + case 170: /* "CodeBlockAlias" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 3905 "harboury.c" + break; + case 171: /* "Logical" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 3912 "harboury.c" + break; + case 172: /* "LogicalAlias" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 3919 "harboury.c" + break; + case 173: /* "SelfValue" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 3926 "harboury.c" + break; + case 174: /* "SelfAlias" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 3933 "harboury.c" + break; + case 175: /* "Array" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 3940 "harboury.c" + break; + case 177: /* "ArrayAlias" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 3947 "harboury.c" + break; + case 178: /* "ArrayAt" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 3954 "harboury.c" + break; + case 179: /* "ArrayAtAlias" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 3961 "harboury.c" + break; + case 180: /* "Variable" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 3968 "harboury.c" + break; + case 181: /* "VarAlias" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 3975 "harboury.c" + break; + case 182: /* "MacroVar" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 3982 "harboury.c" + break; + case 183: /* "MacroVarAlias" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 3989 "harboury.c" + break; + case 184: /* "MacroExpr" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 3996 "harboury.c" + break; + case 185: /* "MacroExprAlias" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4003 "harboury.c" + break; + case 186: /* "FieldAlias" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4010 "harboury.c" + break; + case 187: /* "FieldVarAlias" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4017 "harboury.c" + break; + case 188: /* "AliasId" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4024 "harboury.c" + break; + case 189: /* "AliasVar" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4031 "harboury.c" + break; + case 190: /* "AliasExpr" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4038 "harboury.c" + break; + case 191: /* "VariableAt" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4045 "harboury.c" + break; + case 192: /* "VariableAtAlias" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4052 "harboury.c" + break; + case 193: /* "FunIdentCall" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4059 "harboury.c" + break; + case 195: /* "FunCall" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4066 "harboury.c" + break; + case 198: /* "ArgList" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4073 "harboury.c" + break; + case 199: /* "FunCallAlias" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4080 "harboury.c" + break; + case 201: /* "ObjectData" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4087 "harboury.c" + break; + case 202: /* "ObjectDataAlias" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4094 "harboury.c" + break; + case 203: /* "ObjectMethod" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4101 "harboury.c" + break; + case 205: /* "ObjectMethodAlias" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4108 "harboury.c" + break; + case 206: /* "SimpleExpression" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4115 "harboury.c" + break; + case 211: /* "Expression" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4122 "harboury.c" + break; + case 214: /* "EmptyExpression" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4129 "harboury.c" + break; + case 215: /* "LValue" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4136 "harboury.c" + break; + case 216: /* "PostOp" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4143 "harboury.c" + break; + case 217: /* "ExprPostOp" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4150 "harboury.c" + break; + case 218: /* "ExprPreOp" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4157 "harboury.c" + break; + case 219: /* "ExprUnary" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4164 "harboury.c" + break; + case 220: /* "ExprAssign" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4171 "harboury.c" + break; + case 221: /* "ExprEqual" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4178 "harboury.c" + break; + case 222: /* "ExprPlusEq" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4185 "harboury.c" + break; + case 223: /* "ExprMinusEq" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4192 "harboury.c" + break; + case 224: /* "ExprMultEq" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4199 "harboury.c" + break; + case 225: /* "ExprDivEq" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4206 "harboury.c" + break; + case 226: /* "ExprModEq" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4213 "harboury.c" + break; + case 227: /* "ExprExpEq" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4220 "harboury.c" + break; + case 228: /* "ExprOperEq" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4227 "harboury.c" + break; + case 229: /* "ExprMath" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4234 "harboury.c" + break; + case 230: /* "ExprBool" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4241 "harboury.c" + break; + case 231: /* "ExprRelation" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4248 "harboury.c" + break; + case 232: /* "ArrayIndex" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4255 "harboury.c" + break; + case 233: /* "IndexList" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4262 "harboury.c" + break; + case 234: /* "ElemList" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4269 "harboury.c" + break; + case 235: /* "CodeBlock" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4276 "harboury.c" + break; + case 238: /* "BlockExpList" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4283 "harboury.c" + break; + case 239: /* "BlockNoVar" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4290 "harboury.c" + break; + case 240: /* "BlockVarList" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4297 "harboury.c" + break; + case 241: /* "PareExpList1" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4304 "harboury.c" + break; + case 242: /* "PareExpList2" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4311 "harboury.c" + break; + case 243: /* "PareExpList3" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4318 "harboury.c" + break; + case 244: /* "PareExpListN" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4325 "harboury.c" + break; + case 245: /* "PareExpList" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4332 "harboury.c" + break; + case 246: /* "PareExpListAlias" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4339 "harboury.c" + break; + case 247: /* "ExpList1" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4346 "harboury.c" + break; + case 248: /* "ExpList2" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4353 "harboury.c" + break; + case 249: /* "ExpList3" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4360 "harboury.c" + break; + case 250: /* "ExpList" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4367 "harboury.c" + break; + case 251: /* "IfInline" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4374 "harboury.c" + break; + case 253: /* "IfInlineAlias" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4381 "harboury.c" + break; + case 265: /* "DimList" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4388 "harboury.c" + break; + case 266: /* "DimIndex" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4395 "harboury.c" + break; + case 337: /* "ForVar" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4402 "harboury.c" + break; + case 338: /* "ForList" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4409 "harboury.c" + break; + case 339: /* "ForExpr" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4416 "harboury.c" + break; + case 366: /* "DoName" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4423 "harboury.c" + break; + case 367: /* "DoProc" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4430 "harboury.c" + break; + case 368: /* "DoArgList" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4437 "harboury.c" + break; + case 369: /* "DoArgument" */ +#line 243 "../../harbour.y" + { + hb_compExprDelete( (yyvaluep->asExpr), HB_COMP_PARAM ); + }; +#line 4444 "harboury.c" + break; + + default: + break; + } +} + + +/* Prevent warnings from -Wmissing-prototypes. */ + +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); +#else +int yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int yyparse (HB_COMP_PTR pComp); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ + + + + + + +/*----------. +| yyparse. | +`----------*/ + +#ifdef YYPARSE_PARAM +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void *YYPARSE_PARAM) +#else +int +yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +#endif +#else /* ! YYPARSE_PARAM */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (HB_COMP_PTR pComp) +#else +int +yyparse (pComp) + HB_COMP_PTR pComp; +#endif +#endif +{ + /* The look-ahead symbol. */ +int yychar; + +/* The semantic value of the look-ahead symbol. */ +YYSTYPE yylval; + +/* Number of syntax errors so far. */ +int yynerrs; + + int yystate; + int yyn; + int yyresult; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + /* Look-ahead token as an internal (translated) token number. */ + int yytoken = 0; +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + + /* Three stacks and their tools: + `yyss': related to states, + `yyvs': related to semantic values, + `yyls': related to locations. + + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss = yyssa; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp; + + + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + YYSIZE_T yystacksize = YYINITDEPTH; + + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. + The wasted elements are never initialized. */ + + yyssp = yyss; + yyvsp = yyvs; + + goto yysetstate; + +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; + + yysetstate: + *yyssp = yystate; + + if (yyss + yystacksize - 1 <= yyssp) + { + /* Get the current used size of the three stacks, in elements. */ + YYSIZE_T yysize = yyssp - yyss + 1; + +#ifdef yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; + } +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + goto yyexhaustedlab; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss); + YYSTACK_RELOCATE (yyvs); + +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif +#endif /* no yyoverflow */ + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + + + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + look-ahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to look-ahead token. */ + yyn = yypact[yystate]; + if (yyn == YYPACT_NINF) + goto yydefault; + + /* Not known => get a look-ahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token: ")); + yychar = YYLEX; + } + + if (yychar <= YYEOF) + { + yychar = yytoken = YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yyn == 0 || yyn == YYTABLE_NINF) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + if (yyn == YYFINAL) + YYACCEPT; + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the look-ahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token unless it is eof. */ + if (yychar != YYEOF) + yychar = YYEMPTY; + + yystate = yyn; + *++yyvsp = yylval; + + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 2: +#line 285 "../../harbour.y" + { hb_compLinePush( HB_COMP_PARAM ); ;} + break; + + case 3: +#line 285 "../../harbour.y" + { ;} + break; + + case 14: +#line 298 "../../harbour.y" + { yyclearin; yyerrok; ;} + break; + + case 24: +#line 308 "../../harbour.y" + { yyclearin; yyerrok; ;} + break; + + case 27: +#line 315 "../../harbour.y" + { HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} + break; + + case 28: +#line 318 "../../harbour.y" + { + if( (yyvsp[(1) - (1)].valChar).dealloc ) + { + (yyvsp[(1) - (1)].valChar).string = hb_compIdentifierNew( HB_COMP_PARAM, (yyvsp[(1) - (1)].valChar).string, HB_IDENT_FREE ); + (yyvsp[(1) - (1)].valChar).dealloc = FALSE; + } + hb_compAutoOpenAdd( HB_COMP_PARAM, (yyvsp[(1) - (1)].valChar).string ); + ;} + break; + + case 29: +#line 326 "../../harbour.y" + { + { + char szFileName[ _POSIX_PATH_MAX + 1 ]; + hb_strncat( hb_strncpy( szFileName, (yyvsp[(1) - (3)].valChar).string, _POSIX_PATH_MAX ), (yyvsp[(3) - (3)].valChar).string, _POSIX_PATH_MAX ); + hb_compAutoOpenAdd( HB_COMP_PARAM, hb_compIdentifierNew( HB_COMP_PARAM, szFileName, HB_IDENT_COPY ) ); + if( (yyvsp[(1) - (3)].valChar).dealloc ) + hb_xfree( (yyvsp[(1) - (3)].valChar).string ); + if( (yyvsp[(3) - (3)].valChar).dealloc ) + hb_xfree( (yyvsp[(3) - (3)].valChar).string ); + } + ;} + break; + + case 30: +#line 339 "../../harbour.y" + { HB_COMP_PARAM->cVarType = ' '; hb_compFunctionAdd( HB_COMP_PARAM, (yyvsp[(3) - (3)].string), ( HB_SYMBOLSCOPE ) (yyvsp[(1) - (3)].iNumber), 0 ); ;} + break; + + case 31: +#line 339 "../../harbour.y" + {;} + break; + + case 32: +#line 340 "../../harbour.y" + { HB_COMP_PARAM->cVarType = ' '; hb_compFunctionAdd( HB_COMP_PARAM, (yyvsp[(3) - (3)].string), ( HB_SYMBOLSCOPE ) (yyvsp[(1) - (3)].iNumber), FUN_PROCEDURE ); ;} + break; + + case 33: +#line 340 "../../harbour.y" + {;} + break; + + case 34: +#line 341 "../../harbour.y" + { HB_COMP_PARAM->cVarType = ' '; hb_compFunctionAdd( HB_COMP_PARAM, (yyvsp[(3) - (3)].string), ( HB_SYMBOLSCOPE ) (yyvsp[(1) - (3)].iNumber), 0 ); HB_COMP_PARAM->iVarScope = VS_PARAMETER; ;} + break; + + case 35: +#line 341 "../../harbour.y" + {;} + break; + + case 36: +#line 342 "../../harbour.y" + { HB_COMP_PARAM->cVarType = ' '; hb_compFunctionAdd( HB_COMP_PARAM, (yyvsp[(3) - (3)].string), ( HB_SYMBOLSCOPE ) (yyvsp[(1) - (3)].iNumber), FUN_PROCEDURE ); HB_COMP_PARAM->iVarScope = VS_PARAMETER;;} + break; + + case 37: +#line 342 "../../harbour.y" + {;} + break; + + case 38: +#line 345 "../../harbour.y" + { (yyval.iNumber) = HB_FS_PUBLIC; ;} + break; + + case 39: +#line 346 "../../harbour.y" + { (yyval.iNumber) = HB_FS_STATIC; ;} + break; + + case 40: +#line 347 "../../harbour.y" + { (yyval.iNumber) = HB_FS_INIT; ;} + break; + + case 41: +#line 348 "../../harbour.y" + { (yyval.iNumber) = HB_FS_EXIT; ;} + break; + + case 42: +#line 351 "../../harbour.y" + { (yyval.iNumber) = 0; ;} + break; + + case 43: +#line 352 "../../harbour.y" + { HB_COMP_PARAM->functions.pLast->pCode[0] = HB_P_VFRAME; (yyval.iNumber) = 0; ;} + break; + + case 44: +#line 353 "../../harbour.y" + { (yyval.iNumber) = (yyvsp[(1) - (1)].iNumber); ;} + break; + + case 45: +#line 354 "../../harbour.y" + { HB_COMP_PARAM->functions.pLast->pCode[0] = HB_P_VFRAME; (yyval.iNumber) = (yyvsp[(1) - (3)].iNumber); ;} + break; + + case 46: +#line 357 "../../harbour.y" + { HB_COMP_PARAM->cVarType = ' '; ;} + break; + + case 48: +#line 361 "../../harbour.y" + { HB_COMP_PARAM->cVarType = 'N'; ;} + break; + + case 49: +#line 362 "../../harbour.y" + { HB_COMP_PARAM->cVarType = 'C'; ;} + break; + + case 50: +#line 363 "../../harbour.y" + { HB_COMP_PARAM->cVarType = 'D'; ;} + break; + + case 51: +#line 364 "../../harbour.y" + { HB_COMP_PARAM->cVarType = 'L'; ;} + break; + + case 52: +#line 365 "../../harbour.y" + { HB_COMP_PARAM->cVarType = 'B'; ;} + break; + + case 53: +#line 366 "../../harbour.y" + { HB_COMP_PARAM->cVarType = 'O'; ;} + break; + + case 54: +#line 367 "../../harbour.y" + { HB_COMP_PARAM->cVarType = 'S'; HB_COMP_PARAM->szFromClass = (yyvsp[(2) - (2)].string); ;} + break; + + case 55: +#line 368 "../../harbour.y" + { HB_COMP_PARAM->cVarType = ' '; ;} + break; + + case 57: +#line 372 "../../harbour.y" + { HB_COMP_PARAM->cVarType = 'A'; ;} + break; + + case 58: +#line 373 "../../harbour.y" + { HB_COMP_PARAM->cVarType = 'n'; ;} + break; + + case 59: +#line 374 "../../harbour.y" + { HB_COMP_PARAM->cVarType = 'c'; ;} + break; + + case 60: +#line 375 "../../harbour.y" + { HB_COMP_PARAM->cVarType = 'd'; ;} + break; + + case 61: +#line 376 "../../harbour.y" + { HB_COMP_PARAM->cVarType = 'l'; ;} + break; + + case 62: +#line 377 "../../harbour.y" + { HB_COMP_PARAM->cVarType = 'a'; ;} + break; + + case 63: +#line 378 "../../harbour.y" + { HB_COMP_PARAM->cVarType = 'b'; ;} + break; + + case 64: +#line 379 "../../harbour.y" + { HB_COMP_PARAM->cVarType = 'o'; ;} + break; + + case 65: +#line 380 "../../harbour.y" + { HB_COMP_PARAM->cVarType = 's'; HB_COMP_PARAM->szFromClass = (yyvsp[(2) - (2)].string); ;} + break; + + case 66: +#line 383 "../../harbour.y" + { hb_compVariableAdd( HB_COMP_PARAM, (yyvsp[(1) - (2)].string), HB_COMP_PARAM->cVarType ); (yyval.iNumber) = 1; ;} + break; + + case 67: +#line 384 "../../harbour.y" + { hb_compVariableAdd( HB_COMP_PARAM, (yyvsp[(3) - (4)].string), HB_COMP_PARAM->cVarType ); (yyval.iNumber)++; ;} + break; + + case 68: +#line 392 "../../harbour.y" + { HB_COMP_PARAM->fDontGenLineNum = TRUE; ;} + break; + + case 69: +#line 392 "../../harbour.y" + { ;} + break; + + case 70: +#line 393 "../../harbour.y" + { ;} + break; + + case 71: +#line 394 "../../harbour.y" + { hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} + break; + + case 72: +#line 395 "../../harbour.y" + { hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} + break; + + case 73: +#line 396 "../../harbour.y" + { hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} + break; + + case 74: +#line 397 "../../harbour.y" + { hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} + break; + + case 75: +#line 398 "../../harbour.y" + { if( HB_COMP_ISSUPPORTED( HB_COMPFLAG_XBASE ) ) + hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); + else + hb_compExprDelete( hb_compErrorSyntax( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ), HB_COMP_PARAM ); + HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; + ;} + break; + + case 76: +#line 404 "../../harbour.y" + { if( HB_COMP_ISSUPPORTED( HB_COMPFLAG_XBASE ) ) + hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); + else + hb_compExprDelete( hb_compErrorSyntax( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ), HB_COMP_PARAM ); + HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; + ;} + break; + + case 77: +#line 410 "../../harbour.y" + { hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} + break; + + case 78: +#line 411 "../../harbour.y" + { hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} + break; + + case 79: +#line 412 "../../harbour.y" + { hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} + break; + + case 80: +#line 413 "../../harbour.y" + { hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} + break; + + case 81: +#line 414 "../../harbour.y" + { hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} + break; + + case 82: +#line 415 "../../harbour.y" + { hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} + break; + + case 83: +#line 416 "../../harbour.y" + { hb_compExprDelete( hb_compExprGenStatement( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; ;} + break; + + case 84: +#line 417 "../../harbour.y" + { hb_compGenBreak( HB_COMP_PARAM ); hb_compGenPCode2( HB_P_DOSHORT, 0, HB_COMP_PARAM ); + HB_COMP_PARAM->functions.pLast->bFlags |= FUN_BREAK_CODE; ;} + break; + + case 85: +#line 419 "../../harbour.y" + { hb_compLinePushIfInside( HB_COMP_PARAM ); ;} + break; + + case 86: +#line 419 "../../harbour.y" + { hb_compGenBreak( HB_COMP_PARAM ); hb_compExprDelete( hb_compExprGenPush( (yyvsp[(3) - (4)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); + hb_compGenPCode2( HB_P_DOSHORT, 1, HB_COMP_PARAM ); + HB_COMP_PARAM->functions.pLast->bFlags |= FUN_BREAK_CODE; + ;} + break; + + case 87: +#line 423 "../../harbour.y" + { + if( HB_COMP_PARAM->wSeqCounter ) + { + hb_compGenError( HB_COMP_PARAM, hb_comp_szErrors, 'E', HB_COMP_ERR_EXIT_IN_SEQUENCE, "RETURN", NULL ); + } + hb_compGenPCode1( HB_P_ENDPROC, HB_COMP_PARAM ); + if( (HB_COMP_PARAM->functions.pLast->bFlags & FUN_PROCEDURE) == 0 ) + { /* return from a function without a return value */ + hb_compGenWarning( HB_COMP_PARAM, hb_comp_szWarnings, 'W', HB_COMP_WARN_NO_RETURN_VALUE, NULL, NULL ); + } + HB_COMP_PARAM->functions.pLast->bFlags |= FUN_WITH_RETURN; + HB_COMP_PARAM->fDontGenLineNum = TRUE; + HB_COMP_PARAM->functions.pLast->bFlags |= FUN_BREAK_CODE; + ;} + break; + + case 88: +#line 437 "../../harbour.y" + { hb_compLinePushIfInside( HB_COMP_PARAM ); HB_COMP_PARAM->cVarType = ' '; ;} + break; + + case 89: +#line 439 "../../harbour.y" + { + HB_COMP_PARAM->cCastType = HB_COMP_PARAM->cVarType; + HB_COMP_PARAM->cVarType = ' '; + + if( HB_COMP_PARAM->wSeqCounter ) + { + hb_compGenError( HB_COMP_PARAM, hb_comp_szErrors, 'E', HB_COMP_ERR_EXIT_IN_SEQUENCE, "RETURN", NULL ); + } + hb_compExprDelete( hb_compExprGenPush( (yyvsp[(3) - (4)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); /* TODO: check if return value agree with declared value */ + hb_compGenPCode2( HB_P_RETVALUE, HB_P_ENDPROC, HB_COMP_PARAM ); + if( HB_COMP_PARAM->functions.pLast->bFlags & FUN_PROCEDURE ) + { /* procedure returns a value */ + hb_compGenWarning( HB_COMP_PARAM, hb_comp_szWarnings, 'W', HB_COMP_WARN_PROC_RETURN_VALUE, NULL, NULL ); + } + HB_COMP_PARAM->functions.pLast->bFlags |= FUN_WITH_RETURN; + HB_COMP_PARAM->fDontGenLineNum = TRUE; + HB_COMP_PARAM->functions.pLast->bFlags |= FUN_BREAK_CODE; + ;} + break; + + case 90: +#line 457 "../../harbour.y" + { hb_compLinePushIfInside( HB_COMP_PARAM ); HB_COMP_PARAM->iVarScope = VS_PUBLIC; ;} + break; + + case 91: +#line 459 "../../harbour.y" + { hb_compRTVariableGen( HB_COMP_PARAM, "__MVPUBLIC" ); + HB_COMP_PARAM->cVarType = ' '; HB_COMP_PARAM->iVarScope = VS_NONE; + HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; + ;} + break; + + case 93: +#line 463 "../../harbour.y" + { hb_compLinePushIfInside( HB_COMP_PARAM ); HB_COMP_PARAM->iVarScope = VS_PRIVATE; ;} + break; + + case 94: +#line 465 "../../harbour.y" + { hb_compRTVariableGen( HB_COMP_PARAM, "__MVPRIVATE" ); + HB_COMP_PARAM->cVarType = ' '; HB_COMP_PARAM->iVarScope = VS_NONE; + HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; + ;} + break; + + case 96: +#line 470 "../../harbour.y" + { HB_COMP_PARAM->fDontGenLineNum = !HB_COMP_PARAM->fDebugInfo; ;} + break; + + case 97: +#line 470 "../../harbour.y" + { hb_compLoopExit( HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags |= FUN_BREAK_CODE; ;} + break; + + case 98: +#line 471 "../../harbour.y" + { HB_COMP_PARAM->fDontGenLineNum = !HB_COMP_PARAM->fDebugInfo; ;} + break; + + case 99: +#line 471 "../../harbour.y" + { hb_compLoopLoop( HB_COMP_PARAM ); HB_COMP_PARAM->functions.pLast->bFlags |= FUN_BREAK_CODE; ;} + break; + + case 101: +#line 473 "../../harbour.y" + { + if( HB_COMP_PARAM->szAnnounce == NULL ) + { + /* check for reserved name + * NOTE: Clipper doesn't check for it + */ + char * szFunction = hb_compReservedName( (yyvsp[(2) - (2)].string) ); + if( szFunction ) + hb_compGenError( HB_COMP_PARAM, hb_comp_szErrors, 'E', HB_COMP_ERR_FUNC_RESERVED, szFunction, (yyvsp[(2) - (2)].string) ); + HB_COMP_PARAM->szAnnounce = (yyvsp[(2) - (2)].string); + } + else + hb_compGenWarning( HB_COMP_PARAM, hb_comp_szWarnings, 'W', HB_COMP_WARN_DUPL_ANNOUNCE, (yyvsp[(2) - (2)].string), NULL ); + ;} + break; + + case 103: +#line 489 "../../harbour.y" + { hb_compLinePushIfInside( HB_COMP_PARAM ); ;} + break; + + case 105: +#line 492 "../../harbour.y" + { (yyval.lNumber) = 0; HB_COMP_PARAM->fDontGenLineNum = TRUE; ;} + break; + + case 106: +#line 493 "../../harbour.y" + { (yyval.lNumber) = 1; ;} + break; + + case 107: +#line 494 "../../harbour.y" + { (yyval.lNumber) = 1; ;} + break; + + case 108: +#line 495 "../../harbour.y" + { (yyval.lNumber) = 1; ;} + break; + + case 109: +#line 496 "../../harbour.y" + { hb_compGenError( HB_COMP_PARAM, hb_comp_szErrors, 'E', HB_COMP_ERR_UNCLOSED_STRU, NULL, NULL ); ;} + break; + + case 110: +#line 499 "../../harbour.y" + {;} + break; + + case 111: +#line 500 "../../harbour.y" + {;} + break; + + case 112: +#line 501 "../../harbour.y" + {;} + break; + + case 113: +#line 502 "../../harbour.y" + {;} + break; + + case 118: +#line 511 "../../harbour.y" + { (yyval.lNumber) = (yyvsp[(1) - (1)].lNumber); ;} + break; + + case 119: +#line 512 "../../harbour.y" + { (yyval.lNumber) += (yyvsp[(2) - (2)].lNumber); ;} + break; + + case 120: +#line 515 "../../harbour.y" + { hb_compExternAdd( HB_COMP_PARAM, (yyvsp[(1) - (1)].string) ); ;} + break; + + case 121: +#line 516 "../../harbour.y" + { hb_compExternAdd( HB_COMP_PARAM, (yyvsp[(3) - (3)].string) ); ;} + break; + + case 122: +#line 519 "../../harbour.y" + { (yyval.string) = (yyvsp[(1) - (1)].string); ;} + break; + + case 123: +#line 520 "../../harbour.y" + { (yyval.string) = "STEP"; ;} + break; + + case 124: +#line 521 "../../harbour.y" + { (yyval.string) = "TO"; ;} + break; + + case 125: +#line 522 "../../harbour.y" + { (yyval.string) = "LOOP"; ;} + break; + + case 126: +#line 523 "../../harbour.y" + { (yyval.string) = "EXIT"; ;} + break; + + case 127: +#line 524 "../../harbour.y" + { (yyval.string) = "IN"; ;} + break; + + case 128: +#line 525 "../../harbour.y" + { (yyval.string) = (yyvsp[(1) - (1)].string); ;} + break; + + case 129: +#line 526 "../../harbour.y" + { (yyval.string) = (yyvsp[(1) - (1)].string); ;} + break; + + case 130: +#line 527 "../../harbour.y" + { (yyval.string) = (yyvsp[(1) - (1)].string); ;} + break; + + case 131: +#line 528 "../../harbour.y" + { (yyval.string) = (yyvsp[(1) - (1)].string); ;} + break; + + case 132: +#line 529 "../../harbour.y" + { (yyval.string) = (yyvsp[(1) - (1)].string); ;} + break; + + case 133: +#line 530 "../../harbour.y" + { (yyval.string) = (yyvsp[(1) - (1)].string); ;} + break; + + case 134: +#line 531 "../../harbour.y" + { (yyval.string) = (yyvsp[(1) - (1)].string); ;} + break; + + case 135: +#line 532 "../../harbour.y" + { (yyval.string) = (yyvsp[(1) - (1)].string); ;} + break; + + case 136: +#line 533 "../../harbour.y" + { (yyval.string) = (yyvsp[(1) - (1)].string); ;} + break; + + case 137: +#line 534 "../../harbour.y" + { (yyval.string) = (yyvsp[(1) - (1)].string); ;} + break; + + case 138: +#line 535 "../../harbour.y" + { (yyval.string) = (yyvsp[(1) - (1)].string); ;} + break; + + case 139: +#line 540 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewDouble( (yyvsp[(1) - (1)].valDouble).dNumber, (yyvsp[(1) - (1)].valDouble).bWidth, (yyvsp[(1) - (1)].valDouble).bDec, HB_COMP_PARAM ); ;} + break; + + case 140: +#line 541 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewLong( (yyvsp[(1) - (1)].valLong).lNumber, HB_COMP_PARAM ); ;} + break; + + case 141: +#line 544 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewDate( (yyvsp[(1) - (1)].valLong).lNumber, HB_COMP_PARAM ); + if( (yyvsp[(1) - (1)].valLong).lNumber == 0 ) + { + hb_compGenError( HB_COMP_PARAM, hb_comp_szErrors, 'E', HB_COMP_ERR_INVALID_DATE, HB_COMP_PARAM->pLex->lasttok, NULL ); + } + ;} + break; + + case 142: +#line 552 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewLong( (yyvsp[(1) - (2)].valLong).lNumber, HB_COMP_PARAM ); ;} + break; + + case 143: +#line 553 "../../harbour.y" + { (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, hb_compExprNewDouble( (yyvsp[(1) - (2)].valDouble).dNumber, (yyvsp[(1) - (2)].valDouble).bWidth, (yyvsp[(1) - (2)].valDouble).bDec, HB_COMP_PARAM ) ); ;} + break; + + case 144: +#line 558 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewNil( HB_COMP_PARAM ); ;} + break; + + case 145: +#line 561 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} + break; + + case 146: +#line 566 "../../harbour.y" + { + (yyval.asExpr) = hb_compExprNewString( (yyvsp[(1) - (1)].valChar).string, (yyvsp[(1) - (1)].valChar).length, (yyvsp[(1) - (1)].valChar).dealloc, HB_COMP_PARAM ); + ;} + break; + + case 147: +#line 571 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} + break; + + case 148: +#line 576 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} + break; + + case 149: +#line 581 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewLogical( TRUE, HB_COMP_PARAM ); ;} + break; + + case 150: +#line 582 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewLogical( FALSE, HB_COMP_PARAM ); ;} + break; + + case 151: +#line 585 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} + break; + + case 152: +#line 590 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewSelf( HB_COMP_PARAM ); ;} + break; + + case 153: +#line 593 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} + break; + + case 154: +#line 598 "../../harbour.y" + {(yyval.bTrue)=HB_COMP_PARAM->iPassByRef;HB_COMP_PARAM->iPassByRef=HB_PASSBYREF_ARRAY;;} + break; + + case 155: +#line 598 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewArray( (yyvsp[(3) - (4)].asExpr), HB_COMP_PARAM ); HB_COMP_PARAM->iPassByRef=(yyvsp[(2) - (4)].bTrue); ;} + break; + + case 156: +#line 601 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} + break; + + case 157: +#line 606 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 158: +#line 609 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} + break; + + case 159: +#line 614 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewVar( (yyvsp[(1) - (1)].string), HB_COMP_PARAM ); ;} + break; + + case 160: +#line 617 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewAlias( (yyvsp[(1) - (2)].string), HB_COMP_PARAM ); ;} + break; + + case 161: +#line 622 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewMacro( NULL, '&', (yyvsp[(1) - (1)].string), HB_COMP_PARAM ); ;} + break; + + case 162: +#line 623 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewMacro( NULL, 0, (yyvsp[(1) - (1)].string), HB_COMP_PARAM ); ;} + break; + + case 163: +#line 626 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} + break; + + case 164: +#line 631 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewMacro( (yyvsp[(2) - (2)].asExpr), 0, NULL, HB_COMP_PARAM ); ;} + break; + + case 165: +#line 634 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} + break; + + case 166: +#line 641 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewAlias( "FIELD", HB_COMP_PARAM ); ;} + break; + + case 167: +#line 642 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(3) - (3)].asExpr); ;} + break; + + case 168: +#line 647 "../../harbour.y" + { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 169: +#line 648 "../../harbour.y" + { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 170: +#line 649 "../../harbour.y" + { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 171: +#line 650 "../../harbour.y" + { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 172: +#line 651 "../../harbour.y" + { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 173: +#line 652 "../../harbour.y" + { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(2) - (2)].asExpr) ); ;} + break; + + case 174: +#line 653 "../../harbour.y" + { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(2) - (2)].asExpr) ); ;} + break; + + case 175: +#line 654 "../../harbour.y" + { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(2) - (2)].asExpr) ); ;} + break; + + case 176: +#line 655 "../../harbour.y" + { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(2) - (2)].asExpr) ); ;} + break; + + case 177: +#line 656 "../../harbour.y" + { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(2) - (2)].asExpr) ); ;} + break; + + case 178: +#line 657 "../../harbour.y" + { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(2) - (2)].asExpr) ); ;} + break; + + case 179: +#line 658 "../../harbour.y" + { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(2) - (2)].asExpr) ); ;} + break; + + case 180: +#line 659 "../../harbour.y" + { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(2) - (2)].asExpr) ); ;} + break; + + case 181: +#line 662 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewVar( (yyvsp[(1) - (1)].string), HB_COMP_PARAM ); ;} + break; + + case 182: +#line 663 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 183: +#line 664 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 184: +#line 667 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewAliasVar( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 185: +#line 668 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewAliasVar( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 186: +#line 669 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewAliasVar( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 187: +#line 670 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewAliasVar( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 188: +#line 671 "../../harbour.y" + { hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ); ;} + break; + + case 189: +#line 672 "../../harbour.y" + { hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ); ;} + break; + + case 190: +#line 673 "../../harbour.y" + { hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ); ;} + break; + + case 191: +#line 674 "../../harbour.y" + { hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ); ;} + break; + + case 192: +#line 675 "../../harbour.y" + { hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ); ;} + break; + + case 193: +#line 676 "../../harbour.y" + { hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ); ;} + break; + + case 194: +#line 677 "../../harbour.y" + { hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ); ;} + break; + + case 195: +#line 678 "../../harbour.y" + { hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ); ;} + break; + + case 196: +#line 679 "../../harbour.y" + { hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ); ;} + break; + + case 197: +#line 680 "../../harbour.y" + { hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ); ;} + break; + + case 198: +#line 681 "../../harbour.y" + { hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ); ;} + break; + + case 199: +#line 682 "../../harbour.y" + { hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(1) - (2)].asExpr) ); ;} + break; + + case 200: +#line 683 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewAliasVar( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 201: +#line 684 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewAliasVar( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 202: +#line 685 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewAliasVar( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 203: +#line 694 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewAliasExpr( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 204: +#line 695 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewAliasExpr( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 205: +#line 696 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewAliasExpr( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 206: +#line 697 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewAliasExpr( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 207: +#line 698 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewAliasExpr( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 208: +#line 699 "../../harbour.y" + { hb_compExprDelete( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compErrorAlias( HB_COMP_PARAM, (yyvsp[(2) - (2)].asExpr) ); ;} + break; + + case 209: +#line 704 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 210: +#line 705 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 211: +#line 706 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 212: +#line 707 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 213: +#line 708 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 214: +#line 709 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 215: +#line 710 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 216: +#line 711 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 217: +#line 712 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 218: +#line 713 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 219: +#line 714 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 220: +#line 715 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 221: +#line 716 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 222: +#line 717 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 223: +#line 718 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 224: +#line 721 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} + break; + + case 225: +#line 726 "../../harbour.y" + {(yyval.bTrue)=HB_COMP_PARAM->iPassByRef;HB_COMP_PARAM->iPassByRef=HB_PASSBYREF_FUNCALL;;} + break; + + case 226: +#line 726 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewFunCall( hb_compExprNewFunName( (yyvsp[(1) - (5)].string), HB_COMP_PARAM ), (yyvsp[(4) - (5)].asExpr), HB_COMP_PARAM ); HB_COMP_PARAM->iPassByRef=(yyvsp[(3) - (5)].bTrue); ;} + break; + + case 227: +#line 729 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 228: +#line 730 "../../harbour.y" + {(yyval.bTrue)=HB_COMP_PARAM->iPassByRef;HB_COMP_PARAM->iPassByRef=HB_PASSBYREF_FUNCALL;;} + break; + + case 229: +#line 730 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewFunCall( (yyvsp[(1) - (5)].asExpr), (yyvsp[(4) - (5)].asExpr), HB_COMP_PARAM ); HB_COMP_PARAM->iPassByRef=(yyvsp[(3) - (5)].bTrue); ;} + break; + + case 230: +#line 731 "../../harbour.y" + {(yyval.bTrue)=HB_COMP_PARAM->iPassByRef;HB_COMP_PARAM->iPassByRef=HB_PASSBYREF_FUNCALL;;} + break; + + case 231: +#line 731 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewFunCall( (yyvsp[(1) - (5)].asExpr), (yyvsp[(4) - (5)].asExpr), HB_COMP_PARAM ); HB_COMP_PARAM->iPassByRef=(yyvsp[(3) - (5)].bTrue); ;} + break; + + case 232: +#line 734 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewArgList( (yyvsp[(1) - (1)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 233: +#line 735 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAddListExpr( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr) ); ;} + break; + + case 234: +#line 738 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} + break; + + case 235: +#line 744 "../../harbour.y" + { (yyval.asMessage).value.string = (yyvsp[(1) - (1)].string); (yyval.asMessage).bMacro=FALSE; ;} + break; + + case 236: +#line 745 "../../harbour.y" + { (yyval.asMessage).value.macro = (yyvsp[(1) - (1)].asExpr); (yyval.asMessage).bMacro=TRUE; ;} + break; + + case 237: +#line 746 "../../harbour.y" + { (yyval.asMessage).value.macro = (yyvsp[(1) - (1)].asExpr); (yyval.asMessage).bMacro=TRUE; ;} + break; + + case 238: +#line 749 "../../harbour.y" + { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} + break; + + case 239: +#line 750 "../../harbour.y" + { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} + break; + + case 240: +#line 751 "../../harbour.y" + { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} + break; + + case 241: +#line 752 "../../harbour.y" + { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} + break; + + case 242: +#line 753 "../../harbour.y" + { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} + break; + + case 243: +#line 754 "../../harbour.y" + { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} + break; + + case 244: +#line 755 "../../harbour.y" + { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} + break; + + case 245: +#line 756 "../../harbour.y" + { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} + break; + + case 246: +#line 757 "../../harbour.y" + { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} + break; + + case 247: +#line 758 "../../harbour.y" + { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} + break; + + case 248: +#line 759 "../../harbour.y" + { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} + break; + + case 249: +#line 760 "../../harbour.y" + { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} + break; + + case 250: +#line 761 "../../harbour.y" + { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} + break; + + case 251: +#line 762 "../../harbour.y" + { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} + break; + + case 252: +#line 763 "../../harbour.y" + { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} + break; + + case 253: +#line 764 "../../harbour.y" + { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} + break; + + case 254: +#line 765 "../../harbour.y" + { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} + break; + + case 255: +#line 766 "../../harbour.y" + { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} + break; + + case 256: +#line 767 "../../harbour.y" + { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} + break; + + case 257: +#line 768 "../../harbour.y" + { (yyval.asExpr) = ((yyvsp[(3) - (3)].asMessage).bMacro ? hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), NULL, (yyvsp[(3) - (3)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asMessage).value.string, NULL, HB_COMP_PARAM )); ;} + break; + + case 258: +#line 769 "../../harbour.y" + { if( HB_COMP_PARAM->wWithObjectCnt == 0 ) + hb_compGenError( HB_COMP_PARAM, hb_comp_szErrors, 'E', HB_COMP_ERR_WITHOBJECT, NULL, NULL ); + (yyval.asExpr) = ((yyvsp[(2) - (2)].asMessage).bMacro ? hb_compExprNewSend( NULL, NULL, (yyvsp[(2) - (2)].asMessage).value.macro, HB_COMP_PARAM ) : hb_compExprNewSend( NULL, (yyvsp[(2) - (2)].asMessage).value.string, NULL, HB_COMP_PARAM )); + ;} + break; + + case 259: +#line 775 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} + break; + + case 260: +#line 780 "../../harbour.y" + {(yyval.bTrue)=HB_COMP_PARAM->iPassByRef;HB_COMP_PARAM->iPassByRef=HB_PASSBYREF_FUNCALL;;} + break; + + case 261: +#line 780 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewMethodCall( (yyvsp[(1) - (5)].asExpr), (yyvsp[(4) - (5)].asExpr) ); HB_COMP_PARAM->iPassByRef=(yyvsp[(3) - (5)].bTrue); ;} + break; + + case 262: +#line 783 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} + break; + + case 264: +#line 793 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 265: +#line 794 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 266: +#line 795 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 267: +#line 796 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 268: +#line 797 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 269: +#line 798 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 270: +#line 799 "../../harbour.y" + {HB_COMP_PARAM->cVarType = ' ';;} + break; + + case 271: +#line 799 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (3)].asExpr); ;} + break; + + case 272: +#line 800 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 273: +#line 801 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 274: +#line 802 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 275: +#line 803 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 276: +#line 804 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 277: +#line 805 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 278: +#line 806 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 279: +#line 807 "../../harbour.y" + {HB_COMP_PARAM->cVarType = ' ';;} + break; + + case 280: +#line 807 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (3)].asExpr); ;} + break; + + case 281: +#line 808 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 282: +#line 809 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 283: +#line 810 "../../harbour.y" + {HB_COMP_PARAM->cVarType = ' ';;} + break; + + case 284: +#line 810 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (3)].asExpr); ;} + break; + + case 285: +#line 811 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 286: +#line 812 "../../harbour.y" + {HB_COMP_PARAM->cVarType = ' ';;} + break; + + case 287: +#line 812 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (3)].asExpr); ;} + break; + + case 288: +#line 813 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 289: +#line 814 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 290: +#line 815 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 291: +#line 816 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 292: +#line 817 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 293: +#line 818 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 294: +#line 819 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 295: +#line 820 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 296: +#line 821 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 297: +#line 824 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 298: +#line 825 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 299: +#line 826 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 300: +#line 827 "../../harbour.y" + { HB_COMP_PARAM->cVarType = ' ';;} + break; + + case 301: +#line 827 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (3)].asExpr); ;} + break; + + case 302: +#line 828 "../../harbour.y" + { HB_COMP_PARAM->cVarType = ' ';;} + break; + + case 303: +#line 828 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (3)].asExpr); ;} + break; + + case 304: +#line 829 "../../harbour.y" + { (yyval.asExpr) = hb_compCheckPassByRef( HB_COMP_PARAM, hb_compExprNewVarRef( (yyvsp[(2) - (2)].string), HB_COMP_PARAM ) ); ;} + break; + + case 305: +#line 830 "../../harbour.y" + { int bPassByRef=HB_COMP_PARAM->iPassByRef;HB_COMP_PARAM->iPassByRef=HB_PASSBYREF_FUNCALL;(yyval.string) = hb_compExprAsSymbol( (yyvsp[(2) - (2)].asExpr) ); hb_compExprDelete( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); (yyval.asExpr) = hb_compCheckPassByRef( HB_COMP_PARAM, hb_compExprNewFunRef( (yyval.string), HB_COMP_PARAM ) ); HB_COMP_PARAM->iPassByRef=bPassByRef; ;} + break; + + case 306: +#line 831 "../../harbour.y" + { (yyval.asExpr) = hb_compCheckPassByRef( HB_COMP_PARAM, hb_compExprNewRef( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ) ); ;} + break; + + case 307: +#line 832 "../../harbour.y" + { (yyval.asExpr) = hb_compCheckPassByRef( HB_COMP_PARAM, hb_compExprNewRef( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ) ); ;} + break; + + case 308: +#line 833 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewRef( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 309: +#line 836 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewEmpty( HB_COMP_PARAM ); ;} + break; + + case 311: +#line 840 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewVar( (yyvsp[(1) - (1)].string), HB_COMP_PARAM ); ;} + break; + + case 317: +#line 846 "../../harbour.y" + { (yyval.asExpr) = hb_compExprListStrip( (yyvsp[(1) - (1)].asExpr), NULL ); ;} + break; + + case 318: +#line 852 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewPostInc( (yyvsp[(0) - (1)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 319: +#line 853 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewPostDec( (yyvsp[(0) - (1)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 320: +#line 860 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 321: +#line 861 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 322: +#line 862 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 323: +#line 863 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 324: +#line 864 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 325: +#line 865 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 326: +#line 866 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 327: +#line 867 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 328: +#line 868 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 329: +#line 869 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 330: +#line 870 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 331: +#line 871 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 332: +#line 872 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 333: +#line 873 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 334: +#line 874 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 335: +#line 875 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 336: +#line 876 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 337: +#line 877 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 338: +#line 878 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 339: +#line 881 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewPreInc( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 340: +#line 882 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewPreDec( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 341: +#line 885 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewNot( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 342: +#line 886 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewNegate( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 343: +#line 887 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 344: +#line 894 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 345: +#line 895 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 346: +#line 896 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 347: +#line 897 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 348: +#line 898 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 349: +#line 899 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 350: +#line 900 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 351: +#line 901 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 352: +#line 902 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); HB_COMP_PARAM->cCastType = HB_COMP_PARAM->cVarType; HB_COMP_PARAM->cVarType = ' ';;} + break; + + case 353: +#line 903 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 354: +#line 904 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 355: +#line 905 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 356: +#line 906 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 357: +#line 907 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); HB_COMP_PARAM->cCastType = HB_COMP_PARAM->cVarType; HB_COMP_PARAM->cVarType = ' ';;} + break; + + case 358: +#line 908 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 359: +#line 909 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 360: +#line 910 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 361: +#line 911 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); HB_COMP_PARAM->cCastType = HB_COMP_PARAM->cVarType; HB_COMP_PARAM->cVarType = ' ';;} + break; + + case 362: +#line 912 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 363: +#line 915 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 364: +#line 916 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 365: +#line 917 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 366: +#line 918 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 367: +#line 919 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 368: +#line 920 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 369: +#line 921 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 370: +#line 922 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 371: +#line 923 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 372: +#line 924 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 373: +#line 925 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 374: +#line 926 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 375: +#line 927 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 376: +#line 928 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 377: +#line 929 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 378: +#line 930 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 379: +#line 931 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 380: +#line 932 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 381: +#line 933 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 382: +#line 934 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 383: +#line 937 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 384: +#line 938 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 385: +#line 939 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 386: +#line 940 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 387: +#line 941 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 388: +#line 942 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 389: +#line 943 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 390: +#line 944 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 391: +#line 945 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 392: +#line 946 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 393: +#line 947 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 394: +#line 948 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 395: +#line 949 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 396: +#line 950 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 397: +#line 951 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 398: +#line 952 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 399: +#line 953 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 400: +#line 954 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 401: +#line 955 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 402: +#line 958 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 403: +#line 959 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 404: +#line 960 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 405: +#line 961 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 406: +#line 962 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 407: +#line 963 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 408: +#line 964 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 409: +#line 965 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 410: +#line 966 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 411: +#line 967 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 412: +#line 968 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 413: +#line 969 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 414: +#line 970 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 415: +#line 971 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 416: +#line 972 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 417: +#line 973 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 418: +#line 974 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 419: +#line 975 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 420: +#line 976 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 421: +#line 979 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 422: +#line 980 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 423: +#line 981 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 424: +#line 982 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 425: +#line 983 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 426: +#line 984 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 427: +#line 985 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 428: +#line 986 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 429: +#line 987 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 430: +#line 988 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 431: +#line 989 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 432: +#line 990 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 433: +#line 991 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 434: +#line 992 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 435: +#line 993 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 436: +#line 994 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 437: +#line 995 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 438: +#line 996 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 439: +#line 997 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 440: +#line 1000 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 441: +#line 1001 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 442: +#line 1002 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 443: +#line 1003 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 444: +#line 1004 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 445: +#line 1005 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 446: +#line 1006 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 447: +#line 1007 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 448: +#line 1008 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 449: +#line 1009 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 450: +#line 1010 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 451: +#line 1011 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 452: +#line 1012 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 453: +#line 1013 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 454: +#line 1014 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 455: +#line 1015 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 456: +#line 1016 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 457: +#line 1017 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 458: +#line 1018 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 459: +#line 1021 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 460: +#line 1022 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 461: +#line 1023 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 462: +#line 1024 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 463: +#line 1025 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 464: +#line 1026 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 465: +#line 1027 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 466: +#line 1028 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 467: +#line 1029 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 468: +#line 1030 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 469: +#line 1031 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 470: +#line 1032 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 471: +#line 1033 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 472: +#line 1034 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 473: +#line 1035 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 474: +#line 1036 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 475: +#line 1037 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 476: +#line 1038 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 477: +#line 1039 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 478: +#line 1042 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 479: +#line 1043 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 480: +#line 1044 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 481: +#line 1045 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 482: +#line 1046 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 483: +#line 1047 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 484: +#line 1048 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 485: +#line 1049 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 486: +#line 1050 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 487: +#line 1051 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 488: +#line 1052 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 489: +#line 1053 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 490: +#line 1054 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 491: +#line 1055 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 492: +#line 1056 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 493: +#line 1057 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 494: +#line 1058 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 495: +#line 1059 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 496: +#line 1060 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 497: +#line 1063 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 498: +#line 1064 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 499: +#line 1065 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 500: +#line 1066 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 501: +#line 1067 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 502: +#line 1068 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 503: +#line 1071 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlus( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 504: +#line 1072 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinus( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 505: +#line 1073 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMult( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 506: +#line 1074 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDiv( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 507: +#line 1075 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMod( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 508: +#line 1076 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPower( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 509: +#line 1079 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewAnd( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 510: +#line 1080 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewOr( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 511: +#line 1083 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewEQ( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 512: +#line 1084 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewLT( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 513: +#line 1085 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewGT( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 514: +#line 1086 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewLE( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 515: +#line 1087 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewGE( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 516: +#line 1088 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewNE( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 517: +#line 1089 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewNE( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 518: +#line 1090 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewIN( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 519: +#line 1091 "../../harbour.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewEqual( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 520: +#line 1094 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} + break; + + case 521: +#line 1100 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewArrayAt( (yyvsp[(0) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 522: +#line 1101 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewArrayAt( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 523: +#line 1102 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewArrayAt( (yyvsp[(1) - (4)].asExpr), (yyvsp[(4) - (4)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 524: +#line 1105 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewList( (yyvsp[(1) - (1)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 525: +#line 1106 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAddListExpr( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr) ); ;} + break; + + case 526: +#line 1109 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewCodeBlock( (yyvsp[(1) - (1)].asCodeblock).string, (yyvsp[(1) - (1)].asCodeblock).isMacro, (yyvsp[(1) - (1)].asCodeblock).lateEval, HB_COMP_PARAM ); ;} + break; + + case 527: +#line 1110 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (6)].asExpr); ;} + break; + + case 528: +#line 1111 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewCodeBlock( (yyvsp[(1) - (1)].asCodeblock).string, (yyvsp[(1) - (1)].asCodeblock).isMacro, (yyvsp[(1) - (1)].asCodeblock).lateEval, HB_COMP_PARAM ); ;} + break; + + case 529: +#line 1112 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (6)].asExpr); ;} + break; + + case 530: +#line 1117 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAddCodeblockExpr( (yyvsp[(-2) - (1)].asExpr), (yyvsp[(1) - (1)].asExpr) ); ;} + break; + + case 531: +#line 1118 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAddCodeblockExpr( (yyvsp[(-2) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr) ); ;} + break; + + case 532: +#line 1124 "../../harbour.y" + { (yyval.asExpr) = NULL; ;} + break; + + case 533: +#line 1127 "../../harbour.y" + { HB_COMP_PARAM->iVarScope = VS_LOCAL; (yyval.asExpr) = hb_compExprCBVarAdd( (yyvsp[(0) - (2)].asExpr), (yyvsp[(1) - (2)].string), HB_COMP_PARAM->cVarType, HB_COMP_PARAM ); HB_COMP_PARAM->cVarType = ' '; ;} + break; + + case 534: +#line 1128 "../../harbour.y" + { HB_COMP_PARAM->iVarScope = VS_LOCAL; (yyval.asExpr) = hb_compExprCBVarAdd( (yyvsp[(0) - (4)].asExpr), (yyvsp[(3) - (4)].string), HB_COMP_PARAM->cVarType, HB_COMP_PARAM ); HB_COMP_PARAM->cVarType = ' '; ;} + break; + + case 535: +#line 1138 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} + break; + + case 536: +#line 1141 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} + break; + + case 537: +#line 1144 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} + break; + + case 538: +#line 1147 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} + break; + + case 539: +#line 1150 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 540: +#line 1151 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 541: +#line 1152 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 542: +#line 1153 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 543: +#line 1156 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} + break; + + case 544: +#line 1159 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewList( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 545: +#line 1162 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAddListExpr( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr) ); ;} + break; + + case 546: +#line 1165 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAddListExpr( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr) ); ;} + break; + + case 547: +#line 1168 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAddListExpr( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr) ); ;} + break; + + case 548: +#line 1169 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAddListExpr( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr) ); ;} + break; + + case 549: +#line 1172 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewIIF( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 550: +#line 1174 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAddListExpr( (yyvsp[(2) - (5)].asExpr), (yyvsp[(4) - (5)].asExpr) ); ;} + break; + + case 551: +#line 1176 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewIIF( hb_compExprAddListExpr( (yyvsp[(6) - (8)].asExpr), (yyvsp[(7) - (8)].asExpr) ), HB_COMP_PARAM ); ;} + break; + + case 552: +#line 1179 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} + break; + + case 553: +#line 1182 "../../harbour.y" + { HB_COMP_PARAM->iVarScope = VS_LOCAL; hb_compLinePush( HB_COMP_PARAM ); ;} + break; + + case 554: +#line 1182 "../../harbour.y" + { HB_COMP_PARAM->cVarType = ' '; ;} + break; + + case 555: +#line 1183 "../../harbour.y" + { HB_COMP_PARAM->iVarScope = VS_STATIC; hb_compLinePush( HB_COMP_PARAM ); ;} + break; + + case 556: +#line 1183 "../../harbour.y" + { HB_COMP_PARAM->cVarType = ' '; ;} + break; + + case 557: +#line 1184 "../../harbour.y" + { if( HB_COMP_PARAM->functions.pLast->bFlags & FUN_USES_LOCAL_PARAMS ) + hb_compGenError( HB_COMP_PARAM, hb_comp_szErrors, 'E', HB_COMP_ERR_PARAMETERS_NOT_ALLOWED, NULL, NULL ); + else + HB_COMP_PARAM->functions.pLast->wParamNum=0; HB_COMP_PARAM->iVarScope = ( VS_PRIVATE | VS_PARAMETER ); ;} + break; + + case 558: +#line 1188 "../../harbour.y" + { HB_COMP_PARAM->iVarScope = VS_NONE; ;} + break; + + case 559: +#line 1191 "../../harbour.y" + { (yyval.iNumber) = 1; ;} + break; + + case 560: +#line 1192 "../../harbour.y" + { (yyval.iNumber)++; ;} + break; + + case 561: +#line 1195 "../../harbour.y" + { (yyval.iNumber) = 1; ;} + break; + + case 562: +#line 1196 "../../harbour.y" + { (yyval.iNumber)++; ;} + break; + + case 564: +#line 1206 "../../harbour.y" + { hb_compRTVariableAdd( HB_COMP_PARAM, hb_compExprNewRTVar( NULL, (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), FALSE ); ;} + break; + + case 565: +#line 1208 "../../harbour.y" + { hb_compExprDelete( hb_compExprGenPush( (yyvsp[(4) - (4)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); + hb_compRTVariableAdd( HB_COMP_PARAM, hb_compExprNewRTVar( NULL, (yyvsp[(1) - (4)].asExpr), HB_COMP_PARAM ), TRUE ); + ;} + break; + + case 566: +#line 1212 "../../harbour.y" + { + USHORT uCount = (USHORT) hb_compExprListLen( (yyvsp[(2) - (2)].asExpr) ); + hb_compExprDelete( hb_compExprGenPush( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); + hb_compGenPCode3( HB_P_ARRAYDIM, HB_LOBYTE( uCount ), HB_HIBYTE( uCount ), HB_COMP_PARAM ); + hb_compRTVariableAdd( HB_COMP_PARAM, hb_compExprNewRTVar( NULL, (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ), TRUE ); + ;} + break; + + case 567: +#line 1219 "../../harbour.y" + { + USHORT uCount = (USHORT) hb_compExprListLen( (yyvsp[(2) - (3)].asExpr) ); + hb_compExprDelete( hb_compExprGenPush( (yyvsp[(2) - (3)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); + hb_compGenPCode3( HB_P_ARRAYDIM, HB_LOBYTE( uCount ), HB_HIBYTE( uCount ), HB_COMP_PARAM ); + hb_compRTVariableAdd( HB_COMP_PARAM, hb_compExprNewRTVar( NULL, (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), TRUE ); + ;} + break; + + case 568: +#line 1227 "../../harbour.y" + { hb_compVariableAdd( HB_COMP_PARAM, (yyvsp[(1) - (2)].string), HB_COMP_PARAM->cVarType ); ;} + break; + + case 569: +#line 1228 "../../harbour.y" + { + if( HB_COMP_PARAM->iVarScope == VS_STATIC ) + { + hb_compStaticDefStart( HB_COMP_PARAM ); /* switch to statics pcode buffer */ + hb_compStaticDefEnd( HB_COMP_PARAM ); + hb_compGenStaticName( (yyvsp[(1) - (3)].string), HB_COMP_PARAM ); + } + else if( HB_COMP_PARAM->iVarScope == VS_PUBLIC || HB_COMP_PARAM->iVarScope == VS_PRIVATE ) + { + hb_compRTVariableAdd( HB_COMP_PARAM, hb_compExprNewRTVar( (yyvsp[(1) - (3)].string), NULL, HB_COMP_PARAM ), FALSE ); + } + ;} + break; + + case 570: +#line 1241 "../../harbour.y" + { (yyval.iNumber) = HB_COMP_PARAM->iVarScope; + hb_compVariableAdd( HB_COMP_PARAM, (yyvsp[(1) - (2)].string), HB_COMP_PARAM->cVarType ); + ;} + break; + + case 571: +#line 1244 "../../harbour.y" + {HB_COMP_PARAM->cVarType = ' ';;} + break; + + case 572: +#line 1245 "../../harbour.y" + { + HB_COMP_PARAM->cCastType = HB_COMP_PARAM->cVarType; + HB_COMP_PARAM->cVarType = ' '; + + HB_COMP_PARAM->iVarScope = (yyvsp[(3) - (6)].iNumber); + if( HB_COMP_PARAM->iVarScope == VS_STATIC ) + { + hb_compStaticDefStart( HB_COMP_PARAM ); /* switch to statics pcode buffer */ + hb_compExprDelete( hb_compExprGenStatement( hb_compExprAssignStatic( hb_compExprNewVar( (yyvsp[(1) - (6)].string), HB_COMP_PARAM ), (yyvsp[(6) - (6)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ), HB_COMP_PARAM ); + hb_compStaticDefEnd( HB_COMP_PARAM ); + hb_compGenStaticName( (yyvsp[(1) - (6)].string), HB_COMP_PARAM ); + } + else if( HB_COMP_PARAM->iVarScope == VS_PUBLIC || HB_COMP_PARAM->iVarScope == VS_PRIVATE ) + { + hb_compExprDelete( hb_compExprGenPush( (yyvsp[(6) - (6)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); + hb_compRTVariableAdd( HB_COMP_PARAM, hb_compExprNewRTVar( (yyvsp[(1) - (6)].string), NULL, HB_COMP_PARAM ), TRUE ); + } + else + { + hb_compExprDelete( hb_compExprGenStatement( hb_compExprAssign( hb_compExprNewVar( (yyvsp[(1) - (6)].string), HB_COMP_PARAM ), (yyvsp[(6) - (6)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ), HB_COMP_PARAM ); + } + HB_COMP_PARAM->iVarScope = (yyvsp[(3) - (6)].iNumber); + ;} + break; + + case 573: +#line 1269 "../../harbour.y" + { hb_compVariableDim( (yyvsp[(1) - (2)].string), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 574: +#line 1270 "../../harbour.y" + { hb_compVariableDim( (yyvsp[(1) - (3)].string), (yyvsp[(2) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 575: +#line 1276 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} + break; + + case 576: +#line 1279 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewArgList( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 577: +#line 1280 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAddListExpr( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr) ); ;} + break; + + case 578: +#line 1281 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAddListExpr( (yyvsp[(1) - (4)].asExpr), (yyvsp[(4) - (4)].asExpr) ); ;} + break; + + case 579: +#line 1285 "../../harbour.y" + { HB_COMP_PARAM->iVarScope = VS_FIELD; ;} + break; + + case 580: +#line 1285 "../../harbour.y" + { HB_COMP_PARAM->cVarType = ' '; ;} + break; + + case 581: +#line 1288 "../../harbour.y" + { (yyval.iNumber)=hb_compFieldsCount( HB_COMP_PARAM ); hb_compVariableAdd( HB_COMP_PARAM, (yyvsp[(1) - (2)].string), HB_COMP_PARAM->cVarType ); ;} + break; + + case 582: +#line 1289 "../../harbour.y" + { hb_compVariableAdd( HB_COMP_PARAM, (yyvsp[(3) - (4)].string), HB_COMP_PARAM->cVarType ); ;} + break; + + case 583: +#line 1290 "../../harbour.y" + { hb_compFieldSetAlias( HB_COMP_PARAM, (yyvsp[(3) - (3)].string), (yyvsp[(1) - (3)].iNumber) ); ;} + break; + + case 584: +#line 1293 "../../harbour.y" + { HB_COMP_PARAM->iVarScope = VS_MEMVAR; ;} + break; + + case 585: +#line 1293 "../../harbour.y" + { HB_COMP_PARAM->cVarType = ' '; ;} + break; + + case 586: +#line 1296 "../../harbour.y" + { hb_compVariableAdd( HB_COMP_PARAM, (yyvsp[(1) - (2)].string), HB_COMP_PARAM->cVarType ); ;} + break; + + case 587: +#line 1297 "../../harbour.y" + { hb_compVariableAdd( HB_COMP_PARAM, (yyvsp[(3) - (4)].string), HB_COMP_PARAM->cVarType ); ;} + break; + + case 588: +#line 1300 "../../harbour.y" + { hb_compDeclaredAdd( HB_COMP_PARAM, (yyvsp[(2) - (3)].string) ); HB_COMP_PARAM->szDeclaredFun = (yyvsp[(2) - (3)].string); ;} + break; + + case 589: +#line 1301 "../../harbour.y" + { + if( HB_COMP_PARAM->pLastDeclared ) + { + HB_COMP_PARAM->pLastDeclared->cType = HB_COMP_PARAM->cVarType; + + if ( toupper( HB_COMP_PARAM->cVarType ) == 'S' ) + { + HB_COMP_PARAM->pLastDeclared->pClass = hb_compClassFind( HB_COMP_PARAM, HB_COMP_PARAM->szFromClass ); + if( ! HB_COMP_PARAM->pLastDeclared->pClass ) + { + hb_compGenWarning( HB_COMP_PARAM, hb_comp_szWarnings, 'W', HB_COMP_WARN_CLASS_NOT_FOUND, HB_COMP_PARAM->szFromClass, HB_COMP_PARAM->pLastDeclared->szName ); + HB_COMP_PARAM->pLastDeclared->cType = ( isupper( ( int ) HB_COMP_PARAM->cVarType ) ? 'O' : 'o' ); + } + + /* Resetting */ + HB_COMP_PARAM->szFromClass = NULL; + } + } + HB_COMP_PARAM->szDeclaredFun = NULL; + HB_COMP_PARAM->cVarType = ' '; + HB_COMP_PARAM->iVarScope = VS_NONE; + ;} + break; + + case 590: +#line 1323 "../../harbour.y" + { HB_COMP_PARAM->pLastClass = hb_compClassAdd( HB_COMP_PARAM, (yyvsp[(2) - (2)].string) ); ;} + break; + + case 591: +#line 1323 "../../harbour.y" + { HB_COMP_PARAM->iVarScope = VS_NONE; ;} + break; + + case 592: +#line 1324 "../../harbour.y" + { HB_COMP_PARAM->pLastClass = hb_compClassAdd( HB_COMP_PARAM, (yyvsp[(2) - (3)].string) ); HB_COMP_PARAM->iVarScope = VS_NONE; ;} + break; + + case 593: +#line 1325 "../../harbour.y" + { HB_COMP_PARAM->iVarScope = VS_NONE; ;} + break; + + case 594: +#line 1326 "../../harbour.y" + { HB_COMP_PARAM->cDataListType = HB_COMP_PARAM->cVarType; ;} + break; + + case 595: +#line 1326 "../../harbour.y" + { HB_COMP_PARAM->cDataListType = 0; HB_COMP_PARAM->iVarScope = VS_NONE; ;} + break; + + case 602: +#line 1339 "../../harbour.y" + { HB_COMP_PARAM->pLastMethod = hb_compMethodAdd( HB_COMP_PARAM, HB_COMP_PARAM->pLastClass, (yyvsp[(1) - (2)].string) ); ;} + break; + + case 603: +#line 1340 "../../harbour.y" + { + if( HB_COMP_PARAM->pLastMethod ) + { + HB_COMP_PARAM->pLastMethod->cType = HB_COMP_PARAM->cVarType; + if ( toupper( HB_COMP_PARAM->cVarType ) == 'S' ) + { + HB_COMP_PARAM->pLastMethod->pClass = hb_compClassFind( HB_COMP_PARAM, HB_COMP_PARAM->szFromClass ); + if( ! HB_COMP_PARAM->pLastMethod->pClass ) + { + hb_compGenWarning( HB_COMP_PARAM, hb_comp_szWarnings, 'W', HB_COMP_WARN_CLASS_NOT_FOUND, HB_COMP_PARAM->szFromClass, HB_COMP_PARAM->pLastMethod->szName ); + HB_COMP_PARAM->pLastMethod->cType = ( isupper( ( int ) HB_COMP_PARAM->cVarType ) ? 'O' : 'o' ); + } + + HB_COMP_PARAM->szFromClass = NULL; + } + } + HB_COMP_PARAM->pLastMethod = NULL; + HB_COMP_PARAM->cVarType = ' '; + ;} + break; + + case 604: +#line 1361 "../../harbour.y" + { HB_COMP_PARAM->pLastMethod = hb_compMethodAdd( HB_COMP_PARAM, HB_COMP_PARAM->pLastClass, (yyvsp[(1) - (1)].string) ); ;} + break; + + case 605: +#line 1362 "../../harbour.y" + { + if( HB_COMP_PARAM->pLastMethod ) + { + PCOMCLASS pClass; + char szSetData[ HB_SYMBOL_NAME_LEN + 1 ]; + int iLen; + + /* List Type overrides if exists. */ + if( HB_COMP_PARAM->cDataListType ) HB_COMP_PARAM->cVarType = HB_COMP_PARAM->cDataListType; + + HB_COMP_PARAM->pLastMethod->cType = HB_COMP_PARAM->cVarType; + if ( toupper( HB_COMP_PARAM->cVarType ) == 'S' ) + { + pClass = hb_compClassFind( HB_COMP_PARAM, HB_COMP_PARAM->szFromClass ); + HB_COMP_PARAM->pLastMethod->pClass = pClass; + if( ! HB_COMP_PARAM->pLastMethod->pClass ) + { + hb_compGenWarning( HB_COMP_PARAM, hb_comp_szWarnings, 'W', HB_COMP_WARN_CLASS_NOT_FOUND, HB_COMP_PARAM->szFromClass, HB_COMP_PARAM->pLastMethod->szName ); + HB_COMP_PARAM->pLastMethod->cType = ( isupper( ( int ) HB_COMP_PARAM->cVarType ) ? 'O' :'o' ); + } + } + else + pClass = NULL; + + iLen = strlen( (yyvsp[(1) - (3)].string) ); + if( iLen >= HB_SYMBOL_NAME_LEN ) + iLen = HB_SYMBOL_NAME_LEN - 1; + szSetData[ 0 ] = '_'; + memcpy( szSetData + 1, (yyvsp[(1) - (3)].string), iLen ); + szSetData[ iLen + 1 ] = '\0'; + + HB_COMP_PARAM->pLastMethod = hb_compMethodAdd( HB_COMP_PARAM, HB_COMP_PARAM->pLastClass, + hb_compIdentifierNew( HB_COMP_PARAM, szSetData, HB_IDENT_COPY ) ); + HB_COMP_PARAM->pLastMethod->cType = HB_COMP_PARAM->cVarType; + HB_COMP_PARAM->pLastMethod->iParamCount = 1; + + /* TOFIX: these allocations causes memory leaks */ + HB_COMP_PARAM->pLastMethod->cParamTypes = ( BYTE * ) hb_xgrab( 1 ); + HB_COMP_PARAM->pLastMethod->pParamClasses = ( PCOMCLASS * ) hb_xgrab( sizeof( COMCLASS ) ); + + HB_COMP_PARAM->pLastMethod->cParamTypes[0] = HB_COMP_PARAM->cVarType; + HB_COMP_PARAM->pLastMethod->pParamClasses[0] = pClass; + + if ( toupper( HB_COMP_PARAM->cVarType ) == 'S' ) + { + HB_COMP_PARAM->pLastMethod->pClass = pClass; + HB_COMP_PARAM->szFromClass = NULL; + } + } + + HB_COMP_PARAM->pLastMethod = NULL; + HB_COMP_PARAM->cVarType = ' '; + ;} + break; + + case 606: +#line 1417 "../../harbour.y" + {;} + break; + + case 610: +#line 1423 "../../harbour.y" + {;} + break; + + case 611: +#line 1424 "../../harbour.y" + {;} + break; + + case 612: +#line 1427 "../../harbour.y" + {;} + break; + + case 613: +#line 1433 "../../harbour.y" + { hb_compDeclaredParameterAdd( HB_COMP_PARAM, (yyvsp[(1) - (2)].string), HB_COMP_PARAM->cVarType ); ;} + break; + + case 614: +#line 1434 "../../harbour.y" + { hb_compDeclaredParameterAdd( HB_COMP_PARAM, (yyvsp[(2) - (3)].string), HB_COMP_PARAM->cVarType + VT_OFFSET_BYREF ); ;} + break; + + case 615: +#line 1435 "../../harbour.y" + { hb_compDeclaredParameterAdd( HB_COMP_PARAM, (yyvsp[(2) - (5)].string), 'F' ); hb_compExprDelete( (yyvsp[(4) - (5)].asExpr), HB_COMP_PARAM );;} + break; + + case 616: +#line 1436 "../../harbour.y" + { hb_compDeclaredParameterAdd( HB_COMP_PARAM, (yyvsp[(3) - (4)].string), HB_COMP_PARAM->cVarType ); ;} + break; + + case 617: +#line 1437 "../../harbour.y" + { hb_compDeclaredParameterAdd( HB_COMP_PARAM, (yyvsp[(4) - (5)].string), HB_COMP_PARAM->cVarType + VT_OFFSET_BYREF ); ;} + break; + + case 618: +#line 1438 "../../harbour.y" + { hb_compDeclaredParameterAdd( HB_COMP_PARAM, (yyvsp[(4) - (7)].string), 'F' ); hb_compExprDelete( (yyvsp[(6) - (7)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 619: +#line 1441 "../../harbour.y" + { hb_compDeclaredParameterAdd( HB_COMP_PARAM, (yyvsp[(2) - (3)].string), HB_COMP_PARAM->cVarType + VT_OFFSET_OPTIONAL ); ;} + break; + + case 620: +#line 1442 "../../harbour.y" + { hb_compDeclaredParameterAdd( HB_COMP_PARAM, (yyvsp[(3) - (4)].string), HB_COMP_PARAM->cVarType + VT_OFFSET_OPTIONAL + VT_OFFSET_BYREF ); ;} + break; + + case 621: +#line 1443 "../../harbour.y" + { hb_compDeclaredParameterAdd( HB_COMP_PARAM, (yyvsp[(3) - (6)].string), HB_COMP_PARAM->cVarType + VT_OFFSET_OPTIONAL + VT_OFFSET_BYREF ); ;} + break; + + case 622: +#line 1444 "../../harbour.y" + { hb_compDeclaredParameterAdd( HB_COMP_PARAM, (yyvsp[(4) - (5)].string), HB_COMP_PARAM->cVarType + VT_OFFSET_OPTIONAL ); ;} + break; + + case 623: +#line 1445 "../../harbour.y" + { hb_compDeclaredParameterAdd( HB_COMP_PARAM, (yyvsp[(5) - (6)].string), HB_COMP_PARAM->cVarType + VT_OFFSET_OPTIONAL + VT_OFFSET_BYREF ); ;} + break; + + case 624: +#line 1446 "../../harbour.y" + { hb_compDeclaredParameterAdd( HB_COMP_PARAM, (yyvsp[(5) - (8)].string), HB_COMP_PARAM->cVarType + VT_OFFSET_OPTIONAL + VT_OFFSET_BYREF ); ;} + break; + + case 632: +#line 1458 "../../harbour.y" + { hb_compGenJumpHere( (yyvsp[(1) - (2)].iNumber), HB_COMP_PARAM ); ;} + break; + + case 633: +#line 1459 "../../harbour.y" + { hb_compGenJumpHere( (yyvsp[(1) - (3)].iNumber), HB_COMP_PARAM ); ;} + break; + + case 634: +#line 1460 "../../harbour.y" + { hb_compGenJumpHere( (yyvsp[(1) - (3)].iNumber), HB_COMP_PARAM ); hb_compElseIfFix( HB_COMP_PARAM, (yyvsp[(2) - (3)].pVoid) ); ;} + break; + + case 635: +#line 1461 "../../harbour.y" + { hb_compGenJumpHere( (yyvsp[(1) - (4)].iNumber), HB_COMP_PARAM ); hb_compElseIfFix( HB_COMP_PARAM, (yyvsp[(2) - (4)].pVoid) ); ;} + break; + + case 636: +#line 1464 "../../harbour.y" + { (yyval.lNumber) = (yyvsp[(1) - (1)].lNumber); ;} + break; + + case 637: +#line 1465 "../../harbour.y" + { (yyval.lNumber) += (yyvsp[(2) - (2)].lNumber); ;} + break; + + case 638: +#line 1468 "../../harbour.y" + { (yyval.lNumber) = 0; ;} + break; + + case 639: +#line 1469 "../../harbour.y" + { (yyval.lNumber) = (yyvsp[(1) - (1)].lNumber); ;} + break; + + case 640: +#line 1472 "../../harbour.y" + { ++HB_COMP_PARAM->wIfCounter; hb_compLinePush( HB_COMP_PARAM ); ;} + break; + + case 641: +#line 1472 "../../harbour.y" + { hb_compExprDelete( hb_compExprGenPush( (yyvsp[(2) - (4)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); (yyval.iNumber) = hb_compGenJumpFalse( 0, HB_COMP_PARAM ); ;} + break; + + case 642: +#line 1474 "../../harbour.y" + { (yyval.iNumber) = hb_compGenJump( 0, HB_COMP_PARAM ); hb_compGenJumpHere( (yyvsp[(5) - (6)].iNumber), HB_COMP_PARAM ); ;} + break; + + case 643: +#line 1476 "../../harbour.y" + { ++HB_COMP_PARAM->wIfCounter; hb_compLinePush( HB_COMP_PARAM ); ;} + break; + + case 644: +#line 1476 "../../harbour.y" + { hb_compExprDelete( hb_compExprGenPush( (yyvsp[(2) - (4)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); (yyval.iNumber) = hb_compGenJumpFalse( 0, HB_COMP_PARAM ); ;} + break; + + case 645: +#line 1478 "../../harbour.y" + { (yyval.iNumber) = hb_compGenJump( 0, HB_COMP_PARAM ); hb_compGenJumpHere( (yyvsp[(5) - (6)].iNumber), HB_COMP_PARAM ); ;} + break; + + case 646: +#line 1480 "../../harbour.y" + { ++HB_COMP_PARAM->wIfCounter; hb_compLinePush( HB_COMP_PARAM ); ;} + break; + + case 647: +#line 1480 "../../harbour.y" + { hb_compExprDelete( hb_compExprGenPush( (yyvsp[(2) - (4)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); (yyval.iNumber) = hb_compGenJumpFalse( 0, HB_COMP_PARAM ); ;} + break; + + case 648: +#line 1482 "../../harbour.y" + { (yyval.iNumber) = hb_compGenJump( 0, HB_COMP_PARAM ); hb_compGenJumpHere( (yyvsp[(5) - (6)].iNumber), HB_COMP_PARAM ); ;} + break; + + case 649: +#line 1484 "../../harbour.y" + { ++HB_COMP_PARAM->wIfCounter; hb_compLinePush( HB_COMP_PARAM ); ;} + break; + + case 650: +#line 1484 "../../harbour.y" + { hb_compExprDelete( hb_compExprGenPush( (yyvsp[(2) - (4)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); (yyval.iNumber) = hb_compGenJumpFalse( 0, HB_COMP_PARAM ); ;} + break; + + case 651: +#line 1486 "../../harbour.y" + { (yyval.iNumber) = hb_compGenJump( 0, HB_COMP_PARAM ); hb_compGenJumpHere( (yyvsp[(5) - (6)].iNumber), HB_COMP_PARAM ); ;} + break; + + case 652: +#line 1488 "../../harbour.y" + { ++HB_COMP_PARAM->wIfCounter; hb_compLinePush( HB_COMP_PARAM ); ;} + break; + + case 653: +#line 1488 "../../harbour.y" + { hb_compExprDelete( hb_compExprGenPush( (yyvsp[(2) - (4)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); (yyval.iNumber) = hb_compGenJumpFalse( 0, HB_COMP_PARAM ); ;} + break; + + case 654: +#line 1490 "../../harbour.y" + { (yyval.iNumber) = hb_compGenJump( 0, HB_COMP_PARAM ); hb_compGenJumpHere( (yyvsp[(5) - (6)].iNumber), HB_COMP_PARAM ); ;} + break; + + case 655: +#line 1493 "../../harbour.y" + { HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_BREAK_CODE; ;} + break; + + case 657: +#line 1497 "../../harbour.y" + { HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_BREAK_CODE; hb_compLinePush( HB_COMP_PARAM ); ;} + break; + + case 658: +#line 1499 "../../harbour.y" + { hb_compExprDelete( hb_compExprGenPush( (yyvsp[(3) - (4)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); + (yyval.iNumber) = hb_compGenJumpFalse( 0, HB_COMP_PARAM ); + ;} + break; + + case 659: +#line 1503 "../../harbour.y" + { (yyval.pVoid) = hb_compElseIfGen( HB_COMP_PARAM, NULL, hb_compGenJump( 0, HB_COMP_PARAM ) ); + hb_compGenJumpHere( (yyvsp[(5) - (6)].iNumber), HB_COMP_PARAM ); + ;} + break; + + case 660: +#line 1507 "../../harbour.y" + { HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_BREAK_CODE; hb_compLinePush( HB_COMP_PARAM ); ;} + break; + + case 661: +#line 1509 "../../harbour.y" + { hb_compExprDelete( hb_compExprGenPush( (yyvsp[(4) - (5)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); + (yyval.iNumber) = hb_compGenJumpFalse( 0, HB_COMP_PARAM ); + ;} + break; + + case 662: +#line 1513 "../../harbour.y" + { (yyval.pVoid) = hb_compElseIfGen( HB_COMP_PARAM, (yyvsp[(1) - (7)].pVoid), hb_compGenJump( 0, HB_COMP_PARAM ) ); + hb_compGenJumpHere( (yyvsp[(6) - (7)].iNumber), HB_COMP_PARAM ); + ;} + break; + + case 663: +#line 1518 "../../harbour.y" + { --HB_COMP_PARAM->wIfCounter; HB_COMP_PARAM->functions.pLast->bFlags &= ~ ( /*FUN_WITH_RETURN |*/ FUN_BREAK_CODE ); ;} + break; + + case 664: +#line 1519 "../../harbour.y" + { --HB_COMP_PARAM->wIfCounter; HB_COMP_PARAM->functions.pLast->bFlags &= ~ ( /*FUN_WITH_RETURN |*/ FUN_BREAK_CODE ); ;} + break; + + case 665: +#line 1524 "../../harbour.y" + { hb_compElseIfFix( HB_COMP_PARAM, (yyvsp[(2) - (3)].pVoid) ); ;} + break; + + case 668: +#line 1536 "../../harbour.y" + { hb_compElseIfFix( HB_COMP_PARAM, (yyvsp[(2) - (4)].pVoid) ); ;} + break; + + case 669: +#line 1540 "../../harbour.y" + { --HB_COMP_PARAM->wCaseCounter; + HB_COMP_PARAM->functions.pLast->bFlags &= ~ ( FUN_WITH_RETURN | FUN_BREAK_CODE ); + ;} + break; + + case 670: +#line 1544 "../../harbour.y" + { --HB_COMP_PARAM->wCaseCounter; + HB_COMP_PARAM->functions.pLast->bFlags &= ~ ( FUN_WITH_RETURN | FUN_BREAK_CODE ); + ;} + break; + + case 671: +#line 1549 "../../harbour.y" + { ++HB_COMP_PARAM->wCaseCounter; hb_compLinePushIfDebugger( HB_COMP_PARAM );;} + break; + + case 673: +#line 1552 "../../harbour.y" + { ;} + break; + + case 674: +#line 1553 "../../harbour.y" + { + if( (yyvsp[(2) - (2)].lNumber) > 0 ) + { + hb_compGenError( HB_COMP_PARAM, hb_comp_szErrors, 'E', HB_COMP_ERR_MAYHEM_IN_CASE, NULL, NULL ); + } + ;} + break; + + case 675: +#line 1561 "../../harbour.y" + { hb_compLinePush( HB_COMP_PARAM ); ;} + break; + + case 676: +#line 1562 "../../harbour.y" + { + hb_compExprDelete( hb_compExprGenPush( (yyvsp[(3) - (4)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); + (yyval.iNumber) = hb_compGenJumpFalse( 0, HB_COMP_PARAM ); + ;} + break; + + case 677: +#line 1567 "../../harbour.y" + { + HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_BREAK_CODE; + (yyval.pVoid) = hb_compElseIfGen( HB_COMP_PARAM, NULL, hb_compGenJump( 0, HB_COMP_PARAM ) ); + hb_compGenJumpHere( (yyvsp[(5) - (6)].iNumber), HB_COMP_PARAM ); + ;} + break; + + case 678: +#line 1573 "../../harbour.y" + { hb_compLinePush( HB_COMP_PARAM ); ;} + break; + + case 679: +#line 1574 "../../harbour.y" + { + hb_compExprDelete( hb_compExprGenPush( (yyvsp[(4) - (5)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); + (yyval.iNumber) = hb_compGenJumpFalse( 0, HB_COMP_PARAM ); + ;} + break; + + case 680: +#line 1579 "../../harbour.y" + { + HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_BREAK_CODE; + (yyval.pVoid) = hb_compElseIfGen( HB_COMP_PARAM, (yyvsp[(1) - (7)].pVoid), hb_compGenJump( 0, HB_COMP_PARAM ) ); + hb_compGenJumpHere( (yyvsp[(6) - (7)].iNumber), HB_COMP_PARAM ); + ;} + break; + + case 681: +#line 1586 "../../harbour.y" + {hb_compLinePushIfDebugger( HB_COMP_PARAM ); ;} + break; + + case 682: +#line 1586 "../../harbour.y" + { HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_BREAK_CODE; ;} + break; + + case 684: +#line 1588 "../../harbour.y" + { hb_compGenError( HB_COMP_PARAM, hb_comp_szErrors, 'E', HB_COMP_ERR_MAYHEM_IN_CASE, NULL, NULL ); ;} + break; + + case 686: +#line 1593 "../../harbour.y" + { + hb_compExprDelete( hb_compExprGenPush( (yyvsp[(2) - (3)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); + (yyval.lNumber) = hb_compGenJumpFalse( 0, HB_COMP_PARAM ); + ;} + break; + + case 687: +#line 1598 "../../harbour.y" + { + hb_compLoopHere( HB_COMP_PARAM ); + hb_compGenJump( (yyvsp[(1) - (5)].lNumber) - HB_COMP_PARAM->functions.pLast->lPCodePos, HB_COMP_PARAM ); + ;} + break; + + case 688: +#line 1603 "../../harbour.y" + { + hb_compGenJumpHere( (yyvsp[(4) - (7)].lNumber), HB_COMP_PARAM ); --HB_COMP_PARAM->wWhileCounter; + hb_compLoopEnd( HB_COMP_PARAM ); + HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; + ;} + break; + + case 689: +#line 1610 "../../harbour.y" + { (yyval.lNumber) = HB_COMP_PARAM->functions.pLast->lPCodePos; hb_compLinePushIfInside( HB_COMP_PARAM ); ++HB_COMP_PARAM->wWhileCounter; hb_compLoopStart( HB_COMP_PARAM ); ;} + break; + + case 690: +#line 1613 "../../harbour.y" + { HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_BREAK_CODE; ;} + break; + + case 691: +#line 1614 "../../harbour.y" + { HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_BREAK_CODE; ;} + break; + + case 692: +#line 1618 "../../harbour.y" + { + hb_compLinePush( HB_COMP_PARAM ); + hb_compDebugStart(); + ++HB_COMP_PARAM->wForCounter; /* 5 */ + (yyval.asExpr) = hb_compExprGenStatement( hb_compExprAssign( (yyvsp[(2) - (4)].asExpr), (yyvsp[(4) - (4)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); + if( hb_compExprAsSymbol((yyvsp[(2) - (4)].asExpr)) ) + { + hb_compForStart( HB_COMP_PARAM, hb_compExprAsSymbol((yyvsp[(2) - (4)].asExpr)), FALSE ); + } + ;} + break; + + case 693: +#line 1629 "../../harbour.y" + { + hb_compLoopStart( HB_COMP_PARAM ); + (yyval.lNumber) = hb_compGenJump( 0, HB_COMP_PARAM ); /* 9 */ + ;} + break; + + case 694: +#line 1634 "../../harbour.y" + { + (yyval.lNumber) = HB_COMP_PARAM->functions.pLast->lPCodePos; /* 11 */ + ;} + break; + + case 695: +#line 1638 "../../harbour.y" + { + short iStep, iLocal; + + hb_compLoopHere( HB_COMP_PARAM ); + + if( (yyvsp[(8) - (12)].asExpr) ) + { + if( hb_compExprIsInteger((yyvsp[(8) - (12)].asExpr)) ) + iStep = hb_compExprAsInteger((yyvsp[(8) - (12)].asExpr)); + else + iStep = 0; + } + else + { + iStep = 1; + } + + if( iStep && ( iLocal = hb_compLocalGetPos( HB_COMP_PARAM, hb_compExprAsSymbol((yyvsp[(2) - (12)].asExpr)) ) ) > 0 && iLocal < 256 ) + { + hb_compGenPCode4( HB_P_LOCALNEARADDINT, ( BYTE ) iLocal, HB_LOBYTE( iStep ), HB_HIBYTE( iStep ), HB_COMP_PARAM ); + } + else if( (yyvsp[(8) - (12)].asExpr) ) + { + hb_compExprClear( hb_compExprGenStatement( hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(2) - (12)].asExpr), HB_COMP_PARAM ), (yyvsp[(8) - (12)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ) ); + } + else + { + hb_compExprClear( hb_compExprGenStatement( hb_compExprNewPreInc( (yyvsp[(2) - (12)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ) ); + } + + hb_compGenJumpHere( (yyvsp[(9) - (12)].lNumber), HB_COMP_PARAM ); + + hb_compExprGenPush( (yyvsp[(2) - (12)].asExpr), HB_COMP_PARAM ); /* counter */ + hb_compExprGenPush( (yyvsp[(7) - (12)].asExpr), HB_COMP_PARAM ); /* end */ + if( (yyvsp[(8) - (12)].asExpr) ) + { + hb_compExprGenPush( (yyvsp[(8) - (12)].asExpr), HB_COMP_PARAM ); /* step */ + hb_compGenPCode1( HB_P_FORTEST, HB_COMP_PARAM ); + } + else + hb_compGenPCode1( HB_P_GREATER, HB_COMP_PARAM ); + + hb_compGenJumpFalse( (yyvsp[(11) - (12)].lNumber) - HB_COMP_PARAM->functions.pLast->lPCodePos, HB_COMP_PARAM ); + hb_compLoopEnd( HB_COMP_PARAM ); + if( hb_compExprAsSymbol((yyvsp[(2) - (12)].asExpr)) ) + { + hb_compForEnd( HB_COMP_PARAM, hb_compExprAsSymbol((yyvsp[(2) - (12)].asExpr)) ); + } + hb_compExprDelete( (yyvsp[(7) - (12)].asExpr), HB_COMP_PARAM ); + hb_compExprDelete( (yyvsp[(5) - (12)].asExpr), HB_COMP_PARAM ); /* deletes $5, $2, $4 */ + if( (yyvsp[(8) - (12)].asExpr) ) + hb_compExprDelete( (yyvsp[(8) - (12)].asExpr), HB_COMP_PARAM ); + HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; + ;} + break; + + case 698: +#line 1698 "../../harbour.y" + { (yyval.asExpr) = NULL; ;} + break; + + case 699: +#line 1699 "../../harbour.y" + { (yyval.asExpr) = hb_compExprReduce( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 700: +#line 1702 "../../harbour.y" + { hb_compLinePush( HB_COMP_PARAM ); --HB_COMP_PARAM->wForCounter; ;} + break; + + case 701: +#line 1703 "../../harbour.y" + { hb_compLinePush( HB_COMP_PARAM ); --HB_COMP_PARAM->wForCounter; ;} + break; + + case 702: +#line 1704 "../../harbour.y" + { hb_compLinePush( HB_COMP_PARAM ); --HB_COMP_PARAM->wForCounter; ;} + break; + + case 703: +#line 1705 "../../harbour.y" + { hb_compLinePush( HB_COMP_PARAM ); --HB_COMP_PARAM->wForCounter; ;} + break; + + case 704: +#line 1708 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewVarRef( (yyvsp[(1) - (1)].string), HB_COMP_PARAM ); ;} + break; + + case 705: +#line 1709 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewRef( (yyvsp[(1) - (1)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 706: +#line 1712 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewArgList( (yyvsp[(1) - (1)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 707: +#line 1713 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAddListExpr( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr) ); ;} + break; + + case 708: +#line 1716 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewArgList( (yyvsp[(1) - (1)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 709: +#line 1717 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAddListExpr( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr) ); ;} + break; + + case 710: +#line 1721 "../../harbour.y" + { + ++HB_COMP_PARAM->wForCounter; /* 5 */ + hb_compLinePush( HB_COMP_PARAM ); + hb_compDebugStart(); + ;} + break; + + case 711: +#line 1727 "../../harbour.y" + { + /* 7 + */ + hb_compEnumStart( HB_COMP_PARAM, (yyvsp[(2) - (6)].asExpr), (yyvsp[(4) - (6)].asExpr), (yyvsp[(6) - (6)].iNumber) ); + + hb_compLoopStart( HB_COMP_PARAM ); + (yyval.lNumber) = HB_COMP_PARAM->functions.pLast->lPCodePos; + ;} + break; + + case 712: +#line 1736 "../../harbour.y" + { + /* 9 + */ + (yyval.lNumber) = hb_compGenJumpFalse( 0, HB_COMP_PARAM ); + ;} + break; + + case 713: +#line 1742 "../../harbour.y" + { + hb_compLoopHere( HB_COMP_PARAM ); + hb_compEnumNext( HB_COMP_PARAM, (yyvsp[(2) - (10)].asExpr), (yyvsp[(6) - (10)].iNumber) ); + hb_compGenJump( (yyvsp[(7) - (10)].lNumber) - HB_COMP_PARAM->functions.pLast->lPCodePos, HB_COMP_PARAM ); + + hb_compGenJumpHere( (yyvsp[(9) - (10)].lNumber), HB_COMP_PARAM ); + hb_compLoopEnd( HB_COMP_PARAM ); + HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; + hb_compEnumEnd( HB_COMP_PARAM, (yyvsp[(2) - (10)].asExpr) ); + hb_compExprDelete( (yyvsp[(2) - (10)].asExpr), HB_COMP_PARAM ); + hb_compExprDelete( (yyvsp[(4) - (10)].asExpr), HB_COMP_PARAM ); + ;} + break; + + case 714: +#line 1756 "../../harbour.y" + { (yyval.iNumber) = 1; ;} + break; + + case 715: +#line 1757 "../../harbour.y" + { (yyval.iNumber) = -1; ;} + break; + + case 716: +#line 1761 "../../harbour.y" + { + hb_compLoopStart( HB_COMP_PARAM ); + hb_compSwitchStart( HB_COMP_PARAM ); + hb_compGenJump( 0, HB_COMP_PARAM ); + ;} + break; + + case 717: +#line 1768 "../../harbour.y" + { + hb_compSwitchEnd( HB_COMP_PARAM ); + hb_compLoopEnd( HB_COMP_PARAM ); + ;} + break; + + case 718: +#line 1775 "../../harbour.y" + { + hb_compGenPCode1( HB_P_POP, HB_COMP_PARAM ); + ;} + break; + + case 719: +#line 1782 "../../harbour.y" + { + --HB_COMP_PARAM->wSwitchCounter; + HB_COMP_PARAM->functions.pLast->bFlags &= ~ ( FUN_WITH_RETURN | FUN_BREAK_CODE ); + ;} + break; + + case 720: +#line 1789 "../../harbour.y" + { ++HB_COMP_PARAM->wSwitchCounter; + hb_compLinePush( HB_COMP_PARAM ); + ;} + break; + + case 721: +#line 1793 "../../harbour.y" + { + hb_compExprDelete( hb_compExprGenPush( (yyvsp[(3) - (4)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); + ;} + break; + + case 722: +#line 1798 "../../harbour.y" + { ;} + break; + + case 723: +#line 1799 "../../harbour.y" + { + if( (yyvsp[(2) - (2)].lNumber) > 0 ) + { + hb_compGenError( HB_COMP_PARAM, hb_comp_szErrors, 'E', HB_COMP_ERR_MAYHEM_IN_CASE, NULL, NULL ); + } + ;} + break; + + case 724: +#line 1807 "../../harbour.y" + { hb_compSwitchAdd( HB_COMP_PARAM, (yyvsp[(2) - (2)].asExpr) ); hb_compLinePush( HB_COMP_PARAM ); ;} + break; + + case 726: +#line 1810 "../../harbour.y" + { hb_compSwitchAdd( HB_COMP_PARAM, (yyvsp[(3) - (3)].asExpr) ); hb_compLinePush( HB_COMP_PARAM ); ;} + break; + + case 730: +#line 1818 "../../harbour.y" + { hb_compSwitchAdd( HB_COMP_PARAM, NULL ); hb_compLinePush( HB_COMP_PARAM ); ;} + break; + + case 731: +#line 1818 "../../harbour.y" + { HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_BREAK_CODE; ;} + break; + + case 733: +#line 1822 "../../harbour.y" + { ++HB_COMP_PARAM->wSeqCounter; (yyval.lNumber) = hb_compSequenceBegin( HB_COMP_PARAM ); ;} + break; + + case 734: +#line 1824 "../../harbour.y" + { + /* Set jump address for HB_P_SEQBEGIN opcode - this address + * will be used in BREAK code if there is no RECOVER clause + */ + hb_compGenJumpHere( (yyvsp[(2) - (4)].lNumber), HB_COMP_PARAM ); + (yyval.lNumber) = hb_compSequenceEnd( HB_COMP_PARAM ); + ;} + break; + + case 735: +#line 1832 "../../harbour.y" + { + /* Replace END address with RECOVER address in + * HB_P_SEQBEGIN opcode if there is RECOVER clause + */ + if( (yyvsp[(6) - (6)].lNumber) ) + hb_compGenJumpThere( (yyvsp[(2) - (6)].lNumber), (yyvsp[(6) - (6)].lNumber), HB_COMP_PARAM ); + ;} + break; + + case 736: +#line 1840 "../../harbour.y" + { + /* Fix END address + * There is no line number after HB_P_SEQEND in case no + * RECOVER clause is used + */ + hb_compGenJumpThere( (yyvsp[(5) - (8)].lNumber), HB_COMP_PARAM->functions.pLast->lPCodePos, HB_COMP_PARAM ); + if( !(yyvsp[(6) - (8)].lNumber) ) /* only if there is no RECOVER clause */ + --HB_COMP_PARAM->wSeqCounter; /* RECOVER is also considered as end of sequence */ + hb_compSequenceFinish( (yyvsp[(2) - (8)].lNumber), (yyvsp[(4) - (8)].lNumber), HB_COMP_PARAM ); + HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_WITH_RETURN; + ;} + break; + + case 737: +#line 1853 "../../harbour.y" + { (yyval.lNumber) = 0; ;} + break; + + case 738: +#line 1854 "../../harbour.y" + { (yyval.lNumber) = (yyvsp[(1) - (2)].lNumber); ;} + break; + + case 740: +#line 1855 "../../harbour.y" + { (yyval.lNumber) = (yyvsp[(1) - (2)].lNumber); ;} + break; + + case 742: +#line 1859 "../../harbour.y" + { + HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_BREAK_CODE; + (yyval.lNumber) = HB_COMP_PARAM->functions.pLast->lPCodePos; + --HB_COMP_PARAM->wSeqCounter; + hb_compLinePush( HB_COMP_PARAM ); + hb_compGenPCode2( HB_P_SEQRECOVER, HB_P_POP, HB_COMP_PARAM ); + ;} + break; + + case 743: +#line 1869 "../../harbour.y" + { + HB_COMP_PARAM->functions.pLast->bFlags &= ~ FUN_BREAK_CODE; + (yyval.lNumber) = HB_COMP_PARAM->functions.pLast->lPCodePos; + --HB_COMP_PARAM->wSeqCounter; + hb_compLinePush( HB_COMP_PARAM ); + hb_compGenPCode1( HB_P_SEQRECOVER, HB_COMP_PARAM ); + hb_compGenPopVar( (yyvsp[(2) - (2)].string), HB_COMP_PARAM ); + ;} + break; + + case 744: +#line 1885 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewFunName( (yyvsp[(1) - (1)].string), HB_COMP_PARAM ); hb_compAutoOpenAdd( HB_COMP_PARAM, (yyvsp[(1) - (1)].string) ); ;} + break; + + case 745: +#line 1886 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 746: +#line 1887 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 747: +#line 1891 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewFunCall( (yyvsp[(2) - (2)].asExpr), NULL, HB_COMP_PARAM ); ;} + break; + + case 748: +#line 1893 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewFunCall( (yyvsp[(2) - (4)].asExpr), (yyvsp[(4) - (4)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 749: +#line 1895 "../../harbour.y" + { + /* DOIDENT is the only one identifier which can be returned in lower letters */ + hb_compAutoOpenAdd( HB_COMP_PARAM, (yyvsp[(1) - (1)].string) ); (yyval.asExpr) = hb_compExprNewFunCall( hb_compExprNewFunName( hb_compIdentifierNew( HB_COMP_PARAM, hb_strupr( hb_strdup( (yyvsp[(1) - (1)].string) ) ), HB_IDENT_FREE ), HB_COMP_PARAM ), NULL, HB_COMP_PARAM ); + ;} + break; + + case 750: +#line 1900 "../../harbour.y" + { + /* DOIDENT is the only one identifier which can be returned in lower letters */ + hb_compAutoOpenAdd( HB_COMP_PARAM, (yyvsp[(1) - (3)].string) ); (yyval.asExpr) = hb_compExprNewFunCall( hb_compExprNewFunName( hb_compIdentifierNew( HB_COMP_PARAM, hb_strupr( hb_strdup( (yyvsp[(1) - (3)].string) ) ), HB_IDENT_FREE ), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); + ;} + break; + + case 751: +#line 1906 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAddListExpr( hb_compExprNewArgList( hb_compExprNewNil( HB_COMP_PARAM ), HB_COMP_PARAM ), hb_compExprNewNil( HB_COMP_PARAM ) ); ;} + break; + + case 752: +#line 1907 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAddListExpr( hb_compExprNewArgList( hb_compExprNewNil( HB_COMP_PARAM ), HB_COMP_PARAM ), (yyvsp[(2) - (2)].asExpr) ); ;} + break; + + case 753: +#line 1908 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewArgList( (yyvsp[(1) - (1)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 754: +#line 1909 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAddListExpr( (yyvsp[(1) - (2)].asExpr), hb_compExprNewNil( HB_COMP_PARAM ) ); ;} + break; + + case 755: +#line 1910 "../../harbour.y" + { (yyval.asExpr) = hb_compExprAddListExpr( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr) ); ;} + break; + + case 756: +#line 1913 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewVarRef( (yyvsp[(1) - (1)].string), HB_COMP_PARAM ); ;} + break; + + case 757: +#line 1914 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 758: +#line 1915 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewVarRef( (yyvsp[(2) - (2)].string), HB_COMP_PARAM ); ;} + break; + + case 759: +#line 1916 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 760: +#line 1917 "../../harbour.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 761: +#line 1918 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewRef( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 762: +#line 1919 "../../harbour.y" + { (yyval.asExpr) = hb_compExprNewRef( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 763: +#line 1923 "../../harbour.y" + { + hb_compExprDelete( hb_compExprGenPush( (yyvsp[(2) - (3)].asExpr), HB_COMP_PARAM ), HB_COMP_PARAM ); + hb_compGenPCode1( HB_P_WITHOBJECTSTART, HB_COMP_PARAM ); + HB_COMP_PARAM->wWithObjectCnt++; + ;} + break; + + case 764: +#line 1930 "../../harbour.y" + { + --HB_COMP_PARAM->wWithObjectCnt; + hb_compGenPCode1( HB_P_WITHOBJECTEND, HB_COMP_PARAM ); + ;} + break; + + case 765: +#line 1934 "../../harbour.y" + { hb_compExprDelete( (yyvsp[(2) - (4)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 766: +#line 1937 "../../harbour.y" + { HB_COMP_PARAM->fError = FALSE; ;} + break; + + case 767: +#line 1938 "../../harbour.y" + { HB_COMP_PARAM->fDontGenLineNum = TRUE; ;} + break; + + +/* Line 1267 of yacc.c. */ +#line 8663 "harboury.c" + default: break; + } + YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + + *++yyvsp = yyval; + + + /* Now `shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; + + goto yynewstate; + + +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ +yyerrlab: + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (pComp, YY_("syntax error")); +#else + { + YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); + if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) + { + YYSIZE_T yyalloc = 2 * yysize; + if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) + yyalloc = YYSTACK_ALLOC_MAXIMUM; + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yyalloc); + if (yymsg) + yymsg_alloc = yyalloc; + else + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + } + } + + if (0 < yysize && yysize <= yymsg_alloc) + { + (void) yysyntax_error (yymsg, yystate, yychar); + yyerror (pComp, yymsg); + } + else + { + yyerror (pComp, YY_("syntax error")); + if (yysize != 0) + goto yyexhaustedlab; + } + } +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse look-ahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval, pComp); + yychar = YYEMPTY; + } + } + + /* Else will try to reuse look-ahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: + + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; + + /* Do not reclaim the symbols of the rule which action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; + goto yyerrlab1; + + +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + for (;;) + { + yyn = yypact[yystate]; + if (yyn != YYPACT_NINF) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + + yydestruct ("Error: popping", + yystos[yystate], yyvsp, pComp); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } + + if (yyn == YYFINAL) + YYACCEPT; + + *++yyvsp = yylval; + + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; + +#ifndef yyoverflow +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (pComp, YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEOF && yychar != YYEMPTY) + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval, pComp); + /* Do not reclaim the symbols of the rule which action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", + yystos[*yyssp], yyvsp, pComp); + YYPOPSTACK (1); + } +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif +#if YYERROR_VERBOSE + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); +#endif + /* Make sure YYID is used. */ + return YYID (yyresult); +} + + +#line 1941 "../../harbour.y" + + +/* + ** ------------------------------------------------------------------------ ** + */ + +/* + * Avoid tracing in preprocessor/compiler. + */ +#if ! defined(HB_TRACE_UTILS) + #if defined(HB_TRACE_LEVEL) + #undef HB_TRACE_LEVEL + #endif +#endif + + +/* ************************************************************************* */ + +/* + * This function stores the position in pcode buffer where the FOR/WHILE + * loop starts. It will be used to fix any LOOP/EXIT statements + */ +static void hb_compLoopStart( HB_COMP_DECL ) +{ + HB_LOOPEXIT_PTR pLoop = ( HB_LOOPEXIT_PTR ) hb_xgrab( sizeof( HB_LOOPEXIT ) ); + + if( HB_COMP_PARAM->pLoops ) + { + HB_LOOPEXIT_PTR pLast = HB_COMP_PARAM->pLoops; + + while( pLast->pNext ) + pLast = pLast->pNext; + pLast->pNext = pLoop; + } + else + HB_COMP_PARAM->pLoops = pLoop; + + pLoop->pNext = NULL; + pLoop->pExitList = NULL; + pLoop->pLoopList = NULL; + pLoop->ulOffset = HB_COMP_PARAM->functions.pLast->lPCodePos; /* store the start position */ + pLoop->wSeqCounter = HB_COMP_PARAM->wSeqCounter; /* store current SEQUENCE counter */ +} + +/* + * Stores the position of LOOP statement to fix it later at the end of loop + */ +static void hb_compLoopLoop( HB_COMP_DECL ) +{ + if( ! HB_COMP_PARAM->pLoops ) + { + hb_compGenError( HB_COMP_PARAM, hb_comp_szErrors, 'E', HB_COMP_ERR_UNMATCHED_EXIT, "LOOP", NULL ); + } + else + { + HB_LOOPEXIT_PTR pLast, pLoop; + + pLoop = ( HB_LOOPEXIT_PTR ) hb_xgrab( sizeof( HB_LOOPEXIT ) ); + + pLoop->pLoopList = NULL; + pLoop->ulOffset = HB_COMP_PARAM->functions.pLast->lPCodePos; /* store the position to fix */ + + pLast = HB_COMP_PARAM->pLoops; + while( pLast->pNext ) + pLast = pLast->pNext; + + if( pLast->wSeqCounter != HB_COMP_PARAM->wSeqCounter ) + { + /* Attempt to LOOP from BEGIN/END sequence + * Current SEQUENCE counter is different then at the beginning of loop + * Notice that LOOP is allowed in RECOVER code. + */ + hb_compGenError( HB_COMP_PARAM, hb_comp_szErrors, 'E', HB_COMP_ERR_EXIT_IN_SEQUENCE, "LOOP", NULL ); + } + else + { + while( pLast->pLoopList ) + pLast = pLast->pLoopList; + + pLast->pLoopList = pLoop; + + hb_compGenJump( 0, HB_COMP_PARAM ); + } + } +} + +/* + * Stores the position of EXIT statement to fix it later at the end of loop + */ +static void hb_compLoopExit( HB_COMP_DECL ) +{ + if( ! HB_COMP_PARAM->pLoops ) + { + hb_compGenError( HB_COMP_PARAM, hb_comp_szErrors, 'E', HB_COMP_ERR_UNMATCHED_EXIT, "EXIT", NULL ); + } + else + { + HB_LOOPEXIT_PTR pLast, pLoop; + + pLoop = ( HB_LOOPEXIT_PTR ) hb_xgrab( sizeof( HB_LOOPEXIT ) ); + + pLoop->pExitList = NULL; + pLoop->ulOffset = HB_COMP_PARAM->functions.pLast->lPCodePos; /* store the position to fix */ + + pLast = HB_COMP_PARAM->pLoops; + while( pLast->pNext ) + pLast = pLast->pNext; + + if( pLast->wSeqCounter != HB_COMP_PARAM->wSeqCounter ) + { + /* Attempt to LOOP from BEGIN/END sequence + * Current SEQUENCE counter is different then at the beginning of loop + * Notice that LOOP is allowed in RECOVER code. + */ + hb_compGenError( HB_COMP_PARAM, hb_comp_szErrors, 'E', HB_COMP_ERR_EXIT_IN_SEQUENCE, "EXIT", NULL ); + } + else + { + while( pLast->pExitList ) + pLast = pLast->pExitList; + + pLast->pExitList = pLoop; + + hb_compGenJump( 0, HB_COMP_PARAM ); + } + } +} + +/* + * Fixes the LOOP statement + */ +static void hb_compLoopHere( HB_COMP_DECL ) +{ + HB_LOOPEXIT_PTR pLoop = HB_COMP_PARAM->pLoops, pFree, pLast; + + if( pLoop ) + { + while( pLoop->pNext ) + pLoop = pLoop->pNext; + + pLast = pLoop; + pLoop = pLoop->pLoopList; + while( pLoop ) + { + hb_compGenJumpHere( pLoop->ulOffset + 1, HB_COMP_PARAM ); + pFree = pLoop; + pLoop = pLoop->pLoopList; + hb_xfree( ( void * ) pFree ); + } + pLast->pLoopList = NULL; + } +} + +/* + * Fixes the EXIT statements and releases memory allocated for current loop + */ +static void hb_compLoopEnd( HB_COMP_DECL ) +{ + HB_LOOPEXIT_PTR pExit, pLoop = HB_COMP_PARAM->pLoops, pLast = HB_COMP_PARAM->pLoops, pFree; + + if( pLoop ) + { + while( pLoop->pNext ) + { + pLast = pLoop; + pLoop = pLoop->pNext; + } + + pExit = pLoop->pExitList; + while( pExit ) + { + hb_compGenJumpHere( pExit->ulOffset + 1, HB_COMP_PARAM ); + pFree = pExit; + pExit = pExit->pExitList; + hb_xfree( ( void * ) pFree ); + } + + pLast->pNext = NULL; + if( pLoop == HB_COMP_PARAM->pLoops ) + HB_COMP_PARAM->pLoops = NULL; + hb_xfree( ( void * ) pLoop ); + } +} + +void hb_compLoopKill( HB_COMP_DECL ) +{ + HB_LOOPEXIT_PTR pLoop; + HB_LOOPEXIT_PTR pExit; + + while( HB_COMP_PARAM->pLoops ) + { + pLoop = HB_COMP_PARAM->pLoops; + while( pLoop->pExitList ) + { + pExit = pLoop->pExitList; + pLoop->pExitList = pExit->pExitList; + hb_xfree( ( void * ) pExit ); + } + HB_COMP_PARAM->pLoops = pLoop->pNext; + hb_xfree( ( void * ) pLoop ); + } +} + +static void * hb_compElseIfGen( HB_COMP_DECL, void * pFirst, ULONG ulOffset ) +{ + HB_ELSEIF_PTR pElseIf = ( HB_ELSEIF_PTR ) hb_xgrab( sizeof( HB_ELSEIF ) ), pLast; + + pElseIf->ulOffset = ulOffset; + pElseIf->pPrev = NULL; + pElseIf->pElseif = NULL; + + if( pFirst ) + { + pLast = ( HB_ELSEIF_PTR ) pFirst; + while( pLast->pElseif ) + pLast = pLast->pElseif; + pLast->pElseif = pElseIf; + } + else + { + if( HB_COMP_PARAM->elseif ) + { + pElseIf->pPrev = HB_COMP_PARAM->elseif; + } + pFirst = pElseIf; + HB_COMP_PARAM->elseif = pElseIf; + } + return pFirst; +} + + +static void hb_compElseIfFix( HB_COMP_DECL, void * pFixElseIfs ) +{ + HB_ELSEIF_PTR pFix = ( HB_ELSEIF_PTR ) pFixElseIfs; + HB_ELSEIF_PTR pDel; + + HB_COMP_PARAM->elseif = pFix->pPrev; + while( pFix ) + { + hb_compGenJumpHere( pFix->ulOffset, HB_COMP_PARAM ); + pDel = pFix; + pFix = pFix->pElseif; + hb_xfree( pDel ); + } +} + +void hb_compElseIfKill( HB_COMP_DECL ) +{ + HB_ELSEIF_PTR pFix; + HB_ELSEIF_PTR pDel; + + while( HB_COMP_PARAM->elseif ) + { + pFix = HB_COMP_PARAM->elseif; + HB_COMP_PARAM->elseif = pFix->pPrev; + while( pFix ) + { + pDel = pFix; + pFix = pFix->pElseif; + hb_xfree( pDel ); + } + } +} + +static void hb_compRTVariableAdd( HB_COMP_DECL, HB_EXPR_PTR pVar, BOOL bPopInitValue ) +{ + HB_RTVAR_PTR pRTvar = ( HB_RTVAR_PTR ) hb_xgrab( sizeof( HB_RTVAR ) ); + + pRTvar->pVar = pVar; + pRTvar->bPopValue = bPopInitValue; + pRTvar->pNext = NULL; + pRTvar->pPrev = NULL; + + if( HB_COMP_PARAM->rtvars ) + { + HB_RTVAR_PTR pLast = HB_COMP_PARAM->rtvars; + while( pLast->pNext ) + pLast = pLast->pNext; + pLast->pNext = pRTvar; + pRTvar->pPrev = pLast; + } + else + HB_COMP_PARAM->rtvars = pRTvar; +} + +static void hb_compRTVariableGen( HB_COMP_DECL, char * szCreateFun ) +{ + USHORT usCount = 0; + HB_RTVAR_PTR pVar = HB_COMP_PARAM->rtvars; + HB_RTVAR_PTR pDel; + + /* generate the function call frame */ + hb_compGenPushSymbol( szCreateFun, TRUE, FALSE, HB_COMP_PARAM ); + hb_compGenPushNil( HB_COMP_PARAM ); + + /* push variable names to create */ + while( pVar->pNext ) + { + hb_compExprGenPush( pVar->pVar, HB_COMP_PARAM ); + pVar = pVar->pNext; + ++usCount; + } + hb_compExprGenPush( pVar->pVar, HB_COMP_PARAM ); + ++usCount; + + /* call function that will create either PUBLIC or PRIVATE variables */ + if( usCount > 255 ) + hb_compGenPCode3( HB_P_DO, HB_LOBYTE( usCount ), HB_HIBYTE( usCount ), HB_COMP_PARAM ); + else + hb_compGenPCode2( HB_P_DOSHORT, ( BYTE ) usCount, HB_COMP_PARAM ); + + /* pop initial values */ + while( pVar ) + { + if( pVar->bPopValue ) + hb_compExprDelete( hb_compExprGenPop( pVar->pVar, HB_COMP_PARAM ), HB_COMP_PARAM ); + else + hb_compExprDelete( pVar->pVar, HB_COMP_PARAM ); + pDel = pVar; + pVar = pVar->pPrev; + hb_xfree( pDel ); + } + HB_COMP_PARAM->rtvars = NULL; +} + +void hb_compRTVariableKill( HB_COMP_DECL ) +{ + HB_RTVAR_PTR pVar; + + while( HB_COMP_PARAM->rtvars ) + { + pVar = HB_COMP_PARAM->rtvars; + + hb_compExprDelete( pVar->pVar, HB_COMP_PARAM ); + HB_COMP_PARAM->rtvars = pVar->pPrev; + hb_xfree( pVar ); + } + HB_COMP_PARAM->rtvars = NULL; +} + +static void hb_compVariableDim( char * szName, HB_EXPR_PTR pInitValue, HB_COMP_DECL ) +{ + if( HB_COMP_PARAM->iVarScope == VS_PUBLIC || HB_COMP_PARAM->iVarScope == VS_PRIVATE ) + { + USHORT uCount = (USHORT) hb_compExprListLen( pInitValue ); + hb_compVariableAdd( HB_COMP_PARAM, szName, 'A' ); + hb_compExprDelete( hb_compExprGenPush( pInitValue, HB_COMP_PARAM ), HB_COMP_PARAM ); + hb_compGenPCode3( HB_P_ARRAYDIM, HB_LOBYTE( uCount ), HB_HIBYTE( uCount ), HB_COMP_PARAM ); + hb_compRTVariableAdd( HB_COMP_PARAM, hb_compExprNewRTVar( szName, NULL, HB_COMP_PARAM ), TRUE ); + } + else if( HB_COMP_PARAM->iVarScope == VS_STATIC ) + { + USHORT uCount = (USHORT) hb_compExprListLen( pInitValue ); + HB_EXPR_PTR pVar = hb_compExprNewVar( szName, HB_COMP_PARAM ); + HB_EXPR_PTR pAssign; + + /* create a static variable */ + hb_compVariableAdd( HB_COMP_PARAM, szName, 'A' ); + hb_compStaticDefStart( HB_COMP_PARAM ); /* switch to statics pcode buffer */ + /* create an array */ + hb_compExprGenPush( pInitValue, HB_COMP_PARAM ); + hb_compGenPCode3( HB_P_ARRAYDIM, HB_LOBYTE( uCount ), HB_HIBYTE( uCount ), HB_COMP_PARAM ); + /* check if valid initializers were used but don't generate any code */ + pAssign = hb_compExprAssignStatic( pVar, pInitValue, HB_COMP_PARAM ); + /* now pop an array */ + hb_compExprGenPop( pVar, HB_COMP_PARAM ); + /* delete all used expressions */ + hb_compExprDelete( pAssign, HB_COMP_PARAM ); + hb_compStaticDefEnd( HB_COMP_PARAM ); + } + else + { + USHORT uCount = (USHORT) hb_compExprListLen( pInitValue ); + + hb_compVariableAdd( HB_COMP_PARAM, szName, 'A' ); + hb_compExprDelete( hb_compExprGenPush( pInitValue, HB_COMP_PARAM ), HB_COMP_PARAM ); + hb_compGenPCode3( HB_P_ARRAYDIM, HB_LOBYTE( uCount ), HB_HIBYTE( uCount ), HB_COMP_PARAM ); + hb_compExprDelete( hb_compExprGenPop( hb_compExprNewVar( szName, HB_COMP_PARAM ), HB_COMP_PARAM ), HB_COMP_PARAM ); + } +} + +static void hb_compForStart( HB_COMP_DECL, char *szVarName, BOOL bForEach ) +{ + HB_ENUMERATOR_PTR pEnumVar; + + pEnumVar = HB_COMP_PARAM->functions.pLast->pEnum; + if( pEnumVar == NULL ) + { + HB_COMP_PARAM->functions.pLast->pEnum = (HB_ENUMERATOR_PTR) hb_xgrab( sizeof(HB_ENUMERATOR) ); + pEnumVar = HB_COMP_PARAM->functions.pLast->pEnum; + } + else + { + BOOL bWarn = TRUE; + HB_ENUMERATOR_PTR pLast = pEnumVar; + + while( pEnumVar ) + { + if( strcmp( pEnumVar->szName, szVarName ) == 0 ) + { + /* Enumerator variable exists already - throw warning */ + if( bWarn == TRUE ) + { + hb_compGenWarning( HB_COMP_PARAM, hb_comp_szWarnings, 'W', HB_COMP_WARN_FORVAR_DUPL, szVarName, NULL ); + bWarn = FALSE; + } + } + pLast = pEnumVar; + pEnumVar = pEnumVar->pNext; + } + pLast->pNext = (HB_ENUMERATOR_PTR) hb_xgrab( sizeof( HB_ENUMERATOR ) ); + pEnumVar = pLast->pNext; + } + pEnumVar->szName = szVarName; + pEnumVar->bForEach = bForEach; + pEnumVar->pNext = NULL; +} + +BOOL hb_compForEachVarError( HB_COMP_DECL, char *szVarName ) +{ + HB_ENUMERATOR_PTR pEnumVar; + + pEnumVar = HB_COMP_PARAM->functions.pLast->pEnum; + if( pEnumVar ) + { + while( pEnumVar ) + { + if( strcmp( pEnumVar->szName, szVarName ) == 0 ) + { + if( pEnumVar->bForEach ) + { + /* only if it is FOR EACH enumerator + * generate warning if it is FOR/NEXT loop + */ + return FALSE; + } + } + pEnumVar = pEnumVar->pNext; + } + } + + hb_compGenWarning( HB_COMP_PARAM, hb_comp_szWarnings, 'W', HB_COMP_WARN_ENUM_INVALID, szVarName, NULL ); + return TRUE; +} + +static void hb_compForEnd( HB_COMP_DECL, char *szVar ) +{ + HB_ENUMERATOR_PTR pEnumVar; + + HB_SYMBOL_UNUSED( HB_COMP_PARAM ); + HB_SYMBOL_UNUSED( szVar ); + + pEnumVar = HB_COMP_PARAM->functions.pLast->pEnum; + if( pEnumVar->pNext ) + { + HB_ENUMERATOR_PTR pLast = pEnumVar; + + while( pEnumVar->pNext ) + { + pLast = pEnumVar; + pEnumVar = pEnumVar->pNext; + } + hb_xfree( pEnumVar ); + pLast->pNext = NULL; + } + else + { + hb_xfree( pEnumVar ); + HB_COMP_PARAM->functions.pLast->pEnum = NULL; + } +} + +static HB_CARGO2_FUNC( hb_compEnumEvalStart ) +{ + char * szName = hb_compExprAsSymbol( (HB_EXPR_PTR)cargo ); + if( szName ) + hb_compForStart( HB_COMP_PARAM, szName, TRUE ); + + hb_compExprGenPush( (HB_EXPR_PTR)dummy, HB_COMP_PARAM ); /* expression */ + hb_compExprGenPush( (HB_EXPR_PTR)cargo, HB_COMP_PARAM ); /* variable */ +} + +static void hb_compEnumStart( HB_COMP_DECL, HB_EXPR_PTR pVars, HB_EXPR_PTR pExprs, int descend ) +{ + ULONG ulLen; + + if( hb_compExprListLen(pVars) != hb_compExprListLen(pExprs) ) + { + hb_compGenError( HB_COMP_PARAM, hb_comp_szErrors, 'E', HB_COMP_ERR_FORVAR_DIFF, NULL, NULL ); + } + + ulLen = hb_compExprListEval2( HB_COMP_PARAM, pVars, pExprs, hb_compEnumEvalStart ); + + if( ulLen > 255 ) + { + hb_compGenError( HB_COMP_PARAM, hb_comp_szErrors, 'E', HB_COMP_ERR_FORVAR_TOOMANY, NULL, NULL ); + } + else + { + BYTE Len; + Len = (BYTE) (ulLen & 0xFF); + hb_compGenPCode3( HB_P_ENUMSTART, Len, descend > 0 ? 1 : 0, HB_COMP_PARAM ); + } +} + +static void hb_compEnumNext( HB_COMP_DECL, HB_EXPR_PTR pExpr, int descend ) +{ + HB_SYMBOL_UNUSED( pExpr ); + if( descend > 0 ) + { + hb_compGenPCode1( HB_P_ENUMNEXT, HB_COMP_PARAM ); + } + else + { + hb_compGenPCode1( HB_P_ENUMPREV, HB_COMP_PARAM ); + } +} + +static HB_CARGO_FUNC( hb_compEnumEvalEnd ) +{ + char * szName = hb_compExprAsSymbol( (HB_EXPR_PTR)cargo ); + + if( szName ) + hb_compForEnd( HB_COMP_PARAM, szName ); +} + +static void hb_compEnumEnd( HB_COMP_DECL, HB_EXPR_PTR pExpr ) +{ + hb_compExprListEval( HB_COMP_PARAM, pExpr, hb_compEnumEvalEnd ); + hb_compGenPCode1( HB_P_ENUMEND, HB_COMP_PARAM ); +} + +static void hb_compSwitchStart( HB_COMP_DECL ) +{ + HB_SWITCHCMD_PTR pSwitch = (HB_SWITCHCMD_PTR) hb_xgrab( sizeof( HB_SWITCHCMD ) ); + + pSwitch->pCases = NULL; + pSwitch->pLast = NULL; + pSwitch->ulDefault = 0; + pSwitch->ulOffset = HB_COMP_PARAM->functions.pLast->lPCodePos; + pSwitch->iCount = 0; + pSwitch->pPrev = HB_COMP_PARAM->pSwitch; + HB_COMP_PARAM->pSwitch = pSwitch; +} + +static void hb_compSwitchAdd( HB_COMP_DECL, HB_EXPR_PTR pExpr ) +{ + HB_SWITCHCASE_PTR pCase; + + if( pExpr ) + { + /* normal CASE */ + pCase = (HB_SWITCHCASE_PTR) hb_xgrab( sizeof( HB_SWITCHCASE ) ); + pCase->ulOffset = HB_COMP_PARAM->functions.pLast->lPCodePos; + pCase->pNext = NULL; + pExpr = hb_compExprReduce( pExpr, HB_COMP_PARAM ); + if( !(hb_compExprIsLong(pExpr) || hb_compExprIsString(pExpr)) ) + { + hb_compGenError( HB_COMP_PARAM, hb_comp_szErrors, 'E', HB_COMP_ERR_NOT_LITERAL_CASE, NULL, NULL ); + } + pCase->pExpr = pExpr; + + if( HB_COMP_PARAM->pSwitch->pLast ) + { + HB_COMP_PARAM->pSwitch->pLast->pNext = pCase; + HB_COMP_PARAM->pSwitch->pLast = pCase; + } + else + { + HB_COMP_PARAM->pSwitch->pCases = HB_COMP_PARAM->pSwitch->pLast = pCase; + } + HB_COMP_PARAM->pSwitch->iCount++; + if( hb_compExprIsString( pExpr ) && hb_compExprAsStringLen(pExpr) > 255 ) + { + hb_compGenError( HB_COMP_PARAM, hb_comp_szErrors, 'E', HB_COMP_ERR_INVALID_STR, NULL, NULL ); + } + } + else + { + /* DEFAULT */ + if( HB_COMP_PARAM->pSwitch->ulDefault ) + { + /* more than one default clause */ + hb_compGenError( HB_COMP_PARAM, hb_comp_szErrors, 'E', HB_COMP_ERR_MAYHEM_IN_CASE, NULL, NULL ); + } + else + { + HB_COMP_PARAM->pSwitch->ulDefault = HB_COMP_PARAM->functions.pLast->lPCodePos; + HB_COMP_PARAM->pSwitch->iCount++; + } + } + +} + +static void hb_compSwitchEnd( HB_COMP_DECL ) +{ + BOOL fLongOptimize = HB_COMP_PARAM->fLongOptimize; + BOOL fTextSubst = HB_COMP_PARAM->fTextSubst; + HB_SWITCHCASE_PTR pCase = HB_COMP_PARAM->pSwitch->pCases; + HB_SWITCHCASE_PTR pTmp; + HB_SWITCHCMD_PTR pTmpSw; + ULONG ulExitPos; + ULONG ulDef; + + /* skip switch pcode if there was no EXIT in the last CASE + * or in the DEFAULT case + */ + ulExitPos = hb_compGenJump( 0, HB_COMP_PARAM ); + + hb_compGenJumpHere( HB_COMP_PARAM->pSwitch->ulOffset + 1, HB_COMP_PARAM ); + hb_compGenPCode3( HB_P_SWITCH, HB_LOBYTE(HB_COMP_PARAM->pSwitch->iCount), HB_HIBYTE(HB_COMP_PARAM->pSwitch->iCount), HB_COMP_PARAM ); + HB_COMP_PARAM->fLongOptimize = FALSE; + HB_COMP_PARAM->fTextSubst = FALSE; + while( pCase ) + { + if( pCase->pExpr ) + { + if( hb_compExprIsLong(pCase->pExpr) || hb_compExprIsString(pCase->pExpr) ) + { + hb_compExprDelete( hb_compExprGenPush( pCase->pExpr, HB_COMP_PARAM ), HB_COMP_PARAM ); + hb_compGenJumpThere( hb_compGenJump( 0, HB_COMP_PARAM ), pCase->ulOffset, HB_COMP_PARAM ); + } + else + { + hb_compExprDelete( pCase->pExpr, HB_COMP_PARAM ); + } + } + pCase = pCase->pNext; + } + hb_compGenPCode1( HB_P_PUSHNIL, HB_COMP_PARAM ); /* end of cases */ + ulDef = hb_compGenJump( 0, HB_COMP_PARAM ); + + if( HB_COMP_PARAM->pSwitch->ulDefault ) + { + hb_compGenJumpThere( ulDef, HB_COMP_PARAM->pSwitch->ulDefault, HB_COMP_PARAM ); + } + else + hb_compGenJumpHere( ulDef, HB_COMP_PARAM ); + + HB_COMP_PARAM->fLongOptimize = fLongOptimize; + HB_COMP_PARAM->fTextSubst = fTextSubst; + + hb_compGenJumpHere( ulExitPos, HB_COMP_PARAM ); + + pCase = HB_COMP_PARAM->pSwitch->pCases; + while( pCase ) + { + pTmp = pCase->pNext; + hb_xfree( (void *)pCase ); + pCase = pTmp; + } + pTmpSw = HB_COMP_PARAM->pSwitch; + HB_COMP_PARAM->pSwitch = HB_COMP_PARAM->pSwitch->pPrev; + hb_xfree( pTmpSw ); +} + +/* Release all switch statements +*/ +void hb_compSwitchKill( HB_COMP_DECL ) +{ + HB_SWITCHCASE_PTR pCase; + HB_SWITCHCMD_PTR pSwitch; + + while( HB_COMP_PARAM->pSwitch ) + { + while( HB_COMP_PARAM->pSwitch->pCases ) + { + pCase = HB_COMP_PARAM->pSwitch->pCases; + hb_compExprDelete( pCase->pExpr, HB_COMP_PARAM ); + HB_COMP_PARAM->pSwitch->pCases = pCase->pNext; + hb_xfree( (void *) pCase ); + } + pSwitch = HB_COMP_PARAM->pSwitch; + HB_COMP_PARAM->pSwitch = pSwitch->pPrev; + hb_xfree( (void *) pSwitch ); + } +} + +static HB_EXPR_PTR hb_compCheckPassByRef( HB_COMP_DECL, HB_EXPR_PTR pExpr ) +{ + if( !( HB_COMP_PARAM->iPassByRef & (HB_PASSBYREF_FUNCALL | HB_PASSBYREF_ARRAY) ) ) + { + hb_compGenError( HB_COMP_PARAM, hb_comp_szErrors, 'E', HB_COMP_ERR_INVALID_REFER, hb_compExprAsSymbol( pExpr ), NULL ); + } + return pExpr; +} + +/* ************************************************************************* */ + +void yyerror( HB_COMP_DECL, char * s ) +{ + HB_SYMBOL_UNUSED( pComp ); + + if( !HB_COMP_PARAM->pLex->lasttok || HB_COMP_PARAM->pLex->lasttok[ 0 ] == '\n' ) + hb_compGenError( HB_COMP_PARAM, hb_comp_szErrors, 'E', HB_COMP_ERR_YACC, s, "" ); + else + hb_compGenError( HB_COMP_PARAM, hb_comp_szErrors, 'E', HB_COMP_ERR_YACC, s, HB_COMP_PARAM->pLex->lasttok ); +} + diff --git a/harbour/source/compiler/harbour.yyh b/harbour/source/compiler/harbour.yyh new file mode 100644 index 0000000000..b8b6203927 --- /dev/null +++ b/harbour/source/compiler/harbour.yyh @@ -0,0 +1,305 @@ +/* A Bison parser, made by GNU Bison 2.3. */ + +/* Skeleton interface for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + 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, or (at your option) + any later version. + + 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., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + FUNCTION = 258, + PROCEDURE = 259, + IDENTIFIER = 260, + RETURN = 261, + NIL = 262, + NUM_DOUBLE = 263, + INASSIGN = 264, + NUM_LONG = 265, + LOCAL = 266, + STATIC = 267, + IIF = 268, + IF = 269, + ELSE = 270, + ELSEIF = 271, + END = 272, + ENDIF = 273, + LITERAL = 274, + TRUEVALUE = 275, + FALSEVALUE = 276, + ANNOUNCE = 277, + EXTERN = 278, + INIT = 279, + EXIT = 280, + AND = 281, + OR = 282, + NOT = 283, + PUBLIC = 284, + EQ = 285, + NE1 = 286, + NE2 = 287, + INC = 288, + DEC = 289, + ALIASOP = 290, + DOCASE = 291, + CASE = 292, + OTHERWISE = 293, + ENDCASE = 294, + ENDDO = 295, + MEMVAR = 296, + WHILE = 297, + LOOP = 298, + FOR = 299, + NEXT = 300, + TO = 301, + STEP = 302, + LE = 303, + GE = 304, + FIELD = 305, + IN = 306, + PARAMETERS = 307, + PLUSEQ = 308, + MINUSEQ = 309, + MULTEQ = 310, + DIVEQ = 311, + POWER = 312, + EXPEQ = 313, + MODEQ = 314, + PRIVATE = 315, + BEGINSEQ = 316, + BREAK = 317, + RECOVER = 318, + RECOVERUSING = 319, + DO = 320, + WITH = 321, + SELF = 322, + LINE = 323, + MACROVAR = 324, + MACROTEXT = 325, + AS_ARRAY = 326, + AS_BLOCK = 327, + AS_CHARACTER = 328, + AS_CLASS = 329, + AS_DATE = 330, + AS_LOGICAL = 331, + AS_NUMERIC = 332, + AS_OBJECT = 333, + AS_VARIANT = 334, + DECLARE = 335, + OPTIONAL = 336, + DECLARE_CLASS = 337, + DECLARE_MEMBER = 338, + AS_ARRAY_ARRAY = 339, + AS_BLOCK_ARRAY = 340, + AS_CHARACTER_ARRAY = 341, + AS_CLASS_ARRAY = 342, + AS_DATE_ARRAY = 343, + AS_LOGICAL_ARRAY = 344, + AS_NUMERIC_ARRAY = 345, + AS_OBJECT_ARRAY = 346, + PROCREQ = 347, + CBSTART = 348, + DOIDENT = 349, + FOREACH = 350, + DESCEND = 351, + DOSWITCH = 352, + WITHOBJECT = 353, + NUM_DATE = 354, + EPSILON = 355, + POST = 356, + UNARY = 357, + PRE = 358 + }; +#endif +/* Tokens. */ +#define FUNCTION 258 +#define PROCEDURE 259 +#define IDENTIFIER 260 +#define RETURN 261 +#define NIL 262 +#define NUM_DOUBLE 263 +#define INASSIGN 264 +#define NUM_LONG 265 +#define LOCAL 266 +#define STATIC 267 +#define IIF 268 +#define IF 269 +#define ELSE 270 +#define ELSEIF 271 +#define END 272 +#define ENDIF 273 +#define LITERAL 274 +#define TRUEVALUE 275 +#define FALSEVALUE 276 +#define ANNOUNCE 277 +#define EXTERN 278 +#define INIT 279 +#define EXIT 280 +#define AND 281 +#define OR 282 +#define NOT 283 +#define PUBLIC 284 +#define EQ 285 +#define NE1 286 +#define NE2 287 +#define INC 288 +#define DEC 289 +#define ALIASOP 290 +#define DOCASE 291 +#define CASE 292 +#define OTHERWISE 293 +#define ENDCASE 294 +#define ENDDO 295 +#define MEMVAR 296 +#define WHILE 297 +#define LOOP 298 +#define FOR 299 +#define NEXT 300 +#define TO 301 +#define STEP 302 +#define LE 303 +#define GE 304 +#define FIELD 305 +#define IN 306 +#define PARAMETERS 307 +#define PLUSEQ 308 +#define MINUSEQ 309 +#define MULTEQ 310 +#define DIVEQ 311 +#define POWER 312 +#define EXPEQ 313 +#define MODEQ 314 +#define PRIVATE 315 +#define BEGINSEQ 316 +#define BREAK 317 +#define RECOVER 318 +#define RECOVERUSING 319 +#define DO 320 +#define WITH 321 +#define SELF 322 +#define LINE 323 +#define MACROVAR 324 +#define MACROTEXT 325 +#define AS_ARRAY 326 +#define AS_BLOCK 327 +#define AS_CHARACTER 328 +#define AS_CLASS 329 +#define AS_DATE 330 +#define AS_LOGICAL 331 +#define AS_NUMERIC 332 +#define AS_OBJECT 333 +#define AS_VARIANT 334 +#define DECLARE 335 +#define OPTIONAL 336 +#define DECLARE_CLASS 337 +#define DECLARE_MEMBER 338 +#define AS_ARRAY_ARRAY 339 +#define AS_BLOCK_ARRAY 340 +#define AS_CHARACTER_ARRAY 341 +#define AS_CLASS_ARRAY 342 +#define AS_DATE_ARRAY 343 +#define AS_LOGICAL_ARRAY 344 +#define AS_NUMERIC_ARRAY 345 +#define AS_OBJECT_ARRAY 346 +#define PROCREQ 347 +#define CBSTART 348 +#define DOIDENT 349 +#define FOREACH 350 +#define DESCEND 351 +#define DOSWITCH 352 +#define WITHOBJECT 353 +#define NUM_DATE 354 +#define EPSILON 355 +#define POST 356 +#define UNARY 357 +#define PRE 358 + + + + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 90 "../../harbour.y" +{ + char * string; /* to hold a string returned by lex */ + int iNumber; /* to hold a temporary integer number */ + HB_LONG lNumber; /* to hold a temporary long number */ + BOOL bTrue; + struct + { + HB_LONG lNumber; /* to hold a long number returned by lex */ + UCHAR bWidth; /* to hold the width of the value */ + } valLong; + struct + { + double dNumber; /* to hold a double number returned by lex */ + /* NOTE: Intentionally using "unsigned char" instead of "BYTE" */ + UCHAR bWidth; /* to hold the width of the value */ + UCHAR bDec; /* to hold the number of decimal points in the value */ + } valDouble; + HB_EXPR_PTR asExpr; + struct + { + char * string; + int length; + BOOL dealloc; + } valChar; + struct + { + char * string; + int length; + BOOL lateEval; /* Flag for early {|| ¯o} (0) or late {|| &(macro)} (1) binding */ + BOOL isMacro; + } asCodeblock; + struct + { + BOOL bMacro; + union + { + char * string; + HB_EXPR_PTR macro; + } value; + } asMessage; + void * pVoid; /* to hold any memory structure we may need */ +} +/* Line 1529 of yacc.c. */ +#line 298 "harboury.h" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + + + diff --git a/harbour/source/macro/macro.yyc b/harbour/source/macro/macro.yyc new file mode 100644 index 0000000000..1e2a73f4a1 --- /dev/null +++ b/harbour/source/macro/macro.yyc @@ -0,0 +1,4372 @@ +/* A Bison parser, made by GNU Bison 2.3. */ + +/* Skeleton implementation for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + 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, or (at your option) + any later version. + + 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., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* C LALR(1) parser skeleton written by Richard Stallman, by + simplifying the original so-called "semantic" parser. */ + +/* All symbols defined below should begin with yy or YY, to avoid + infringing on user name space. This should be done even for local + variables, as they might otherwise be expanded by user macros. + There are some unavoidable exceptions within include files to + define necessary library symbols; they are noted "INFRINGES ON + USER NAME SPACE" below. */ + +/* Identify Bison output. */ +#define YYBISON 1 + +/* Bison version. */ +#define YYBISON_VERSION "2.3" + +/* Skeleton name. */ +#define YYSKELETON_NAME "yacc.c" + +/* Pure parsers. */ +#define YYPURE 1 + +/* Using locations. */ +#define YYLSP_NEEDED 0 + +/* Substitute the variable and function names. */ +#define yyparse hb_macroparse +#define yylex hb_macrolex +#define yyerror hb_macroerror +#define yylval hb_macrolval +#define yychar hb_macrochar +#define yydebug hb_macrodebug +#define yynerrs hb_macronerrs + + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + IDENTIFIER = 258, + NIL = 259, + NUM_DOUBLE = 260, + INASSIGN = 261, + NUM_LONG = 262, + NUM_DATE = 263, + IIF = 264, + IF = 265, + LITERAL = 266, + TRUEVALUE = 267, + FALSEVALUE = 268, + AND = 269, + OR = 270, + NOT = 271, + EQ = 272, + NE1 = 273, + NE2 = 274, + INC = 275, + DEC = 276, + ALIASOP = 277, + SELF = 278, + LE = 279, + GE = 280, + FIELD = 281, + MACROVAR = 282, + MACROTEXT = 283, + PLUSEQ = 284, + MINUSEQ = 285, + MULTEQ = 286, + DIVEQ = 287, + POWER = 288, + EXPEQ = 289, + MODEQ = 290, + POST = 291, + UNARY = 292, + PRE = 293 + }; +#endif +/* Tokens. */ +#define IDENTIFIER 258 +#define NIL 259 +#define NUM_DOUBLE 260 +#define INASSIGN 261 +#define NUM_LONG 262 +#define NUM_DATE 263 +#define IIF 264 +#define IF 265 +#define LITERAL 266 +#define TRUEVALUE 267 +#define FALSEVALUE 268 +#define AND 269 +#define OR 270 +#define NOT 271 +#define EQ 272 +#define NE1 273 +#define NE2 274 +#define INC 275 +#define DEC 276 +#define ALIASOP 277 +#define SELF 278 +#define LE 279 +#define GE 280 +#define FIELD 281 +#define MACROVAR 282 +#define MACROTEXT 283 +#define PLUSEQ 284 +#define MINUSEQ 285 +#define MULTEQ 286 +#define DIVEQ 287 +#define POWER 288 +#define EXPEQ 289 +#define MODEQ 290 +#define POST 291 +#define UNARY 292 +#define PRE 293 + + + + +/* Copy the first part of user declarations. */ +#line 5 "../../macro.y" + +/* + * $Id$ + */ + +/* + * Harbour Project source code: + * Macro compiler YACC rules and actions + * + * Copyright 1999 Antonio Linares + * www - http://www.harbour-project.org + * + * 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, or (at your option) + * any later version. + * + * 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 software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, + * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). + * + * As a special exception, the Harbour Project gives permission for + * additional uses of the text contained in its release of Harbour. + * + * The exception is that, if you link the Harbour libraries with other + * files to produce an executable, this does not by itself cause the + * resulting executable to be covered by the GNU General Public License. + * Your use of that executable is in no way restricted on account of + * linking the Harbour library code into it. + * + * This exception does not however invalidate any other reasons why + * the executable file might be covered by the GNU General Public License. + * + * This exception applies only to the code released by the Harbour + * Project under the name Harbour. If you copy code from other + * Harbour Project or Free Software Foundation releases into a copy of + * Harbour, as the General Public License permits, the exception does + * not apply to the code that you add in this way. To avoid misleading + * anyone as to the status of such modified files, you must delete + * this exception notice from them. + * + * If you write modifications of your own for Harbour, it is your choice + * whether to permit this exception to apply to your modifications. + * If you do not wish that, delete this exception notice. + * + */ + +/* TODO list + * 1) jumps longer then 2^15 bytes + * 2) Change the pcode generated by ::cVar from Self:cVar to QSELF():cVar + * 3) Support this syntax: nPtr := @Hello() + */ + +/* this #define HAVE TO be placed before all #include directives + */ +#define HB_MACRO_SUPPORT + +#include "hbmacro.h" +#include "hbcomp.h" +#include "hbdate.h" +#include "hbpp.h" + +/* Compile using: bison -d -p hb_comp macro.y */ + +/* NOTE: these symbols are used internally in bison.simple + */ +#undef alloca +#define alloca hb_xgrab +#undef malloc +#define malloc hb_xgrab +#undef realloc +#define realloc hb_xrealloc +#undef free +#define free hb_xfree + +#undef YYFREE +#define YYFREE hb_xfree +#undef YYMALLOC +#define YYMALLOC hb_xgrab + +/* yacc/lex related definitions + */ + + +/* Standard checking for valid expression creation + */ +#define HB_MACRO_CHECK( pExpr ) \ + if( ! ( HB_MACRO_DATA->status & HB_MACRO_CONT ) ) \ + { \ + YYABORT; \ + } + +#define HB_MACRO_IFENABLED( pSet, pExpr, flag ) \ + if( HB_MACRO_DATA->supported & (flag) ) \ + { \ + pSet = (pExpr); \ + }\ + else \ + { \ + YYABORT; \ + } + + + +/* Enabling traces. */ +#ifndef YYDEBUG +# define YYDEBUG 0 +#endif + +/* Enabling verbose error messages. */ +#ifdef YYERROR_VERBOSE +# undef YYERROR_VERBOSE +# define YYERROR_VERBOSE 1 +#else +# define YYERROR_VERBOSE 0 +#endif + +/* Enabling the token table. */ +#ifndef YYTOKEN_TABLE +# define YYTOKEN_TABLE 0 +#endif + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 116 "../../macro.y" +{ + char * string; /* to hold a string returned by lex */ + int iNumber; /* to hold a temporary integer number */ + HB_LONG lNumber; /* to hold a temporary long number */ + void * pVoid; /* to hold any memory structure we may need */ + HB_EXPR_PTR asExpr; + struct + { + int iNumber; /* to hold a number returned by lex */ + } valInteger; + struct + { + HB_LONG lNumber; /* to hold a long number returned by lex */ + UCHAR bWidth; /* to hold the width of the value */ + } valLong; + struct + { + double dNumber; /* to hold a double number returned by lex */ + UCHAR bWidth; /* to hold the width of the value */ + UCHAR bDec; /* to hold the number of decimal points in the value */ + } valDouble; +} +/* Line 193 of yacc.c. */ +#line 313 "macroy.c" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + + + +/* Copy the second part of user declarations. */ +#line 139 "../../macro.y" + +/* This must be placed after the above union - the union is + * typedef-ined to YYSTYPE + */ +extern int yylex( YYSTYPE *, HB_MACRO_PTR ); /* main lex token function, called by yyparse() */ +extern int yyparse( HB_MACRO_PTR ); /* main yacc parsing function */ +extern void yyerror( HB_MACRO_PTR, char * ); /* parsing error management function */ + +static void hb_macroIdentNew( HB_COMP_DECL, char * ); + +#line 151 "../../macro.y" + +#ifdef __WATCOMC__ +/* disable warnings for unreachable code */ +#pragma warning 13 9 +#endif + + +/* Line 216 of yacc.c. */ +#line 343 "macroy.c" + +#ifdef short +# undef short +#endif + +#ifdef YYTYPE_UINT8 +typedef YYTYPE_UINT8 yytype_uint8; +#else +typedef unsigned char yytype_uint8; +#endif + +#ifdef YYTYPE_INT8 +typedef YYTYPE_INT8 yytype_int8; +#elif (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +typedef signed char yytype_int8; +#else +typedef short int yytype_int8; +#endif + +#ifdef YYTYPE_UINT16 +typedef YYTYPE_UINT16 yytype_uint16; +#else +typedef unsigned short int yytype_uint16; +#endif + +#ifdef YYTYPE_INT16 +typedef YYTYPE_INT16 yytype_int16; +#else +typedef short int yytype_int16; +#endif + +#ifndef YYSIZE_T +# ifdef __SIZE_TYPE__ +# define YYSIZE_T __SIZE_TYPE__ +# elif defined size_t +# define YYSIZE_T size_t +# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# define YYSIZE_T size_t +# else +# define YYSIZE_T unsigned int +# endif +#endif + +#define YYSIZE_MAXIMUM ((YYSIZE_T) -1) + +#ifndef YY_ +# if YYENABLE_NLS +# if ENABLE_NLS +# include /* INFRINGES ON USER NAME SPACE */ +# define YY_(msgid) dgettext ("bison-runtime", msgid) +# endif +# endif +# ifndef YY_ +# define YY_(msgid) msgid +# endif +#endif + +/* Suppress unused-variable warnings by "using" E. */ +#if ! defined lint || defined __GNUC__ +# define YYUSE(e) ((void) (e)) +#else +# define YYUSE(e) /* empty */ +#endif + +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(n) (n) +#else +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static int +YYID (int i) +#else +static int +YYID (i) + int i; +#endif +{ + return i; +} +#endif + +#if ! defined yyoverflow || YYERROR_VERBOSE + +/* The parser invokes alloca or malloc; define the necessary symbols. */ + +# ifdef YYSTACK_USE_ALLOCA +# if YYSTACK_USE_ALLOCA +# ifdef __GNUC__ +# define YYSTACK_ALLOC __builtin_alloca +# elif defined __BUILTIN_VA_ARG_INCR +# include /* INFRINGES ON USER NAME SPACE */ +# elif defined _AIX +# define YYSTACK_ALLOC __alloca +# elif defined _MSC_VER +# include /* INFRINGES ON USER NAME SPACE */ +# define alloca _alloca +# else +# define YYSTACK_ALLOC alloca +# if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# endif +# endif +# endif + +# ifdef YYSTACK_ALLOC + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) +# ifndef YYSTACK_ALLOC_MAXIMUM + /* The OS might guarantee only one guard page at the bottom of the stack, + and a page size can be as small as 4096 bytes. So we cannot safely + invoke alloca (N) if N exceeds 4096. Use a slightly smaller number + to allow for a few compiler-allocated temporary stack slots. */ +# define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */ +# endif +# else +# define YYSTACK_ALLOC YYMALLOC +# define YYSTACK_FREE YYFREE +# ifndef YYSTACK_ALLOC_MAXIMUM +# define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM +# endif +# if (defined __cplusplus && ! defined _STDLIB_H \ + && ! ((defined YYMALLOC || defined malloc) \ + && (defined YYFREE || defined free))) +# include /* INFRINGES ON USER NAME SPACE */ +# ifndef _STDLIB_H +# define _STDLIB_H 1 +# endif +# endif +# ifndef YYMALLOC +# define YYMALLOC malloc +# if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# ifndef YYFREE +# define YYFREE free +# if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +void free (void *); /* INFRINGES ON USER NAME SPACE */ +# endif +# endif +# endif +#endif /* ! defined yyoverflow || YYERROR_VERBOSE */ + + +#if (! defined yyoverflow \ + && (! defined __cplusplus \ + || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + +/* A type that is properly aligned for any stack member. */ +union yyalloc +{ + yytype_int16 yyss; + YYSTYPE yyvs; + }; + +/* The size of the maximum gap between one aligned stack and the next. */ +# define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1) + +/* The size of an array large to enough to hold all stacks, each with + N elements. */ +# define YYSTACK_BYTES(N) \ + ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE)) \ + + YYSTACK_GAP_MAXIMUM) + +/* Copy COUNT objects from FROM to TO. The source and destination do + not overlap. */ +# ifndef YYCOPY +# if defined __GNUC__ && 1 < __GNUC__ +# define YYCOPY(To, From, Count) \ + __builtin_memcpy (To, From, (Count) * sizeof (*(From))) +# else +# define YYCOPY(To, From, Count) \ + do \ + { \ + YYSIZE_T yyi; \ + for (yyi = 0; yyi < (Count); yyi++) \ + (To)[yyi] = (From)[yyi]; \ + } \ + while (YYID (0)) +# endif +# endif + +/* Relocate STACK from its old location to the new one. The + local variables YYSIZE and YYSTACKSIZE give the old and new number of + elements in the stack, and YYPTR gives the new location of the + stack. Advance YYPTR to a properly aligned location for the next + stack. */ +# define YYSTACK_RELOCATE(Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack, Stack, yysize); \ + Stack = &yyptr->Stack; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (0)) + +#endif + +/* YYFINAL -- State number of the termination state. */ +#define YYFINAL 89 +/* YYLAST -- Last index in YYTABLE. */ +#define YYLAST 1156 + +/* YYNTOKENS -- Number of terminals. */ +#define YYNTOKENS 60 +/* YYNNTS -- Number of nonterminals. */ +#define YYNNTS 64 +/* YYNRULES -- Number of rules. */ +#define YYNRULES 329 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 569 + +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +#define YYUNDEFTOK 2 +#define YYMAXUTOK 293 + +#define YYTRANSLATE(YYX) \ + ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) + +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +static const yytype_uint8 yytranslate[] = +{ + 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 51, 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, 40, 45, 48, 2, + 54, 55, 43, 41, 50, 42, 2, 44, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 56, 2, + 38, 37, 39, 2, 49, 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, + 2, 58, 2, 57, 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, 2, + 2, 2, 2, 52, 59, 53, 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, 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, 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, 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, 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, 2, 2, 2, 2, 2, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 46, 47 +}; + +#if YYDEBUG +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const yytype_uint16 yyprhs[] = +{ + 0, 0, 3, 6, 8, 10, 13, 15, 17, 19, + 21, 24, 26, 28, 30, 32, 34, 38, 41, 43, + 46, 48, 50, 53, 56, 59, 62, 66, 69, 72, + 75, 78, 81, 83, 85, 88, 91, 94, 97, 100, + 103, 106, 109, 112, 115, 118, 121, 124, 127, 130, + 133, 136, 139, 142, 145, 148, 151, 154, 157, 160, + 163, 166, 171, 176, 178, 182, 184, 187, 190, 195, + 199, 203, 207, 211, 215, 219, 223, 227, 231, 235, + 239, 243, 247, 251, 255, 259, 263, 267, 271, 275, + 280, 282, 284, 286, 288, 290, 292, 294, 296, 298, + 300, 302, 304, 306, 308, 310, 312, 314, 316, 318, + 320, 322, 324, 326, 328, 330, 332, 334, 336, 338, + 339, 344, 346, 350, 351, 353, 355, 357, 360, 363, + 366, 369, 372, 375, 378, 381, 384, 387, 390, 393, + 396, 399, 402, 405, 408, 411, 414, 417, 420, 423, + 426, 429, 433, 437, 441, 445, 449, 453, 457, 461, + 465, 469, 473, 477, 481, 485, 489, 493, 497, 501, + 505, 509, 513, 517, 521, 525, 529, 533, 537, 541, + 545, 549, 553, 557, 561, 565, 569, 573, 577, 581, + 585, 589, 593, 597, 601, 605, 609, 613, 617, 621, + 625, 629, 633, 637, 641, 645, 649, 653, 657, 661, + 665, 669, 673, 677, 681, 685, 689, 693, 697, 701, + 705, 709, 713, 717, 721, 725, 729, 733, 737, 741, + 745, 749, 753, 757, 761, 765, 769, 773, 777, 781, + 785, 789, 793, 797, 801, 805, 809, 813, 817, 821, + 825, 829, 833, 837, 841, 845, 849, 853, 857, 861, + 865, 869, 873, 877, 881, 885, 889, 893, 897, 901, + 905, 909, 913, 917, 921, 925, 929, 933, 937, 941, + 945, 949, 953, 957, 961, 963, 965, 967, 969, 971, + 973, 977, 981, 985, 989, 993, 997, 1001, 1005, 1009, + 1013, 1017, 1021, 1025, 1029, 1033, 1037, 1041, 1044, 1047, + 1051, 1056, 1058, 1062, 1063, 1071, 1072, 1080, 1082, 1086, + 1087, 1089, 1093, 1096, 1100, 1103, 1106, 1107, 1117, 1118 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yytype_int8 yyrhs[] = +{ + 61, 0, -1, 89, 51, -1, 89, -1, 92, -1, + 89, 1, -1, 1, -1, 5, -1, 7, -1, 8, + -1, 7, 22, -1, 4, -1, 11, -1, 12, -1, + 13, -1, 23, -1, 52, 111, 53, -1, 69, 109, + -1, 3, -1, 3, 22, -1, 27, -1, 28, -1, + 73, 22, -1, 48, 119, -1, 75, 22, -1, 26, + 22, -1, 26, 22, 77, -1, 77, 72, -1, 77, + 64, -1, 77, 120, -1, 77, 74, -1, 77, 76, + -1, 3, -1, 73, -1, 64, 79, -1, 74, 79, + -1, 76, 79, -1, 120, 79, -1, 72, 79, -1, + 77, 79, -1, 78, 79, -1, 64, 119, -1, 72, + 119, -1, 74, 119, -1, 76, 119, -1, 120, 119, + -1, 65, 109, -1, 66, 109, -1, 112, 109, -1, + 67, 109, -1, 68, 109, -1, 71, 109, -1, 80, + 109, -1, 81, 109, -1, 73, 109, -1, 75, 109, + -1, 86, 109, -1, 87, 109, -1, 83, 109, -1, + 121, 109, -1, 119, 109, -1, 3, 54, 84, 55, + -1, 73, 54, 84, 55, -1, 85, -1, 84, 50, + 85, -1, 93, -1, 49, 3, -1, 49, 80, -1, + 49, 3, 54, 55, -1, 62, 56, 3, -1, 65, + 56, 3, -1, 63, 56, 3, -1, 66, 56, 3, + -1, 112, 56, 3, -1, 67, 56, 3, -1, 68, + 56, 3, -1, 69, 56, 3, -1, 70, 56, 3, + -1, 71, 56, 3, -1, 80, 56, 3, -1, 81, + 56, 3, -1, 73, 56, 3, -1, 75, 56, 3, + -1, 83, 56, 3, -1, 121, 56, 3, -1, 119, + 56, 3, -1, 82, 56, 3, -1, 87, 56, 3, + -1, 86, 56, 3, -1, 86, 54, 84, 55, -1, + 62, -1, 65, -1, 63, -1, 66, -1, 112, -1, + 67, -1, 68, -1, 69, -1, 70, -1, 80, -1, + 73, -1, 75, -1, 71, -1, 82, -1, 83, -1, + 121, -1, 86, -1, 87, -1, 81, -1, 98, -1, + 105, -1, 95, -1, 96, -1, 97, -1, 106, -1, + 107, -1, 108, -1, 88, -1, 119, -1, -1, 93, + 50, 91, 93, -1, 90, -1, 92, 50, 93, -1, + -1, 89, -1, 20, -1, 21, -1, 62, 94, -1, + 65, 94, -1, 66, 94, -1, 112, 94, -1, 67, + 94, -1, 68, 94, -1, 69, 94, -1, 70, 94, + -1, 71, 94, -1, 73, 94, -1, 75, 94, -1, + 80, 94, -1, 81, 94, -1, 82, 94, -1, 119, + 94, -1, 121, 94, -1, 83, 94, -1, 86, 94, + -1, 87, 94, -1, 20, 89, -1, 21, 89, -1, + 16, 89, -1, 42, 89, -1, 41, 89, -1, 62, + 6, 89, -1, 65, 6, 89, -1, 66, 6, 89, + -1, 112, 6, 89, -1, 67, 6, 89, -1, 68, + 6, 89, -1, 69, 6, 89, -1, 70, 6, 89, + -1, 71, 6, 89, -1, 73, 6, 89, -1, 75, + 6, 89, -1, 80, 6, 89, -1, 81, 6, 89, + -1, 82, 6, 89, -1, 119, 6, 89, -1, 121, + 6, 89, -1, 83, 6, 89, -1, 86, 6, 89, + -1, 87, 6, 89, -1, 62, 29, 89, -1, 65, + 29, 89, -1, 66, 29, 89, -1, 112, 29, 89, + -1, 67, 29, 89, -1, 68, 29, 89, -1, 69, + 29, 89, -1, 70, 29, 89, -1, 71, 29, 89, + -1, 73, 29, 89, -1, 75, 29, 89, -1, 80, + 29, 89, -1, 81, 29, 89, -1, 82, 29, 89, + -1, 119, 29, 89, -1, 121, 29, 89, -1, 83, + 29, 89, -1, 86, 29, 89, -1, 87, 29, 89, + -1, 62, 30, 89, -1, 65, 30, 89, -1, 66, + 30, 89, -1, 112, 30, 89, -1, 67, 30, 89, + -1, 68, 30, 89, -1, 69, 30, 89, -1, 70, + 30, 89, -1, 71, 30, 89, -1, 73, 30, 89, + -1, 75, 30, 89, -1, 80, 30, 89, -1, 81, + 30, 89, -1, 82, 30, 89, -1, 119, 30, 89, + -1, 121, 30, 89, -1, 83, 30, 89, -1, 86, + 30, 89, -1, 87, 30, 89, -1, 62, 31, 89, + -1, 65, 31, 89, -1, 66, 31, 89, -1, 112, + 31, 89, -1, 67, 31, 89, -1, 68, 31, 89, + -1, 69, 31, 89, -1, 70, 31, 89, -1, 71, + 31, 89, -1, 73, 31, 89, -1, 75, 31, 89, + -1, 80, 31, 89, -1, 81, 31, 89, -1, 82, + 31, 89, -1, 119, 31, 89, -1, 121, 31, 89, + -1, 83, 31, 89, -1, 86, 31, 89, -1, 87, + 31, 89, -1, 62, 32, 89, -1, 65, 32, 89, + -1, 66, 32, 89, -1, 112, 32, 89, -1, 67, + 32, 89, -1, 68, 32, 89, -1, 69, 32, 89, + -1, 70, 32, 89, -1, 71, 32, 89, -1, 73, + 32, 89, -1, 75, 32, 89, -1, 80, 32, 89, + -1, 81, 32, 89, -1, 82, 32, 89, -1, 119, + 32, 89, -1, 121, 32, 89, -1, 83, 32, 89, + -1, 86, 32, 89, -1, 87, 32, 89, -1, 62, + 35, 89, -1, 65, 35, 89, -1, 66, 35, 89, + -1, 112, 35, 89, -1, 67, 35, 89, -1, 68, + 35, 89, -1, 69, 35, 89, -1, 70, 35, 89, + -1, 71, 35, 89, -1, 73, 35, 89, -1, 75, + 35, 89, -1, 80, 35, 89, -1, 81, 35, 89, + -1, 82, 35, 89, -1, 119, 35, 89, -1, 121, + 35, 89, -1, 83, 35, 89, -1, 86, 35, 89, + -1, 87, 35, 89, -1, 62, 34, 89, -1, 65, + 34, 89, -1, 66, 34, 89, -1, 112, 34, 89, + -1, 67, 34, 89, -1, 68, 34, 89, -1, 69, + 34, 89, -1, 70, 34, 89, -1, 71, 34, 89, + -1, 73, 34, 89, -1, 75, 34, 89, -1, 80, + 34, 89, -1, 81, 34, 89, -1, 82, 34, 89, + -1, 119, 34, 89, -1, 121, 34, 89, -1, 83, + 34, 89, -1, 86, 34, 89, -1, 87, 34, 89, + -1, 99, -1, 100, -1, 101, -1, 102, -1, 103, + -1, 104, -1, 89, 41, 89, -1, 89, 42, 89, + -1, 89, 43, 89, -1, 89, 44, 89, -1, 89, + 45, 89, -1, 89, 33, 89, -1, 89, 14, 89, + -1, 89, 15, 89, -1, 89, 17, 89, -1, 89, + 38, 89, -1, 89, 39, 89, -1, 89, 24, 89, + -1, 89, 25, 89, -1, 89, 18, 89, -1, 89, + 19, 89, -1, 89, 40, 89, -1, 89, 37, 89, + -1, 110, 57, -1, 58, 89, -1, 110, 50, 89, + -1, 110, 57, 58, 89, -1, 93, -1, 111, 50, + 93, -1, -1, 52, 59, 113, 116, 59, 115, 53, + -1, -1, 52, 59, 114, 117, 59, 115, 53, -1, + 89, -1, 115, 50, 89, -1, -1, 3, -1, 117, + 50, 3, -1, 54, 93, -1, 118, 50, 93, -1, + 118, 55, -1, 119, 22, -1, -1, 9, 54, 89, + 50, 93, 50, 122, 93, 55, -1, -1, 10, 54, + 89, 50, 93, 50, 123, 93, 55, -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ +static const yytype_uint16 yyrline[] = +{ + 0, 225, 225, 234, 242, 250, 255, 264, 265, 268, + 271, 276, 281, 286, 287, 292, 297, 302, 307, 310, + 315, 318, 337, 342, 345, 352, 353, 358, 359, 360, + 361, 362, 365, 366, 369, 370, 371, 372, 373, 374, + 375, 384, 385, 386, 387, 388, 393, 394, 395, 396, + 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, + 407, 412, 415, 420, 421, 424, 425, 426, 427, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 451, 456, + 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, + 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, + 480, 481, 482, 483, 484, 485, 486, 489, 490, 493, + 493, 507, 508, 512, 513, 519, 520, 526, 527, 528, + 529, 530, 531, 532, 533, 534, 535, 536, 537, 538, + 539, 540, 541, 542, 543, 544, 547, 548, 551, 552, + 553, 556, 557, 558, 559, 560, 561, 562, 563, 564, + 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, + 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, + 587, 588, 589, 590, 591, 592, 593, 594, 595, 598, + 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, + 609, 610, 611, 612, 613, 614, 615, 616, 619, 620, + 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, + 631, 632, 633, 634, 635, 636, 637, 640, 641, 642, + 643, 644, 645, 646, 647, 648, 649, 650, 651, 652, + 653, 654, 655, 656, 657, 658, 661, 662, 663, 664, + 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, + 675, 676, 677, 678, 679, 682, 683, 684, 685, 686, + 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, + 697, 698, 699, 700, 703, 704, 705, 706, 707, 708, + 711, 712, 713, 714, 715, 716, 719, 720, 723, 724, + 725, 726, 727, 728, 729, 730, 731, 734, 740, 741, + 742, 745, 746, 750, 749, 754, 753, 762, 763, 769, + 772, 773, 776, 777, 780, 783, 787, 786, 792, 791 +}; +#endif + +#if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE +/* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM. + First, the terminals, then, starting at YYNTOKENS, nonterminals. */ +static const char *const yytname[] = +{ + "$end", "error", "$undefined", "IDENTIFIER", "NIL", "NUM_DOUBLE", + "INASSIGN", "NUM_LONG", "NUM_DATE", "IIF", "IF", "LITERAL", "TRUEVALUE", + "FALSEVALUE", "AND", "OR", "NOT", "EQ", "NE1", "NE2", "INC", "DEC", + "ALIASOP", "SELF", "LE", "GE", "FIELD", "MACROVAR", "MACROTEXT", + "PLUSEQ", "MINUSEQ", "MULTEQ", "DIVEQ", "POWER", "EXPEQ", "MODEQ", + "POST", "'='", "'<'", "'>'", "'$'", "'+'", "'-'", "'*'", "'/'", "'%'", + "UNARY", "PRE", "'&'", "'@'", "','", "'\\n'", "'{'", "'}'", "'('", "')'", + "':'", "']'", "'['", "'|'", "$accept", "Main", "NumValue", "DateValue", + "NumAlias", "NilValue", "LiteralValue", "Logical", "SelfValue", "Array", + "ArrayAt", "Variable", "VarAlias", "MacroVar", "MacroVarAlias", + "MacroExpr", "MacroExprAlias", "FieldAlias", "FieldVarAlias", "AliasId", + "AliasVar", "AliasExpr", "VariableAt", "FunCall", "ArgList", "Argument", + "ObjectData", "ObjectMethod", "SimpleExpression", "Expression", + "RootParamList", "@1", "AsParamList", "EmptyExpression", "PostOp", + "ExprPostOp", "ExprPreOp", "ExprUnary", "ExprAssign", "ExprPlusEq", + "ExprMinusEq", "ExprMultEq", "ExprDivEq", "ExprModEq", "ExprExpEq", + "ExprOperEq", "ExprMath", "ExprBool", "ExprRelation", "ArrayIndex", + "IndexList", "ElemList", "CodeBlock", "@2", "@3", "BlockExpList", + "BlockNoVar", "BlockVarList", "ExpList", "PareExpList", + "PareExpListAlias", "IfInline", "@4", "@5", 0 +}; +#endif + +# ifdef YYPRINT +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ +static const yytype_uint16 yytoknum[] = +{ + 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 61, 60, 62, + 36, 43, 45, 42, 47, 37, 292, 293, 38, 64, + 44, 10, 123, 125, 40, 41, 58, 93, 91, 124 +}; +# endif + +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint8 yyr1[] = +{ + 0, 60, 61, 61, 61, 61, 61, 62, 62, 63, + 64, 65, 66, 67, 67, 68, 69, 70, 71, 72, + 73, 73, 74, 75, 76, 77, 77, 78, 78, 78, + 78, 78, 79, 79, 80, 80, 80, 80, 80, 80, + 80, 81, 81, 81, 81, 81, 82, 82, 82, 82, + 82, 82, 82, 82, 82, 82, 82, 82, 82, 82, + 82, 83, 83, 84, 84, 85, 85, 85, 85, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 86, + 86, 86, 86, 86, 86, 86, 86, 86, 86, 87, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, + 88, 88, 88, 88, 88, 88, 88, 89, 89, 91, + 90, 92, 92, 93, 93, 94, 94, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, + 95, 95, 95, 95, 95, 95, 96, 96, 97, 97, + 97, 98, 98, 98, 98, 98, 98, 98, 98, 98, + 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, + 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, + 99, 99, 99, 99, 99, 99, 99, 99, 99, 100, + 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 100, 100, 100, 100, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, + 101, 101, 101, 101, 101, 101, 101, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, + 102, 102, 102, 102, 102, 102, 103, 103, 103, 103, + 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, + 103, 103, 103, 103, 103, 104, 104, 104, 104, 104, + 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, + 104, 104, 104, 104, 105, 105, 105, 105, 105, 105, + 106, 106, 106, 106, 106, 106, 107, 107, 108, 108, + 108, 108, 108, 108, 108, 108, 108, 109, 110, 110, + 110, 111, 111, 113, 112, 114, 112, 115, 115, 116, + 117, 117, 118, 118, 119, 120, 122, 121, 123, 121 +}; + +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ +static const yytype_uint8 yyr2[] = +{ + 0, 2, 2, 1, 1, 2, 1, 1, 1, 1, + 2, 1, 1, 1, 1, 1, 3, 2, 1, 2, + 1, 1, 2, 2, 2, 2, 3, 2, 2, 2, + 2, 2, 1, 1, 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, 2, + 2, 4, 4, 1, 3, 1, 2, 2, 4, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, + 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, 0, + 4, 1, 3, 0, 1, 1, 1, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 2, 2, 3, + 4, 1, 3, 0, 7, 0, 7, 1, 3, 0, + 1, 3, 2, 3, 2, 2, 0, 9, 0, 9 +}; + +/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state + STATE-NUM when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const yytype_uint16 yydefact[] = +{ + 0, 6, 18, 11, 7, 8, 9, 0, 0, 12, + 13, 14, 0, 0, 0, 15, 0, 20, 21, 0, + 0, 0, 123, 123, 0, 90, 92, 0, 91, 93, + 95, 96, 97, 98, 102, 0, 100, 0, 101, 0, + 0, 0, 99, 108, 103, 104, 106, 107, 117, 0, + 121, 4, 0, 111, 112, 113, 109, 284, 285, 286, + 287, 288, 289, 110, 114, 115, 116, 94, 0, 118, + 0, 105, 19, 123, 10, 0, 0, 148, 146, 147, + 25, 150, 149, 23, 313, 124, 311, 0, 322, 1, + 0, 125, 126, 0, 0, 0, 0, 0, 0, 0, + 127, 0, 32, 33, 34, 41, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 128, 46, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 129, 47, 0, 0, + 0, 0, 0, 0, 0, 0, 131, 49, 0, 0, + 0, 0, 0, 0, 0, 0, 132, 50, 0, 0, + 0, 0, 0, 0, 0, 0, 133, 17, 0, 0, + 0, 0, 0, 0, 0, 0, 134, 0, 0, 0, + 0, 0, 0, 0, 0, 135, 51, 38, 42, 0, + 22, 0, 0, 0, 0, 0, 0, 123, 0, 136, + 54, 35, 43, 0, 24, 0, 0, 0, 0, 0, + 0, 0, 137, 55, 36, 44, 32, 0, 28, 27, + 33, 30, 0, 31, 39, 0, 29, 40, 0, 0, + 0, 0, 0, 0, 0, 0, 138, 52, 0, 0, + 0, 0, 0, 0, 0, 0, 139, 53, 0, 0, + 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, + 0, 0, 0, 0, 0, 143, 58, 0, 0, 0, + 0, 0, 0, 0, 123, 0, 144, 56, 0, 0, + 0, 0, 0, 0, 0, 0, 145, 57, 5, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 2, 123, 119, 0, + 0, 0, 0, 0, 0, 0, 0, 130, 48, 123, + 324, 0, 325, 0, 0, 0, 0, 0, 0, 0, + 141, 60, 37, 45, 0, 0, 0, 0, 0, 0, + 0, 0, 142, 59, 0, 0, 63, 65, 0, 0, + 26, 319, 0, 123, 16, 151, 170, 189, 208, 227, + 265, 246, 69, 71, 152, 171, 190, 209, 228, 266, + 247, 70, 308, 0, 307, 153, 172, 191, 210, 229, + 267, 248, 72, 155, 174, 193, 212, 231, 269, 250, + 74, 156, 175, 194, 213, 232, 270, 251, 75, 157, + 176, 195, 214, 233, 271, 252, 76, 158, 177, 196, + 215, 234, 272, 253, 77, 159, 178, 197, 216, 235, + 273, 254, 78, 160, 179, 198, 217, 236, 274, 255, + 0, 81, 161, 180, 199, 218, 237, 275, 256, 82, + 162, 181, 200, 219, 238, 276, 257, 79, 163, 182, + 201, 220, 239, 277, 258, 80, 164, 183, 202, 221, + 240, 278, 259, 86, 167, 186, 205, 224, 243, 281, + 262, 83, 168, 187, 206, 225, 244, 282, 263, 0, + 88, 169, 188, 207, 226, 245, 283, 264, 87, 296, + 297, 298, 303, 304, 301, 302, 295, 306, 299, 300, + 305, 290, 291, 292, 293, 294, 122, 123, 154, 173, + 192, 211, 230, 268, 249, 73, 323, 165, 184, 203, + 222, 241, 279, 260, 85, 166, 185, 204, 223, 242, + 280, 261, 84, 66, 0, 0, 0, 0, 0, 67, + 0, 123, 61, 123, 123, 0, 320, 0, 312, 309, + 0, 62, 89, 120, 0, 64, 0, 0, 0, 0, + 0, 310, 68, 326, 328, 317, 0, 321, 0, 123, + 123, 0, 314, 316, 0, 0, 318, 327, 329 +}; + +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int16 yydefgoto[] = +{ + -1, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 104, + 42, 43, 44, 45, 335, 336, 46, 47, 48, 85, + 50, 497, 51, 337, 100, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 116, + 117, 87, 67, 341, 342, 556, 535, 537, 68, 69, + 70, 71, 559, 560 +}; + +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -316 +static const yytype_int16 yypact[] = +{ + 388, -316, -13, -316, -316, -1, -316, -43, -32, -316, + -316, -316, 819, 819, 819, -316, 13, -316, -316, 819, + 819, -20, 331, 819, 51, 877, -6, 162, 57, 533, + 552, 572, 591, 893, 611, 162, 25, 162, 425, 162, + 434, 41, 630, 650, 909, 669, 443, 689, -316, 851, + -316, 2, 22, -316, -316, -316, -316, -316, -316, -316, + -316, -316, -316, -316, -316, -316, -316, 708, 11, 499, + 162, 728, -316, 767, -316, 819, 819, 1111, -316, -316, + 27, -316, -316, -316, 71, 1050, -316, 50, -316, -316, + 819, -316, -316, 819, 819, 819, 819, 819, 819, 77, + -316, 79, -316, -316, -316, -316, 819, 819, 819, 819, + 819, 819, 819, 81, 819, -316, -316, 14, 819, 819, + 819, 819, 819, 819, 819, 98, -316, -316, 819, 819, + 819, 819, 819, 819, 819, 113, -316, -316, 819, 819, + 819, 819, 819, 819, 819, 114, -316, -316, 819, 819, + 819, 819, 819, 819, 819, 123, -316, -316, 819, 819, + 819, 819, 819, 819, 819, 124, -316, 819, 819, 819, + 819, 819, 819, 819, 142, -316, -316, -316, -316, 819, + -316, 819, 819, 819, 819, 819, 819, 767, 143, -316, + -316, -316, -316, 819, -316, 819, 819, 819, 819, 819, + 819, 144, -316, -316, -316, -316, 134, -1, -316, -316, + 135, -316, 158, -316, -316, 165, -316, -316, 819, 819, + 819, 819, 819, 819, 819, 152, -316, -316, 819, 819, + 819, 819, 819, 819, 819, 189, -316, -316, 819, 819, + 819, 819, 819, 819, 819, 191, -316, 819, 819, 819, + 819, 819, 819, 819, 198, -316, -316, 819, 819, 819, + 819, 819, 819, 819, 767, 199, -316, -316, 819, 819, + 819, 819, 819, 819, 819, 200, -316, -316, -316, 819, + 819, 819, 819, 819, 819, 819, 819, 819, 819, 819, + 819, 819, 819, 819, 819, 819, -316, 819, -316, 819, + 819, 819, 819, 819, 819, 819, 201, -316, -316, 819, + -316, 819, -316, 819, 819, 819, 819, 819, 819, 202, + -316, -316, -316, -316, 819, 819, 819, 819, 819, 819, + 819, 203, -316, -316, 379, 12, -316, -316, 982, 1016, + -316, -316, 204, 819, -316, 1050, 1050, 1050, 1050, 1050, + 1050, 1050, -316, -316, 1050, 1050, 1050, 1050, 1050, 1050, + 1050, -316, 1050, 819, 150, 1050, 1050, 1050, 1050, 1050, + 1050, 1050, -316, 1050, 1050, 1050, 1050, 1050, 1050, 1050, + -316, 1050, 1050, 1050, 1050, 1050, 1050, 1050, -316, 1050, + 1050, 1050, 1050, 1050, 1050, 1050, -316, 1050, 1050, 1050, + 1050, 1050, 1050, 1050, -316, 1050, 1050, 1050, 1050, 1050, + 1050, 1050, -316, 1050, 1050, 1050, 1050, 1050, 1050, 1050, + 15, -316, 1050, 1050, 1050, 1050, 1050, 1050, 1050, -316, + 1050, 1050, 1050, 1050, 1050, 1050, 1050, -316, 1050, 1050, + 1050, 1050, 1050, 1050, 1050, -316, 1050, 1050, 1050, 1050, + 1050, 1050, 1050, -316, 1050, 1050, 1050, 1050, 1050, 1050, + 1050, -316, 1050, 1050, 1050, 1050, 1050, 1050, 1050, 49, + -316, 1050, 1050, 1050, 1050, 1050, 1050, 1050, -316, 1082, + 1050, 1111, 1111, 1111, 1111, 1111, 176, 1111, 1111, 1111, + 1111, 133, 133, 92, 92, 92, -316, 819, 1050, 1050, + 1050, 1050, 1050, 1050, 1050, -316, -316, 1050, 1050, 1050, + 1050, 1050, 1050, 1050, -316, 1050, 1050, 1050, 1050, 1050, + 1050, 1050, -316, -5, 41, 41, 135, 41, 41, -316, + 41, 767, -316, 819, 819, 151, -316, -11, -316, 1050, + 819, -316, -316, -316, 156, -316, 163, 164, 819, 209, + 819, 1050, -316, -316, -316, 1050, 52, -316, 138, 819, + 819, 819, -316, -316, 160, 170, 1050, -316, -316 +}; + +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = +{ + -316, -316, -316, -316, -38, -316, -316, -316, -316, -316, + -316, -316, -36, -12, -24, -22, -14, 137, -316, -34, + -108, -316, -316, -316, -179, -304, -316, -316, -316, 0, + -316, -316, -316, 10, 924, -316, -316, -316, -316, -316, + -316, -316, -316, -316, -316, -316, -316, -316, -316, 943, + -316, -316, -316, -316, -316, -315, -316, -316, -316, 3, + -3, -316, -316, -316 +}; + +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If zero, do what YYDEFACT says. + If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -316 +static const yytype_int16 yytable[] = +{ + 49, 177, 208, 191, 209, 204, 214, 217, 420, 72, + 52, 75, 77, 78, 79, 103, 211, 72, 212, 81, + 82, 74, 76, 103, 83, 103, 213, 103, 210, 103, + 105, 179, 86, 88, 23, 80, 322, 216, 178, 549, + 192, 73, 205, 215, 102, 91, 92, 180, 550, 544, + 101, 89, 297, 16, 181, 182, 183, 184, 103, 185, + 186, 309, 531, 106, 363, 531, 310, 532, 17, 18, + 541, 364, 298, 323, -315, 338, 339, 91, 92, 187, + 352, 188, 353, 114, 361, 469, 107, 108, 109, 110, + 345, 111, 112, 346, 347, 348, 349, 350, 351, 531, + 343, 372, 561, 344, 542, 562, 354, 355, 356, 357, + 358, 359, 360, 113, 362, 114, 380, 388, 365, 366, + 367, 368, 369, 370, 371, 286, 396, 404, 373, 374, + 375, 376, 377, 378, 379, 293, 294, 295, 381, 382, + 383, 384, 385, 386, 387, 412, 421, 429, 389, 390, + 391, 392, 393, 394, 395, 437, 72, 180, 397, 398, + 399, 400, 401, 402, 403, 102, 286, 405, 406, 407, + 408, 409, 410, 411, 291, 292, 293, 294, 295, 413, + 194, 414, 415, 416, 417, 418, 419, 312, 561, 17, + 18, 563, 445, 422, 453, 423, 424, 425, 426, 427, + 428, 461, 470, 478, 505, 514, 522, 536, 540, 286, + 548, 552, 557, 553, 554, 567, 23, 340, 430, 431, + 432, 433, 434, 435, 436, 568, 529, 545, 438, 439, + 440, 441, 442, 443, 444, 558, 0, 0, 446, 447, + 448, 449, 450, 451, 452, 0, 0, 454, 455, 456, + 457, 458, 459, 460, 0, 0, 0, 462, 463, 464, + 465, 466, 467, 468, 0, 0, 0, 0, 471, 472, + 473, 474, 475, 476, 477, 0, 0, 0, 0, 479, + 480, 481, 482, 483, 484, 485, 486, 487, 488, 489, + 490, 491, 492, 493, 494, 495, 524, 0, 525, 498, + 499, 500, 501, 502, 503, 504, 0, 496, 0, 0, + 527, 507, 212, 508, 509, 510, 511, 512, 513, 506, + 528, 0, 526, 0, 515, 516, 517, 518, 519, 520, + 521, 530, 0, 0, 2, 3, 4, 215, 5, 6, + 7, 8, 9, 10, 11, 0, 0, 12, 0, 0, + 0, 13, 14, 538, 15, 0, 0, 16, 17, 18, + 0, 0, 0, 539, 0, 0, 0, 0, 0, 0, + 0, 0, 19, 20, 0, 0, 0, 0, 0, 21, + 0, 0, 523, 22, 0, 23, 207, 0, 0, 1, + 84, 2, 3, 4, 0, 5, 6, 7, 8, 9, + 10, 11, 0, 0, 12, 16, 17, 18, 13, 14, + 0, 15, 0, 0, 16, 17, 18, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 21, 0, 19, + 20, 193, 0, 23, 0, 0, 21, 206, -123, 0, + 22, 207, 23, 0, 0, 91, 92, 194, 0, 257, + 0, 0, 0, 0, 195, 196, 197, 198, 0, 199, + 200, 17, 18, 91, 92, 0, 0, 0, 0, 0, + 0, 0, 258, 259, 260, 261, 0, 262, 263, 0, + 0, 201, 21, 114, 0, 0, 0, 0, 23, 0, + 0, 177, 0, 191, 204, 0, 322, 264, 0, 265, + 0, 114, 0, 0, 0, 311, 0, 543, 0, 0, + 0, 0, 103, 103, 0, 103, 103, 0, 103, 91, + 92, 312, 0, 0, 0, 0, 0, 0, 313, 314, + 315, 316, 0, 317, 318, 0, 0, 0, 0, 118, + 551, 0, 0, 546, 547, 0, 0, 0, 555, 0, + 555, 0, 0, 91, 92, 319, 0, 114, 128, 0, + 0, 566, 119, 120, 121, 122, 0, 123, 124, 564, + 565, 0, 91, 92, 0, 0, 0, 0, 138, 0, + 0, 129, 130, 131, 132, 0, 133, 134, 0, 125, + 0, 114, 91, 92, 0, 0, 0, 148, 0, 0, + 0, 139, 140, 141, 142, 0, 143, 144, 135, 0, + 114, 91, 92, 0, 0, 0, 0, 167, 0, 0, + 149, 150, 151, 152, 0, 153, 154, 0, 145, 0, + 114, 91, 92, 0, 0, 0, 218, 0, 0, 0, + 168, 169, 170, 171, 0, 172, 173, 155, 0, 114, + 91, 92, 0, 0, 0, 0, 228, 0, 0, 219, + 220, 221, 222, 0, 223, 224, 0, 174, 0, 114, + 91, 92, 0, 0, 0, 247, 0, 0, 0, 229, + 230, 231, 232, 0, 233, 234, 225, 0, 114, 91, + 92, 0, 0, 0, 0, 268, 0, 0, 248, 249, + 250, 251, 0, 252, 253, 0, 235, 0, 114, 91, + 92, 0, 0, 0, 299, 0, 0, 0, 269, 270, + 271, 272, 0, 273, 274, 254, 0, 114, 91, 92, + 0, 0, 0, 0, 324, 0, 0, 300, 301, 302, + 303, 0, 304, 305, 0, 275, 0, 114, 91, 92, + 0, 0, 0, 0, 0, 0, 0, 325, 326, 327, + 328, 0, 329, 330, 306, 0, 114, 0, 0, 0, + 2, 3, 4, 0, 5, 6, 7, 8, 9, 10, + 11, 0, 0, 12, 331, 0, 114, 13, 14, 0, + 15, 0, 0, 16, 17, 18, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 19, 20, + 0, 0, 0, 0, 0, 21, 334, 0, 0, 22, + 0, 23, 2, 3, 4, 0, 5, 6, 7, 8, + 9, 10, 11, 0, 0, 12, 0, 0, 0, 13, + 14, 0, 15, 0, 0, 16, 17, 18, 0, 0, + 0, -3, 278, 0, 0, 0, 0, 0, 0, 0, + 19, 20, 0, 0, 0, 279, 280, 21, 281, 282, + 283, 22, 0, 23, 0, 284, 285, 0, 0, 0, + 0, 0, 0, 90, 286, 0, 0, 0, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 91, 92, 158, + 0, -124, 296, 0, 0, 0, 93, 94, 95, 96, + 0, 97, 98, 91, 92, 238, 0, 0, 0, 0, + 0, 0, 159, 160, 161, 162, 0, 163, 164, 91, + 92, 0, 0, 99, 0, 0, 0, 0, 239, 240, + 241, 242, 0, 243, 244, 0, 0, 0, 0, 165, + 0, 0, 115, 126, 136, 146, 156, 166, 175, 0, + 189, 0, 202, 0, 0, 245, 226, 236, 246, 255, + 266, 276, 127, 137, 147, 157, 0, 176, 0, 190, + 0, 203, 0, 0, 0, 227, 237, 0, 256, 267, + 277, 307, 0, 320, 0, 332, 279, 280, 0, 281, + 282, 283, 0, 0, 0, 0, 284, 285, 0, 0, + 308, 0, 321, 0, 333, 286, 0, 0, 0, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 0, 0, + 279, 280, 533, 281, 282, 283, 0, 0, 0, 0, + 284, 285, 0, 0, 0, 0, 0, 0, 0, 286, + 0, 0, 0, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 0, 0, 279, 280, 534, 281, 282, 283, + 0, 0, 0, 0, 284, 285, 0, 0, 0, 0, + 0, 0, 0, 286, 0, 0, 0, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 279, 0, 0, 281, + 282, 283, 0, 0, 0, 0, 284, 285, 0, 0, + 0, 0, 0, 0, 0, 286, 0, 0, 0, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 281, 282, + 283, 0, 0, 0, 0, 284, 285, 0, 0, 0, + 0, 0, 0, 0, 286, 0, 0, 0, 287, 288, + 289, 290, 291, 292, 293, 294, 295 +}; + +static const yytype_int16 yycheck[] = +{ + 0, 35, 40, 37, 40, 39, 40, 41, 187, 22, + 0, 54, 12, 13, 14, 27, 40, 22, 40, 19, + 20, 22, 54, 35, 21, 37, 40, 39, 40, 41, + 27, 6, 22, 23, 54, 22, 70, 40, 35, 50, + 37, 54, 39, 40, 3, 20, 21, 22, 59, 54, + 56, 0, 50, 26, 29, 30, 31, 32, 70, 34, + 35, 50, 50, 6, 50, 50, 55, 55, 27, 28, + 55, 57, 50, 70, 3, 75, 76, 20, 21, 54, + 3, 56, 3, 58, 3, 264, 29, 30, 31, 32, + 90, 34, 35, 93, 94, 95, 96, 97, 98, 50, + 50, 3, 50, 53, 55, 53, 106, 107, 108, 109, + 110, 111, 112, 56, 114, 58, 3, 3, 118, 119, + 120, 121, 122, 123, 124, 33, 3, 3, 128, 129, + 130, 131, 132, 133, 134, 43, 44, 45, 138, 139, + 140, 141, 142, 143, 144, 3, 3, 3, 148, 149, + 150, 151, 152, 153, 154, 3, 22, 22, 158, 159, + 160, 161, 162, 163, 164, 3, 33, 167, 168, 169, + 170, 171, 172, 173, 41, 42, 43, 44, 45, 179, + 22, 181, 182, 183, 184, 185, 186, 22, 50, 27, + 28, 53, 3, 193, 3, 195, 196, 197, 198, 199, + 200, 3, 3, 3, 3, 3, 3, 3, 58, 33, + 59, 55, 3, 50, 50, 55, 54, 80, 218, 219, + 220, 221, 222, 223, 224, 55, 334, 531, 228, 229, + 230, 231, 232, 233, 234, 550, -1, -1, 238, 239, + 240, 241, 242, 243, 244, -1, -1, 247, 248, 249, + 250, 251, 252, 253, -1, -1, -1, 257, 258, 259, + 260, 261, 262, 263, -1, -1, -1, -1, 268, 269, + 270, 271, 272, 273, 274, -1, -1, -1, -1, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 334, -1, 334, 299, + 300, 301, 302, 303, 304, 305, -1, 297, -1, -1, + 334, 311, 334, 313, 314, 315, 316, 317, 318, 309, + 334, -1, 334, -1, 324, 325, 326, 327, 328, 329, + 330, 334, -1, -1, 3, 4, 5, 334, 7, 8, + 9, 10, 11, 12, 13, -1, -1, 16, -1, -1, + -1, 20, 21, 343, 23, -1, -1, 26, 27, 28, + -1, -1, -1, 363, -1, -1, -1, -1, -1, -1, + -1, -1, 41, 42, -1, -1, -1, -1, -1, 48, + -1, -1, 3, 52, -1, 54, 7, -1, -1, 1, + 59, 3, 4, 5, -1, 7, 8, 9, 10, 11, + 12, 13, -1, -1, 16, 26, 27, 28, 20, 21, + -1, 23, -1, -1, 26, 27, 28, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 48, -1, 41, + 42, 6, -1, 54, -1, -1, 48, 3, 50, -1, + 52, 7, 54, -1, -1, 20, 21, 22, -1, 6, + -1, -1, -1, -1, 29, 30, 31, 32, -1, 34, + 35, 27, 28, 20, 21, -1, -1, -1, -1, -1, + -1, -1, 29, 30, 31, 32, -1, 34, 35, -1, + -1, 56, 48, 58, -1, -1, -1, -1, 54, -1, + -1, 525, -1, 527, 528, -1, 530, 54, -1, 56, + -1, 58, -1, -1, -1, 6, -1, 497, -1, -1, + -1, -1, 524, 525, -1, 527, 528, -1, 530, 20, + 21, 22, -1, -1, -1, -1, -1, -1, 29, 30, + 31, 32, -1, 34, 35, -1, -1, -1, -1, 6, + 540, -1, -1, 533, 534, -1, -1, -1, 548, -1, + 550, -1, -1, 20, 21, 56, -1, 58, 6, -1, + -1, 561, 29, 30, 31, 32, -1, 34, 35, 559, + 560, -1, 20, 21, -1, -1, -1, -1, 6, -1, + -1, 29, 30, 31, 32, -1, 34, 35, -1, 56, + -1, 58, 20, 21, -1, -1, -1, 6, -1, -1, + -1, 29, 30, 31, 32, -1, 34, 35, 56, -1, + 58, 20, 21, -1, -1, -1, -1, 6, -1, -1, + 29, 30, 31, 32, -1, 34, 35, -1, 56, -1, + 58, 20, 21, -1, -1, -1, 6, -1, -1, -1, + 29, 30, 31, 32, -1, 34, 35, 56, -1, 58, + 20, 21, -1, -1, -1, -1, 6, -1, -1, 29, + 30, 31, 32, -1, 34, 35, -1, 56, -1, 58, + 20, 21, -1, -1, -1, 6, -1, -1, -1, 29, + 30, 31, 32, -1, 34, 35, 56, -1, 58, 20, + 21, -1, -1, -1, -1, 6, -1, -1, 29, 30, + 31, 32, -1, 34, 35, -1, 56, -1, 58, 20, + 21, -1, -1, -1, 6, -1, -1, -1, 29, 30, + 31, 32, -1, 34, 35, 56, -1, 58, 20, 21, + -1, -1, -1, -1, 6, -1, -1, 29, 30, 31, + 32, -1, 34, 35, -1, 56, -1, 58, 20, 21, + -1, -1, -1, -1, -1, -1, -1, 29, 30, 31, + 32, -1, 34, 35, 56, -1, 58, -1, -1, -1, + 3, 4, 5, -1, 7, 8, 9, 10, 11, 12, + 13, -1, -1, 16, 56, -1, 58, 20, 21, -1, + 23, -1, -1, 26, 27, 28, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 41, 42, + -1, -1, -1, -1, -1, 48, 49, -1, -1, 52, + -1, 54, 3, 4, 5, -1, 7, 8, 9, 10, + 11, 12, 13, -1, -1, 16, -1, -1, -1, 20, + 21, -1, 23, -1, -1, 26, 27, 28, -1, -1, + -1, 0, 1, -1, -1, -1, -1, -1, -1, -1, + 41, 42, -1, -1, -1, 14, 15, 48, 17, 18, + 19, 52, -1, 54, -1, 24, 25, -1, -1, -1, + -1, -1, -1, 6, 33, -1, -1, -1, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 20, 21, 6, + -1, 50, 51, -1, -1, -1, 29, 30, 31, 32, + -1, 34, 35, 20, 21, 6, -1, -1, -1, -1, + -1, -1, 29, 30, 31, 32, -1, 34, 35, 20, + 21, -1, -1, 56, -1, -1, -1, -1, 29, 30, + 31, 32, -1, 34, 35, -1, -1, -1, -1, 56, + -1, -1, 28, 29, 30, 31, 32, 33, 34, -1, + 36, -1, 38, -1, -1, 56, 42, 43, 44, 45, + 46, 47, 29, 30, 31, 32, -1, 34, -1, 36, + -1, 38, -1, -1, -1, 42, 43, -1, 45, 46, + 47, 67, -1, 69, -1, 71, 14, 15, -1, 17, + 18, 19, -1, -1, -1, -1, 24, 25, -1, -1, + 67, -1, 69, -1, 71, 33, -1, -1, -1, 37, + 38, 39, 40, 41, 42, 43, 44, 45, -1, -1, + 14, 15, 50, 17, 18, 19, -1, -1, -1, -1, + 24, 25, -1, -1, -1, -1, -1, -1, -1, 33, + -1, -1, -1, 37, 38, 39, 40, 41, 42, 43, + 44, 45, -1, -1, 14, 15, 50, 17, 18, 19, + -1, -1, -1, -1, 24, 25, -1, -1, -1, -1, + -1, -1, -1, 33, -1, -1, -1, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 14, -1, -1, 17, + 18, 19, -1, -1, -1, -1, 24, 25, -1, -1, + -1, -1, -1, -1, -1, 33, -1, -1, -1, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 17, 18, + 19, -1, -1, -1, -1, 24, 25, -1, -1, -1, + -1, -1, -1, -1, 33, -1, -1, -1, 37, 38, + 39, 40, 41, 42, 43, 44, 45 +}; + +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint8 yystos[] = +{ + 0, 1, 3, 4, 5, 7, 8, 9, 10, 11, + 12, 13, 16, 20, 21, 23, 26, 27, 28, 41, + 42, 48, 52, 54, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 80, 81, 82, 83, 86, 87, 88, 89, + 90, 92, 93, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 112, 118, 119, + 120, 121, 22, 54, 22, 54, 54, 89, 89, 89, + 22, 89, 89, 119, 59, 89, 93, 111, 93, 0, + 6, 20, 21, 29, 30, 31, 32, 34, 35, 56, + 94, 56, 3, 73, 79, 119, 6, 29, 30, 31, + 32, 34, 35, 56, 58, 94, 109, 110, 6, 29, + 30, 31, 32, 34, 35, 56, 94, 109, 6, 29, + 30, 31, 32, 34, 35, 56, 94, 109, 6, 29, + 30, 31, 32, 34, 35, 56, 94, 109, 6, 29, + 30, 31, 32, 34, 35, 56, 94, 109, 6, 29, + 30, 31, 32, 34, 35, 56, 94, 6, 29, 30, + 31, 32, 34, 35, 56, 94, 109, 79, 119, 6, + 22, 29, 30, 31, 32, 34, 35, 54, 56, 94, + 109, 79, 119, 6, 22, 29, 30, 31, 32, 34, + 35, 56, 94, 109, 79, 119, 3, 7, 64, 72, + 73, 74, 75, 76, 79, 119, 120, 79, 6, 29, + 30, 31, 32, 34, 35, 56, 94, 109, 6, 29, + 30, 31, 32, 34, 35, 56, 94, 109, 6, 29, + 30, 31, 32, 34, 35, 56, 94, 6, 29, 30, + 31, 32, 34, 35, 56, 94, 109, 6, 29, 30, + 31, 32, 34, 35, 54, 56, 94, 109, 6, 29, + 30, 31, 32, 34, 35, 56, 94, 109, 1, 14, + 15, 17, 18, 19, 24, 25, 33, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 51, 50, 50, 6, + 29, 30, 31, 32, 34, 35, 56, 94, 109, 50, + 55, 6, 22, 29, 30, 31, 32, 34, 35, 56, + 94, 109, 79, 119, 6, 29, 30, 31, 32, 34, + 35, 56, 94, 109, 49, 84, 85, 93, 89, 89, + 77, 113, 114, 50, 53, 89, 89, 89, 89, 89, + 89, 89, 3, 3, 89, 89, 89, 89, 89, 89, + 89, 3, 89, 50, 57, 89, 89, 89, 89, 89, + 89, 89, 3, 89, 89, 89, 89, 89, 89, 89, + 3, 89, 89, 89, 89, 89, 89, 89, 3, 89, + 89, 89, 89, 89, 89, 89, 3, 89, 89, 89, + 89, 89, 89, 89, 3, 89, 89, 89, 89, 89, + 89, 89, 3, 89, 89, 89, 89, 89, 89, 89, + 84, 3, 89, 89, 89, 89, 89, 89, 89, 3, + 89, 89, 89, 89, 89, 89, 89, 3, 89, 89, + 89, 89, 89, 89, 89, 3, 89, 89, 89, 89, + 89, 89, 89, 3, 89, 89, 89, 89, 89, 89, + 89, 3, 89, 89, 89, 89, 89, 89, 89, 84, + 3, 89, 89, 89, 89, 89, 89, 89, 3, 89, + 89, 89, 89, 89, 89, 89, 89, 89, 89, 89, + 89, 89, 89, 89, 89, 89, 93, 91, 89, 89, + 89, 89, 89, 89, 89, 3, 93, 89, 89, 89, + 89, 89, 89, 89, 3, 89, 89, 89, 89, 89, + 89, 89, 3, 3, 64, 72, 73, 74, 76, 80, + 120, 50, 55, 50, 50, 116, 3, 117, 93, 89, + 58, 55, 55, 93, 54, 85, 93, 93, 59, 50, + 59, 89, 55, 50, 50, 89, 115, 3, 115, 122, + 123, 50, 53, 53, 93, 93, 89, 55, 55 +}; + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + + +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. */ + +#define YYFAIL goto yyerrlab + +#define YYRECOVERING() (!!yyerrstatus) + +#define YYBACKUP(Token, Value) \ +do \ + if (yychar == YYEMPTY && yylen == 1) \ + { \ + yychar = (Token); \ + yylval = (Value); \ + yytoken = YYTRANSLATE (yychar); \ + YYPOPSTACK (1); \ + goto yybackup; \ + } \ + else \ + { \ + yyerror (pMacro, YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (YYID (0)) + + +#define YYTERROR 1 +#define YYERRCODE 256 + + +/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. + If N is 0, then set CURRENT to the empty location which ends + the previous symbol: RHS[0] (always defined). */ + +#define YYRHSLOC(Rhs, K) ((Rhs)[K]) +#ifndef YYLLOC_DEFAULT +# define YYLLOC_DEFAULT(Current, Rhs, N) \ + do \ + if (YYID (N)) \ + { \ + (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ + (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ + (Current).last_line = YYRHSLOC (Rhs, N).last_line; \ + (Current).last_column = YYRHSLOC (Rhs, N).last_column; \ + } \ + else \ + { \ + (Current).first_line = (Current).last_line = \ + YYRHSLOC (Rhs, 0).last_line; \ + (Current).first_column = (Current).last_column = \ + YYRHSLOC (Rhs, 0).last_column; \ + } \ + while (YYID (0)) +#endif + + +/* YY_LOCATION_PRINT -- Print the location on the stream. + This macro was not mandated originally: define only if we know + we won't break user code: when these are the locations we know. */ + +#ifndef YY_LOCATION_PRINT +# if YYLTYPE_IS_TRIVIAL +# define YY_LOCATION_PRINT(File, Loc) \ + fprintf (File, "%d.%d-%d.%d", \ + (Loc).first_line, (Loc).first_column, \ + (Loc).last_line, (Loc).last_column) +# else +# define YY_LOCATION_PRINT(File, Loc) ((void) 0) +# endif +#endif + + +/* YYLEX -- calling `yylex' with the right arguments. */ + +#ifdef YYLEX_PARAM +# define YYLEX yylex (&yylval, YYLEX_PARAM) +#else +# define YYLEX yylex (&yylval, pMacro) +#endif + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (YYID (0)) + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value, pMacro); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (YYID (0)) + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, HB_MACRO_PTR pMacro) +#else +static void +yy_symbol_value_print (yyoutput, yytype, yyvaluep, pMacro) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; + HB_MACRO_PTR pMacro; +#endif +{ + if (!yyvaluep) + return; + YYUSE (pMacro); +# ifdef YYPRINT + if (yytype < YYNTOKENS) + YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# else + YYUSE (yyoutput); +# endif + switch (yytype) + { + default: + break; + } +} + + +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, HB_MACRO_PTR pMacro) +#else +static void +yy_symbol_print (yyoutput, yytype, yyvaluep, pMacro) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; + HB_MACRO_PTR pMacro; +#endif +{ + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + + yy_symbol_value_print (yyoutput, yytype, yyvaluep, pMacro); + YYFPRINTF (yyoutput, ")"); +} + +/*------------------------------------------------------------------. +| yy_stack_print -- Print the state stack from its BOTTOM up to its | +| TOP (included). | +`------------------------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_stack_print (yytype_int16 *bottom, yytype_int16 *top) +#else +static void +yy_stack_print (bottom, top) + yytype_int16 *bottom; + yytype_int16 *top; +#endif +{ + YYFPRINTF (stderr, "Stack now"); + for (; bottom <= top; ++bottom) + YYFPRINTF (stderr, " %d", *bottom); + YYFPRINTF (stderr, "\n"); +} + +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (YYID (0)) + + +/*------------------------------------------------. +| Report that the YYRULE is going to be reduced. | +`------------------------------------------------*/ + +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yy_reduce_print (YYSTYPE *yyvsp, int yyrule, HB_MACRO_PTR pMacro) +#else +static void +yy_reduce_print (yyvsp, yyrule, pMacro) + YYSTYPE *yyvsp; + int yyrule; + HB_MACRO_PTR pMacro; +#endif +{ + int yynrhs = yyr2[yyrule]; + int yyi; + unsigned long int yylno = yyrline[yyrule]; + YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", + yyrule - 1, yylno); + /* The symbols being reduced. */ + for (yyi = 0; yyi < yynrhs; yyi++) + { + fprintf (stderr, " $%d = ", yyi + 1); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + , pMacro); + fprintf (stderr, "\n"); + } +} + +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyvsp, Rule, pMacro); \ +} while (YYID (0)) + +/* Nonzero means print parse trace. It is left uninitialized so that + multiple parsers can coexist. */ +int yydebug; +#else /* !YYDEBUG */ +# define YYDPRINTF(Args) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) +# define YY_STACK_PRINT(Bottom, Top) +# define YY_REDUCE_PRINT(Rule) +#endif /* !YYDEBUG */ + + +/* YYINITDEPTH -- initial size of the parser's stacks. */ +#ifndef YYINITDEPTH +# define YYINITDEPTH 200 +#endif + +/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only + if the built-in stack extension method is used). + + Do not make this value too large; the results are undefined if + YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH) + evaluated with infinite-precision integer arithmetic. */ + +#ifndef YYMAXDEPTH +# define YYMAXDEPTH 10000 +#endif + + + +#if YYERROR_VERBOSE + +# ifndef yystrlen +# if defined __GLIBC__ && defined _STRING_H +# define yystrlen strlen +# else +/* Return the length of YYSTR. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static YYSIZE_T +yystrlen (const char *yystr) +#else +static YYSIZE_T +yystrlen (yystr) + const char *yystr; +#endif +{ + YYSIZE_T yylen; + for (yylen = 0; yystr[yylen]; yylen++) + continue; + return yylen; +} +# endif +# endif + +# ifndef yystpcpy +# if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE +# define yystpcpy stpcpy +# else +/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in + YYDEST. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static char * +yystpcpy (char *yydest, const char *yysrc) +#else +static char * +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +#endif +{ + char *yyd = yydest; + const char *yys = yysrc; + + while ((*yyd++ = *yys++) != '\0') + continue; + + return yyd - 1; +} +# endif +# endif + +# ifndef yytnamerr +/* Copy to YYRES the contents of YYSTR after stripping away unnecessary + quotes and backslashes, so that it's suitable for yyerror. The + heuristic is that double-quoting is unnecessary unless the string + contains an apostrophe, a comma, or backslash (other than + backslash-backslash). YYSTR is taken from yytname. If YYRES is + null, do not copy; instead, return the length of what the result + would have been. */ +static YYSIZE_T +yytnamerr (char *yyres, const char *yystr) +{ + if (*yystr == '"') + { + YYSIZE_T yyn = 0; + char const *yyp = yystr; + + for (;;) + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; + + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; + + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } + do_not_strip_quotes: ; + } + + if (! yyres) + return yystrlen (yystr); + + return yystpcpy (yyres, yystr) - yyres; +} +# endif + +/* Copy into YYRESULT an error message about the unexpected token + YYCHAR while in state YYSTATE. Return the number of bytes copied, + including the terminating null byte. If YYRESULT is null, do not + copy anything; just return the number of bytes that would be + copied. As a special case, return 0 if an ordinary "syntax error" + message will do. Return YYSIZE_MAXIMUM if overflow occurs during + size calculation. */ +static YYSIZE_T +yysyntax_error (char *yyresult, int yystate, int yychar) +{ + int yyn = yypact[yystate]; + + if (! (YYPACT_NINF < yyn && yyn <= YYLAST)) + return 0; + else + { + int yytype = YYTRANSLATE (yychar); + YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]); + YYSIZE_T yysize = yysize0; + YYSIZE_T yysize1; + int yysize_overflow = 0; + enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; + char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; + int yyx; + +# if 0 + /* This is so xgettext sees the translatable formats that are + constructed on the fly. */ + YY_("syntax error, unexpected %s"); + YY_("syntax error, unexpected %s, expecting %s"); + YY_("syntax error, unexpected %s, expecting %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s"); + YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"); +# endif + char *yyfmt; + char const *yyf; + static char const yyunexpected[] = "syntax error, unexpected %s"; + static char const yyexpecting[] = ", expecting %s"; + static char const yyor[] = " or %s"; + char yyformat[sizeof yyunexpected + + sizeof yyexpecting - 1 + + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2) + * (sizeof yyor - 1))]; + char const *yyprefix = yyexpecting; + + /* Start YYX at -YYN if negative to avoid negative indexes in + YYCHECK. */ + int yyxbegin = yyn < 0 ? -yyn : 0; + + /* Stay within bounds of both yycheck and yytname. */ + int yychecklim = YYLAST - yyn + 1; + int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS; + int yycount = 1; + + yyarg[0] = yytname[yytype]; + yyfmt = yystpcpy (yyformat, yyunexpected); + + for (yyx = yyxbegin; yyx < yyxend; ++yyx) + if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) + { + if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) + { + yycount = 1; + yysize = yysize0; + yyformat[sizeof yyunexpected - 1] = '\0'; + break; + } + yyarg[yycount++] = yytname[yyx]; + yysize1 = yysize + yytnamerr (0, yytname[yyx]); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + yyfmt = yystpcpy (yyfmt, yyprefix); + yyprefix = yyor; + } + + yyf = YY_(yyformat); + yysize1 = yysize + yystrlen (yyf); + yysize_overflow |= (yysize1 < yysize); + yysize = yysize1; + + if (yysize_overflow) + return YYSIZE_MAXIMUM; + + if (yyresult) + { + /* Avoid sprintf, as that infringes on the user's name space. + Don't have undefined behavior even if the translation + produced a string with the wrong number of "%s"s. */ + char *yyp = yyresult; + int yyi = 0; + while ((*yyp = *yyf) != '\0') + { + if (*yyp == '%' && yyf[1] == 's' && yyi < yycount) + { + yyp += yytnamerr (yyp, yyarg[yyi++]); + yyf += 2; + } + else + { + yyp++; + yyf++; + } + } + } + return yysize; + } +} +#endif /* YYERROR_VERBOSE */ + + +/*-----------------------------------------------. +| Release the memory associated to this symbol. | +`-----------------------------------------------*/ + +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static void +yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, HB_MACRO_PTR pMacro) +#else +static void +yydestruct (yymsg, yytype, yyvaluep, pMacro) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; + HB_MACRO_PTR pMacro; +#endif +{ + YYUSE (yyvaluep); + YYUSE (pMacro); + + if (!yymsg) + yymsg = "Deleting"; + YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); + + switch (yytype) + { + + default: + break; + } +} + + +/* Prevent warnings from -Wmissing-prototypes. */ + +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int yyparse (void *YYPARSE_PARAM); +#else +int yyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus +int yyparse (HB_MACRO_PTR pMacro); +#else +int yyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ + + + + + + +/*----------. +| yyparse. | +`----------*/ + +#ifdef YYPARSE_PARAM +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void *YYPARSE_PARAM) +#else +int +yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +#endif +#else /* ! YYPARSE_PARAM */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (HB_MACRO_PTR pMacro) +#else +int +yyparse (pMacro) + HB_MACRO_PTR pMacro; +#endif +#endif +{ + /* The look-ahead symbol. */ +int yychar; + +/* The semantic value of the look-ahead symbol. */ +YYSTYPE yylval; + +/* Number of syntax errors so far. */ +int yynerrs; + + int yystate; + int yyn; + int yyresult; + /* Number of tokens to shift before error messages enabled. */ + int yyerrstatus; + /* Look-ahead token as an internal (translated) token number. */ + int yytoken = 0; +#if YYERROR_VERBOSE + /* Buffer for error messages, and its allocated size. */ + char yymsgbuf[128]; + char *yymsg = yymsgbuf; + YYSIZE_T yymsg_alloc = sizeof yymsgbuf; +#endif + + /* Three stacks and their tools: + `yyss': related to states, + `yyvs': related to semantic values, + `yyls': related to locations. + + Refer to the stacks thru separate pointers, to allow yyoverflow + to reallocate them elsewhere. */ + + /* The state stack. */ + yytype_int16 yyssa[YYINITDEPTH]; + yytype_int16 *yyss = yyssa; + yytype_int16 *yyssp; + + /* The semantic value stack. */ + YYSTYPE yyvsa[YYINITDEPTH]; + YYSTYPE *yyvs = yyvsa; + YYSTYPE *yyvsp; + + + +#define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N)) + + YYSIZE_T yystacksize = YYINITDEPTH; + + /* The variables used to return semantic value and location from the + action routines. */ + YYSTYPE yyval; + + + /* The number of symbols on the RHS of the reduced rule. + Keep to zero when no symbol should be popped. */ + int yylen = 0; + + YYDPRINTF ((stderr, "Starting parse\n")); + + yystate = 0; + yyerrstatus = 0; + yynerrs = 0; + yychar = YYEMPTY; /* Cause a token to be read. */ + + /* Initialize stack pointers. + Waste one element of value and location stack + so that they stay on the same level as the state stack. + The wasted elements are never initialized. */ + + yyssp = yyss; + yyvsp = yyvs; + + goto yysetstate; + +/*------------------------------------------------------------. +| yynewstate -- Push a new state, which is found in yystate. | +`------------------------------------------------------------*/ + yynewstate: + /* In all cases, when you get here, the value and location stacks + have just been pushed. So pushing a state here evens the stacks. */ + yyssp++; + + yysetstate: + *yyssp = yystate; + + if (yyss + yystacksize - 1 <= yyssp) + { + /* Get the current used size of the three stacks, in elements. */ + YYSIZE_T yysize = yyssp - yyss + 1; + +#ifdef yyoverflow + { + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + + + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + + &yystacksize); + + yyss = yyss1; + yyvs = yyvs1; + } +#else /* no yyoverflow */ +# ifndef YYSTACK_RELOCATE + goto yyexhaustedlab; +# else + /* Extend the stack our own way. */ + if (YYMAXDEPTH <= yystacksize) + goto yyexhaustedlab; + yystacksize *= 2; + if (YYMAXDEPTH < yystacksize) + yystacksize = YYMAXDEPTH; + + { + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss); + YYSTACK_RELOCATE (yyvs); + +# undef YYSTACK_RELOCATE + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); + } +# endif +#endif /* no yyoverflow */ + + yyssp = yyss + yysize - 1; + yyvsp = yyvs + yysize - 1; + + + YYDPRINTF ((stderr, "Stack size increased to %lu\n", + (unsigned long int) yystacksize)); + + if (yyss + yystacksize - 1 <= yyssp) + YYABORT; + } + + YYDPRINTF ((stderr, "Entering state %d\n", yystate)); + + goto yybackup; + +/*-----------. +| yybackup. | +`-----------*/ +yybackup: + + /* Do appropriate processing given the current state. Read a + look-ahead token if we need one and don't already have one. */ + + /* First try to decide what to do without reference to look-ahead token. */ + yyn = yypact[yystate]; + if (yyn == YYPACT_NINF) + goto yydefault; + + /* Not known => get a look-ahead token if don't already have one. */ + + /* YYCHAR is either YYEMPTY or YYEOF or a valid look-ahead symbol. */ + if (yychar == YYEMPTY) + { + YYDPRINTF ((stderr, "Reading a token: ")); + yychar = YYLEX; + } + + if (yychar <= YYEOF) + { + yychar = yytoken = YYEOF; + YYDPRINTF ((stderr, "Now at end of input.\n")); + } + else + { + yytoken = YYTRANSLATE (yychar); + YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc); + } + + /* If the proper action on seeing token YYTOKEN is to reduce or to + detect an error, take that action. */ + yyn += yytoken; + if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) + goto yydefault; + yyn = yytable[yyn]; + if (yyn <= 0) + { + if (yyn == 0 || yyn == YYTABLE_NINF) + goto yyerrlab; + yyn = -yyn; + goto yyreduce; + } + + if (yyn == YYFINAL) + YYACCEPT; + + /* Count tokens shifted since error; after three, turn off error + status. */ + if (yyerrstatus) + yyerrstatus--; + + /* Shift the look-ahead token. */ + YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc); + + /* Discard the shifted token unless it is eof. */ + if (yychar != YYEOF) + yychar = YYEMPTY; + + yystate = yyn; + *++yyvsp = yylval; + + goto yynewstate; + + +/*-----------------------------------------------------------. +| yydefault -- do the default action for the current state. | +`-----------------------------------------------------------*/ +yydefault: + yyn = yydefact[yystate]; + if (yyn == 0) + goto yyerrlab; + goto yyreduce; + + +/*-----------------------------. +| yyreduce -- Do a reduction. | +`-----------------------------*/ +yyreduce: + /* yyn is the number of a rule to reduce with. */ + yylen = yyr2[yyn]; + + /* If YYLEN is nonzero, implement the default value of the action: + `$$ = $1'. + + Otherwise, the following line sets YYVAL to garbage. + This behavior is undocumented and Bison + users should not rely upon it. Assigning to YYVAL + unconditionally makes the parser a bit smaller, and it avoids a + GCC warning that YYVAL may be used uninitialized. */ + yyval = yyvsp[1-yylen]; + + + YY_REDUCE_PRINT (yyn); + switch (yyn) + { + case 2: +#line 225 "../../macro.y" + { + HB_MACRO_DATA->exprType = hb_compExprType( (yyvsp[(1) - (2)].asExpr) ); + if( HB_MACRO_DATA->Flags & HB_MACRO_GEN_PUSH ) + hb_compExprGenPush( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); + else + hb_compExprGenPop( (yyvsp[(1) - (2)].asExpr), HB_COMP_PARAM ); + hb_compGenPCode1( HB_P_ENDPROC, HB_COMP_PARAM ); + ;} + break; + + case 3: +#line 234 "../../macro.y" + { + HB_MACRO_DATA->exprType = hb_compExprType( (yyvsp[(1) - (1)].asExpr) ); + if( HB_MACRO_DATA->Flags & HB_MACRO_GEN_PUSH ) + hb_compExprGenPush( (yyvsp[(1) - (1)].asExpr), HB_COMP_PARAM ); + else + hb_compExprGenPop( (yyvsp[(1) - (1)].asExpr), HB_COMP_PARAM ); + hb_compGenPCode1( HB_P_ENDPROC, HB_COMP_PARAM ); + ;} + break; + + case 4: +#line 242 "../../macro.y" + { + HB_MACRO_DATA->exprType = hb_compExprType( (yyvsp[(1) - (1)].asExpr) ); + if( HB_MACRO_DATA->Flags & HB_MACRO_GEN_PUSH ) + hb_compExprGenPush( (yyvsp[(1) - (1)].asExpr), HB_COMP_PARAM ); + else + hb_compExprGenPop( (yyvsp[(1) - (1)].asExpr), HB_COMP_PARAM ); + hb_compGenPCode1( HB_P_ENDPROC, HB_COMP_PARAM ); + ;} + break; + + case 5: +#line 250 "../../macro.y" + { + HB_TRACE(HB_TR_DEBUG, ("macro -> invalid expression: %s", HB_MACRO_DATA->string)); + hb_macroError( EG_SYNTAX, HB_COMP_PARAM ); + YYABORT; + ;} + break; + + case 6: +#line 255 "../../macro.y" + { + HB_TRACE(HB_TR_DEBUG, ("macro -> invalid syntax: %s", HB_MACRO_DATA->string)); + hb_macroError( EG_SYNTAX, HB_COMP_PARAM ); + YYABORT; + ;} + break; + + case 7: +#line 264 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewDouble( (yyvsp[(1) - (1)].valDouble).dNumber, (yyvsp[(1) - (1)].valDouble).bWidth, (yyvsp[(1) - (1)].valDouble).bDec, HB_COMP_PARAM ); ;} + break; + + case 8: +#line 265 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewLong( (yyvsp[(1) - (1)].valLong).lNumber, HB_COMP_PARAM ); ;} + break; + + case 9: +#line 268 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewDate( (yyvsp[(1) - (1)].valLong).lNumber, HB_COMP_PARAM ); ;} + break; + + case 10: +#line 271 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewLong( (yyvsp[(1) - (2)].valLong).lNumber, HB_COMP_PARAM ); ;} + break; + + case 11: +#line 276 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewNil( HB_COMP_PARAM ); ;} + break; + + case 12: +#line 281 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewString( (yyvsp[(1) - (1)].string), strlen((yyvsp[(1) - (1)].string)), FALSE, HB_COMP_PARAM ); ;} + break; + + case 13: +#line 286 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewLogical( TRUE, HB_COMP_PARAM ); ;} + break; + + case 14: +#line 287 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewLogical( FALSE, HB_COMP_PARAM ); ;} + break; + + case 15: +#line 292 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewSelf( HB_COMP_PARAM ); ;} + break; + + case 16: +#line 297 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewArray( (yyvsp[(2) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 17: +#line 302 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 18: +#line 307 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewVar( (yyvsp[(1) - (1)].string), HB_COMP_PARAM ); ;} + break; + + case 19: +#line 310 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewAlias( (yyvsp[(1) - (2)].string), HB_COMP_PARAM ); ;} + break; + + case 20: +#line 315 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewMacro( NULL, '&', (yyvsp[(1) - (1)].string), HB_COMP_PARAM ); + HB_MACRO_CHECK( (yyval.asExpr) ); + ;} + break; + + case 21: +#line 318 "../../macro.y" + { ULONG ulLen = strlen( (yyvsp[(1) - (1)].string) ); + char * szVarName = hb_macroTextSubst( (yyvsp[(1) - (1)].string), &ulLen ); + if( szVarName != (yyvsp[(1) - (1)].string) ) + hb_macroIdentNew( HB_COMP_PARAM, szVarName ); + if( hb_macroIsIdent( szVarName ) ) + { + (yyval.asExpr) = hb_compExprNewVar( szVarName, HB_COMP_PARAM ); + HB_MACRO_CHECK( (yyval.asExpr) ); + } + else + { + /* invalid variable name + */ + HB_TRACE(HB_TR_DEBUG, ("macro -> invalid variable name: %s", (yyvsp[(1) - (1)].string))); + YYABORT; + } + ;} + break; + + case 22: +#line 337 "../../macro.y" + { hb_compExprMacroAsAlias( (yyvsp[(1) - (2)].asExpr) ); ;} + break; + + case 23: +#line 342 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewMacro( (yyvsp[(2) - (2)].asExpr), 0, NULL, HB_COMP_PARAM ); ;} + break; + + case 24: +#line 345 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} + break; + + case 25: +#line 352 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewAlias( "FIELD", HB_COMP_PARAM ); ;} + break; + + case 26: +#line 353 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(3) - (3)].asExpr); ;} + break; + + case 27: +#line 358 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 28: +#line 359 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 29: +#line 360 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 30: +#line 361 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 31: +#line 362 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 32: +#line 365 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewVar( (yyvsp[(1) - (1)].string), HB_COMP_PARAM ); ;} + break; + + case 33: +#line 366 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 34: +#line 369 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewAliasVar( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 35: +#line 370 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewAliasVar( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 36: +#line 371 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewAliasVar( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 37: +#line 372 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewAliasVar( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 38: +#line 373 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewAliasVar( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 39: +#line 374 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewAliasVar( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 40: +#line 375 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewAliasVar( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 41: +#line 384 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewAliasExpr( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 42: +#line 385 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewAliasExpr( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 43: +#line 386 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewAliasExpr( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 44: +#line 387 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewAliasExpr( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 45: +#line 388 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewAliasExpr( (yyvsp[(1) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 46: +#line 393 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 47: +#line 394 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 48: +#line 395 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 49: +#line 396 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 50: +#line 397 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 51: +#line 398 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 52: +#line 399 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 53: +#line 400 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 54: +#line 401 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 55: +#line 402 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 56: +#line 403 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 57: +#line 404 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 58: +#line 405 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 59: +#line 406 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 60: +#line 407 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 61: +#line 412 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewFunCall( hb_compExprNewFunName( (yyvsp[(1) - (4)].string), HB_COMP_PARAM ), (yyvsp[(3) - (4)].asExpr), HB_COMP_PARAM ); + HB_MACRO_CHECK( (yyval.asExpr) ); + ;} + break; + + case 62: +#line 415 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewFunCall( (yyvsp[(1) - (4)].asExpr), (yyvsp[(3) - (4)].asExpr), HB_COMP_PARAM ); + HB_MACRO_CHECK( (yyval.asExpr) ); + ;} + break; + + case 63: +#line 420 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewArgList( (yyvsp[(1) - (1)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 64: +#line 421 "../../macro.y" + { (yyval.asExpr) = hb_compExprAddListExpr( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr) ); ;} + break; + + case 65: +#line 424 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 66: +#line 425 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewVarRef( (yyvsp[(2) - (2)].string), HB_COMP_PARAM ); ;} + break; + + case 67: +#line 426 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewRef( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 68: +#line 427 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewFunRef( (yyvsp[(2) - (4)].string), HB_COMP_PARAM ); ;} + break; + + case 69: +#line 432 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].string), NULL, HB_COMP_PARAM ); ;} + break; + + case 70: +#line 433 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].string), NULL, HB_COMP_PARAM ); ;} + break; + + case 71: +#line 434 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].string), NULL, HB_COMP_PARAM ); ;} + break; + + case 72: +#line 435 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].string), NULL, HB_COMP_PARAM ); ;} + break; + + case 73: +#line 436 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].string), NULL, HB_COMP_PARAM ); ;} + break; + + case 74: +#line 437 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].string), NULL, HB_COMP_PARAM ); ;} + break; + + case 75: +#line 438 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].string), NULL, HB_COMP_PARAM ); ;} + break; + + case 76: +#line 439 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].string), NULL, HB_COMP_PARAM ); ;} + break; + + case 77: +#line 440 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].string), NULL, HB_COMP_PARAM ); ;} + break; + + case 78: +#line 441 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].string), NULL, HB_COMP_PARAM ); ;} + break; + + case 79: +#line 442 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].string), NULL, HB_COMP_PARAM ); ;} + break; + + case 80: +#line 443 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].string), NULL, HB_COMP_PARAM ); ;} + break; + + case 81: +#line 444 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].string), NULL, HB_COMP_PARAM ); ;} + break; + + case 82: +#line 445 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].string), NULL, HB_COMP_PARAM ); ;} + break; + + case 83: +#line 446 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].string), NULL, HB_COMP_PARAM ); ;} + break; + + case 84: +#line 447 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].string), NULL, HB_COMP_PARAM ); ;} + break; + + case 85: +#line 448 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].string), NULL, HB_COMP_PARAM ); ;} + break; + + case 86: +#line 449 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].string), NULL, HB_COMP_PARAM ); ;} + break; + + case 87: +#line 450 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].string), NULL, HB_COMP_PARAM ); ;} + break; + + case 88: +#line 451 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewSend( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].string), NULL, HB_COMP_PARAM ); ;} + break; + + case 89: +#line 456 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewMethodCall( (yyvsp[(1) - (4)].asExpr), (yyvsp[(3) - (4)].asExpr) ); ;} + break; + + case 91: +#line 461 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 92: +#line 462 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 93: +#line 463 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 94: +#line 464 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 95: +#line 465 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 96: +#line 466 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 97: +#line 467 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 98: +#line 468 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 99: +#line 469 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 100: +#line 470 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 101: +#line 471 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 102: +#line 472 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 103: +#line 473 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 104: +#line 474 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 105: +#line 475 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 106: +#line 476 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 107: +#line 477 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 108: +#line 478 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 109: +#line 479 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 110: +#line 480 "../../macro.y" + { HB_MACRO_IFENABLED( (yyval.asExpr), (yyvsp[(1) - (1)].asExpr), HB_SM_HARBOUR ); ;} + break; + + case 111: +#line 481 "../../macro.y" + { HB_MACRO_IFENABLED( (yyval.asExpr), (yyvsp[(1) - (1)].asExpr), HB_SM_HARBOUR ); ;} + break; + + case 112: +#line 482 "../../macro.y" + { HB_MACRO_IFENABLED( (yyval.asExpr), (yyvsp[(1) - (1)].asExpr), HB_SM_HARBOUR ); ;} + break; + + case 113: +#line 483 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 114: +#line 484 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 115: +#line 485 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 116: +#line 486 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 117: +#line 489 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); HB_MACRO_CHECK( (yyval.asExpr) ); ;} + break; + + case 118: +#line 490 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); HB_MACRO_CHECK( (yyval.asExpr) ); ;} + break; + + case 119: +#line 493 "../../macro.y" + { + if( !(HB_MACRO_DATA->Flags & HB_MACRO_GEN_LIST) ) + { + HB_TRACE(HB_TR_DEBUG, ("macro -> invalid expression: %s", HB_MACRO_DATA->string)); + hb_macroError( EG_SYNTAX, HB_COMP_PARAM ); + YYABORT; + } + ;} + break; + + case 120: +#line 501 "../../macro.y" + { + HB_MACRO_DATA->uiListElements = 1; + (yyval.asExpr) = hb_compExprAddListExpr( ( HB_MACRO_DATA->Flags & HB_MACRO_GEN_PARE ) ? hb_compExprNewList( (yyvsp[(1) - (4)].asExpr), HB_COMP_PARAM ) : hb_compExprNewArgList( (yyvsp[(1) - (4)].asExpr), HB_COMP_PARAM ), (yyvsp[(4) - (4)].asExpr) ); + ;} + break; + + case 121: +#line 507 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 122: +#line 508 "../../macro.y" + { HB_MACRO_DATA->uiListElements++; + (yyval.asExpr) = hb_compExprAddListExpr( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr) ); ;} + break; + + case 123: +#line 512 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewEmpty( HB_COMP_PARAM ); ;} + break; + + case 125: +#line 519 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewPostInc( (yyvsp[(0) - (1)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 126: +#line 520 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewPostDec( (yyvsp[(0) - (1)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 127: +#line 526 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 128: +#line 527 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 129: +#line 528 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 130: +#line 529 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 131: +#line 530 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 132: +#line 531 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 133: +#line 532 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 134: +#line 533 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 135: +#line 534 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 136: +#line 535 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 137: +#line 536 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 138: +#line 537 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 139: +#line 538 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 140: +#line 539 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 141: +#line 540 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 142: +#line 541 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 143: +#line 542 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 144: +#line 543 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 145: +#line 544 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 146: +#line 547 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewPreInc( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 147: +#line 548 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewPreDec( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 148: +#line 551 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewNot( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 149: +#line 552 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewNegate( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 150: +#line 553 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(2) - (2)].asExpr); ;} + break; + + case 151: +#line 556 "../../macro.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 152: +#line 557 "../../macro.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 153: +#line 558 "../../macro.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 154: +#line 559 "../../macro.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 155: +#line 560 "../../macro.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 156: +#line 561 "../../macro.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 157: +#line 562 "../../macro.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 158: +#line 563 "../../macro.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 159: +#line 564 "../../macro.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 160: +#line 565 "../../macro.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 161: +#line 566 "../../macro.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 162: +#line 567 "../../macro.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 163: +#line 568 "../../macro.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 164: +#line 569 "../../macro.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 165: +#line 570 "../../macro.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 166: +#line 571 "../../macro.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 167: +#line 572 "../../macro.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 168: +#line 573 "../../macro.y" + { HB_MACRO_IFENABLED( (yyval.asExpr), hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ), HB_SM_HARBOUR ); ;} + break; + + case 169: +#line 574 "../../macro.y" + { (yyval.asExpr) = hb_compExprAssign( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 170: +#line 577 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 171: +#line 578 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 172: +#line 579 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 173: +#line 580 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 174: +#line 581 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 175: +#line 582 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 176: +#line 583 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 177: +#line 584 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 178: +#line 585 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 179: +#line 586 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 180: +#line 587 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 181: +#line 588 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 182: +#line 589 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 183: +#line 590 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 184: +#line 591 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 185: +#line 592 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 186: +#line 593 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 187: +#line 594 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 188: +#line 595 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 189: +#line 598 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 190: +#line 599 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 191: +#line 600 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 192: +#line 601 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 193: +#line 602 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 194: +#line 603 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 195: +#line 604 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 196: +#line 605 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 197: +#line 606 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 198: +#line 607 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 199: +#line 608 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 200: +#line 609 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 201: +#line 610 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 202: +#line 611 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 203: +#line 612 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 204: +#line 613 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 205: +#line 614 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 206: +#line 615 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 207: +#line 616 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinusEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 208: +#line 619 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 209: +#line 620 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 210: +#line 621 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 211: +#line 622 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 212: +#line 623 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 213: +#line 624 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 214: +#line 625 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 215: +#line 626 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 216: +#line 627 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 217: +#line 628 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 218: +#line 629 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 219: +#line 630 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 220: +#line 631 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 221: +#line 632 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 222: +#line 633 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 223: +#line 634 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 224: +#line 635 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 225: +#line 636 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 226: +#line 637 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMultEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 227: +#line 640 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 228: +#line 641 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 229: +#line 642 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 230: +#line 643 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 231: +#line 644 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 232: +#line 645 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 233: +#line 646 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 234: +#line 647 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 235: +#line 648 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 236: +#line 649 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 237: +#line 650 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 238: +#line 651 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 239: +#line 652 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 240: +#line 653 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 241: +#line 654 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 242: +#line 655 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 243: +#line 656 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 244: +#line 657 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 245: +#line 658 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDivEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 246: +#line 661 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 247: +#line 662 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 248: +#line 663 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 249: +#line 664 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 250: +#line 665 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 251: +#line 666 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 252: +#line 667 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 253: +#line 668 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 254: +#line 669 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 255: +#line 670 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 256: +#line 671 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 257: +#line 672 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 258: +#line 673 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 259: +#line 674 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 260: +#line 675 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 261: +#line 676 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 262: +#line 677 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 263: +#line 678 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 264: +#line 679 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewModEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 265: +#line 682 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 266: +#line 683 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 267: +#line 684 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 268: +#line 685 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 269: +#line 686 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 270: +#line 687 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 271: +#line 688 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 272: +#line 689 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 273: +#line 690 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 274: +#line 691 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 275: +#line 692 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 276: +#line 693 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 277: +#line 694 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 278: +#line 695 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 279: +#line 696 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 280: +#line 697 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 281: +#line 698 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 282: +#line 699 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 283: +#line 700 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewExpEq( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 284: +#line 703 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 285: +#line 704 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 286: +#line 705 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 287: +#line 706 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 288: +#line 707 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 289: +#line 708 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(1) - (1)].asExpr); ;} + break; + + case 290: +#line 711 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPlus( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 291: +#line 712 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMinus( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 292: +#line 713 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMult( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 293: +#line 714 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewDiv( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 294: +#line 715 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewMod( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 295: +#line 716 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewPower( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 296: +#line 719 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewAnd( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 297: +#line 720 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewOr( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 298: +#line 723 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewEQ( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 299: +#line 724 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewLT( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 300: +#line 725 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewGT( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 301: +#line 726 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewLE( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 302: +#line 727 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewGE( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 303: +#line 728 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewNE( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 304: +#line 729 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewNE( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 305: +#line 730 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewIN( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 306: +#line 731 "../../macro.y" + { (yyval.asExpr) = hb_compExprSetOperand( hb_compExprNewEqual( (yyvsp[(1) - (3)].asExpr), HB_COMP_PARAM ), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 307: +#line 734 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} + break; + + case 308: +#line 740 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewArrayAt( (yyvsp[(0) - (2)].asExpr), (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 309: +#line 741 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewArrayAt( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 310: +#line 742 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewArrayAt( (yyvsp[(1) - (4)].asExpr), (yyvsp[(4) - (4)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 311: +#line 745 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewList( (yyvsp[(1) - (1)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 312: +#line 746 "../../macro.y" + { (yyval.asExpr) = hb_compExprAddListExpr( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr) ); ;} + break; + + case 313: +#line 750 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewCodeBlock( NULL, FALSE, FALSE, HB_COMP_PARAM ); ;} + break; + + case 314: +#line 752 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(3) - (7)].asExpr); ;} + break; + + case 315: +#line 754 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewCodeBlock( NULL, FALSE, FALSE, HB_COMP_PARAM ); ;} + break; + + case 316: +#line 757 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(3) - (7)].asExpr); ;} + break; + + case 317: +#line 762 "../../macro.y" + { (yyval.asExpr) = hb_compExprAddCodeblockExpr( (yyvsp[(-2) - (1)].asExpr), (yyvsp[(1) - (1)].asExpr) ); ;} + break; + + case 318: +#line 763 "../../macro.y" + { (yyval.asExpr) = hb_compExprAddCodeblockExpr( (yyvsp[(-2) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr) ); ;} + break; + + case 319: +#line 769 "../../macro.y" + { (yyval.asExpr) = NULL; ;} + break; + + case 320: +#line 772 "../../macro.y" + { (yyval.asExpr) = hb_compExprCBVarAdd( (yyvsp[(0) - (1)].asExpr), (yyvsp[(1) - (1)].string), ' ', HB_COMP_PARAM ); ;} + break; + + case 321: +#line 773 "../../macro.y" + { (yyval.asExpr) = hb_compExprCBVarAdd( (yyvsp[(0) - (3)].asExpr), (yyvsp[(3) - (3)].string), ' ', HB_COMP_PARAM ); HB_MACRO_CHECK( (yyval.asExpr) ); ;} + break; + + case 322: +#line 776 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewList( (yyvsp[(2) - (2)].asExpr), HB_COMP_PARAM ); ;} + break; + + case 323: +#line 777 "../../macro.y" + { (yyval.asExpr) = hb_compExprAddListExpr( (yyvsp[(1) - (3)].asExpr), (yyvsp[(3) - (3)].asExpr) ); ;} + break; + + case 324: +#line 780 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} + break; + + case 325: +#line 783 "../../macro.y" + { (yyval.asExpr) = (yyvsp[(1) - (2)].asExpr); ;} + break; + + case 326: +#line 787 "../../macro.y" + { (yyval.asExpr) = hb_compExprAddListExpr( hb_compExprNewList( (yyvsp[(3) - (6)].asExpr), HB_COMP_PARAM ), (yyvsp[(5) - (6)].asExpr) ); ;} + break; + + case 327: +#line 789 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewIIF( hb_compExprAddListExpr( (yyvsp[(7) - (9)].asExpr), (yyvsp[(8) - (9)].asExpr) ), HB_COMP_PARAM ); ;} + break; + + case 328: +#line 792 "../../macro.y" + { (yyval.asExpr) = hb_compExprAddListExpr( hb_compExprNewList( (yyvsp[(3) - (6)].asExpr), HB_COMP_PARAM ), (yyvsp[(5) - (6)].asExpr) ); ;} + break; + + case 329: +#line 794 "../../macro.y" + { (yyval.asExpr) = hb_compExprNewIIF( hb_compExprAddListExpr( (yyvsp[(7) - (9)].asExpr), (yyvsp[(8) - (9)].asExpr) ), HB_COMP_PARAM ); ;} + break; + + +/* Line 1267 of yacc.c. */ +#line 3897 "macroy.c" + default: break; + } + YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); + + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + + *++yyvsp = yyval; + + + /* Now `shift' the result of the reduction. Determine what state + that goes to, based on the state we popped back to and the rule + number reduced by. */ + + yyn = yyr1[yyn]; + + yystate = yypgoto[yyn - YYNTOKENS] + *yyssp; + if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp) + yystate = yytable[yystate]; + else + yystate = yydefgoto[yyn - YYNTOKENS]; + + goto yynewstate; + + +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ +yyerrlab: + /* If not already recovering from an error, report this error. */ + if (!yyerrstatus) + { + ++yynerrs; +#if ! YYERROR_VERBOSE + yyerror (pMacro, YY_("syntax error")); +#else + { + YYSIZE_T yysize = yysyntax_error (0, yystate, yychar); + if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM) + { + YYSIZE_T yyalloc = 2 * yysize; + if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM)) + yyalloc = YYSTACK_ALLOC_MAXIMUM; + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); + yymsg = (char *) YYSTACK_ALLOC (yyalloc); + if (yymsg) + yymsg_alloc = yyalloc; + else + { + yymsg = yymsgbuf; + yymsg_alloc = sizeof yymsgbuf; + } + } + + if (0 < yysize && yysize <= yymsg_alloc) + { + (void) yysyntax_error (yymsg, yystate, yychar); + yyerror (pMacro, yymsg); + } + else + { + yyerror (pMacro, YY_("syntax error")); + if (yysize != 0) + goto yyexhaustedlab; + } + } +#endif + } + + + + if (yyerrstatus == 3) + { + /* If just tried and failed to reuse look-ahead token after an + error, discard it. */ + + if (yychar <= YYEOF) + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } + else + { + yydestruct ("Error: discarding", + yytoken, &yylval, pMacro); + yychar = YYEMPTY; + } + } + + /* Else will try to reuse look-ahead token after shifting the error + token. */ + goto yyerrlab1; + + +/*---------------------------------------------------. +| yyerrorlab -- error raised explicitly by YYERROR. | +`---------------------------------------------------*/ +yyerrorlab: + + /* Pacify compilers like GCC when the user code never invokes + YYERROR and the label yyerrorlab therefore never appears in user + code. */ + if (/*CONSTCOND*/ 0) + goto yyerrorlab; + + /* Do not reclaim the symbols of the rule which action triggered + this YYERROR. */ + YYPOPSTACK (yylen); + yylen = 0; + YY_STACK_PRINT (yyss, yyssp); + yystate = *yyssp; + goto yyerrlab1; + + +/*-------------------------------------------------------------. +| yyerrlab1 -- common code for both syntax error and YYERROR. | +`-------------------------------------------------------------*/ +yyerrlab1: + yyerrstatus = 3; /* Each real token shifted decrements this. */ + + for (;;) + { + yyn = yypact[yystate]; + if (yyn != YYPACT_NINF) + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } + + /* Pop the current state because it cannot handle the error token. */ + if (yyssp == yyss) + YYABORT; + + + yydestruct ("Error: popping", + yystos[yystate], yyvsp, pMacro); + YYPOPSTACK (1); + yystate = *yyssp; + YY_STACK_PRINT (yyss, yyssp); + } + + if (yyn == YYFINAL) + YYACCEPT; + + *++yyvsp = yylval; + + + /* Shift the error token. */ + YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp); + + yystate = yyn; + goto yynewstate; + + +/*-------------------------------------. +| yyacceptlab -- YYACCEPT comes here. | +`-------------------------------------*/ +yyacceptlab: + yyresult = 0; + goto yyreturn; + +/*-----------------------------------. +| yyabortlab -- YYABORT comes here. | +`-----------------------------------*/ +yyabortlab: + yyresult = 1; + goto yyreturn; + +#ifndef yyoverflow +/*-------------------------------------------------. +| yyexhaustedlab -- memory exhaustion comes here. | +`-------------------------------------------------*/ +yyexhaustedlab: + yyerror (pMacro, YY_("memory exhausted")); + yyresult = 2; + /* Fall through. */ +#endif + +yyreturn: + if (yychar != YYEOF && yychar != YYEMPTY) + yydestruct ("Cleanup: discarding lookahead", + yytoken, &yylval, pMacro); + /* Do not reclaim the symbols of the rule which action triggered + this YYABORT or YYACCEPT. */ + YYPOPSTACK (yylen); + YY_STACK_PRINT (yyss, yyssp); + while (yyssp != yyss) + { + yydestruct ("Cleanup: popping", + yystos[*yyssp], yyvsp, pMacro); + YYPOPSTACK (1); + } +#ifndef yyoverflow + if (yyss != yyssa) + YYSTACK_FREE (yyss); +#endif +#if YYERROR_VERBOSE + if (yymsg != yymsgbuf) + YYSTACK_FREE (yymsg); +#endif + /* Make sure YYID is used. */ + return YYID (yyresult); +} + + +#line 797 "../../macro.y" + + +#ifdef __WATCOMC__ +/* enable warnings for unreachable code */ +#pragma warning 13 1 +#endif + + +/* + ** ------------------------------------------------------------------------ ** + */ + +void yyerror( HB_MACRO_PTR pMacro, char * s ) +{ + HB_SYMBOL_UNUSED( pMacro ); + HB_SYMBOL_UNUSED( s ); +} + +/* ************************************************************************* */ + +typedef struct HB_MEXPR_ +{ + HB_EXPR Expression; + struct HB_MEXPR_ *pPrev; +} +HB_MEXPR, * HB_MEXPR_PTR; + +typedef struct HB_MIDENT_ +{ + char * Identifier; + struct HB_MIDENT_ *pPrev; +} +HB_MIDENT, * HB_MIDENT_PTR; + +/* Allocates memory for Expression holder structure and stores it + * on the linked list +*/ +HB_EXPR_PTR hb_macroExprNew( HB_COMP_DECL ) +{ + HB_MEXPR_PTR pMExpr = ( HB_MEXPR_PTR ) hb_xgrab( sizeof( HB_MEXPR ) ); + pMExpr->pPrev = ( HB_MEXPR_PTR ) HB_MACRO_DATA->pExprLst; + HB_MACRO_DATA->pExprLst = ( void * ) pMExpr; + return &pMExpr->Expression; +} + +static void hb_macroIdentNew( HB_COMP_DECL, char * szIdent ) +{ + HB_MIDENT_PTR pMIdent = ( HB_MIDENT_PTR ) hb_xgrab( sizeof( HB_MIDENT ) ); + pMIdent->Identifier = szIdent; + pMIdent->pPrev = ( HB_MIDENT_PTR ) HB_MACRO_DATA->pIdentLst; + HB_MACRO_DATA->pIdentLst = ( void * ) pMIdent; +} + +/* Deallocate all memory used by expression optimizer */ +static void hb_macroLstFree( HB_MACRO_PTR pMacro ) +{ + if( pMacro->pExprLst ) + { + HB_MEXPR_PTR pMExpr = ( HB_MEXPR_PTR ) pMacro->pExprLst; + do + { + hb_compExprDelete( &pMExpr->Expression, pMacro ); + pMExpr = pMExpr->pPrev; + } + while( pMExpr ); + do + { + pMExpr = ( HB_MEXPR_PTR ) pMacro->pExprLst; + pMacro->pExprLst = ( void * ) pMExpr->pPrev; + hb_xfree( pMExpr ); + } + while( pMacro->pExprLst ); + } + + while( pMacro->pIdentLst ) + { + HB_MIDENT_PTR pMIdent = ( HB_MIDENT_PTR ) HB_MACRO_DATA->pIdentLst;; + HB_MACRO_DATA->pIdentLst = ( void * ) pMIdent->pPrev; + hb_xfree( pMIdent->Identifier ); + hb_xfree( pMIdent ); + } +} + +int hb_macroYYParse( HB_MACRO_PTR pMacro ) +{ + int iResult; + + if( hb_macroLexNew( pMacro ) ) + { + pMacro->status = HB_MACRO_CONT; + pMacro->pExprLst = NULL; + pMacro->pIdentLst = NULL; + + iResult = yyparse( pMacro ); + + hb_macroLstFree( pMacro ); + hb_macroLexDelete( pMacro ); + } + else + iResult = HB_MACRO_FAILURE; + + return iResult; +} + + +#if defined( HB_MACRO_PPLEX ) + +/* it's an example of PP token translator which change tokens generated by + PP into terminal symbols used by our grammar parser generated by Bison */ +BOOL hb_macroLexNew( HB_MACRO_PTR pMacro ) +{ + pMacro->pLex = ( void * ) hb_pp_lexNew( pMacro->string, pMacro->length ); + return pMacro->pLex != NULL; +} + +void hb_macroLexDelete( HB_MACRO_PTR pMacro ) +{ + if( pMacro->pLex ) + { + hb_pp_free( ( PHB_PP_STATE ) pMacro->pLex ); + pMacro->pLex = NULL; + } +} + +int hb_macrolex( YYSTYPE *yylval_ptr, HB_MACRO_PTR pMacro ) +{ + PHB_PP_TOKEN pToken = hb_pp_lexGet( ( PHB_PP_STATE ) pMacro->pLex ); + + if( !pToken ) + return 0; + + switch( HB_PP_TOKEN_TYPE( pToken->type ) ) + { + case HB_PP_TOKEN_KEYWORD: + if( pToken->len >= 4 && pToken->len <= 6 && + ( hb_strnicmp( "_FILED", pToken->value, pToken->len ) == 0 || + hb_strnicmp( "FILED", pToken->value, pToken->len ) == 0 ) ) + return FIELD; + else if( pToken->len == 3 && hb_stricmp( "IIF", pToken->value ) == 0 ) + return IIF; + else if( pToken->len == 2 && hb_stricmp( "IF", pToken->value ) == 0 ) + return IF; + else if( pToken->len == 3 && hb_stricmp( "NIL", pToken->value ) == 0 ) + return NIL; + + hb_pp_tokenUpper( pToken ); + yylval_ptr->string = pToken->value; + return IDENTIFIER; + + case HB_PP_TOKEN_MACROVAR: + hb_pp_tokenUpper( pToken ); + yylval_ptr->string = pToken->value; + return MACROVAR; + + case HB_PP_TOKEN_MACROTEXT: + hb_pp_tokenUpper( pToken ); + yylval_ptr->string = pToken->value; + return MACROTEXT; + + case HB_PP_TOKEN_NUMBER: + { + HB_LONG lNumber; + double dNumber; + int iDec, iWidth; + + if( hb_compStrToNum( pToken->value, pToken->len, &lNumber, &dNumber, &iDec, &iWidth ) ) + { + yylval_ptr->valDouble.dNumber = dNumber; + yylval_ptr->valDouble.bDec = ( UCHAR ) iDec; + yylval_ptr->valDouble.bWidth = ( UCHAR ) iWidth; + return NUM_DOUBLE; + } + else + { + yylval_ptr->valLong.lNumber = lNumber; + yylval_ptr->valLong.bWidth = ( UCHAR ) iWidth; + return NUM_LONG; + } + } + case HB_PP_TOKEN_DATE: + if( pToken->len == 10 ) + { + int year, month, day; + hb_dateStrGet( pToken->value + 2, &year, &month, &day ); + yylval_ptr->valLong.lNumber = hb_dateEncode( year, month, day ); + } + else + yylval_ptr->valLong.lNumber = 0; + return NUM_DATE; + + case HB_PP_TOKEN_STRING: + yylval_ptr->string = pToken->value; + return LITERAL; + + case HB_PP_TOKEN_LOGICAL: + return pToken->value[ 1 ] == 'T' ? TRUEVALUE : FALSEVALUE; + + case HB_PP_TOKEN_HASH: + case HB_PP_TOKEN_DIRECTIVE: + return NE1; + + case HB_PP_TOKEN_NE: + return NE2; + + case HB_PP_TOKEN_ASSIGN: + return INASSIGN; + + case HB_PP_TOKEN_EQUAL: + return EQ; + + case HB_PP_TOKEN_INC: + return INC; + + case HB_PP_TOKEN_DEC: + return DEC; + + case HB_PP_TOKEN_ALIAS: + return ALIASOP; + + case HB_PP_TOKEN_LE: + return LE; + + case HB_PP_TOKEN_GE: + return GE; + + case HB_PP_TOKEN_PLUSEQ: + return PLUSEQ; + + case HB_PP_TOKEN_MINUSEQ: + return MINUSEQ; + + case HB_PP_TOKEN_MULTEQ: + return MULTEQ; + + case HB_PP_TOKEN_DIVEQ: + return DIVEQ; + + case HB_PP_TOKEN_MODEQ: + return MODEQ; + + case HB_PP_TOKEN_EXPEQ: + return EXPEQ; + + case HB_PP_TOKEN_POWER: + return POWER; + + case HB_PP_TOKEN_AND: + return AND; + + case HB_PP_TOKEN_OR: + return OR; + + case HB_PP_TOKEN_NOT: + return NOT; + + default: + return pToken->value[ 0 ]; + } +} + +#endif /* HB_MACRO_PPLEX */ + diff --git a/harbour/source/macro/macro.yyh b/harbour/source/macro/macro.yyh new file mode 100644 index 0000000000..dc2f95cf0e --- /dev/null +++ b/harbour/source/macro/macro.yyh @@ -0,0 +1,155 @@ +/* A Bison parser, made by GNU Bison 2.3. */ + +/* Skeleton interface for Bison's Yacc-like parsers in C + + Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006 + Free Software Foundation, Inc. + + 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, or (at your option) + any later version. + + 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., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. */ + +/* As a special exception, you may create a larger work that contains + part or all of the Bison parser skeleton and distribute that work + under terms of your choice, so long as that work isn't itself a + parser generator using the skeleton or a modified version thereof + as a parser skeleton. Alternatively, if you modify or redistribute + the parser skeleton itself, you may (at your option) remove this + special exception, which will cause the skeleton and the resulting + Bison output files to be licensed under the GNU General Public + License without this special exception. + + This special exception was added by the Free Software Foundation in + version 2.2 of Bison. */ + +/* Tokens. */ +#ifndef YYTOKENTYPE +# define YYTOKENTYPE + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + IDENTIFIER = 258, + NIL = 259, + NUM_DOUBLE = 260, + INASSIGN = 261, + NUM_LONG = 262, + NUM_DATE = 263, + IIF = 264, + IF = 265, + LITERAL = 266, + TRUEVALUE = 267, + FALSEVALUE = 268, + AND = 269, + OR = 270, + NOT = 271, + EQ = 272, + NE1 = 273, + NE2 = 274, + INC = 275, + DEC = 276, + ALIASOP = 277, + SELF = 278, + LE = 279, + GE = 280, + FIELD = 281, + MACROVAR = 282, + MACROTEXT = 283, + PLUSEQ = 284, + MINUSEQ = 285, + MULTEQ = 286, + DIVEQ = 287, + POWER = 288, + EXPEQ = 289, + MODEQ = 290, + POST = 291, + UNARY = 292, + PRE = 293 + }; +#endif +/* Tokens. */ +#define IDENTIFIER 258 +#define NIL 259 +#define NUM_DOUBLE 260 +#define INASSIGN 261 +#define NUM_LONG 262 +#define NUM_DATE 263 +#define IIF 264 +#define IF 265 +#define LITERAL 266 +#define TRUEVALUE 267 +#define FALSEVALUE 268 +#define AND 269 +#define OR 270 +#define NOT 271 +#define EQ 272 +#define NE1 273 +#define NE2 274 +#define INC 275 +#define DEC 276 +#define ALIASOP 277 +#define SELF 278 +#define LE 279 +#define GE 280 +#define FIELD 281 +#define MACROVAR 282 +#define MACROTEXT 283 +#define PLUSEQ 284 +#define MINUSEQ 285 +#define MULTEQ 286 +#define DIVEQ 287 +#define POWER 288 +#define EXPEQ 289 +#define MODEQ 290 +#define POST 291 +#define UNARY 292 +#define PRE 293 + + + + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED +typedef union YYSTYPE +#line 116 "../../macro.y" +{ + char * string; /* to hold a string returned by lex */ + int iNumber; /* to hold a temporary integer number */ + HB_LONG lNumber; /* to hold a temporary long number */ + void * pVoid; /* to hold any memory structure we may need */ + HB_EXPR_PTR asExpr; + struct + { + int iNumber; /* to hold a number returned by lex */ + } valInteger; + struct + { + HB_LONG lNumber; /* to hold a long number returned by lex */ + UCHAR bWidth; /* to hold the width of the value */ + } valLong; + struct + { + double dNumber; /* to hold a double number returned by lex */ + UCHAR bWidth; /* to hold the width of the value */ + UCHAR bDec; /* to hold the number of decimal points in the value */ + } valDouble; +} +/* Line 1529 of yacc.c. */ +#line 148 "macroy.h" + YYSTYPE; +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +# define YYSTYPE_IS_TRIVIAL 1 +#endif + + +