1 
2 /* A Bison parser, made by GNU Bison 2.4.1.  */
3 
4 /* Skeleton implementation for Bison's Yacc-like parsers in C
5 
6       Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002, 2003, 2004, 2005, 2006
7    Free Software Foundation, Inc.
8 
9    This program is free software: you can redistribute it and/or modify
10    it under the terms of the GNU General Public License as published by
11    the Free Software Foundation, either version 3 of the License, or
12    (at your option) any later version.
13 
14    This program is distributed in the hope that it will be useful,
15    but WITHOUT ANY WARRANTY; without even the implied warranty of
16    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17    GNU General Public License for more details.
18 
19    You should have received a copy of the GNU General Public License
20    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
21 
22 /* As a special exception, you may create a larger work that contains
23    part or all of the Bison parser skeleton and distribute that work
24    under terms of your choice, so long as that work isn't itself a
25    parser generator using the skeleton or a modified version thereof
26    as a parser skeleton.  Alternatively, if you modify or redistribute
27    the parser skeleton itself, you may (at your option) remove this
28    special exception, which will cause the skeleton and the resulting
29    Bison output files to be licensed under the GNU General Public
30    License without this special exception.
31 
32    This special exception was added by the Free Software Foundation in
33    version 2.2 of Bison.  */
34 
35 /* C LALR(1) parser skeleton written by Richard Stallman, by
36    simplifying the original so-called "semantic" parser.  */
37 
38 /* All symbols defined below should begin with yy or YY, to avoid
39    infringing on user name space.  This should be done even for local
40    variables, as they might otherwise be expanded by user macros.
41    There are some unavoidable exceptions within include files to
42    define necessary library symbols; they are noted "INFRINGES ON
43    USER NAME SPACE" below.  */
44 
45 /* Identify Bison output.  */
46 #define YYBISON 1
47 
48 /* Bison version.  */
49 #define YYBISON_VERSION "2.4.1"
50 
51 /* Skeleton name.  */
52 #define YYSKELETON_NAME "yacc.c"
53 
54 /* Pure parsers.  */
55 #define YYPURE 1
56 
57 /* Push parsers.  */
58 #define YYPUSH 0
59 
60 /* Pull parsers.  */
61 #define YYPULL 1
62 
63 /* Using locations.  */
64 #define YYLSP_NEEDED 1
65 
66 /* Substitute the variable and function names.  */
67 #define yyparse         jscyyparse
68 #define yylex           jscyylex
69 #define yyerror         jscyyerror
70 #define yylval          jscyylval
71 #define yychar          jscyychar
72 #define yydebug         jscyydebug
73 #define yynerrs         jscyynerrs
74 #define yylloc          jscyylloc
75 
76 /* Copy the first part of user declarations.  */
77 
78 /* Line 189 of yacc.c  */
79 #line 3 "parser/Grammar.y"
80 
81 
82 /*
83  *  Copyright (C) 1999-2000 Harri Porten (porten@kde.org)
84  *  Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
85  *  Copyright (C) 2007 Eric Seidel <eric@webkit.org>
86  *
87  *  This library is free software; you can redistribute it and/or
88  *  modify it under the terms of the GNU Lesser General Public
89  *  License as published by the Free Software Foundation; either
90  *  version 2 of the License, or (at your option) any later version.
91  *
92  *  This library is distributed in the hope that it will be useful,
93  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
94  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
95  *  Lesser General Public License for more details.
96  *
97  *  You should have received a copy of the GNU Lesser General Public
98  *  License along with this library; if not, write to the Free Software
99  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
100  *
101  */
102 
103 #include "config.h"
104 
105 #include "JSObject.h"
106 #include "JSString.h"
107 #include "Lexer.h"
108 #include "NodeConstructors.h"
109 #include "NodeInfo.h"
110 #include <stdlib.h>
111 #include <string.h>
112 #include <wtf/MathExtras.h>
113 
114 #define YYMALLOC fastMalloc
115 #define YYFREE fastFree
116 
117 #define YYMAXDEPTH 10000
118 #define YYENABLE_NLS 0
119 
120 // Default values for bison.
121 #define YYDEBUG 0 // Set to 1 to debug a parse error.
122 #define jscyydebug 0 // Set to 1 to debug a parse error.
123 #if !OS(DARWIN)
124 // Avoid triggering warnings in older bison by not setting this on the Darwin platform.
125 // FIXME: Is this still needed?
126 #define YYERROR_VERBOSE
127 #endif
128 
129 int jscyyerror(const char*);
130 
131 static inline bool allowAutomaticSemicolon(JSC::Lexer&, int);
132 
133 #define GLOBAL_DATA static_cast<JSGlobalData*>(globalPtr)
134 #define AUTO_SEMICOLON do { if (!allowAutomaticSemicolon(*GLOBAL_DATA->lexer, yychar)) YYABORT; } while (0)
135 
136 using namespace JSC;
137 using namespace std;
138 
139 static ExpressionNode* makeAssignNode(JSGlobalData*, ExpressionNode* left, Operator, ExpressionNode* right, bool leftHasAssignments, bool rightHasAssignments, int start, int divot, int end);
140 static ExpressionNode* makePrefixNode(JSGlobalData*, ExpressionNode*, Operator, int start, int divot, int end);
141 static ExpressionNode* makePostfixNode(JSGlobalData*, ExpressionNode*, Operator, int start, int divot, int end);
142 static PropertyNode* makeGetterOrSetterPropertyNode(JSGlobalData*, const Identifier& getOrSet, const Identifier& name, ParameterNode*, FunctionBodyNode*, const SourceCode&);
143 static ExpressionNodeInfo makeFunctionCallNode(JSGlobalData*, ExpressionNodeInfo function, ArgumentsNodeInfo, int start, int divot, int end);
144 static ExpressionNode* makeTypeOfNode(JSGlobalData*, ExpressionNode*);
145 static ExpressionNode* makeDeleteNode(JSGlobalData*, ExpressionNode*, int start, int divot, int end);
146 static ExpressionNode* makeNegateNode(JSGlobalData*, ExpressionNode*);
147 static NumberNode* makeNumberNode(JSGlobalData*, double);
148 static ExpressionNode* makeBitwiseNotNode(JSGlobalData*, ExpressionNode*);
149 static ExpressionNode* makeMultNode(JSGlobalData*, ExpressionNode* left, ExpressionNode* right, bool rightHasAssignments);
150 static ExpressionNode* makeDivNode(JSGlobalData*, ExpressionNode* left, ExpressionNode* right, bool rightHasAssignments);
151 static ExpressionNode* makeAddNode(JSGlobalData*, ExpressionNode* left, ExpressionNode* right, bool rightHasAssignments);
152 static ExpressionNode* makeSubNode(JSGlobalData*, ExpressionNode* left, ExpressionNode* right, bool rightHasAssignments);
153 static ExpressionNode* makeLeftShiftNode(JSGlobalData*, ExpressionNode* left, ExpressionNode* right, bool rightHasAssignments);
154 static ExpressionNode* makeRightShiftNode(JSGlobalData*, ExpressionNode* left, ExpressionNode* right, bool rightHasAssignments);
155 static StatementNode* makeVarStatementNode(JSGlobalData*, ExpressionNode*);
156 static ExpressionNode* combineCommaNodes(JSGlobalData*, ExpressionNode* list, ExpressionNode* init);
157 
158 #if COMPILER(MSVC)
159 
160 #pragma warning(disable: 4065)
161 #pragma warning(disable: 4244)
162 #pragma warning(disable: 4702)
163 
164 #endif
165 
166 #define YYPARSE_PARAM globalPtr
167 #define YYLEX_PARAM globalPtr
168 
createNodeDeclarationInfo(T node,ParserArenaData<DeclarationStacks::VarStack> * varDecls,ParserArenaData<DeclarationStacks::FunctionStack> * funcDecls,CodeFeatures info,int numConstants)169 template <typename T> inline NodeDeclarationInfo<T> createNodeDeclarationInfo(T node,
170     ParserArenaData<DeclarationStacks::VarStack>* varDecls,
171     ParserArenaData<DeclarationStacks::FunctionStack>* funcDecls,
172     CodeFeatures info, int numConstants)
173 {
174     ASSERT((info & ~AllFeatures) == 0);
175     NodeDeclarationInfo<T> result = { node, varDecls, funcDecls, info, numConstants };
176     return result;
177 }
178 
createNodeInfo(T node,CodeFeatures info,int numConstants)179 template <typename T> inline NodeInfo<T> createNodeInfo(T node, CodeFeatures info, int numConstants)
180 {
181     ASSERT((info & ~AllFeatures) == 0);
182     NodeInfo<T> result = { node, info, numConstants };
183     return result;
184 }
185 
mergeDeclarationLists(T decls1,T decls2)186 template <typename T> inline T mergeDeclarationLists(T decls1, T decls2)
187 {
188     // decls1 or both are null
189     if (!decls1)
190         return decls2;
191     // only decls1 is non-null
192     if (!decls2)
193         return decls1;
194 
195     // Both are non-null
196     decls1->data.append(decls2->data);
197 
198     // Manually release as much as possible from the now-defunct declaration lists
199     // to avoid accumulating so many unused heap allocated vectors.
200     decls2->data.clear();
201 
202     return decls1;
203 }
204 
appendToVarDeclarationList(JSGlobalData * globalData,ParserArenaData<DeclarationStacks::VarStack> * & varDecls,const Identifier & ident,unsigned attrs)205 static inline void appendToVarDeclarationList(JSGlobalData* globalData, ParserArenaData<DeclarationStacks::VarStack>*& varDecls, const Identifier& ident, unsigned attrs)
206 {
207     if (!varDecls)
208         varDecls = new (globalData) ParserArenaData<DeclarationStacks::VarStack>;
209 
210     varDecls->data.append(make_pair(&ident, attrs));
211 }
212 
appendToVarDeclarationList(JSGlobalData * globalData,ParserArenaData<DeclarationStacks::VarStack> * & varDecls,ConstDeclNode * decl)213 static inline void appendToVarDeclarationList(JSGlobalData* globalData, ParserArenaData<DeclarationStacks::VarStack>*& varDecls, ConstDeclNode* decl)
214 {
215     unsigned attrs = DeclarationStacks::IsConstant;
216     if (decl->hasInitializer())
217         attrs |= DeclarationStacks::HasInitializer;
218     appendToVarDeclarationList(globalData, varDecls, decl->ident(), attrs);
219 }
220 
221 
222 
223 /* Line 189 of yacc.c  */
224 #line 225 "generated/Grammar.tab.c"
225 
226 /* Enabling traces.  */
227 #ifndef YYDEBUG
228 # define YYDEBUG 0
229 #endif
230 
231 /* Enabling verbose error messages.  */
232 #ifdef YYERROR_VERBOSE
233 # undef YYERROR_VERBOSE
234 # define YYERROR_VERBOSE 1
235 #else
236 # define YYERROR_VERBOSE 0
237 #endif
238 
239 /* Enabling the token table.  */
240 #ifndef YYTOKEN_TABLE
241 # define YYTOKEN_TABLE 0
242 #endif
243 
244 
245 /* Tokens.  */
246 #ifndef YYTOKENTYPE
247 # define YYTOKENTYPE
248    /* Put the tokens into the symbol table, so that GDB and other debuggers
249       know about them.  */
250    enum yytokentype {
251      NULLTOKEN = 258,
252      TRUETOKEN = 259,
253      FALSETOKEN = 260,
254      BREAK = 261,
255      CASE = 262,
256      DEFAULT = 263,
257      FOR = 264,
258      NEW = 265,
259      VAR = 266,
260      CONSTTOKEN = 267,
261      CONTINUE = 268,
262      FUNCTION = 269,
263      RETURN = 270,
264      VOIDTOKEN = 271,
265      DELETETOKEN = 272,
266      IF = 273,
267      THISTOKEN = 274,
268      DO = 275,
269      WHILE = 276,
270      INTOKEN = 277,
271      INSTANCEOF = 278,
272      TYPEOF = 279,
273      SWITCH = 280,
274      WITH = 281,
275      RESERVED = 282,
276      THROW = 283,
277      TRY = 284,
278      CATCH = 285,
279      FINALLY = 286,
280      DEBUGGER = 287,
281      IF_WITHOUT_ELSE = 288,
282      ELSE = 289,
283      EQEQ = 290,
284      NE = 291,
285      STREQ = 292,
286      STRNEQ = 293,
287      LE = 294,
288      GE = 295,
289      OR = 296,
290      AND = 297,
291      PLUSPLUS = 298,
292      MINUSMINUS = 299,
293      LSHIFT = 300,
294      RSHIFT = 301,
295      URSHIFT = 302,
296      PLUSEQUAL = 303,
297      MINUSEQUAL = 304,
298      MULTEQUAL = 305,
299      DIVEQUAL = 306,
300      LSHIFTEQUAL = 307,
301      RSHIFTEQUAL = 308,
302      URSHIFTEQUAL = 309,
303      ANDEQUAL = 310,
304      MODEQUAL = 311,
305      XOREQUAL = 312,
306      OREQUAL = 313,
307      OPENBRACE = 314,
308      CLOSEBRACE = 315,
309      NUMBER = 316,
310      IDENT = 317,
311      STRING = 318,
312      AUTOPLUSPLUS = 319,
313      AUTOMINUSMINUS = 320
314    };
315 #endif
316 
317 
318 
319 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
320 typedef union YYSTYPE
321 {
322 
323 /* Line 214 of yacc.c  */
324 #line 146 "parser/Grammar.y"
325 
326     int                 intValue;
327     double              doubleValue;
328     const Identifier*   ident;
329 
330     // expression subtrees
331     ExpressionNodeInfo  expressionNode;
332     FuncDeclNodeInfo    funcDeclNode;
333     PropertyNodeInfo    propertyNode;
334     ArgumentsNodeInfo   argumentsNode;
335     ConstDeclNodeInfo   constDeclNode;
336     CaseBlockNodeInfo   caseBlockNode;
337     CaseClauseNodeInfo  caseClauseNode;
338     FuncExprNodeInfo    funcExprNode;
339 
340     // statement nodes
341     StatementNodeInfo   statementNode;
342     FunctionBodyNode*   functionBodyNode;
343     ProgramNode*        programNode;
344 
345     SourceElementsInfo  sourceElements;
346     PropertyListInfo    propertyList;
347     ArgumentListInfo    argumentList;
348     VarDeclListInfo     varDeclList;
349     ConstDeclListInfo   constDeclList;
350     ClauseListInfo      clauseList;
351     ElementListInfo     elementList;
352     ParameterListInfo   parameterList;
353 
354     Operator            op;
355 
356 
357 
358 /* Line 214 of yacc.c  */
359 #line 360 "generated/Grammar.tab.c"
360 } YYSTYPE;
361 # define YYSTYPE_IS_TRIVIAL 1
362 # define yystype YYSTYPE /* obsolescent; will be withdrawn */
363 # define YYSTYPE_IS_DECLARED 1
364 #endif
365 
366 #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
367 typedef struct YYLTYPE
368 {
369   int first_line;
370   int first_column;
371   int last_line;
372   int last_column;
373 } YYLTYPE;
374 # define yyltype YYLTYPE /* obsolescent; will be withdrawn */
375 # define YYLTYPE_IS_DECLARED 1
376 # define YYLTYPE_IS_TRIVIAL 1
377 #endif
378 
379 
380 /* Copy the second part of user declarations.  */
381 
382 /* Line 264 of yacc.c  */
383 #line 178 "parser/Grammar.y"
384 
385 
setStatementLocation(StatementNode * statement,const T & start,const T & end)386 template <typename T> inline void setStatementLocation(StatementNode* statement, const T& start, const T& end)
387 {
388     statement->setLoc(start.first_line, end.last_line);
389 }
390 
setExceptionLocation(ThrowableExpressionData * node,unsigned start,unsigned divot,unsigned end)391 static inline void setExceptionLocation(ThrowableExpressionData* node, unsigned start, unsigned divot, unsigned end)
392 {
393     node->setExceptionSourceCode(divot, divot - start, end - divot);
394 }
395 
396 
397 
398 /* Line 264 of yacc.c  */
399 #line 400 "generated/Grammar.tab.c"
400 
401 #ifdef short
402 # undef short
403 #endif
404 
405 #ifdef YYTYPE_UINT8
406 typedef YYTYPE_UINT8 yytype_uint8;
407 #else
408 typedef unsigned char yytype_uint8;
409 #endif
410 
411 #ifdef YYTYPE_INT8
412 typedef YYTYPE_INT8 yytype_int8;
413 #elif (defined __STDC__ || defined __C99__FUNC__ \
414      || defined __cplusplus || defined _MSC_VER)
415 typedef signed char yytype_int8;
416 #else
417 typedef short int yytype_int8;
418 #endif
419 
420 #ifdef YYTYPE_UINT16
421 typedef YYTYPE_UINT16 yytype_uint16;
422 #else
423 typedef unsigned short int yytype_uint16;
424 #endif
425 
426 #ifdef YYTYPE_INT16
427 typedef YYTYPE_INT16 yytype_int16;
428 #else
429 typedef short int yytype_int16;
430 #endif
431 
432 #ifndef YYSIZE_T
433 # ifdef __SIZE_TYPE__
434 #  define YYSIZE_T __SIZE_TYPE__
435 # elif defined size_t
436 #  define YYSIZE_T size_t
437 # elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
438      || defined __cplusplus || defined _MSC_VER)
439 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
440 #  define YYSIZE_T size_t
441 # else
442 #  define YYSIZE_T unsigned int
443 # endif
444 #endif
445 
446 #define YYSIZE_MAXIMUM ((YYSIZE_T) -1)
447 
448 #ifndef YY_
449 # if YYENABLE_NLS
450 #  if ENABLE_NLS
451 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
452 #   define YY_(msgid) dgettext ("bison-runtime", msgid)
453 #  endif
454 # endif
455 # ifndef YY_
456 #  define YY_(msgid) msgid
457 # endif
458 #endif
459 
460 /* Suppress unused-variable warnings by "using" E.  */
461 #if ! defined lint || defined __GNUC__
462 # define YYUSE(e) ((void) (e))
463 #else
464 # define YYUSE(e) /* empty */
465 #endif
466 
467 /* Identity function, used to suppress warnings about constant conditions.  */
468 #ifndef lint
469 # define YYID(n) (n)
470 #else
471 #if (defined __STDC__ || defined __C99__FUNC__ \
472      || defined __cplusplus || defined _MSC_VER)
473 static int
YYID(int yyi)474 YYID (int yyi)
475 #else
476 static int
477 YYID (yyi)
478     int yyi;
479 #endif
480 {
481   return yyi;
482 }
483 #endif
484 
485 #if ! defined yyoverflow || YYERROR_VERBOSE
486 
487 /* The parser invokes alloca or malloc; define the necessary symbols.  */
488 
489 # ifdef YYSTACK_USE_ALLOCA
490 #  if YYSTACK_USE_ALLOCA
491 #   ifdef __GNUC__
492 #    define YYSTACK_ALLOC __builtin_alloca
493 #   elif defined __BUILTIN_VA_ARG_INCR
494 #    include <alloca.h> /* INFRINGES ON USER NAME SPACE */
495 #   elif defined _AIX
496 #    define YYSTACK_ALLOC __alloca
497 #   elif defined _MSC_VER
498 #    include <malloc.h> /* INFRINGES ON USER NAME SPACE */
499 #    define alloca _alloca
500 #   else
501 #    define YYSTACK_ALLOC alloca
502 #    if ! defined _ALLOCA_H && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
503      || defined __cplusplus || defined _MSC_VER)
504 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
505 #     ifndef _STDLIB_H
506 #      define _STDLIB_H 1
507 #     endif
508 #    endif
509 #   endif
510 #  endif
511 # endif
512 
513 # ifdef YYSTACK_ALLOC
514    /* Pacify GCC's `empty if-body' warning.  */
515 #  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
516 #  ifndef YYSTACK_ALLOC_MAXIMUM
517     /* The OS might guarantee only one guard page at the bottom of the stack,
518        and a page size can be as small as 4096 bytes.  So we cannot safely
519        invoke alloca (N) if N exceeds 4096.  Use a slightly smaller number
520        to allow for a few compiler-allocated temporary stack slots.  */
521 #   define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
522 #  endif
523 # else
524 #  define YYSTACK_ALLOC YYMALLOC
525 #  define YYSTACK_FREE YYFREE
526 #  ifndef YYSTACK_ALLOC_MAXIMUM
527 #   define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
528 #  endif
529 #  if (defined __cplusplus && ! defined _STDLIB_H \
530        && ! ((defined YYMALLOC || defined malloc) \
531 	     && (defined YYFREE || defined free)))
532 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
533 #   ifndef _STDLIB_H
534 #    define _STDLIB_H 1
535 #   endif
536 #  endif
537 #  ifndef YYMALLOC
538 #   define YYMALLOC malloc
539 #   if ! defined malloc && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
540      || defined __cplusplus || defined _MSC_VER)
541 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
542 #   endif
543 #  endif
544 #  ifndef YYFREE
545 #   define YYFREE free
546 #   if ! defined free && ! defined _STDLIB_H && (defined __STDC__ || defined __C99__FUNC__ \
547      || defined __cplusplus || defined _MSC_VER)
548 void free (void *); /* INFRINGES ON USER NAME SPACE */
549 #   endif
550 #  endif
551 # endif
552 #endif /* ! defined yyoverflow || YYERROR_VERBOSE */
553 
554 
555 #if (! defined yyoverflow \
556      && (! defined __cplusplus \
557 	 || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
558 	     && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
559 
560 /* A type that is properly aligned for any stack member.  */
561 union yyalloc
562 {
563   yytype_int16 yyss_alloc;
564   YYSTYPE yyvs_alloc;
565   YYLTYPE yyls_alloc;
566 };
567 
568 /* The size of the maximum gap between one aligned stack and the next.  */
569 # define YYSTACK_GAP_MAXIMUM (sizeof (union yyalloc) - 1)
570 
571 /* The size of an array large to enough to hold all stacks, each with
572    N elements.  */
573 # define YYSTACK_BYTES(N) \
574      ((N) * (sizeof (yytype_int16) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
575       + 2 * YYSTACK_GAP_MAXIMUM)
576 
577 /* Copy COUNT objects from FROM to TO.  The source and destination do
578    not overlap.  */
579 # ifndef YYCOPY
580 #  if defined __GNUC__ && 1 < __GNUC__
581 #   define YYCOPY(To, From, Count) \
582       __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
583 #  else
584 #   define YYCOPY(To, From, Count)		\
585       do					\
586 	{					\
587 	  YYSIZE_T yyi;				\
588 	  for (yyi = 0; yyi < (Count); yyi++)	\
589 	    (To)[yyi] = (From)[yyi];		\
590 	}					\
591       while (YYID (0))
592 #  endif
593 # endif
594 
595 /* Relocate STACK from its old location to the new one.  The
596    local variables YYSIZE and YYSTACKSIZE give the old and new number of
597    elements in the stack, and YYPTR gives the new location of the
598    stack.  Advance YYPTR to a properly aligned location for the next
599    stack.  */
600 # define YYSTACK_RELOCATE(Stack_alloc, Stack)				\
601     do									\
602       {									\
603 	YYSIZE_T yynewbytes;						\
604 	YYCOPY (&yyptr->Stack_alloc, Stack, yysize);			\
605 	Stack = &yyptr->Stack_alloc;					\
606 	yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
607 	yyptr += yynewbytes / sizeof (*yyptr);				\
608       }									\
609     while (YYID (0))
610 
611 #endif
612 
613 /* YYFINAL -- State number of the termination state.  */
614 #define YYFINAL  206
615 /* YYLAST -- Last index in YYTABLE.  */
616 #define YYLAST   2349
617 
618 /* YYNTOKENS -- Number of terminals.  */
619 #define YYNTOKENS  88
620 /* YYNNTS -- Number of nonterminals.  */
621 #define YYNNTS  194
622 /* YYNRULES -- Number of rules.  */
623 #define YYNRULES  597
624 /* YYNRULES -- Number of states.  */
625 #define YYNSTATES  1082
626 
627 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
628 #define YYUNDEFTOK  2
629 #define YYMAXUTOK   320
630 
631 #define YYTRANSLATE(YYX)						\
632   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
633 
634 /* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
635 static const yytype_uint8 yytranslate[] =
636 {
637        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
638        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
639        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
640        2,     2,     2,    77,     2,     2,     2,    79,    82,     2,
641       68,    69,    78,    74,    70,    75,    73,    66,     2,     2,
642        2,     2,     2,     2,     2,     2,     2,     2,    67,    87,
643       80,    86,    81,    85,     2,     2,     2,     2,     2,     2,
644        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
645        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
646        2,    71,     2,    72,    83,     2,     2,     2,     2,     2,
647        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
648        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
649        2,     2,     2,     2,    84,     2,    76,     2,     2,     2,
650        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
651        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
652        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
653        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
654        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
655        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
656        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
657        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
658        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
659        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
660        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
661        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
662        2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
663        5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
664       15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
665       25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
666       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
667       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
668       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
669       65
670 };
671 
672 #if YYDEBUG
673 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
674    YYRHS.  */
675 static const yytype_uint16 yyprhs[] =
676 {
677        0,     0,     3,     5,     7,     9,    11,    13,    15,    17,
678       21,    25,    29,    37,    46,    48,    52,    54,    57,    61,
679       66,    68,    70,    72,    74,    78,    82,    86,    92,    95,
680      100,   101,   103,   105,   108,   110,   112,   117,   121,   125,
681      127,   132,   136,   140,   142,   145,   147,   150,   153,   156,
682      161,   165,   168,   171,   176,   180,   183,   187,   189,   193,
683      195,   197,   199,   201,   203,   206,   209,   211,   214,   217,
684      220,   223,   226,   229,   232,   235,   238,   241,   244,   247,
685      250,   252,   254,   256,   258,   260,   264,   268,   272,   274,
686      278,   282,   286,   288,   292,   296,   298,   302,   306,   308,
687      312,   316,   320,   322,   326,   330,   334,   336,   340,   344,
688      348,   352,   356,   360,   362,   366,   370,   374,   378,   382,
689      384,   388,   392,   396,   400,   404,   408,   410,   414,   418,
690      422,   426,   428,   432,   436,   440,   444,   446,   450,   454,
691      458,   462,   464,   468,   470,   474,   476,   480,   482,   486,
692      488,   492,   494,   498,   500,   504,   506,   510,   512,   516,
693      518,   522,   524,   528,   530,   534,   536,   540,   542,   546,
694      548,   552,   554,   560,   562,   568,   570,   576,   578,   582,
695      584,   588,   590,   594,   596,   598,   600,   602,   604,   606,
696      608,   610,   612,   614,   616,   618,   620,   624,   626,   630,
697      632,   636,   638,   640,   642,   644,   646,   648,   650,   652,
698      654,   656,   658,   660,   662,   664,   666,   668,   670,   673,
699      677,   681,   685,   687,   690,   694,   699,   701,   704,   708,
700      713,   717,   721,   723,   727,   729,   732,   735,   738,   740,
701      743,   746,   752,   760,   768,   776,   782,   792,   803,   811,
702      820,   830,   831,   833,   834,   836,   839,   842,   846,   850,
703      853,   856,   860,   864,   867,   870,   874,   878,   884,   890,
704      894,   900,   901,   903,   905,   908,   912,   917,   920,   924,
705      928,   932,   936,   941,   949,   959,   962,   965,   973,   982,
706      989,   997,  1005,  1014,  1016,  1020,  1021,  1023,  1024,  1026,
707     1028,  1031,  1033,  1035,  1037,  1039,  1041,  1043,  1045,  1049,
708     1053,  1057,  1065,  1074,  1076,  1080,  1082,  1085,  1089,  1094,
709     1096,  1098,  1100,  1102,  1106,  1110,  1114,  1120,  1123,  1128,
710     1129,  1131,  1133,  1136,  1138,  1140,  1145,  1149,  1153,  1155,
711     1160,  1164,  1168,  1170,  1173,  1175,  1178,  1181,  1184,  1189,
712     1193,  1196,  1199,  1204,  1208,  1211,  1215,  1217,  1221,  1223,
713     1225,  1227,  1229,  1231,  1234,  1237,  1239,  1242,  1245,  1248,
714     1251,  1254,  1257,  1260,  1263,  1266,  1269,  1272,  1275,  1278,
715     1280,  1282,  1284,  1286,  1288,  1292,  1296,  1300,  1302,  1306,
716     1310,  1314,  1316,  1320,  1324,  1326,  1330,  1334,  1336,  1340,
717     1344,  1348,  1350,  1354,  1358,  1362,  1364,  1368,  1372,  1376,
718     1380,  1384,  1388,  1390,  1394,  1398,  1402,  1406,  1410,  1412,
719     1416,  1420,  1424,  1428,  1432,  1436,  1438,  1442,  1446,  1450,
720     1454,  1456,  1460,  1464,  1468,  1472,  1474,  1478,  1482,  1486,
721     1490,  1492,  1496,  1498,  1502,  1504,  1508,  1510,  1514,  1516,
722     1520,  1522,  1526,  1528,  1532,  1534,  1538,  1540,  1544,  1546,
723     1550,  1552,  1556,  1558,  1562,  1564,  1568,  1570,  1574,  1576,
724     1580,  1582,  1588,  1590,  1596,  1598,  1604,  1606,  1610,  1612,
725     1616,  1618,  1622,  1624,  1626,  1628,  1630,  1632,  1634,  1636,
726     1638,  1640,  1642,  1644,  1646,  1648,  1652,  1654,  1658,  1660,
727     1664,  1666,  1668,  1670,  1672,  1674,  1676,  1678,  1680,  1682,
728     1684,  1686,  1688,  1690,  1692,  1694,  1696,  1698,  1701,  1705,
729     1709,  1713,  1715,  1718,  1722,  1727,  1729,  1732,  1736,  1741,
730     1745,  1749,  1751,  1755,  1757,  1760,  1763,  1766,  1768,  1771,
731     1774,  1780,  1788,  1796,  1804,  1810,  1820,  1831,  1839,  1848,
732     1858,  1859,  1861,  1862,  1864,  1867,  1870,  1874,  1878,  1881,
733     1884,  1888,  1892,  1895,  1898,  1902,  1906,  1912,  1918,  1922,
734     1928,  1929,  1931,  1933,  1936,  1940,  1945,  1948,  1952,  1956,
735     1960,  1964,  1969,  1977,  1987,  1990,  1993,  2001,  2010,  2017,
736     2025,  2033,  2042,  2044,  2048,  2049,  2051,  2053
737 };
738 
739 /* YYRHS -- A `-1'-separated list of the rules' RHS.  */
740 static const yytype_int16 yyrhs[] =
741 {
742      184,     0,    -1,     3,    -1,     4,    -1,     5,    -1,    61,
743       -1,    63,    -1,    66,    -1,    51,    -1,    62,    67,   143,
744       -1,    63,    67,   143,    -1,    61,    67,   143,    -1,    62,
745       62,    68,    69,    59,   183,    60,    -1,    62,    62,    68,
746      182,    69,    59,   183,    60,    -1,    90,    -1,    91,    70,
747       90,    -1,    93,    -1,    59,    60,    -1,    59,    91,    60,
748       -1,    59,    91,    70,    60,    -1,    19,    -1,    89,    -1,
749       94,    -1,    62,    -1,    68,   147,    69,    -1,    71,    96,
750       72,    -1,    71,    95,    72,    -1,    71,    95,    70,    96,
751       72,    -1,    96,   143,    -1,    95,    70,    96,   143,    -1,
752       -1,    97,    -1,    70,    -1,    97,    70,    -1,    92,    -1,
753      181,    -1,    98,    71,   147,    72,    -1,    98,    73,    62,
754       -1,    10,    98,   104,    -1,    93,    -1,    99,    71,   147,
755       72,    -1,    99,    73,    62,    -1,    10,    98,   104,    -1,
756       98,    -1,    10,   100,    -1,    99,    -1,    10,   100,    -1,
757       98,   104,    -1,   102,   104,    -1,   102,    71,   147,    72,
758       -1,   102,    73,    62,    -1,    99,   104,    -1,   103,   104,
759       -1,   103,    71,   147,    72,    -1,   103,    73,    62,    -1,
760       68,    69,    -1,    68,   105,    69,    -1,   143,    -1,   105,
761       70,   143,    -1,   100,    -1,   102,    -1,   101,    -1,   103,
762       -1,   106,    -1,   106,    43,    -1,   106,    44,    -1,   107,
763       -1,   107,    43,    -1,   107,    44,    -1,    17,   111,    -1,
764       16,   111,    -1,    24,   111,    -1,    43,   111,    -1,    64,
765      111,    -1,    44,   111,    -1,    65,   111,    -1,    74,   111,
766       -1,    75,   111,    -1,    76,   111,    -1,    77,   111,    -1,
767      108,    -1,   110,    -1,   109,    -1,   110,    -1,   111,    -1,
768      113,    78,   111,    -1,   113,    66,   111,    -1,   113,    79,
769      111,    -1,   112,    -1,   114,    78,   111,    -1,   114,    66,
770      111,    -1,   114,    79,   111,    -1,   113,    -1,   115,    74,
771      113,    -1,   115,    75,   113,    -1,   114,    -1,   116,    74,
772      113,    -1,   116,    75,   113,    -1,   115,    -1,   117,    45,
773      115,    -1,   117,    46,   115,    -1,   117,    47,   115,    -1,
774      116,    -1,   118,    45,   115,    -1,   118,    46,   115,    -1,
775      118,    47,   115,    -1,   117,    -1,   119,    80,   117,    -1,
776      119,    81,   117,    -1,   119,    39,   117,    -1,   119,    40,
777      117,    -1,   119,    23,   117,    -1,   119,    22,   117,    -1,
778      117,    -1,   120,    80,   117,    -1,   120,    81,   117,    -1,
779      120,    39,   117,    -1,   120,    40,   117,    -1,   120,    23,
780      117,    -1,   118,    -1,   121,    80,   117,    -1,   121,    81,
781      117,    -1,   121,    39,   117,    -1,   121,    40,   117,    -1,
782      121,    23,   117,    -1,   121,    22,   117,    -1,   119,    -1,
783      122,    35,   119,    -1,   122,    36,   119,    -1,   122,    37,
784      119,    -1,   122,    38,   119,    -1,   120,    -1,   123,    35,
785      120,    -1,   123,    36,   120,    -1,   123,    37,   120,    -1,
786      123,    38,   120,    -1,   121,    -1,   124,    35,   119,    -1,
787      124,    36,   119,    -1,   124,    37,   119,    -1,   124,    38,
788      119,    -1,   122,    -1,   125,    82,   122,    -1,   123,    -1,
789      126,    82,   123,    -1,   124,    -1,   127,    82,   122,    -1,
790      125,    -1,   128,    83,   125,    -1,   126,    -1,   129,    83,
791      126,    -1,   127,    -1,   130,    83,   125,    -1,   128,    -1,
792      131,    84,   128,    -1,   129,    -1,   132,    84,   129,    -1,
793      130,    -1,   133,    84,   128,    -1,   131,    -1,   134,    42,
794      131,    -1,   132,    -1,   135,    42,   132,    -1,   133,    -1,
795      136,    42,   131,    -1,   134,    -1,   137,    41,   134,    -1,
796      135,    -1,   138,    41,   135,    -1,   136,    -1,   139,    41,
797      134,    -1,   137,    -1,   137,    85,   143,    67,   143,    -1,
798      138,    -1,   138,    85,   144,    67,   144,    -1,   139,    -1,
799      139,    85,   143,    67,   143,    -1,   140,    -1,   106,   146,
800      143,    -1,   141,    -1,   106,   146,   144,    -1,   142,    -1,
801      107,   146,   143,    -1,    86,    -1,    48,    -1,    49,    -1,
802       50,    -1,    51,    -1,    52,    -1,    53,    -1,    54,    -1,
803       55,    -1,    57,    -1,    58,    -1,    56,    -1,   143,    -1,
804      147,    70,   143,    -1,   144,    -1,   148,    70,   144,    -1,
805      145,    -1,   149,    70,   143,    -1,   151,    -1,   152,    -1,
806      155,    -1,   180,    -1,   160,    -1,   161,    -1,   162,    -1,
807      163,    -1,   166,    -1,   167,    -1,   168,    -1,   169,    -1,
808      170,    -1,   176,    -1,   177,    -1,   178,    -1,   179,    -1,
809       59,    60,    -1,    59,   185,    60,    -1,    11,   153,    87,
810       -1,    11,   153,     1,    -1,    62,    -1,    62,   158,    -1,
811      153,    70,    62,    -1,   153,    70,    62,   158,    -1,    62,
812       -1,    62,   159,    -1,   154,    70,    62,    -1,   154,    70,
813       62,   159,    -1,    12,   156,    87,    -1,    12,   156,     1,
814       -1,   157,    -1,   156,    70,   157,    -1,    62,    -1,    62,
815      158,    -1,    86,   143,    -1,    86,   144,    -1,    87,    -1,
816      149,    87,    -1,   149,     1,    -1,    18,    68,   147,    69,
817      150,    -1,    18,    68,   147,    69,   150,    34,   150,    -1,
818       20,   150,    21,    68,   147,    69,    87,    -1,    20,   150,
819       21,    68,   147,    69,     1,    -1,    21,    68,   147,    69,
820      150,    -1,     9,    68,   165,    87,   164,    87,   164,    69,
821      150,    -1,     9,    68,    11,   154,    87,   164,    87,   164,
822       69,   150,    -1,     9,    68,   106,    22,   147,    69,   150,
823       -1,     9,    68,    11,    62,    22,   147,    69,   150,    -1,
824        9,    68,    11,    62,   159,    22,   147,    69,   150,    -1,
825       -1,   147,    -1,    -1,   148,    -1,    13,    87,    -1,    13,
826        1,    -1,    13,    62,    87,    -1,    13,    62,     1,    -1,
827        6,    87,    -1,     6,     1,    -1,     6,    62,    87,    -1,
828        6,    62,     1,    -1,    15,    87,    -1,    15,     1,    -1,
829       15,   147,    87,    -1,    15,   147,     1,    -1,    26,    68,
830      147,    69,   150,    -1,    25,    68,   147,    69,   171,    -1,
831       59,   172,    60,    -1,    59,   172,   175,   172,    60,    -1,
832       -1,   173,    -1,   174,    -1,   173,   174,    -1,     7,   147,
833       67,    -1,     7,   147,    67,   185,    -1,     8,    67,    -1,
834        8,    67,   185,    -1,    62,    67,   150,    -1,    28,   147,
835       87,    -1,    28,   147,     1,    -1,    29,   151,    31,   151,
836       -1,    29,   151,    30,    68,    62,    69,   151,    -1,    29,
837      151,    30,    68,    62,    69,   151,    31,   151,    -1,    32,
838       87,    -1,    32,     1,    -1,    14,    62,    68,    69,    59,
839      183,    60,    -1,    14,    62,    68,   182,    69,    59,   183,
840       60,    -1,    14,    68,    69,    59,   183,    60,    -1,    14,
841       68,   182,    69,    59,   183,    60,    -1,    14,    62,    68,
842       69,    59,   183,    60,    -1,    14,    62,    68,   182,    69,
843       59,   183,    60,    -1,    62,    -1,   182,    70,    62,    -1,
844       -1,   281,    -1,    -1,   185,    -1,   150,    -1,   185,   150,
845       -1,     3,    -1,     4,    -1,     5,    -1,    61,    -1,    63,
846       -1,    66,    -1,    51,    -1,    62,    67,   240,    -1,    63,
847       67,   240,    -1,    61,    67,   240,    -1,    62,    62,    68,
848       69,    59,   280,    60,    -1,    62,    62,    68,   279,    69,
849       59,   280,    60,    -1,   187,    -1,   188,    70,   187,    -1,
850      190,    -1,    59,    60,    -1,    59,   188,    60,    -1,    59,
851      188,    70,    60,    -1,    19,    -1,   186,    -1,   191,    -1,
852       62,    -1,    68,   244,    69,    -1,    71,   193,    72,    -1,
853       71,   192,    72,    -1,    71,   192,    70,   193,    72,    -1,
854      193,   240,    -1,   192,    70,   193,   240,    -1,    -1,   194,
855       -1,    70,    -1,   194,    70,    -1,   189,    -1,   278,    -1,
856      195,    71,   244,    72,    -1,   195,    73,    62,    -1,    10,
857      195,   201,    -1,   190,    -1,   196,    71,   244,    72,    -1,
858      196,    73,    62,    -1,    10,   195,   201,    -1,   195,    -1,
859       10,   197,    -1,   196,    -1,    10,   197,    -1,   195,   201,
860       -1,   199,   201,    -1,   199,    71,   244,    72,    -1,   199,
861       73,    62,    -1,   196,   201,    -1,   200,   201,    -1,   200,
862       71,   244,    72,    -1,   200,    73,    62,    -1,    68,    69,
863       -1,    68,   202,    69,    -1,   240,    -1,   202,    70,   240,
864       -1,   197,    -1,   199,    -1,   198,    -1,   200,    -1,   203,
865       -1,   203,    43,    -1,   203,    44,    -1,   204,    -1,   204,
866       43,    -1,   204,    44,    -1,    17,   208,    -1,    16,   208,
867       -1,    24,   208,    -1,    43,   208,    -1,    64,   208,    -1,
868       44,   208,    -1,    65,   208,    -1,    74,   208,    -1,    75,
869      208,    -1,    76,   208,    -1,    77,   208,    -1,   205,    -1,
870      207,    -1,   206,    -1,   207,    -1,   208,    -1,   210,    78,
871      208,    -1,   210,    66,   208,    -1,   210,    79,   208,    -1,
872      209,    -1,   211,    78,   208,    -1,   211,    66,   208,    -1,
873      211,    79,   208,    -1,   210,    -1,   212,    74,   210,    -1,
874      212,    75,   210,    -1,   211,    -1,   213,    74,   210,    -1,
875      213,    75,   210,    -1,   212,    -1,   214,    45,   212,    -1,
876      214,    46,   212,    -1,   214,    47,   212,    -1,   213,    -1,
877      215,    45,   212,    -1,   215,    46,   212,    -1,   215,    47,
878      212,    -1,   214,    -1,   216,    80,   214,    -1,   216,    81,
879      214,    -1,   216,    39,   214,    -1,   216,    40,   214,    -1,
880      216,    23,   214,    -1,   216,    22,   214,    -1,   214,    -1,
881      217,    80,   214,    -1,   217,    81,   214,    -1,   217,    39,
882      214,    -1,   217,    40,   214,    -1,   217,    23,   214,    -1,
883      215,    -1,   218,    80,   214,    -1,   218,    81,   214,    -1,
884      218,    39,   214,    -1,   218,    40,   214,    -1,   218,    23,
885      214,    -1,   218,    22,   214,    -1,   216,    -1,   219,    35,
886      216,    -1,   219,    36,   216,    -1,   219,    37,   216,    -1,
887      219,    38,   216,    -1,   217,    -1,   220,    35,   217,    -1,
888      220,    36,   217,    -1,   220,    37,   217,    -1,   220,    38,
889      217,    -1,   218,    -1,   221,    35,   216,    -1,   221,    36,
890      216,    -1,   221,    37,   216,    -1,   221,    38,   216,    -1,
891      219,    -1,   222,    82,   219,    -1,   220,    -1,   223,    82,
892      220,    -1,   221,    -1,   224,    82,   219,    -1,   222,    -1,
893      225,    83,   222,    -1,   223,    -1,   226,    83,   223,    -1,
894      224,    -1,   227,    83,   222,    -1,   225,    -1,   228,    84,
895      225,    -1,   226,    -1,   229,    84,   226,    -1,   227,    -1,
896      230,    84,   225,    -1,   228,    -1,   231,    42,   228,    -1,
897      229,    -1,   232,    42,   229,    -1,   230,    -1,   233,    42,
898      228,    -1,   231,    -1,   234,    41,   231,    -1,   232,    -1,
899      235,    41,   232,    -1,   233,    -1,   236,    41,   231,    -1,
900      234,    -1,   234,    85,   240,    67,   240,    -1,   235,    -1,
901      235,    85,   241,    67,   241,    -1,   236,    -1,   236,    85,
902      240,    67,   240,    -1,   237,    -1,   203,   243,   240,    -1,
903      238,    -1,   203,   243,   241,    -1,   239,    -1,   204,   243,
904      240,    -1,    86,    -1,    48,    -1,    49,    -1,    50,    -1,
905       51,    -1,    52,    -1,    53,    -1,    54,    -1,    55,    -1,
906       57,    -1,    58,    -1,    56,    -1,   240,    -1,   244,    70,
907      240,    -1,   241,    -1,   245,    70,   241,    -1,   242,    -1,
908      246,    70,   240,    -1,   248,    -1,   249,    -1,   252,    -1,
909      277,    -1,   257,    -1,   258,    -1,   259,    -1,   260,    -1,
910      263,    -1,   264,    -1,   265,    -1,   266,    -1,   267,    -1,
911      273,    -1,   274,    -1,   275,    -1,   276,    -1,    59,    60,
912       -1,    59,   281,    60,    -1,    11,   250,    87,    -1,    11,
913      250,     1,    -1,    62,    -1,    62,   255,    -1,   250,    70,
914       62,    -1,   250,    70,    62,   255,    -1,    62,    -1,    62,
915      256,    -1,   251,    70,    62,    -1,   251,    70,    62,   256,
916       -1,    12,   253,    87,    -1,    12,   253,     1,    -1,   254,
917       -1,   253,    70,   254,    -1,    62,    -1,    62,   255,    -1,
918       86,   240,    -1,    86,   241,    -1,    87,    -1,   246,    87,
919       -1,   246,     1,    -1,    18,    68,   244,    69,   247,    -1,
920       18,    68,   244,    69,   247,    34,   247,    -1,    20,   247,
921       21,    68,   244,    69,    87,    -1,    20,   247,    21,    68,
922      244,    69,     1,    -1,    21,    68,   244,    69,   247,    -1,
923        9,    68,   262,    87,   261,    87,   261,    69,   247,    -1,
924        9,    68,    11,   251,    87,   261,    87,   261,    69,   247,
925       -1,     9,    68,   203,    22,   244,    69,   247,    -1,     9,
926       68,    11,    62,    22,   244,    69,   247,    -1,     9,    68,
927       11,    62,   256,    22,   244,    69,   247,    -1,    -1,   244,
928       -1,    -1,   245,    -1,    13,    87,    -1,    13,     1,    -1,
929       13,    62,    87,    -1,    13,    62,     1,    -1,     6,    87,
930       -1,     6,     1,    -1,     6,    62,    87,    -1,     6,    62,
931        1,    -1,    15,    87,    -1,    15,     1,    -1,    15,   244,
932       87,    -1,    15,   244,     1,    -1,    26,    68,   244,    69,
933      247,    -1,    25,    68,   244,    69,   268,    -1,    59,   269,
934       60,    -1,    59,   269,   272,   269,    60,    -1,    -1,   270,
935       -1,   271,    -1,   270,   271,    -1,     7,   244,    67,    -1,
936        7,   244,    67,   281,    -1,     8,    67,    -1,     8,    67,
937      281,    -1,    62,    67,   247,    -1,    28,   244,    87,    -1,
938       28,   244,     1,    -1,    29,   248,    31,   248,    -1,    29,
939      248,    30,    68,    62,    69,   248,    -1,    29,   248,    30,
940       68,    62,    69,   248,    31,   248,    -1,    32,    87,    -1,
941       32,     1,    -1,    14,    62,    68,    69,    59,   280,    60,
942       -1,    14,    62,    68,   279,    69,    59,   280,    60,    -1,
943       14,    68,    69,    59,   280,    60,    -1,    14,    68,   279,
944       69,    59,   280,    60,    -1,    14,    62,    68,    69,    59,
945      280,    60,    -1,    14,    62,    68,   279,    69,    59,   280,
946       60,    -1,    62,    -1,   279,    70,    62,    -1,    -1,   281,
947       -1,   247,    -1,   281,   247,    -1
948 };
949 
950 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
951 static const yytype_uint16 yyrline[] =
952 {
953        0,   293,   293,   294,   295,   296,   297,   298,   309,   323,
954      324,   325,   326,   327,   339,   343,   350,   351,   352,   354,
955      358,   359,   360,   361,   362,   366,   367,   368,   372,   376,
956      384,   385,   389,   390,   394,   395,   396,   400,   404,   411,
957      412,   416,   420,   427,   428,   435,   436,   443,   444,   445,
958      449,   455,   456,   457,   461,   468,   469,   473,   477,   484,
959      485,   489,   490,   494,   495,   496,   500,   501,   502,   506,
960      507,   508,   509,   510,   511,   512,   513,   514,   515,   516,
961      519,   520,   524,   525,   529,   530,   531,   532,   536,   537,
962      539,   541,   546,   547,   548,   552,   553,   555,   560,   561,
963      562,   563,   567,   568,   569,   570,   574,   575,   576,   577,
964      578,   579,   582,   588,   589,   590,   591,   592,   593,   600,
965      601,   602,   603,   604,   605,   609,   616,   617,   618,   619,
966      620,   624,   625,   627,   629,   631,   636,   637,   639,   640,
967      642,   647,   648,   652,   653,   658,   659,   663,   664,   668,
968      669,   674,   675,   680,   681,   685,   686,   691,   692,   697,
969      698,   702,   703,   708,   709,   714,   715,   719,   720,   725,
970      726,   730,   731,   736,   737,   742,   743,   748,   749,   756,
971      757,   764,   765,   772,   773,   774,   775,   776,   777,   778,
972      779,   780,   781,   782,   783,   787,   788,   792,   793,   797,
973      798,   802,   803,   804,   805,   806,   807,   808,   809,   810,
974      811,   812,   813,   814,   815,   816,   817,   818,   822,   824,
975      829,   831,   837,   844,   853,   861,   874,   881,   890,   898,
976      911,   913,   919,   927,   939,   940,   944,   948,   952,   956,
977      958,   963,   966,   976,   978,   980,   982,   988,   995,  1004,
978     1010,  1021,  1022,  1026,  1027,  1031,  1035,  1039,  1043,  1050,
979     1053,  1056,  1059,  1065,  1068,  1071,  1074,  1080,  1086,  1092,
980     1093,  1102,  1103,  1107,  1113,  1123,  1124,  1128,  1129,  1133,
981     1139,  1143,  1150,  1156,  1162,  1172,  1174,  1179,  1180,  1191,
982     1192,  1199,  1200,  1210,  1213,  1219,  1220,  1224,  1225,  1230,
983     1237,  1248,  1249,  1250,  1251,  1252,  1253,  1254,  1258,  1259,
984     1260,  1261,  1262,  1266,  1267,  1271,  1272,  1273,  1275,  1279,
985     1280,  1281,  1282,  1283,  1287,  1288,  1289,  1293,  1294,  1297,
986     1299,  1303,  1304,  1308,  1309,  1310,  1311,  1312,  1316,  1317,
987     1318,  1319,  1323,  1324,  1328,  1329,  1333,  1334,  1335,  1336,
988     1340,  1341,  1342,  1343,  1347,  1348,  1352,  1353,  1357,  1358,
989     1362,  1363,  1367,  1368,  1369,  1373,  1374,  1375,  1379,  1380,
990     1381,  1382,  1383,  1384,  1385,  1386,  1387,  1388,  1389,  1392,
991     1393,  1397,  1398,  1402,  1403,  1404,  1405,  1409,  1410,  1411,
992     1412,  1416,  1417,  1418,  1422,  1423,  1424,  1428,  1429,  1430,
993     1431,  1435,  1436,  1437,  1438,  1442,  1443,  1444,  1445,  1446,
994     1447,  1448,  1452,  1453,  1454,  1455,  1456,  1457,  1461,  1462,
995     1463,  1464,  1465,  1466,  1467,  1471,  1472,  1473,  1474,  1475,
996     1479,  1480,  1481,  1482,  1483,  1487,  1488,  1489,  1490,  1491,
997     1495,  1496,  1500,  1501,  1505,  1506,  1510,  1511,  1515,  1516,
998     1520,  1521,  1525,  1526,  1530,  1531,  1535,  1536,  1540,  1541,
999     1545,  1546,  1550,  1551,  1555,  1556,  1560,  1561,  1565,  1566,
1000     1570,  1571,  1575,  1576,  1580,  1581,  1585,  1586,  1590,  1591,
1001     1595,  1596,  1600,  1601,  1602,  1603,  1604,  1605,  1606,  1607,
1002     1608,  1609,  1610,  1611,  1615,  1616,  1620,  1621,  1625,  1626,
1003     1630,  1631,  1632,  1633,  1634,  1635,  1636,  1637,  1638,  1639,
1004     1640,  1641,  1642,  1643,  1644,  1645,  1646,  1650,  1651,  1655,
1005     1656,  1660,  1661,  1662,  1663,  1667,  1668,  1669,  1670,  1674,
1006     1675,  1679,  1680,  1684,  1685,  1689,  1693,  1697,  1701,  1702,
1007     1706,  1707,  1711,  1712,  1713,  1714,  1715,  1716,  1717,  1718,
1008     1721,  1723,  1726,  1728,  1732,  1733,  1734,  1735,  1739,  1740,
1009     1741,  1742,  1746,  1747,  1748,  1749,  1753,  1757,  1761,  1762,
1010     1765,  1767,  1771,  1772,  1776,  1777,  1781,  1782,  1786,  1790,
1011     1791,  1795,  1796,  1797,  1801,  1802,  1806,  1807,  1811,  1812,
1012     1813,  1814,  1818,  1819,  1822,  1824,  1828,  1829
1013 };
1014 #endif
1015 
1016 #if YYDEBUG || YYERROR_VERBOSE || YYTOKEN_TABLE
1017 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
1018    First, the terminals, then, starting at YYNTOKENS, nonterminals.  */
1019 static const char *const yytname[] =
1020 {
1021   "$end", "error", "$undefined", "NULLTOKEN", "TRUETOKEN", "FALSETOKEN",
1022   "BREAK", "CASE", "DEFAULT", "FOR", "NEW", "VAR", "CONSTTOKEN",
1023   "CONTINUE", "FUNCTION", "RETURN", "VOIDTOKEN", "DELETETOKEN", "IF",
1024   "THISTOKEN", "DO", "WHILE", "INTOKEN", "INSTANCEOF", "TYPEOF", "SWITCH",
1025   "WITH", "RESERVED", "THROW", "TRY", "CATCH", "FINALLY", "DEBUGGER",
1026   "IF_WITHOUT_ELSE", "ELSE", "EQEQ", "NE", "STREQ", "STRNEQ", "LE", "GE",
1027   "OR", "AND", "PLUSPLUS", "MINUSMINUS", "LSHIFT", "RSHIFT", "URSHIFT",
1028   "PLUSEQUAL", "MINUSEQUAL", "MULTEQUAL", "DIVEQUAL", "LSHIFTEQUAL",
1029   "RSHIFTEQUAL", "URSHIFTEQUAL", "ANDEQUAL", "MODEQUAL", "XOREQUAL",
1030   "OREQUAL", "OPENBRACE", "CLOSEBRACE", "NUMBER", "IDENT", "STRING",
1031   "AUTOPLUSPLUS", "AUTOMINUSMINUS", "'/'", "':'", "'('", "')'", "','",
1032   "'['", "']'", "'.'", "'+'", "'-'", "'~'", "'!'", "'*'", "'%'", "'<'",
1033   "'>'", "'&'", "'^'", "'|'", "'?'", "'='", "';'", "$accept", "Literal",
1034   "Property", "PropertyList", "PrimaryExpr", "PrimaryExprNoBrace",
1035   "ArrayLiteral", "ElementList", "ElisionOpt", "Elision", "MemberExpr",
1036   "MemberExprNoBF", "NewExpr", "NewExprNoBF", "CallExpr", "CallExprNoBF",
1037   "Arguments", "ArgumentList", "LeftHandSideExpr", "LeftHandSideExprNoBF",
1038   "PostfixExpr", "PostfixExprNoBF", "UnaryExprCommon", "UnaryExpr",
1039   "UnaryExprNoBF", "MultiplicativeExpr", "MultiplicativeExprNoBF",
1040   "AdditiveExpr", "AdditiveExprNoBF", "ShiftExpr", "ShiftExprNoBF",
1041   "RelationalExpr", "RelationalExprNoIn", "RelationalExprNoBF",
1042   "EqualityExpr", "EqualityExprNoIn", "EqualityExprNoBF", "BitwiseANDExpr",
1043   "BitwiseANDExprNoIn", "BitwiseANDExprNoBF", "BitwiseXORExpr",
1044   "BitwiseXORExprNoIn", "BitwiseXORExprNoBF", "BitwiseORExpr",
1045   "BitwiseORExprNoIn", "BitwiseORExprNoBF", "LogicalANDExpr",
1046   "LogicalANDExprNoIn", "LogicalANDExprNoBF", "LogicalORExpr",
1047   "LogicalORExprNoIn", "LogicalORExprNoBF", "ConditionalExpr",
1048   "ConditionalExprNoIn", "ConditionalExprNoBF", "AssignmentExpr",
1049   "AssignmentExprNoIn", "AssignmentExprNoBF", "AssignmentOperator", "Expr",
1050   "ExprNoIn", "ExprNoBF", "Statement", "Block", "VariableStatement",
1051   "VariableDeclarationList", "VariableDeclarationListNoIn",
1052   "ConstStatement", "ConstDeclarationList", "ConstDeclaration",
1053   "Initializer", "InitializerNoIn", "EmptyStatement", "ExprStatement",
1054   "IfStatement", "IterationStatement", "ExprOpt", "ExprNoInOpt",
1055   "ContinueStatement", "BreakStatement", "ReturnStatement",
1056   "WithStatement", "SwitchStatement", "CaseBlock", "CaseClausesOpt",
1057   "CaseClauses", "CaseClause", "DefaultClause", "LabelledStatement",
1058   "ThrowStatement", "TryStatement", "DebuggerStatement",
1059   "FunctionDeclaration", "FunctionExpr", "FormalParameterList",
1060   "FunctionBody", "Program", "SourceElements", "Literal_NoNode",
1061   "Property_NoNode", "PropertyList_NoNode", "PrimaryExpr_NoNode",
1062   "PrimaryExprNoBrace_NoNode", "ArrayLiteral_NoNode", "ElementList_NoNode",
1063   "ElisionOpt_NoNode", "Elision_NoNode", "MemberExpr_NoNode",
1064   "MemberExprNoBF_NoNode", "NewExpr_NoNode", "NewExprNoBF_NoNode",
1065   "CallExpr_NoNode", "CallExprNoBF_NoNode", "Arguments_NoNode",
1066   "ArgumentList_NoNode", "LeftHandSideExpr_NoNode",
1067   "LeftHandSideExprNoBF_NoNode", "PostfixExpr_NoNode",
1068   "PostfixExprNoBF_NoNode", "UnaryExprCommon_NoNode", "UnaryExpr_NoNode",
1069   "UnaryExprNoBF_NoNode", "MultiplicativeExpr_NoNode",
1070   "MultiplicativeExprNoBF_NoNode", "AdditiveExpr_NoNode",
1071   "AdditiveExprNoBF_NoNode", "ShiftExpr_NoNode", "ShiftExprNoBF_NoNode",
1072   "RelationalExpr_NoNode", "RelationalExprNoIn_NoNode",
1073   "RelationalExprNoBF_NoNode", "EqualityExpr_NoNode",
1074   "EqualityExprNoIn_NoNode", "EqualityExprNoBF_NoNode",
1075   "BitwiseANDExpr_NoNode", "BitwiseANDExprNoIn_NoNode",
1076   "BitwiseANDExprNoBF_NoNode", "BitwiseXORExpr_NoNode",
1077   "BitwiseXORExprNoIn_NoNode", "BitwiseXORExprNoBF_NoNode",
1078   "BitwiseORExpr_NoNode", "BitwiseORExprNoIn_NoNode",
1079   "BitwiseORExprNoBF_NoNode", "LogicalANDExpr_NoNode",
1080   "LogicalANDExprNoIn_NoNode", "LogicalANDExprNoBF_NoNode",
1081   "LogicalORExpr_NoNode", "LogicalORExprNoIn_NoNode",
1082   "LogicalORExprNoBF_NoNode", "ConditionalExpr_NoNode",
1083   "ConditionalExprNoIn_NoNode", "ConditionalExprNoBF_NoNode",
1084   "AssignmentExpr_NoNode", "AssignmentExprNoIn_NoNode",
1085   "AssignmentExprNoBF_NoNode", "AssignmentOperator_NoNode", "Expr_NoNode",
1086   "ExprNoIn_NoNode", "ExprNoBF_NoNode", "Statement_NoNode", "Block_NoNode",
1087   "VariableStatement_NoNode", "VariableDeclarationList_NoNode",
1088   "VariableDeclarationListNoIn_NoNode", "ConstStatement_NoNode",
1089   "ConstDeclarationList_NoNode", "ConstDeclaration_NoNode",
1090   "Initializer_NoNode", "InitializerNoIn_NoNode", "EmptyStatement_NoNode",
1091   "ExprStatement_NoNode", "IfStatement_NoNode",
1092   "IterationStatement_NoNode", "ExprOpt_NoNode", "ExprNoInOpt_NoNode",
1093   "ContinueStatement_NoNode", "BreakStatement_NoNode",
1094   "ReturnStatement_NoNode", "WithStatement_NoNode",
1095   "SwitchStatement_NoNode", "CaseBlock_NoNode", "CaseClausesOpt_NoNode",
1096   "CaseClauses_NoNode", "CaseClause_NoNode", "DefaultClause_NoNode",
1097   "LabelledStatement_NoNode", "ThrowStatement_NoNode",
1098   "TryStatement_NoNode", "DebuggerStatement_NoNode",
1099   "FunctionDeclaration_NoNode", "FunctionExpr_NoNode",
1100   "FormalParameterList_NoNode", "FunctionBody_NoNode",
1101   "SourceElements_NoNode", 0
1102 };
1103 #endif
1104 
1105 # ifdef YYPRINT
1106 /* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
1107    token YYLEX-NUM.  */
1108 static const yytype_uint16 yytoknum[] =
1109 {
1110        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
1111      265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
1112      275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
1113      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
1114      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
1115      305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
1116      315,   316,   317,   318,   319,   320,    47,    58,    40,    41,
1117       44,    91,    93,    46,    43,    45,   126,    33,    42,    37,
1118       60,    62,    38,    94,   124,    63,    61,    59
1119 };
1120 # endif
1121 
1122 /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
1123 static const yytype_uint16 yyr1[] =
1124 {
1125        0,    88,    89,    89,    89,    89,    89,    89,    89,    90,
1126       90,    90,    90,    90,    91,    91,    92,    92,    92,    92,
1127       93,    93,    93,    93,    93,    94,    94,    94,    95,    95,
1128       96,    96,    97,    97,    98,    98,    98,    98,    98,    99,
1129       99,    99,    99,   100,   100,   101,   101,   102,   102,   102,
1130      102,   103,   103,   103,   103,   104,   104,   105,   105,   106,
1131      106,   107,   107,   108,   108,   108,   109,   109,   109,   110,
1132      110,   110,   110,   110,   110,   110,   110,   110,   110,   110,
1133      111,   111,   112,   112,   113,   113,   113,   113,   114,   114,
1134      114,   114,   115,   115,   115,   116,   116,   116,   117,   117,
1135      117,   117,   118,   118,   118,   118,   119,   119,   119,   119,
1136      119,   119,   119,   120,   120,   120,   120,   120,   120,   121,
1137      121,   121,   121,   121,   121,   121,   122,   122,   122,   122,
1138      122,   123,   123,   123,   123,   123,   124,   124,   124,   124,
1139      124,   125,   125,   126,   126,   127,   127,   128,   128,   129,
1140      129,   130,   130,   131,   131,   132,   132,   133,   133,   134,
1141      134,   135,   135,   136,   136,   137,   137,   138,   138,   139,
1142      139,   140,   140,   141,   141,   142,   142,   143,   143,   144,
1143      144,   145,   145,   146,   146,   146,   146,   146,   146,   146,
1144      146,   146,   146,   146,   146,   147,   147,   148,   148,   149,
1145      149,   150,   150,   150,   150,   150,   150,   150,   150,   150,
1146      150,   150,   150,   150,   150,   150,   150,   150,   151,   151,
1147      152,   152,   153,   153,   153,   153,   154,   154,   154,   154,
1148      155,   155,   156,   156,   157,   157,   158,   159,   160,   161,
1149      161,   162,   162,   163,   163,   163,   163,   163,   163,   163,
1150      163,   164,   164,   165,   165,   166,   166,   166,   166,   167,
1151      167,   167,   167,   168,   168,   168,   168,   169,   170,   171,
1152      171,   172,   172,   173,   173,   174,   174,   175,   175,   176,
1153      177,   177,   178,   178,   178,   179,   179,   180,   180,   181,
1154      181,   181,   181,   182,   182,   183,   183,   184,   184,   185,
1155      185,   186,   186,   186,   186,   186,   186,   186,   187,   187,
1156      187,   187,   187,   188,   188,   189,   189,   189,   189,   190,
1157      190,   190,   190,   190,   191,   191,   191,   192,   192,   193,
1158      193,   194,   194,   195,   195,   195,   195,   195,   196,   196,
1159      196,   196,   197,   197,   198,   198,   199,   199,   199,   199,
1160      200,   200,   200,   200,   201,   201,   202,   202,   203,   203,
1161      204,   204,   205,   205,   205,   206,   206,   206,   207,   207,
1162      207,   207,   207,   207,   207,   207,   207,   207,   207,   208,
1163      208,   209,   209,   210,   210,   210,   210,   211,   211,   211,
1164      211,   212,   212,   212,   213,   213,   213,   214,   214,   214,
1165      214,   215,   215,   215,   215,   216,   216,   216,   216,   216,
1166      216,   216,   217,   217,   217,   217,   217,   217,   218,   218,
1167      218,   218,   218,   218,   218,   219,   219,   219,   219,   219,
1168      220,   220,   220,   220,   220,   221,   221,   221,   221,   221,
1169      222,   222,   223,   223,   224,   224,   225,   225,   226,   226,
1170      227,   227,   228,   228,   229,   229,   230,   230,   231,   231,
1171      232,   232,   233,   233,   234,   234,   235,   235,   236,   236,
1172      237,   237,   238,   238,   239,   239,   240,   240,   241,   241,
1173      242,   242,   243,   243,   243,   243,   243,   243,   243,   243,
1174      243,   243,   243,   243,   244,   244,   245,   245,   246,   246,
1175      247,   247,   247,   247,   247,   247,   247,   247,   247,   247,
1176      247,   247,   247,   247,   247,   247,   247,   248,   248,   249,
1177      249,   250,   250,   250,   250,   251,   251,   251,   251,   252,
1178      252,   253,   253,   254,   254,   255,   256,   257,   258,   258,
1179      259,   259,   260,   260,   260,   260,   260,   260,   260,   260,
1180      261,   261,   262,   262,   263,   263,   263,   263,   264,   264,
1181      264,   264,   265,   265,   265,   265,   266,   267,   268,   268,
1182      269,   269,   270,   270,   271,   271,   272,   272,   273,   274,
1183      274,   275,   275,   275,   276,   276,   277,   277,   278,   278,
1184      278,   278,   279,   279,   280,   280,   281,   281
1185 };
1186 
1187 /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
1188 static const yytype_uint8 yyr2[] =
1189 {
1190        0,     2,     1,     1,     1,     1,     1,     1,     1,     3,
1191        3,     3,     7,     8,     1,     3,     1,     2,     3,     4,
1192        1,     1,     1,     1,     3,     3,     3,     5,     2,     4,
1193        0,     1,     1,     2,     1,     1,     4,     3,     3,     1,
1194        4,     3,     3,     1,     2,     1,     2,     2,     2,     4,
1195        3,     2,     2,     4,     3,     2,     3,     1,     3,     1,
1196        1,     1,     1,     1,     2,     2,     1,     2,     2,     2,
1197        2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
1198        1,     1,     1,     1,     1,     3,     3,     3,     1,     3,
1199        3,     3,     1,     3,     3,     1,     3,     3,     1,     3,
1200        3,     3,     1,     3,     3,     3,     1,     3,     3,     3,
1201        3,     3,     3,     1,     3,     3,     3,     3,     3,     1,
1202        3,     3,     3,     3,     3,     3,     1,     3,     3,     3,
1203        3,     1,     3,     3,     3,     3,     1,     3,     3,     3,
1204        3,     1,     3,     1,     3,     1,     3,     1,     3,     1,
1205        3,     1,     3,     1,     3,     1,     3,     1,     3,     1,
1206        3,     1,     3,     1,     3,     1,     3,     1,     3,     1,
1207        3,     1,     5,     1,     5,     1,     5,     1,     3,     1,
1208        3,     1,     3,     1,     1,     1,     1,     1,     1,     1,
1209        1,     1,     1,     1,     1,     1,     3,     1,     3,     1,
1210        3,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1211        1,     1,     1,     1,     1,     1,     1,     1,     2,     3,
1212        3,     3,     1,     2,     3,     4,     1,     2,     3,     4,
1213        3,     3,     1,     3,     1,     2,     2,     2,     1,     2,
1214        2,     5,     7,     7,     7,     5,     9,    10,     7,     8,
1215        9,     0,     1,     0,     1,     2,     2,     3,     3,     2,
1216        2,     3,     3,     2,     2,     3,     3,     5,     5,     3,
1217        5,     0,     1,     1,     2,     3,     4,     2,     3,     3,
1218        3,     3,     4,     7,     9,     2,     2,     7,     8,     6,
1219        7,     7,     8,     1,     3,     0,     1,     0,     1,     1,
1220        2,     1,     1,     1,     1,     1,     1,     1,     3,     3,
1221        3,     7,     8,     1,     3,     1,     2,     3,     4,     1,
1222        1,     1,     1,     3,     3,     3,     5,     2,     4,     0,
1223        1,     1,     2,     1,     1,     4,     3,     3,     1,     4,
1224        3,     3,     1,     2,     1,     2,     2,     2,     4,     3,
1225        2,     2,     4,     3,     2,     3,     1,     3,     1,     1,
1226        1,     1,     1,     2,     2,     1,     2,     2,     2,     2,
1227        2,     2,     2,     2,     2,     2,     2,     2,     2,     1,
1228        1,     1,     1,     1,     3,     3,     3,     1,     3,     3,
1229        3,     1,     3,     3,     1,     3,     3,     1,     3,     3,
1230        3,     1,     3,     3,     3,     1,     3,     3,     3,     3,
1231        3,     3,     1,     3,     3,     3,     3,     3,     1,     3,
1232        3,     3,     3,     3,     3,     1,     3,     3,     3,     3,
1233        1,     3,     3,     3,     3,     1,     3,     3,     3,     3,
1234        1,     3,     1,     3,     1,     3,     1,     3,     1,     3,
1235        1,     3,     1,     3,     1,     3,     1,     3,     1,     3,
1236        1,     3,     1,     3,     1,     3,     1,     3,     1,     3,
1237        1,     5,     1,     5,     1,     5,     1,     3,     1,     3,
1238        1,     3,     1,     1,     1,     1,     1,     1,     1,     1,
1239        1,     1,     1,     1,     1,     3,     1,     3,     1,     3,
1240        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
1241        1,     1,     1,     1,     1,     1,     1,     2,     3,     3,
1242        3,     1,     2,     3,     4,     1,     2,     3,     4,     3,
1243        3,     1,     3,     1,     2,     2,     2,     1,     2,     2,
1244        5,     7,     7,     7,     5,     9,    10,     7,     8,     9,
1245        0,     1,     0,     1,     2,     2,     3,     3,     2,     2,
1246        3,     3,     2,     2,     3,     3,     5,     5,     3,     5,
1247        0,     1,     1,     2,     3,     4,     2,     3,     3,     3,
1248        3,     4,     7,     9,     2,     2,     7,     8,     6,     7,
1249        7,     8,     1,     3,     0,     1,     1,     2
1250 };
1251 
1252 /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
1253    STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
1254    means the default is an error.  */
1255 static const yytype_uint16 yydefact[] =
1256 {
1257      297,     2,     3,     4,     0,     0,     0,     0,     0,     0,
1258        0,     0,     0,     0,     0,    20,     0,     0,     0,     0,
1259        0,     0,     0,     0,     0,     0,     8,     0,     5,    23,
1260        6,     0,     0,     7,     0,    30,     0,     0,     0,     0,
1261      238,    21,    39,    22,    45,    61,    62,    66,    82,    83,
1262       88,    95,   102,   119,   136,   145,   151,   157,   163,   169,
1263      175,   181,   199,     0,   299,   201,   202,   203,   205,   206,
1264      207,   208,   209,   210,   211,   212,   213,   214,   215,   216,
1265      217,   204,     0,   298,   260,     0,   259,   253,     0,     0,
1266        0,    23,    34,    16,    43,    46,    35,   222,     0,   234,
1267        0,   232,   256,     0,   255,     0,   264,   263,    43,    59,
1268       60,    63,    80,    81,    84,    92,    98,   106,   126,   141,
1269      147,   153,   159,   165,   171,   177,   195,     0,    63,    70,
1270       69,     0,     0,     0,    71,     0,     0,     0,     0,   286,
1271      285,    72,    74,   218,     0,     0,    73,    75,     0,    32,
1272        0,     0,    31,    76,    77,    78,    79,     0,     0,     0,
1273       51,     0,     0,    52,    67,    68,   184,   185,   186,   187,
1274      188,   189,   190,   191,   194,   192,   193,   183,     0,     0,
1275        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1276        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1277        0,     0,     0,   240,     0,   239,     1,   300,   262,   261,
1278        0,    63,   113,   131,   143,   149,   155,   161,   167,   173,
1279      179,   197,   254,     0,    43,    44,     0,     0,    17,     0,
1280        0,     0,    14,     0,     0,     0,    42,     0,   223,   221,
1281        0,   220,   235,   231,     0,   230,   258,   257,     0,    47,
1282        0,     0,    48,    64,    65,     0,     0,     0,     0,     0,
1283        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1284        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1285      266,     0,   265,     0,     0,     0,     0,     0,   281,   280,
1286        0,     0,   219,   279,    24,    30,    26,    25,    28,    33,
1287       55,     0,    57,     0,    41,     0,    54,   182,    90,    89,
1288       91,    96,    97,   103,   104,   105,   125,   124,   122,   123,
1289      120,   121,   137,   138,   139,   140,   146,   152,   158,   164,
1290      170,     0,   200,   226,     0,     0,     0,     0,     0,     0,
1291        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1292        0,     0,     0,   251,    38,     0,   293,     0,     0,     0,
1293        0,     0,     0,    18,     0,     0,    37,   236,   224,   233,
1294        0,     0,     0,    50,   178,    86,    85,    87,    93,    94,
1295       99,   100,   101,   112,   111,   109,   110,   107,   108,   127,
1296      128,   129,   130,   142,   148,   154,   160,   166,     0,   196,
1297        0,     0,     0,     0,     0,     0,   282,     0,    56,     0,
1298       40,    53,     0,     0,     0,   227,     0,   251,     0,    63,
1299      180,   118,   116,   117,   114,   115,   132,   133,   134,   135,
1300      144,   150,   156,   162,   168,     0,   198,   252,     0,     0,
1301        0,   295,     0,     0,    11,     0,     9,    10,    19,    15,
1302       36,   225,   295,     0,    49,     0,   241,     0,   245,   271,
1303      268,   267,     0,    27,    29,    58,   176,     0,   237,     0,
1304      228,     0,     0,     0,   251,   295,     0,   301,   302,   303,
1305        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1306        0,   319,     0,     0,     0,     0,     0,     0,     0,     0,
1307        0,     0,   307,     0,   304,   322,   305,     0,     0,   306,
1308        0,   329,     0,     0,     0,     0,   537,     0,   320,   338,
1309      321,   344,   360,   361,   365,   381,   382,   387,   394,   401,
1310      418,   435,   444,   450,   456,   462,   468,   474,   480,   498,
1311        0,   596,   500,   501,   502,   504,   505,   506,   507,   508,
1312      509,   510,   511,   512,   513,   514,   515,   516,   503,   296,
1313      295,   294,     0,     0,     0,   295,   172,     0,     0,     0,
1314        0,   272,   273,     0,     0,     0,   229,   251,   248,   174,
1315        0,     0,   295,   559,     0,   558,   552,     0,     0,     0,
1316      322,   333,   315,   342,   345,   334,   521,     0,   533,     0,
1317      531,   555,     0,   554,     0,   563,   562,   342,   358,   359,
1318      362,   379,   380,   383,   391,   397,   405,   425,   440,   446,
1319      452,   458,   464,   470,   476,   494,     0,   362,   369,   368,
1320        0,     0,     0,   370,     0,     0,     0,     0,   585,   584,
1321      371,   373,   517,     0,     0,   372,   374,     0,   331,     0,
1322        0,   330,   375,   376,   377,   378,   289,     0,     0,     0,
1323      350,     0,     0,   351,   366,   367,   483,   484,   485,   486,
1324      487,   488,   489,   490,   493,   491,   492,   482,     0,     0,
1325        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1326        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1327        0,     0,     0,   539,     0,   538,   597,     0,   295,     0,
1328      287,     0,   242,   244,   243,     0,     0,   269,   271,   274,
1329      283,   249,     0,     0,     0,   291,     0,   561,   560,     0,
1330      362,   412,   430,   442,   448,   454,   460,   466,   472,   478,
1331      496,   553,     0,   342,   343,     0,     0,   316,     0,     0,
1332        0,   313,     0,     0,     0,   341,     0,   522,   520,     0,
1333      519,   534,   530,     0,   529,   557,   556,     0,   346,     0,
1334        0,   347,   363,   364,     0,     0,     0,     0,     0,     0,
1335        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1336        0,     0,     0,     0,     0,     0,     0,     0,     0,   565,
1337        0,   564,     0,     0,     0,     0,     0,   580,   579,     0,
1338        0,   518,   578,   323,   329,   325,   324,   327,   332,   354,
1339        0,   356,     0,   340,     0,   353,   481,   389,   388,   390,
1340      395,   396,   402,   403,   404,   424,   423,   421,   422,   419,
1341      420,   436,   437,   438,   439,   445,   451,   457,   463,   469,
1342        0,   499,   290,     0,   295,   288,   275,   277,     0,     0,
1343      250,     0,   246,   292,   525,     0,     0,     0,     0,     0,
1344        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1345        0,     0,     0,     0,   550,   337,     0,   592,     0,     0,
1346        0,     0,     0,     0,   317,     0,     0,   336,   535,   523,
1347      532,     0,     0,     0,   349,   477,   385,   384,   386,   392,
1348      393,   398,   399,   400,   411,   410,   408,   409,   406,   407,
1349      426,   427,   428,   429,   441,   447,   453,   459,   465,     0,
1350      495,     0,     0,     0,     0,     0,     0,   581,     0,   355,
1351        0,   339,   352,     0,    12,     0,   276,   278,   270,   284,
1352      247,     0,     0,   526,     0,   550,     0,   362,   479,   417,
1353      415,   416,   413,   414,   431,   432,   433,   434,   443,   449,
1354      455,   461,   467,     0,   497,   551,     0,     0,     0,   594,
1355        0,     0,   310,     0,   308,   309,   318,   314,   335,   524,
1356      594,     0,   348,     0,   540,     0,   544,   570,   567,   566,
1357        0,   326,   328,   357,   475,    13,     0,   536,     0,   527,
1358        0,     0,     0,   550,   594,     0,     0,   595,   594,   593,
1359        0,     0,     0,   594,   471,     0,     0,     0,     0,   571,
1360      572,     0,     0,     0,   528,   550,   547,   473,     0,     0,
1361      594,   588,     0,   594,     0,   586,     0,   541,   543,   542,
1362        0,     0,   568,   570,   573,   582,   548,     0,     0,     0,
1363      590,     0,   589,     0,   594,   587,   574,   576,     0,     0,
1364      549,     0,   545,   591,   311,     0,   575,   577,   569,   583,
1365      546,   312
1366 };
1367 
1368 /* YYDEFGOTO[NTERM-NUM].  */
1369 static const yytype_int16 yydefgoto[] =
1370 {
1371       -1,    41,   232,   233,    92,    93,    43,   150,   151,   152,
1372      108,    44,   109,    45,   110,    46,   160,   301,   128,    47,
1373      112,    48,   113,   114,    50,   115,    51,   116,    52,   117,
1374       53,   118,   213,    54,   119,   214,    55,   120,   215,    56,
1375      121,   216,    57,   122,   217,    58,   123,   218,    59,   124,
1376      219,    60,   125,   220,    61,   126,   221,    62,   336,   437,
1377      222,    63,    64,    65,    66,    98,   334,    67,   100,   101,
1378      238,   415,    68,    69,    70,    71,   438,   223,    72,    73,
1379       74,    75,    76,   460,   570,   571,   572,   718,    77,    78,
1380       79,    80,    81,    96,   358,   517,    82,    83,   518,   751,
1381      752,   591,   592,   520,   649,   650,   651,   607,   521,   608,
1382      522,   609,   523,   660,   820,   627,   524,   611,   525,   612,
1383      613,   527,   614,   528,   615,   529,   616,   530,   617,   732,
1384      531,   618,   733,   532,   619,   734,   533,   620,   735,   534,
1385      621,   736,   535,   622,   737,   536,   623,   738,   537,   624,
1386      739,   538,   625,   740,   539,   867,   975,   741,   540,   541,
1387      542,   543,   597,   865,   544,   599,   600,   757,   953,   545,
1388      546,   547,   548,   976,   742,   549,   550,   551,   552,   553,
1389      998,  1028,  1029,  1030,  1053,   554,   555,   556,   557,   558,
1390      595,   889,  1016,   559
1391 };
1392 
1393 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
1394    STATE-NUM.  */
1395 #define YYPACT_NINF -941
1396 static const yytype_int16 yypact[] =
1397 {
1398     1516,  -941,  -941,  -941,    44,    -2,   839,    26,   178,    73,
1399      192,   954,  2114,  2114,   189,  -941,  1516,   207,  2114,   245,
1400      275,  2114,   226,    47,  2114,  2114,  -941,  1200,  -941,   280,
1401     -941,  2114,  2114,  -941,  2114,    20,  2114,  2114,  2114,  2114,
1402     -941,  -941,  -941,  -941,   350,  -941,   361,  2201,  -941,  -941,
1403     -941,     6,   -21,   437,   446,   264,   269,   315,   306,   364,
1404        9,  -941,  -941,    69,  -941,  -941,  -941,  -941,  -941,  -941,
1405     -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,
1406     -941,  -941,   417,  1516,  -941,    88,  -941,  1670,   839,    25,
1407      435,  -941,  -941,  -941,   390,  -941,  -941,   338,    96,   338,
1408      151,  -941,  -941,    90,  -941,   365,  -941,  -941,   390,  -941,
1409      394,  2224,  -941,  -941,  -941,   215,   255,   483,   509,   504,
1410      374,   377,   380,   424,    14,  -941,  -941,   163,   445,  -941,
1411     -941,  2114,   452,  2114,  -941,  2114,  2114,   164,   486,  -941,
1412     -941,  -941,  -941,  -941,  1279,  1516,  -941,  -941,   495,  -941,
1413      311,  1706,   400,  -941,  -941,  -941,  -941,  1781,  2114,   418,
1414     -941,  2114,   432,  -941,  -941,  -941,  -941,  -941,  -941,  -941,
1415     -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  2114,  2114,
1416     2114,  2114,  2114,  2114,  2114,  2114,  2114,  2114,  2114,  2114,
1417     2114,  2114,  2114,  2114,  2114,  2114,  2114,  2114,  2114,  2114,
1418     2114,  2114,  2114,  -941,  2114,  -941,  -941,  -941,  -941,  -941,
1419      442,   737,   483,   355,   583,   428,   440,   453,   491,    17,
1420     -941,  -941,   481,   469,   390,  -941,   505,   187,  -941,   513,
1421       -5,   521,  -941,   177,  2114,   539,  -941,  2114,  -941,  -941,
1422      545,  -941,  -941,  -941,   178,  -941,  -941,  -941,   236,  -941,
1423     2114,   547,  -941,  -941,  -941,  2114,  2114,  2114,  2114,  2114,
1424     2114,  2114,  2114,  2114,  2114,  2114,  2114,  2114,  2114,  2114,
1425     2114,  2114,  2114,  2114,  2114,  2114,  2114,  2114,  2114,  2114,
1426     -941,  2114,  -941,   499,   548,   559,   582,   617,  -941,  -941,
1427      556,   226,  -941,  -941,  -941,    20,  -941,  -941,  -941,  -941,
1428     -941,   628,  -941,   314,  -941,   329,  -941,  -941,  -941,  -941,
1429     -941,   215,   215,   255,   255,   255,   483,   483,   483,   483,
1430      483,   483,   509,   509,   509,   509,   504,   374,   377,   380,
1431      424,   546,  -941,    29,   -11,  2114,  2114,  2114,  2114,  2114,
1432     2114,  2114,  2114,  2114,  2114,  2114,  2114,  2114,  2114,  2114,
1433     2114,  2114,  2114,  2114,  -941,   256,  -941,   567,   632,  2114,
1434      563,  2114,  2114,  -941,   586,   358,  -941,  -941,   338,  -941,
1435      574,   635,   436,  -941,  -941,  -941,  -941,  -941,   215,   215,
1436      255,   255,   255,   483,   483,   483,   483,   483,   483,   509,
1437      509,   509,   509,   504,   374,   377,   380,   424,   571,  -941,
1438     1516,  2114,  1516,   584,  1516,   591,  -941,  1817,  -941,  2114,
1439     -941,  -941,  2114,  2114,  2114,   656,   598,  2114,   648,  2224,
1440     -941,   483,   483,   483,   483,   483,   355,   355,   355,   355,
1441      583,   428,   440,   453,   491,   639,  -941,   614,   608,   649,
1442      662,  1595,   651,   650,  -941,   283,  -941,  -941,  -941,  -941,
1443     -941,  -941,  1595,   660,  -941,  2114,   681,   670,  -941,   716,
1444     -941,  -941,   657,  -941,  -941,  -941,  -941,   680,  -941,  2114,
1445      647,   654,  1516,  2114,  2114,  1595,   677,  -941,  -941,  -941,
1446      141,   688,  1122,   707,   712,   179,   717,  1087,  2150,  2150,
1447      728,  -941,  1595,   730,  2150,   732,   743,  2150,   754,    91,
1448     2150,  2150,  -941,  1358,  -941,   755,  -941,  2150,  2150,  -941,
1449     2150,   714,  2150,  2150,  2150,  2150,  -941,   756,  -941,  -941,
1450     -941,   403,  -941,   434,  2240,  -941,  -941,  -941,   257,   581,
1451      498,   619,   630,   747,   769,   753,   828,    23,  -941,  -941,
1452      185,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,
1453     -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  1595,
1454     1595,  -941,   819,   685,   821,  1595,  -941,  1516,   171,  2114,
1455      219,   716,  -941,   226,  1516,   692,  -941,  2114,  -941,  -941,
1456      810,   822,  1595,  -941,   183,  -941,  1892,  1122,   305,   609,
1457     -941,  -941,  -941,   441,  -941,  -941,   797,   195,   797,   203,
1458     -941,  -941,   197,  -941,   816,  -941,  -941,   441,  -941,   447,
1459     2263,  -941,  -941,  -941,   262,   698,   515,   640,   638,   812,
1460      802,   811,   845,    28,  -941,  -941,   208,   739,  -941,  -941,
1461     2150,   868,  2150,  -941,  2150,  2150,   216,   777,  -941,  -941,
1462     -941,  -941,  -941,  1437,  1595,  -941,  -941,   740,  -941,   449,
1463     1928,   827,  -941,  -941,  -941,  -941,  -941,  2003,  2150,   837,
1464     -941,  2150,   841,  -941,  -941,  -941,  -941,  -941,  -941,  -941,
1465     -941,  -941,  -941,  -941,  -941,  -941,  -941,  -941,  2150,  2150,
1466     2150,  2150,  2150,  2150,  2150,  2150,  2150,  2150,  2150,  2150,
1467     2150,  2150,  2150,  2150,  2150,  2150,  2150,  2150,  2150,  2150,
1468     2150,  2150,  2150,  -941,  2150,  -941,  -941,   844,  1595,   847,
1469     -941,   848,  -941,  -941,  -941,     8,   842,  -941,   716,  -941,
1470      880,  -941,  1516,   849,  1516,  -941,   859,  -941,  -941,   860,
1471     2185,   515,   357,   655,   843,   838,   840,   884,   150,  -941,
1472     -941,   857,   846,   441,  -941,   861,   299,  -941,   863,   181,
1473      870,  -941,   284,  2150,   866,  -941,  2150,  -941,  -941,   873,
1474     -941,  -941,  -941,   712,  -941,  -941,  -941,   301,  -941,  2150,
1475      876,  -941,  -941,  -941,  2150,  2150,  2150,  2150,  2150,  2150,
1476     2150,  2150,  2150,  2150,  2150,  2150,  2150,  2150,  2150,  2150,
1477     2150,  2150,  2150,  2150,  2150,  2150,  2150,  2150,  2150,  -941,
1478     2150,  -941,   749,   871,   751,   757,   766,  -941,  -941,   872,
1479      754,  -941,  -941,  -941,   714,  -941,  -941,  -941,  -941,  -941,
1480      778,  -941,   464,  -941,   511,  -941,  -941,  -941,  -941,  -941,
1481      262,   262,   698,   698,   698,   515,   515,   515,   515,   515,
1482      515,   640,   640,   640,   640,   638,   812,   802,   811,   845,
1483      878,  -941,  -941,   891,  1595,  -941,  1516,  1516,   894,   226,
1484     -941,  1516,  -941,  -941,    39,    -7,  2150,  2150,  2150,  2150,
1485     2150,  2150,  2150,  2150,  2150,  2150,  2150,  2150,  2150,  2150,
1486     2150,  2150,  2150,  2150,  2150,  -941,   307,  -941,   897,   781,
1487     2150,   892,  2150,  2150,  -941,   683,   522,  -941,  -941,   797,
1488     -941,   902,   785,   525,  -941,  -941,  -941,  -941,  -941,   262,
1489      262,   698,   698,   698,   515,   515,   515,   515,   515,   515,
1490      640,   640,   640,   640,   638,   812,   802,   811,   845,   895,
1491     -941,  1595,  2150,  1595,   904,  1595,   907,  -941,  2039,  -941,
1492     2150,  -941,  -941,  2150,  -941,   906,  1516,  1516,  -941,  -941,
1493     -941,  2150,  2150,   950,   912,  2150,   793,  2263,  -941,   515,
1494      515,   515,   515,   515,   357,   357,   357,   357,   655,   843,
1495      838,   840,   884,   908,  -941,   909,   889,   918,   796,  1595,
1496      921,   919,  -941,   313,  -941,  -941,  -941,  -941,  -941,  -941,
1497     1595,   923,  -941,  2150,   949,   798,  -941,   977,  -941,  -941,
1498      916,  -941,  -941,  -941,  -941,  -941,   803,  -941,  2150,   900,
1499      901,  1595,  2150,  2150,  1595,   928,   935,  1595,  1595,  -941,
1500      937,   805,   939,  1595,  -941,  1595,   217,  2150,   237,   977,
1501     -941,   754,  1595,   807,  -941,  2150,  -941,  -941,   931,   941,
1502     1595,  -941,   942,  1595,   944,  -941,   946,  -941,  -941,  -941,
1503       37,   940,  -941,   977,  -941,   973,  -941,  1595,   943,  1595,
1504     -941,   948,  -941,   951,  1595,  -941,  1595,  1595,   961,   754,
1505     -941,  1595,  -941,  -941,  -941,   963,  1595,  1595,  -941,  -941,
1506     -941,  -941
1507 };
1508 
1509 /* YYPGOTO[NTERM-NUM].  */
1510 static const yytype_int16 yypgoto[] =
1511 {
1512     -941,  -941,   645,  -941,  -941,     0,  -941,  -941,   715,  -941,
1513       22,  -941,   186,  -941,  -941,  -941,   -29,  -941,   479,  -941,
1514     -941,  -941,     3,   169,  -941,   105,  -941,   230,  -941,   725,
1515     -941,   138,   423,  -941,  -174,   668,  -941,    31,   679,  -941,
1516       40,   676,  -941,    42,   678,  -941,    68,   682,  -941,  -941,
1517     -941,  -941,  -941,  -941,  -941,   -35,  -305,  -941,   172,    18,
1518     -941,  -941,   -15,   -20,  -941,  -941,  -941,  -941,  -941,   791,
1519      -91,   566,  -941,  -941,  -941,  -941,  -407,  -941,  -941,  -941,
1520     -941,  -941,  -941,  -941,   319,  -941,   471,  -941,  -941,  -941,
1521     -941,  -941,  -941,  -941,  -235,  -441,  -941,   -23,  -941,   148,
1522     -941,  -941,  -432,  -941,  -941,   231,  -941,  -450,  -941,  -449,
1523     -941,  -941,  -941,  -511,  -941,   167,  -941,  -941,  -941,  -329,
1524      263,  -941,  -661,  -941,  -460,  -941,  -428,  -941,  -480,   -70,
1525     -941,  -679,   170,  -941,  -673,   166,  -941,  -663,   173,  -941,
1526     -660,   174,  -941,  -657,   165,  -941,  -941,  -941,  -941,  -941,
1527     -941,  -941,  -601,  -841,  -941,  -302,  -473,  -941,  -941,  -454,
1528     -493,  -941,  -941,  -941,  -941,  -941,   290,  -592,    46,  -941,
1529     -941,  -941,  -941,  -940,  -941,  -941,  -941,  -941,  -941,  -941,
1530     -941,     5,  -941,    49,  -941,  -941,  -941,  -941,  -941,  -941,
1531     -941,  -760,  -652,  -468
1532 };
1533 
1534 /* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
1535    positive, shift that token.  If negative, reduce the rule which
1536    number is the opposite.  If zero, do what YYDEFACT says.
1537    If YYTABLE_NINF, syntax error.  */
1538 #define YYTABLE_NINF -1
1539 static const yytype_uint16 yytable[] =
1540 {
1541       42,   132,   138,    49,   144,   637,   761,   902,   242,   519,
1542      471,   564,   663,   371,   626,  1010,    42,   163,   845,    49,
1543      519,   830,   831,   326,   636,   846,   958,    42,    94,   127,
1544       49,   420,   593,   594,   581,   643,   847,   647,   631,   137,
1545      848,   973,   974,   519,   849,    84,   435,   436,   139,   817,
1546      201,   413,   148,   182,   183,   278,   821,   360,   350,   416,
1547      519,   951,   361,   954,   701,   236,    87,   580,   207,   797,
1548      203,   519,   179,  1038,   102,   856,   417,   826,   281,   249,
1549      955,   252,   755,    42,   180,   181,    49,   226,    97,   208,
1550      149,   246,   638,   227,   202,  1058,   768,   239,   771,   279,
1551      393,   850,   351,   851,  1066,   706,    85,   800,   702,   468,
1552      224,  1007,   526,   798,   924,   414,   298,   909,   910,   707,
1553      440,   925,   302,   526,   711,   952,   978,   519,   519,   207,
1554      293,    86,   926,   519,   140,   103,   927,   743,   744,   204,
1555      928,   726,   583,   307,    42,    42,   526,    49,    49,   283,
1556      519,   285,   243,   286,   287,   898,   205,   802,   731,   804,
1557      104,   805,   806,   526,   280,   288,   240,   331,   579,   332,
1558      723,  1037,   713,   905,   526,   209,   303,   247,   639,   305,
1559      601,   129,   130,   241,   727,   822,   703,   134,   824,   706,
1560      812,   881,    95,   141,   142,   354,   758,   929,   765,   930,
1561      146,   147,   367,   584,   762,   153,   154,   155,   156,   799,
1562      563,   519,   519,   841,   842,   843,   844,   807,  1048,   178,
1563      374,   244,   678,  1021,   832,   833,   834,   716,   585,   327,
1564      526,   526,   885,   281,   281,   882,   526,   363,   245,   328,
1565       99,   602,   329,   891,   398,  1051,   399,   364,   892,   356,
1566      282,   289,   365,   526,   105,   704,   357,   131,   714,   835,
1567      836,   837,   838,   839,   840,   759,   603,   853,   372,   330,
1568      728,   406,   705,   763,   225,   133,   519,   451,   800,   717,
1569      896,   256,   760,   255,   766,    27,   800,   311,   312,   982,
1570      764,   984,   985,   257,   258,   801,   903,  1052,   356,   193,
1571      194,   195,   196,   808,  1049,   370,   394,   989,   774,   920,
1572      921,   922,   923,   135,   526,   526,   395,   937,   356,   396,
1573      911,   912,   913,   679,   444,   439,   446,   447,   775,   259,
1574      260,   322,   323,   324,   325,   680,   681,  1002,  1022,  1003,
1575      776,   777,  1004,   136,   894,   356,   397,   145,   308,   309,
1576      310,   197,   562,   418,   895,   914,   915,   916,   917,   918,
1577      919,   887,  1039,   887,   378,   379,  1042,   745,   888,   887,
1578      901,  1046,   464,   746,   465,   887,   977,   466,   337,   526,
1579      868,   295,  1020,   296,   281,   456,   410,   458,  1061,   461,
1580      199,  1063,  1024,   956,   338,   339,   869,   870,   198,   281,
1581       42,   411,    42,    49,    42,    49,   200,    49,   389,   390,
1582      391,   392,  1075,   945,   313,   314,   315,   206,   157,   457,
1583      566,   158,   519,   159,   237,   375,   376,   377,   281,   157,
1584      450,   467,   161,   248,   162,   340,   341,   871,   872,   731,
1585      959,   960,   961,   962,   963,   731,   731,   731,   731,   731,
1586      731,   731,   731,   731,   731,   731,   274,   578,   157,   995,
1587      275,   234,   157,   235,   276,   250,   277,   251,   187,   188,
1588      299,   657,    42,   284,   658,    49,   659,   994,  1006,   996,
1589      304,   999,   184,   185,   186,   189,   190,   575,   253,   254,
1590      111,   380,   381,   382,   306,   228,   229,   230,   231,   519,
1591      111,   519,   657,   519,   333,   661,   281,   662,   454,   657,
1592      346,  1017,   753,   111,   754,   657,   290,   291,   769,   814,
1593      770,   815,  1017,   347,   731,   526,   191,   192,   261,   262,
1594      263,   264,   265,   349,   800,  1033,   941,   348,  1055,   270,
1595      271,   272,   273,   684,   685,   686,  1017,   519,   266,   267,
1596     1017,   352,   712,   720,  1050,  1017,   353,  1036,   519,   721,
1597      780,   781,   782,   706,   294,   281,   211,    42,   400,   281,
1598       49,  1047,  1017,   355,    42,  1017,  1079,    49,  1056,   519,
1599      359,   800,   519,   942,   731,   519,   519,   715,   362,   268,
1600      269,   519,   800,   519,   988,   800,  1017,   992,  1076,  1077,
1601      519,   366,   526,  1070,   526,  1072,   526,   368,   519,   373,
1602      111,   519,   111,   412,   111,   111,   401,  1080,   342,   343,
1603      344,   345,   706,   706,   405,   519,   441,   519,   402,   281,
1604      111,   445,   519,   452,   519,   519,   111,   111,   455,   519,
1605      111,   687,   688,   459,   519,   519,   448,   229,   230,   231,
1606      526,   403,   281,   462,   610,   682,   683,   111,   689,   690,
1607      470,   526,   783,   784,   610,   693,   694,   695,   696,   747,
1608      748,   749,   750,   789,   790,   791,   792,   610,   469,   785,
1609      786,   111,   526,   111,   281,   526,   404,   281,   526,   526,
1610      873,   874,   875,   876,   526,   474,   526,   408,   409,   691,
1611      692,   442,   443,   526,   453,   443,   473,   860,   475,   862,
1612      560,   526,   561,   111,   526,   567,   111,   472,   281,   565,
1613      787,   788,    42,   569,    42,    49,   573,    49,   526,   111,
1614      526,   476,   443,   414,   111,   526,   582,   526,   526,   568,
1615      281,   577,   526,   986,   748,   749,   750,   526,   526,   574,
1616      281,   628,   629,   730,   709,   443,   586,   633,   111,   335,
1617      111,   722,   281,   640,   641,   426,   427,   428,   429,   596,
1618      645,   646,   778,   779,   598,   652,   653,   654,   655,   604,
1619      253,   254,   772,   773,   648,   166,   167,   168,   169,   170,
1620      171,   172,   173,   174,   175,   176,   630,   610,   632,   610,
1621      634,   610,   610,   964,   965,   966,   967,   809,   810,   813,
1622      800,   635,   212,   503,   111,   419,   656,   610,   931,   800,
1623      933,   800,   644,   177,   610,   610,   934,   800,   610,   697,
1624      419,   419,   111,   946,   947,   935,   800,   699,   111,   949,
1625      111,   111,     1,     2,     3,   610,   950,   939,   940,    88,
1626      980,   981,   698,    89,   991,   981,    42,    42,    15,    49,
1627       49,    42,  1011,   800,    49,  1015,   981,  1026,   800,   610,
1628      700,   610,  1032,   800,  1044,   981,  1057,   800,   708,   724,
1629      111,   710,   725,   756,   767,   794,   111,   796,   111,   803,
1630       26,   111,   111,   419,   793,   795,   111,   818,    90,   823,
1631       28,    91,    30,   825,   852,    33,   854,    34,   855,   857,
1632       35,   859,   316,   317,   318,   319,   320,   321,   861,   863,
1633      610,   878,   864,   610,   879,   877,   880,   883,   897,   886,
1634      890,   207,   207,   884,   111,   899,   610,   893,   904,   932,
1635      936,   610,   827,   828,   829,   943,    42,    42,   111,    49,
1636       49,   944,   419,   111,   948,   106,   979,     1,     2,     3,
1637      983,   990,   993,   997,    88,   610,  1005,   610,    89,  1000,
1638       12,    13,  1008,    15,  1009,  1012,  1013,  1014,    18,   800,
1639     1018,  1019,  1023,  1025,  1027,  1031,   952,  1040,  1035,   383,
1640      384,   385,   386,   387,   388,  1041,  1043,    24,    25,  1045,
1641     1059,  1060,  1062,  1064,  1069,    26,  1065,  1067,  1073,   449,
1642      407,  1074,  1071,    90,   430,    28,    91,    30,    31,    32,
1643       33,  1078,    34,  1081,   432,    35,   431,   433,    36,    37,
1644       38,    39,   434,   610,   957,   369,   576,   858,   906,   907,
1645      908,   107,   719,   987,   969,   938,   972,   968,   111,   957,
1646      957,   610,   970,   900,   971,  1034,   111,   610,  1068,   610,
1647      610,   212,   421,   422,   423,   424,   425,   212,   212,   212,
1648      212,   212,   212,   212,   212,   212,   212,   212,  1054,     0,
1649        0,     0,     0,     0,     0,     0,     0,     0,   605,     0,
1650      477,   478,   479,     0,     0,     0,     0,   587,     0,   610,
1651        0,   588,     0,   488,   489,   610,   491,   610,     0,     0,
1652      610,   494,     0,     0,     0,     0,     0,     0,   610,   957,
1653        0,     0,   610,     0,     0,   477,   478,   479,     0,     0,
1654      500,   501,   587,     0,     0,     0,   588,     0,   502,   212,
1655        0,   491,     0,     0,     0,     0,   589,     0,   504,   590,
1656      506,   507,   508,   509,     0,   510,     0,     0,   511,     0,
1657      610,   512,   513,   514,   515,     0,     0,     0,     0,     0,
1658        0,     0,     0,   502,   606,   610,     0,     0,     0,   957,
1659      610,   589,     0,   504,   590,   506,     0,     0,   509,     0,
1660      510,     0,     0,   511,   610,     0,     0,     0,   212,     0,
1661        0,     0,   610,     1,     2,     3,     4,     0,     0,     5,
1662        6,     7,     8,     9,    10,    11,    12,    13,    14,    15,
1663       16,    17,     0,     0,    18,    19,    20,     0,    21,    22,
1664        0,     0,    23,     0,     0,     0,     0,     0,     0,     0,
1665        0,     0,     0,    24,    25,     0,     0,     0,     0,     0,
1666        0,    26,     0,     0,     0,     0,     0,     0,     0,    27,
1667      143,    28,    29,    30,    31,    32,    33,     0,    34,     0,
1668        0,    35,     0,     0,    36,    37,    38,    39,     0,     0,
1669        0,     0,     1,     2,     3,     4,     0,    40,     5,     6,
1670        7,     8,     9,    10,    11,    12,    13,    14,    15,    16,
1671       17,     0,     0,    18,    19,    20,     0,    21,    22,     0,
1672        0,    23,     0,     0,     0,     0,     0,     0,     0,     0,
1673        0,     0,    24,    25,     0,     0,     0,     0,     0,     0,
1674       26,     0,     0,     0,     0,     0,     0,     0,    27,   292,
1675       28,    29,    30,    31,    32,    33,     0,    34,     0,     0,
1676       35,     0,     0,    36,    37,    38,    39,     0,     0,     0,
1677        0,   477,   478,   479,   480,     0,    40,   481,   482,   483,
1678      484,   485,   486,   487,   488,   489,   490,   491,   492,   493,
1679        0,     0,   494,   495,   496,     0,   497,   498,     0,     0,
1680      499,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1681        0,   500,   501,     0,     0,     0,     0,     0,     0,   502,
1682        0,     0,     0,     0,     0,     0,     0,   503,   642,   504,
1683      505,   506,   507,   508,   509,     0,   510,     0,     0,   511,
1684        0,     0,   512,   513,   514,   515,     0,     0,     0,     0,
1685      477,   478,   479,   480,     0,   516,   481,   482,   483,   484,
1686      485,   486,   487,   488,   489,   490,   491,   492,   493,     0,
1687        0,   494,   495,   496,     0,   497,   498,     0,     0,   499,
1688        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1689      500,   501,     0,     0,     0,     0,     0,     0,   502,     0,
1690        0,     0,     0,     0,     0,     0,   503,   811,   504,   505,
1691      506,   507,   508,   509,     0,   510,     0,     0,   511,     0,
1692        0,   512,   513,   514,   515,     0,     0,     0,     0,     1,
1693        2,     3,     4,     0,   516,     5,     6,     7,     8,     9,
1694       10,    11,    12,    13,    14,    15,    16,    17,     0,     0,
1695       18,    19,    20,     0,    21,    22,     0,     0,    23,     0,
1696        0,     0,     0,     0,     0,     0,     0,     0,     0,    24,
1697       25,     0,     0,     0,     0,     0,     0,    26,     0,     0,
1698        0,     0,     0,     0,     0,    27,     0,    28,    29,    30,
1699       31,    32,    33,     0,    34,     0,     0,    35,     0,     0,
1700       36,    37,    38,    39,     0,     0,     0,     0,   477,   478,
1701      479,   480,     0,    40,   481,   482,   483,   484,   485,   486,
1702      487,   488,   489,   490,   491,   492,   493,     0,     0,   494,
1703      495,   496,     0,   497,   498,     0,     0,   499,     0,     0,
1704        0,     0,     0,     0,     0,     0,     0,     0,   500,   501,
1705        0,     0,     0,     0,     0,     0,   502,     0,     0,     0,
1706        0,     0,     0,     0,   503,     0,   504,   505,   506,   507,
1707      508,   509,     0,   510,     0,     0,   511,     0,     0,   512,
1708      513,   514,   515,     1,     2,     3,     0,     0,     0,     0,
1709       88,   210,   516,     0,    89,     0,    12,    13,     0,    15,
1710        0,     0,     0,     0,    18,     0,     0,     0,     0,     0,
1711        0,     0,     0,     0,     0,     0,     0,     0,     0,     1,
1712        2,     3,     0,    24,    25,     0,    88,     0,     0,     0,
1713       89,    26,    12,    13,     0,    15,     0,     0,     0,    90,
1714       18,    28,    91,    30,    31,    32,    33,     0,    34,     0,
1715        0,    35,     0,     0,    36,    37,    38,    39,     0,    24,
1716       25,     0,     0,     0,     0,     0,     0,    26,     0,     0,
1717        0,     0,     0,     0,     0,    90,     0,    28,    91,    30,
1718       31,    32,    33,     0,    34,     0,     0,    35,   297,     0,
1719       36,    37,    38,    39,     1,     2,     3,     0,     0,     0,
1720        0,    88,     0,     0,     0,    89,     0,    12,    13,     0,
1721       15,     0,     0,     0,     0,    18,     0,     0,     0,     0,
1722        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1723        1,     2,     3,     0,    24,    25,     0,    88,     0,     0,
1724        0,    89,    26,    12,    13,     0,    15,     0,     0,     0,
1725       90,    18,    28,    91,    30,    31,    32,    33,     0,    34,
1726      300,     0,    35,     0,     0,    36,    37,    38,    39,     0,
1727       24,    25,     0,     0,     0,     0,     0,     0,    26,     0,
1728        0,     0,     0,     0,     0,     0,    90,     0,    28,    91,
1729       30,    31,    32,    33,     0,    34,     0,     0,    35,   463,
1730        0,    36,    37,    38,    39,   477,   478,   479,     0,     0,
1731        0,     0,   587,   729,     0,     0,   588,     0,   488,   489,
1732        0,   491,     0,     0,     0,     0,   494,     0,     0,     0,
1733        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1734        0,   477,   478,   479,     0,   500,   501,     0,   587,     0,
1735        0,     0,   588,   502,   488,   489,     0,   491,     0,     0,
1736        0,   589,   494,   504,   590,   506,   507,   508,   509,     0,
1737      510,     0,     0,   511,     0,     0,   512,   513,   514,   515,
1738        0,   500,   501,     0,     0,     0,     0,     0,     0,   502,
1739        0,     0,     0,     0,     0,     0,     0,   589,     0,   504,
1740      590,   506,   507,   508,   509,     0,   510,     0,     0,   511,
1741      816,     0,   512,   513,   514,   515,   477,   478,   479,     0,
1742        0,     0,     0,   587,     0,     0,     0,   588,     0,   488,
1743      489,     0,   491,     0,     0,     0,     0,   494,     0,     0,
1744        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1745        0,     0,   477,   478,   479,     0,   500,   501,     0,   587,
1746        0,     0,     0,   588,   502,   488,   489,     0,   491,     0,
1747        0,     0,   589,   494,   504,   590,   506,   507,   508,   509,
1748        0,   510,   819,     0,   511,     0,     0,   512,   513,   514,
1749      515,     0,   500,   501,     0,     0,     0,     0,     0,     0,
1750      502,     0,     0,     0,     0,     0,     0,     0,   589,     0,
1751      504,   590,   506,   507,   508,   509,     0,   510,     0,     0,
1752      511,  1001,     0,   512,   513,   514,   515,     1,     2,     3,
1753        0,     0,     0,     0,    88,     0,     0,     0,    89,     0,
1754       12,    13,     0,    15,     0,     0,     0,     0,    18,     0,
1755        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1756        0,     0,     0,   477,   478,   479,     0,    24,    25,     0,
1757      587,     0,     0,     0,   588,    26,   488,   489,     0,   491,
1758        0,     0,     0,    90,   494,    28,    91,    30,    31,    32,
1759       33,     0,    34,     0,     0,    35,     0,     0,    36,    37,
1760       38,    39,     0,   500,   501,     0,     0,     0,     0,     0,
1761        0,   502,     0,     0,     0,     0,     0,   866,     0,   589,
1762        0,   504,   590,   506,   507,   508,   509,     0,   510,     0,
1763        0,   511,     0,     0,   512,   513,   514,   515,   772,   773,
1764        0,     0,     0,   666,   667,   668,   669,   670,   671,   672,
1765      673,   674,   675,   676,   164,   165,     0,     0,     0,   166,
1766      167,   168,   169,   170,   171,   172,   173,   174,   175,   176,
1767        0,     0,     0,     0,     0,     0,     0,   253,   254,     0,
1768        0,   677,   166,   167,   168,   169,   170,   171,   172,   173,
1769      174,   175,   176,   664,   665,     0,     0,   177,   666,   667,
1770      668,   669,   670,   671,   672,   673,   674,   675,   676,     0,
1771        0,     0,     0,     0,     0,     0,   772,   773,     0,     0,
1772      177,   666,   667,   668,   669,   670,   671,   672,   673,   674,
1773      675,   676,     0,     0,     0,     0,   677,     0,     0,     0,
1774        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
1775        0,     0,     0,     0,     0,     0,     0,     0,     0,   677
1776 };
1777 
1778 static const yytype_int16 yycheck[] =
1779 {
1780        0,    16,    22,     0,    27,   498,   598,   767,    99,   441,
1781      417,   452,   523,   248,   487,   955,    16,    46,   697,    16,
1782      452,   682,   683,   197,   497,   698,   867,    27,     6,    11,
1783       27,   336,   482,   482,   475,   503,   699,   510,   492,    21,
1784      700,   882,   883,   475,   701,     1,   351,   352,     1,   650,
1785       41,    22,    34,    74,    75,    41,   657,    62,    41,    70,
1786      492,    22,    67,    70,    41,    94,    68,   474,    83,    41,
1787        1,   503,    66,  1013,     1,    67,    87,   678,    70,   108,
1788       87,   110,   593,    83,    78,    79,    83,    62,    62,     1,
1789       70,     1,     1,    68,    85,  1035,   607,     1,   609,    85,
1790      274,   702,    85,   704,    67,   559,    62,    70,    85,   414,
1791       88,   952,   441,    85,   793,    86,   151,   778,   779,   560,
1792      355,   794,   157,   452,   565,    86,   886,   559,   560,   144,
1793      145,    87,   795,   565,    87,    62,   796,   587,   587,    70,
1794      797,   582,     1,   178,   144,   145,   475,   144,   145,   131,
1795      582,   133,     1,   135,   136,   756,    87,   630,   586,   632,
1796       87,   634,   635,   492,     1,     1,    70,   202,   473,   204,
1797      577,  1012,     1,   774,   503,    87,   158,    87,    87,   161,
1798        1,    12,    13,    87,     1,   658,     1,    18,   661,   643,
1799      644,    41,     6,    24,    25,   224,     1,   798,     1,   800,
1800       31,    32,   237,    62,     1,    36,    37,    38,    39,     1,
1801      445,   643,   644,   693,   694,   695,   696,     1,     1,    47,
1802      255,    70,   524,   983,   684,   685,   686,     8,    87,   198,
1803      559,   560,   743,    70,    70,    85,   565,    60,    87,   199,
1804       62,    62,   200,    62,   279,     8,   281,    70,    67,    62,
1805       87,    87,   234,   582,    62,    70,    69,    68,    87,   687,
1806      688,   689,   690,   691,   692,    70,    87,   708,   250,   201,
1807       87,   291,    87,    70,    88,    68,   708,   368,    70,    60,
1808      753,    66,    87,   111,    87,    59,    70,   182,   183,   890,
1809       87,   892,   893,    78,    79,    87,   769,    60,    62,    35,
1810       36,    37,    38,    87,    87,    69,   275,   899,   610,   789,
1811      790,   791,   792,    68,   643,   644,   276,   810,    62,   277,
1812      780,   781,   782,    66,   359,    69,   361,   362,    66,    74,
1813       75,   193,   194,   195,   196,    78,    79,   938,   990,   940,
1814       78,    79,   943,    68,    60,    62,   278,    67,   179,   180,
1815      181,    82,    69,   335,    70,   783,   784,   785,   786,   787,
1816      788,    62,  1014,    62,   259,   260,  1018,    62,    69,    62,
1817       69,  1023,   407,    68,   409,    62,    69,   412,    23,   708,
1818       23,    70,    69,    72,    70,   400,    72,   402,  1040,   404,
1819       84,  1043,   993,   866,    39,    40,    39,    40,    83,    70,
1820      400,    72,   402,   400,   404,   402,    42,   404,   270,   271,
1821      272,   273,  1064,   854,   184,   185,   186,     0,    68,   401,
1822      455,    71,   854,    73,    86,   256,   257,   258,    70,    68,
1823       72,   413,    71,    68,    73,    80,    81,    80,    81,   867,
1824      868,   869,   870,   871,   872,   873,   874,   875,   876,   877,
1825      878,   879,   880,   881,   882,   883,    82,   472,    68,   932,
1826       83,    71,    68,    73,    84,    71,    42,    73,    22,    23,
1827       70,    68,   472,    21,    71,   472,    73,   931,   951,   933,
1828       62,   935,    45,    46,    47,    39,    40,   469,    43,    44,
1829       11,   261,   262,   263,    62,    60,    61,    62,    63,   931,
1830       21,   933,    68,   935,    62,    71,    70,    73,    72,    68,
1831       82,   979,    71,    34,    73,    68,    30,    31,    71,    70,
1832       73,    72,   990,    83,   952,   854,    80,    81,    45,    46,
1833       47,    22,    23,    42,    70,  1008,    72,    84,  1031,    35,
1834       36,    37,    38,    45,    46,    47,  1014,   979,    39,    40,
1835     1018,    70,   567,   573,  1027,  1023,    87,  1011,   990,   574,
1836       45,    46,    47,  1017,    69,    70,    87,   567,    69,    70,
1837      567,  1025,  1040,    68,   574,  1043,  1069,   574,  1032,  1011,
1838       67,    70,  1014,    72,  1012,  1017,  1018,   569,    67,    80,
1839       81,  1023,    70,  1025,    72,    70,  1064,    72,  1066,  1067,
1840     1032,    62,   931,  1057,   933,  1059,   935,    62,  1040,    62,
1841      131,  1043,   133,    67,   135,   136,    68,  1071,    35,    36,
1842       37,    38,  1076,  1077,    68,  1057,    59,  1059,    69,    70,
1843      151,    68,  1064,    59,  1066,  1067,   157,   158,    67,  1071,
1844      161,    22,    23,    59,  1076,  1077,    60,    61,    62,    63,
1845      979,    69,    70,    62,   487,    74,    75,   178,    39,    40,
1846       62,   990,    22,    23,   497,    35,    36,    37,    38,    60,
1847       61,    62,    63,    35,    36,    37,    38,   510,    22,    39,
1848       40,   202,  1011,   204,    70,  1014,    69,    70,  1017,  1018,
1849       35,    36,    37,    38,  1023,    87,  1025,    69,    70,    80,
1850       81,    69,    70,  1032,    69,    70,    67,   722,    59,   724,
1851       59,  1040,    62,   234,  1043,    34,   237,    69,    70,    59,
1852       80,    81,   722,     7,   724,   722,    69,   724,  1057,   250,
1853     1059,    69,    70,    86,   255,  1064,    59,  1066,  1067,    69,
1854       70,    87,  1071,    60,    61,    62,    63,  1076,  1077,    69,
1855       70,   488,   489,   586,    69,    70,    68,   494,   279,    22,
1856      281,    69,    70,   500,   501,   342,   343,   344,   345,    62,
1857      507,   508,    74,    75,    62,   512,   513,   514,   515,    62,
1858       43,    44,    43,    44,    70,    48,    49,    50,    51,    52,
1859       53,    54,    55,    56,    57,    58,    68,   630,    68,   632,
1860       68,   634,   635,   873,   874,   875,   876,    30,    31,    69,
1861       70,    68,    87,    59,   335,   336,    60,   650,    69,    70,
1862       69,    70,    67,    86,   657,   658,    69,    70,   661,    82,
1863      351,   352,   353,   856,   857,    69,    70,    84,   359,   859,
1864      361,   362,     3,     4,     5,   678,   861,    69,    70,    10,
1865       69,    70,    83,    14,    69,    70,   856,   857,    19,   856,
1866      857,   861,    69,    70,   861,    69,    70,    69,    70,   702,
1867       42,   704,    69,    70,    69,    70,    69,    70,    59,    69,
1868      401,    60,    60,    86,    68,    83,   407,    42,   409,    21,
1869       51,   412,   413,   414,    82,    84,   417,    70,    59,    62,
1870       61,    62,    63,    62,    60,    66,    59,    68,    60,    67,
1871       71,    31,   187,   188,   189,   190,   191,   192,    69,    60,
1872      753,    83,    62,   756,    84,    82,    42,    70,    62,    68,
1873       67,   946,   947,    87,   455,    62,   769,    67,    62,    68,
1874       68,   774,   679,   680,   681,    67,   946,   947,   469,   946,
1875      947,    60,   473,   474,    60,     1,    59,     3,     4,     5,
1876       68,    59,    67,    59,    10,   798,    60,   800,    14,    62,
1877       16,    17,    22,    19,    62,    67,    87,    59,    24,    70,
1878       59,    62,    59,    34,     7,    69,    86,    59,    87,   264,
1879      265,   266,   267,   268,   269,    60,    59,    43,    44,    60,
1880       69,    60,    60,    59,    31,    51,    60,    67,    60,   364,
1881      295,    60,    69,    59,   346,    61,    62,    63,    64,    65,
1882       66,    60,    68,    60,   348,    71,   347,   349,    74,    75,
1883       76,    77,   350,   866,   867,   244,   470,   718,   775,   776,
1884      777,    87,   571,   895,   878,   814,   881,   877,   569,   882,
1885      883,   884,   879,   763,   880,  1009,   577,   890,  1053,   892,
1886      893,   336,   337,   338,   339,   340,   341,   342,   343,   344,
1887      345,   346,   347,   348,   349,   350,   351,   352,  1029,    -1,
1888       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     1,    -1,
1889        3,     4,     5,    -1,    -1,    -1,    -1,    10,    -1,   932,
1890       -1,    14,    -1,    16,    17,   938,    19,   940,    -1,    -1,
1891      943,    24,    -1,    -1,    -1,    -1,    -1,    -1,   951,   952,
1892       -1,    -1,   955,    -1,    -1,     3,     4,     5,    -1,    -1,
1893       43,    44,    10,    -1,    -1,    -1,    14,    -1,    51,   414,
1894       -1,    19,    -1,    -1,    -1,    -1,    59,    -1,    61,    62,
1895       63,    64,    65,    66,    -1,    68,    -1,    -1,    71,    -1,
1896      993,    74,    75,    76,    77,    -1,    -1,    -1,    -1,    -1,
1897       -1,    -1,    -1,    51,    87,  1008,    -1,    -1,    -1,  1012,
1898     1013,    59,    -1,    61,    62,    63,    -1,    -1,    66,    -1,
1899       68,    -1,    -1,    71,  1027,    -1,    -1,    -1,   473,    -1,
1900       -1,    -1,  1035,     3,     4,     5,     6,    -1,    -1,     9,
1901       10,    11,    12,    13,    14,    15,    16,    17,    18,    19,
1902       20,    21,    -1,    -1,    24,    25,    26,    -1,    28,    29,
1903       -1,    -1,    32,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1904       -1,    -1,    -1,    43,    44,    -1,    -1,    -1,    -1,    -1,
1905       -1,    51,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,
1906       60,    61,    62,    63,    64,    65,    66,    -1,    68,    -1,
1907       -1,    71,    -1,    -1,    74,    75,    76,    77,    -1,    -1,
1908       -1,    -1,     3,     4,     5,     6,    -1,    87,     9,    10,
1909       11,    12,    13,    14,    15,    16,    17,    18,    19,    20,
1910       21,    -1,    -1,    24,    25,    26,    -1,    28,    29,    -1,
1911       -1,    32,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1912       -1,    -1,    43,    44,    -1,    -1,    -1,    -1,    -1,    -1,
1913       51,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    60,
1914       61,    62,    63,    64,    65,    66,    -1,    68,    -1,    -1,
1915       71,    -1,    -1,    74,    75,    76,    77,    -1,    -1,    -1,
1916       -1,     3,     4,     5,     6,    -1,    87,     9,    10,    11,
1917       12,    13,    14,    15,    16,    17,    18,    19,    20,    21,
1918       -1,    -1,    24,    25,    26,    -1,    28,    29,    -1,    -1,
1919       32,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1920       -1,    43,    44,    -1,    -1,    -1,    -1,    -1,    -1,    51,
1921       -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    60,    61,
1922       62,    63,    64,    65,    66,    -1,    68,    -1,    -1,    71,
1923       -1,    -1,    74,    75,    76,    77,    -1,    -1,    -1,    -1,
1924        3,     4,     5,     6,    -1,    87,     9,    10,    11,    12,
1925       13,    14,    15,    16,    17,    18,    19,    20,    21,    -1,
1926       -1,    24,    25,    26,    -1,    28,    29,    -1,    -1,    32,
1927       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1928       43,    44,    -1,    -1,    -1,    -1,    -1,    -1,    51,    -1,
1929       -1,    -1,    -1,    -1,    -1,    -1,    59,    60,    61,    62,
1930       63,    64,    65,    66,    -1,    68,    -1,    -1,    71,    -1,
1931       -1,    74,    75,    76,    77,    -1,    -1,    -1,    -1,     3,
1932        4,     5,     6,    -1,    87,     9,    10,    11,    12,    13,
1933       14,    15,    16,    17,    18,    19,    20,    21,    -1,    -1,
1934       24,    25,    26,    -1,    28,    29,    -1,    -1,    32,    -1,
1935       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    43,
1936       44,    -1,    -1,    -1,    -1,    -1,    -1,    51,    -1,    -1,
1937       -1,    -1,    -1,    -1,    -1,    59,    -1,    61,    62,    63,
1938       64,    65,    66,    -1,    68,    -1,    -1,    71,    -1,    -1,
1939       74,    75,    76,    77,    -1,    -1,    -1,    -1,     3,     4,
1940        5,     6,    -1,    87,     9,    10,    11,    12,    13,    14,
1941       15,    16,    17,    18,    19,    20,    21,    -1,    -1,    24,
1942       25,    26,    -1,    28,    29,    -1,    -1,    32,    -1,    -1,
1943       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    43,    44,
1944       -1,    -1,    -1,    -1,    -1,    -1,    51,    -1,    -1,    -1,
1945       -1,    -1,    -1,    -1,    59,    -1,    61,    62,    63,    64,
1946       65,    66,    -1,    68,    -1,    -1,    71,    -1,    -1,    74,
1947       75,    76,    77,     3,     4,     5,    -1,    -1,    -1,    -1,
1948       10,    11,    87,    -1,    14,    -1,    16,    17,    -1,    19,
1949       -1,    -1,    -1,    -1,    24,    -1,    -1,    -1,    -1,    -1,
1950       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     3,
1951        4,     5,    -1,    43,    44,    -1,    10,    -1,    -1,    -1,
1952       14,    51,    16,    17,    -1,    19,    -1,    -1,    -1,    59,
1953       24,    61,    62,    63,    64,    65,    66,    -1,    68,    -1,
1954       -1,    71,    -1,    -1,    74,    75,    76,    77,    -1,    43,
1955       44,    -1,    -1,    -1,    -1,    -1,    -1,    51,    -1,    -1,
1956       -1,    -1,    -1,    -1,    -1,    59,    -1,    61,    62,    63,
1957       64,    65,    66,    -1,    68,    -1,    -1,    71,    72,    -1,
1958       74,    75,    76,    77,     3,     4,     5,    -1,    -1,    -1,
1959       -1,    10,    -1,    -1,    -1,    14,    -1,    16,    17,    -1,
1960       19,    -1,    -1,    -1,    -1,    24,    -1,    -1,    -1,    -1,
1961       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1962        3,     4,     5,    -1,    43,    44,    -1,    10,    -1,    -1,
1963       -1,    14,    51,    16,    17,    -1,    19,    -1,    -1,    -1,
1964       59,    24,    61,    62,    63,    64,    65,    66,    -1,    68,
1965       69,    -1,    71,    -1,    -1,    74,    75,    76,    77,    -1,
1966       43,    44,    -1,    -1,    -1,    -1,    -1,    -1,    51,    -1,
1967       -1,    -1,    -1,    -1,    -1,    -1,    59,    -1,    61,    62,
1968       63,    64,    65,    66,    -1,    68,    -1,    -1,    71,    72,
1969       -1,    74,    75,    76,    77,     3,     4,     5,    -1,    -1,
1970       -1,    -1,    10,    11,    -1,    -1,    14,    -1,    16,    17,
1971       -1,    19,    -1,    -1,    -1,    -1,    24,    -1,    -1,    -1,
1972       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1973       -1,     3,     4,     5,    -1,    43,    44,    -1,    10,    -1,
1974       -1,    -1,    14,    51,    16,    17,    -1,    19,    -1,    -1,
1975       -1,    59,    24,    61,    62,    63,    64,    65,    66,    -1,
1976       68,    -1,    -1,    71,    -1,    -1,    74,    75,    76,    77,
1977       -1,    43,    44,    -1,    -1,    -1,    -1,    -1,    -1,    51,
1978       -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    -1,    61,
1979       62,    63,    64,    65,    66,    -1,    68,    -1,    -1,    71,
1980       72,    -1,    74,    75,    76,    77,     3,     4,     5,    -1,
1981       -1,    -1,    -1,    10,    -1,    -1,    -1,    14,    -1,    16,
1982       17,    -1,    19,    -1,    -1,    -1,    -1,    24,    -1,    -1,
1983       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1984       -1,    -1,     3,     4,     5,    -1,    43,    44,    -1,    10,
1985       -1,    -1,    -1,    14,    51,    16,    17,    -1,    19,    -1,
1986       -1,    -1,    59,    24,    61,    62,    63,    64,    65,    66,
1987       -1,    68,    69,    -1,    71,    -1,    -1,    74,    75,    76,
1988       77,    -1,    43,    44,    -1,    -1,    -1,    -1,    -1,    -1,
1989       51,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    59,    -1,
1990       61,    62,    63,    64,    65,    66,    -1,    68,    -1,    -1,
1991       71,    72,    -1,    74,    75,    76,    77,     3,     4,     5,
1992       -1,    -1,    -1,    -1,    10,    -1,    -1,    -1,    14,    -1,
1993       16,    17,    -1,    19,    -1,    -1,    -1,    -1,    24,    -1,
1994       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
1995       -1,    -1,    -1,     3,     4,     5,    -1,    43,    44,    -1,
1996       10,    -1,    -1,    -1,    14,    51,    16,    17,    -1,    19,
1997       -1,    -1,    -1,    59,    24,    61,    62,    63,    64,    65,
1998       66,    -1,    68,    -1,    -1,    71,    -1,    -1,    74,    75,
1999       76,    77,    -1,    43,    44,    -1,    -1,    -1,    -1,    -1,
2000       -1,    51,    -1,    -1,    -1,    -1,    -1,    22,    -1,    59,
2001       -1,    61,    62,    63,    64,    65,    66,    -1,    68,    -1,
2002       -1,    71,    -1,    -1,    74,    75,    76,    77,    43,    44,
2003       -1,    -1,    -1,    48,    49,    50,    51,    52,    53,    54,
2004       55,    56,    57,    58,    43,    44,    -1,    -1,    -1,    48,
2005       49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
2006       -1,    -1,    -1,    -1,    -1,    -1,    -1,    43,    44,    -1,
2007       -1,    86,    48,    49,    50,    51,    52,    53,    54,    55,
2008       56,    57,    58,    43,    44,    -1,    -1,    86,    48,    49,
2009       50,    51,    52,    53,    54,    55,    56,    57,    58,    -1,
2010       -1,    -1,    -1,    -1,    -1,    -1,    43,    44,    -1,    -1,
2011       86,    48,    49,    50,    51,    52,    53,    54,    55,    56,
2012       57,    58,    -1,    -1,    -1,    -1,    86,    -1,    -1,    -1,
2013       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
2014       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    86
2015 };
2016 
2017 /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
2018    symbol of state STATE-NUM.  */
2019 static const yytype_uint16 yystos[] =
2020 {
2021        0,     3,     4,     5,     6,     9,    10,    11,    12,    13,
2022       14,    15,    16,    17,    18,    19,    20,    21,    24,    25,
2023       26,    28,    29,    32,    43,    44,    51,    59,    61,    62,
2024       63,    64,    65,    66,    68,    71,    74,    75,    76,    77,
2025       87,    89,    93,    94,    99,   101,   103,   107,   109,   110,
2026      112,   114,   116,   118,   121,   124,   127,   130,   133,   136,
2027      139,   142,   145,   149,   150,   151,   152,   155,   160,   161,
2028      162,   163,   166,   167,   168,   169,   170,   176,   177,   178,
2029      179,   180,   184,   185,     1,    62,    87,    68,    10,    14,
2030       59,    62,    92,    93,    98,   100,   181,    62,   153,    62,
2031      156,   157,     1,    62,    87,    62,     1,    87,    98,   100,
2032      102,   106,   108,   110,   111,   113,   115,   117,   119,   122,
2033      125,   128,   131,   134,   137,   140,   143,   147,   106,   111,
2034      111,    68,   150,    68,   111,    68,    68,   147,   151,     1,
2035       87,   111,   111,    60,   185,    67,   111,   111,   147,    70,
2036       95,    96,    97,   111,   111,   111,   111,    68,    71,    73,
2037      104,    71,    73,   104,    43,    44,    48,    49,    50,    51,
2038       52,    53,    54,    55,    56,    57,    58,    86,   146,    66,
2039       78,    79,    74,    75,    45,    46,    47,    22,    23,    39,
2040       40,    80,    81,    35,    36,    37,    38,    82,    83,    84,
2041       42,    41,    85,     1,    70,    87,     0,   150,     1,    87,
2042       11,   106,   117,   120,   123,   126,   129,   132,   135,   138,
2043      141,   144,   148,   165,    98,   100,    62,    68,    60,    61,
2044       62,    63,    90,    91,    71,    73,   104,    86,   158,     1,
2045       70,    87,   158,     1,    70,    87,     1,    87,    68,   104,
2046       71,    73,   104,    43,    44,   146,    66,    78,    79,    74,
2047       75,    45,    46,    47,    22,    23,    39,    40,    80,    81,
2048       35,    36,    37,    38,    82,    83,    84,    42,    41,    85,
2049        1,    70,    87,   147,    21,   147,   147,   147,     1,    87,
2050       30,    31,    60,   150,    69,    70,    72,    72,   143,    70,
2051       69,   105,   143,   147,    62,   147,    62,   143,   111,   111,
2052      111,   113,   113,   115,   115,   115,   117,   117,   117,   117,
2053      117,   117,   119,   119,   119,   119,   122,   125,   128,   131,
2054      134,   143,   143,    62,   154,    22,   146,    23,    39,    40,
2055       80,    81,    35,    36,    37,    38,    82,    83,    84,    42,
2056       41,    85,    70,    87,   104,    68,    62,    69,   182,    67,
2057       62,    67,    67,    60,    70,   147,    62,   143,    62,   157,
2058       69,   182,   147,    62,   143,   111,   111,   111,   113,   113,
2059      115,   115,   115,   117,   117,   117,   117,   117,   117,   119,
2060      119,   119,   119,   122,   125,   128,   131,   134,   143,   143,
2061       69,    68,    69,    69,    69,    68,   151,    96,    69,    70,
2062       72,    72,    67,    22,    86,   159,    70,    87,   147,   106,
2063      144,   117,   117,   117,   117,   117,   120,   120,   120,   120,
2064      123,   126,   129,   132,   135,   144,   144,   147,   164,    69,
2065      182,    59,    69,    70,   143,    68,   143,   143,    60,    90,
2066       72,   158,    59,    69,    72,    67,   150,   147,   150,    59,
2067      171,   150,    62,    72,   143,   143,   143,   147,   144,    22,
2068       62,   164,    69,    67,    87,    59,    69,     3,     4,     5,
2069        6,     9,    10,    11,    12,    13,    14,    15,    16,    17,
2070       18,    19,    20,    21,    24,    25,    26,    28,    29,    32,
2071       43,    44,    51,    59,    61,    62,    63,    64,    65,    66,
2072       68,    71,    74,    75,    76,    77,    87,   183,   186,   190,
2073      191,   196,   198,   200,   204,   206,   207,   209,   211,   213,
2074      215,   218,   221,   224,   227,   230,   233,   236,   239,   242,
2075      246,   247,   248,   249,   252,   257,   258,   259,   260,   263,
2076      264,   265,   266,   267,   273,   274,   275,   276,   277,   281,
2077       59,    62,    69,   182,   183,    59,   143,    34,    69,     7,
2078      172,   173,   174,    69,    69,   147,   159,    87,   150,   144,
2079      164,   183,    59,     1,    62,    87,    68,    10,    14,    59,
2080       62,   189,   190,   195,   197,   278,    62,   250,    62,   253,
2081      254,     1,    62,    87,    62,     1,    87,   195,   197,   199,
2082      203,   205,   207,   208,   210,   212,   214,   216,   219,   222,
2083      225,   228,   231,   234,   237,   240,   244,   203,   208,   208,
2084       68,   247,    68,   208,    68,    68,   244,   248,     1,    87,
2085      208,   208,    60,   281,    67,   208,   208,   244,    70,   192,
2086      193,   194,   208,   208,   208,   208,    60,    68,    71,    73,
2087      201,    71,    73,   201,    43,    44,    48,    49,    50,    51,
2088       52,    53,    54,    55,    56,    57,    58,    86,   243,    66,
2089       78,    79,    74,    75,    45,    46,    47,    22,    23,    39,
2090       40,    80,    81,    35,    36,    37,    38,    82,    83,    84,
2091       42,    41,    85,     1,    70,    87,   247,   183,    59,    69,
2092       60,   183,   150,     1,    87,   147,     8,    60,   175,   174,
2093      151,   150,    69,   164,    69,    60,   183,     1,    87,    11,
2094      203,   214,   217,   220,   223,   226,   229,   232,   235,   238,
2095      241,   245,   262,   195,   197,    62,    68,    60,    61,    62,
2096       63,   187,   188,    71,    73,   201,    86,   255,     1,    70,
2097       87,   255,     1,    70,    87,     1,    87,    68,   201,    71,
2098       73,   201,    43,    44,   243,    66,    78,    79,    74,    75,
2099       45,    46,    47,    22,    23,    39,    40,    80,    81,    35,
2100       36,    37,    38,    82,    83,    84,    42,    41,    85,     1,
2101       70,    87,   244,    21,   244,   244,   244,     1,    87,    30,
2102       31,    60,   247,    69,    70,    72,    72,   240,    70,    69,
2103      202,   240,   244,    62,   244,    62,   240,   208,   208,   208,
2104      210,   210,   212,   212,   212,   214,   214,   214,   214,   214,
2105      214,   216,   216,   216,   216,   219,   222,   225,   228,   231,
2106      240,   240,    60,   183,    59,    60,    67,    67,   172,    31,
2107      150,    69,   150,    60,    62,   251,    22,   243,    23,    39,
2108       40,    80,    81,    35,    36,    37,    38,    82,    83,    84,
2109       42,    41,    85,    70,    87,   201,    68,    62,    69,   279,
2110       67,    62,    67,    67,    60,    70,   244,    62,   240,    62,
2111      254,    69,   279,   244,    62,   240,   208,   208,   208,   210,
2112      210,   212,   212,   212,   214,   214,   214,   214,   214,   214,
2113      216,   216,   216,   216,   219,   222,   225,   228,   231,   240,
2114      240,    69,    68,    69,    69,    69,    68,   248,   193,    69,
2115       70,    72,    72,    67,    60,   183,   185,   185,    60,   151,
2116      150,    22,    86,   256,    70,    87,   244,   203,   241,   214,
2117      214,   214,   214,   214,   217,   217,   217,   217,   220,   223,
2118      226,   229,   232,   241,   241,   244,   261,    69,   279,    59,
2119       69,    70,   240,    68,   240,   240,    60,   187,    72,   255,
2120       59,    69,    72,    67,   247,   244,   247,    59,   268,   247,
2121       62,    72,   240,   240,   240,    60,   244,   241,    22,    62,
2122      261,    69,    67,    87,    59,    69,   280,   281,    59,    62,
2123       69,   279,   280,    59,   240,    34,    69,     7,   269,   270,
2124      271,    69,    69,   244,   256,    87,   247,   241,   261,   280,
2125       59,    60,   280,    59,    69,    60,   280,   247,     1,    87,
2126      244,     8,    60,   272,   271,   248,   247,    69,   261,    69,
2127       60,   280,    60,   280,    59,    60,    67,    67,   269,    31,
2128      247,    69,   247,    60,    60,   280,   281,   281,    60,   248,
2129      247,    60
2130 };
2131 
2132 #define yyerrok		(yyerrstatus = 0)
2133 #define yyclearin	(yychar = YYEMPTY)
2134 #define YYEMPTY		(-2)
2135 #define YYEOF		0
2136 
2137 #define YYACCEPT	goto yyacceptlab
2138 #define YYABORT		goto yyabortlab
2139 #define YYERROR		goto yyerrorlab
2140 
2141 
2142 /* Like YYERROR except do call yyerror.  This remains here temporarily
2143    to ease the transition to the new meaning of YYERROR, for GCC.
2144    Once GCC version 2 has supplanted version 1, this can go.  */
2145 
2146 #define YYFAIL		goto yyerrlab
2147 
2148 #define YYRECOVERING()  (!!yyerrstatus)
2149 
2150 #define YYBACKUP(Token, Value)					\
2151 do								\
2152   if (yychar == YYEMPTY && yylen == 1)				\
2153     {								\
2154       yychar = (Token);						\
2155       yylval = (Value);						\
2156       yytoken = YYTRANSLATE (yychar);				\
2157       YYPOPSTACK (1);						\
2158       goto yybackup;						\
2159     }								\
2160   else								\
2161     {								\
2162       yyerror (YY_("syntax error: cannot back up")); \
2163       YYERROR;							\
2164     }								\
2165 while (YYID (0))
2166 
2167 
2168 #define YYTERROR	1
2169 #define YYERRCODE	256
2170 
2171 
2172 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
2173    If N is 0, then set CURRENT to the empty location which ends
2174    the previous symbol: RHS[0] (always defined).  */
2175 
2176 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
2177 #ifndef YYLLOC_DEFAULT
2178 # define YYLLOC_DEFAULT(Current, Rhs, N)				\
2179     do									\
2180       if (YYID (N))                                                    \
2181 	{								\
2182 	  (Current).first_line   = YYRHSLOC (Rhs, 1).first_line;	\
2183 	  (Current).first_column = YYRHSLOC (Rhs, 1).first_column;	\
2184 	  (Current).last_line    = YYRHSLOC (Rhs, N).last_line;		\
2185 	  (Current).last_column  = YYRHSLOC (Rhs, N).last_column;	\
2186 	}								\
2187       else								\
2188 	{								\
2189 	  (Current).first_line   = (Current).last_line   =		\
2190 	    YYRHSLOC (Rhs, 0).last_line;				\
2191 	  (Current).first_column = (Current).last_column =		\
2192 	    YYRHSLOC (Rhs, 0).last_column;				\
2193 	}								\
2194     while (YYID (0))
2195 #endif
2196 
2197 
2198 /* YY_LOCATION_PRINT -- Print the location on the stream.
2199    This macro was not mandated originally: define only if we know
2200    we won't break user code: when these are the locations we know.  */
2201 
2202 #ifndef YY_LOCATION_PRINT
2203 # if YYLTYPE_IS_TRIVIAL
2204 #  define YY_LOCATION_PRINT(File, Loc)			\
2205      fprintf (File, "%d.%d-%d.%d",			\
2206 	      (Loc).first_line, (Loc).first_column,	\
2207 	      (Loc).last_line,  (Loc).last_column)
2208 # else
2209 #  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
2210 # endif
2211 #endif
2212 
2213 
2214 /* YYLEX -- calling `yylex' with the right arguments.  */
2215 
2216 #ifdef YYLEX_PARAM
2217 # define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM)
2218 #else
2219 # define YYLEX yylex (&yylval, &yylloc)
2220 #endif
2221 
2222 /* Enable debugging if requested.  */
2223 #if YYDEBUG
2224 
2225 # ifndef YYFPRINTF
2226 #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
2227 #  define YYFPRINTF fprintf
2228 # endif
2229 
2230 # define YYDPRINTF(Args)			\
2231 do {						\
2232   if (yydebug)					\
2233     YYFPRINTF Args;				\
2234 } while (YYID (0))
2235 
2236 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)			  \
2237 do {									  \
2238   if (yydebug)								  \
2239     {									  \
2240       YYFPRINTF (stderr, "%s ", Title);					  \
2241       yy_symbol_print (stderr,						  \
2242 		  Type, Value, Location); \
2243       YYFPRINTF (stderr, "\n");						  \
2244     }									  \
2245 } while (YYID (0))
2246 
2247 
2248 /*--------------------------------.
2249 | Print this symbol on YYOUTPUT.  |
2250 `--------------------------------*/
2251 
2252 /*ARGSUSED*/
2253 #if (defined __STDC__ || defined __C99__FUNC__ \
2254      || defined __cplusplus || defined _MSC_VER)
2255 static void
yy_symbol_value_print(FILE * yyoutput,int yytype,YYSTYPE const * const yyvaluep,YYLTYPE const * const yylocationp)2256 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp)
2257 #else
2258 static void
2259 yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp)
2260     FILE *yyoutput;
2261     int yytype;
2262     YYSTYPE const * const yyvaluep;
2263     YYLTYPE const * const yylocationp;
2264 #endif
2265 {
2266   if (!yyvaluep)
2267     return;
2268   YYUSE (yylocationp);
2269 # ifdef YYPRINT
2270   if (yytype < YYNTOKENS)
2271     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
2272 # else
2273   YYUSE (yyoutput);
2274 # endif
2275   switch (yytype)
2276     {
2277       default:
2278 	break;
2279     }
2280 }
2281 
2282 
2283 /*--------------------------------.
2284 | Print this symbol on YYOUTPUT.  |
2285 `--------------------------------*/
2286 
2287 #if (defined __STDC__ || defined __C99__FUNC__ \
2288      || defined __cplusplus || defined _MSC_VER)
2289 static void
yy_symbol_print(FILE * yyoutput,int yytype,YYSTYPE const * const yyvaluep,YYLTYPE const * const yylocationp)2290 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp)
2291 #else
2292 static void
2293 yy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp)
2294     FILE *yyoutput;
2295     int yytype;
2296     YYSTYPE const * const yyvaluep;
2297     YYLTYPE const * const yylocationp;
2298 #endif
2299 {
2300   if (yytype < YYNTOKENS)
2301     YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
2302   else
2303     YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
2304 
2305   YY_LOCATION_PRINT (yyoutput, *yylocationp);
2306   YYFPRINTF (yyoutput, ": ");
2307   yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp);
2308   YYFPRINTF (yyoutput, ")");
2309 }
2310 
2311 /*------------------------------------------------------------------.
2312 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
2313 | TOP (included).                                                   |
2314 `------------------------------------------------------------------*/
2315 
2316 #if (defined __STDC__ || defined __C99__FUNC__ \
2317      || defined __cplusplus || defined _MSC_VER)
2318 static void
yy_stack_print(yytype_int16 * yybottom,yytype_int16 * yytop)2319 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
2320 #else
2321 static void
2322 yy_stack_print (yybottom, yytop)
2323     yytype_int16 *yybottom;
2324     yytype_int16 *yytop;
2325 #endif
2326 {
2327   YYFPRINTF (stderr, "Stack now");
2328   for (; yybottom <= yytop; yybottom++)
2329     {
2330       int yybot = *yybottom;
2331       YYFPRINTF (stderr, " %d", yybot);
2332     }
2333   YYFPRINTF (stderr, "\n");
2334 }
2335 
2336 # define YY_STACK_PRINT(Bottom, Top)				\
2337 do {								\
2338   if (yydebug)							\
2339     yy_stack_print ((Bottom), (Top));				\
2340 } while (YYID (0))
2341 
2342 
2343 /*------------------------------------------------.
2344 | Report that the YYRULE is going to be reduced.  |
2345 `------------------------------------------------*/
2346 
2347 #if (defined __STDC__ || defined __C99__FUNC__ \
2348      || defined __cplusplus || defined _MSC_VER)
2349 static void
yy_reduce_print(YYSTYPE * yyvsp,YYLTYPE * yylsp,int yyrule)2350 yy_reduce_print (YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule)
2351 #else
2352 static void
2353 yy_reduce_print (yyvsp, yylsp, yyrule)
2354     YYSTYPE *yyvsp;
2355     YYLTYPE *yylsp;
2356     int yyrule;
2357 #endif
2358 {
2359   int yynrhs = yyr2[yyrule];
2360   int yyi;
2361   unsigned long int yylno = yyrline[yyrule];
2362   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
2363 	     yyrule - 1, yylno);
2364   /* The symbols being reduced.  */
2365   for (yyi = 0; yyi < yynrhs; yyi++)
2366     {
2367       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
2368       yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
2369 		       &(yyvsp[(yyi + 1) - (yynrhs)])
2370 		       , &(yylsp[(yyi + 1) - (yynrhs)])		       );
2371       YYFPRINTF (stderr, "\n");
2372     }
2373 }
2374 
2375 # define YY_REDUCE_PRINT(Rule)		\
2376 do {					\
2377   if (yydebug)				\
2378     yy_reduce_print (yyvsp, yylsp, Rule); \
2379 } while (YYID (0))
2380 
2381 /* Nonzero means print parse trace.  It is left uninitialized so that
2382    multiple parsers can coexist.  */
2383 int yydebug;
2384 #else /* !YYDEBUG */
2385 # define YYDPRINTF(Args)
2386 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
2387 # define YY_STACK_PRINT(Bottom, Top)
2388 # define YY_REDUCE_PRINT(Rule)
2389 #endif /* !YYDEBUG */
2390 
2391 
2392 /* YYINITDEPTH -- initial size of the parser's stacks.  */
2393 #ifndef	YYINITDEPTH
2394 # define YYINITDEPTH 200
2395 #endif
2396 
2397 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
2398    if the built-in stack extension method is used).
2399 
2400    Do not make this value too large; the results are undefined if
2401    YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
2402    evaluated with infinite-precision integer arithmetic.  */
2403 
2404 #ifndef YYMAXDEPTH
2405 # define YYMAXDEPTH 10000
2406 #endif
2407 
2408 
2409 
2410 #if YYERROR_VERBOSE
2411 
2412 # ifndef yystrlen
2413 #  if defined __GLIBC__ && defined _STRING_H
2414 #   define yystrlen strlen
2415 #  else
2416 /* Return the length of YYSTR.  */
2417 #if (defined __STDC__ || defined __C99__FUNC__ \
2418      || defined __cplusplus || defined _MSC_VER)
2419 static YYSIZE_T
yystrlen(const char * yystr)2420 yystrlen (const char *yystr)
2421 #else
2422 static YYSIZE_T
2423 yystrlen (yystr)
2424     const char *yystr;
2425 #endif
2426 {
2427   YYSIZE_T yylen;
2428   for (yylen = 0; yystr[yylen]; yylen++)
2429     continue;
2430   return yylen;
2431 }
2432 #  endif
2433 # endif
2434 
2435 # ifndef yystpcpy
2436 #  if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
2437 #   define yystpcpy stpcpy
2438 #  else
2439 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
2440    YYDEST.  */
2441 #if (defined __STDC__ || defined __C99__FUNC__ \
2442      || defined __cplusplus || defined _MSC_VER)
2443 static char *
yystpcpy(char * yydest,const char * yysrc)2444 yystpcpy (char *yydest, const char *yysrc)
2445 #else
2446 static char *
2447 yystpcpy (yydest, yysrc)
2448     char *yydest;
2449     const char *yysrc;
2450 #endif
2451 {
2452   char *yyd = yydest;
2453   const char *yys = yysrc;
2454 
2455   while ((*yyd++ = *yys++) != '\0')
2456     continue;
2457 
2458   return yyd - 1;
2459 }
2460 #  endif
2461 # endif
2462 
2463 # ifndef yytnamerr
2464 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
2465    quotes and backslashes, so that it's suitable for yyerror.  The
2466    heuristic is that double-quoting is unnecessary unless the string
2467    contains an apostrophe, a comma, or backslash (other than
2468    backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
2469    null, do not copy; instead, return the length of what the result
2470    would have been.  */
2471 static YYSIZE_T
yytnamerr(char * yyres,const char * yystr)2472 yytnamerr (char *yyres, const char *yystr)
2473 {
2474   if (*yystr == '"')
2475     {
2476       YYSIZE_T yyn = 0;
2477       char const *yyp = yystr;
2478 
2479       for (;;)
2480 	switch (*++yyp)
2481 	  {
2482 	  case '\'':
2483 	  case ',':
2484 	    goto do_not_strip_quotes;
2485 
2486 	  case '\\':
2487 	    if (*++yyp != '\\')
2488 	      goto do_not_strip_quotes;
2489 	    /* Fall through.  */
2490 	  default:
2491 	    if (yyres)
2492 	      yyres[yyn] = *yyp;
2493 	    yyn++;
2494 	    break;
2495 
2496 	  case '"':
2497 	    if (yyres)
2498 	      yyres[yyn] = '\0';
2499 	    return yyn;
2500 	  }
2501     do_not_strip_quotes: ;
2502     }
2503 
2504   if (! yyres)
2505     return yystrlen (yystr);
2506 
2507   return yystpcpy (yyres, yystr) - yyres;
2508 }
2509 # endif
2510 
2511 /* Copy into YYRESULT an error message about the unexpected token
2512    YYCHAR while in state YYSTATE.  Return the number of bytes copied,
2513    including the terminating null byte.  If YYRESULT is null, do not
2514    copy anything; just return the number of bytes that would be
2515    copied.  As a special case, return 0 if an ordinary "syntax error"
2516    message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
2517    size calculation.  */
2518 static YYSIZE_T
yysyntax_error(char * yyresult,int yystate,int yychar)2519 yysyntax_error (char *yyresult, int yystate, int yychar)
2520 {
2521   int yyn = yypact[yystate];
2522 
2523   if (! (YYPACT_NINF < yyn && yyn <= YYLAST))
2524     return 0;
2525   else
2526     {
2527       int yytype = YYTRANSLATE (yychar);
2528       YYSIZE_T yysize0 = yytnamerr (0, yytname[yytype]);
2529       YYSIZE_T yysize = yysize0;
2530       YYSIZE_T yysize1;
2531       int yysize_overflow = 0;
2532       enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
2533       char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
2534       int yyx;
2535 
2536 # if 0
2537       /* This is so xgettext sees the translatable formats that are
2538 	 constructed on the fly.  */
2539       YY_("syntax error, unexpected %s");
2540       YY_("syntax error, unexpected %s, expecting %s");
2541       YY_("syntax error, unexpected %s, expecting %s or %s");
2542       YY_("syntax error, unexpected %s, expecting %s or %s or %s");
2543       YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s");
2544 # endif
2545       char *yyfmt;
2546       char const *yyf;
2547       static char const yyunexpected[] = "syntax error, unexpected %s";
2548       static char const yyexpecting[] = ", expecting %s";
2549       static char const yyor[] = " or %s";
2550       char yyformat[sizeof yyunexpected
2551 		    + sizeof yyexpecting - 1
2552 		    + ((YYERROR_VERBOSE_ARGS_MAXIMUM - 2)
2553 		       * (sizeof yyor - 1))];
2554       char const *yyprefix = yyexpecting;
2555 
2556       /* Start YYX at -YYN if negative to avoid negative indexes in
2557 	 YYCHECK.  */
2558       int yyxbegin = yyn < 0 ? -yyn : 0;
2559 
2560       /* Stay within bounds of both yycheck and yytname.  */
2561       int yychecklim = YYLAST - yyn + 1;
2562       int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
2563       int yycount = 1;
2564 
2565       yyarg[0] = yytname[yytype];
2566       yyfmt = yystpcpy (yyformat, yyunexpected);
2567 
2568       for (yyx = yyxbegin; yyx < yyxend; ++yyx)
2569 	if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR)
2570 	  {
2571 	    if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM)
2572 	      {
2573 		yycount = 1;
2574 		yysize = yysize0;
2575 		yyformat[sizeof yyunexpected - 1] = '\0';
2576 		break;
2577 	      }
2578 	    yyarg[yycount++] = yytname[yyx];
2579 	    yysize1 = yysize + yytnamerr (0, yytname[yyx]);
2580 	    yysize_overflow |= (yysize1 < yysize);
2581 	    yysize = yysize1;
2582 	    yyfmt = yystpcpy (yyfmt, yyprefix);
2583 	    yyprefix = yyor;
2584 	  }
2585 
2586       yyf = YY_(yyformat);
2587       yysize1 = yysize + yystrlen (yyf);
2588       yysize_overflow |= (yysize1 < yysize);
2589       yysize = yysize1;
2590 
2591       if (yysize_overflow)
2592 	return YYSIZE_MAXIMUM;
2593 
2594       if (yyresult)
2595 	{
2596 	  /* Avoid sprintf, as that infringes on the user's name space.
2597 	     Don't have undefined behavior even if the translation
2598 	     produced a string with the wrong number of "%s"s.  */
2599 	  char *yyp = yyresult;
2600 	  int yyi = 0;
2601 	  while ((*yyp = *yyf) != '\0')
2602 	    {
2603 	      if (*yyp == '%' && yyf[1] == 's' && yyi < yycount)
2604 		{
2605 		  yyp += yytnamerr (yyp, yyarg[yyi++]);
2606 		  yyf += 2;
2607 		}
2608 	      else
2609 		{
2610 		  yyp++;
2611 		  yyf++;
2612 		}
2613 	    }
2614 	}
2615       return yysize;
2616     }
2617 }
2618 #endif /* YYERROR_VERBOSE */
2619 
2620 
2621 /*-----------------------------------------------.
2622 | Release the memory associated to this symbol.  |
2623 `-----------------------------------------------*/
2624 
2625 /*ARGSUSED*/
2626 #if (defined __STDC__ || defined __C99__FUNC__ \
2627      || defined __cplusplus || defined _MSC_VER)
2628 static void
yydestruct(const char * yymsg,int yytype,YYSTYPE * yyvaluep,YYLTYPE * yylocationp)2629 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp)
2630 #else
2631 static void
2632 yydestruct (yymsg, yytype, yyvaluep, yylocationp)
2633     const char *yymsg;
2634     int yytype;
2635     YYSTYPE *yyvaluep;
2636     YYLTYPE *yylocationp;
2637 #endif
2638 {
2639   YYUSE (yyvaluep);
2640   YYUSE (yylocationp);
2641 
2642   if (!yymsg)
2643     yymsg = "Deleting";
2644   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
2645 
2646   switch (yytype)
2647     {
2648 
2649       default:
2650 	break;
2651     }
2652 }
2653 
2654 /* Prevent warnings from -Wmissing-prototypes.  */
2655 #ifdef YYPARSE_PARAM
2656 #if defined __STDC__ || defined __cplusplus
2657 int yyparse (void *YYPARSE_PARAM);
2658 #else
2659 int yyparse ();
2660 #endif
2661 #else /* ! YYPARSE_PARAM */
2662 #if defined __STDC__ || defined __cplusplus
2663 int yyparse (void);
2664 #else
2665 int yyparse ();
2666 #endif
2667 #endif /* ! YYPARSE_PARAM */
2668 
2669 
2670 
2671 
2672 
2673 /*-------------------------.
2674 | yyparse or yypush_parse.  |
2675 `-------------------------*/
2676 
2677 #ifdef YYPARSE_PARAM
2678 #if (defined __STDC__ || defined __C99__FUNC__ \
2679      || defined __cplusplus || defined _MSC_VER)
2680 int
yyparse(void * YYPARSE_PARAM)2681 yyparse (void *YYPARSE_PARAM)
2682 #else
2683 int
2684 yyparse (YYPARSE_PARAM)
2685     void *YYPARSE_PARAM;
2686 #endif
2687 #else /* ! YYPARSE_PARAM */
2688 #if (defined __STDC__ || defined __C99__FUNC__ \
2689      || defined __cplusplus || defined _MSC_VER)
2690 int
2691 yyparse (void)
2692 #else
2693 int
2694 yyparse ()
2695 
2696 #endif
2697 #endif
2698 {
2699 /* The lookahead symbol.  */
2700 int yychar;
2701 
2702 /* The semantic value of the lookahead symbol.  */
2703 YYSTYPE yylval;
2704 
2705 /* Location data for the lookahead symbol.  */
2706 YYLTYPE yylloc;
2707 
2708     /* Number of syntax errors so far.  */
2709     int yynerrs;
2710 
2711     int yystate;
2712     /* Number of tokens to shift before error messages enabled.  */
2713     int yyerrstatus;
2714 
2715     /* The stacks and their tools:
2716        `yyss': related to states.
2717        `yyvs': related to semantic values.
2718        `yyls': related to locations.
2719 
2720        Refer to the stacks thru separate pointers, to allow yyoverflow
2721        to reallocate them elsewhere.  */
2722 
2723     /* The state stack.  */
2724     yytype_int16 yyssa[YYINITDEPTH];
2725     yytype_int16 *yyss;
2726     yytype_int16 *yyssp;
2727 
2728     /* The semantic value stack.  */
2729     YYSTYPE yyvsa[YYINITDEPTH];
2730     YYSTYPE *yyvs;
2731     YYSTYPE *yyvsp;
2732 
2733     /* The location stack.  */
2734     YYLTYPE yylsa[YYINITDEPTH];
2735     YYLTYPE *yyls;
2736     YYLTYPE *yylsp;
2737 
2738     /* The locations where the error started and ended.  */
2739     YYLTYPE yyerror_range[2];
2740 
2741     YYSIZE_T yystacksize;
2742 
2743   int yyn;
2744   int yyresult;
2745   /* Lookahead token as an internal (translated) token number.  */
2746   int yytoken;
2747   /* The variables used to return semantic value and location from the
2748      action routines.  */
2749   YYSTYPE yyval;
2750   YYLTYPE yyloc;
2751 
2752 #if YYERROR_VERBOSE
2753   /* Buffer for error messages, and its allocated size.  */
2754   char yymsgbuf[128];
2755   char *yymsg = yymsgbuf;
2756   YYSIZE_T yymsg_alloc = sizeof yymsgbuf;
2757 #endif
2758 
2759 #define YYPOPSTACK(N)   (yyvsp -= (N), yyssp -= (N), yylsp -= (N))
2760 
2761   /* The number of symbols on the RHS of the reduced rule.
2762      Keep to zero when no symbol should be popped.  */
2763   int yylen = 0;
2764 
2765   yytoken = 0;
2766   yyss = yyssa;
2767   yyvs = yyvsa;
2768   yyls = yylsa;
2769   yystacksize = YYINITDEPTH;
2770 
2771   YYDPRINTF ((stderr, "Starting parse\n"));
2772 
2773   yystate = 0;
2774   yyerrstatus = 0;
2775   yynerrs = 0;
2776   yychar = YYEMPTY; /* Cause a token to be read.  */
2777 
2778   /* Initialize stack pointers.
2779      Waste one element of value and location stack
2780      so that they stay on the same level as the state stack.
2781      The wasted elements are never initialized.  */
2782   yyssp = yyss;
2783   yyvsp = yyvs;
2784   yylsp = yyls;
2785 
2786 #if YYLTYPE_IS_TRIVIAL
2787   /* Initialize the default location before parsing starts.  */
2788   yylloc.first_line   = yylloc.last_line   = 1;
2789   yylloc.first_column = yylloc.last_column = 1;
2790 #endif
2791 
2792   goto yysetstate;
2793 
2794 /*------------------------------------------------------------.
2795 | yynewstate -- Push a new state, which is found in yystate.  |
2796 `------------------------------------------------------------*/
2797  yynewstate:
2798   /* In all cases, when you get here, the value and location stacks
2799      have just been pushed.  So pushing a state here evens the stacks.  */
2800   yyssp++;
2801 
2802  yysetstate:
2803   *yyssp = yystate;
2804 
2805   if (yyss + yystacksize - 1 <= yyssp)
2806     {
2807       /* Get the current used size of the three stacks, in elements.  */
2808       YYSIZE_T yysize = yyssp - yyss + 1;
2809 
2810 #ifdef yyoverflow
2811       {
2812 	/* Give user a chance to reallocate the stack.  Use copies of
2813 	   these so that the &'s don't force the real ones into
2814 	   memory.  */
2815 	YYSTYPE *yyvs1 = yyvs;
2816 	yytype_int16 *yyss1 = yyss;
2817 	YYLTYPE *yyls1 = yyls;
2818 
2819 	/* Each stack pointer address is followed by the size of the
2820 	   data in use in that stack, in bytes.  This used to be a
2821 	   conditional around just the two extra args, but that might
2822 	   be undefined if yyoverflow is a macro.  */
2823 	yyoverflow (YY_("memory exhausted"),
2824 		    &yyss1, yysize * sizeof (*yyssp),
2825 		    &yyvs1, yysize * sizeof (*yyvsp),
2826 		    &yyls1, yysize * sizeof (*yylsp),
2827 		    &yystacksize);
2828 
2829 	yyls = yyls1;
2830 	yyss = yyss1;
2831 	yyvs = yyvs1;
2832       }
2833 #else /* no yyoverflow */
2834 # ifndef YYSTACK_RELOCATE
2835       goto yyexhaustedlab;
2836 # else
2837       /* Extend the stack our own way.  */
2838       if (YYMAXDEPTH <= yystacksize)
2839 	goto yyexhaustedlab;
2840       yystacksize *= 2;
2841       if (YYMAXDEPTH < yystacksize)
2842 	yystacksize = YYMAXDEPTH;
2843 
2844       {
2845 	yytype_int16 *yyss1 = yyss;
2846 	union yyalloc *yyptr =
2847 	  (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
2848 	if (! yyptr)
2849 	  goto yyexhaustedlab;
2850 	YYSTACK_RELOCATE (yyss_alloc, yyss);
2851 	YYSTACK_RELOCATE (yyvs_alloc, yyvs);
2852 	YYSTACK_RELOCATE (yyls_alloc, yyls);
2853 #  undef YYSTACK_RELOCATE
2854 	if (yyss1 != yyssa)
2855 	  YYSTACK_FREE (yyss1);
2856       }
2857 # endif
2858 #endif /* no yyoverflow */
2859 
2860       yyssp = yyss + yysize - 1;
2861       yyvsp = yyvs + yysize - 1;
2862       yylsp = yyls + yysize - 1;
2863 
2864       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
2865 		  (unsigned long int) yystacksize));
2866 
2867       if (yyss + yystacksize - 1 <= yyssp)
2868 	YYABORT;
2869     }
2870 
2871   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
2872 
2873   if (yystate == YYFINAL)
2874     YYACCEPT;
2875 
2876   goto yybackup;
2877 
2878 /*-----------.
2879 | yybackup.  |
2880 `-----------*/
2881 yybackup:
2882 
2883   /* Do appropriate processing given the current state.  Read a
2884      lookahead token if we need one and don't already have one.  */
2885 
2886   /* First try to decide what to do without reference to lookahead token.  */
2887   yyn = yypact[yystate];
2888   if (yyn == YYPACT_NINF)
2889     goto yydefault;
2890 
2891   /* Not known => get a lookahead token if don't already have one.  */
2892 
2893   /* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
2894   if (yychar == YYEMPTY)
2895     {
2896       YYDPRINTF ((stderr, "Reading a token: "));
2897       yychar = YYLEX;
2898     }
2899 
2900   if (yychar <= YYEOF)
2901     {
2902       yychar = yytoken = YYEOF;
2903       YYDPRINTF ((stderr, "Now at end of input.\n"));
2904     }
2905   else
2906     {
2907       yytoken = YYTRANSLATE (yychar);
2908       YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
2909     }
2910 
2911   /* If the proper action on seeing token YYTOKEN is to reduce or to
2912      detect an error, take that action.  */
2913   yyn += yytoken;
2914   if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
2915     goto yydefault;
2916   yyn = yytable[yyn];
2917   if (yyn <= 0)
2918     {
2919       if (yyn == 0 || yyn == YYTABLE_NINF)
2920 	goto yyerrlab;
2921       yyn = -yyn;
2922       goto yyreduce;
2923     }
2924 
2925   /* Count tokens shifted since error; after three, turn off error
2926      status.  */
2927   if (yyerrstatus)
2928     yyerrstatus--;
2929 
2930   /* Shift the lookahead token.  */
2931   YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
2932 
2933   /* Discard the shifted token.  */
2934   yychar = YYEMPTY;
2935 
2936   yystate = yyn;
2937   *++yyvsp = yylval;
2938   *++yylsp = yylloc;
2939   goto yynewstate;
2940 
2941 
2942 /*-----------------------------------------------------------.
2943 | yydefault -- do the default action for the current state.  |
2944 `-----------------------------------------------------------*/
2945 yydefault:
2946   yyn = yydefact[yystate];
2947   if (yyn == 0)
2948     goto yyerrlab;
2949   goto yyreduce;
2950 
2951 
2952 /*-----------------------------.
2953 | yyreduce -- Do a reduction.  |
2954 `-----------------------------*/
2955 yyreduce:
2956   /* yyn is the number of a rule to reduce with.  */
2957   yylen = yyr2[yyn];
2958 
2959   /* If YYLEN is nonzero, implement the default value of the action:
2960      `$$ = $1'.
2961 
2962      Otherwise, the following line sets YYVAL to garbage.
2963      This behavior is undocumented and Bison
2964      users should not rely upon it.  Assigning to YYVAL
2965      unconditionally makes the parser a bit smaller, and it avoids a
2966      GCC warning that YYVAL may be used uninitialized.  */
2967   yyval = yyvsp[1-yylen];
2968 
2969   /* Default location.  */
2970   YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
2971   YY_REDUCE_PRINT (yyn);
2972   switch (yyn)
2973     {
2974         case 2:
2975 
2976 /* Line 1455 of yacc.c  */
2977 #line 293 "parser/Grammar.y"
2978     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) NullNode(GLOBAL_DATA), 0, 1); ;}
2979     break;
2980 
2981   case 3:
2982 
2983 /* Line 1455 of yacc.c  */
2984 #line 294 "parser/Grammar.y"
2985     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) BooleanNode(GLOBAL_DATA, true), 0, 1); ;}
2986     break;
2987 
2988   case 4:
2989 
2990 /* Line 1455 of yacc.c  */
2991 #line 295 "parser/Grammar.y"
2992     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) BooleanNode(GLOBAL_DATA, false), 0, 1); ;}
2993     break;
2994 
2995   case 5:
2996 
2997 /* Line 1455 of yacc.c  */
2998 #line 296 "parser/Grammar.y"
2999     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeNumberNode(GLOBAL_DATA, (yyvsp[(1) - (1)].doubleValue)), 0, 1); ;}
3000     break;
3001 
3002   case 6:
3003 
3004 /* Line 1455 of yacc.c  */
3005 #line 297 "parser/Grammar.y"
3006     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) StringNode(GLOBAL_DATA, *(yyvsp[(1) - (1)].ident)), 0, 1); ;}
3007     break;
3008 
3009   case 7:
3010 
3011 /* Line 1455 of yacc.c  */
3012 #line 298 "parser/Grammar.y"
3013     {
3014                                             Lexer& l = *GLOBAL_DATA->lexer;
3015                                             const Identifier* pattern;
3016                                             const Identifier* flags;
3017                                             if (!l.scanRegExp(pattern, flags))
3018                                                 YYABORT;
3019                                             RegExpNode* node = new (GLOBAL_DATA) RegExpNode(GLOBAL_DATA, *pattern, *flags);
3020                                             int size = pattern->size() + 2; // + 2 for the two /'s
3021                                             setExceptionLocation(node, (yylsp[(1) - (1)]).first_column, (yylsp[(1) - (1)]).first_column + size, (yylsp[(1) - (1)]).first_column + size);
3022                                             (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, 0, 0);
3023                                         ;}
3024     break;
3025 
3026   case 8:
3027 
3028 /* Line 1455 of yacc.c  */
3029 #line 309 "parser/Grammar.y"
3030     {
3031                                             Lexer& l = *GLOBAL_DATA->lexer;
3032                                             const Identifier* pattern;
3033                                             const Identifier* flags;
3034                                             if (!l.scanRegExp(pattern, flags, '='))
3035                                                 YYABORT;
3036                                             RegExpNode* node = new (GLOBAL_DATA) RegExpNode(GLOBAL_DATA, *pattern, *flags);
3037                                             int size = pattern->size() + 2; // + 2 for the two /'s
3038                                             setExceptionLocation(node, (yylsp[(1) - (1)]).first_column, (yylsp[(1) - (1)]).first_column + size, (yylsp[(1) - (1)]).first_column + size);
3039                                             (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, 0, 0);
3040                                         ;}
3041     break;
3042 
3043   case 9:
3044 
3045 /* Line 1455 of yacc.c  */
3046 #line 323 "parser/Grammar.y"
3047     { (yyval.propertyNode) = createNodeInfo<PropertyNode*>(new (GLOBAL_DATA) PropertyNode(GLOBAL_DATA, *(yyvsp[(1) - (3)].ident), (yyvsp[(3) - (3)].expressionNode).m_node, PropertyNode::Constant), (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3048     break;
3049 
3050   case 10:
3051 
3052 /* Line 1455 of yacc.c  */
3053 #line 324 "parser/Grammar.y"
3054     { (yyval.propertyNode) = createNodeInfo<PropertyNode*>(new (GLOBAL_DATA) PropertyNode(GLOBAL_DATA, *(yyvsp[(1) - (3)].ident), (yyvsp[(3) - (3)].expressionNode).m_node, PropertyNode::Constant), (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3055     break;
3056 
3057   case 11:
3058 
3059 /* Line 1455 of yacc.c  */
3060 #line 325 "parser/Grammar.y"
3061     { (yyval.propertyNode) = createNodeInfo<PropertyNode*>(new (GLOBAL_DATA) PropertyNode(GLOBAL_DATA, (yyvsp[(1) - (3)].doubleValue), (yyvsp[(3) - (3)].expressionNode).m_node, PropertyNode::Constant), (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3062     break;
3063 
3064   case 12:
3065 
3066 /* Line 1455 of yacc.c  */
3067 #line 326 "parser/Grammar.y"
3068     { (yyval.propertyNode) = createNodeInfo<PropertyNode*>(makeGetterOrSetterPropertyNode(GLOBAL_DATA, *(yyvsp[(1) - (7)].ident), *(yyvsp[(2) - (7)].ident), 0, (yyvsp[(6) - (7)].functionBodyNode), GLOBAL_DATA->lexer->sourceCode((yyvsp[(5) - (7)].intValue), (yyvsp[(7) - (7)].intValue), (yylsp[(5) - (7)]).first_line)), ClosureFeature, 0); setStatementLocation((yyvsp[(6) - (7)].functionBodyNode), (yylsp[(5) - (7)]), (yylsp[(7) - (7)])); if (!(yyval.propertyNode).m_node) YYABORT; ;}
3069     break;
3070 
3071   case 13:
3072 
3073 /* Line 1455 of yacc.c  */
3074 #line 328 "parser/Grammar.y"
3075     {
3076                                                                  (yyval.propertyNode) = createNodeInfo<PropertyNode*>(makeGetterOrSetterPropertyNode(GLOBAL_DATA, *(yyvsp[(1) - (8)].ident), *(yyvsp[(2) - (8)].ident), (yyvsp[(4) - (8)].parameterList).m_node.head, (yyvsp[(7) - (8)].functionBodyNode), GLOBAL_DATA->lexer->sourceCode((yyvsp[(6) - (8)].intValue), (yyvsp[(8) - (8)].intValue), (yylsp[(6) - (8)]).first_line)), (yyvsp[(4) - (8)].parameterList).m_features | ClosureFeature, 0);
3077                                                                  if ((yyvsp[(4) - (8)].parameterList).m_features & ArgumentsFeature)
3078                                                                      (yyvsp[(7) - (8)].functionBodyNode)->setUsesArguments();
3079                                                                  setStatementLocation((yyvsp[(7) - (8)].functionBodyNode), (yylsp[(6) - (8)]), (yylsp[(8) - (8)]));
3080                                                                  if (!(yyval.propertyNode).m_node)
3081                                                                      YYABORT;
3082                                                              ;}
3083     break;
3084 
3085   case 14:
3086 
3087 /* Line 1455 of yacc.c  */
3088 #line 339 "parser/Grammar.y"
3089     { (yyval.propertyList).m_node.head = new (GLOBAL_DATA) PropertyListNode(GLOBAL_DATA, (yyvsp[(1) - (1)].propertyNode).m_node);
3090                                           (yyval.propertyList).m_node.tail = (yyval.propertyList).m_node.head;
3091                                           (yyval.propertyList).m_features = (yyvsp[(1) - (1)].propertyNode).m_features;
3092                                           (yyval.propertyList).m_numConstants = (yyvsp[(1) - (1)].propertyNode).m_numConstants; ;}
3093     break;
3094 
3095   case 15:
3096 
3097 /* Line 1455 of yacc.c  */
3098 #line 343 "parser/Grammar.y"
3099     { (yyval.propertyList).m_node.head = (yyvsp[(1) - (3)].propertyList).m_node.head;
3100                                           (yyval.propertyList).m_node.tail = new (GLOBAL_DATA) PropertyListNode(GLOBAL_DATA, (yyvsp[(3) - (3)].propertyNode).m_node, (yyvsp[(1) - (3)].propertyList).m_node.tail);
3101                                           (yyval.propertyList).m_features = (yyvsp[(1) - (3)].propertyList).m_features | (yyvsp[(3) - (3)].propertyNode).m_features;
3102                                           (yyval.propertyList).m_numConstants = (yyvsp[(1) - (3)].propertyList).m_numConstants + (yyvsp[(3) - (3)].propertyNode).m_numConstants; ;}
3103     break;
3104 
3105   case 17:
3106 
3107 /* Line 1455 of yacc.c  */
3108 #line 351 "parser/Grammar.y"
3109     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ObjectLiteralNode(GLOBAL_DATA), 0, 0); ;}
3110     break;
3111 
3112   case 18:
3113 
3114 /* Line 1455 of yacc.c  */
3115 #line 352 "parser/Grammar.y"
3116     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ObjectLiteralNode(GLOBAL_DATA, (yyvsp[(2) - (3)].propertyList).m_node.head), (yyvsp[(2) - (3)].propertyList).m_features, (yyvsp[(2) - (3)].propertyList).m_numConstants); ;}
3117     break;
3118 
3119   case 19:
3120 
3121 /* Line 1455 of yacc.c  */
3122 #line 354 "parser/Grammar.y"
3123     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ObjectLiteralNode(GLOBAL_DATA, (yyvsp[(2) - (4)].propertyList).m_node.head), (yyvsp[(2) - (4)].propertyList).m_features, (yyvsp[(2) - (4)].propertyList).m_numConstants); ;}
3124     break;
3125 
3126   case 20:
3127 
3128 /* Line 1455 of yacc.c  */
3129 #line 358 "parser/Grammar.y"
3130     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ThisNode(GLOBAL_DATA), ThisFeature, 0); ;}
3131     break;
3132 
3133   case 23:
3134 
3135 /* Line 1455 of yacc.c  */
3136 #line 361 "parser/Grammar.y"
3137     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ResolveNode(GLOBAL_DATA, *(yyvsp[(1) - (1)].ident), (yylsp[(1) - (1)]).first_column), (*(yyvsp[(1) - (1)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0, 0); ;}
3138     break;
3139 
3140   case 24:
3141 
3142 /* Line 1455 of yacc.c  */
3143 #line 362 "parser/Grammar.y"
3144     { (yyval.expressionNode) = (yyvsp[(2) - (3)].expressionNode); ;}
3145     break;
3146 
3147   case 25:
3148 
3149 /* Line 1455 of yacc.c  */
3150 #line 366 "parser/Grammar.y"
3151     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ArrayNode(GLOBAL_DATA, (yyvsp[(2) - (3)].intValue)), 0, (yyvsp[(2) - (3)].intValue) ? 1 : 0); ;}
3152     break;
3153 
3154   case 26:
3155 
3156 /* Line 1455 of yacc.c  */
3157 #line 367 "parser/Grammar.y"
3158     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ArrayNode(GLOBAL_DATA, (yyvsp[(2) - (3)].elementList).m_node.head), (yyvsp[(2) - (3)].elementList).m_features, (yyvsp[(2) - (3)].elementList).m_numConstants); ;}
3159     break;
3160 
3161   case 27:
3162 
3163 /* Line 1455 of yacc.c  */
3164 #line 368 "parser/Grammar.y"
3165     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ArrayNode(GLOBAL_DATA, (yyvsp[(4) - (5)].intValue), (yyvsp[(2) - (5)].elementList).m_node.head), (yyvsp[(2) - (5)].elementList).m_features, (yyvsp[(4) - (5)].intValue) ? (yyvsp[(2) - (5)].elementList).m_numConstants + 1 : (yyvsp[(2) - (5)].elementList).m_numConstants); ;}
3166     break;
3167 
3168   case 28:
3169 
3170 /* Line 1455 of yacc.c  */
3171 #line 372 "parser/Grammar.y"
3172     { (yyval.elementList).m_node.head = new (GLOBAL_DATA) ElementNode(GLOBAL_DATA, (yyvsp[(1) - (2)].intValue), (yyvsp[(2) - (2)].expressionNode).m_node);
3173                                           (yyval.elementList).m_node.tail = (yyval.elementList).m_node.head;
3174                                           (yyval.elementList).m_features = (yyvsp[(2) - (2)].expressionNode).m_features;
3175                                           (yyval.elementList).m_numConstants = (yyvsp[(2) - (2)].expressionNode).m_numConstants; ;}
3176     break;
3177 
3178   case 29:
3179 
3180 /* Line 1455 of yacc.c  */
3181 #line 377 "parser/Grammar.y"
3182     { (yyval.elementList).m_node.head = (yyvsp[(1) - (4)].elementList).m_node.head;
3183                                           (yyval.elementList).m_node.tail = new (GLOBAL_DATA) ElementNode(GLOBAL_DATA, (yyvsp[(1) - (4)].elementList).m_node.tail, (yyvsp[(3) - (4)].intValue), (yyvsp[(4) - (4)].expressionNode).m_node);
3184                                           (yyval.elementList).m_features = (yyvsp[(1) - (4)].elementList).m_features | (yyvsp[(4) - (4)].expressionNode).m_features;
3185                                           (yyval.elementList).m_numConstants = (yyvsp[(1) - (4)].elementList).m_numConstants + (yyvsp[(4) - (4)].expressionNode).m_numConstants; ;}
3186     break;
3187 
3188   case 30:
3189 
3190 /* Line 1455 of yacc.c  */
3191 #line 384 "parser/Grammar.y"
3192     { (yyval.intValue) = 0; ;}
3193     break;
3194 
3195   case 32:
3196 
3197 /* Line 1455 of yacc.c  */
3198 #line 389 "parser/Grammar.y"
3199     { (yyval.intValue) = 1; ;}
3200     break;
3201 
3202   case 33:
3203 
3204 /* Line 1455 of yacc.c  */
3205 #line 390 "parser/Grammar.y"
3206     { (yyval.intValue) = (yyvsp[(1) - (2)].intValue) + 1; ;}
3207     break;
3208 
3209   case 35:
3210 
3211 /* Line 1455 of yacc.c  */
3212 #line 395 "parser/Grammar.y"
3213     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>((yyvsp[(1) - (1)].funcExprNode).m_node, (yyvsp[(1) - (1)].funcExprNode).m_features, (yyvsp[(1) - (1)].funcExprNode).m_numConstants); ;}
3214     break;
3215 
3216   case 36:
3217 
3218 /* Line 1455 of yacc.c  */
3219 #line 396 "parser/Grammar.y"
3220     { BracketAccessorNode* node = new (GLOBAL_DATA) BracketAccessorNode(GLOBAL_DATA, (yyvsp[(1) - (4)].expressionNode).m_node, (yyvsp[(3) - (4)].expressionNode).m_node, (yyvsp[(3) - (4)].expressionNode).m_features & AssignFeature);
3221                                           setExceptionLocation(node, (yylsp[(1) - (4)]).first_column, (yylsp[(1) - (4)]).last_column, (yylsp[(4) - (4)]).last_column);
3222                                           (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(1) - (4)].expressionNode).m_features | (yyvsp[(3) - (4)].expressionNode).m_features, (yyvsp[(1) - (4)].expressionNode).m_numConstants + (yyvsp[(3) - (4)].expressionNode).m_numConstants);
3223                                         ;}
3224     break;
3225 
3226   case 37:
3227 
3228 /* Line 1455 of yacc.c  */
3229 #line 400 "parser/Grammar.y"
3230     { DotAccessorNode* node = new (GLOBAL_DATA) DotAccessorNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, *(yyvsp[(3) - (3)].ident));
3231                                           setExceptionLocation(node, (yylsp[(1) - (3)]).first_column, (yylsp[(1) - (3)]).last_column, (yylsp[(3) - (3)]).last_column);
3232                                           (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(1) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants);
3233                                         ;}
3234     break;
3235 
3236   case 38:
3237 
3238 /* Line 1455 of yacc.c  */
3239 #line 404 "parser/Grammar.y"
3240     { NewExprNode* node = new (GLOBAL_DATA) NewExprNode(GLOBAL_DATA, (yyvsp[(2) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].argumentsNode).m_node);
3241                                           setExceptionLocation(node, (yylsp[(1) - (3)]).first_column, (yylsp[(2) - (3)]).last_column, (yylsp[(3) - (3)]).last_column);
3242                                           (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(2) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].argumentsNode).m_features, (yyvsp[(2) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].argumentsNode).m_numConstants);
3243                                         ;}
3244     break;
3245 
3246   case 40:
3247 
3248 /* Line 1455 of yacc.c  */
3249 #line 412 "parser/Grammar.y"
3250     { BracketAccessorNode* node = new (GLOBAL_DATA) BracketAccessorNode(GLOBAL_DATA, (yyvsp[(1) - (4)].expressionNode).m_node, (yyvsp[(3) - (4)].expressionNode).m_node, (yyvsp[(3) - (4)].expressionNode).m_features & AssignFeature);
3251                                           setExceptionLocation(node, (yylsp[(1) - (4)]).first_column, (yylsp[(1) - (4)]).last_column, (yylsp[(4) - (4)]).last_column);
3252                                           (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(1) - (4)].expressionNode).m_features | (yyvsp[(3) - (4)].expressionNode).m_features, (yyvsp[(1) - (4)].expressionNode).m_numConstants + (yyvsp[(3) - (4)].expressionNode).m_numConstants);
3253                                         ;}
3254     break;
3255 
3256   case 41:
3257 
3258 /* Line 1455 of yacc.c  */
3259 #line 416 "parser/Grammar.y"
3260     { DotAccessorNode* node = new (GLOBAL_DATA) DotAccessorNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, *(yyvsp[(3) - (3)].ident));
3261                                           setExceptionLocation(node, (yylsp[(1) - (3)]).first_column, (yylsp[(1) - (3)]).last_column, (yylsp[(3) - (3)]).last_column);
3262                                           (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(1) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants);
3263                                         ;}
3264     break;
3265 
3266   case 42:
3267 
3268 /* Line 1455 of yacc.c  */
3269 #line 420 "parser/Grammar.y"
3270     { NewExprNode* node = new (GLOBAL_DATA) NewExprNode(GLOBAL_DATA, (yyvsp[(2) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].argumentsNode).m_node);
3271                                           setExceptionLocation(node, (yylsp[(1) - (3)]).first_column, (yylsp[(2) - (3)]).last_column, (yylsp[(3) - (3)]).last_column);
3272                                           (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(2) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].argumentsNode).m_features, (yyvsp[(2) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].argumentsNode).m_numConstants);
3273                                         ;}
3274     break;
3275 
3276   case 44:
3277 
3278 /* Line 1455 of yacc.c  */
3279 #line 428 "parser/Grammar.y"
3280     { NewExprNode* node = new (GLOBAL_DATA) NewExprNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node);
3281                                           setExceptionLocation(node, (yylsp[(1) - (2)]).first_column, (yylsp[(2) - (2)]).last_column, (yylsp[(2) - (2)]).last_column);
3282                                           (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(2) - (2)].expressionNode).m_features, (yyvsp[(2) - (2)].expressionNode).m_numConstants);
3283                                         ;}
3284     break;
3285 
3286   case 46:
3287 
3288 /* Line 1455 of yacc.c  */
3289 #line 436 "parser/Grammar.y"
3290     { NewExprNode* node = new (GLOBAL_DATA) NewExprNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node);
3291                                           setExceptionLocation(node, (yylsp[(1) - (2)]).first_column, (yylsp[(2) - (2)]).last_column, (yylsp[(2) - (2)]).last_column);
3292                                           (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(2) - (2)].expressionNode).m_features, (yyvsp[(2) - (2)].expressionNode).m_numConstants);
3293                                         ;}
3294     break;
3295 
3296   case 47:
3297 
3298 /* Line 1455 of yacc.c  */
3299 #line 443 "parser/Grammar.y"
3300     { (yyval.expressionNode) = makeFunctionCallNode(GLOBAL_DATA, (yyvsp[(1) - (2)].expressionNode), (yyvsp[(2) - (2)].argumentsNode), (yylsp[(1) - (2)]).first_column, (yylsp[(1) - (2)]).last_column, (yylsp[(2) - (2)]).last_column); ;}
3301     break;
3302 
3303   case 48:
3304 
3305 /* Line 1455 of yacc.c  */
3306 #line 444 "parser/Grammar.y"
3307     { (yyval.expressionNode) = makeFunctionCallNode(GLOBAL_DATA, (yyvsp[(1) - (2)].expressionNode), (yyvsp[(2) - (2)].argumentsNode), (yylsp[(1) - (2)]).first_column, (yylsp[(1) - (2)]).last_column, (yylsp[(2) - (2)]).last_column); ;}
3308     break;
3309 
3310   case 49:
3311 
3312 /* Line 1455 of yacc.c  */
3313 #line 445 "parser/Grammar.y"
3314     { BracketAccessorNode* node = new (GLOBAL_DATA) BracketAccessorNode(GLOBAL_DATA, (yyvsp[(1) - (4)].expressionNode).m_node, (yyvsp[(3) - (4)].expressionNode).m_node, (yyvsp[(3) - (4)].expressionNode).m_features & AssignFeature);
3315                                           setExceptionLocation(node, (yylsp[(1) - (4)]).first_column, (yylsp[(1) - (4)]).last_column, (yylsp[(4) - (4)]).last_column);
3316                                           (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(1) - (4)].expressionNode).m_features | (yyvsp[(3) - (4)].expressionNode).m_features, (yyvsp[(1) - (4)].expressionNode).m_numConstants + (yyvsp[(3) - (4)].expressionNode).m_numConstants);
3317                                         ;}
3318     break;
3319 
3320   case 50:
3321 
3322 /* Line 1455 of yacc.c  */
3323 #line 449 "parser/Grammar.y"
3324     { DotAccessorNode* node = new (GLOBAL_DATA) DotAccessorNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, *(yyvsp[(3) - (3)].ident));
3325                                           setExceptionLocation(node, (yylsp[(1) - (3)]).first_column, (yylsp[(1) - (3)]).last_column, (yylsp[(3) - (3)]).last_column);
3326                                           (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(1) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants); ;}
3327     break;
3328 
3329   case 51:
3330 
3331 /* Line 1455 of yacc.c  */
3332 #line 455 "parser/Grammar.y"
3333     { (yyval.expressionNode) = makeFunctionCallNode(GLOBAL_DATA, (yyvsp[(1) - (2)].expressionNode), (yyvsp[(2) - (2)].argumentsNode), (yylsp[(1) - (2)]).first_column, (yylsp[(1) - (2)]).last_column, (yylsp[(2) - (2)]).last_column); ;}
3334     break;
3335 
3336   case 52:
3337 
3338 /* Line 1455 of yacc.c  */
3339 #line 456 "parser/Grammar.y"
3340     { (yyval.expressionNode) = makeFunctionCallNode(GLOBAL_DATA, (yyvsp[(1) - (2)].expressionNode), (yyvsp[(2) - (2)].argumentsNode), (yylsp[(1) - (2)]).first_column, (yylsp[(1) - (2)]).last_column, (yylsp[(2) - (2)]).last_column); ;}
3341     break;
3342 
3343   case 53:
3344 
3345 /* Line 1455 of yacc.c  */
3346 #line 457 "parser/Grammar.y"
3347     { BracketAccessorNode* node = new (GLOBAL_DATA) BracketAccessorNode(GLOBAL_DATA, (yyvsp[(1) - (4)].expressionNode).m_node, (yyvsp[(3) - (4)].expressionNode).m_node, (yyvsp[(3) - (4)].expressionNode).m_features & AssignFeature);
3348                                           setExceptionLocation(node, (yylsp[(1) - (4)]).first_column, (yylsp[(1) - (4)]).last_column, (yylsp[(4) - (4)]).last_column);
3349                                           (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(1) - (4)].expressionNode).m_features | (yyvsp[(3) - (4)].expressionNode).m_features, (yyvsp[(1) - (4)].expressionNode).m_numConstants + (yyvsp[(3) - (4)].expressionNode).m_numConstants);
3350                                         ;}
3351     break;
3352 
3353   case 54:
3354 
3355 /* Line 1455 of yacc.c  */
3356 #line 461 "parser/Grammar.y"
3357     { DotAccessorNode* node = new (GLOBAL_DATA) DotAccessorNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, *(yyvsp[(3) - (3)].ident));
3358                                           setExceptionLocation(node, (yylsp[(1) - (3)]).first_column, (yylsp[(1) - (3)]).last_column, (yylsp[(3) - (3)]).last_column);
3359                                           (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(1) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants);
3360                                         ;}
3361     break;
3362 
3363   case 55:
3364 
3365 /* Line 1455 of yacc.c  */
3366 #line 468 "parser/Grammar.y"
3367     { (yyval.argumentsNode) = createNodeInfo<ArgumentsNode*>(new (GLOBAL_DATA) ArgumentsNode(GLOBAL_DATA), 0, 0); ;}
3368     break;
3369 
3370   case 56:
3371 
3372 /* Line 1455 of yacc.c  */
3373 #line 469 "parser/Grammar.y"
3374     { (yyval.argumentsNode) = createNodeInfo<ArgumentsNode*>(new (GLOBAL_DATA) ArgumentsNode(GLOBAL_DATA, (yyvsp[(2) - (3)].argumentList).m_node.head), (yyvsp[(2) - (3)].argumentList).m_features, (yyvsp[(2) - (3)].argumentList).m_numConstants); ;}
3375     break;
3376 
3377   case 57:
3378 
3379 /* Line 1455 of yacc.c  */
3380 #line 473 "parser/Grammar.y"
3381     { (yyval.argumentList).m_node.head = new (GLOBAL_DATA) ArgumentListNode(GLOBAL_DATA, (yyvsp[(1) - (1)].expressionNode).m_node);
3382                                           (yyval.argumentList).m_node.tail = (yyval.argumentList).m_node.head;
3383                                           (yyval.argumentList).m_features = (yyvsp[(1) - (1)].expressionNode).m_features;
3384                                           (yyval.argumentList).m_numConstants = (yyvsp[(1) - (1)].expressionNode).m_numConstants; ;}
3385     break;
3386 
3387   case 58:
3388 
3389 /* Line 1455 of yacc.c  */
3390 #line 477 "parser/Grammar.y"
3391     { (yyval.argumentList).m_node.head = (yyvsp[(1) - (3)].argumentList).m_node.head;
3392                                           (yyval.argumentList).m_node.tail = new (GLOBAL_DATA) ArgumentListNode(GLOBAL_DATA, (yyvsp[(1) - (3)].argumentList).m_node.tail, (yyvsp[(3) - (3)].expressionNode).m_node);
3393                                           (yyval.argumentList).m_features = (yyvsp[(1) - (3)].argumentList).m_features | (yyvsp[(3) - (3)].expressionNode).m_features;
3394                                           (yyval.argumentList).m_numConstants = (yyvsp[(1) - (3)].argumentList).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants; ;}
3395     break;
3396 
3397   case 64:
3398 
3399 /* Line 1455 of yacc.c  */
3400 #line 495 "parser/Grammar.y"
3401     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makePostfixNode(GLOBAL_DATA, (yyvsp[(1) - (2)].expressionNode).m_node, OpPlusPlus, (yylsp[(1) - (2)]).first_column, (yylsp[(1) - (2)]).last_column, (yylsp[(2) - (2)]).last_column), (yyvsp[(1) - (2)].expressionNode).m_features | AssignFeature, (yyvsp[(1) - (2)].expressionNode).m_numConstants); ;}
3402     break;
3403 
3404   case 65:
3405 
3406 /* Line 1455 of yacc.c  */
3407 #line 496 "parser/Grammar.y"
3408     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makePostfixNode(GLOBAL_DATA, (yyvsp[(1) - (2)].expressionNode).m_node, OpMinusMinus, (yylsp[(1) - (2)]).first_column, (yylsp[(1) - (2)]).last_column, (yylsp[(2) - (2)]).last_column), (yyvsp[(1) - (2)].expressionNode).m_features | AssignFeature, (yyvsp[(1) - (2)].expressionNode).m_numConstants); ;}
3409     break;
3410 
3411   case 67:
3412 
3413 /* Line 1455 of yacc.c  */
3414 #line 501 "parser/Grammar.y"
3415     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makePostfixNode(GLOBAL_DATA, (yyvsp[(1) - (2)].expressionNode).m_node, OpPlusPlus, (yylsp[(1) - (2)]).first_column, (yylsp[(1) - (2)]).last_column, (yylsp[(2) - (2)]).last_column), (yyvsp[(1) - (2)].expressionNode).m_features | AssignFeature, (yyvsp[(1) - (2)].expressionNode).m_numConstants); ;}
3416     break;
3417 
3418   case 68:
3419 
3420 /* Line 1455 of yacc.c  */
3421 #line 502 "parser/Grammar.y"
3422     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makePostfixNode(GLOBAL_DATA, (yyvsp[(1) - (2)].expressionNode).m_node, OpMinusMinus, (yylsp[(1) - (2)]).first_column, (yylsp[(1) - (2)]).last_column, (yylsp[(2) - (2)]).last_column), (yyvsp[(1) - (2)].expressionNode).m_features | AssignFeature, (yyvsp[(1) - (2)].expressionNode).m_numConstants); ;}
3423     break;
3424 
3425   case 69:
3426 
3427 /* Line 1455 of yacc.c  */
3428 #line 506 "parser/Grammar.y"
3429     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeDeleteNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node, (yylsp[(1) - (2)]).first_column, (yylsp[(2) - (2)]).last_column, (yylsp[(2) - (2)]).last_column), (yyvsp[(2) - (2)].expressionNode).m_features, (yyvsp[(2) - (2)].expressionNode).m_numConstants); ;}
3430     break;
3431 
3432   case 70:
3433 
3434 /* Line 1455 of yacc.c  */
3435 #line 507 "parser/Grammar.y"
3436     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) VoidNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node), (yyvsp[(2) - (2)].expressionNode).m_features, (yyvsp[(2) - (2)].expressionNode).m_numConstants + 1); ;}
3437     break;
3438 
3439   case 71:
3440 
3441 /* Line 1455 of yacc.c  */
3442 #line 508 "parser/Grammar.y"
3443     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeTypeOfNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node), (yyvsp[(2) - (2)].expressionNode).m_features, (yyvsp[(2) - (2)].expressionNode).m_numConstants); ;}
3444     break;
3445 
3446   case 72:
3447 
3448 /* Line 1455 of yacc.c  */
3449 #line 509 "parser/Grammar.y"
3450     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makePrefixNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node, OpPlusPlus, (yylsp[(1) - (2)]).first_column, (yylsp[(2) - (2)]).first_column + 1, (yylsp[(2) - (2)]).last_column), (yyvsp[(2) - (2)].expressionNode).m_features | AssignFeature, (yyvsp[(2) - (2)].expressionNode).m_numConstants); ;}
3451     break;
3452 
3453   case 73:
3454 
3455 /* Line 1455 of yacc.c  */
3456 #line 510 "parser/Grammar.y"
3457     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makePrefixNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node, OpPlusPlus, (yylsp[(1) - (2)]).first_column, (yylsp[(2) - (2)]).first_column + 1, (yylsp[(2) - (2)]).last_column), (yyvsp[(2) - (2)].expressionNode).m_features | AssignFeature, (yyvsp[(2) - (2)].expressionNode).m_numConstants); ;}
3458     break;
3459 
3460   case 74:
3461 
3462 /* Line 1455 of yacc.c  */
3463 #line 511 "parser/Grammar.y"
3464     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makePrefixNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node, OpMinusMinus, (yylsp[(1) - (2)]).first_column, (yylsp[(2) - (2)]).first_column + 1, (yylsp[(2) - (2)]).last_column), (yyvsp[(2) - (2)].expressionNode).m_features | AssignFeature, (yyvsp[(2) - (2)].expressionNode).m_numConstants); ;}
3465     break;
3466 
3467   case 75:
3468 
3469 /* Line 1455 of yacc.c  */
3470 #line 512 "parser/Grammar.y"
3471     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makePrefixNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node, OpMinusMinus, (yylsp[(1) - (2)]).first_column, (yylsp[(2) - (2)]).first_column + 1, (yylsp[(2) - (2)]).last_column), (yyvsp[(2) - (2)].expressionNode).m_features | AssignFeature, (yyvsp[(2) - (2)].expressionNode).m_numConstants); ;}
3472     break;
3473 
3474   case 76:
3475 
3476 /* Line 1455 of yacc.c  */
3477 #line 513 "parser/Grammar.y"
3478     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) UnaryPlusNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node), (yyvsp[(2) - (2)].expressionNode).m_features, (yyvsp[(2) - (2)].expressionNode).m_numConstants); ;}
3479     break;
3480 
3481   case 77:
3482 
3483 /* Line 1455 of yacc.c  */
3484 #line 514 "parser/Grammar.y"
3485     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeNegateNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node), (yyvsp[(2) - (2)].expressionNode).m_features, (yyvsp[(2) - (2)].expressionNode).m_numConstants); ;}
3486     break;
3487 
3488   case 78:
3489 
3490 /* Line 1455 of yacc.c  */
3491 #line 515 "parser/Grammar.y"
3492     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeBitwiseNotNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node), (yyvsp[(2) - (2)].expressionNode).m_features, (yyvsp[(2) - (2)].expressionNode).m_numConstants); ;}
3493     break;
3494 
3495   case 79:
3496 
3497 /* Line 1455 of yacc.c  */
3498 #line 516 "parser/Grammar.y"
3499     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LogicalNotNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node), (yyvsp[(2) - (2)].expressionNode).m_features, (yyvsp[(2) - (2)].expressionNode).m_numConstants); ;}
3500     break;
3501 
3502   case 85:
3503 
3504 /* Line 1455 of yacc.c  */
3505 #line 530 "parser/Grammar.y"
3506     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeMultNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3507     break;
3508 
3509   case 86:
3510 
3511 /* Line 1455 of yacc.c  */
3512 #line 531 "parser/Grammar.y"
3513     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeDivNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3514     break;
3515 
3516   case 87:
3517 
3518 /* Line 1455 of yacc.c  */
3519 #line 532 "parser/Grammar.y"
3520     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ModNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3521     break;
3522 
3523   case 89:
3524 
3525 /* Line 1455 of yacc.c  */
3526 #line 538 "parser/Grammar.y"
3527     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeMultNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3528     break;
3529 
3530   case 90:
3531 
3532 /* Line 1455 of yacc.c  */
3533 #line 540 "parser/Grammar.y"
3534     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeDivNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3535     break;
3536 
3537   case 91:
3538 
3539 /* Line 1455 of yacc.c  */
3540 #line 542 "parser/Grammar.y"
3541     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ModNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3542     break;
3543 
3544   case 93:
3545 
3546 /* Line 1455 of yacc.c  */
3547 #line 547 "parser/Grammar.y"
3548     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeAddNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3549     break;
3550 
3551   case 94:
3552 
3553 /* Line 1455 of yacc.c  */
3554 #line 548 "parser/Grammar.y"
3555     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeSubNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3556     break;
3557 
3558   case 96:
3559 
3560 /* Line 1455 of yacc.c  */
3561 #line 554 "parser/Grammar.y"
3562     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeAddNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3563     break;
3564 
3565   case 97:
3566 
3567 /* Line 1455 of yacc.c  */
3568 #line 556 "parser/Grammar.y"
3569     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeSubNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3570     break;
3571 
3572   case 99:
3573 
3574 /* Line 1455 of yacc.c  */
3575 #line 561 "parser/Grammar.y"
3576     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeLeftShiftNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3577     break;
3578 
3579   case 100:
3580 
3581 /* Line 1455 of yacc.c  */
3582 #line 562 "parser/Grammar.y"
3583     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeRightShiftNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3584     break;
3585 
3586   case 101:
3587 
3588 /* Line 1455 of yacc.c  */
3589 #line 563 "parser/Grammar.y"
3590     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) UnsignedRightShiftNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3591     break;
3592 
3593   case 103:
3594 
3595 /* Line 1455 of yacc.c  */
3596 #line 568 "parser/Grammar.y"
3597     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeLeftShiftNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3598     break;
3599 
3600   case 104:
3601 
3602 /* Line 1455 of yacc.c  */
3603 #line 569 "parser/Grammar.y"
3604     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeRightShiftNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3605     break;
3606 
3607   case 105:
3608 
3609 /* Line 1455 of yacc.c  */
3610 #line 570 "parser/Grammar.y"
3611     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) UnsignedRightShiftNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3612     break;
3613 
3614   case 107:
3615 
3616 /* Line 1455 of yacc.c  */
3617 #line 575 "parser/Grammar.y"
3618     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LessNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3619     break;
3620 
3621   case 108:
3622 
3623 /* Line 1455 of yacc.c  */
3624 #line 576 "parser/Grammar.y"
3625     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) GreaterNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3626     break;
3627 
3628   case 109:
3629 
3630 /* Line 1455 of yacc.c  */
3631 #line 577 "parser/Grammar.y"
3632     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LessEqNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3633     break;
3634 
3635   case 110:
3636 
3637 /* Line 1455 of yacc.c  */
3638 #line 578 "parser/Grammar.y"
3639     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) GreaterEqNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3640     break;
3641 
3642   case 111:
3643 
3644 /* Line 1455 of yacc.c  */
3645 #line 579 "parser/Grammar.y"
3646     { InstanceOfNode* node = new (GLOBAL_DATA) InstanceOfNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature);
3647                                           setExceptionLocation(node, (yylsp[(1) - (3)]).first_column, (yylsp[(3) - (3)]).first_column, (yylsp[(3) - (3)]).last_column);
3648                                           (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3649     break;
3650 
3651   case 112:
3652 
3653 /* Line 1455 of yacc.c  */
3654 #line 582 "parser/Grammar.y"
3655     { InNode* node = new (GLOBAL_DATA) InNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature);
3656                                           setExceptionLocation(node, (yylsp[(1) - (3)]).first_column, (yylsp[(3) - (3)]).first_column, (yylsp[(3) - (3)]).last_column);
3657                                           (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3658     break;
3659 
3660   case 114:
3661 
3662 /* Line 1455 of yacc.c  */
3663 #line 589 "parser/Grammar.y"
3664     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LessNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3665     break;
3666 
3667   case 115:
3668 
3669 /* Line 1455 of yacc.c  */
3670 #line 590 "parser/Grammar.y"
3671     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) GreaterNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3672     break;
3673 
3674   case 116:
3675 
3676 /* Line 1455 of yacc.c  */
3677 #line 591 "parser/Grammar.y"
3678     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LessEqNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3679     break;
3680 
3681   case 117:
3682 
3683 /* Line 1455 of yacc.c  */
3684 #line 592 "parser/Grammar.y"
3685     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) GreaterEqNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3686     break;
3687 
3688   case 118:
3689 
3690 /* Line 1455 of yacc.c  */
3691 #line 594 "parser/Grammar.y"
3692     { InstanceOfNode* node = new (GLOBAL_DATA) InstanceOfNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature);
3693                                           setExceptionLocation(node, (yylsp[(1) - (3)]).first_column, (yylsp[(3) - (3)]).first_column, (yylsp[(3) - (3)]).last_column);
3694                                           (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3695     break;
3696 
3697   case 120:
3698 
3699 /* Line 1455 of yacc.c  */
3700 #line 601 "parser/Grammar.y"
3701     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LessNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3702     break;
3703 
3704   case 121:
3705 
3706 /* Line 1455 of yacc.c  */
3707 #line 602 "parser/Grammar.y"
3708     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) GreaterNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3709     break;
3710 
3711   case 122:
3712 
3713 /* Line 1455 of yacc.c  */
3714 #line 603 "parser/Grammar.y"
3715     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LessEqNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3716     break;
3717 
3718   case 123:
3719 
3720 /* Line 1455 of yacc.c  */
3721 #line 604 "parser/Grammar.y"
3722     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) GreaterEqNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3723     break;
3724 
3725   case 124:
3726 
3727 /* Line 1455 of yacc.c  */
3728 #line 606 "parser/Grammar.y"
3729     { InstanceOfNode* node = new (GLOBAL_DATA) InstanceOfNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature);
3730                                           setExceptionLocation(node, (yylsp[(1) - (3)]).first_column, (yylsp[(3) - (3)]).first_column, (yylsp[(3) - (3)]).last_column);
3731                                           (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3732     break;
3733 
3734   case 125:
3735 
3736 /* Line 1455 of yacc.c  */
3737 #line 610 "parser/Grammar.y"
3738     { InNode* node = new (GLOBAL_DATA) InNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature);
3739                                           setExceptionLocation(node, (yylsp[(1) - (3)]).first_column, (yylsp[(3) - (3)]).first_column, (yylsp[(3) - (3)]).last_column);
3740                                           (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3741     break;
3742 
3743   case 127:
3744 
3745 /* Line 1455 of yacc.c  */
3746 #line 617 "parser/Grammar.y"
3747     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) EqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3748     break;
3749 
3750   case 128:
3751 
3752 /* Line 1455 of yacc.c  */
3753 #line 618 "parser/Grammar.y"
3754     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) NotEqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3755     break;
3756 
3757   case 129:
3758 
3759 /* Line 1455 of yacc.c  */
3760 #line 619 "parser/Grammar.y"
3761     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) StrictEqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3762     break;
3763 
3764   case 130:
3765 
3766 /* Line 1455 of yacc.c  */
3767 #line 620 "parser/Grammar.y"
3768     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) NotStrictEqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3769     break;
3770 
3771   case 132:
3772 
3773 /* Line 1455 of yacc.c  */
3774 #line 626 "parser/Grammar.y"
3775     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) EqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3776     break;
3777 
3778   case 133:
3779 
3780 /* Line 1455 of yacc.c  */
3781 #line 628 "parser/Grammar.y"
3782     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) NotEqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3783     break;
3784 
3785   case 134:
3786 
3787 /* Line 1455 of yacc.c  */
3788 #line 630 "parser/Grammar.y"
3789     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) StrictEqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3790     break;
3791 
3792   case 135:
3793 
3794 /* Line 1455 of yacc.c  */
3795 #line 632 "parser/Grammar.y"
3796     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) NotStrictEqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3797     break;
3798 
3799   case 137:
3800 
3801 /* Line 1455 of yacc.c  */
3802 #line 638 "parser/Grammar.y"
3803     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) EqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3804     break;
3805 
3806   case 138:
3807 
3808 /* Line 1455 of yacc.c  */
3809 #line 639 "parser/Grammar.y"
3810     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) NotEqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3811     break;
3812 
3813   case 139:
3814 
3815 /* Line 1455 of yacc.c  */
3816 #line 641 "parser/Grammar.y"
3817     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) StrictEqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3818     break;
3819 
3820   case 140:
3821 
3822 /* Line 1455 of yacc.c  */
3823 #line 643 "parser/Grammar.y"
3824     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) NotStrictEqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3825     break;
3826 
3827   case 142:
3828 
3829 /* Line 1455 of yacc.c  */
3830 #line 648 "parser/Grammar.y"
3831     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) BitAndNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3832     break;
3833 
3834   case 144:
3835 
3836 /* Line 1455 of yacc.c  */
3837 #line 654 "parser/Grammar.y"
3838     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) BitAndNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3839     break;
3840 
3841   case 146:
3842 
3843 /* Line 1455 of yacc.c  */
3844 #line 659 "parser/Grammar.y"
3845     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) BitAndNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3846     break;
3847 
3848   case 148:
3849 
3850 /* Line 1455 of yacc.c  */
3851 #line 664 "parser/Grammar.y"
3852     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) BitXOrNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3853     break;
3854 
3855   case 150:
3856 
3857 /* Line 1455 of yacc.c  */
3858 #line 670 "parser/Grammar.y"
3859     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) BitXOrNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3860     break;
3861 
3862   case 152:
3863 
3864 /* Line 1455 of yacc.c  */
3865 #line 676 "parser/Grammar.y"
3866     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) BitXOrNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3867     break;
3868 
3869   case 154:
3870 
3871 /* Line 1455 of yacc.c  */
3872 #line 681 "parser/Grammar.y"
3873     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) BitOrNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3874     break;
3875 
3876   case 156:
3877 
3878 /* Line 1455 of yacc.c  */
3879 #line 687 "parser/Grammar.y"
3880     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) BitOrNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3881     break;
3882 
3883   case 158:
3884 
3885 /* Line 1455 of yacc.c  */
3886 #line 693 "parser/Grammar.y"
3887     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) BitOrNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3888     break;
3889 
3890   case 160:
3891 
3892 /* Line 1455 of yacc.c  */
3893 #line 698 "parser/Grammar.y"
3894     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LogicalOpNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, OpLogicalAnd), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3895     break;
3896 
3897   case 162:
3898 
3899 /* Line 1455 of yacc.c  */
3900 #line 704 "parser/Grammar.y"
3901     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LogicalOpNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, OpLogicalAnd), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3902     break;
3903 
3904   case 164:
3905 
3906 /* Line 1455 of yacc.c  */
3907 #line 710 "parser/Grammar.y"
3908     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LogicalOpNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, OpLogicalAnd), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3909     break;
3910 
3911   case 166:
3912 
3913 /* Line 1455 of yacc.c  */
3914 #line 715 "parser/Grammar.y"
3915     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LogicalOpNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, OpLogicalOr), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3916     break;
3917 
3918   case 168:
3919 
3920 /* Line 1455 of yacc.c  */
3921 #line 721 "parser/Grammar.y"
3922     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LogicalOpNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, OpLogicalOr), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3923     break;
3924 
3925   case 170:
3926 
3927 /* Line 1455 of yacc.c  */
3928 #line 726 "parser/Grammar.y"
3929     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LogicalOpNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, OpLogicalOr), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
3930     break;
3931 
3932   case 172:
3933 
3934 /* Line 1455 of yacc.c  */
3935 #line 732 "parser/Grammar.y"
3936     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ConditionalNode(GLOBAL_DATA, (yyvsp[(1) - (5)].expressionNode).m_node, (yyvsp[(3) - (5)].expressionNode).m_node, (yyvsp[(5) - (5)].expressionNode).m_node), (yyvsp[(1) - (5)].expressionNode).m_features | (yyvsp[(3) - (5)].expressionNode).m_features | (yyvsp[(5) - (5)].expressionNode).m_features, (yyvsp[(1) - (5)].expressionNode).m_numConstants + (yyvsp[(3) - (5)].expressionNode).m_numConstants + (yyvsp[(5) - (5)].expressionNode).m_numConstants); ;}
3937     break;
3938 
3939   case 174:
3940 
3941 /* Line 1455 of yacc.c  */
3942 #line 738 "parser/Grammar.y"
3943     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ConditionalNode(GLOBAL_DATA, (yyvsp[(1) - (5)].expressionNode).m_node, (yyvsp[(3) - (5)].expressionNode).m_node, (yyvsp[(5) - (5)].expressionNode).m_node), (yyvsp[(1) - (5)].expressionNode).m_features | (yyvsp[(3) - (5)].expressionNode).m_features | (yyvsp[(5) - (5)].expressionNode).m_features, (yyvsp[(1) - (5)].expressionNode).m_numConstants + (yyvsp[(3) - (5)].expressionNode).m_numConstants + (yyvsp[(5) - (5)].expressionNode).m_numConstants); ;}
3944     break;
3945 
3946   case 176:
3947 
3948 /* Line 1455 of yacc.c  */
3949 #line 744 "parser/Grammar.y"
3950     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ConditionalNode(GLOBAL_DATA, (yyvsp[(1) - (5)].expressionNode).m_node, (yyvsp[(3) - (5)].expressionNode).m_node, (yyvsp[(5) - (5)].expressionNode).m_node), (yyvsp[(1) - (5)].expressionNode).m_features | (yyvsp[(3) - (5)].expressionNode).m_features | (yyvsp[(5) - (5)].expressionNode).m_features, (yyvsp[(1) - (5)].expressionNode).m_numConstants + (yyvsp[(3) - (5)].expressionNode).m_numConstants + (yyvsp[(5) - (5)].expressionNode).m_numConstants); ;}
3951     break;
3952 
3953   case 178:
3954 
3955 /* Line 1455 of yacc.c  */
3956 #line 750 "parser/Grammar.y"
3957     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeAssignNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(2) - (3)].op), (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(1) - (3)].expressionNode).m_features & AssignFeature, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature,
3958                                                                                                      (yylsp[(1) - (3)]).first_column, (yylsp[(2) - (3)]).first_column + 1, (yylsp[(3) - (3)]).last_column), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features | AssignFeature, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants);
3959                                         ;}
3960     break;
3961 
3962   case 180:
3963 
3964 /* Line 1455 of yacc.c  */
3965 #line 758 "parser/Grammar.y"
3966     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeAssignNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(2) - (3)].op), (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(1) - (3)].expressionNode).m_features & AssignFeature, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature,
3967                                                                                                      (yylsp[(1) - (3)]).first_column, (yylsp[(2) - (3)]).first_column + 1, (yylsp[(3) - (3)]).last_column), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features | AssignFeature, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants);
3968                                         ;}
3969     break;
3970 
3971   case 182:
3972 
3973 /* Line 1455 of yacc.c  */
3974 #line 766 "parser/Grammar.y"
3975     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeAssignNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(2) - (3)].op), (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(1) - (3)].expressionNode).m_features & AssignFeature, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature,
3976                                                                                                      (yylsp[(1) - (3)]).first_column, (yylsp[(2) - (3)]).first_column + 1, (yylsp[(3) - (3)]).last_column), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features | AssignFeature, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants);
3977                                         ;}
3978     break;
3979 
3980   case 183:
3981 
3982 /* Line 1455 of yacc.c  */
3983 #line 772 "parser/Grammar.y"
3984     { (yyval.op) = OpEqual; ;}
3985     break;
3986 
3987   case 184:
3988 
3989 /* Line 1455 of yacc.c  */
3990 #line 773 "parser/Grammar.y"
3991     { (yyval.op) = OpPlusEq; ;}
3992     break;
3993 
3994   case 185:
3995 
3996 /* Line 1455 of yacc.c  */
3997 #line 774 "parser/Grammar.y"
3998     { (yyval.op) = OpMinusEq; ;}
3999     break;
4000 
4001   case 186:
4002 
4003 /* Line 1455 of yacc.c  */
4004 #line 775 "parser/Grammar.y"
4005     { (yyval.op) = OpMultEq; ;}
4006     break;
4007 
4008   case 187:
4009 
4010 /* Line 1455 of yacc.c  */
4011 #line 776 "parser/Grammar.y"
4012     { (yyval.op) = OpDivEq; ;}
4013     break;
4014 
4015   case 188:
4016 
4017 /* Line 1455 of yacc.c  */
4018 #line 777 "parser/Grammar.y"
4019     { (yyval.op) = OpLShift; ;}
4020     break;
4021 
4022   case 189:
4023 
4024 /* Line 1455 of yacc.c  */
4025 #line 778 "parser/Grammar.y"
4026     { (yyval.op) = OpRShift; ;}
4027     break;
4028 
4029   case 190:
4030 
4031 /* Line 1455 of yacc.c  */
4032 #line 779 "parser/Grammar.y"
4033     { (yyval.op) = OpURShift; ;}
4034     break;
4035 
4036   case 191:
4037 
4038 /* Line 1455 of yacc.c  */
4039 #line 780 "parser/Grammar.y"
4040     { (yyval.op) = OpAndEq; ;}
4041     break;
4042 
4043   case 192:
4044 
4045 /* Line 1455 of yacc.c  */
4046 #line 781 "parser/Grammar.y"
4047     { (yyval.op) = OpXOrEq; ;}
4048     break;
4049 
4050   case 193:
4051 
4052 /* Line 1455 of yacc.c  */
4053 #line 782 "parser/Grammar.y"
4054     { (yyval.op) = OpOrEq; ;}
4055     break;
4056 
4057   case 194:
4058 
4059 /* Line 1455 of yacc.c  */
4060 #line 783 "parser/Grammar.y"
4061     { (yyval.op) = OpModEq; ;}
4062     break;
4063 
4064   case 196:
4065 
4066 /* Line 1455 of yacc.c  */
4067 #line 788 "parser/Grammar.y"
4068     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(combineCommaNodes(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
4069     break;
4070 
4071   case 198:
4072 
4073 /* Line 1455 of yacc.c  */
4074 #line 793 "parser/Grammar.y"
4075     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(combineCommaNodes(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
4076     break;
4077 
4078   case 200:
4079 
4080 /* Line 1455 of yacc.c  */
4081 #line 798 "parser/Grammar.y"
4082     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(combineCommaNodes(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;}
4083     break;
4084 
4085   case 218:
4086 
4087 /* Line 1455 of yacc.c  */
4088 #line 822 "parser/Grammar.y"
4089     { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) BlockNode(GLOBAL_DATA, 0), 0, 0, 0, 0);
4090                                           setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (2)]), (yylsp[(2) - (2)])); ;}
4091     break;
4092 
4093   case 219:
4094 
4095 /* Line 1455 of yacc.c  */
4096 #line 824 "parser/Grammar.y"
4097     { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) BlockNode(GLOBAL_DATA, (yyvsp[(2) - (3)].sourceElements).m_node), (yyvsp[(2) - (3)].sourceElements).m_varDeclarations, (yyvsp[(2) - (3)].sourceElements).m_funcDeclarations, (yyvsp[(2) - (3)].sourceElements).m_features, (yyvsp[(2) - (3)].sourceElements).m_numConstants);
4098                                           setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (3)]), (yylsp[(3) - (3)])); ;}
4099     break;
4100 
4101   case 220:
4102 
4103 /* Line 1455 of yacc.c  */
4104 #line 829 "parser/Grammar.y"
4105     { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(makeVarStatementNode(GLOBAL_DATA, (yyvsp[(2) - (3)].varDeclList).m_node), (yyvsp[(2) - (3)].varDeclList).m_varDeclarations, (yyvsp[(2) - (3)].varDeclList).m_funcDeclarations, (yyvsp[(2) - (3)].varDeclList).m_features, (yyvsp[(2) - (3)].varDeclList).m_numConstants);
4106                                           setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (3)]), (yylsp[(3) - (3)])); ;}
4107     break;
4108 
4109   case 221:
4110 
4111 /* Line 1455 of yacc.c  */
4112 #line 831 "parser/Grammar.y"
4113     { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(makeVarStatementNode(GLOBAL_DATA, (yyvsp[(2) - (3)].varDeclList).m_node), (yyvsp[(2) - (3)].varDeclList).m_varDeclarations, (yyvsp[(2) - (3)].varDeclList).m_funcDeclarations, (yyvsp[(2) - (3)].varDeclList).m_features, (yyvsp[(2) - (3)].varDeclList).m_numConstants);
4114                                           setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (3)]), (yylsp[(2) - (3)]));
4115                                           AUTO_SEMICOLON; ;}
4116     break;
4117 
4118   case 222:
4119 
4120 /* Line 1455 of yacc.c  */
4121 #line 837 "parser/Grammar.y"
4122     { (yyval.varDeclList).m_node = 0;
4123                                           (yyval.varDeclList).m_varDeclarations = new (GLOBAL_DATA) ParserArenaData<DeclarationStacks::VarStack>;
4124                                           appendToVarDeclarationList(GLOBAL_DATA, (yyval.varDeclList).m_varDeclarations, *(yyvsp[(1) - (1)].ident), 0);
4125                                           (yyval.varDeclList).m_funcDeclarations = 0;
4126                                           (yyval.varDeclList).m_features = (*(yyvsp[(1) - (1)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0;
4127                                           (yyval.varDeclList).m_numConstants = 0;
4128                                         ;}
4129     break;
4130 
4131   case 223:
4132 
4133 /* Line 1455 of yacc.c  */
4134 #line 844 "parser/Grammar.y"
4135     { AssignResolveNode* node = new (GLOBAL_DATA) AssignResolveNode(GLOBAL_DATA, *(yyvsp[(1) - (2)].ident), (yyvsp[(2) - (2)].expressionNode).m_node, (yyvsp[(2) - (2)].expressionNode).m_features & AssignFeature);
4136                                           setExceptionLocation(node, (yylsp[(1) - (2)]).first_column, (yylsp[(2) - (2)]).first_column + 1, (yylsp[(2) - (2)]).last_column);
4137                                           (yyval.varDeclList).m_node = node;
4138                                           (yyval.varDeclList).m_varDeclarations = new (GLOBAL_DATA) ParserArenaData<DeclarationStacks::VarStack>;
4139                                           appendToVarDeclarationList(GLOBAL_DATA, (yyval.varDeclList).m_varDeclarations, *(yyvsp[(1) - (2)].ident), DeclarationStacks::HasInitializer);
4140                                           (yyval.varDeclList).m_funcDeclarations = 0;
4141                                           (yyval.varDeclList).m_features = ((*(yyvsp[(1) - (2)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0) | (yyvsp[(2) - (2)].expressionNode).m_features;
4142                                           (yyval.varDeclList).m_numConstants = (yyvsp[(2) - (2)].expressionNode).m_numConstants;
4143                                         ;}
4144     break;
4145 
4146   case 224:
4147 
4148 /* Line 1455 of yacc.c  */
4149 #line 854 "parser/Grammar.y"
4150     { (yyval.varDeclList).m_node = (yyvsp[(1) - (3)].varDeclList).m_node;
4151                                           (yyval.varDeclList).m_varDeclarations = (yyvsp[(1) - (3)].varDeclList).m_varDeclarations;
4152                                           appendToVarDeclarationList(GLOBAL_DATA, (yyval.varDeclList).m_varDeclarations, *(yyvsp[(3) - (3)].ident), 0);
4153                                           (yyval.varDeclList).m_funcDeclarations = 0;
4154                                           (yyval.varDeclList).m_features = (yyvsp[(1) - (3)].varDeclList).m_features | ((*(yyvsp[(3) - (3)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0);
4155                                           (yyval.varDeclList).m_numConstants = (yyvsp[(1) - (3)].varDeclList).m_numConstants;
4156                                         ;}
4157     break;
4158 
4159   case 225:
4160 
4161 /* Line 1455 of yacc.c  */
4162 #line 862 "parser/Grammar.y"
4163     { AssignResolveNode* node = new (GLOBAL_DATA) AssignResolveNode(GLOBAL_DATA, *(yyvsp[(3) - (4)].ident), (yyvsp[(4) - (4)].expressionNode).m_node, (yyvsp[(4) - (4)].expressionNode).m_features & AssignFeature);
4164                                           setExceptionLocation(node, (yylsp[(3) - (4)]).first_column, (yylsp[(4) - (4)]).first_column + 1, (yylsp[(4) - (4)]).last_column);
4165                                           (yyval.varDeclList).m_node = combineCommaNodes(GLOBAL_DATA, (yyvsp[(1) - (4)].varDeclList).m_node, node);
4166                                           (yyval.varDeclList).m_varDeclarations = (yyvsp[(1) - (4)].varDeclList).m_varDeclarations;
4167                                           appendToVarDeclarationList(GLOBAL_DATA, (yyval.varDeclList).m_varDeclarations, *(yyvsp[(3) - (4)].ident), DeclarationStacks::HasInitializer);
4168                                           (yyval.varDeclList).m_funcDeclarations = 0;
4169                                           (yyval.varDeclList).m_features = (yyvsp[(1) - (4)].varDeclList).m_features | ((*(yyvsp[(3) - (4)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0) | (yyvsp[(4) - (4)].expressionNode).m_features;
4170                                           (yyval.varDeclList).m_numConstants = (yyvsp[(1) - (4)].varDeclList).m_numConstants + (yyvsp[(4) - (4)].expressionNode).m_numConstants;
4171                                         ;}
4172     break;
4173 
4174   case 226:
4175 
4176 /* Line 1455 of yacc.c  */
4177 #line 874 "parser/Grammar.y"
4178     { (yyval.varDeclList).m_node = 0;
4179                                           (yyval.varDeclList).m_varDeclarations = new (GLOBAL_DATA) ParserArenaData<DeclarationStacks::VarStack>;
4180                                           appendToVarDeclarationList(GLOBAL_DATA, (yyval.varDeclList).m_varDeclarations, *(yyvsp[(1) - (1)].ident), 0);
4181                                           (yyval.varDeclList).m_funcDeclarations = 0;
4182                                           (yyval.varDeclList).m_features = (*(yyvsp[(1) - (1)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0;
4183                                           (yyval.varDeclList).m_numConstants = 0;
4184                                         ;}
4185     break;
4186 
4187   case 227:
4188 
4189 /* Line 1455 of yacc.c  */
4190 #line 881 "parser/Grammar.y"
4191     { AssignResolveNode* node = new (GLOBAL_DATA) AssignResolveNode(GLOBAL_DATA, *(yyvsp[(1) - (2)].ident), (yyvsp[(2) - (2)].expressionNode).m_node, (yyvsp[(2) - (2)].expressionNode).m_features & AssignFeature);
4192                                           setExceptionLocation(node, (yylsp[(1) - (2)]).first_column, (yylsp[(2) - (2)]).first_column + 1, (yylsp[(2) - (2)]).last_column);
4193                                           (yyval.varDeclList).m_node = node;
4194                                           (yyval.varDeclList).m_varDeclarations = new (GLOBAL_DATA) ParserArenaData<DeclarationStacks::VarStack>;
4195                                           appendToVarDeclarationList(GLOBAL_DATA, (yyval.varDeclList).m_varDeclarations, *(yyvsp[(1) - (2)].ident), DeclarationStacks::HasInitializer);
4196                                           (yyval.varDeclList).m_funcDeclarations = 0;
4197                                           (yyval.varDeclList).m_features = ((*(yyvsp[(1) - (2)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0) | (yyvsp[(2) - (2)].expressionNode).m_features;
4198                                           (yyval.varDeclList).m_numConstants = (yyvsp[(2) - (2)].expressionNode).m_numConstants;
4199                                         ;}
4200     break;
4201 
4202   case 228:
4203 
4204 /* Line 1455 of yacc.c  */
4205 #line 891 "parser/Grammar.y"
4206     { (yyval.varDeclList).m_node = (yyvsp[(1) - (3)].varDeclList).m_node;
4207                                           (yyval.varDeclList).m_varDeclarations = (yyvsp[(1) - (3)].varDeclList).m_varDeclarations;
4208                                           appendToVarDeclarationList(GLOBAL_DATA, (yyval.varDeclList).m_varDeclarations, *(yyvsp[(3) - (3)].ident), 0);
4209                                           (yyval.varDeclList).m_funcDeclarations = 0;
4210                                           (yyval.varDeclList).m_features = (yyvsp[(1) - (3)].varDeclList).m_features | ((*(yyvsp[(3) - (3)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0);
4211                                           (yyval.varDeclList).m_numConstants = (yyvsp[(1) - (3)].varDeclList).m_numConstants;
4212                                         ;}
4213     break;
4214 
4215   case 229:
4216 
4217 /* Line 1455 of yacc.c  */
4218 #line 899 "parser/Grammar.y"
4219     { AssignResolveNode* node = new (GLOBAL_DATA) AssignResolveNode(GLOBAL_DATA, *(yyvsp[(3) - (4)].ident), (yyvsp[(4) - (4)].expressionNode).m_node, (yyvsp[(4) - (4)].expressionNode).m_features & AssignFeature);
4220                                           setExceptionLocation(node, (yylsp[(3) - (4)]).first_column, (yylsp[(4) - (4)]).first_column + 1, (yylsp[(4) - (4)]).last_column);
4221                                           (yyval.varDeclList).m_node = combineCommaNodes(GLOBAL_DATA, (yyvsp[(1) - (4)].varDeclList).m_node, node);
4222                                           (yyval.varDeclList).m_varDeclarations = (yyvsp[(1) - (4)].varDeclList).m_varDeclarations;
4223                                           appendToVarDeclarationList(GLOBAL_DATA, (yyval.varDeclList).m_varDeclarations, *(yyvsp[(3) - (4)].ident), DeclarationStacks::HasInitializer);
4224                                           (yyval.varDeclList).m_funcDeclarations = 0;
4225                                           (yyval.varDeclList).m_features = (yyvsp[(1) - (4)].varDeclList).m_features | ((*(yyvsp[(3) - (4)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0) | (yyvsp[(4) - (4)].expressionNode).m_features;
4226                                           (yyval.varDeclList).m_numConstants = (yyvsp[(1) - (4)].varDeclList).m_numConstants + (yyvsp[(4) - (4)].expressionNode).m_numConstants;
4227                                         ;}
4228     break;
4229 
4230   case 230:
4231 
4232 /* Line 1455 of yacc.c  */
4233 #line 911 "parser/Grammar.y"
4234     { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) ConstStatementNode(GLOBAL_DATA, (yyvsp[(2) - (3)].constDeclList).m_node.head), (yyvsp[(2) - (3)].constDeclList).m_varDeclarations, (yyvsp[(2) - (3)].constDeclList).m_funcDeclarations, (yyvsp[(2) - (3)].constDeclList).m_features, (yyvsp[(2) - (3)].constDeclList).m_numConstants);
4235                                           setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (3)]), (yylsp[(3) - (3)])); ;}
4236     break;
4237 
4238   case 231:
4239 
4240 /* Line 1455 of yacc.c  */
4241 #line 914 "parser/Grammar.y"
4242     { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) ConstStatementNode(GLOBAL_DATA, (yyvsp[(2) - (3)].constDeclList).m_node.head), (yyvsp[(2) - (3)].constDeclList).m_varDeclarations, (yyvsp[(2) - (3)].constDeclList).m_funcDeclarations, (yyvsp[(2) - (3)].constDeclList).m_features, (yyvsp[(2) - (3)].constDeclList).m_numConstants);
4243                                           setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (3)]), (yylsp[(2) - (3)])); AUTO_SEMICOLON; ;}
4244     break;
4245 
4246   case 232:
4247 
4248 /* Line 1455 of yacc.c  */
4249 #line 919 "parser/Grammar.y"
4250     { (yyval.constDeclList).m_node.head = (yyvsp[(1) - (1)].constDeclNode).m_node;
4251                                           (yyval.constDeclList).m_node.tail = (yyval.constDeclList).m_node.head;
4252                                           (yyval.constDeclList).m_varDeclarations = new (GLOBAL_DATA) ParserArenaData<DeclarationStacks::VarStack>;
4253                                           appendToVarDeclarationList(GLOBAL_DATA, (yyval.constDeclList).m_varDeclarations, (yyvsp[(1) - (1)].constDeclNode).m_node);
4254                                           (yyval.constDeclList).m_funcDeclarations = 0;
4255                                           (yyval.constDeclList).m_features = (yyvsp[(1) - (1)].constDeclNode).m_features;
4256                                           (yyval.constDeclList).m_numConstants = (yyvsp[(1) - (1)].constDeclNode).m_numConstants;
4257     ;}
4258     break;
4259 
4260   case 233:
4261 
4262 /* Line 1455 of yacc.c  */
4263 #line 928 "parser/Grammar.y"
4264     { (yyval.constDeclList).m_node.head = (yyvsp[(1) - (3)].constDeclList).m_node.head;
4265                                           (yyvsp[(1) - (3)].constDeclList).m_node.tail->m_next = (yyvsp[(3) - (3)].constDeclNode).m_node;
4266                                           (yyval.constDeclList).m_node.tail = (yyvsp[(3) - (3)].constDeclNode).m_node;
4267                                           (yyval.constDeclList).m_varDeclarations = (yyvsp[(1) - (3)].constDeclList).m_varDeclarations;
4268                                           appendToVarDeclarationList(GLOBAL_DATA, (yyval.constDeclList).m_varDeclarations, (yyvsp[(3) - (3)].constDeclNode).m_node);
4269                                           (yyval.constDeclList).m_funcDeclarations = 0;
4270                                           (yyval.constDeclList).m_features = (yyvsp[(1) - (3)].constDeclList).m_features | (yyvsp[(3) - (3)].constDeclNode).m_features;
4271                                           (yyval.constDeclList).m_numConstants = (yyvsp[(1) - (3)].constDeclList).m_numConstants + (yyvsp[(3) - (3)].constDeclNode).m_numConstants; ;}
4272     break;
4273 
4274   case 234:
4275 
4276 /* Line 1455 of yacc.c  */
4277 #line 939 "parser/Grammar.y"
4278     { (yyval.constDeclNode) = createNodeInfo<ConstDeclNode*>(new (GLOBAL_DATA) ConstDeclNode(GLOBAL_DATA, *(yyvsp[(1) - (1)].ident), 0), (*(yyvsp[(1) - (1)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0, 0); ;}
4279     break;
4280 
4281   case 235:
4282 
4283 /* Line 1455 of yacc.c  */
4284 #line 940 "parser/Grammar.y"
4285     { (yyval.constDeclNode) = createNodeInfo<ConstDeclNode*>(new (GLOBAL_DATA) ConstDeclNode(GLOBAL_DATA, *(yyvsp[(1) - (2)].ident), (yyvsp[(2) - (2)].expressionNode).m_node), ((*(yyvsp[(1) - (2)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0) | (yyvsp[(2) - (2)].expressionNode).m_features, (yyvsp[(2) - (2)].expressionNode).m_numConstants); ;}
4286     break;
4287 
4288   case 236:
4289 
4290 /* Line 1455 of yacc.c  */
4291 #line 944 "parser/Grammar.y"
4292     { (yyval.expressionNode) = (yyvsp[(2) - (2)].expressionNode); ;}
4293     break;
4294 
4295   case 237:
4296 
4297 /* Line 1455 of yacc.c  */
4298 #line 948 "parser/Grammar.y"
4299     { (yyval.expressionNode) = (yyvsp[(2) - (2)].expressionNode); ;}
4300     break;
4301 
4302   case 238:
4303 
4304 /* Line 1455 of yacc.c  */
4305 #line 952 "parser/Grammar.y"
4306     { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) EmptyStatementNode(GLOBAL_DATA), 0, 0, 0, 0); ;}
4307     break;
4308 
4309   case 239:
4310 
4311 /* Line 1455 of yacc.c  */
4312 #line 956 "parser/Grammar.y"
4313     { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) ExprStatementNode(GLOBAL_DATA, (yyvsp[(1) - (2)].expressionNode).m_node), 0, 0, (yyvsp[(1) - (2)].expressionNode).m_features, (yyvsp[(1) - (2)].expressionNode).m_numConstants);
4314                                           setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (2)]), (yylsp[(2) - (2)])); ;}
4315     break;
4316 
4317   case 240:
4318 
4319 /* Line 1455 of yacc.c  */
4320 #line 958 "parser/Grammar.y"
4321     { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) ExprStatementNode(GLOBAL_DATA, (yyvsp[(1) - (2)].expressionNode).m_node), 0, 0, (yyvsp[(1) - (2)].expressionNode).m_features, (yyvsp[(1) - (2)].expressionNode).m_numConstants);
4322                                           setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (2)]), (yylsp[(1) - (2)])); AUTO_SEMICOLON; ;}
4323     break;
4324 
4325   case 241:
4326 
4327 /* Line 1455 of yacc.c  */
4328 #line 964 "parser/Grammar.y"
4329     { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) IfNode(GLOBAL_DATA, (yyvsp[(3) - (5)].expressionNode).m_node, (yyvsp[(5) - (5)].statementNode).m_node), (yyvsp[(5) - (5)].statementNode).m_varDeclarations, (yyvsp[(5) - (5)].statementNode).m_funcDeclarations, (yyvsp[(3) - (5)].expressionNode).m_features | (yyvsp[(5) - (5)].statementNode).m_features, (yyvsp[(3) - (5)].expressionNode).m_numConstants + (yyvsp[(5) - (5)].statementNode).m_numConstants);
4330                                           setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (5)]), (yylsp[(4) - (5)])); ;}
4331     break;
4332 
4333   case 242:
4334 
4335 /* Line 1455 of yacc.c  */
4336 #line 967 "parser/Grammar.y"
4337     { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) IfElseNode(GLOBAL_DATA, (yyvsp[(3) - (7)].expressionNode).m_node, (yyvsp[(5) - (7)].statementNode).m_node, (yyvsp[(7) - (7)].statementNode).m_node),
4338                                                                                          mergeDeclarationLists((yyvsp[(5) - (7)].statementNode).m_varDeclarations, (yyvsp[(7) - (7)].statementNode).m_varDeclarations),
4339                                                                                          mergeDeclarationLists((yyvsp[(5) - (7)].statementNode).m_funcDeclarations, (yyvsp[(7) - (7)].statementNode).m_funcDeclarations),
4340                                                                                          (yyvsp[(3) - (7)].expressionNode).m_features | (yyvsp[(5) - (7)].statementNode).m_features | (yyvsp[(7) - (7)].statementNode).m_features,
4341                                                                                          (yyvsp[(3) - (7)].expressionNode).m_numConstants + (yyvsp[(5) - (7)].statementNode).m_numConstants + (yyvsp[(7) - (7)].statementNode).m_numConstants);
4342                                           setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (7)]), (yylsp[(4) - (7)])); ;}
4343     break;
4344 
4345   case 243:
4346 
4347 /* Line 1455 of yacc.c  */
4348 #line 976 "parser/Grammar.y"
4349     { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) DoWhileNode(GLOBAL_DATA, (yyvsp[(2) - (7)].statementNode).m_node, (yyvsp[(5) - (7)].expressionNode).m_node), (yyvsp[(2) - (7)].statementNode).m_varDeclarations, (yyvsp[(2) - (7)].statementNode).m_funcDeclarations, (yyvsp[(2) - (7)].statementNode).m_features | (yyvsp[(5) - (7)].expressionNode).m_features, (yyvsp[(2) - (7)].statementNode).m_numConstants + (yyvsp[(5) - (7)].expressionNode).m_numConstants);
4350                                              setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (7)]), (yylsp[(3) - (7)])); ;}
4351     break;
4352 
4353   case 244:
4354 
4355 /* Line 1455 of yacc.c  */
4356 #line 978 "parser/Grammar.y"
4357     { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) DoWhileNode(GLOBAL_DATA, (yyvsp[(2) - (7)].statementNode).m_node, (yyvsp[(5) - (7)].expressionNode).m_node), (yyvsp[(2) - (7)].statementNode).m_varDeclarations, (yyvsp[(2) - (7)].statementNode).m_funcDeclarations, (yyvsp[(2) - (7)].statementNode).m_features | (yyvsp[(5) - (7)].expressionNode).m_features, (yyvsp[(2) - (7)].statementNode).m_numConstants + (yyvsp[(5) - (7)].expressionNode).m_numConstants);
4358                                              setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (7)]), (yylsp[(3) - (7)])); ;}
4359     break;
4360 
4361   case 245:
4362 
4363 /* Line 1455 of yacc.c  */
4364 #line 980 "parser/Grammar.y"
4365     { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) WhileNode(GLOBAL_DATA, (yyvsp[(3) - (5)].expressionNode).m_node, (yyvsp[(5) - (5)].statementNode).m_node), (yyvsp[(5) - (5)].statementNode).m_varDeclarations, (yyvsp[(5) - (5)].statementNode).m_funcDeclarations, (yyvsp[(3) - (5)].expressionNode).m_features | (yyvsp[(5) - (5)].statementNode).m_features, (yyvsp[(3) - (5)].expressionNode).m_numConstants + (yyvsp[(5) - (5)].statementNode).m_numConstants);
4366                                           setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (5)]), (yylsp[(4) - (5)])); ;}
4367     break;
4368 
4369   case 246:
4370 
4371 /* Line 1455 of yacc.c  */
4372 #line 983 "parser/Grammar.y"
4373     { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) ForNode(GLOBAL_DATA, (yyvsp[(3) - (9)].expressionNode).m_node, (yyvsp[(5) - (9)].expressionNode).m_node, (yyvsp[(7) - (9)].expressionNode).m_node, (yyvsp[(9) - (9)].statementNode).m_node, false), (yyvsp[(9) - (9)].statementNode).m_varDeclarations, (yyvsp[(9) - (9)].statementNode).m_funcDeclarations,
4374                                                                                          (yyvsp[(3) - (9)].expressionNode).m_features | (yyvsp[(5) - (9)].expressionNode).m_features | (yyvsp[(7) - (9)].expressionNode).m_features | (yyvsp[(9) - (9)].statementNode).m_features,
4375                                                                                          (yyvsp[(3) - (9)].expressionNode).m_numConstants + (yyvsp[(5) - (9)].expressionNode).m_numConstants + (yyvsp[(7) - (9)].expressionNode).m_numConstants + (yyvsp[(9) - (9)].statementNode).m_numConstants);
4376                                           setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (9)]), (yylsp[(8) - (9)]));
4377                                         ;}
4378     break;
4379 
4380   case 247:
4381 
4382 /* Line 1455 of yacc.c  */
4383 #line 989 "parser/Grammar.y"
4384     { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) ForNode(GLOBAL_DATA, (yyvsp[(4) - (10)].varDeclList).m_node, (yyvsp[(6) - (10)].expressionNode).m_node, (yyvsp[(8) - (10)].expressionNode).m_node, (yyvsp[(10) - (10)].statementNode).m_node, true),
4385                                                                                          mergeDeclarationLists((yyvsp[(4) - (10)].varDeclList).m_varDeclarations, (yyvsp[(10) - (10)].statementNode).m_varDeclarations),
4386                                                                                          mergeDeclarationLists((yyvsp[(4) - (10)].varDeclList).m_funcDeclarations, (yyvsp[(10) - (10)].statementNode).m_funcDeclarations),
4387                                                                                          (yyvsp[(4) - (10)].varDeclList).m_features | (yyvsp[(6) - (10)].expressionNode).m_features | (yyvsp[(8) - (10)].expressionNode).m_features | (yyvsp[(10) - (10)].statementNode).m_features,
4388                                                                                          (yyvsp[(4) - (10)].varDeclList).m_numConstants + (yyvsp[(6) - (10)].expressionNode).m_numConstants + (yyvsp[(8) - (10)].expressionNode).m_numConstants + (yyvsp[(10) - (10)].statementNode).m_numConstants);
4389                                           setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (10)]), (yylsp[(9) - (10)])); ;}
4390     break;
4391 
4392   case 248:
4393 
4394 /* Line 1455 of yacc.c  */
4395 #line 996 "parser/Grammar.y"
4396     {
4397                                             ForInNode* node = new (GLOBAL_DATA) ForInNode(GLOBAL_DATA, (yyvsp[(3) - (7)].expressionNode).m_node, (yyvsp[(5) - (7)].expressionNode).m_node, (yyvsp[(7) - (7)].statementNode).m_node);
4398                                             setExceptionLocation(node, (yylsp[(3) - (7)]).first_column, (yylsp[(3) - (7)]).last_column, (yylsp[(5) - (7)]).last_column);
4399                                             (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, (yyvsp[(7) - (7)].statementNode).m_varDeclarations, (yyvsp[(7) - (7)].statementNode).m_funcDeclarations,
4400                                                                                            (yyvsp[(3) - (7)].expressionNode).m_features | (yyvsp[(5) - (7)].expressionNode).m_features | (yyvsp[(7) - (7)].statementNode).m_features,
4401                                                                                            (yyvsp[(3) - (7)].expressionNode).m_numConstants + (yyvsp[(5) - (7)].expressionNode).m_numConstants + (yyvsp[(7) - (7)].statementNode).m_numConstants);
4402                                             setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (7)]), (yylsp[(6) - (7)]));
4403                                         ;}
4404     break;
4405 
4406   case 249:
4407 
4408 /* Line 1455 of yacc.c  */
4409 #line 1005 "parser/Grammar.y"
4410     { ForInNode *forIn = new (GLOBAL_DATA) ForInNode(GLOBAL_DATA, *(yyvsp[(4) - (8)].ident), 0, (yyvsp[(6) - (8)].expressionNode).m_node, (yyvsp[(8) - (8)].statementNode).m_node, (yylsp[(5) - (8)]).first_column, (yylsp[(5) - (8)]).first_column - (yylsp[(4) - (8)]).first_column, (yylsp[(6) - (8)]).last_column - (yylsp[(5) - (8)]).first_column);
4411                                           setExceptionLocation(forIn, (yylsp[(4) - (8)]).first_column, (yylsp[(5) - (8)]).first_column + 1, (yylsp[(6) - (8)]).last_column);
4412                                           appendToVarDeclarationList(GLOBAL_DATA, (yyvsp[(8) - (8)].statementNode).m_varDeclarations, *(yyvsp[(4) - (8)].ident), DeclarationStacks::HasInitializer);
4413                                           (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(forIn, (yyvsp[(8) - (8)].statementNode).m_varDeclarations, (yyvsp[(8) - (8)].statementNode).m_funcDeclarations, ((*(yyvsp[(4) - (8)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0) | (yyvsp[(6) - (8)].expressionNode).m_features | (yyvsp[(8) - (8)].statementNode).m_features, (yyvsp[(6) - (8)].expressionNode).m_numConstants + (yyvsp[(8) - (8)].statementNode).m_numConstants);
4414                                           setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (8)]), (yylsp[(7) - (8)])); ;}
4415     break;
4416 
4417   case 250:
4418 
4419 /* Line 1455 of yacc.c  */
4420 #line 1011 "parser/Grammar.y"
4421     { ForInNode *forIn = new (GLOBAL_DATA) ForInNode(GLOBAL_DATA, *(yyvsp[(4) - (9)].ident), (yyvsp[(5) - (9)].expressionNode).m_node, (yyvsp[(7) - (9)].expressionNode).m_node, (yyvsp[(9) - (9)].statementNode).m_node, (yylsp[(5) - (9)]).first_column, (yylsp[(5) - (9)]).first_column - (yylsp[(4) - (9)]).first_column, (yylsp[(5) - (9)]).last_column - (yylsp[(5) - (9)]).first_column);
4422                                           setExceptionLocation(forIn, (yylsp[(4) - (9)]).first_column, (yylsp[(6) - (9)]).first_column + 1, (yylsp[(7) - (9)]).last_column);
4423                                           appendToVarDeclarationList(GLOBAL_DATA, (yyvsp[(9) - (9)].statementNode).m_varDeclarations, *(yyvsp[(4) - (9)].ident), DeclarationStacks::HasInitializer);
4424                                           (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(forIn, (yyvsp[(9) - (9)].statementNode).m_varDeclarations, (yyvsp[(9) - (9)].statementNode).m_funcDeclarations,
4425                                                                                          ((*(yyvsp[(4) - (9)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0) | (yyvsp[(5) - (9)].expressionNode).m_features | (yyvsp[(7) - (9)].expressionNode).m_features | (yyvsp[(9) - (9)].statementNode).m_features,
4426                                                                                          (yyvsp[(5) - (9)].expressionNode).m_numConstants + (yyvsp[(7) - (9)].expressionNode).m_numConstants + (yyvsp[(9) - (9)].statementNode).m_numConstants);
4427                                           setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (9)]), (yylsp[(8) - (9)])); ;}
4428     break;
4429 
4430   case 251:
4431 
4432 /* Line 1455 of yacc.c  */
4433 #line 1021 "parser/Grammar.y"
4434     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(0, 0, 0); ;}
4435     break;
4436 
4437   case 253:
4438 
4439 /* Line 1455 of yacc.c  */
4440 #line 1026 "parser/Grammar.y"
4441     { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(0, 0, 0); ;}
4442     break;
4443 
4444   case 255:
4445 
4446 /* Line 1455 of yacc.c  */
4447 #line 1031 "parser/Grammar.y"
4448     { ContinueNode* node = new (GLOBAL_DATA) ContinueNode(GLOBAL_DATA);
4449                                           setExceptionLocation(node, (yylsp[(1) - (2)]).first_column, (yylsp[(1) - (2)]).last_column, (yylsp[(1) - (2)]).last_column);
4450                                           (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, 0, 0);
4451                                           setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (2)]), (yylsp[(2) - (2)])); ;}
4452     break;
4453 
4454   case 256:
4455 
4456 /* Line 1455 of yacc.c  */
4457 #line 1035 "parser/Grammar.y"
4458     { ContinueNode* node = new (GLOBAL_DATA) ContinueNode(GLOBAL_DATA);
4459                                           setExceptionLocation(node, (yylsp[(1) - (2)]).first_column, (yylsp[(1) - (2)]).last_column, (yylsp[(1) - (2)]).last_column);
4460                                           (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, 0, 0);
4461                                           setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (2)]), (yylsp[(1) - (2)])); AUTO_SEMICOLON; ;}
4462     break;
4463 
4464   case 257:
4465 
4466 /* Line 1455 of yacc.c  */
4467 #line 1039 "parser/Grammar.y"
4468     { ContinueNode* node = new (GLOBAL_DATA) ContinueNode(GLOBAL_DATA, *(yyvsp[(2) - (3)].ident));
4469                                           setExceptionLocation(node, (yylsp[(1) - (3)]).first_column, (yylsp[(2) - (3)]).last_column, (yylsp[(2) - (3)]).last_column);
4470                                           (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, 0, 0);
4471                                           setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (3)]), (yylsp[(3) - (3)])); ;}
4472     break;
4473 
4474   case 258:
4475 
4476 /* Line 1455 of yacc.c  */
4477 #line 1043 "parser/Grammar.y"
4478     { ContinueNode* node = new (GLOBAL_DATA) ContinueNode(GLOBAL_DATA, *(yyvsp[(2) - (3)].ident));
4479                                           setExceptionLocation(node, (yylsp[(1) - (3)]).first_column, (yylsp[(2) - (3)]).last_column, (yylsp[(2) - (3)]).last_column);
4480                                           (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, 0, 0);
4481                                           setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (3)]), (yylsp[(2) - (3)])); AUTO_SEMICOLON; ;}
4482     break;
4483 
4484   case 259:
4485 
4486 /* Line 1455 of yacc.c  */
4487 #line 1050 "parser/Grammar.y"
4488     { BreakNode* node = new (GLOBAL_DATA) BreakNode(GLOBAL_DATA);
4489                                           setExceptionLocation(node, (yylsp[(1) - (2)]).first_column, (yylsp[(1) - (2)]).last_column, (yylsp[(1) - (2)]).last_column);
4490                                           (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, 0, 0); setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (2)]), (yylsp[(2) - (2)])); ;}
4491     break;
4492 
4493   case 260:
4494 
4495 /* Line 1455 of yacc.c  */
4496 #line 1053 "parser/Grammar.y"
4497     { BreakNode* node = new (GLOBAL_DATA) BreakNode(GLOBAL_DATA);
4498                                           setExceptionLocation(node, (yylsp[(1) - (2)]).first_column, (yylsp[(1) - (2)]).last_column, (yylsp[(1) - (2)]).last_column);
4499                                           (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) BreakNode(GLOBAL_DATA), 0, 0, 0, 0); setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (2)]), (yylsp[(1) - (2)])); AUTO_SEMICOLON; ;}
4500     break;
4501 
4502   case 261:
4503 
4504 /* Line 1455 of yacc.c  */
4505 #line 1056 "parser/Grammar.y"
4506     { BreakNode* node = new (GLOBAL_DATA) BreakNode(GLOBAL_DATA, *(yyvsp[(2) - (3)].ident));
4507                                           setExceptionLocation(node, (yylsp[(1) - (3)]).first_column, (yylsp[(2) - (3)]).last_column, (yylsp[(2) - (3)]).last_column);
4508                                           (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, 0, 0); setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (3)]), (yylsp[(3) - (3)])); ;}
4509     break;
4510 
4511   case 262:
4512 
4513 /* Line 1455 of yacc.c  */
4514 #line 1059 "parser/Grammar.y"
4515     { BreakNode* node = new (GLOBAL_DATA) BreakNode(GLOBAL_DATA, *(yyvsp[(2) - (3)].ident));
4516                                           setExceptionLocation(node, (yylsp[(1) - (3)]).first_column, (yylsp[(2) - (3)]).last_column, (yylsp[(2) - (3)]).last_column);
4517                                           (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) BreakNode(GLOBAL_DATA, *(yyvsp[(2) - (3)].ident)), 0, 0, 0, 0); setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (3)]), (yylsp[(2) - (3)])); AUTO_SEMICOLON; ;}
4518     break;
4519 
4520   case 263:
4521 
4522 /* Line 1455 of yacc.c  */
4523 #line 1065 "parser/Grammar.y"
4524     { ReturnNode* node = new (GLOBAL_DATA) ReturnNode(GLOBAL_DATA, 0);
4525                                           setExceptionLocation(node, (yylsp[(1) - (2)]).first_column, (yylsp[(1) - (2)]).last_column, (yylsp[(1) - (2)]).last_column);
4526                                           (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, 0, 0); setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (2)]), (yylsp[(2) - (2)])); ;}
4527     break;
4528 
4529   case 264:
4530 
4531 /* Line 1455 of yacc.c  */
4532 #line 1068 "parser/Grammar.y"
4533     { ReturnNode* node = new (GLOBAL_DATA) ReturnNode(GLOBAL_DATA, 0);
4534                                           setExceptionLocation(node, (yylsp[(1) - (2)]).first_column, (yylsp[(1) - (2)]).last_column, (yylsp[(1) - (2)]).last_column);
4535                                           (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, 0, 0); setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (2)]), (yylsp[(1) - (2)])); AUTO_SEMICOLON; ;}
4536     break;
4537 
4538   case 265:
4539 
4540 /* Line 1455 of yacc.c  */
4541 #line 1071 "parser/Grammar.y"
4542     { ReturnNode* node = new (GLOBAL_DATA) ReturnNode(GLOBAL_DATA, (yyvsp[(2) - (3)].expressionNode).m_node);
4543                                           setExceptionLocation(node, (yylsp[(1) - (3)]).first_column, (yylsp[(2) - (3)]).last_column, (yylsp[(2) - (3)]).last_column);
4544                                           (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, (yyvsp[(2) - (3)].expressionNode).m_features, (yyvsp[(2) - (3)].expressionNode).m_numConstants); setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (3)]), (yylsp[(3) - (3)])); ;}
4545     break;
4546 
4547   case 266:
4548 
4549 /* Line 1455 of yacc.c  */
4550 #line 1074 "parser/Grammar.y"
4551     { ReturnNode* node = new (GLOBAL_DATA) ReturnNode(GLOBAL_DATA, (yyvsp[(2) - (3)].expressionNode).m_node);
4552                                           setExceptionLocation(node, (yylsp[(1) - (3)]).first_column, (yylsp[(2) - (3)]).last_column, (yylsp[(2) - (3)]).last_column);
4553                                           (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, (yyvsp[(2) - (3)].expressionNode).m_features, (yyvsp[(2) - (3)].expressionNode).m_numConstants); setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (3)]), (yylsp[(2) - (3)])); AUTO_SEMICOLON; ;}
4554     break;
4555 
4556   case 267:
4557 
4558 /* Line 1455 of yacc.c  */
4559 #line 1080 "parser/Grammar.y"
4560     { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) WithNode(GLOBAL_DATA, (yyvsp[(3) - (5)].expressionNode).m_node, (yyvsp[(5) - (5)].statementNode).m_node, (yylsp[(3) - (5)]).last_column, (yylsp[(3) - (5)]).last_column - (yylsp[(3) - (5)]).first_column),
4561                                                                                          (yyvsp[(5) - (5)].statementNode).m_varDeclarations, (yyvsp[(5) - (5)].statementNode).m_funcDeclarations, (yyvsp[(3) - (5)].expressionNode).m_features | (yyvsp[(5) - (5)].statementNode).m_features | WithFeature, (yyvsp[(3) - (5)].expressionNode).m_numConstants + (yyvsp[(5) - (5)].statementNode).m_numConstants);
4562                                           setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (5)]), (yylsp[(4) - (5)])); ;}
4563     break;
4564 
4565   case 268:
4566 
4567 /* Line 1455 of yacc.c  */
4568 #line 1086 "parser/Grammar.y"
4569     { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) SwitchNode(GLOBAL_DATA, (yyvsp[(3) - (5)].expressionNode).m_node, (yyvsp[(5) - (5)].caseBlockNode).m_node), (yyvsp[(5) - (5)].caseBlockNode).m_varDeclarations, (yyvsp[(5) - (5)].caseBlockNode).m_funcDeclarations,
4570                                                                                          (yyvsp[(3) - (5)].expressionNode).m_features | (yyvsp[(5) - (5)].caseBlockNode).m_features, (yyvsp[(3) - (5)].expressionNode).m_numConstants + (yyvsp[(5) - (5)].caseBlockNode).m_numConstants);
4571                                           setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (5)]), (yylsp[(4) - (5)])); ;}
4572     break;
4573 
4574   case 269:
4575 
4576 /* Line 1455 of yacc.c  */
4577 #line 1092 "parser/Grammar.y"
4578     { (yyval.caseBlockNode) = createNodeDeclarationInfo<CaseBlockNode*>(new (GLOBAL_DATA) CaseBlockNode(GLOBAL_DATA, (yyvsp[(2) - (3)].clauseList).m_node.head, 0, 0), (yyvsp[(2) - (3)].clauseList).m_varDeclarations, (yyvsp[(2) - (3)].clauseList).m_funcDeclarations, (yyvsp[(2) - (3)].clauseList).m_features, (yyvsp[(2) - (3)].clauseList).m_numConstants); ;}
4579     break;
4580 
4581   case 270:
4582 
4583 /* Line 1455 of yacc.c  */
4584 #line 1094 "parser/Grammar.y"
4585     { (yyval.caseBlockNode) = createNodeDeclarationInfo<CaseBlockNode*>(new (GLOBAL_DATA) CaseBlockNode(GLOBAL_DATA, (yyvsp[(2) - (5)].clauseList).m_node.head, (yyvsp[(3) - (5)].caseClauseNode).m_node, (yyvsp[(4) - (5)].clauseList).m_node.head),
4586                                                                                          mergeDeclarationLists(mergeDeclarationLists((yyvsp[(2) - (5)].clauseList).m_varDeclarations, (yyvsp[(3) - (5)].caseClauseNode).m_varDeclarations), (yyvsp[(4) - (5)].clauseList).m_varDeclarations),
4587                                                                                          mergeDeclarationLists(mergeDeclarationLists((yyvsp[(2) - (5)].clauseList).m_funcDeclarations, (yyvsp[(3) - (5)].caseClauseNode).m_funcDeclarations), (yyvsp[(4) - (5)].clauseList).m_funcDeclarations),
4588                                                                                          (yyvsp[(2) - (5)].clauseList).m_features | (yyvsp[(3) - (5)].caseClauseNode).m_features | (yyvsp[(4) - (5)].clauseList).m_features,
4589                                                                                          (yyvsp[(2) - (5)].clauseList).m_numConstants + (yyvsp[(3) - (5)].caseClauseNode).m_numConstants + (yyvsp[(4) - (5)].clauseList).m_numConstants); ;}
4590     break;
4591 
4592   case 271:
4593 
4594 /* Line 1455 of yacc.c  */
4595 #line 1102 "parser/Grammar.y"
4596     { (yyval.clauseList).m_node.head = 0; (yyval.clauseList).m_node.tail = 0; (yyval.clauseList).m_varDeclarations = 0; (yyval.clauseList).m_funcDeclarations = 0; (yyval.clauseList).m_features = 0; (yyval.clauseList).m_numConstants = 0; ;}
4597     break;
4598 
4599   case 273:
4600 
4601 /* Line 1455 of yacc.c  */
4602 #line 1107 "parser/Grammar.y"
4603     { (yyval.clauseList).m_node.head = new (GLOBAL_DATA) ClauseListNode(GLOBAL_DATA, (yyvsp[(1) - (1)].caseClauseNode).m_node);
4604                                           (yyval.clauseList).m_node.tail = (yyval.clauseList).m_node.head;
4605                                           (yyval.clauseList).m_varDeclarations = (yyvsp[(1) - (1)].caseClauseNode).m_varDeclarations;
4606                                           (yyval.clauseList).m_funcDeclarations = (yyvsp[(1) - (1)].caseClauseNode).m_funcDeclarations;
4607                                           (yyval.clauseList).m_features = (yyvsp[(1) - (1)].caseClauseNode).m_features;
4608                                           (yyval.clauseList).m_numConstants = (yyvsp[(1) - (1)].caseClauseNode).m_numConstants; ;}
4609     break;
4610 
4611   case 274:
4612 
4613 /* Line 1455 of yacc.c  */
4614 #line 1113 "parser/Grammar.y"
4615     { (yyval.clauseList).m_node.head = (yyvsp[(1) - (2)].clauseList).m_node.head;
4616                                           (yyval.clauseList).m_node.tail = new (GLOBAL_DATA) ClauseListNode(GLOBAL_DATA, (yyvsp[(1) - (2)].clauseList).m_node.tail, (yyvsp[(2) - (2)].caseClauseNode).m_node);
4617                                           (yyval.clauseList).m_varDeclarations = mergeDeclarationLists((yyvsp[(1) - (2)].clauseList).m_varDeclarations, (yyvsp[(2) - (2)].caseClauseNode).m_varDeclarations);
4618                                           (yyval.clauseList).m_funcDeclarations = mergeDeclarationLists((yyvsp[(1) - (2)].clauseList).m_funcDeclarations, (yyvsp[(2) - (2)].caseClauseNode).m_funcDeclarations);
4619                                           (yyval.clauseList).m_features = (yyvsp[(1) - (2)].clauseList).m_features | (yyvsp[(2) - (2)].caseClauseNode).m_features;
4620                                           (yyval.clauseList).m_numConstants = (yyvsp[(1) - (2)].clauseList).m_numConstants + (yyvsp[(2) - (2)].caseClauseNode).m_numConstants;
4621                                         ;}
4622     break;
4623 
4624   case 275:
4625 
4626 /* Line 1455 of yacc.c  */
4627 #line 1123 "parser/Grammar.y"
4628     { (yyval.caseClauseNode) = createNodeDeclarationInfo<CaseClauseNode*>(new (GLOBAL_DATA) CaseClauseNode(GLOBAL_DATA, (yyvsp[(2) - (3)].expressionNode).m_node), 0, 0, (yyvsp[(2) - (3)].expressionNode).m_features, (yyvsp[(2) - (3)].expressionNode).m_numConstants); ;}
4629     break;
4630 
4631   case 276:
4632 
4633 /* Line 1455 of yacc.c  */
4634 #line 1124 "parser/Grammar.y"
4635     { (yyval.caseClauseNode) = createNodeDeclarationInfo<CaseClauseNode*>(new (GLOBAL_DATA) CaseClauseNode(GLOBAL_DATA, (yyvsp[(2) - (4)].expressionNode).m_node, (yyvsp[(4) - (4)].sourceElements).m_node), (yyvsp[(4) - (4)].sourceElements).m_varDeclarations, (yyvsp[(4) - (4)].sourceElements).m_funcDeclarations, (yyvsp[(2) - (4)].expressionNode).m_features | (yyvsp[(4) - (4)].sourceElements).m_features, (yyvsp[(2) - (4)].expressionNode).m_numConstants + (yyvsp[(4) - (4)].sourceElements).m_numConstants); ;}
4636     break;
4637 
4638   case 277:
4639 
4640 /* Line 1455 of yacc.c  */
4641 #line 1128 "parser/Grammar.y"
4642     { (yyval.caseClauseNode) = createNodeDeclarationInfo<CaseClauseNode*>(new (GLOBAL_DATA) CaseClauseNode(GLOBAL_DATA, 0), 0, 0, 0, 0); ;}
4643     break;
4644 
4645   case 278:
4646 
4647 /* Line 1455 of yacc.c  */
4648 #line 1129 "parser/Grammar.y"
4649     { (yyval.caseClauseNode) = createNodeDeclarationInfo<CaseClauseNode*>(new (GLOBAL_DATA) CaseClauseNode(GLOBAL_DATA, 0, (yyvsp[(3) - (3)].sourceElements).m_node), (yyvsp[(3) - (3)].sourceElements).m_varDeclarations, (yyvsp[(3) - (3)].sourceElements).m_funcDeclarations, (yyvsp[(3) - (3)].sourceElements).m_features, (yyvsp[(3) - (3)].sourceElements).m_numConstants); ;}
4650     break;
4651 
4652   case 279:
4653 
4654 /* Line 1455 of yacc.c  */
4655 #line 1133 "parser/Grammar.y"
4656     { LabelNode* node = new (GLOBAL_DATA) LabelNode(GLOBAL_DATA, *(yyvsp[(1) - (3)].ident), (yyvsp[(3) - (3)].statementNode).m_node);
4657                                           setExceptionLocation(node, (yylsp[(1) - (3)]).first_column, (yylsp[(2) - (3)]).last_column, (yylsp[(2) - (3)]).last_column);
4658                                           (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, (yyvsp[(3) - (3)].statementNode).m_varDeclarations, (yyvsp[(3) - (3)].statementNode).m_funcDeclarations, (yyvsp[(3) - (3)].statementNode).m_features, (yyvsp[(3) - (3)].statementNode).m_numConstants); ;}
4659     break;
4660 
4661   case 280:
4662 
4663 /* Line 1455 of yacc.c  */
4664 #line 1139 "parser/Grammar.y"
4665     { ThrowNode* node = new (GLOBAL_DATA) ThrowNode(GLOBAL_DATA, (yyvsp[(2) - (3)].expressionNode).m_node);
4666                                           setExceptionLocation(node, (yylsp[(1) - (3)]).first_column, (yylsp[(2) - (3)]).last_column, (yylsp[(2) - (3)]).last_column);
4667                                           (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, (yyvsp[(2) - (3)].expressionNode).m_features, (yyvsp[(2) - (3)].expressionNode).m_numConstants); setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (3)]), (yylsp[(2) - (3)]));
4668                                         ;}
4669     break;
4670 
4671   case 281:
4672 
4673 /* Line 1455 of yacc.c  */
4674 #line 1143 "parser/Grammar.y"
4675     { ThrowNode* node = new (GLOBAL_DATA) ThrowNode(GLOBAL_DATA, (yyvsp[(2) - (3)].expressionNode).m_node);
4676                                           setExceptionLocation(node, (yylsp[(1) - (3)]).first_column, (yylsp[(2) - (3)]).last_column, (yylsp[(2) - (3)]).last_column);
4677                                           (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, (yyvsp[(2) - (3)].expressionNode).m_features, (yyvsp[(2) - (3)].expressionNode).m_numConstants); setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (3)]), (yylsp[(2) - (3)])); AUTO_SEMICOLON;
4678                                         ;}
4679     break;
4680 
4681   case 282:
4682 
4683 /* Line 1455 of yacc.c  */
4684 #line 1150 "parser/Grammar.y"
4685     { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) TryNode(GLOBAL_DATA, (yyvsp[(2) - (4)].statementNode).m_node, GLOBAL_DATA->propertyNames->nullIdentifier, false, 0, (yyvsp[(4) - (4)].statementNode).m_node),
4686                                                                                          mergeDeclarationLists((yyvsp[(2) - (4)].statementNode).m_varDeclarations, (yyvsp[(4) - (4)].statementNode).m_varDeclarations),
4687                                                                                          mergeDeclarationLists((yyvsp[(2) - (4)].statementNode).m_funcDeclarations, (yyvsp[(4) - (4)].statementNode).m_funcDeclarations),
4688                                                                                          (yyvsp[(2) - (4)].statementNode).m_features | (yyvsp[(4) - (4)].statementNode).m_features,
4689                                                                                          (yyvsp[(2) - (4)].statementNode).m_numConstants + (yyvsp[(4) - (4)].statementNode).m_numConstants);
4690                                           setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (4)]), (yylsp[(2) - (4)])); ;}
4691     break;
4692 
4693   case 283:
4694 
4695 /* Line 1455 of yacc.c  */
4696 #line 1156 "parser/Grammar.y"
4697     { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) TryNode(GLOBAL_DATA, (yyvsp[(2) - (7)].statementNode).m_node, *(yyvsp[(5) - (7)].ident), ((yyvsp[(7) - (7)].statementNode).m_features & EvalFeature) != 0, (yyvsp[(7) - (7)].statementNode).m_node, 0),
4698                                                                                          mergeDeclarationLists((yyvsp[(2) - (7)].statementNode).m_varDeclarations, (yyvsp[(7) - (7)].statementNode).m_varDeclarations),
4699                                                                                          mergeDeclarationLists((yyvsp[(2) - (7)].statementNode).m_funcDeclarations, (yyvsp[(7) - (7)].statementNode).m_funcDeclarations),
4700                                                                                          (yyvsp[(2) - (7)].statementNode).m_features | (yyvsp[(7) - (7)].statementNode).m_features | CatchFeature,
4701                                                                                          (yyvsp[(2) - (7)].statementNode).m_numConstants + (yyvsp[(7) - (7)].statementNode).m_numConstants);
4702                                           setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (7)]), (yylsp[(2) - (7)])); ;}
4703     break;
4704 
4705   case 284:
4706 
4707 /* Line 1455 of yacc.c  */
4708 #line 1163 "parser/Grammar.y"
4709     { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) TryNode(GLOBAL_DATA, (yyvsp[(2) - (9)].statementNode).m_node, *(yyvsp[(5) - (9)].ident), ((yyvsp[(7) - (9)].statementNode).m_features & EvalFeature) != 0, (yyvsp[(7) - (9)].statementNode).m_node, (yyvsp[(9) - (9)].statementNode).m_node),
4710                                                                                          mergeDeclarationLists(mergeDeclarationLists((yyvsp[(2) - (9)].statementNode).m_varDeclarations, (yyvsp[(7) - (9)].statementNode).m_varDeclarations), (yyvsp[(9) - (9)].statementNode).m_varDeclarations),
4711                                                                                          mergeDeclarationLists(mergeDeclarationLists((yyvsp[(2) - (9)].statementNode).m_funcDeclarations, (yyvsp[(7) - (9)].statementNode).m_funcDeclarations), (yyvsp[(9) - (9)].statementNode).m_funcDeclarations),
4712                                                                                          (yyvsp[(2) - (9)].statementNode).m_features | (yyvsp[(7) - (9)].statementNode).m_features | (yyvsp[(9) - (9)].statementNode).m_features | CatchFeature,
4713                                                                                          (yyvsp[(2) - (9)].statementNode).m_numConstants + (yyvsp[(7) - (9)].statementNode).m_numConstants + (yyvsp[(9) - (9)].statementNode).m_numConstants);
4714                                           setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (9)]), (yylsp[(2) - (9)])); ;}
4715     break;
4716 
4717   case 285:
4718 
4719 /* Line 1455 of yacc.c  */
4720 #line 1172 "parser/Grammar.y"
4721     { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) DebuggerStatementNode(GLOBAL_DATA), 0, 0, 0, 0);
4722                                           setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (2)]), (yylsp[(2) - (2)])); ;}
4723     break;
4724 
4725   case 286:
4726 
4727 /* Line 1455 of yacc.c  */
4728 #line 1174 "parser/Grammar.y"
4729     { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) DebuggerStatementNode(GLOBAL_DATA), 0, 0, 0, 0);
4730                                           setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (2)]), (yylsp[(1) - (2)])); AUTO_SEMICOLON; ;}
4731     break;
4732 
4733   case 287:
4734 
4735 /* Line 1455 of yacc.c  */
4736 #line 1179 "parser/Grammar.y"
4737     { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) FuncDeclNode(GLOBAL_DATA, *(yyvsp[(2) - (7)].ident), (yyvsp[(6) - (7)].functionBodyNode), GLOBAL_DATA->lexer->sourceCode((yyvsp[(5) - (7)].intValue), (yyvsp[(7) - (7)].intValue), (yylsp[(5) - (7)]).first_line)), 0, new (GLOBAL_DATA) ParserArenaData<DeclarationStacks::FunctionStack>, ((*(yyvsp[(2) - (7)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0) | ClosureFeature, 0); setStatementLocation((yyvsp[(6) - (7)].functionBodyNode), (yylsp[(5) - (7)]), (yylsp[(7) - (7)])); (yyval.statementNode).m_funcDeclarations->data.append(static_cast<FuncDeclNode*>((yyval.statementNode).m_node)->body()); ;}
4738     break;
4739 
4740   case 288:
4741 
4742 /* Line 1455 of yacc.c  */
4743 #line 1181 "parser/Grammar.y"
4744     {
4745           (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) FuncDeclNode(GLOBAL_DATA, *(yyvsp[(2) - (8)].ident), (yyvsp[(7) - (8)].functionBodyNode), GLOBAL_DATA->lexer->sourceCode((yyvsp[(6) - (8)].intValue), (yyvsp[(8) - (8)].intValue), (yylsp[(6) - (8)]).first_line), (yyvsp[(4) - (8)].parameterList).m_node.head), 0, new (GLOBAL_DATA) ParserArenaData<DeclarationStacks::FunctionStack>, ((*(yyvsp[(2) - (8)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0) | (yyvsp[(4) - (8)].parameterList).m_features | ClosureFeature, 0);
4746           if ((yyvsp[(4) - (8)].parameterList).m_features & ArgumentsFeature)
4747               (yyvsp[(7) - (8)].functionBodyNode)->setUsesArguments();
4748           setStatementLocation((yyvsp[(7) - (8)].functionBodyNode), (yylsp[(6) - (8)]), (yylsp[(8) - (8)]));
4749           (yyval.statementNode).m_funcDeclarations->data.append(static_cast<FuncDeclNode*>((yyval.statementNode).m_node)->body());
4750       ;}
4751     break;
4752 
4753   case 289:
4754 
4755 /* Line 1455 of yacc.c  */
4756 #line 1191 "parser/Grammar.y"
4757     { (yyval.funcExprNode) = createNodeInfo(new (GLOBAL_DATA) FuncExprNode(GLOBAL_DATA, GLOBAL_DATA->propertyNames->nullIdentifier, (yyvsp[(5) - (6)].functionBodyNode), GLOBAL_DATA->lexer->sourceCode((yyvsp[(4) - (6)].intValue), (yyvsp[(6) - (6)].intValue), (yylsp[(4) - (6)]).first_line)), ClosureFeature, 0); setStatementLocation((yyvsp[(5) - (6)].functionBodyNode), (yylsp[(4) - (6)]), (yylsp[(6) - (6)])); ;}
4758     break;
4759 
4760   case 290:
4761 
4762 /* Line 1455 of yacc.c  */
4763 #line 1193 "parser/Grammar.y"
4764     {
4765           (yyval.funcExprNode) = createNodeInfo(new (GLOBAL_DATA) FuncExprNode(GLOBAL_DATA, GLOBAL_DATA->propertyNames->nullIdentifier, (yyvsp[(6) - (7)].functionBodyNode), GLOBAL_DATA->lexer->sourceCode((yyvsp[(5) - (7)].intValue), (yyvsp[(7) - (7)].intValue), (yylsp[(5) - (7)]).first_line), (yyvsp[(3) - (7)].parameterList).m_node.head), (yyvsp[(3) - (7)].parameterList).m_features | ClosureFeature, 0);
4766           if ((yyvsp[(3) - (7)].parameterList).m_features & ArgumentsFeature)
4767               (yyvsp[(6) - (7)].functionBodyNode)->setUsesArguments();
4768           setStatementLocation((yyvsp[(6) - (7)].functionBodyNode), (yylsp[(5) - (7)]), (yylsp[(7) - (7)]));
4769       ;}
4770     break;
4771 
4772   case 291:
4773 
4774 /* Line 1455 of yacc.c  */
4775 #line 1199 "parser/Grammar.y"
4776     { (yyval.funcExprNode) = createNodeInfo(new (GLOBAL_DATA) FuncExprNode(GLOBAL_DATA, *(yyvsp[(2) - (7)].ident), (yyvsp[(6) - (7)].functionBodyNode), GLOBAL_DATA->lexer->sourceCode((yyvsp[(5) - (7)].intValue), (yyvsp[(7) - (7)].intValue), (yylsp[(5) - (7)]).first_line)), ClosureFeature, 0); setStatementLocation((yyvsp[(6) - (7)].functionBodyNode), (yylsp[(5) - (7)]), (yylsp[(7) - (7)])); ;}
4777     break;
4778 
4779   case 292:
4780 
4781 /* Line 1455 of yacc.c  */
4782 #line 1201 "parser/Grammar.y"
4783     {
4784           (yyval.funcExprNode) = createNodeInfo(new (GLOBAL_DATA) FuncExprNode(GLOBAL_DATA, *(yyvsp[(2) - (8)].ident), (yyvsp[(7) - (8)].functionBodyNode), GLOBAL_DATA->lexer->sourceCode((yyvsp[(6) - (8)].intValue), (yyvsp[(8) - (8)].intValue), (yylsp[(6) - (8)]).first_line), (yyvsp[(4) - (8)].parameterList).m_node.head), (yyvsp[(4) - (8)].parameterList).m_features | ClosureFeature, 0);
4785           if ((yyvsp[(4) - (8)].parameterList).m_features & ArgumentsFeature)
4786               (yyvsp[(7) - (8)].functionBodyNode)->setUsesArguments();
4787           setStatementLocation((yyvsp[(7) - (8)].functionBodyNode), (yylsp[(6) - (8)]), (yylsp[(8) - (8)]));
4788       ;}
4789     break;
4790 
4791   case 293:
4792 
4793 /* Line 1455 of yacc.c  */
4794 #line 1210 "parser/Grammar.y"
4795     { (yyval.parameterList).m_node.head = new (GLOBAL_DATA) ParameterNode(GLOBAL_DATA, *(yyvsp[(1) - (1)].ident));
4796                                           (yyval.parameterList).m_features = (*(yyvsp[(1) - (1)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0;
4797                                           (yyval.parameterList).m_node.tail = (yyval.parameterList).m_node.head; ;}
4798     break;
4799 
4800   case 294:
4801 
4802 /* Line 1455 of yacc.c  */
4803 #line 1213 "parser/Grammar.y"
4804     { (yyval.parameterList).m_node.head = (yyvsp[(1) - (3)].parameterList).m_node.head;
4805                                           (yyval.parameterList).m_features = (yyvsp[(1) - (3)].parameterList).m_features | ((*(yyvsp[(3) - (3)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0);
4806                                           (yyval.parameterList).m_node.tail = new (GLOBAL_DATA) ParameterNode(GLOBAL_DATA, (yyvsp[(1) - (3)].parameterList).m_node.tail, *(yyvsp[(3) - (3)].ident));  ;}
4807     break;
4808 
4809   case 295:
4810 
4811 /* Line 1455 of yacc.c  */
4812 #line 1219 "parser/Grammar.y"
4813     { (yyval.functionBodyNode) = FunctionBodyNode::create(GLOBAL_DATA); ;}
4814     break;
4815 
4816   case 296:
4817 
4818 /* Line 1455 of yacc.c  */
4819 #line 1220 "parser/Grammar.y"
4820     { (yyval.functionBodyNode) = FunctionBodyNode::create(GLOBAL_DATA); ;}
4821     break;
4822 
4823   case 297:
4824 
4825 /* Line 1455 of yacc.c  */
4826 #line 1224 "parser/Grammar.y"
4827     { GLOBAL_DATA->parser->didFinishParsing(new (GLOBAL_DATA) SourceElements(GLOBAL_DATA), 0, 0, NoFeatures, (yylsp[(0) - (0)]).last_line, 0); ;}
4828     break;
4829 
4830   case 298:
4831 
4832 /* Line 1455 of yacc.c  */
4833 #line 1225 "parser/Grammar.y"
4834     { GLOBAL_DATA->parser->didFinishParsing((yyvsp[(1) - (1)].sourceElements).m_node, (yyvsp[(1) - (1)].sourceElements).m_varDeclarations, (yyvsp[(1) - (1)].sourceElements).m_funcDeclarations, (yyvsp[(1) - (1)].sourceElements).m_features,
4835                                                                                 (yylsp[(1) - (1)]).last_line, (yyvsp[(1) - (1)].sourceElements).m_numConstants); ;}
4836     break;
4837 
4838   case 299:
4839 
4840 /* Line 1455 of yacc.c  */
4841 #line 1230 "parser/Grammar.y"
4842     { (yyval.sourceElements).m_node = new (GLOBAL_DATA) SourceElements(GLOBAL_DATA);
4843                                           (yyval.sourceElements).m_node->append((yyvsp[(1) - (1)].statementNode).m_node);
4844                                           (yyval.sourceElements).m_varDeclarations = (yyvsp[(1) - (1)].statementNode).m_varDeclarations;
4845                                           (yyval.sourceElements).m_funcDeclarations = (yyvsp[(1) - (1)].statementNode).m_funcDeclarations;
4846                                           (yyval.sourceElements).m_features = (yyvsp[(1) - (1)].statementNode).m_features;
4847                                           (yyval.sourceElements).m_numConstants = (yyvsp[(1) - (1)].statementNode).m_numConstants;
4848                                         ;}
4849     break;
4850 
4851   case 300:
4852 
4853 /* Line 1455 of yacc.c  */
4854 #line 1237 "parser/Grammar.y"
4855     { (yyval.sourceElements).m_node->append((yyvsp[(2) - (2)].statementNode).m_node);
4856                                           (yyval.sourceElements).m_varDeclarations = mergeDeclarationLists((yyvsp[(1) - (2)].sourceElements).m_varDeclarations, (yyvsp[(2) - (2)].statementNode).m_varDeclarations);
4857                                           (yyval.sourceElements).m_funcDeclarations = mergeDeclarationLists((yyvsp[(1) - (2)].sourceElements).m_funcDeclarations, (yyvsp[(2) - (2)].statementNode).m_funcDeclarations);
4858                                           (yyval.sourceElements).m_features = (yyvsp[(1) - (2)].sourceElements).m_features | (yyvsp[(2) - (2)].statementNode).m_features;
4859                                           (yyval.sourceElements).m_numConstants = (yyvsp[(1) - (2)].sourceElements).m_numConstants + (yyvsp[(2) - (2)].statementNode).m_numConstants;
4860                                         ;}
4861     break;
4862 
4863   case 304:
4864 
4865 /* Line 1455 of yacc.c  */
4866 #line 1251 "parser/Grammar.y"
4867     { ;}
4868     break;
4869 
4870   case 305:
4871 
4872 /* Line 1455 of yacc.c  */
4873 #line 1252 "parser/Grammar.y"
4874     { ;}
4875     break;
4876 
4877   case 306:
4878 
4879 /* Line 1455 of yacc.c  */
4880 #line 1253 "parser/Grammar.y"
4881     { if (!GLOBAL_DATA->lexer->skipRegExp()) YYABORT; ;}
4882     break;
4883 
4884   case 307:
4885 
4886 /* Line 1455 of yacc.c  */
4887 #line 1254 "parser/Grammar.y"
4888     { if (!GLOBAL_DATA->lexer->skipRegExp()) YYABORT; ;}
4889     break;
4890 
4891   case 308:
4892 
4893 /* Line 1455 of yacc.c  */
4894 #line 1258 "parser/Grammar.y"
4895     { ;}
4896     break;
4897 
4898   case 309:
4899 
4900 /* Line 1455 of yacc.c  */
4901 #line 1259 "parser/Grammar.y"
4902     { ;}
4903     break;
4904 
4905   case 310:
4906 
4907 /* Line 1455 of yacc.c  */
4908 #line 1260 "parser/Grammar.y"
4909     { ;}
4910     break;
4911 
4912   case 311:
4913 
4914 /* Line 1455 of yacc.c  */
4915 #line 1261 "parser/Grammar.y"
4916     { if (*(yyvsp[(1) - (7)].ident) != "get" && *(yyvsp[(1) - (7)].ident) != "set") YYABORT; ;}
4917     break;
4918 
4919   case 312:
4920 
4921 /* Line 1455 of yacc.c  */
4922 #line 1262 "parser/Grammar.y"
4923     { if (*(yyvsp[(1) - (8)].ident) != "get" && *(yyvsp[(1) - (8)].ident) != "set") YYABORT; ;}
4924     break;
4925 
4926   case 316:
4927 
4928 /* Line 1455 of yacc.c  */
4929 #line 1272 "parser/Grammar.y"
4930     { ;}
4931     break;
4932 
4933   case 317:
4934 
4935 /* Line 1455 of yacc.c  */
4936 #line 1273 "parser/Grammar.y"
4937     { ;}
4938     break;
4939 
4940   case 318:
4941 
4942 /* Line 1455 of yacc.c  */
4943 #line 1275 "parser/Grammar.y"
4944     { ;}
4945     break;
4946 
4947   case 322:
4948 
4949 /* Line 1455 of yacc.c  */
4950 #line 1282 "parser/Grammar.y"
4951     { ;}
4952     break;
4953 
4954   case 517:
4955 
4956 /* Line 1455 of yacc.c  */
4957 #line 1650 "parser/Grammar.y"
4958     { ;}
4959     break;
4960 
4961   case 518:
4962 
4963 /* Line 1455 of yacc.c  */
4964 #line 1651 "parser/Grammar.y"
4965     { ;}
4966     break;
4967 
4968   case 520:
4969 
4970 /* Line 1455 of yacc.c  */
4971 #line 1656 "parser/Grammar.y"
4972     { AUTO_SEMICOLON; ;}
4973     break;
4974 
4975   case 521:
4976 
4977 /* Line 1455 of yacc.c  */
4978 #line 1660 "parser/Grammar.y"
4979     { ;}
4980     break;
4981 
4982   case 522:
4983 
4984 /* Line 1455 of yacc.c  */
4985 #line 1661 "parser/Grammar.y"
4986     { ;}
4987     break;
4988 
4989   case 525:
4990 
4991 /* Line 1455 of yacc.c  */
4992 #line 1667 "parser/Grammar.y"
4993     { ;}
4994     break;
4995 
4996   case 526:
4997 
4998 /* Line 1455 of yacc.c  */
4999 #line 1668 "parser/Grammar.y"
5000     { ;}
5001     break;
5002 
5003   case 530:
5004 
5005 /* Line 1455 of yacc.c  */
5006 #line 1675 "parser/Grammar.y"
5007     { AUTO_SEMICOLON; ;}
5008     break;
5009 
5010   case 533:
5011 
5012 /* Line 1455 of yacc.c  */
5013 #line 1684 "parser/Grammar.y"
5014     { ;}
5015     break;
5016 
5017   case 534:
5018 
5019 /* Line 1455 of yacc.c  */
5020 #line 1685 "parser/Grammar.y"
5021     { ;}
5022     break;
5023 
5024   case 539:
5025 
5026 /* Line 1455 of yacc.c  */
5027 #line 1702 "parser/Grammar.y"
5028     { AUTO_SEMICOLON; ;}
5029     break;
5030 
5031   case 555:
5032 
5033 /* Line 1455 of yacc.c  */
5034 #line 1733 "parser/Grammar.y"
5035     { AUTO_SEMICOLON; ;}
5036     break;
5037 
5038   case 557:
5039 
5040 /* Line 1455 of yacc.c  */
5041 #line 1735 "parser/Grammar.y"
5042     { AUTO_SEMICOLON; ;}
5043     break;
5044 
5045   case 559:
5046 
5047 /* Line 1455 of yacc.c  */
5048 #line 1740 "parser/Grammar.y"
5049     { AUTO_SEMICOLON; ;}
5050     break;
5051 
5052   case 561:
5053 
5054 /* Line 1455 of yacc.c  */
5055 #line 1742 "parser/Grammar.y"
5056     { AUTO_SEMICOLON; ;}
5057     break;
5058 
5059   case 563:
5060 
5061 /* Line 1455 of yacc.c  */
5062 #line 1747 "parser/Grammar.y"
5063     { AUTO_SEMICOLON; ;}
5064     break;
5065 
5066   case 565:
5067 
5068 /* Line 1455 of yacc.c  */
5069 #line 1749 "parser/Grammar.y"
5070     { AUTO_SEMICOLON; ;}
5071     break;
5072 
5073   case 568:
5074 
5075 /* Line 1455 of yacc.c  */
5076 #line 1761 "parser/Grammar.y"
5077     { ;}
5078     break;
5079 
5080   case 569:
5081 
5082 /* Line 1455 of yacc.c  */
5083 #line 1762 "parser/Grammar.y"
5084     { ;}
5085     break;
5086 
5087   case 578:
5088 
5089 /* Line 1455 of yacc.c  */
5090 #line 1786 "parser/Grammar.y"
5091     { ;}
5092     break;
5093 
5094   case 580:
5095 
5096 /* Line 1455 of yacc.c  */
5097 #line 1791 "parser/Grammar.y"
5098     { AUTO_SEMICOLON; ;}
5099     break;
5100 
5101   case 585:
5102 
5103 /* Line 1455 of yacc.c  */
5104 #line 1802 "parser/Grammar.y"
5105     { AUTO_SEMICOLON; ;}
5106     break;
5107 
5108   case 592:
5109 
5110 /* Line 1455 of yacc.c  */
5111 #line 1818 "parser/Grammar.y"
5112     { ;}
5113     break;
5114 
5115 
5116 
5117 /* Line 1455 of yacc.c  */
5118 #line 5119 "generated/Grammar.tab.c"
5119       default: break;
5120     }
5121   YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
5122 
5123   YYPOPSTACK (yylen);
5124   yylen = 0;
5125   YY_STACK_PRINT (yyss, yyssp);
5126 
5127   *++yyvsp = yyval;
5128   *++yylsp = yyloc;
5129 
5130   /* Now `shift' the result of the reduction.  Determine what state
5131      that goes to, based on the state we popped back to and the rule
5132      number reduced by.  */
5133 
5134   yyn = yyr1[yyn];
5135 
5136   yystate = yypgoto[yyn - YYNTOKENS] + *yyssp;
5137   if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == *yyssp)
5138     yystate = yytable[yystate];
5139   else
5140     yystate = yydefgoto[yyn - YYNTOKENS];
5141 
5142   goto yynewstate;
5143 
5144 
5145 /*------------------------------------.
5146 | yyerrlab -- here on detecting error |
5147 `------------------------------------*/
5148 yyerrlab:
5149   /* If not already recovering from an error, report this error.  */
5150   if (!yyerrstatus)
5151     {
5152       ++yynerrs;
5153 #if ! YYERROR_VERBOSE
5154       yyerror (YY_("syntax error"));
5155 #else
5156       {
5157 	YYSIZE_T yysize = yysyntax_error (0, yystate, yychar);
5158 	if (yymsg_alloc < yysize && yymsg_alloc < YYSTACK_ALLOC_MAXIMUM)
5159 	  {
5160 	    YYSIZE_T yyalloc = 2 * yysize;
5161 	    if (! (yysize <= yyalloc && yyalloc <= YYSTACK_ALLOC_MAXIMUM))
5162 	      yyalloc = YYSTACK_ALLOC_MAXIMUM;
5163 	    if (yymsg != yymsgbuf)
5164 	      YYSTACK_FREE (yymsg);
5165 	    yymsg = (char *) YYSTACK_ALLOC (yyalloc);
5166 	    if (yymsg)
5167 	      yymsg_alloc = yyalloc;
5168 	    else
5169 	      {
5170 		yymsg = yymsgbuf;
5171 		yymsg_alloc = sizeof yymsgbuf;
5172 	      }
5173 	  }
5174 
5175 	if (0 < yysize && yysize <= yymsg_alloc)
5176 	  {
5177 	    (void) yysyntax_error (yymsg, yystate, yychar);
5178 	    yyerror (yymsg);
5179 	  }
5180 	else
5181 	  {
5182 	    yyerror (YY_("syntax error"));
5183 	    if (yysize != 0)
5184 	      goto yyexhaustedlab;
5185 	  }
5186       }
5187 #endif
5188     }
5189 
5190   yyerror_range[0] = yylloc;
5191 
5192   if (yyerrstatus == 3)
5193     {
5194       /* If just tried and failed to reuse lookahead token after an
5195 	 error, discard it.  */
5196 
5197       if (yychar <= YYEOF)
5198 	{
5199 	  /* Return failure if at end of input.  */
5200 	  if (yychar == YYEOF)
5201 	    YYABORT;
5202 	}
5203       else
5204 	{
5205 	  yydestruct ("Error: discarding",
5206 		      yytoken, &yylval, &yylloc);
5207 	  yychar = YYEMPTY;
5208 	}
5209     }
5210 
5211   /* Else will try to reuse lookahead token after shifting the error
5212      token.  */
5213   goto yyerrlab1;
5214 
5215 
5216 /*---------------------------------------------------.
5217 | yyerrorlab -- error raised explicitly by YYERROR.  |
5218 `---------------------------------------------------*/
5219 yyerrorlab:
5220 
5221   /* Pacify compilers like GCC when the user code never invokes
5222      YYERROR and the label yyerrorlab therefore never appears in user
5223      code.  */
5224   if (/*CONSTCOND*/ 0)
5225      goto yyerrorlab;
5226 
5227   yyerror_range[0] = yylsp[1-yylen];
5228   /* Do not reclaim the symbols of the rule which action triggered
5229      this YYERROR.  */
5230   YYPOPSTACK (yylen);
5231   yylen = 0;
5232   YY_STACK_PRINT (yyss, yyssp);
5233   yystate = *yyssp;
5234   goto yyerrlab1;
5235 
5236 
5237 /*-------------------------------------------------------------.
5238 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
5239 `-------------------------------------------------------------*/
5240 yyerrlab1:
5241   yyerrstatus = 3;	/* Each real token shifted decrements this.  */
5242 
5243   for (;;)
5244     {
5245       yyn = yypact[yystate];
5246       if (yyn != YYPACT_NINF)
5247 	{
5248 	  yyn += YYTERROR;
5249 	  if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
5250 	    {
5251 	      yyn = yytable[yyn];
5252 	      if (0 < yyn)
5253 		break;
5254 	    }
5255 	}
5256 
5257       /* Pop the current state because it cannot handle the error token.  */
5258       if (yyssp == yyss)
5259 	YYABORT;
5260 
5261       yyerror_range[0] = *yylsp;
5262       yydestruct ("Error: popping",
5263 		  yystos[yystate], yyvsp, yylsp);
5264       YYPOPSTACK (1);
5265       yystate = *yyssp;
5266       YY_STACK_PRINT (yyss, yyssp);
5267     }
5268 
5269   *++yyvsp = yylval;
5270 
5271   yyerror_range[1] = yylloc;
5272   /* Using YYLLOC is tempting, but would change the location of
5273      the lookahead.  YYLOC is available though.  */
5274   YYLLOC_DEFAULT (yyloc, (yyerror_range - 1), 2);
5275   *++yylsp = yyloc;
5276 
5277   /* Shift the error token.  */
5278   YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsp, yylsp);
5279 
5280   yystate = yyn;
5281   goto yynewstate;
5282 
5283 
5284 /*-------------------------------------.
5285 | yyacceptlab -- YYACCEPT comes here.  |
5286 `-------------------------------------*/
5287 yyacceptlab:
5288   yyresult = 0;
5289   goto yyreturn;
5290 
5291 /*-----------------------------------.
5292 | yyabortlab -- YYABORT comes here.  |
5293 `-----------------------------------*/
5294 yyabortlab:
5295   yyresult = 1;
5296   goto yyreturn;
5297 
5298 #if !defined(yyoverflow) || YYERROR_VERBOSE
5299 /*-------------------------------------------------.
5300 | yyexhaustedlab -- memory exhaustion comes here.  |
5301 `-------------------------------------------------*/
5302 yyexhaustedlab:
5303   yyerror (YY_("memory exhausted"));
5304   yyresult = 2;
5305   /* Fall through.  */
5306 #endif
5307 
5308 yyreturn:
5309   if (yychar != YYEMPTY)
5310      yydestruct ("Cleanup: discarding lookahead",
5311 		 yytoken, &yylval, &yylloc);
5312   /* Do not reclaim the symbols of the rule which action triggered
5313      this YYABORT or YYACCEPT.  */
5314   YYPOPSTACK (yylen);
5315   YY_STACK_PRINT (yyss, yyssp);
5316   while (yyssp != yyss)
5317     {
5318       yydestruct ("Cleanup: popping",
5319 		  yystos[*yyssp], yyvsp, yylsp);
5320       YYPOPSTACK (1);
5321     }
5322 #ifndef yyoverflow
5323   if (yyss != yyssa)
5324     YYSTACK_FREE (yyss);
5325 #endif
5326 #if YYERROR_VERBOSE
5327   if (yymsg != yymsgbuf)
5328     YYSTACK_FREE (yymsg);
5329 #endif
5330   /* Make sure YYID is used.  */
5331   return YYID (yyresult);
5332 }
5333 
5334 
5335 
5336 /* Line 1675 of yacc.c  */
5337 #line 1834 "parser/Grammar.y"
5338 
5339 
5340 #undef GLOBAL_DATA
5341 
makeAssignNode(JSGlobalData * globalData,ExpressionNode * loc,Operator op,ExpressionNode * expr,bool locHasAssignments,bool exprHasAssignments,int start,int divot,int end)5342 static ExpressionNode* makeAssignNode(JSGlobalData* globalData, ExpressionNode* loc, Operator op, ExpressionNode* expr, bool locHasAssignments, bool exprHasAssignments, int start, int divot, int end)
5343 {
5344     if (!loc->isLocation())
5345         return new (globalData) AssignErrorNode(globalData, loc, op, expr, divot, divot - start, end - divot);
5346 
5347     if (loc->isResolveNode()) {
5348         ResolveNode* resolve = static_cast<ResolveNode*>(loc);
5349         if (op == OpEqual) {
5350             AssignResolveNode* node = new (globalData) AssignResolveNode(globalData, resolve->identifier(), expr, exprHasAssignments);
5351             setExceptionLocation(node, start, divot, end);
5352             return node;
5353         } else
5354             return new (globalData) ReadModifyResolveNode(globalData, resolve->identifier(), op, expr, exprHasAssignments, divot, divot - start, end - divot);
5355     }
5356     if (loc->isBracketAccessorNode()) {
5357         BracketAccessorNode* bracket = static_cast<BracketAccessorNode*>(loc);
5358         if (op == OpEqual)
5359             return new (globalData) AssignBracketNode(globalData, bracket->base(), bracket->subscript(), expr, locHasAssignments, exprHasAssignments, bracket->divot(), bracket->divot() - start, end - bracket->divot());
5360         else {
5361             ReadModifyBracketNode* node = new (globalData) ReadModifyBracketNode(globalData, bracket->base(), bracket->subscript(), op, expr, locHasAssignments, exprHasAssignments, divot, divot - start, end - divot);
5362             node->setSubexpressionInfo(bracket->divot(), bracket->endOffset());
5363             return node;
5364         }
5365     }
5366     ASSERT(loc->isDotAccessorNode());
5367     DotAccessorNode* dot = static_cast<DotAccessorNode*>(loc);
5368     if (op == OpEqual)
5369         return new (globalData) AssignDotNode(globalData, dot->base(), dot->identifier(), expr, exprHasAssignments, dot->divot(), dot->divot() - start, end - dot->divot());
5370 
5371     ReadModifyDotNode* node = new (globalData) ReadModifyDotNode(globalData, dot->base(), dot->identifier(), op, expr, exprHasAssignments, divot, divot - start, end - divot);
5372     node->setSubexpressionInfo(dot->divot(), dot->endOffset());
5373     return node;
5374 }
5375 
makePrefixNode(JSGlobalData * globalData,ExpressionNode * expr,Operator op,int start,int divot,int end)5376 static ExpressionNode* makePrefixNode(JSGlobalData* globalData, ExpressionNode* expr, Operator op, int start, int divot, int end)
5377 {
5378     if (!expr->isLocation())
5379         return new (globalData) PrefixErrorNode(globalData, expr, op, divot, divot - start, end - divot);
5380 
5381     if (expr->isResolveNode()) {
5382         ResolveNode* resolve = static_cast<ResolveNode*>(expr);
5383         return new (globalData) PrefixResolveNode(globalData, resolve->identifier(), op, divot, divot - start, end - divot);
5384     }
5385     if (expr->isBracketAccessorNode()) {
5386         BracketAccessorNode* bracket = static_cast<BracketAccessorNode*>(expr);
5387         PrefixBracketNode* node = new (globalData) PrefixBracketNode(globalData, bracket->base(), bracket->subscript(), op, divot, divot - start, end - divot);
5388         node->setSubexpressionInfo(bracket->divot(), bracket->startOffset());
5389         return node;
5390     }
5391     ASSERT(expr->isDotAccessorNode());
5392     DotAccessorNode* dot = static_cast<DotAccessorNode*>(expr);
5393     PrefixDotNode* node = new (globalData) PrefixDotNode(globalData, dot->base(), dot->identifier(), op, divot, divot - start, end - divot);
5394     node->setSubexpressionInfo(dot->divot(), dot->startOffset());
5395     return node;
5396 }
5397 
makePostfixNode(JSGlobalData * globalData,ExpressionNode * expr,Operator op,int start,int divot,int end)5398 static ExpressionNode* makePostfixNode(JSGlobalData* globalData, ExpressionNode* expr, Operator op, int start, int divot, int end)
5399 {
5400     if (!expr->isLocation())
5401         return new (globalData) PostfixErrorNode(globalData, expr, op, divot, divot - start, end - divot);
5402 
5403     if (expr->isResolveNode()) {
5404         ResolveNode* resolve = static_cast<ResolveNode*>(expr);
5405         return new (globalData) PostfixResolveNode(globalData, resolve->identifier(), op, divot, divot - start, end - divot);
5406     }
5407     if (expr->isBracketAccessorNode()) {
5408         BracketAccessorNode* bracket = static_cast<BracketAccessorNode*>(expr);
5409         PostfixBracketNode* node = new (globalData) PostfixBracketNode(globalData, bracket->base(), bracket->subscript(), op, divot, divot - start, end - divot);
5410         node->setSubexpressionInfo(bracket->divot(), bracket->endOffset());
5411         return node;
5412 
5413     }
5414     ASSERT(expr->isDotAccessorNode());
5415     DotAccessorNode* dot = static_cast<DotAccessorNode*>(expr);
5416     PostfixDotNode* node = new (globalData) PostfixDotNode(globalData, dot->base(), dot->identifier(), op, divot, divot - start, end - divot);
5417     node->setSubexpressionInfo(dot->divot(), dot->endOffset());
5418     return node;
5419 }
5420 
makeFunctionCallNode(JSGlobalData * globalData,ExpressionNodeInfo func,ArgumentsNodeInfo args,int start,int divot,int end)5421 static ExpressionNodeInfo makeFunctionCallNode(JSGlobalData* globalData, ExpressionNodeInfo func, ArgumentsNodeInfo args, int start, int divot, int end)
5422 {
5423     CodeFeatures features = func.m_features | args.m_features;
5424     int numConstants = func.m_numConstants + args.m_numConstants;
5425     if (!func.m_node->isLocation())
5426         return createNodeInfo<ExpressionNode*>(new (globalData) FunctionCallValueNode(globalData, func.m_node, args.m_node, divot, divot - start, end - divot), features, numConstants);
5427     if (func.m_node->isResolveNode()) {
5428         ResolveNode* resolve = static_cast<ResolveNode*>(func.m_node);
5429         const Identifier& identifier = resolve->identifier();
5430         if (identifier == globalData->propertyNames->eval)
5431             return createNodeInfo<ExpressionNode*>(new (globalData) EvalFunctionCallNode(globalData, args.m_node, divot, divot - start, end - divot), EvalFeature | features, numConstants);
5432         return createNodeInfo<ExpressionNode*>(new (globalData) FunctionCallResolveNode(globalData, identifier, args.m_node, divot, divot - start, end - divot), features, numConstants);
5433     }
5434     if (func.m_node->isBracketAccessorNode()) {
5435         BracketAccessorNode* bracket = static_cast<BracketAccessorNode*>(func.m_node);
5436         FunctionCallBracketNode* node = new (globalData) FunctionCallBracketNode(globalData, bracket->base(), bracket->subscript(), args.m_node, divot, divot - start, end - divot);
5437         node->setSubexpressionInfo(bracket->divot(), bracket->endOffset());
5438         return createNodeInfo<ExpressionNode*>(node, features, numConstants);
5439     }
5440     ASSERT(func.m_node->isDotAccessorNode());
5441     DotAccessorNode* dot = static_cast<DotAccessorNode*>(func.m_node);
5442     FunctionCallDotNode* node;
5443     if (dot->identifier() == globalData->propertyNames->call)
5444         node = new (globalData) CallFunctionCallDotNode(globalData, dot->base(), dot->identifier(), args.m_node, divot, divot - start, end - divot);
5445     else if (dot->identifier() == globalData->propertyNames->apply)
5446         node = new (globalData) ApplyFunctionCallDotNode(globalData, dot->base(), dot->identifier(), args.m_node, divot, divot - start, end - divot);
5447     else
5448         node = new (globalData) FunctionCallDotNode(globalData, dot->base(), dot->identifier(), args.m_node, divot, divot - start, end - divot);
5449     node->setSubexpressionInfo(dot->divot(), dot->endOffset());
5450     return createNodeInfo<ExpressionNode*>(node, features, numConstants);
5451 }
5452 
makeTypeOfNode(JSGlobalData * globalData,ExpressionNode * expr)5453 static ExpressionNode* makeTypeOfNode(JSGlobalData* globalData, ExpressionNode* expr)
5454 {
5455     if (expr->isResolveNode()) {
5456         ResolveNode* resolve = static_cast<ResolveNode*>(expr);
5457         return new (globalData) TypeOfResolveNode(globalData, resolve->identifier());
5458     }
5459     return new (globalData) TypeOfValueNode(globalData, expr);
5460 }
5461 
makeDeleteNode(JSGlobalData * globalData,ExpressionNode * expr,int start,int divot,int end)5462 static ExpressionNode* makeDeleteNode(JSGlobalData* globalData, ExpressionNode* expr, int start, int divot, int end)
5463 {
5464     if (!expr->isLocation())
5465         return new (globalData) DeleteValueNode(globalData, expr);
5466     if (expr->isResolveNode()) {
5467         ResolveNode* resolve = static_cast<ResolveNode*>(expr);
5468         return new (globalData) DeleteResolveNode(globalData, resolve->identifier(), divot, divot - start, end - divot);
5469     }
5470     if (expr->isBracketAccessorNode()) {
5471         BracketAccessorNode* bracket = static_cast<BracketAccessorNode*>(expr);
5472         return new (globalData) DeleteBracketNode(globalData, bracket->base(), bracket->subscript(), divot, divot - start, end - divot);
5473     }
5474     ASSERT(expr->isDotAccessorNode());
5475     DotAccessorNode* dot = static_cast<DotAccessorNode*>(expr);
5476     return new (globalData) DeleteDotNode(globalData, dot->base(), dot->identifier(), divot, divot - start, end - divot);
5477 }
5478 
makeGetterOrSetterPropertyNode(JSGlobalData * globalData,const Identifier & getOrSet,const Identifier & name,ParameterNode * params,FunctionBodyNode * body,const SourceCode & source)5479 static PropertyNode* makeGetterOrSetterPropertyNode(JSGlobalData* globalData, const Identifier& getOrSet, const Identifier& name, ParameterNode* params, FunctionBodyNode* body, const SourceCode& source)
5480 {
5481     PropertyNode::Type type;
5482     if (getOrSet == "get")
5483         type = PropertyNode::Getter;
5484     else if (getOrSet == "set")
5485         type = PropertyNode::Setter;
5486     else
5487         return 0;
5488     return new (globalData) PropertyNode(globalData, name, new (globalData) FuncExprNode(globalData, globalData->propertyNames->nullIdentifier, body, source, params), type);
5489 }
5490 
makeNegateNode(JSGlobalData * globalData,ExpressionNode * n)5491 static ExpressionNode* makeNegateNode(JSGlobalData* globalData, ExpressionNode* n)
5492 {
5493     if (n->isNumber()) {
5494         NumberNode* numberNode = static_cast<NumberNode*>(n);
5495         numberNode->setValue(-numberNode->value());
5496         return numberNode;
5497     }
5498 
5499     return new (globalData) NegateNode(globalData, n);
5500 }
5501 
makeNumberNode(JSGlobalData * globalData,double d)5502 static NumberNode* makeNumberNode(JSGlobalData* globalData, double d)
5503 {
5504     return new (globalData) NumberNode(globalData, d);
5505 }
5506 
makeBitwiseNotNode(JSGlobalData * globalData,ExpressionNode * expr)5507 static ExpressionNode* makeBitwiseNotNode(JSGlobalData* globalData, ExpressionNode* expr)
5508 {
5509     if (expr->isNumber())
5510         return makeNumberNode(globalData, ~toInt32(static_cast<NumberNode*>(expr)->value()));
5511     return new (globalData) BitwiseNotNode(globalData, expr);
5512 }
5513 
makeMultNode(JSGlobalData * globalData,ExpressionNode * expr1,ExpressionNode * expr2,bool rightHasAssignments)5514 static ExpressionNode* makeMultNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
5515 {
5516     expr1 = expr1->stripUnaryPlus();
5517     expr2 = expr2->stripUnaryPlus();
5518 
5519     if (expr1->isNumber() && expr2->isNumber())
5520         return makeNumberNode(globalData, static_cast<NumberNode*>(expr1)->value() * static_cast<NumberNode*>(expr2)->value());
5521 
5522     if (expr1->isNumber() && static_cast<NumberNode*>(expr1)->value() == 1)
5523         return new (globalData) UnaryPlusNode(globalData, expr2);
5524 
5525     if (expr2->isNumber() && static_cast<NumberNode*>(expr2)->value() == 1)
5526         return new (globalData) UnaryPlusNode(globalData, expr1);
5527 
5528     return new (globalData) MultNode(globalData, expr1, expr2, rightHasAssignments);
5529 }
5530 
makeDivNode(JSGlobalData * globalData,ExpressionNode * expr1,ExpressionNode * expr2,bool rightHasAssignments)5531 static ExpressionNode* makeDivNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
5532 {
5533     expr1 = expr1->stripUnaryPlus();
5534     expr2 = expr2->stripUnaryPlus();
5535 
5536     if (expr1->isNumber() && expr2->isNumber())
5537         return makeNumberNode(globalData, static_cast<NumberNode*>(expr1)->value() / static_cast<NumberNode*>(expr2)->value());
5538     return new (globalData) DivNode(globalData, expr1, expr2, rightHasAssignments);
5539 }
5540 
makeAddNode(JSGlobalData * globalData,ExpressionNode * expr1,ExpressionNode * expr2,bool rightHasAssignments)5541 static ExpressionNode* makeAddNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
5542 {
5543     if (expr1->isNumber() && expr2->isNumber())
5544         return makeNumberNode(globalData, static_cast<NumberNode*>(expr1)->value() + static_cast<NumberNode*>(expr2)->value());
5545     return new (globalData) AddNode(globalData, expr1, expr2, rightHasAssignments);
5546 }
5547 
makeSubNode(JSGlobalData * globalData,ExpressionNode * expr1,ExpressionNode * expr2,bool rightHasAssignments)5548 static ExpressionNode* makeSubNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
5549 {
5550     expr1 = expr1->stripUnaryPlus();
5551     expr2 = expr2->stripUnaryPlus();
5552 
5553     if (expr1->isNumber() && expr2->isNumber())
5554         return makeNumberNode(globalData, static_cast<NumberNode*>(expr1)->value() - static_cast<NumberNode*>(expr2)->value());
5555     return new (globalData) SubNode(globalData, expr1, expr2, rightHasAssignments);
5556 }
5557 
makeLeftShiftNode(JSGlobalData * globalData,ExpressionNode * expr1,ExpressionNode * expr2,bool rightHasAssignments)5558 static ExpressionNode* makeLeftShiftNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
5559 {
5560     if (expr1->isNumber() && expr2->isNumber())
5561         return makeNumberNode(globalData, toInt32(static_cast<NumberNode*>(expr1)->value()) << (toUInt32(static_cast<NumberNode*>(expr2)->value()) & 0x1f));
5562     return new (globalData) LeftShiftNode(globalData, expr1, expr2, rightHasAssignments);
5563 }
5564 
makeRightShiftNode(JSGlobalData * globalData,ExpressionNode * expr1,ExpressionNode * expr2,bool rightHasAssignments)5565 static ExpressionNode* makeRightShiftNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
5566 {
5567     if (expr1->isNumber() && expr2->isNumber())
5568         return makeNumberNode(globalData, toInt32(static_cast<NumberNode*>(expr1)->value()) >> (toUInt32(static_cast<NumberNode*>(expr2)->value()) & 0x1f));
5569     return new (globalData) RightShiftNode(globalData, expr1, expr2, rightHasAssignments);
5570 }
5571 
5572 // Called by yyparse on error.
yyerror(const char *)5573 int yyerror(const char*)
5574 {
5575     return 1;
5576 }
5577 
5578 // May we automatically insert a semicolon?
allowAutomaticSemicolon(Lexer & lexer,int yychar)5579 static bool allowAutomaticSemicolon(Lexer& lexer, int yychar)
5580 {
5581     return yychar == CLOSEBRACE || yychar == 0 || lexer.prevTerminator();
5582 }
5583 
combineCommaNodes(JSGlobalData * globalData,ExpressionNode * list,ExpressionNode * init)5584 static ExpressionNode* combineCommaNodes(JSGlobalData* globalData, ExpressionNode* list, ExpressionNode* init)
5585 {
5586     if (!list)
5587         return init;
5588     if (list->isCommaNode()) {
5589         static_cast<CommaNode*>(list)->append(init);
5590         return list;
5591     }
5592     return new (globalData) CommaNode(globalData, list, init);
5593 }
5594 
5595 // We turn variable declarations into either assignments or empty
5596 // statements (which later get stripped out), because the actual
5597 // declaration work is hoisted up to the start of the function body
makeVarStatementNode(JSGlobalData * globalData,ExpressionNode * expr)5598 static StatementNode* makeVarStatementNode(JSGlobalData* globalData, ExpressionNode* expr)
5599 {
5600     if (!expr)
5601         return new (globalData) EmptyStatementNode(globalData);
5602     return new (globalData) VarStatementNode(globalData, expr);
5603 }
5604 
5605