#define YYBISON 1
#define yyparse kjsyyparse
#define yylex kjsyylex
#define yyerror kjsyyerror
#define yylval kjsyylval
#define yychar kjsyychar
#define yydebug kjsyydebug
#define yynerrs kjsyynerrs
#define YYLSP_NEEDED
#define NULLTOKEN 257
#define TRUETOKEN 258
#define FALSETOKEN 259
#define STRING 260
#define NUMBER 261
#define BREAK 262
#define CASE 263
#define DEFAULT 264
#define FOR 265
#define NEW 266
#define VAR 267
#define CONTINUE 268
#define FUNCTION 269
#define RETURN 270
#define VOID 271
#define DELETE 272
#define IF 273
#define THIS 274
#define DO 275
#define WHILE 276
#define ELSE 277
#define IN 278
#define INSTANCEOF 279
#define TYPEOF 280
#define SWITCH 281
#define WITH 282
#define RESERVED 283
#define THROW 284
#define TRY 285
#define CATCH 286
#define FINALLY 287
#define EQEQ 288
#define NE 289
#define STREQ 290
#define STRNEQ 291
#define LE 292
#define GE 293
#define OR 294
#define AND 295
#define PLUSPLUS 296
#define MINUSMINUS 297
#define LSHIFT 298
#define RSHIFT 299
#define URSHIFT 300
#define PLUSEQUAL 301
#define MINUSEQUAL 302
#define MULTEQUAL 303
#define DIVEQUAL 304
#define LSHIFTEQUAL 305
#define RSHIFTEQUAL 306
#define URSHIFTEQUAL 307
#define ANDEQUAL 308
#define MODEQUAL 309
#define XOREQUAL 310
#define OREQUAL 311
#define IDENT 312
#define AUTOPLUSPLUS 313
#define AUTOMINUSMINUS 314
#line 1 "grammar.y"
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <string.h>
#include <stdlib.h>
#include "value.h"
#include "object.h"
#include "types.h"
#include "interpreter.h"
#include "nodes.h"
#include "lexer.h"
#include "internal.h"
#define yylloc kjsyylloc
#define YYDEBUG 0
#define YYMAXDEPTH 0
#if !APPLE_CHANGES
#define YYERROR_VERBOSE
#endif
#define DBG(l, s, e) { l->setLoc(s.first_line, e.last_line, Parser::sid); } // location
extern int kjsyylex();
int kjsyyerror(const char *);
static bool automatic();
using namespace KJS;
#line 55 "grammar.y"
typedef union {
int ival;
double dval;
UString *ustr;
Identifier *ident;
Node *node;
StatementNode *stat;
ParameterNode *param;
FunctionBodyNode *body;
FuncDeclNode *func;
ProgramNode *prog;
AssignExprNode *init;
SourceElementsNode *srcs;
StatListNode *slist;
ArgumentsNode *args;
ArgumentListNode *alist;
VarDeclNode *decl;
VarDeclListNode *vlist;
CaseBlockNode *cblk;
ClauseListNode *clist;
CaseClauseNode *ccl;
ElementNode *elm;
Operator op;
PropertyValueNode *plist;
PropertyNode *pnode;
} YYSTYPE;
#ifndef YYLTYPE
typedef
struct yyltype
{
int timestamp;
int first_line;
int first_column;
int last_line;
int last_column;
char *text;
}
yyltype;
#define YYLTYPE yyltype
#endif
#include <stdio.h>
#ifndef __cplusplus
#ifndef __STDC__
#define const
#endif
#endif
#define YYFINAL 358
#define YYFLAG -32768
#define YYNTBASE 85
#define YYTRANSLATE(x) ((unsigned)(x) <= 314 ? yytranslate[x] : 149)
static const char yytranslate[] = { 0,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 74, 2, 2, 2, 76, 79, 2, 62,
63, 75, 71, 68, 72, 70, 61, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 69, 84, 77,
83, 78, 82, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
66, 2, 67, 80, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 64, 81, 65, 73, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2, 2, 2, 2, 2, 1, 3, 4, 5, 6,
7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
37, 38, 39, 40, 41, 42, 43, 44, 45, 46,
47, 48, 49, 50, 51, 52, 53, 54, 55, 56,
57, 58, 59, 60
};
#if YYDEBUG != 0
static const short yyprhs[] = { 0,
0, 2, 4, 6, 8, 10, 12, 14, 16, 18,
20, 22, 26, 29, 33, 37, 41, 47, 50, 55,
56, 58, 60, 63, 67, 73, 75, 77, 79, 81,
83, 88, 92, 96, 98, 101, 104, 107, 112, 116,
119, 123, 125, 129, 131, 133, 135, 138, 141, 143,
146, 149, 152, 155, 158, 161, 164, 167, 170, 173,
176, 178, 182, 186, 190, 192, 196, 200, 202, 206,
210, 214, 216, 220, 224, 228, 232, 236, 240, 242,
246, 250, 254, 258, 260, 264, 266, 270, 272, 276,
278, 282, 284, 288, 290, 296, 298, 302, 304, 306,
308, 310, 312, 314, 316, 318, 320, 322, 324, 326,
328, 332, 334, 336, 338, 340, 342, 344, 346, 348,
350, 352, 354, 356, 358, 360, 363, 367, 369, 372,
376, 380, 382, 386, 388, 391, 394, 396, 399, 402,
408, 416, 423, 429, 439, 450, 458, 467, 477, 478,
480, 483, 486, 490, 494, 497, 500, 504, 508, 511,
514, 518, 522, 528, 534, 538, 544, 545, 547, 549,
552, 556, 561, 564, 568, 572, 576, 580, 584, 589,
595, 598, 604, 611, 616, 622, 624, 628, 631, 635,
636, 638, 640, 643, 645
};
static const short yyrhs[] = { 3,
0, 4, 0, 5, 0, 7, 0, 6, 0, 61,
0, 50, 0, 20, 0, 58, 0, 85, 0, 87,
0, 62, 114, 63, 0, 64, 65, 0, 64, 91,
65, 0, 66, 89, 67, 0, 66, 88, 67, 0,
66, 88, 68, 89, 67, 0, 89, 112, 0, 88,
68, 89, 112, 0, 0, 90, 0, 68, 0, 90,
68, 0, 92, 69, 112, 0, 91, 68, 92, 69,
112, 0, 58, 0, 6, 0, 7, 0, 86, 0,
143, 0, 93, 66, 114, 67, 0, 93, 70, 58,
0, 12, 93, 96, 0, 93, 0, 12, 94, 0,
93, 96, 0, 95, 96, 0, 95, 66, 114, 67,
0, 95, 70, 58, 0, 62, 63, 0, 62, 97,
63, 0, 112, 0, 97, 68, 112, 0, 94, 0,
95, 0, 98, 0, 98, 42, 0, 98, 43, 0,
99, 0, 18, 100, 0, 17, 100, 0, 26, 100,
0, 42, 100, 0, 59, 100, 0, 43, 100, 0,
60, 100, 0, 71, 100, 0, 72, 100, 0, 73,
100, 0, 74, 100, 0, 100, 0, 101, 75, 100,
0, 101, 61, 100, 0, 101, 76, 100, 0, 101,
0, 102, 71, 101, 0, 102, 72, 101, 0, 102,
0, 103, 44, 102, 0, 103, 45, 102, 0, 103,
46, 102, 0, 103, 0, 104, 77, 103, 0, 104,
78, 103, 0, 104, 38, 103, 0, 104, 39, 103,
0, 104, 25, 103, 0, 104, 24, 103, 0, 104,
0, 105, 34, 104, 0, 105, 35, 104, 0, 105,
36, 104, 0, 105, 37, 104, 0, 105, 0, 106,
79, 105, 0, 106, 0, 107, 80, 105, 0, 107,
0, 108, 81, 105, 0, 108, 0, 109, 41, 108,
0, 109, 0, 110, 40, 109, 0, 110, 0, 110,
82, 112, 69, 112, 0, 111, 0, 98, 113, 112,
0, 83, 0, 47, 0, 48, 0, 49, 0, 50,
0, 51, 0, 52, 0, 53, 0, 54, 0, 56,
0, 57, 0, 55, 0, 112, 0, 114, 68, 112,
0, 116, 0, 118, 0, 122, 0, 123, 0, 124,
0, 125, 0, 127, 0, 128, 0, 129, 0, 130,
0, 131, 0, 137, 0, 138, 0, 139, 0, 64,
65, 0, 64, 147, 65, 0, 115, 0, 117, 115,
0, 13, 119, 84, 0, 13, 119, 1, 0, 120,
0, 119, 68, 120, 0, 58, 0, 58, 121, 0,
83, 112, 0, 84, 0, 114, 84, 0, 114, 1,
0, 19, 62, 114, 63, 115, 0, 19, 62, 114,
63, 115, 23, 115, 0, 21, 115, 22, 62, 114,
63, 0, 22, 62, 114, 63, 115, 0, 11, 62,
126, 84, 126, 84, 126, 63, 115, 0, 11, 62,
13, 119, 84, 126, 84, 126, 63, 115, 0, 11,
62, 98, 24, 114, 63, 115, 0, 11, 62, 13,
58, 24, 114, 63, 115, 0, 11, 62, 13, 58,
121, 24, 114, 63, 115, 0, 0, 114, 0, 14,
84, 0, 14, 1, 0, 14, 58, 84, 0, 14,
58, 1, 0, 8, 84, 0, 8, 1, 0, 8,
58, 84, 0, 8, 58, 1, 0, 16, 84, 0,
16, 1, 0, 16, 114, 84, 0, 16, 114, 1,
0, 28, 62, 114, 63, 115, 0, 27, 62, 114,
63, 132, 0, 64, 133, 65, 0, 64, 133, 136,
133, 65, 0, 0, 134, 0, 135, 0, 134, 135,
0, 9, 114, 69, 0, 9, 114, 69, 117, 0,
10, 69, 0, 10, 69, 117, 0, 58, 69, 115,
0, 30, 114, 84, 0, 31, 116, 140, 0, 31,
116, 141, 0, 31, 116, 140, 141, 0, 32, 62,
58, 63, 116, 0, 33, 116, 0, 15, 58, 62,
63, 145, 0, 15, 58, 62, 144, 63, 145, 0,
15, 62, 63, 145, 0, 15, 62, 144, 63, 145,
0, 58, 0, 144, 68, 58, 0, 64, 65, 0,
64, 147, 65, 0, 0, 147, 0, 148, 0, 147,
148, 0, 115, 0, 142, 0
};
#endif
#if YYDEBUG != 0
static const short yyrline[] = { 0,
165, 167, 168, 169, 170, 171, 174, 180, 182, 184,
185, 186, 187, 188, 191, 193, 194, 197, 199, 203,
205, 208, 210, 213, 215, 219, 221, 222, 225, 227,
228, 229, 230, 233, 235, 238, 240, 241, 242, 246,
248, 251, 253, 256, 258, 261, 263, 264, 267, 269,
270, 271, 272, 273, 274, 275, 276, 277, 278, 279,
282, 284, 285, 286, 289, 291, 292, 295, 297, 298,
299, 302, 304, 306, 308, 310, 312, 314, 318, 320,
321, 322, 323, 326, 328, 331, 333, 336, 338, 341,
343, 347, 349, 353, 355, 359, 361, 365, 367, 368,
369, 370, 371, 372, 373, 374, 375, 376, 377, 380,
382, 385, 387, 388, 389, 390, 391, 392, 393, 394,
395, 396, 397, 398, 399, 402, 404, 407, 409, 412,
415, 424, 426, 430, 432, 435, 439, 443, 446, 453,
455, 459, 461, 462, 465, 468, 471, 475, 481, 483,
486, 488, 492, 494, 501, 503, 507, 509, 517, 519,
523, 524, 530, 535, 540, 542, 546, 548, 551, 553,
556, 558, 561, 563, 566, 572, 576, 578, 579, 582,
586, 590, 593, 597, 599, 604, 606, 609, 612, 616,
619, 623, 625, 628, 630
};
#endif
#if YYDEBUG != 0 || defined (YYERROR_VERBOSE)
static const char * const yytname[] = { "$","error","$undefined.","NULLTOKEN",
"TRUETOKEN","FALSETOKEN","STRING","NUMBER","BREAK","CASE","DEFAULT","FOR","NEW",
"VAR","CONTINUE","FUNCTION","RETURN","VOID","DELETE","IF","THIS","DO","WHILE",
"ELSE","IN","INSTANCEOF","TYPEOF","SWITCH","WITH","RESERVED","THROW","TRY","CATCH",
"FINALLY","EQEQ","NE","STREQ","STRNEQ","LE","GE","OR","AND","PLUSPLUS","MINUSMINUS",
"LSHIFT","RSHIFT","URSHIFT","PLUSEQUAL","MINUSEQUAL","MULTEQUAL","DIVEQUAL",
"LSHIFTEQUAL","RSHIFTEQUAL","URSHIFTEQUAL","ANDEQUAL","MODEQUAL","XOREQUAL",
"OREQUAL","IDENT","AUTOPLUSPLUS","AUTOMINUSMINUS","'/'","'('","')'","'{'","'}'",
"'['","']'","','","':'","'.'","'+'","'-'","'~'","'!'","'*'","'%'","'<'","'>'",
"'&'","'^'","'|'","'?'","'='","';'","Literal","PrimaryExpr","ArrayLiteral","ElementList",
"ElisionOpt","Elision","PropertyNameAndValueList","PropertyName","MemberExpr",
"NewExpr","CallExpr","Arguments","ArgumentList","LeftHandSideExpr","PostfixExpr",
"UnaryExpr","MultiplicativeExpr","AdditiveExpr","ShiftExpr","RelationalExpr",
"EqualityExpr","BitwiseANDExpr","BitwiseXORExpr","BitwiseORExpr","LogicalANDExpr",
"LogicalORExpr","ConditionalExpr","AssignmentExpr","AssignmentOperator","Expr",
"Statement","Block","StatementList","VariableStatement","VariableDeclarationList",
"VariableDeclaration","Initializer","EmptyStatement","ExprStatement","IfStatement",
"IterationStatement","ExprOpt","ContinueStatement","BreakStatement","ReturnStatement",
"WithStatement","SwitchStatement","CaseBlock","CaseClausesOpt","CaseClauses",
"CaseClause","DefaultClause","LabelledStatement","ThrowStatement","TryStatement",
"Catch","Finally","FunctionDeclaration","FunctionExpr","FormalParameterList",
"FunctionBody","Program","SourceElements","SourceElement", NULL
};
#endif
static const short yyr1[] = { 0,
85, 85, 85, 85, 85, 85, 85, 86, 86, 86,
86, 86, 86, 86, 87, 87, 87, 88, 88, 89,
89, 90, 90, 91, 91, 92, 92, 92, 93, 93,
93, 93, 93, 94, 94, 95, 95, 95, 95, 96,
96, 97, 97, 98, 98, 99, 99, 99, 100, 100,
100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
101, 101, 101, 101, 102, 102, 102, 103, 103, 103,
103, 104, 104, 104, 104, 104, 104, 104, 105, 105,
105, 105, 105, 106, 106, 107, 107, 108, 108, 109,
109, 110, 110, 111, 111, 112, 112, 113, 113, 113,
113, 113, 113, 113, 113, 113, 113, 113, 113, 114,
114, 115, 115, 115, 115, 115, 115, 115, 115, 115,
115, 115, 115, 115, 115, 116, 116, 117, 117, 118,
118, 119, 119, 120, 120, 121, 122, 123, 123, 124,
124, 125, 125, 125, 125, 125, 125, 125, 126, 126,
127, 127, 127, 127, 128, 128, 128, 128, 129, 129,
129, 129, 130, 131, 132, 132, 133, 133, 134, 134,
135, 135, 136, 136, 137, 138, 139, 139, 139, 140,
141, 142, 142, 143, 143, 144, 144, 145, 145, 146,
146, 147, 147, 148, 148
};
static const short yyr2[] = { 0,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 3, 2, 3, 3, 3, 5, 2, 4, 0,
1, 1, 2, 3, 5, 1, 1, 1, 1, 1,
4, 3, 3, 1, 2, 2, 2, 4, 3, 2,
3, 1, 3, 1, 1, 1, 2, 2, 1, 2,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1, 3, 3, 3, 1, 3, 3, 1, 3, 3,
3, 1, 3, 3, 3, 3, 3, 3, 1, 3,
3, 3, 3, 1, 3, 1, 3, 1, 3, 1,
3, 1, 3, 1, 5, 1, 3, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
3, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 2, 3, 1, 2, 3,
3, 1, 3, 1, 2, 2, 1, 2, 2, 5,
7, 6, 5, 9, 10, 7, 8, 9, 0, 1,
2, 2, 3, 3, 2, 2, 3, 3, 2, 2,
3, 3, 5, 5, 3, 5, 0, 1, 1, 2,
3, 4, 2, 3, 3, 3, 3, 3, 4, 5,
2, 5, 6, 4, 5, 1, 3, 2, 3, 0,
1, 1, 2, 1, 1
};
static const short yydefact[] = { 190,
1, 2, 3, 5, 4, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 8, 0, 0, 0, 0,
0, 0, 0, 0, 0, 7, 9, 0, 0, 6,
0, 0, 20, 0, 0, 0, 0, 137, 10, 29,
11, 34, 44, 45, 46, 49, 61, 65, 68, 72,
79, 84, 86, 88, 90, 92, 94, 96, 110, 0,
194, 112, 113, 114, 115, 116, 117, 118, 119, 120,
121, 122, 123, 124, 125, 195, 30, 191, 192, 156,
0, 155, 149, 0, 9, 0, 34, 35, 134, 0,
132, 152, 0, 151, 0, 0, 160, 159, 0, 46,
51, 50, 0, 0, 0, 52, 0, 0, 0, 0,
0, 53, 55, 0, 54, 56, 0, 5, 4, 9,
13, 0, 0, 0, 22, 0, 0, 21, 57, 58,
59, 60, 0, 0, 0, 36, 0, 0, 37, 47,
48, 99, 100, 101, 102, 103, 104, 105, 106, 109,
107, 108, 98, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 139, 0,
138, 193, 158, 157, 0, 46, 150, 0, 27, 28,
26, 13, 33, 0, 135, 131, 0, 130, 154, 153,
0, 186, 0, 0, 162, 161, 0, 0, 0, 0,
0, 176, 126, 0, 0, 177, 178, 175, 12, 14,
0, 0, 127, 16, 20, 15, 18, 23, 40, 0,
42, 0, 32, 0, 39, 97, 63, 62, 64, 66,
67, 69, 70, 71, 78, 77, 75, 76, 73, 74,
80, 81, 82, 83, 85, 87, 89, 91, 93, 0,
111, 134, 0, 0, 149, 136, 133, 0, 0, 0,
184, 0, 0, 0, 0, 0, 0, 0, 0, 181,
179, 0, 24, 0, 41, 0, 31, 38, 0, 0,
135, 149, 0, 0, 182, 0, 188, 0, 185, 187,
140, 0, 143, 167, 164, 163, 0, 0, 17, 19,
43, 95, 0, 0, 0, 0, 149, 183, 189, 0,
142, 0, 0, 168, 169, 0, 25, 0, 0, 149,
146, 0, 141, 0, 0, 165, 167, 170, 180, 147,
0, 0, 0, 171, 173, 0, 148, 0, 144, 128,
172, 174, 166, 145, 129, 0, 0, 0
};
static const short yydefgoto[] = { 39,
40, 41, 126, 127, 128, 122, 123, 42, 43, 44,
136, 230, 45, 46, 47, 48, 49, 50, 51, 52,
53, 54, 55, 56, 57, 58, 59, 154, 60, 61,
62, 351, 63, 90, 91, 195, 64, 65, 66, 67,
188, 68, 69, 70, 71, 72, 305, 323, 324, 325,
337, 73, 74, 75, 216, 217, 76, 77, 204, 271,
356, 124, 79
};
static const short yypact[] = { 779,
-32768,-32768,-32768,-32768,-32768, 5, -28, 111, -30, 6,
-31, 335, 1252, 1252, -16,-32768, 853, -5, 1252, 9,
57, 1252, -20, 1252, 1252,-32768, -21, 1252, 1252,-32768,
1252, 409, -1, 1252, 1252, 1252, 1252,-32768,-32768,-32768,
-32768, 42,-32768, 43, 179,-32768,-32768, -14, 12, 195,
82, 118, 72, 85, 93, 151, -23,-32768,-32768, 11,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768, 779,-32768,-32768,
7,-32768, 964, 161,-32768, 45, 42,-32768, 136, 17,
-32768,-32768, 8,-32768, 192, 24,-32768,-32768, 18, 90,
-32768,-32768, 1252, 236, 1252,-32768, 1252, 1252, -45, 483,
231,-32768,-32768, 853,-32768,-32768, 59, 191, 196, -21,
935, 123, 208, 557,-32768, 200, 1036, 203,-32768,-32768,
-32768,-32768, 1108, 1252, 222,-32768, 1252, 224,-32768,-32768,
-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
-32768,-32768,-32768, 1252, 1252, 1252, 1252, 1252, 1252, 1252,
1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252,
1252, 1252, 1252, 1252, 1252, 1252, 1252, 1252,-32768, 1252,
-32768,-32768,-32768,-32768, 226, 87, 217, 204,-32768,-32768,
-32768,-32768,-32768, 1252,-32768,-32768, -30,-32768,-32768,-32768,
105,-32768, 223, 103,-32768,-32768, 113, 227, 115, 116,
117,-32768,-32768, 228, -20, 253,-32768,-32768,-32768,-32768,
35, 1252,-32768,-32768, -1,-32768,-32768,-32768,-32768, 119,
-32768, 202,-32768, 206,-32768,-32768,-32768,-32768,-32768, -14,
-14, 12, 12, 12, 195, 195, 195, 195, 195, 195,
82, 82, 82, 82, 118, 118, 118, 93, 151, 225,
-32768, -3, -44, 1252, 1252,-32768,-32768, 223, 126, 631,
-32768, 223, 233, 853, 1252, 853, 229, 853, 234,-32768,
-32768, 232,-32768, 1180,-32768, 1252,-32768,-32768, 1252, 1252,
271, 1252, 127, 212,-32768, 223,-32768, 705,-32768,-32768,
274, 157,-32768, 289,-32768,-32768, 237, 1252,-32768,-32768,
-32768,-32768, 174, 1252, 218, 853, 1252,-32768,-32768, 853,
-32768, 1252, 23, 289,-32768, -20,-32768, 853, 175, 1252,
-32768, 243,-32768, 207, 238,-32768, 289,-32768,-32768,-32768,
853, 246, 853, 853, 853, 245,-32768, 853,-32768,-32768,
853, 853,-32768,-32768,-32768, 312, 314,-32768
};
static const short yypgoto[] = {-32768,
-32768,-32768,-32768, 91,-32768,-32768, 94, 309, 310,-32768,
-34,-32768, 41,-32768, 1, 120, 88, -18, 75, 78,
-32768,-32768, 143, 145,-32768,-32768, -122,-32768, -9, -17,
-22, -25,-32768, 138, 128, 67,-32768,-32768,-32768,-32768,
-249,-32768,-32768,-32768,-32768,-32768,-32768, -7,-32768, 13,
-32768,-32768,-32768,-32768,-32768, 129,-32768,-32768, 131, -223,
-32768, 2, -74
};
#define YYLAST 1326
static const short yytable[] = { 104,
111, 78, 99, 182, 227, 80, 92, 183, 199, 139,
231, 179, 109, 101, 102, 294, 177, 196, 205, 106,
290, 117, 180, 197, 112, 113, 95, 89, 115, 116,
96, 236, 335, 83, 129, 130, 131, 132, 212, 292,
189, 190, 315, 110, 295, 103, 155, 114, 299, 182,
189, 190, 193, 100, 100, 260, 105, 261, 178, 100,
156, 157, 81, 93, 100, 100, 125, 332, 100, 100,
107, 266, 318, 187, 100, 100, 100, 100, 180, 194,
342, 202, 158, 159, 197, 180, 203, 336, 82, 94,
184, 200, 191, 207, 181, 209, 218, 210, 211, 283,
198, 206, 191, 133, 133, 163, 164, 134, 137, 192,
264, 135, 138, 1, 2, 3, 4, 5, 108, 165,
166, 219, 8, 186, 232, 84, 180, 234, 140, 141,
16, 140, 141, 142, 143, 144, 145, 146, 147, 148,
149, 150, 151, 152, 245, 246, 247, 248, 249, 250,
173, 169, 170, 171, 172, 237, 238, 239, 167, 168,
26, 310, 202, 311, 174, 272, 312, 268, 85, 153,
273, 30, 31, 175, 86, 274, 33, 276, 277, 278,
180, 285, 180, 180, 180, 327, 286, 220, 296, 316,
221, 176, 280, 273, 180, 100, 100, 100, 100, 100,
100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
100, 100, 100, 100, 100, 100, 100, 100, 194, 321,
140, 141, 96, 182, 180, 142, 143, 144, 145, 146,
147, 148, 149, 150, 151, 152, 328, 341, 160, 161,
162, 180, 180, 251, 252, 253, 254, 242, 243, 244,
255, 256, 257, 201, 293, 187, 301, 208, 303, -27,
306, 153, 214, 215, -28, 302, 224, 225, 287, 180,
228, 298, 288, 180, 180, 344, 222, 240, 241, 233,
313, 235, 187, 262, 180, 215, 270, 265, 275, 279,
300, 307, 304, 289, 314, 317, 320, 322, 331, 326,
308, 330, 333, 339, 329, 343, 345, 187, 348, 353,
340, 357, 334, 358, 282, 284, 87, 88, 258, 352,
187, 259, 263, 347, 267, 349, 350, 350, 291, 346,
354, 269, 0, 355, 355, 97, 338, 1, 2, 3,
4, 5, 0, 0, 281, 0, 8, 0, 0, 84,
0, 13, 14, 0, 16, 0, 0, 0, 0, 0,
19, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 24, 25, 0, 0,
0, 0, 0, 0, 26, 0, 0, 0, 0, 0,
0, 0, 85, 28, 29, 30, 31, 0, 86, 0,
33, 0, 0, 0, 0, 34, 35, 36, 37, 0,
0, 1, 2, 3, 118, 119, 6, 0, 98, 7,
8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 0, 0, 0, 19, 20, 21, 0, 22, 23,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
24, 25, 0, 0, 0, 0, 0, 0, 26, 0,
0, 0, 0, 0, 0, 0, 120, 28, 29, 30,
31, 0, 32, 121, 33, 0, 0, 0, 0, 34,
35, 36, 37, 0, 0, 1, 2, 3, 4, 5,
6, 0, 38, 7, 8, 9, 10, 11, 12, 13,
14, 15, 16, 17, 18, 0, 0, 0, 19, 20,
21, 0, 22, 23, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 24, 25, 0, 0, 0, 0,
0, 0, 26, 0, 0, 0, 0, 0, 0, 0,
27, 28, 29, 30, 31, 0, 32, 213, 33, 0,
0, 0, 0, 34, 35, 36, 37, 0, 0, 1,
2, 3, 4, 5, 6, 0, 38, 7, 8, 9,
10, 11, 12, 13, 14, 15, 16, 17, 18, 0,
0, 0, 19, 20, 21, 0, 22, 23, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 24, 25,
0, 0, 0, 0, 0, 0, 26, 0, 0, 0,
0, 0, 0, 0, 27, 28, 29, 30, 31, 0,
32, 223, 33, 0, 0, 0, 0, 34, 35, 36,
37, 0, 0, 1, 2, 3, 4, 5, 6, 0,
38, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 0, 0, 0, 19, 20, 21, 0,
22, 23, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 24, 25, 0, 0, 0, 0, 0, 0,
26, 0, 0, 0, 0, 0, 0, 0, 27, 28,
29, 30, 31, 0, 32, 297, 33, 0, 0, 0,
0, 34, 35, 36, 37, 0, 0, 1, 2, 3,
4, 5, 6, 0, 38, 7, 8, 9, 10, 11,
12, 13, 14, 15, 16, 17, 18, 0, 0, 0,
19, 20, 21, 0, 22, 23, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 24, 25, 0, 0,
0, 0, 0, 0, 26, 0, 0, 0, 0, 0,
0, 0, 27, 28, 29, 30, 31, 0, 32, 319,
33, 0, 0, 0, 0, 34, 35, 36, 37, 0,
0, 1, 2, 3, 4, 5, 6, 0, 38, 7,
8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 0, 0, 0, 19, 20, 21, 0, 22, 23,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
24, 25, 0, 0, 0, 0, 0, 0, 26, 0,
0, 0, 0, 0, 0, 0, 27, 28, 29, 30,
31, 0, 32, 0, 33, 0, 0, 0, 0, 34,
35, 36, 37, 0, 0, 1, 2, 3, 4, 5,
6, 0, 38, 7, 8, 9, 10, 84, 12, 13,
14, 15, 16, 17, 18, 0, 0, 0, 19, 20,
21, 0, 22, 23, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 24, 25, 0, 0, 0, 0,
0, 0, 26, 0, 0, 0, 0, 0, 0, 0,
27, 28, 29, 30, 31, 0, 32, 0, 33, 0,
0, 0, 0, 34, 35, 36, 37, 0, 0, 0,
0, 0, 0, 0, -126, 0, 38, -126, -126, -126,
-126, -126, -126, -126, -126, -126, -126, -126, -126, -126,
-126, -126, -126, -126, -126, -126, -126, -126, 0, 0,
-126, -126, -126, 0, -126, -126, 1, 2, 3, 4,
5, 0, 0, 0, 0, 8, 185, 0, 84, 0,
13, 14, 0, 16, 0, 0, 0, 0, 0, 19,
0, 0, -126, -126, -126, 0, 0, 0, -126, -126,
0, 0, 0, 0, 0, 24, 25, -126, -126, 0,
0, 0, 0, 26, 0, 0, 0, 0, 0, 0,
0, 85, 28, 29, 30, 31, 0, 86, 0, 33,
0, 0, 0, 0, 34, 35, 36, 37, 1, 2,
3, 4, 5, 0, 0, 0, 0, 8, 0, 0,
84, 0, 13, 14, 0, 16, 0, 0, 0, 0,
0, 19, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 24, 25, 0,
0, 0, 0, 0, 0, 26, 0, 0, 0, 0,
0, 0, 0, 85, 28, 29, 30, 31, 0, 86,
0, 33, 226, 0, 0, 0, 34, 35, 36, 37,
1, 2, 3, 4, 5, 0, 0, 0, 0, 8,
0, 0, 84, 0, 13, 14, 0, 16, 0, 0,
0, 0, 0, 19, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 24,
25, 0, 0, 0, 0, 0, 0, 26, 0, 0,
0, 0, 0, 0, 0, 85, 28, 29, 30, 31,
229, 86, 0, 33, 0, 0, 0, 0, 34, 35,
36, 37, 1, 2, 3, 4, 5, 0, 0, 0,
0, 8, 0, 0, 84, 0, 13, 14, 0, 16,
0, 0, 0, 0, 0, 19, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 24, 25, 0, 0, 0, 0, 0, 0, 26,
0, 0, 0, 0, 0, 0, 0, 85, 28, 29,
30, 31, 0, 86, 0, 33, 309, 0, 0, 0,
34, 35, 36, 37, 1, 2, 3, 4, 5, 0,
0, 0, 0, 8, 0, 0, 84, 0, 13, 14,
0, 16, 0, 0, 0, 0, 0, 19, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 24, 25, 0, 0, 0, 0, 0,
0, 26, 0, 0, 0, 0, 0, 0, 0, 85,
28, 29, 30, 31, 0, 86, 0, 33, 0, 0,
0, 0, 34, 35, 36, 37
};
static const short yycheck[] = { 17,
23, 0, 12, 78, 127, 1, 1, 1, 1, 44,
133, 1, 22, 13, 14, 265, 40, 1, 1, 19,
24, 31, 68, 68, 24, 25, 58, 58, 28, 29,
62, 154, 10, 62, 34, 35, 36, 37, 84, 84,
6, 7, 292, 64, 268, 62, 61, 69, 272, 124,
6, 7, 87, 13, 14, 178, 62, 180, 82, 19,
75, 76, 58, 58, 24, 25, 68, 317, 28, 29,
62, 194, 296, 83, 34, 35, 36, 37, 68, 83,
330, 58, 71, 72, 68, 68, 63, 65, 84, 84,
84, 84, 58, 103, 84, 105, 114, 107, 108, 222,
84, 84, 58, 62, 62, 24, 25, 66, 66, 65,
24, 70, 70, 3, 4, 5, 6, 7, 62, 38,
39, 63, 12, 83, 134, 15, 68, 137, 42, 43,
20, 42, 43, 47, 48, 49, 50, 51, 52, 53,
54, 55, 56, 57, 163, 164, 165, 166, 167, 168,
79, 34, 35, 36, 37, 155, 156, 157, 77, 78,
50, 284, 58, 286, 80, 63, 289, 63, 58, 83,
68, 61, 62, 81, 64, 63, 66, 63, 63, 63,
68, 63, 68, 68, 68, 308, 68, 65, 63, 63,
68, 41, 215, 68, 68, 155, 156, 157, 158, 159,
160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
170, 171, 172, 173, 174, 175, 176, 177, 83, 63,
42, 43, 62, 298, 68, 47, 48, 49, 50, 51,
52, 53, 54, 55, 56, 57, 63, 63, 44, 45,
46, 68, 68, 169, 170, 171, 172, 160, 161, 162,
173, 174, 175, 62, 264, 265, 274, 22, 276, 69,
278, 83, 32, 33, 69, 275, 67, 68, 67, 68,
68, 270, 67, 68, 68, 69, 69, 158, 159, 58,
290, 58, 292, 58, 68, 33, 64, 84, 62, 62,
58, 58, 64, 69, 24, 84, 23, 9, 316, 63,
69, 84, 320, 326, 314, 63, 69, 317, 63, 65,
328, 0, 322, 0, 221, 225, 8, 8, 176, 345,
330, 177, 185, 341, 197, 343, 344, 345, 262, 337,
348, 201, -1, 351, 352, 1, 324, 3, 4, 5,
6, 7, -1, -1, 216, -1, 12, -1, -1, 15,
-1, 17, 18, -1, 20, -1, -1, -1, -1, -1,
26, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 42, 43, -1, -1,
-1, -1, -1, -1, 50, -1, -1, -1, -1, -1,
-1, -1, 58, 59, 60, 61, 62, -1, 64, -1,
66, -1, -1, -1, -1, 71, 72, 73, 74, -1,
-1, 3, 4, 5, 6, 7, 8, -1, 84, 11,
12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
22, -1, -1, -1, 26, 27, 28, -1, 30, 31,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
42, 43, -1, -1, -1, -1, -1, -1, 50, -1,
-1, -1, -1, -1, -1, -1, 58, 59, 60, 61,
62, -1, 64, 65, 66, -1, -1, -1, -1, 71,
72, 73, 74, -1, -1, 3, 4, 5, 6, 7,
8, -1, 84, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, -1, -1, -1, 26, 27,
28, -1, 30, 31, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 42, 43, -1, -1, -1, -1,
-1, -1, 50, -1, -1, -1, -1, -1, -1, -1,
58, 59, 60, 61, 62, -1, 64, 65, 66, -1,
-1, -1, -1, 71, 72, 73, 74, -1, -1, 3,
4, 5, 6, 7, 8, -1, 84, 11, 12, 13,
14, 15, 16, 17, 18, 19, 20, 21, 22, -1,
-1, -1, 26, 27, 28, -1, 30, 31, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, 42, 43,
-1, -1, -1, -1, -1, -1, 50, -1, -1, -1,
-1, -1, -1, -1, 58, 59, 60, 61, 62, -1,
64, 65, 66, -1, -1, -1, -1, 71, 72, 73,
74, -1, -1, 3, 4, 5, 6, 7, 8, -1,
84, 11, 12, 13, 14, 15, 16, 17, 18, 19,
20, 21, 22, -1, -1, -1, 26, 27, 28, -1,
30, 31, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, 42, 43, -1, -1, -1, -1, -1, -1,
50, -1, -1, -1, -1, -1, -1, -1, 58, 59,
60, 61, 62, -1, 64, 65, 66, -1, -1, -1,
-1, 71, 72, 73, 74, -1, -1, 3, 4, 5,
6, 7, 8, -1, 84, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, -1, -1, -1,
26, 27, 28, -1, 30, 31, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, 42, 43, -1, -1,
-1, -1, -1, -1, 50, -1, -1, -1, -1, -1,
-1, -1, 58, 59, 60, 61, 62, -1, 64, 65,
66, -1, -1, -1, -1, 71, 72, 73, 74, -1,
-1, 3, 4, 5, 6, 7, 8, -1, 84, 11,
12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
22, -1, -1, -1, 26, 27, 28, -1, 30, 31,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
42, 43, -1, -1, -1, -1, -1, -1, 50, -1,
-1, -1, -1, -1, -1, -1, 58, 59, 60, 61,
62, -1, 64, -1, 66, -1, -1, -1, -1, 71,
72, 73, 74, -1, -1, 3, 4, 5, 6, 7,
8, -1, 84, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20, 21, 22, -1, -1, -1, 26, 27,
28, -1, 30, 31, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, 42, 43, -1, -1, -1, -1,
-1, -1, 50, -1, -1, -1, -1, -1, -1, -1,
58, 59, 60, 61, 62, -1, 64, -1, 66, -1,
-1, -1, -1, 71, 72, 73, 74, -1, -1, -1,
-1, -1, -1, -1, 0, -1, 84, 3, 4, 5,
6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, -1, -1,
26, 27, 28, -1, 30, 31, 3, 4, 5, 6,
7, -1, -1, -1, -1, 12, 13, -1, 15, -1,
17, 18, -1, 20, -1, -1, -1, -1, -1, 26,
-1, -1, 58, 59, 60, -1, -1, -1, 64, 65,
-1, -1, -1, -1, -1, 42, 43, 73, 74, -1,
-1, -1, -1, 50, -1, -1, -1, -1, -1, -1,
-1, 58, 59, 60, 61, 62, -1, 64, -1, 66,
-1, -1, -1, -1, 71, 72, 73, 74, 3, 4,
5, 6, 7, -1, -1, -1, -1, 12, -1, -1,
15, -1, 17, 18, -1, 20, -1, -1, -1, -1,
-1, 26, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, 42, 43, -1,
-1, -1, -1, -1, -1, 50, -1, -1, -1, -1,
-1, -1, -1, 58, 59, 60, 61, 62, -1, 64,
-1, 66, 67, -1, -1, -1, 71, 72, 73, 74,
3, 4, 5, 6, 7, -1, -1, -1, -1, 12,
-1, -1, 15, -1, 17, 18, -1, 20, -1, -1,
-1, -1, -1, 26, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, 42,
43, -1, -1, -1, -1, -1, -1, 50, -1, -1,
-1, -1, -1, -1, -1, 58, 59, 60, 61, 62,
63, 64, -1, 66, -1, -1, -1, -1, 71, 72,
73, 74, 3, 4, 5, 6, 7, -1, -1, -1,
-1, 12, -1, -1, 15, -1, 17, 18, -1, 20,
-1, -1, -1, -1, -1, 26, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, 42, 43, -1, -1, -1, -1, -1, -1, 50,
-1, -1, -1, -1, -1, -1, -1, 58, 59, 60,
61, 62, -1, 64, -1, 66, 67, -1, -1, -1,
71, 72, 73, 74, 3, 4, 5, 6, 7, -1,
-1, -1, -1, 12, -1, -1, 15, -1, 17, 18,
-1, 20, -1, -1, -1, -1, -1, 26, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, 42, 43, -1, -1, -1, -1, -1,
-1, 50, -1, -1, -1, -1, -1, -1, -1, 58,
59, 60, 61, 62, -1, 64, -1, 66, -1, -1,
-1, -1, 71, 72, 73, 74
};
#line 3 "/usr/share/bison.simple"
#ifndef YYSTACK_USE_ALLOCA
#ifdef alloca
#define YYSTACK_USE_ALLOCA
#else
#ifdef __GNUC__
#define YYSTACK_USE_ALLOCA
#define alloca __builtin_alloca
#else
#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
#define YYSTACK_USE_ALLOCA
#include <alloca.h>
#else
#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
#if 0
#include <malloc.h>
#endif
#else
#if defined(_AIX)
#pragma alloca
#define YYSTACK_USE_ALLOCA
#else
#if 0
#ifdef __hpux
#define YYSTACK_USE_ALLOCA
#define alloca __builtin_alloca
#endif
#endif
#endif
#endif
#endif
#endif
#endif
#endif
#ifdef YYSTACK_USE_ALLOCA
#define YYSTACK_ALLOC alloca
#else
#define YYSTACK_ALLOC malloc
#endif
#define yyerrok (yyerrstatus = 0)
#define yyclearin (yychar = YYEMPTY)
#define YYEMPTY -2
#define YYEOF 0
#define YYACCEPT goto yyacceptlab
#define YYABORT goto yyabortlab
#define YYERROR goto yyerrlab1
#define YYFAIL goto yyerrlab
#define YYRECOVERING() (!!yyerrstatus)
#define YYBACKUP(token, value) \
do \
if (yychar == YYEMPTY && yylen == 1) \
{ yychar = (token), yylval = (value); \
yychar1 = YYTRANSLATE (yychar); \
YYPOPSTACK; \
goto yybackup; \
} \
else \
{ yyerror ("syntax error: cannot back up"); YYERROR; } \
while (0)
#define YYTERROR 1
#define YYERRCODE 256
#ifndef YYPURE
#define YYLEX yylex()
#endif
#ifdef YYPURE
#ifdef YYLSP_NEEDED
#ifdef YYLEX_PARAM
#define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM)
#else
#define YYLEX yylex(&yylval, &yylloc)
#endif
#else
#ifdef YYLEX_PARAM
#define YYLEX yylex(&yylval, YYLEX_PARAM)
#else
#define YYLEX yylex(&yylval)
#endif
#endif
#endif
#ifndef YYPURE
int yychar;
YYSTYPE yylval;
#ifdef YYLSP_NEEDED
YYLTYPE yylloc;
#endif
int yynerrs;
#endif
#if YYDEBUG != 0
int yydebug;
#endif
#ifndef YYINITDEPTH
#define YYINITDEPTH 200
#endif
#if YYMAXDEPTH == 0
#undef YYMAXDEPTH
#endif
#ifndef YYMAXDEPTH
#define YYMAXDEPTH 10000
#endif
#if __GNUC__ > 1
#define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT)
#else
#ifndef __cplusplus
static void
__yy_memcpy (to, from, count)
char *to;
char *from;
unsigned int count;
{
register char *f = from;
register char *t = to;
register int i = count;
while (i-- > 0)
*t++ = *f++;
}
#else
static void
__yy_memcpy (char *to, char *from, unsigned int count)
{
register char *t = to;
register char *f = from;
register int i = count;
while (i-- > 0)
*t++ = *f++;
}
#endif
#endif
#line 217 "/usr/share/bison.simple"
#ifdef YYPARSE_PARAM
#ifdef __cplusplus
#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
#define YYPARSE_PARAM_DECL
#else
#define YYPARSE_PARAM_ARG YYPARSE_PARAM
#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
#endif
#else
#define YYPARSE_PARAM_ARG
#define YYPARSE_PARAM_DECL
#endif
#ifdef __GNUC__
#ifdef YYPARSE_PARAM
int yyparse (void *);
#else
int yyparse (void);
#endif
#endif
int
yyparse(YYPARSE_PARAM_ARG)
YYPARSE_PARAM_DECL
{
register int yystate;
register int yyn;
register short *yyssp;
register YYSTYPE *yyvsp;
int yyerrstatus;
int yychar1 = 0;
short yyssa[YYINITDEPTH];
YYSTYPE yyvsa[YYINITDEPTH];
short *yyss = yyssa;
YYSTYPE *yyvs = yyvsa;
#ifdef YYLSP_NEEDED
YYLTYPE yylsa[YYINITDEPTH];
YYLTYPE *yyls = yylsa;
YYLTYPE *yylsp;
#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
#else
#define YYPOPSTACK (yyvsp--, yyssp--)
#endif
int yystacksize = YYINITDEPTH;
int yyfree_stacks = 0;
#ifdef YYPURE
int yychar;
YYSTYPE yylval;
int yynerrs;
#ifdef YYLSP_NEEDED
YYLTYPE yylloc;
#endif
#endif
YYSTYPE yyval;
int yylen;
#if YYDEBUG != 0
if (yydebug)
fprintf(stderr, "Starting parse\n");
#endif
yystate = 0;
yyerrstatus = 0;
yynerrs = 0;
yychar = YYEMPTY;
yyssp = yyss - 1;
yyvsp = yyvs;
#ifdef YYLSP_NEEDED
yylsp = yyls;
#endif
yynewstate:
*++yyssp = yystate;
if (yyssp >= yyss + yystacksize - 1)
{
YYSTYPE *yyvs1 = yyvs;
short *yyss1 = yyss;
#ifdef YYLSP_NEEDED
YYLTYPE *yyls1 = yyls;
#endif
int size = yyssp - yyss + 1;
#ifdef yyoverflow
#ifdef YYLSP_NEEDED
yyoverflow("parser stack overflow",
&yyss1, size * sizeof (*yyssp),
&yyvs1, size * sizeof (*yyvsp),
&yyls1, size * sizeof (*yylsp),
&yystacksize);
#else
yyoverflow("parser stack overflow",
&yyss1, size * sizeof (*yyssp),
&yyvs1, size * sizeof (*yyvsp),
&yystacksize);
#endif
yyss = yyss1; yyvs = yyvs1;
#ifdef YYLSP_NEEDED
yyls = yyls1;
#endif
#else
if (yystacksize >= YYMAXDEPTH)
{
yyerror("parser stack overflow");
if (yyfree_stacks)
{
free (yyss);
free (yyvs);
#ifdef YYLSP_NEEDED
free (yyls);
#endif
}
return 2;
}
yystacksize *= 2;
if (yystacksize > YYMAXDEPTH)
yystacksize = YYMAXDEPTH;
#ifndef YYSTACK_USE_ALLOCA
yyfree_stacks = 1;
#endif
yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
__yy_memcpy ((char *)yyss, (char *)yyss1,
size * (unsigned int) sizeof (*yyssp));
yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
__yy_memcpy ((char *)yyvs, (char *)yyvs1,
size * (unsigned int) sizeof (*yyvsp));
#ifdef YYLSP_NEEDED
yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
__yy_memcpy ((char *)yyls, (char *)yyls1,
size * (unsigned int) sizeof (*yylsp));
#endif
#endif
yyssp = yyss + size - 1;
yyvsp = yyvs + size - 1;
#ifdef YYLSP_NEEDED
yylsp = yyls + size - 1;
#endif
#if YYDEBUG != 0
if (yydebug)
fprintf(stderr, "Stack size increased to %d\n", yystacksize);
#endif
if (yyssp >= yyss + yystacksize - 1)
YYABORT;
}
#if YYDEBUG != 0
if (yydebug)
fprintf(stderr, "Entering state %d\n", yystate);
#endif
goto yybackup;
yybackup:
yyn = yypact[yystate];
if (yyn == YYFLAG)
goto yydefault;
if (yychar == YYEMPTY)
{
#if YYDEBUG != 0
if (yydebug)
fprintf(stderr, "Reading a token: ");
#endif
yychar = YYLEX;
}
if (yychar <= 0)
{
yychar1 = 0;
yychar = YYEOF;
#if YYDEBUG != 0
if (yydebug)
fprintf(stderr, "Now at end of input.\n");
#endif
}
else
{
yychar1 = YYTRANSLATE(yychar);
#if YYDEBUG != 0
if (yydebug)
{
fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
#ifdef YYPRINT
YYPRINT (stderr, yychar, yylval);
#endif
fprintf (stderr, ")\n");
}
#endif
}
yyn += yychar1;
if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
goto yydefault;
yyn = yytable[yyn];
if (yyn < 0)
{
if (yyn == YYFLAG)
goto yyerrlab;
yyn = -yyn;
goto yyreduce;
}
else if (yyn == 0)
goto yyerrlab;
if (yyn == YYFINAL)
YYACCEPT;
#if YYDEBUG != 0
if (yydebug)
fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
#endif
if (yychar != YYEOF)
yychar = YYEMPTY;
*++yyvsp = yylval;
#ifdef YYLSP_NEEDED
*++yylsp = yylloc;
#endif
if (yyerrstatus) yyerrstatus--;
yystate = yyn;
goto yynewstate;
yydefault:
yyn = yydefact[yystate];
if (yyn == 0)
goto yyerrlab;
yyreduce:
yylen = yyr2[yyn];
if (yylen > 0)
yyval = yyvsp[1-yylen];
#if YYDEBUG != 0
if (yydebug)
{
int i;
fprintf (stderr, "Reducing via rule %d (line %d), ",
yyn, yyrline[yyn]);
for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
fprintf (stderr, "%s ", yytname[yyrhs[i]]);
fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
}
#endif
switch (yyn) {
case 1:
#line 166 "grammar.y"
{ yyval.node = new NullNode(); ;
break;}
case 2:
#line 167 "grammar.y"
{ yyval.node = new BooleanNode(true); ;
break;}
case 3:
#line 168 "grammar.y"
{ yyval.node = new BooleanNode(false); ;
break;}
case 4:
#line 169 "grammar.y"
{ yyval.node = new NumberNode(yyvsp[0].dval); ;
break;}
case 5:
#line 170 "grammar.y"
{ yyval.node = new StringNode(yyvsp[0].ustr); delete yyvsp[0].ustr; ;
break;}
case 6:
#line 171 "grammar.y"
{ Lexer *l = Lexer::curr();
if (!l->scanRegExp()) YYABORT;
yyval.node = new RegExpNode(l->pattern,l->flags);;
break;}
case 7:
#line 175 "grammar.y"
{ Lexer *l = Lexer::curr();
if (!l->scanRegExp()) YYABORT;
yyval.node = new RegExpNode(UString('=')+l->pattern,l->flags);;
break;}
case 8:
#line 181 "grammar.y"
{ yyval.node = new ThisNode(); ;
break;}
case 9:
#line 182 "grammar.y"
{ yyval.node = new ResolveNode(*yyvsp[0].ident);
delete yyvsp[0].ident; ;
break;}
case 12:
#line 186 "grammar.y"
{ yyval.node = new GroupNode(yyvsp[-1].node); ;
break;}
case 13:
#line 187 "grammar.y"
{ yyval.node = new ObjectLiteralNode(0L); ;
break;}
case 14:
#line 188 "grammar.y"
{ yyval.node = new ObjectLiteralNode(yyvsp[-1].plist); ;
break;}
case 15:
#line 192 "grammar.y"
{ yyval.node = new ArrayNode(yyvsp[-1].ival); ;
break;}
case 16:
#line 193 "grammar.y"
{ yyval.node = new ArrayNode(yyvsp[-1].elm); ;
break;}
case 17:
#line 194 "grammar.y"
{ yyval.node = new ArrayNode(yyvsp[-1].ival, yyvsp[-3].elm); ;
break;}
case 18:
#line 198 "grammar.y"
{ yyval.elm = new ElementNode(yyvsp[-1].ival, yyvsp[0].node); ;
break;}
case 19:
#line 200 "grammar.y"
{ yyval.elm = new ElementNode(yyvsp[-3].elm, yyvsp[-1].ival, yyvsp[0].node); ;
break;}
case 20:
#line 204 "grammar.y"
{ yyval.ival = 0; ;
break;}
case 22:
#line 209 "grammar.y"
{ yyval.ival = 1; ;
break;}
case 23:
#line 210 "grammar.y"
{ yyval.ival = yyvsp[-1].ival + 1; ;
break;}
case 24:
#line 214 "grammar.y"
{ yyval.plist = new PropertyValueNode(yyvsp[-2].pnode, yyvsp[0].node); ;
break;}
case 25:
#line 216 "grammar.y"
{ yyval.plist = new PropertyValueNode(yyvsp[-2].pnode, yyvsp[0].node, yyvsp[-4].plist); ;
break;}
case 26:
#line 220 "grammar.y"
{ yyval.pnode = new PropertyNode(*yyvsp[0].ident); delete yyvsp[0].ident; ;
break;}
case 27:
#line 221 "grammar.y"
{ yyval.pnode = new PropertyNode(Identifier(*yyvsp[0].ustr)); delete yyvsp[0].ustr; ;
break;}
case 28:
#line 222 "grammar.y"
{ yyval.pnode = new PropertyNode(yyvsp[0].dval); ;
break;}
case 31:
#line 228 "grammar.y"
{ yyval.node = new AccessorNode1(yyvsp[-3].node, yyvsp[-1].node); ;
break;}
case 32:
#line 229 "grammar.y"
{ yyval.node = new AccessorNode2(yyvsp[-2].node, *yyvsp[0].ident); delete yyvsp[0].ident; ;
break;}
case 33:
#line 230 "grammar.y"
{ yyval.node = new NewExprNode(yyvsp[-1].node, yyvsp[0].args); ;
break;}
case 35:
#line 235 "grammar.y"
{ yyval.node = new NewExprNode(yyvsp[0].node); ;
break;}
case 36:
#line 239 "grammar.y"
{ yyval.node = new FunctionCallNode(yyvsp[-1].node, yyvsp[0].args); ;
break;}
case 37:
#line 240 "grammar.y"
{ yyval.node = new FunctionCallNode(yyvsp[-1].node, yyvsp[0].args); ;
break;}
case 38:
#line 241 "grammar.y"
{ yyval.node = new AccessorNode1(yyvsp[-3].node, yyvsp[-1].node); ;
break;}
case 39:
#line 242 "grammar.y"
{ yyval.node = new AccessorNode2(yyvsp[-2].node, *yyvsp[0].ident);
delete yyvsp[0].ident; ;
break;}
case 40:
#line 247 "grammar.y"
{ yyval.args = new ArgumentsNode(0L); ;
break;}
case 41:
#line 248 "grammar.y"
{ yyval.args = new ArgumentsNode(yyvsp[-1].alist); ;
break;}
case 42:
#line 252 "grammar.y"
{ yyval.alist = new ArgumentListNode(yyvsp[0].node); ;
break;}
case 43:
#line 253 "grammar.y"
{ yyval.alist = new ArgumentListNode(yyvsp[-2].alist, yyvsp[0].node); ;
break;}
case 47:
#line 263 "grammar.y"
{ yyval.node = new PostfixNode(yyvsp[-1].node, OpPlusPlus); ;
break;}
case 48:
#line 264 "grammar.y"
{ yyval.node = new PostfixNode(yyvsp[-1].node, OpMinusMinus); ;
break;}
case 50:
#line 269 "grammar.y"
{ yyval.node = new DeleteNode(yyvsp[0].node); ;
break;}
case 51:
#line 270 "grammar.y"
{ yyval.node = new VoidNode(yyvsp[0].node); ;
break;}
case 52:
#line 271 "grammar.y"
{ yyval.node = new TypeOfNode(yyvsp[0].node); ;
break;}
case 53:
#line 272 "grammar.y"
{ yyval.node = new PrefixNode(OpPlusPlus, yyvsp[0].node); ;
break;}
case 54:
#line 273 "grammar.y"
{ yyval.node = new PrefixNode(OpPlusPlus, yyvsp[0].node); ;
break;}
case 55:
#line 274 "grammar.y"
{ yyval.node = new PrefixNode(OpMinusMinus, yyvsp[0].node); ;
break;}
case 56:
#line 275 "grammar.y"
{ yyval.node = new PrefixNode(OpMinusMinus, yyvsp[0].node); ;
break;}
case 57:
#line 276 "grammar.y"
{ yyval.node = new UnaryPlusNode(yyvsp[0].node); ;
break;}
case 58:
#line 277 "grammar.y"
{ yyval.node = new NegateNode(yyvsp[0].node); ;
break;}
case 59:
#line 278 "grammar.y"
{ yyval.node = new BitwiseNotNode(yyvsp[0].node); ;
break;}
case 60:
#line 279 "grammar.y"
{ yyval.node = new LogicalNotNode(yyvsp[0].node); ;
break;}
case 62:
#line 284 "grammar.y"
{ yyval.node = new MultNode(yyvsp[-2].node, yyvsp[0].node, '*'); ;
break;}
case 63:
#line 285 "grammar.y"
{ yyval.node = new MultNode(yyvsp[-2].node, yyvsp[0].node, '/'); ;
break;}
case 64:
#line 286 "grammar.y"
{ yyval.node = new MultNode(yyvsp[-2].node,yyvsp[0].node,'%'); ;
break;}
case 66:
#line 291 "grammar.y"
{ yyval.node = new AddNode(yyvsp[-2].node, yyvsp[0].node, '+'); ;
break;}
case 67:
#line 292 "grammar.y"
{ yyval.node = new AddNode(yyvsp[-2].node, yyvsp[0].node, '-'); ;
break;}
case 69:
#line 297 "grammar.y"
{ yyval.node = new ShiftNode(yyvsp[-2].node, OpLShift, yyvsp[0].node); ;
break;}
case 70:
#line 298 "grammar.y"
{ yyval.node = new ShiftNode(yyvsp[-2].node, OpRShift, yyvsp[0].node); ;
break;}
case 71:
#line 299 "grammar.y"
{ yyval.node = new ShiftNode(yyvsp[-2].node, OpURShift, yyvsp[0].node); ;
break;}
case 73:
#line 305 "grammar.y"
{ yyval.node = new RelationalNode(yyvsp[-2].node, OpLess, yyvsp[0].node); ;
break;}
case 74:
#line 307 "grammar.y"
{ yyval.node = new RelationalNode(yyvsp[-2].node, OpGreater, yyvsp[0].node); ;
break;}
case 75:
#line 309 "grammar.y"
{ yyval.node = new RelationalNode(yyvsp[-2].node, OpLessEq, yyvsp[0].node); ;
break;}
case 76:
#line 311 "grammar.y"
{ yyval.node = new RelationalNode(yyvsp[-2].node, OpGreaterEq, yyvsp[0].node); ;
break;}
case 77:
#line 313 "grammar.y"
{ yyval.node = new RelationalNode(yyvsp[-2].node, OpInstanceOf, yyvsp[0].node); ;
break;}
case 78:
#line 315 "grammar.y"
{ yyval.node = new RelationalNode(yyvsp[-2].node, OpIn, yyvsp[0].node); ;
break;}
case 80:
#line 320 "grammar.y"
{ yyval.node = new EqualNode(yyvsp[-2].node, OpEqEq, yyvsp[0].node); ;
break;}
case 81:
#line 321 "grammar.y"
{ yyval.node = new EqualNode(yyvsp[-2].node, OpNotEq, yyvsp[0].node); ;
break;}
case 82:
#line 322 "grammar.y"
{ yyval.node = new EqualNode(yyvsp[-2].node, OpStrEq, yyvsp[0].node); ;
break;}
case 83:
#line 323 "grammar.y"
{ yyval.node = new EqualNode(yyvsp[-2].node, OpStrNEq, yyvsp[0].node);;
break;}
case 85:
#line 328 "grammar.y"
{ yyval.node = new BitOperNode(yyvsp[-2].node, OpBitAnd, yyvsp[0].node); ;
break;}
case 87:
#line 333 "grammar.y"
{ yyval.node = new BitOperNode(yyvsp[-2].node, OpBitXOr, yyvsp[0].node); ;
break;}
case 89:
#line 338 "grammar.y"
{ yyval.node = new BitOperNode(yyvsp[-2].node, OpBitOr, yyvsp[0].node); ;
break;}
case 91:
#line 344 "grammar.y"
{ yyval.node = new BinaryLogicalNode(yyvsp[-2].node, OpAnd, yyvsp[0].node); ;
break;}
case 93:
#line 350 "grammar.y"
{ yyval.node = new BinaryLogicalNode(yyvsp[-2].node, OpOr, yyvsp[0].node); ;
break;}
case 95:
#line 356 "grammar.y"
{ yyval.node = new ConditionalNode(yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node); ;
break;}
case 97:
#line 362 "grammar.y"
{ yyval.node = new AssignNode(yyvsp[-2].node, yyvsp[-1].op, yyvsp[0].node);;
break;}
case 98:
#line 366 "grammar.y"
{ yyval.op = OpEqual; ;
break;}
case 99:
#line 367 "grammar.y"
{ yyval.op = OpPlusEq; ;
break;}
case 100:
#line 368 "grammar.y"
{ yyval.op = OpMinusEq; ;
break;}
case 101:
#line 369 "grammar.y"
{ yyval.op = OpMultEq; ;
break;}
case 102:
#line 370 "grammar.y"
{ yyval.op = OpDivEq; ;
break;}
case 103:
#line 371 "grammar.y"
{ yyval.op = OpLShift; ;
break;}
case 104:
#line 372 "grammar.y"
{ yyval.op = OpRShift; ;
break;}
case 105:
#line 373 "grammar.y"
{ yyval.op = OpURShift; ;
break;}
case 106:
#line 374 "grammar.y"
{ yyval.op = OpAndEq; ;
break;}
case 107:
#line 375 "grammar.y"
{ yyval.op = OpXOrEq; ;
break;}
case 108:
#line 376 "grammar.y"
{ yyval.op = OpOrEq; ;
break;}
case 109:
#line 377 "grammar.y"
{ yyval.op = OpModEq; ;
break;}
case 111:
#line 382 "grammar.y"
{ yyval.node = new CommaNode(yyvsp[-2].node, yyvsp[0].node); ;
break;}
case 126:
#line 403 "grammar.y"
{ yyval.stat = new BlockNode(0L); DBG(yyval.stat, yylsp[0], yylsp[0]); ;
break;}
case 127:
#line 404 "grammar.y"
{ yyval.stat = new BlockNode(yyvsp[-1].srcs); DBG(yyval.stat, yylsp[0], yylsp[0]); ;
break;}
case 128:
#line 408 "grammar.y"
{ yyval.slist = new StatListNode(yyvsp[0].stat); ;
break;}
case 129:
#line 409 "grammar.y"
{ yyval.slist = new StatListNode(yyvsp[-1].slist, yyvsp[0].stat); ;
break;}
case 130:
#line 413 "grammar.y"
{ yyval.stat = new VarStatementNode(yyvsp[-1].vlist);
DBG(yyval.stat, yylsp[-2], yylsp[0]); ;
break;}
case 131:
#line 415 "grammar.y"
{ if (automatic()) {
yyval.stat = new VarStatementNode(yyvsp[-1].vlist);
DBG(yyval.stat, yylsp[-2], yylsp[-1]);
} else {
YYABORT;
}
;
break;}
case 132:
#line 425 "grammar.y"
{ yyval.vlist = new VarDeclListNode(yyvsp[0].decl); ;
break;}
case 133:
#line 427 "grammar.y"
{ yyval.vlist = new VarDeclListNode(yyvsp[-2].vlist, yyvsp[0].decl); ;
break;}
case 134:
#line 431 "grammar.y"
{ yyval.decl = new VarDeclNode(*yyvsp[0].ident, 0); delete yyvsp[0].ident; ;
break;}
case 135:
#line 432 "grammar.y"
{ yyval.decl = new VarDeclNode(*yyvsp[-1].ident, yyvsp[0].init); delete yyvsp[-1].ident; ;
break;}
case 136:
#line 436 "grammar.y"
{ yyval.init = new AssignExprNode(yyvsp[0].node); ;
break;}
case 137:
#line 440 "grammar.y"
{ yyval.stat = new EmptyStatementNode(); ;
break;}
case 138:
#line 444 "grammar.y"
{ yyval.stat = new ExprStatementNode(yyvsp[-1].node);
DBG(yyval.stat, yylsp[-1], yylsp[0]); ;
break;}
case 139:
#line 446 "grammar.y"
{ if (automatic()) {
yyval.stat = new ExprStatementNode(yyvsp[-1].node);
DBG(yyval.stat, yylsp[-1], yylsp[-1]);
} else
YYABORT; ;
break;}
case 140:
#line 454 "grammar.y"
{ yyval.stat = new IfNode(yyvsp[-2].node,yyvsp[0].stat,0L);DBG(yyval.stat,yylsp[-4],yylsp[-1]); ;
break;}
case 141:
#line 456 "grammar.y"
{ yyval.stat = new IfNode(yyvsp[-4].node,yyvsp[-2].stat,yyvsp[0].stat);DBG(yyval.stat,yylsp[-6],yylsp[-3]); ;
break;}
case 142:
#line 460 "grammar.y"
{ yyval.stat=new DoWhileNode(yyvsp[-4].stat,yyvsp[-1].node);DBG(yyval.stat,yylsp[-5],yylsp[-3]);;
break;}
case 143:
#line 461 "grammar.y"
{ yyval.stat = new WhileNode(yyvsp[-2].node,yyvsp[0].stat);DBG(yyval.stat,yylsp[-4],yylsp[-1]); ;
break;}
case 144:
#line 463 "grammar.y"
{ yyval.stat = new ForNode(yyvsp[-6].node,yyvsp[-4].node,yyvsp[-2].node,yyvsp[0].stat);
DBG(yyval.stat,yylsp[-8],yylsp[-1]); ;
break;}
case 145:
#line 466 "grammar.y"
{ yyval.stat = new ForNode(yyvsp[-6].vlist,yyvsp[-4].node,yyvsp[-2].node,yyvsp[0].stat);
DBG(yyval.stat,yylsp[-9],yylsp[-1]); ;
break;}
case 146:
#line 469 "grammar.y"
{ yyval.stat = new ForInNode(yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].stat);
DBG(yyval.stat,yylsp[-6],yylsp[-1]); ;
break;}
case 147:
#line 472 "grammar.y"
{ yyval.stat = new ForInNode(*yyvsp[-4].ident,0L,yyvsp[-2].node,yyvsp[0].stat);
DBG(yyval.stat,yylsp[-7],yylsp[-1]);
delete yyvsp[-4].ident; ;
break;}
case 148:
#line 476 "grammar.y"
{ yyval.stat = new ForInNode(*yyvsp[-5].ident,yyvsp[-4].init,yyvsp[-2].node,yyvsp[0].stat);
DBG(yyval.stat,yylsp[-8],yylsp[-1]);
delete yyvsp[-5].ident; ;
break;}
case 149:
#line 482 "grammar.y"
{ yyval.node = 0L; ;
break;}
case 151:
#line 487 "grammar.y"
{ yyval.stat = new ContinueNode(); DBG(yyval.stat,yylsp[-1],yylsp[0]); ;
break;}
case 152:
#line 488 "grammar.y"
{ if (automatic()) {
yyval.stat = new ContinueNode(); DBG(yyval.stat,yylsp[-1],yylsp[0]);
} else
YYABORT; ;
break;}
case 153:
#line 492 "grammar.y"
{ yyval.stat = new ContinueNode(*yyvsp[-1].ident); DBG(yyval.stat,yylsp[-2],yylsp[0]);
delete yyvsp[-1].ident; ;
break;}
case 154:
#line 494 "grammar.y"
{ if (automatic()) {
yyval.stat = new ContinueNode(*yyvsp[-1].ident);DBG(yyval.stat,yylsp[-2],yylsp[-1]);
delete yyvsp[-1].ident;
} else
YYABORT; ;
break;}
case 155:
#line 502 "grammar.y"
{ yyval.stat = new BreakNode();DBG(yyval.stat,yylsp[-1],yylsp[0]); ;
break;}
case 156:
#line 503 "grammar.y"
{ if (automatic()) {
yyval.stat = new BreakNode(); DBG(yyval.stat,yylsp[-1],yylsp[-1]);
} else
YYABORT; ;
break;}
case 157:
#line 507 "grammar.y"
{ yyval.stat = new BreakNode(*yyvsp[-1].ident); DBG(yyval.stat,yylsp[-2],yylsp[0]);
delete yyvsp[-1].ident; ;
break;}
case 158:
#line 509 "grammar.y"
{ if (automatic()) {
yyval.stat = new BreakNode(*yyvsp[-1].ident); DBG(yyval.stat,yylsp[-2],yylsp[-1]);
delete yyvsp[-1].ident;
} else
YYABORT;
;
break;}
case 159:
#line 518 "grammar.y"
{ yyval.stat = new ReturnNode(0L); DBG(yyval.stat,yylsp[-1],yylsp[0]); ;
break;}
case 160:
#line 519 "grammar.y"
{ if (automatic()) {
yyval.stat = new ReturnNode(0L); DBG(yyval.stat,yylsp[-1],yylsp[-1]);
} else
YYABORT; ;
break;}
case 161:
#line 523 "grammar.y"
{ yyval.stat = new ReturnNode(yyvsp[-1].node); ;
break;}
case 162:
#line 524 "grammar.y"
{ if (automatic())
yyval.stat = new ReturnNode(yyvsp[-1].node);
else
YYABORT; ;
break;}
case 163:
#line 531 "grammar.y"
{ yyval.stat = new WithNode(yyvsp[-2].node,yyvsp[0].stat);
DBG(yyval.stat, yylsp[-4], yylsp[-1]); ;
break;}
case 164:
#line 536 "grammar.y"
{ yyval.stat = new SwitchNode(yyvsp[-2].node, yyvsp[0].cblk);
DBG(yyval.stat, yylsp[-4], yylsp[-1]); ;
break;}
case 165:
#line 541 "grammar.y"
{ yyval.cblk = new CaseBlockNode(yyvsp[-1].clist, 0L, 0L); ;
break;}
case 166:
#line 543 "grammar.y"
{ yyval.cblk = new CaseBlockNode(yyvsp[-3].clist, yyvsp[-2].ccl, yyvsp[-1].clist); ;
break;}
case 167:
#line 547 "grammar.y"
{ yyval.clist = 0L; ;
break;}
case 169:
#line 552 "grammar.y"
{ yyval.clist = new ClauseListNode(yyvsp[0].ccl); ;
break;}
case 170:
#line 553 "grammar.y"
{ yyval.clist = new ClauseListNode(yyvsp[-1].clist, yyvsp[0].ccl); ;
break;}
case 171:
#line 557 "grammar.y"
{ yyval.ccl = new CaseClauseNode(yyvsp[-1].node, 0L); ;
break;}
case 172:
#line 558 "grammar.y"
{ yyval.ccl = new CaseClauseNode(yyvsp[-2].node, yyvsp[0].slist); ;
break;}
case 173:
#line 562 "grammar.y"
{ yyval.ccl = new CaseClauseNode(0L, 0L);; ;
break;}
case 174:
#line 563 "grammar.y"
{ yyval.ccl = new CaseClauseNode(0L, yyvsp[0].slist); ;
break;}
case 175:
#line 567 "grammar.y"
{ yyvsp[0].stat->pushLabel(*yyvsp[-2].ident);
yyval.stat = new LabelNode(*yyvsp[-2].ident, yyvsp[0].stat);
delete yyvsp[-2].ident; ;
break;}
case 176:
#line 573 "grammar.y"
{ yyval.stat = new ThrowNode(yyvsp[-1].node); ;
break;}
case 177:
#line 577 "grammar.y"
{ yyval.stat = new TryNode(yyvsp[-1].stat, yyvsp[0].node); ;
break;}
case 178:
#line 578 "grammar.y"
{ yyval.stat = new TryNode(yyvsp[-1].stat, 0L, yyvsp[0].node); ;
break;}
case 179:
#line 579 "grammar.y"
{ yyval.stat = new TryNode(yyvsp[-2].stat, yyvsp[-1].node, yyvsp[0].node); ;
break;}
case 180:
#line 583 "grammar.y"
{ yyval.node = new CatchNode(*yyvsp[-2].ident, yyvsp[0].stat); delete yyvsp[-2].ident; ;
break;}
case 181:
#line 587 "grammar.y"
{ yyval.node = new FinallyNode(yyvsp[0].stat); ;
break;}
case 182:
#line 591 "grammar.y"
{ yyval.func = new FuncDeclNode(*yyvsp[-3].ident, 0L, yyvsp[0].body);
delete yyvsp[-3].ident; ;
break;}
case 183:
#line 594 "grammar.y"
{ yyval.func = new FuncDeclNode(*yyvsp[-4].ident, yyvsp[-2].param, yyvsp[0].body);
delete yyvsp[-4].ident; ;
break;}
case 184:
#line 598 "grammar.y"
{ yyval.node = new FuncExprNode(0L, yyvsp[0].body); ;
break;}
case 185:
#line 600 "grammar.y"
{ yyval.node = new FuncExprNode(yyvsp[-2].param, yyvsp[0].body); ;
break;}
case 186:
#line 605 "grammar.y"
{ yyval.param = new ParameterNode(*yyvsp[0].ident); delete yyvsp[0].ident; ;
break;}
case 187:
#line 606 "grammar.y"
{ yyval.param = new ParameterNode(yyvsp[-2].param, *yyvsp[0].ident); delete yyvsp[0].ident; ;
break;}
case 188:
#line 610 "grammar.y"
{ yyval.body = new FunctionBodyNode(0L);
DBG(yyval.body, yylsp[-1], yylsp[0]);;
break;}
case 189:
#line 612 "grammar.y"
{ yyval.body = new FunctionBodyNode(yyvsp[-1].srcs);
DBG(yyval.body, yylsp[-2], yylsp[0]);;
break;}
case 190:
#line 617 "grammar.y"
{ yyval.prog = new ProgramNode(0L);
Parser::progNode = yyval.prog; ;
break;}
case 191:
#line 619 "grammar.y"
{ yyval.prog = new ProgramNode(yyvsp[0].srcs);
Parser::progNode = yyval.prog; ;
break;}
case 192:
#line 624 "grammar.y"
{ yyval.srcs = new SourceElementsNode(yyvsp[0].stat); ;
break;}
case 193:
#line 625 "grammar.y"
{ yyval.srcs = new SourceElementsNode(yyvsp[-1].srcs, yyvsp[0].stat); ;
break;}
case 194:
#line 629 "grammar.y"
{ yyval.stat = yyvsp[0].stat; ;
break;}
case 195:
#line 630 "grammar.y"
{ yyval.stat = yyvsp[0].func; ;
break;}
}
#line 543 "/usr/share/bison.simple"
yyvsp -= yylen;
yyssp -= yylen;
#ifdef YYLSP_NEEDED
yylsp -= yylen;
#endif
#if YYDEBUG != 0
if (yydebug)
{
short *ssp1 = yyss - 1;
fprintf (stderr, "state stack now");
while (ssp1 != yyssp)
fprintf (stderr, " %d", *++ssp1);
fprintf (stderr, "\n");
}
#endif
*++yyvsp = yyval;
#ifdef YYLSP_NEEDED
yylsp++;
if (yylen == 0)
{
yylsp->first_line = yylloc.first_line;
yylsp->first_column = yylloc.first_column;
yylsp->last_line = (yylsp-1)->last_line;
yylsp->last_column = (yylsp-1)->last_column;
yylsp->text = 0;
}
else
{
yylsp->last_line = (yylsp+yylen-1)->last_line;
yylsp->last_column = (yylsp+yylen-1)->last_column;
}
#endif
yyn = yyr1[yyn];
yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
yystate = yytable[yystate];
else
yystate = yydefgoto[yyn - YYNTBASE];
goto yynewstate;
yyerrlab:
if (! yyerrstatus)
{
++yynerrs;
#ifdef YYERROR_VERBOSE
yyn = yypact[yystate];
if (yyn > YYFLAG && yyn < YYLAST)
{
int size = 0;
char *msg;
int x, count;
count = 0;
for (x = (yyn < 0 ? -yyn : 0);
x < (sizeof(yytname) / sizeof(char *)); x++)
if (yycheck[x + yyn] == x)
size += strlen(yytname[x]) + 15, count++;
msg = (char *) malloc(size + 15);
if (msg != 0)
{
strcpy(msg, "parse error");
if (count < 5)
{
count = 0;
for (x = (yyn < 0 ? -yyn : 0);
x < (sizeof(yytname) / sizeof(char *)); x++)
if (yycheck[x + yyn] == x)
{
strcat(msg, count == 0 ? ", expecting `" : " or `");
strcat(msg, yytname[x]);
strcat(msg, "'");
count++;
}
}
yyerror(msg);
free(msg);
}
else
yyerror ("parse error; also virtual memory exceeded");
}
else
#endif
yyerror("parse error");
}
goto yyerrlab1;
yyerrlab1:
if (yyerrstatus == 3)
{
if (yychar == YYEOF)
YYABORT;
#if YYDEBUG != 0
if (yydebug)
fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
#endif
yychar = YYEMPTY;
}
yyerrstatus = 3;
goto yyerrhandle;
yyerrdefault:
#if 0
yyn = yydefact[yystate];
if (yyn) goto yydefault;
#endif
yyerrpop:
if (yyssp == yyss) YYABORT;
yyvsp--;
yystate = *--yyssp;
#ifdef YYLSP_NEEDED
yylsp--;
#endif
#if YYDEBUG != 0
if (yydebug)
{
short *ssp1 = yyss - 1;
fprintf (stderr, "Error: state stack now");
while (ssp1 != yyssp)
fprintf (stderr, " %d", *++ssp1);
fprintf (stderr, "\n");
}
#endif
yyerrhandle:
yyn = yypact[yystate];
if (yyn == YYFLAG)
goto yyerrdefault;
yyn += YYTERROR;
if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
goto yyerrdefault;
yyn = yytable[yyn];
if (yyn < 0)
{
if (yyn == YYFLAG)
goto yyerrpop;
yyn = -yyn;
goto yyreduce;
}
else if (yyn == 0)
goto yyerrpop;
if (yyn == YYFINAL)
YYACCEPT;
#if YYDEBUG != 0
if (yydebug)
fprintf(stderr, "Shifting error token, ");
#endif
*++yyvsp = yylval;
#ifdef YYLSP_NEEDED
*++yylsp = yylloc;
#endif
yystate = yyn;
goto yynewstate;
yyacceptlab:
if (yyfree_stacks)
{
free (yyss);
free (yyvs);
#ifdef YYLSP_NEEDED
free (yyls);
#endif
}
return 0;
yyabortlab:
if (yyfree_stacks)
{
free (yyss);
free (yyvs);
#ifdef YYLSP_NEEDED
free (yyls);
#endif
}
return 1;
}
#line 633 "grammar.y"
int yyerror (const char *)
{
return 1;
}
bool automatic()
{
if (yychar == '}' || yychar == 0)
return true;
else if (Lexer::curr()->prevTerminator())
return true;
return false;
}