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
129int jscyyerror(const char*);
130
131static 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
136using namespace JSC;
137using namespace std;
138
139static ExpressionNode* makeAssignNode(JSGlobalData*, ExpressionNode* left, Operator, ExpressionNode* right, bool leftHasAssignments, bool rightHasAssignments, int start, int divot, int end);
140static ExpressionNode* makePrefixNode(JSGlobalData*, ExpressionNode*, Operator, int start, int divot, int end);
141static ExpressionNode* makePostfixNode(JSGlobalData*, ExpressionNode*, Operator, int start, int divot, int end);
142static PropertyNode* makeGetterOrSetterPropertyNode(JSGlobalData*, const Identifier& getOrSet, const Identifier& name, ParameterNode*, FunctionBodyNode*, const SourceCode&);
143static ExpressionNodeInfo makeFunctionCallNode(JSGlobalData*, ExpressionNodeInfo function, ArgumentsNodeInfo, int start, int divot, int end);
144static ExpressionNode* makeTypeOfNode(JSGlobalData*, ExpressionNode*);
145static ExpressionNode* makeDeleteNode(JSGlobalData*, ExpressionNode*, int start, int divot, int end);
146static ExpressionNode* makeNegateNode(JSGlobalData*, ExpressionNode*);
147static NumberNode* makeNumberNode(JSGlobalData*, double);
148static ExpressionNode* makeBitwiseNotNode(JSGlobalData*, ExpressionNode*);
149static ExpressionNode* makeMultNode(JSGlobalData*, ExpressionNode* left, ExpressionNode* right, bool rightHasAssignments);
150static ExpressionNode* makeDivNode(JSGlobalData*, ExpressionNode* left, ExpressionNode* right, bool rightHasAssignments);
151static ExpressionNode* makeAddNode(JSGlobalData*, ExpressionNode* left, ExpressionNode* right, bool rightHasAssignments);
152static ExpressionNode* makeSubNode(JSGlobalData*, ExpressionNode* left, ExpressionNode* right, bool rightHasAssignments);
153static ExpressionNode* makeLeftShiftNode(JSGlobalData*, ExpressionNode* left, ExpressionNode* right, bool rightHasAssignments);
154static ExpressionNode* makeRightShiftNode(JSGlobalData*, ExpressionNode* left, ExpressionNode* right, bool rightHasAssignments);
155static StatementNode* makeVarStatementNode(JSGlobalData*, ExpressionNode*);
156static 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
169template <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
179template <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
186template <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
205static 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(val: make_pair(x: &ident, y&: attrs));
211}
212
213static 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, ident: 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
320typedef 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
367typedef 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
386template <typename T> inline void setStatementLocation(StatementNode* statement, const T& start, const T& end)
387{
388 statement->setLoc(firstLine: start.first_line, lastLine: end.last_line);
389}
390
391static inline void setExceptionLocation(ThrowableExpressionData* node, unsigned start, unsigned divot, unsigned end)
392{
393 node->setExceptionSourceCode(divot, startOffset: divot - start, endOffset: 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
406typedef YYTYPE_UINT8 yytype_uint8;
407#else
408typedef unsigned char yytype_uint8;
409#endif
410
411#ifdef YYTYPE_INT8
412typedef YYTYPE_INT8 yytype_int8;
413#elif (defined __STDC__ || defined __C99__FUNC__ \
414 || defined __cplusplus || defined _MSC_VER)
415typedef signed char yytype_int8;
416#else
417typedef short int yytype_int8;
418#endif
419
420#ifdef YYTYPE_UINT16
421typedef YYTYPE_UINT16 yytype_uint16;
422#else
423typedef unsigned short int yytype_uint16;
424#endif
425
426#ifdef YYTYPE_INT16
427typedef YYTYPE_INT16 yytype_int16;
428#else
429typedef 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)
473static int
474YYID (int yyi)
475#else
476static int
477YYID (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)
541void *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)
548void 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. */
561union 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. */
635static 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. */
675static 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. */
740static 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. */
951static 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. */
1019static 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. */
1108static 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. */
1123static 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. */
1188static 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. */
1255static 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]. */
1369static 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
1396static 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]. */
1510static 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
1539static 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
1778static 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. */
2019static 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) \
2151do \
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 } \
2165while (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) \
2231do { \
2232 if (yydebug) \
2233 YYFPRINTF Args; \
2234} while (YYID (0))
2235
2236# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \
2237do { \
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)
2255static void
2256yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp)
2257#else
2258static void
2259yy_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)
2289static void
2290yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp)
2291#else
2292static void
2293yy_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)
2318static void
2319yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
2320#else
2321static void
2322yy_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) \
2337do { \
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)
2349static void
2350yy_reduce_print (YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule)
2351#else
2352static void
2353yy_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) \
2376do { \
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. */
2383int 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)
2419static YYSIZE_T
2420yystrlen (const char *yystr)
2421#else
2422static YYSIZE_T
2423yystrlen (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)
2443static char *
2444yystpcpy (char *yydest, const char *yysrc)
2445#else
2446static char *
2447yystpcpy (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. */
2471static YYSIZE_T
2472yytnamerr (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 (s: yystr);
2506
2507 return yystpcpy (dest: yyres, src: 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. */
2518static YYSIZE_T
2519yysyntax_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 (yyres: 0, yystr: 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 (dest: yyformat, src: 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 (yyres: 0, yystr: yytname[yyx]);
2580 yysize_overflow |= (yysize1 < yysize);
2581 yysize = yysize1;
2582 yyfmt = yystpcpy (dest: yyfmt, src: yyprefix);
2583 yyprefix = yyor;
2584 }
2585
2586 yyf = YY_(yyformat);
2587 yysize1 = yysize + yystrlen (s: 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 (yyres: yyp, yystr: 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)
2628static void
2629yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp)
2630#else
2631static void
2632yydestruct (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
2657int yyparse (void *YYPARSE_PARAM);
2658#else
2659int yyparse ();
2660#endif
2661#else /* ! YYPARSE_PARAM */
2662#if defined __STDC__ || defined __cplusplus
2663int yyparse (void);
2664#else
2665int 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)
2680int
2681yyparse (void *YYPARSE_PARAM)
2682#else
2683int
2684yyparse (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)
2690int
2691yyparse (void)
2692#else
2693int
2694yyparse ()
2695
2696#endif
2697#endif
2698{
2699/* The lookahead symbol. */
2700int yychar;
2701
2702/* The semantic value of the lookahead symbol. */
2703YYSTYPE yylval;
2704
2705/* Location data for the lookahead symbol. */
2706YYLTYPE 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`-----------*/
2881yybackup:
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`-----------------------------------------------------------*/
2945yydefault:
2946 yyn = yydefact[yystate];
2947 if (yyn == 0)
2948 goto yyerrlab;
2949 goto yyreduce;
2950
2951
2952/*-----------------------------.
2953| yyreduce -- Do a reduction. |
2954`-----------------------------*/
2955yyreduce:
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*>(node: new (GLOBAL_DATA) NullNode(GLOBAL_DATA), info: 0, numConstants: 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*>(node: new (GLOBAL_DATA) BooleanNode(GLOBAL_DATA, true), info: 0, numConstants: 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*>(node: new (GLOBAL_DATA) BooleanNode(GLOBAL_DATA, false), info: 0, numConstants: 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*>(node: makeNumberNode(GLOBAL_DATA, (yyvsp[(1) - (1)].doubleValue)), info: 0, numConstants: 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*>(node: new (GLOBAL_DATA) StringNode(GLOBAL_DATA, *(yyvsp[(1) - (1)].ident)), info: 0, numConstants: 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, start: (yylsp[(1) - (1)]).first_column, divot: (yylsp[(1) - (1)]).first_column + size, end: (yylsp[(1) - (1)]).first_column + size);
3022 (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, info: 0, numConstants: 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, patternPrefix: '='))
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, start: (yylsp[(1) - (1)]).first_column, divot: (yylsp[(1) - (1)]).first_column + size, end: (yylsp[(1) - (1)]).first_column + size);
3039 (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, info: 0, numConstants: 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*>(node: new (GLOBAL_DATA) PropertyNode(GLOBAL_DATA, *(yyvsp[(1) - (3)].ident), (yyvsp[(3) - (3)].expressionNode).m_node, PropertyNode::Constant), info: (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: new (GLOBAL_DATA) PropertyNode(GLOBAL_DATA, *(yyvsp[(1) - (3)].ident), (yyvsp[(3) - (3)].expressionNode).m_node, PropertyNode::Constant), info: (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: new (GLOBAL_DATA) PropertyNode(GLOBAL_DATA, (yyvsp[(1) - (3)].doubleValue), (yyvsp[(3) - (3)].expressionNode).m_node, PropertyNode::Constant), info: (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: makeGetterOrSetterPropertyNode(GLOBAL_DATA, getOrSet: *(yyvsp[(1) - (7)].ident), name: *(yyvsp[(2) - (7)].ident), 0, (yyvsp[(6) - (7)].functionBodyNode), GLOBAL_DATA->lexer->sourceCode(openBrace: (yyvsp[(5) - (7)].intValue), closeBrace: (yyvsp[(7) - (7)].intValue), firstLine: (yylsp[(5) - (7)]).first_line)), info: ClosureFeature, numConstants: 0); setStatementLocation(statement: (yyvsp[(6) - (7)].functionBodyNode), start: (yylsp[(5) - (7)]), end: (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*>(node: makeGetterOrSetterPropertyNode(GLOBAL_DATA, getOrSet: *(yyvsp[(1) - (8)].ident), name: *(yyvsp[(2) - (8)].ident), (yyvsp[(4) - (8)].parameterList).m_node.head, (yyvsp[(7) - (8)].functionBodyNode), GLOBAL_DATA->lexer->sourceCode(openBrace: (yyvsp[(6) - (8)].intValue), closeBrace: (yyvsp[(8) - (8)].intValue), firstLine: (yylsp[(6) - (8)]).first_line)), info: (yyvsp[(4) - (8)].parameterList).m_features | ClosureFeature, numConstants: 0);
3077 if ((yyvsp[(4) - (8)].parameterList).m_features & ArgumentsFeature)
3078 (yyvsp[(7) - (8)].functionBodyNode)->setUsesArguments();
3079 setStatementLocation(statement: (yyvsp[(7) - (8)].functionBodyNode), start: (yylsp[(6) - (8)]), end: (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*>(node: new (GLOBAL_DATA) ObjectLiteralNode(GLOBAL_DATA), info: 0, numConstants: 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*>(node: new (GLOBAL_DATA) ObjectLiteralNode(GLOBAL_DATA, (yyvsp[(2) - (3)].propertyList).m_node.head), info: (yyvsp[(2) - (3)].propertyList).m_features, numConstants: (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*>(node: new (GLOBAL_DATA) ObjectLiteralNode(GLOBAL_DATA, (yyvsp[(2) - (4)].propertyList).m_node.head), info: (yyvsp[(2) - (4)].propertyList).m_features, numConstants: (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*>(node: new (GLOBAL_DATA) ThisNode(GLOBAL_DATA), info: ThisFeature, numConstants: 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*>(node: new (GLOBAL_DATA) ResolveNode(GLOBAL_DATA, *(yyvsp[(1) - (1)].ident), (yylsp[(1) - (1)]).first_column), info: (*(yyvsp[(1) - (1)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0, numConstants: 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*>(node: new (GLOBAL_DATA) ArrayNode(GLOBAL_DATA, (yyvsp[(2) - (3)].intValue)), info: 0, numConstants: (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*>(node: new (GLOBAL_DATA) ArrayNode(GLOBAL_DATA, (yyvsp[(2) - (3)].elementList).m_node.head), info: (yyvsp[(2) - (3)].elementList).m_features, numConstants: (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*>(node: new (GLOBAL_DATA) ArrayNode(GLOBAL_DATA, (yyvsp[(4) - (5)].intValue), (yyvsp[(2) - (5)].elementList).m_node.head), info: (yyvsp[(2) - (5)].elementList).m_features, numConstants: (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*>(node: (yyvsp[(1) - (1)].funcExprNode).m_node, info: (yyvsp[(1) - (1)].funcExprNode).m_features, numConstants: (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, start: (yylsp[(1) - (4)]).first_column, divot: (yylsp[(1) - (4)]).last_column, end: (yylsp[(4) - (4)]).last_column);
3222 (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, info: (yyvsp[(1) - (4)].expressionNode).m_features | (yyvsp[(3) - (4)].expressionNode).m_features, numConstants: (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, start: (yylsp[(1) - (3)]).first_column, divot: (yylsp[(1) - (3)]).last_column, end: (yylsp[(3) - (3)]).last_column);
3232 (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, info: (yyvsp[(1) - (3)].expressionNode).m_features, numConstants: (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, start: (yylsp[(1) - (3)]).first_column, divot: (yylsp[(2) - (3)]).last_column, end: (yylsp[(3) - (3)]).last_column);
3242 (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, info: (yyvsp[(2) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].argumentsNode).m_features, numConstants: (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, start: (yylsp[(1) - (4)]).first_column, divot: (yylsp[(1) - (4)]).last_column, end: (yylsp[(4) - (4)]).last_column);
3252 (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, info: (yyvsp[(1) - (4)].expressionNode).m_features | (yyvsp[(3) - (4)].expressionNode).m_features, numConstants: (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, start: (yylsp[(1) - (3)]).first_column, divot: (yylsp[(1) - (3)]).last_column, end: (yylsp[(3) - (3)]).last_column);
3262 (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, info: (yyvsp[(1) - (3)].expressionNode).m_features, numConstants: (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, start: (yylsp[(1) - (3)]).first_column, divot: (yylsp[(2) - (3)]).last_column, end: (yylsp[(3) - (3)]).last_column);
3272 (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, info: (yyvsp[(2) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].argumentsNode).m_features, numConstants: (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, start: (yylsp[(1) - (2)]).first_column, divot: (yylsp[(2) - (2)]).last_column, end: (yylsp[(2) - (2)]).last_column);
3282 (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, info: (yyvsp[(2) - (2)].expressionNode).m_features, numConstants: (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, start: (yylsp[(1) - (2)]).first_column, divot: (yylsp[(2) - (2)]).last_column, end: (yylsp[(2) - (2)]).last_column);
3292 (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, info: (yyvsp[(2) - (2)].expressionNode).m_features, numConstants: (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, function: (yyvsp[(1) - (2)].expressionNode), (yyvsp[(2) - (2)].argumentsNode), start: (yylsp[(1) - (2)]).first_column, divot: (yylsp[(1) - (2)]).last_column, end: (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, function: (yyvsp[(1) - (2)].expressionNode), (yyvsp[(2) - (2)].argumentsNode), start: (yylsp[(1) - (2)]).first_column, divot: (yylsp[(1) - (2)]).last_column, end: (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, start: (yylsp[(1) - (4)]).first_column, divot: (yylsp[(1) - (4)]).last_column, end: (yylsp[(4) - (4)]).last_column);
3316 (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, info: (yyvsp[(1) - (4)].expressionNode).m_features | (yyvsp[(3) - (4)].expressionNode).m_features, numConstants: (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, start: (yylsp[(1) - (3)]).first_column, divot: (yylsp[(1) - (3)]).last_column, end: (yylsp[(3) - (3)]).last_column);
3326 (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, info: (yyvsp[(1) - (3)].expressionNode).m_features, numConstants: (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, function: (yyvsp[(1) - (2)].expressionNode), (yyvsp[(2) - (2)].argumentsNode), start: (yylsp[(1) - (2)]).first_column, divot: (yylsp[(1) - (2)]).last_column, end: (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, function: (yyvsp[(1) - (2)].expressionNode), (yyvsp[(2) - (2)].argumentsNode), start: (yylsp[(1) - (2)]).first_column, divot: (yylsp[(1) - (2)]).last_column, end: (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, start: (yylsp[(1) - (4)]).first_column, divot: (yylsp[(1) - (4)]).last_column, end: (yylsp[(4) - (4)]).last_column);
3349 (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, info: (yyvsp[(1) - (4)].expressionNode).m_features | (yyvsp[(3) - (4)].expressionNode).m_features, numConstants: (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, start: (yylsp[(1) - (3)]).first_column, divot: (yylsp[(1) - (3)]).last_column, end: (yylsp[(3) - (3)]).last_column);
3359 (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, info: (yyvsp[(1) - (3)].expressionNode).m_features, numConstants: (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*>(node: new (GLOBAL_DATA) ArgumentsNode(GLOBAL_DATA), info: 0, numConstants: 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*>(node: new (GLOBAL_DATA) ArgumentsNode(GLOBAL_DATA, (yyvsp[(2) - (3)].argumentList).m_node.head), info: (yyvsp[(2) - (3)].argumentList).m_features, numConstants: (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*>(node: makePostfixNode(GLOBAL_DATA, (yyvsp[(1) - (2)].expressionNode).m_node, OpPlusPlus, start: (yylsp[(1) - (2)]).first_column, divot: (yylsp[(1) - (2)]).last_column, end: (yylsp[(2) - (2)]).last_column), info: (yyvsp[(1) - (2)].expressionNode).m_features | AssignFeature, numConstants: (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*>(node: makePostfixNode(GLOBAL_DATA, (yyvsp[(1) - (2)].expressionNode).m_node, OpMinusMinus, start: (yylsp[(1) - (2)]).first_column, divot: (yylsp[(1) - (2)]).last_column, end: (yylsp[(2) - (2)]).last_column), info: (yyvsp[(1) - (2)].expressionNode).m_features | AssignFeature, numConstants: (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*>(node: makePostfixNode(GLOBAL_DATA, (yyvsp[(1) - (2)].expressionNode).m_node, OpPlusPlus, start: (yylsp[(1) - (2)]).first_column, divot: (yylsp[(1) - (2)]).last_column, end: (yylsp[(2) - (2)]).last_column), info: (yyvsp[(1) - (2)].expressionNode).m_features | AssignFeature, numConstants: (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*>(node: makePostfixNode(GLOBAL_DATA, (yyvsp[(1) - (2)].expressionNode).m_node, OpMinusMinus, start: (yylsp[(1) - (2)]).first_column, divot: (yylsp[(1) - (2)]).last_column, end: (yylsp[(2) - (2)]).last_column), info: (yyvsp[(1) - (2)].expressionNode).m_features | AssignFeature, numConstants: (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*>(node: makeDeleteNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node, start: (yylsp[(1) - (2)]).first_column, divot: (yylsp[(2) - (2)]).last_column, end: (yylsp[(2) - (2)]).last_column), info: (yyvsp[(2) - (2)].expressionNode).m_features, numConstants: (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*>(node: new (GLOBAL_DATA) VoidNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node), info: (yyvsp[(2) - (2)].expressionNode).m_features, numConstants: (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*>(node: makeTypeOfNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node), info: (yyvsp[(2) - (2)].expressionNode).m_features, numConstants: (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*>(node: makePrefixNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node, OpPlusPlus, start: (yylsp[(1) - (2)]).first_column, divot: (yylsp[(2) - (2)]).first_column + 1, end: (yylsp[(2) - (2)]).last_column), info: (yyvsp[(2) - (2)].expressionNode).m_features | AssignFeature, numConstants: (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*>(node: makePrefixNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node, OpPlusPlus, start: (yylsp[(1) - (2)]).first_column, divot: (yylsp[(2) - (2)]).first_column + 1, end: (yylsp[(2) - (2)]).last_column), info: (yyvsp[(2) - (2)].expressionNode).m_features | AssignFeature, numConstants: (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*>(node: makePrefixNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node, OpMinusMinus, start: (yylsp[(1) - (2)]).first_column, divot: (yylsp[(2) - (2)]).first_column + 1, end: (yylsp[(2) - (2)]).last_column), info: (yyvsp[(2) - (2)].expressionNode).m_features | AssignFeature, numConstants: (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*>(node: makePrefixNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node, OpMinusMinus, start: (yylsp[(1) - (2)]).first_column, divot: (yylsp[(2) - (2)]).first_column + 1, end: (yylsp[(2) - (2)]).last_column), info: (yyvsp[(2) - (2)].expressionNode).m_features | AssignFeature, numConstants: (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*>(node: new (GLOBAL_DATA) UnaryPlusNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node), info: (yyvsp[(2) - (2)].expressionNode).m_features, numConstants: (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*>(node: makeNegateNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node), info: (yyvsp[(2) - (2)].expressionNode).m_features, numConstants: (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*>(node: makeBitwiseNotNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node), info: (yyvsp[(2) - (2)].expressionNode).m_features, numConstants: (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*>(node: new (GLOBAL_DATA) LogicalNotNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node), info: (yyvsp[(2) - (2)].expressionNode).m_features, numConstants: (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*>(node: makeMultNode(GLOBAL_DATA, left: (yyvsp[(1) - (3)].expressionNode).m_node, right: (yyvsp[(3) - (3)].expressionNode).m_node, rightHasAssignments: (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: makeDivNode(GLOBAL_DATA, left: (yyvsp[(1) - (3)].expressionNode).m_node, right: (yyvsp[(3) - (3)].expressionNode).m_node, rightHasAssignments: (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: 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), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: makeMultNode(GLOBAL_DATA, left: (yyvsp[(1) - (3)].expressionNode).m_node, right: (yyvsp[(3) - (3)].expressionNode).m_node, rightHasAssignments: (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: makeDivNode(GLOBAL_DATA, left: (yyvsp[(1) - (3)].expressionNode).m_node, right: (yyvsp[(3) - (3)].expressionNode).m_node, rightHasAssignments: (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: 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), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: makeAddNode(GLOBAL_DATA, left: (yyvsp[(1) - (3)].expressionNode).m_node, right: (yyvsp[(3) - (3)].expressionNode).m_node, rightHasAssignments: (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: makeSubNode(GLOBAL_DATA, left: (yyvsp[(1) - (3)].expressionNode).m_node, right: (yyvsp[(3) - (3)].expressionNode).m_node, rightHasAssignments: (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: makeAddNode(GLOBAL_DATA, left: (yyvsp[(1) - (3)].expressionNode).m_node, right: (yyvsp[(3) - (3)].expressionNode).m_node, rightHasAssignments: (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: makeSubNode(GLOBAL_DATA, left: (yyvsp[(1) - (3)].expressionNode).m_node, right: (yyvsp[(3) - (3)].expressionNode).m_node, rightHasAssignments: (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: makeLeftShiftNode(GLOBAL_DATA, left: (yyvsp[(1) - (3)].expressionNode).m_node, right: (yyvsp[(3) - (3)].expressionNode).m_node, rightHasAssignments: (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: makeRightShiftNode(GLOBAL_DATA, left: (yyvsp[(1) - (3)].expressionNode).m_node, right: (yyvsp[(3) - (3)].expressionNode).m_node, rightHasAssignments: (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: 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), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: makeLeftShiftNode(GLOBAL_DATA, left: (yyvsp[(1) - (3)].expressionNode).m_node, right: (yyvsp[(3) - (3)].expressionNode).m_node, rightHasAssignments: (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: makeRightShiftNode(GLOBAL_DATA, left: (yyvsp[(1) - (3)].expressionNode).m_node, right: (yyvsp[(3) - (3)].expressionNode).m_node, rightHasAssignments: (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: 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), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: 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), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: 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), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: 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), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: 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), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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, start: (yylsp[(1) - (3)]).first_column, divot: (yylsp[(3) - (3)]).first_column, end: (yylsp[(3) - (3)]).last_column);
3648 (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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, start: (yylsp[(1) - (3)]).first_column, divot: (yylsp[(3) - (3)]).first_column, end: (yylsp[(3) - (3)]).last_column);
3657 (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: 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), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: 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), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: 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), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: 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), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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, start: (yylsp[(1) - (3)]).first_column, divot: (yylsp[(3) - (3)]).first_column, end: (yylsp[(3) - (3)]).last_column);
3694 (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: 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), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: 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), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: 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), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: 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), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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, start: (yylsp[(1) - (3)]).first_column, divot: (yylsp[(3) - (3)]).first_column, end: (yylsp[(3) - (3)]).last_column);
3731 (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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, start: (yylsp[(1) - (3)]).first_column, divot: (yylsp[(3) - (3)]).first_column, end: (yylsp[(3) - (3)]).last_column);
3740 (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: 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), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: 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), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: 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), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: 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), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: 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), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: 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), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: 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), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: 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), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: 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), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: 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), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: 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), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: 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), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: 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), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: 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), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: 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), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: 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), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: 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), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: 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), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: 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), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: 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), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: 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), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: new (GLOBAL_DATA) LogicalOpNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, OpLogicalAnd), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: new (GLOBAL_DATA) LogicalOpNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, OpLogicalAnd), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: new (GLOBAL_DATA) LogicalOpNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, OpLogicalAnd), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: new (GLOBAL_DATA) LogicalOpNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, OpLogicalOr), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: new (GLOBAL_DATA) LogicalOpNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, OpLogicalOr), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: new (GLOBAL_DATA) LogicalOpNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, OpLogicalOr), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: new (GLOBAL_DATA) ConditionalNode(GLOBAL_DATA, (yyvsp[(1) - (5)].expressionNode).m_node, (yyvsp[(3) - (5)].expressionNode).m_node, (yyvsp[(5) - (5)].expressionNode).m_node), info: (yyvsp[(1) - (5)].expressionNode).m_features | (yyvsp[(3) - (5)].expressionNode).m_features | (yyvsp[(5) - (5)].expressionNode).m_features, numConstants: (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*>(node: new (GLOBAL_DATA) ConditionalNode(GLOBAL_DATA, (yyvsp[(1) - (5)].expressionNode).m_node, (yyvsp[(3) - (5)].expressionNode).m_node, (yyvsp[(5) - (5)].expressionNode).m_node), info: (yyvsp[(1) - (5)].expressionNode).m_features | (yyvsp[(3) - (5)].expressionNode).m_features | (yyvsp[(5) - (5)].expressionNode).m_features, numConstants: (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*>(node: new (GLOBAL_DATA) ConditionalNode(GLOBAL_DATA, (yyvsp[(1) - (5)].expressionNode).m_node, (yyvsp[(3) - (5)].expressionNode).m_node, (yyvsp[(5) - (5)].expressionNode).m_node), info: (yyvsp[(1) - (5)].expressionNode).m_features | (yyvsp[(3) - (5)].expressionNode).m_features | (yyvsp[(5) - (5)].expressionNode).m_features, numConstants: (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*>(node: makeAssignNode(GLOBAL_DATA, left: (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(2) - (3)].op), right: (yyvsp[(3) - (3)].expressionNode).m_node, leftHasAssignments: (yyvsp[(1) - (3)].expressionNode).m_features & AssignFeature, rightHasAssignments: (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature,
3958 start: (yylsp[(1) - (3)]).first_column, divot: (yylsp[(2) - (3)]).first_column + 1, end: (yylsp[(3) - (3)]).last_column), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features | AssignFeature, numConstants: (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*>(node: makeAssignNode(GLOBAL_DATA, left: (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(2) - (3)].op), right: (yyvsp[(3) - (3)].expressionNode).m_node, leftHasAssignments: (yyvsp[(1) - (3)].expressionNode).m_features & AssignFeature, rightHasAssignments: (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature,
3967 start: (yylsp[(1) - (3)]).first_column, divot: (yylsp[(2) - (3)]).first_column + 1, end: (yylsp[(3) - (3)]).last_column), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features | AssignFeature, numConstants: (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*>(node: makeAssignNode(GLOBAL_DATA, left: (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(2) - (3)].op), right: (yyvsp[(3) - (3)].expressionNode).m_node, leftHasAssignments: (yyvsp[(1) - (3)].expressionNode).m_features & AssignFeature, rightHasAssignments: (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature,
3976 start: (yylsp[(1) - (3)]).first_column, divot: (yylsp[(2) - (3)]).first_column + 1, end: (yylsp[(3) - (3)]).last_column), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features | AssignFeature, numConstants: (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*>(node: combineCommaNodes(GLOBAL_DATA, list: (yyvsp[(1) - (3)].expressionNode).m_node, init: (yyvsp[(3) - (3)].expressionNode).m_node), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: combineCommaNodes(GLOBAL_DATA, list: (yyvsp[(1) - (3)].expressionNode).m_node, init: (yyvsp[(3) - (3)].expressionNode).m_node), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: combineCommaNodes(GLOBAL_DATA, list: (yyvsp[(1) - (3)].expressionNode).m_node, init: (yyvsp[(3) - (3)].expressionNode).m_node), info: (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, numConstants: (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*>(node: new (GLOBAL_DATA) BlockNode(GLOBAL_DATA, 0), varDecls: 0, funcDecls: 0, info: 0, numConstants: 0);
4090 setStatementLocation(statement: (yyval.statementNode).m_node, start: (yylsp[(1) - (2)]), end: (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*>(node: new (GLOBAL_DATA) BlockNode(GLOBAL_DATA, (yyvsp[(2) - (3)].sourceElements).m_node), varDecls: (yyvsp[(2) - (3)].sourceElements).m_varDeclarations, funcDecls: (yyvsp[(2) - (3)].sourceElements).m_funcDeclarations, info: (yyvsp[(2) - (3)].sourceElements).m_features, numConstants: (yyvsp[(2) - (3)].sourceElements).m_numConstants);
4098 setStatementLocation(statement: (yyval.statementNode).m_node, start: (yylsp[(1) - (3)]), end: (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*>(node: makeVarStatementNode(GLOBAL_DATA, (yyvsp[(2) - (3)].varDeclList).m_node), varDecls: (yyvsp[(2) - (3)].varDeclList).m_varDeclarations, funcDecls: (yyvsp[(2) - (3)].varDeclList).m_funcDeclarations, info: (yyvsp[(2) - (3)].varDeclList).m_features, numConstants: (yyvsp[(2) - (3)].varDeclList).m_numConstants);
4106 setStatementLocation(statement: (yyval.statementNode).m_node, start: (yylsp[(1) - (3)]), end: (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*>(node: makeVarStatementNode(GLOBAL_DATA, (yyvsp[(2) - (3)].varDeclList).m_node), varDecls: (yyvsp[(2) - (3)].varDeclList).m_varDeclarations, funcDecls: (yyvsp[(2) - (3)].varDeclList).m_funcDeclarations, info: (yyvsp[(2) - (3)].varDeclList).m_features, numConstants: (yyvsp[(2) - (3)].varDeclList).m_numConstants);
4114 setStatementLocation(statement: (yyval.statementNode).m_node, start: (yylsp[(1) - (3)]), end: (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, varDecls&: (yyval.varDeclList).m_varDeclarations, ident: *(yyvsp[(1) - (1)].ident), attrs: 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, start: (yylsp[(1) - (2)]).first_column, divot: (yylsp[(2) - (2)]).first_column + 1, end: (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, varDecls&: (yyval.varDeclList).m_varDeclarations, ident: *(yyvsp[(1) - (2)].ident), attrs: 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, varDecls&: (yyval.varDeclList).m_varDeclarations, ident: *(yyvsp[(3) - (3)].ident), attrs: 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, start: (yylsp[(3) - (4)]).first_column, divot: (yylsp[(4) - (4)]).first_column + 1, end: (yylsp[(4) - (4)]).last_column);
4165 (yyval.varDeclList).m_node = combineCommaNodes(GLOBAL_DATA, list: (yyvsp[(1) - (4)].varDeclList).m_node, init: node);
4166 (yyval.varDeclList).m_varDeclarations = (yyvsp[(1) - (4)].varDeclList).m_varDeclarations;
4167 appendToVarDeclarationList(GLOBAL_DATA, varDecls&: (yyval.varDeclList).m_varDeclarations, ident: *(yyvsp[(3) - (4)].ident), attrs: 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, varDecls&: (yyval.varDeclList).m_varDeclarations, ident: *(yyvsp[(1) - (1)].ident), attrs: 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, start: (yylsp[(1) - (2)]).first_column, divot: (yylsp[(2) - (2)]).first_column + 1, end: (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, varDecls&: (yyval.varDeclList).m_varDeclarations, ident: *(yyvsp[(1) - (2)].ident), attrs: 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, varDecls&: (yyval.varDeclList).m_varDeclarations, ident: *(yyvsp[(3) - (3)].ident), attrs: 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, start: (yylsp[(3) - (4)]).first_column, divot: (yylsp[(4) - (4)]).first_column + 1, end: (yylsp[(4) - (4)]).last_column);
4221 (yyval.varDeclList).m_node = combineCommaNodes(GLOBAL_DATA, list: (yyvsp[(1) - (4)].varDeclList).m_node, init: node);
4222 (yyval.varDeclList).m_varDeclarations = (yyvsp[(1) - (4)].varDeclList).m_varDeclarations;
4223 appendToVarDeclarationList(GLOBAL_DATA, varDecls&: (yyval.varDeclList).m_varDeclarations, ident: *(yyvsp[(3) - (4)].ident), attrs: 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*>(node: new (GLOBAL_DATA) ConstStatementNode(GLOBAL_DATA, (yyvsp[(2) - (3)].constDeclList).m_node.head), varDecls: (yyvsp[(2) - (3)].constDeclList).m_varDeclarations, funcDecls: (yyvsp[(2) - (3)].constDeclList).m_funcDeclarations, info: (yyvsp[(2) - (3)].constDeclList).m_features, numConstants: (yyvsp[(2) - (3)].constDeclList).m_numConstants);
4235 setStatementLocation(statement: (yyval.statementNode).m_node, start: (yylsp[(1) - (3)]), end: (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*>(node: new (GLOBAL_DATA) ConstStatementNode(GLOBAL_DATA, (yyvsp[(2) - (3)].constDeclList).m_node.head), varDecls: (yyvsp[(2) - (3)].constDeclList).m_varDeclarations, funcDecls: (yyvsp[(2) - (3)].constDeclList).m_funcDeclarations, info: (yyvsp[(2) - (3)].constDeclList).m_features, numConstants: (yyvsp[(2) - (3)].constDeclList).m_numConstants);
4243 setStatementLocation(statement: (yyval.statementNode).m_node, start: (yylsp[(1) - (3)]), end: (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, varDecls&: (yyval.constDeclList).m_varDeclarations, decl: (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, varDecls&: (yyval.constDeclList).m_varDeclarations, decl: (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*>(node: new (GLOBAL_DATA) ConstDeclNode(GLOBAL_DATA, *(yyvsp[(1) - (1)].ident), 0), info: (*(yyvsp[(1) - (1)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0, numConstants: 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*>(node: new (GLOBAL_DATA) ConstDeclNode(GLOBAL_DATA, *(yyvsp[(1) - (2)].ident), (yyvsp[(2) - (2)].expressionNode).m_node), info: ((*(yyvsp[(1) - (2)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0) | (yyvsp[(2) - (2)].expressionNode).m_features, numConstants: (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*>(node: new (GLOBAL_DATA) EmptyStatementNode(GLOBAL_DATA), varDecls: 0, funcDecls: 0, info: 0, numConstants: 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*>(node: new (GLOBAL_DATA) ExprStatementNode(GLOBAL_DATA, (yyvsp[(1) - (2)].expressionNode).m_node), varDecls: 0, funcDecls: 0, info: (yyvsp[(1) - (2)].expressionNode).m_features, numConstants: (yyvsp[(1) - (2)].expressionNode).m_numConstants);
4314 setStatementLocation(statement: (yyval.statementNode).m_node, start: (yylsp[(1) - (2)]), end: (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*>(node: new (GLOBAL_DATA) ExprStatementNode(GLOBAL_DATA, (yyvsp[(1) - (2)].expressionNode).m_node), varDecls: 0, funcDecls: 0, info: (yyvsp[(1) - (2)].expressionNode).m_features, numConstants: (yyvsp[(1) - (2)].expressionNode).m_numConstants);
4322 setStatementLocation(statement: (yyval.statementNode).m_node, start: (yylsp[(1) - (2)]), end: (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*>(node: new (GLOBAL_DATA) IfNode(GLOBAL_DATA, (yyvsp[(3) - (5)].expressionNode).m_node, (yyvsp[(5) - (5)].statementNode).m_node), varDecls: (yyvsp[(5) - (5)].statementNode).m_varDeclarations, funcDecls: (yyvsp[(5) - (5)].statementNode).m_funcDeclarations, info: (yyvsp[(3) - (5)].expressionNode).m_features | (yyvsp[(5) - (5)].statementNode).m_features, numConstants: (yyvsp[(3) - (5)].expressionNode).m_numConstants + (yyvsp[(5) - (5)].statementNode).m_numConstants);
4330 setStatementLocation(statement: (yyval.statementNode).m_node, start: (yylsp[(1) - (5)]), end: (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*>(node: 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 varDecls: mergeDeclarationLists(decls1: (yyvsp[(5) - (7)].statementNode).m_varDeclarations, decls2: (yyvsp[(7) - (7)].statementNode).m_varDeclarations),
4339 funcDecls: mergeDeclarationLists(decls1: (yyvsp[(5) - (7)].statementNode).m_funcDeclarations, decls2: (yyvsp[(7) - (7)].statementNode).m_funcDeclarations),
4340 info: (yyvsp[(3) - (7)].expressionNode).m_features | (yyvsp[(5) - (7)].statementNode).m_features | (yyvsp[(7) - (7)].statementNode).m_features,
4341 numConstants: (yyvsp[(3) - (7)].expressionNode).m_numConstants + (yyvsp[(5) - (7)].statementNode).m_numConstants + (yyvsp[(7) - (7)].statementNode).m_numConstants);
4342 setStatementLocation(statement: (yyval.statementNode).m_node, start: (yylsp[(1) - (7)]), end: (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*>(node: new (GLOBAL_DATA) DoWhileNode(GLOBAL_DATA, (yyvsp[(2) - (7)].statementNode).m_node, (yyvsp[(5) - (7)].expressionNode).m_node), varDecls: (yyvsp[(2) - (7)].statementNode).m_varDeclarations, funcDecls: (yyvsp[(2) - (7)].statementNode).m_funcDeclarations, info: (yyvsp[(2) - (7)].statementNode).m_features | (yyvsp[(5) - (7)].expressionNode).m_features, numConstants: (yyvsp[(2) - (7)].statementNode).m_numConstants + (yyvsp[(5) - (7)].expressionNode).m_numConstants);
4350 setStatementLocation(statement: (yyval.statementNode).m_node, start: (yylsp[(1) - (7)]), end: (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*>(node: new (GLOBAL_DATA) DoWhileNode(GLOBAL_DATA, (yyvsp[(2) - (7)].statementNode).m_node, (yyvsp[(5) - (7)].expressionNode).m_node), varDecls: (yyvsp[(2) - (7)].statementNode).m_varDeclarations, funcDecls: (yyvsp[(2) - (7)].statementNode).m_funcDeclarations, info: (yyvsp[(2) - (7)].statementNode).m_features | (yyvsp[(5) - (7)].expressionNode).m_features, numConstants: (yyvsp[(2) - (7)].statementNode).m_numConstants + (yyvsp[(5) - (7)].expressionNode).m_numConstants);
4358 setStatementLocation(statement: (yyval.statementNode).m_node, start: (yylsp[(1) - (7)]), end: (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*>(node: new (GLOBAL_DATA) WhileNode(GLOBAL_DATA, (yyvsp[(3) - (5)].expressionNode).m_node, (yyvsp[(5) - (5)].statementNode).m_node), varDecls: (yyvsp[(5) - (5)].statementNode).m_varDeclarations, funcDecls: (yyvsp[(5) - (5)].statementNode).m_funcDeclarations, info: (yyvsp[(3) - (5)].expressionNode).m_features | (yyvsp[(5) - (5)].statementNode).m_features, numConstants: (yyvsp[(3) - (5)].expressionNode).m_numConstants + (yyvsp[(5) - (5)].statementNode).m_numConstants);
4366 setStatementLocation(statement: (yyval.statementNode).m_node, start: (yylsp[(1) - (5)]), end: (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*>(node: 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), varDecls: (yyvsp[(9) - (9)].statementNode).m_varDeclarations, funcDecls: (yyvsp[(9) - (9)].statementNode).m_funcDeclarations,
4374 info: (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 numConstants: (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(statement: (yyval.statementNode).m_node, start: (yylsp[(1) - (9)]), end: (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*>(node: 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 varDecls: mergeDeclarationLists(decls1: (yyvsp[(4) - (10)].varDeclList).m_varDeclarations, decls2: (yyvsp[(10) - (10)].statementNode).m_varDeclarations),
4386 funcDecls: mergeDeclarationLists(decls1: (yyvsp[(4) - (10)].varDeclList).m_funcDeclarations, decls2: (yyvsp[(10) - (10)].statementNode).m_funcDeclarations),
4387 info: (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 numConstants: (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(statement: (yyval.statementNode).m_node, start: (yylsp[(1) - (10)]), end: (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, start: (yylsp[(3) - (7)]).first_column, divot: (yylsp[(3) - (7)]).last_column, end: (yylsp[(5) - (7)]).last_column);
4399 (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, varDecls: (yyvsp[(7) - (7)].statementNode).m_varDeclarations, funcDecls: (yyvsp[(7) - (7)].statementNode).m_funcDeclarations,
4400 info: (yyvsp[(3) - (7)].expressionNode).m_features | (yyvsp[(5) - (7)].expressionNode).m_features | (yyvsp[(7) - (7)].statementNode).m_features,
4401 numConstants: (yyvsp[(3) - (7)].expressionNode).m_numConstants + (yyvsp[(5) - (7)].expressionNode).m_numConstants + (yyvsp[(7) - (7)].statementNode).m_numConstants);
4402 setStatementLocation(statement: (yyval.statementNode).m_node, start: (yylsp[(1) - (7)]), end: (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(node: forIn, start: (yylsp[(4) - (8)]).first_column, divot: (yylsp[(5) - (8)]).first_column + 1, end: (yylsp[(6) - (8)]).last_column);
4412 appendToVarDeclarationList(GLOBAL_DATA, varDecls&: (yyvsp[(8) - (8)].statementNode).m_varDeclarations, ident: *(yyvsp[(4) - (8)].ident), attrs: DeclarationStacks::HasInitializer);
4413 (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node: forIn, varDecls: (yyvsp[(8) - (8)].statementNode).m_varDeclarations, funcDecls: (yyvsp[(8) - (8)].statementNode).m_funcDeclarations, info: ((*(yyvsp[(4) - (8)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0) | (yyvsp[(6) - (8)].expressionNode).m_features | (yyvsp[(8) - (8)].statementNode).m_features, numConstants: (yyvsp[(6) - (8)].expressionNode).m_numConstants + (yyvsp[(8) - (8)].statementNode).m_numConstants);
4414 setStatementLocation(statement: (yyval.statementNode).m_node, start: (yylsp[(1) - (8)]), end: (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(node: forIn, start: (yylsp[(4) - (9)]).first_column, divot: (yylsp[(6) - (9)]).first_column + 1, end: (yylsp[(7) - (9)]).last_column);
4423 appendToVarDeclarationList(GLOBAL_DATA, varDecls&: (yyvsp[(9) - (9)].statementNode).m_varDeclarations, ident: *(yyvsp[(4) - (9)].ident), attrs: DeclarationStacks::HasInitializer);
4424 (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node: forIn, varDecls: (yyvsp[(9) - (9)].statementNode).m_varDeclarations, funcDecls: (yyvsp[(9) - (9)].statementNode).m_funcDeclarations,
4425 info: ((*(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 numConstants: (yyvsp[(5) - (9)].expressionNode).m_numConstants + (yyvsp[(7) - (9)].expressionNode).m_numConstants + (yyvsp[(9) - (9)].statementNode).m_numConstants);
4427 setStatementLocation(statement: (yyval.statementNode).m_node, start: (yylsp[(1) - (9)]), end: (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*>(node: 0, info: 0, numConstants: 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*>(node: 0, info: 0, numConstants: 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, start: (yylsp[(1) - (2)]).first_column, divot: (yylsp[(1) - (2)]).last_column, end: (yylsp[(1) - (2)]).last_column);
4450 (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, varDecls: 0, funcDecls: 0, info: 0, numConstants: 0);
4451 setStatementLocation(statement: (yyval.statementNode).m_node, start: (yylsp[(1) - (2)]), end: (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, start: (yylsp[(1) - (2)]).first_column, divot: (yylsp[(1) - (2)]).last_column, end: (yylsp[(1) - (2)]).last_column);
4460 (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, varDecls: 0, funcDecls: 0, info: 0, numConstants: 0);
4461 setStatementLocation(statement: (yyval.statementNode).m_node, start: (yylsp[(1) - (2)]), end: (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, start: (yylsp[(1) - (3)]).first_column, divot: (yylsp[(2) - (3)]).last_column, end: (yylsp[(2) - (3)]).last_column);
4470 (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, varDecls: 0, funcDecls: 0, info: 0, numConstants: 0);
4471 setStatementLocation(statement: (yyval.statementNode).m_node, start: (yylsp[(1) - (3)]), end: (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, start: (yylsp[(1) - (3)]).first_column, divot: (yylsp[(2) - (3)]).last_column, end: (yylsp[(2) - (3)]).last_column);
4480 (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, varDecls: 0, funcDecls: 0, info: 0, numConstants: 0);
4481 setStatementLocation(statement: (yyval.statementNode).m_node, start: (yylsp[(1) - (3)]), end: (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, start: (yylsp[(1) - (2)]).first_column, divot: (yylsp[(1) - (2)]).last_column, end: (yylsp[(1) - (2)]).last_column);
4490 (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, varDecls: 0, funcDecls: 0, info: 0, numConstants: 0); setStatementLocation(statement: (yyval.statementNode).m_node, start: (yylsp[(1) - (2)]), end: (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, start: (yylsp[(1) - (2)]).first_column, divot: (yylsp[(1) - (2)]).last_column, end: (yylsp[(1) - (2)]).last_column);
4499 (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node: new (GLOBAL_DATA) BreakNode(GLOBAL_DATA), varDecls: 0, funcDecls: 0, info: 0, numConstants: 0); setStatementLocation(statement: (yyval.statementNode).m_node, start: (yylsp[(1) - (2)]), end: (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, start: (yylsp[(1) - (3)]).first_column, divot: (yylsp[(2) - (3)]).last_column, end: (yylsp[(2) - (3)]).last_column);
4508 (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, varDecls: 0, funcDecls: 0, info: 0, numConstants: 0); setStatementLocation(statement: (yyval.statementNode).m_node, start: (yylsp[(1) - (3)]), end: (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, start: (yylsp[(1) - (3)]).first_column, divot: (yylsp[(2) - (3)]).last_column, end: (yylsp[(2) - (3)]).last_column);
4517 (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node: new (GLOBAL_DATA) BreakNode(GLOBAL_DATA, *(yyvsp[(2) - (3)].ident)), varDecls: 0, funcDecls: 0, info: 0, numConstants: 0); setStatementLocation(statement: (yyval.statementNode).m_node, start: (yylsp[(1) - (3)]), end: (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, start: (yylsp[(1) - (2)]).first_column, divot: (yylsp[(1) - (2)]).last_column, end: (yylsp[(1) - (2)]).last_column);
4526 (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, varDecls: 0, funcDecls: 0, info: 0, numConstants: 0); setStatementLocation(statement: (yyval.statementNode).m_node, start: (yylsp[(1) - (2)]), end: (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, start: (yylsp[(1) - (2)]).first_column, divot: (yylsp[(1) - (2)]).last_column, end: (yylsp[(1) - (2)]).last_column);
4535 (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, varDecls: 0, funcDecls: 0, info: 0, numConstants: 0); setStatementLocation(statement: (yyval.statementNode).m_node, start: (yylsp[(1) - (2)]), end: (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, start: (yylsp[(1) - (3)]).first_column, divot: (yylsp[(2) - (3)]).last_column, end: (yylsp[(2) - (3)]).last_column);
4544 (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, varDecls: 0, funcDecls: 0, info: (yyvsp[(2) - (3)].expressionNode).m_features, numConstants: (yyvsp[(2) - (3)].expressionNode).m_numConstants); setStatementLocation(statement: (yyval.statementNode).m_node, start: (yylsp[(1) - (3)]), end: (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, start: (yylsp[(1) - (3)]).first_column, divot: (yylsp[(2) - (3)]).last_column, end: (yylsp[(2) - (3)]).last_column);
4553 (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, varDecls: 0, funcDecls: 0, info: (yyvsp[(2) - (3)].expressionNode).m_features, numConstants: (yyvsp[(2) - (3)].expressionNode).m_numConstants); setStatementLocation(statement: (yyval.statementNode).m_node, start: (yylsp[(1) - (3)]), end: (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*>(node: 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 varDecls: (yyvsp[(5) - (5)].statementNode).m_varDeclarations, funcDecls: (yyvsp[(5) - (5)].statementNode).m_funcDeclarations, info: (yyvsp[(3) - (5)].expressionNode).m_features | (yyvsp[(5) - (5)].statementNode).m_features | WithFeature, numConstants: (yyvsp[(3) - (5)].expressionNode).m_numConstants + (yyvsp[(5) - (5)].statementNode).m_numConstants);
4562 setStatementLocation(statement: (yyval.statementNode).m_node, start: (yylsp[(1) - (5)]), end: (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*>(node: new (GLOBAL_DATA) SwitchNode(GLOBAL_DATA, (yyvsp[(3) - (5)].expressionNode).m_node, (yyvsp[(5) - (5)].caseBlockNode).m_node), varDecls: (yyvsp[(5) - (5)].caseBlockNode).m_varDeclarations, funcDecls: (yyvsp[(5) - (5)].caseBlockNode).m_funcDeclarations,
4570 info: (yyvsp[(3) - (5)].expressionNode).m_features | (yyvsp[(5) - (5)].caseBlockNode).m_features, numConstants: (yyvsp[(3) - (5)].expressionNode).m_numConstants + (yyvsp[(5) - (5)].caseBlockNode).m_numConstants);
4571 setStatementLocation(statement: (yyval.statementNode).m_node, start: (yylsp[(1) - (5)]), end: (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*>(node: new (GLOBAL_DATA) CaseBlockNode(GLOBAL_DATA, (yyvsp[(2) - (3)].clauseList).m_node.head, 0, 0), varDecls: (yyvsp[(2) - (3)].clauseList).m_varDeclarations, funcDecls: (yyvsp[(2) - (3)].clauseList).m_funcDeclarations, info: (yyvsp[(2) - (3)].clauseList).m_features, numConstants: (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*>(node: 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 varDecls: mergeDeclarationLists(decls1: mergeDeclarationLists(decls1: (yyvsp[(2) - (5)].clauseList).m_varDeclarations, decls2: (yyvsp[(3) - (5)].caseClauseNode).m_varDeclarations), decls2: (yyvsp[(4) - (5)].clauseList).m_varDeclarations),
4587 funcDecls: mergeDeclarationLists(decls1: mergeDeclarationLists(decls1: (yyvsp[(2) - (5)].clauseList).m_funcDeclarations, decls2: (yyvsp[(3) - (5)].caseClauseNode).m_funcDeclarations), decls2: (yyvsp[(4) - (5)].clauseList).m_funcDeclarations),
4588 info: (yyvsp[(2) - (5)].clauseList).m_features | (yyvsp[(3) - (5)].caseClauseNode).m_features | (yyvsp[(4) - (5)].clauseList).m_features,
4589 numConstants: (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(decls1: (yyvsp[(1) - (2)].clauseList).m_varDeclarations, decls2: (yyvsp[(2) - (2)].caseClauseNode).m_varDeclarations);
4618 (yyval.clauseList).m_funcDeclarations = mergeDeclarationLists(decls1: (yyvsp[(1) - (2)].clauseList).m_funcDeclarations, decls2: (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*>(node: new (GLOBAL_DATA) CaseClauseNode(GLOBAL_DATA, (yyvsp[(2) - (3)].expressionNode).m_node), varDecls: 0, funcDecls: 0, info: (yyvsp[(2) - (3)].expressionNode).m_features, numConstants: (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*>(node: new (GLOBAL_DATA) CaseClauseNode(GLOBAL_DATA, (yyvsp[(2) - (4)].expressionNode).m_node, (yyvsp[(4) - (4)].sourceElements).m_node), varDecls: (yyvsp[(4) - (4)].sourceElements).m_varDeclarations, funcDecls: (yyvsp[(4) - (4)].sourceElements).m_funcDeclarations, info: (yyvsp[(2) - (4)].expressionNode).m_features | (yyvsp[(4) - (4)].sourceElements).m_features, numConstants: (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*>(node: new (GLOBAL_DATA) CaseClauseNode(GLOBAL_DATA, 0), varDecls: 0, funcDecls: 0, info: 0, numConstants: 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*>(node: new (GLOBAL_DATA) CaseClauseNode(GLOBAL_DATA, 0, (yyvsp[(3) - (3)].sourceElements).m_node), varDecls: (yyvsp[(3) - (3)].sourceElements).m_varDeclarations, funcDecls: (yyvsp[(3) - (3)].sourceElements).m_funcDeclarations, info: (yyvsp[(3) - (3)].sourceElements).m_features, numConstants: (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, start: (yylsp[(1) - (3)]).first_column, divot: (yylsp[(2) - (3)]).last_column, end: (yylsp[(2) - (3)]).last_column);
4658 (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, varDecls: (yyvsp[(3) - (3)].statementNode).m_varDeclarations, funcDecls: (yyvsp[(3) - (3)].statementNode).m_funcDeclarations, info: (yyvsp[(3) - (3)].statementNode).m_features, numConstants: (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, start: (yylsp[(1) - (3)]).first_column, divot: (yylsp[(2) - (3)]).last_column, end: (yylsp[(2) - (3)]).last_column);
4667 (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, varDecls: 0, funcDecls: 0, info: (yyvsp[(2) - (3)].expressionNode).m_features, numConstants: (yyvsp[(2) - (3)].expressionNode).m_numConstants); setStatementLocation(statement: (yyval.statementNode).m_node, start: (yylsp[(1) - (3)]), end: (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, start: (yylsp[(1) - (3)]).first_column, divot: (yylsp[(2) - (3)]).last_column, end: (yylsp[(2) - (3)]).last_column);
4677 (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, varDecls: 0, funcDecls: 0, info: (yyvsp[(2) - (3)].expressionNode).m_features, numConstants: (yyvsp[(2) - (3)].expressionNode).m_numConstants); setStatementLocation(statement: (yyval.statementNode).m_node, start: (yylsp[(1) - (3)]), end: (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*>(node: 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 varDecls: mergeDeclarationLists(decls1: (yyvsp[(2) - (4)].statementNode).m_varDeclarations, decls2: (yyvsp[(4) - (4)].statementNode).m_varDeclarations),
4687 funcDecls: mergeDeclarationLists(decls1: (yyvsp[(2) - (4)].statementNode).m_funcDeclarations, decls2: (yyvsp[(4) - (4)].statementNode).m_funcDeclarations),
4688 info: (yyvsp[(2) - (4)].statementNode).m_features | (yyvsp[(4) - (4)].statementNode).m_features,
4689 numConstants: (yyvsp[(2) - (4)].statementNode).m_numConstants + (yyvsp[(4) - (4)].statementNode).m_numConstants);
4690 setStatementLocation(statement: (yyval.statementNode).m_node, start: (yylsp[(1) - (4)]), end: (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*>(node: 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 varDecls: mergeDeclarationLists(decls1: (yyvsp[(2) - (7)].statementNode).m_varDeclarations, decls2: (yyvsp[(7) - (7)].statementNode).m_varDeclarations),
4699 funcDecls: mergeDeclarationLists(decls1: (yyvsp[(2) - (7)].statementNode).m_funcDeclarations, decls2: (yyvsp[(7) - (7)].statementNode).m_funcDeclarations),
4700 info: (yyvsp[(2) - (7)].statementNode).m_features | (yyvsp[(7) - (7)].statementNode).m_features | CatchFeature,
4701 numConstants: (yyvsp[(2) - (7)].statementNode).m_numConstants + (yyvsp[(7) - (7)].statementNode).m_numConstants);
4702 setStatementLocation(statement: (yyval.statementNode).m_node, start: (yylsp[(1) - (7)]), end: (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*>(node: 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 varDecls: mergeDeclarationLists(decls1: mergeDeclarationLists(decls1: (yyvsp[(2) - (9)].statementNode).m_varDeclarations, decls2: (yyvsp[(7) - (9)].statementNode).m_varDeclarations), decls2: (yyvsp[(9) - (9)].statementNode).m_varDeclarations),
4711 funcDecls: mergeDeclarationLists(decls1: mergeDeclarationLists(decls1: (yyvsp[(2) - (9)].statementNode).m_funcDeclarations, decls2: (yyvsp[(7) - (9)].statementNode).m_funcDeclarations), decls2: (yyvsp[(9) - (9)].statementNode).m_funcDeclarations),
4712 info: (yyvsp[(2) - (9)].statementNode).m_features | (yyvsp[(7) - (9)].statementNode).m_features | (yyvsp[(9) - (9)].statementNode).m_features | CatchFeature,
4713 numConstants: (yyvsp[(2) - (9)].statementNode).m_numConstants + (yyvsp[(7) - (9)].statementNode).m_numConstants + (yyvsp[(9) - (9)].statementNode).m_numConstants);
4714 setStatementLocation(statement: (yyval.statementNode).m_node, start: (yylsp[(1) - (9)]), end: (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*>(node: new (GLOBAL_DATA) DebuggerStatementNode(GLOBAL_DATA), varDecls: 0, funcDecls: 0, info: 0, numConstants: 0);
4722 setStatementLocation(statement: (yyval.statementNode).m_node, start: (yylsp[(1) - (2)]), end: (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*>(node: new (GLOBAL_DATA) DebuggerStatementNode(GLOBAL_DATA), varDecls: 0, funcDecls: 0, info: 0, numConstants: 0);
4730 setStatementLocation(statement: (yyval.statementNode).m_node, start: (yylsp[(1) - (2)]), end: (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*>(node: new (GLOBAL_DATA) FuncDeclNode(GLOBAL_DATA, *(yyvsp[(2) - (7)].ident), (yyvsp[(6) - (7)].functionBodyNode), GLOBAL_DATA->lexer->sourceCode(openBrace: (yyvsp[(5) - (7)].intValue), closeBrace: (yyvsp[(7) - (7)].intValue), firstLine: (yylsp[(5) - (7)]).first_line)), varDecls: 0, funcDecls: new (GLOBAL_DATA) ParserArenaData<DeclarationStacks::FunctionStack>, info: ((*(yyvsp[(2) - (7)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0) | ClosureFeature, numConstants: 0); setStatementLocation(statement: (yyvsp[(6) - (7)].functionBodyNode), start: (yylsp[(5) - (7)]), end: (yylsp[(7) - (7)])); (yyval.statementNode).m_funcDeclarations->data.append(val: 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*>(node: new (GLOBAL_DATA) FuncDeclNode(GLOBAL_DATA, *(yyvsp[(2) - (8)].ident), (yyvsp[(7) - (8)].functionBodyNode), GLOBAL_DATA->lexer->sourceCode(openBrace: (yyvsp[(6) - (8)].intValue), closeBrace: (yyvsp[(8) - (8)].intValue), firstLine: (yylsp[(6) - (8)]).first_line), (yyvsp[(4) - (8)].parameterList).m_node.head), varDecls: 0, funcDecls: new (GLOBAL_DATA) ParserArenaData<DeclarationStacks::FunctionStack>, info: ((*(yyvsp[(2) - (8)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0) | (yyvsp[(4) - (8)].parameterList).m_features | ClosureFeature, numConstants: 0);
4746 if ((yyvsp[(4) - (8)].parameterList).m_features & ArgumentsFeature)
4747 (yyvsp[(7) - (8)].functionBodyNode)->setUsesArguments();
4748 setStatementLocation(statement: (yyvsp[(7) - (8)].functionBodyNode), start: (yylsp[(6) - (8)]), end: (yylsp[(8) - (8)]));
4749 (yyval.statementNode).m_funcDeclarations->data.append(val: 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(node: new (GLOBAL_DATA) FuncExprNode(GLOBAL_DATA, GLOBAL_DATA->propertyNames->nullIdentifier, (yyvsp[(5) - (6)].functionBodyNode), GLOBAL_DATA->lexer->sourceCode(openBrace: (yyvsp[(4) - (6)].intValue), closeBrace: (yyvsp[(6) - (6)].intValue), firstLine: (yylsp[(4) - (6)]).first_line)), info: ClosureFeature, numConstants: 0); setStatementLocation(statement: (yyvsp[(5) - (6)].functionBodyNode), start: (yylsp[(4) - (6)]), end: (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(node: new (GLOBAL_DATA) FuncExprNode(GLOBAL_DATA, GLOBAL_DATA->propertyNames->nullIdentifier, (yyvsp[(6) - (7)].functionBodyNode), GLOBAL_DATA->lexer->sourceCode(openBrace: (yyvsp[(5) - (7)].intValue), closeBrace: (yyvsp[(7) - (7)].intValue), firstLine: (yylsp[(5) - (7)]).first_line), (yyvsp[(3) - (7)].parameterList).m_node.head), info: (yyvsp[(3) - (7)].parameterList).m_features | ClosureFeature, numConstants: 0);
4766 if ((yyvsp[(3) - (7)].parameterList).m_features & ArgumentsFeature)
4767 (yyvsp[(6) - (7)].functionBodyNode)->setUsesArguments();
4768 setStatementLocation(statement: (yyvsp[(6) - (7)].functionBodyNode), start: (yylsp[(5) - (7)]), end: (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(node: new (GLOBAL_DATA) FuncExprNode(GLOBAL_DATA, *(yyvsp[(2) - (7)].ident), (yyvsp[(6) - (7)].functionBodyNode), GLOBAL_DATA->lexer->sourceCode(openBrace: (yyvsp[(5) - (7)].intValue), closeBrace: (yyvsp[(7) - (7)].intValue), firstLine: (yylsp[(5) - (7)]).first_line)), info: ClosureFeature, numConstants: 0); setStatementLocation(statement: (yyvsp[(6) - (7)].functionBodyNode), start: (yylsp[(5) - (7)]), end: (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(node: new (GLOBAL_DATA) FuncExprNode(GLOBAL_DATA, *(yyvsp[(2) - (8)].ident), (yyvsp[(7) - (8)].functionBodyNode), GLOBAL_DATA->lexer->sourceCode(openBrace: (yyvsp[(6) - (8)].intValue), closeBrace: (yyvsp[(8) - (8)].intValue), firstLine: (yylsp[(6) - (8)]).first_line), (yyvsp[(4) - (8)].parameterList).m_node.head), info: (yyvsp[(4) - (8)].parameterList).m_features | ClosureFeature, numConstants: 0);
4785 if ((yyvsp[(4) - (8)].parameterList).m_features & ArgumentsFeature)
4786 (yyvsp[(7) - (8)].functionBodyNode)->setUsesArguments();
4787 setStatementLocation(statement: (yyvsp[(7) - (8)].functionBodyNode), start: (yylsp[(6) - (8)]), end: (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, features: NoFeatures, lastLine: (yylsp[(0) - (0)]).last_line, numConstants: 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, features: (yyvsp[(1) - (1)].sourceElements).m_features,
4835 lastLine: (yylsp[(1) - (1)]).last_line, numConstants: (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(decls1: (yyvsp[(1) - (2)].sourceElements).m_varDeclarations, decls2: (yyvsp[(2) - (2)].statementNode).m_varDeclarations);
4857 (yyval.sourceElements).m_funcDeclarations = mergeDeclarationLists(decls1: (yyvsp[(1) - (2)].sourceElements).m_funcDeclarations, decls2: (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`------------------------------------*/
5148yyerrlab:
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 (yyresult: 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 (yyresult: 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 (yymsg: "Error: discarding",
5206 yytype: yytoken, yyvaluep: &yylval, yylocationp: &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`---------------------------------------------------*/
5219yyerrorlab:
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`-------------------------------------------------------------*/
5240yyerrlab1:
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 (yymsg: "Error: popping",
5263 yytype: yystos[yystate], yyvaluep: yyvsp, yylocationp: 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`-------------------------------------*/
5287yyacceptlab:
5288 yyresult = 0;
5289 goto yyreturn;
5290
5291/*-----------------------------------.
5292| yyabortlab -- YYABORT comes here. |
5293`-----------------------------------*/
5294yyabortlab:
5295 yyresult = 1;
5296 goto yyreturn;
5297
5298#if !defined(yyoverflow) || YYERROR_VERBOSE
5299/*-------------------------------------------------.
5300| yyexhaustedlab -- memory exhaustion comes here. |
5301`-------------------------------------------------*/
5302yyexhaustedlab:
5303 yyerror (YY_("memory exhausted"));
5304 yyresult = 2;
5305 /* Fall through. */
5306#endif
5307
5308yyreturn:
5309 if (yychar != YYEMPTY)
5310 yydestruct (yymsg: "Cleanup: discarding lookahead",
5311 yytype: yytoken, yyvaluep: &yylval, yylocationp: &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 (yymsg: "Cleanup: popping",
5319 yytype: yystos[*yyssp], yyvaluep: yyvsp, yylocationp: 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
5342static 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(subexpressionDivot: bracket->divot(), subexpressionOffset: 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(subexpressionDivot: dot->divot(), subexpressionOffset: dot->endOffset());
5373 return node;
5374}
5375
5376static 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(subexpressionDivot: bracket->divot(), subexpressionOffset: 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(subexpressionDivot: dot->divot(), subexpressionOffset: dot->startOffset());
5395 return node;
5396}
5397
5398static 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(subexpressionDivot: bracket->divot(), subexpressionOffset: 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(subexpressionDivot: dot->divot(), subexpressionOffset: dot->endOffset());
5418 return node;
5419}
5420
5421static 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*>(node: new (globalData) FunctionCallValueNode(globalData, func.m_node, args.m_node, divot, divot - start, end - divot), info: 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*>(node: new (globalData) EvalFunctionCallNode(globalData, args.m_node, divot, divot - start, end - divot), info: EvalFeature | features, numConstants);
5432 return createNodeInfo<ExpressionNode*>(node: new (globalData) FunctionCallResolveNode(globalData, identifier, args.m_node, divot, divot - start, end - divot), info: 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(subexpressionDivot: bracket->divot(), subexpressionOffset: bracket->endOffset());
5438 return createNodeInfo<ExpressionNode*>(node, info: 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(subexpressionDivot: dot->divot(), subexpressionOffset: dot->endOffset());
5450 return createNodeInfo<ExpressionNode*>(node, info: features, numConstants);
5451}
5452
5453static 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
5462static 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
5479static 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
5491static 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
5502static NumberNode* makeNumberNode(JSGlobalData* globalData, double d)
5503{
5504 return new (globalData) NumberNode(globalData, d);
5505}
5506
5507static ExpressionNode* makeBitwiseNotNode(JSGlobalData* globalData, ExpressionNode* expr)
5508{
5509 if (expr->isNumber())
5510 return makeNumberNode(globalData, d: ~toInt32(val: static_cast<NumberNode*>(expr)->value()));
5511 return new (globalData) BitwiseNotNode(globalData, expr);
5512}
5513
5514static 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, d: 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
5531static 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, d: static_cast<NumberNode*>(expr1)->value() / static_cast<NumberNode*>(expr2)->value());
5538 return new (globalData) DivNode(globalData, expr1, expr2, rightHasAssignments);
5539}
5540
5541static ExpressionNode* makeAddNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
5542{
5543 if (expr1->isNumber() && expr2->isNumber())
5544 return makeNumberNode(globalData, d: static_cast<NumberNode*>(expr1)->value() + static_cast<NumberNode*>(expr2)->value());
5545 return new (globalData) AddNode(globalData, expr1, expr2, rightHasAssignments);
5546}
5547
5548static 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, d: static_cast<NumberNode*>(expr1)->value() - static_cast<NumberNode*>(expr2)->value());
5555 return new (globalData) SubNode(globalData, expr1, expr2, rightHasAssignments);
5556}
5557
5558static ExpressionNode* makeLeftShiftNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
5559{
5560 if (expr1->isNumber() && expr2->isNumber())
5561 return makeNumberNode(globalData, d: toInt32(val: static_cast<NumberNode*>(expr1)->value()) << (toUInt32(val: static_cast<NumberNode*>(expr2)->value()) & 0x1f));
5562 return new (globalData) LeftShiftNode(globalData, expr1, expr2, rightHasAssignments);
5563}
5564
5565static ExpressionNode* makeRightShiftNode(JSGlobalData* globalData, ExpressionNode* expr1, ExpressionNode* expr2, bool rightHasAssignments)
5566{
5567 if (expr1->isNumber() && expr2->isNumber())
5568 return makeNumberNode(globalData, d: toInt32(val: static_cast<NumberNode*>(expr1)->value()) >> (toUInt32(val: static_cast<NumberNode*>(expr2)->value()) & 0x1f));
5569 return new (globalData) RightShiftNode(globalData, expr1, expr2, rightHasAssignments);
5570}
5571
5572// Called by yyparse on error.
5573int yyerror(const char*)
5574{
5575 return 1;
5576}
5577
5578// May we automatically insert a semicolon?
5579static bool allowAutomaticSemicolon(Lexer& lexer, int yychar)
5580{
5581 return yychar == CLOSEBRACE || yychar == 0 || lexer.prevTerminator();
5582}
5583
5584static 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(expr: 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
5598static 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

source code of qtscript/src/3rdparty/javascriptcore/JavaScriptCore/generated/Grammar.cpp