00001
00002
00003
00004 #define YYBISON 1
00005
00006 #define yyparse kjsyyparse
00007 #define yylex kjsyylex
00008 #define yyerror kjsyyerror
00009 #define yylval kjsyylval
00010 #define yychar kjsyychar
00011 #define yydebug kjsyydebug
00012 #define yynerrs kjsyynerrs
00013 #define YYLSP_NEEDED 1
00014
00015 # define NULLTOKEN 257
00016 # define TRUETOKEN 258
00017 # define FALSETOKEN 259
00018 # define STRING 260
00019 # define NUMBER 261
00020 # define BREAK 262
00021 # define CASE 263
00022 # define DEFAULT 264
00023 # define FOR 265
00024 # define NEW 266
00025 # define VAR 267
00026 # define CONST 268
00027 # define CONTINUE 269
00028 # define FUNCTION 270
00029 # define RETURN 271
00030 # define VOID 272
00031 # define DELETE 273
00032 # define IF 274
00033 # define THIS 275
00034 # define DO 276
00035 # define WHILE 277
00036 # define ELSE 278
00037 # define IN 279
00038 # define INSTANCEOF 280
00039 # define TYPEOF 281
00040 # define SWITCH 282
00041 # define WITH 283
00042 # define RESERVED 284
00043 # define THROW 285
00044 # define TRY 286
00045 # define CATCH 287
00046 # define FINALLY 288
00047 # define EQEQ 289
00048 # define NE 290
00049 # define STREQ 291
00050 # define STRNEQ 292
00051 # define LE 293
00052 # define GE 294
00053 # define OR 295
00054 # define AND 296
00055 # define PLUSPLUS 297
00056 # define MINUSMINUS 298
00057 # define LSHIFT 299
00058 # define RSHIFT 300
00059 # define URSHIFT 301
00060 # define PLUSEQUAL 302
00061 # define MINUSEQUAL 303
00062 # define MULTEQUAL 304
00063 # define DIVEQUAL 305
00064 # define LSHIFTEQUAL 306
00065 # define RSHIFTEQUAL 307
00066 # define URSHIFTEQUAL 308
00067 # define ANDEQUAL 309
00068 # define MODEQUAL 310
00069 # define XOREQUAL 311
00070 # define OREQUAL 312
00071 # define IDENT 313
00072 # define AUTOPLUSPLUS 314
00073 # define AUTOMINUSMINUS 315
00074
00075 #line 1 "grammar.y"
00076
00077
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098 #ifdef HAVE_CONFIG_H
00099 #include <config.h>
00100 #endif
00101 #include <string.h>
00102 #include <stdlib.h>
00103 #include "value.h"
00104 #include "object.h"
00105 #include "types.h"
00106 #include "interpreter.h"
00107 #include "nodes.h"
00108 #include "lexer.h"
00109 #include "internal.h"
00110
00111
00112 #define YYDEBUG 0
00113 #define YYMAXDEPTH 0
00114 #define YYERROR_VERBOSE
00115 #define DBG(l, s, e) { l->setLoc(s.first_line, e.last_line, Parser::source); } // location
00116
00117 extern int yylex();
00118 static int yyerror (const char *);
00119 static bool automatic();
00120
00121 using namespace KJS;
00122
00123
00124 #line 50 "grammar.y"
00125 #ifndef YYSTYPE
00126 typedef union {
00127 int ival;
00128 double dval;
00129 UString *ustr;
00130 Identifier *ident;
00131 Node *node;
00132 StatementNode *stat;
00133 ParameterNode *param;
00134 FunctionBodyNode *body;
00135 FuncDeclNode *func;
00136 FunctionBodyNode *prog;
00137 AssignExprNode *init;
00138 SourceElementsNode *srcs;
00139 StatListNode *slist;
00140 ArgumentsNode *args;
00141 ArgumentListNode *alist;
00142 VarDeclNode *decl;
00143 VarDeclListNode *vlist;
00144 CaseBlockNode *cblk;
00145 ClauseListNode *clist;
00146 CaseClauseNode *ccl;
00147 ElementNode *elm;
00148 Operator op;
00149 PropertyValueNode *plist;
00150 PropertyNode *pnode;
00151 CatchNode *cnode;
00152 FinallyNode *fnode;
00153 VarStatementNode::Type vtype;
00154 } yystype;
00155 # define YYSTYPE yystype
00156 # define YYSTYPE_IS_TRIVIAL 1
00157 #endif
00158
00159 #ifndef YYLTYPE
00160 typedef struct yyltype
00161 {
00162 int first_line;
00163 int first_column;
00164
00165 int last_line;
00166 int last_column;
00167 } yyltype;
00168
00169 # define YYLTYPE yyltype
00170 # define YYLTYPE_IS_TRIVIAL 1
00171 #endif
00172
00173 #ifndef YYDEBUG
00174 # define YYDEBUG 0
00175 #endif
00176
00177
00178
00179 #define YYFINAL 364
00180 #define YYFLAG -32768
00181 #define YYNTBASE 86
00182
00183
00184 #define YYTRANSLATE(x) ((unsigned)(x) <= 315 ? yytranslate[x] : 152)
00185
00186
00187 static const char yytranslate[] =
00188 {
00189 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00190 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00191 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00192 2, 2, 2, 75, 2, 2, 2, 77, 80, 2,
00193 63, 64, 76, 72, 69, 73, 71, 62, 2, 2,
00194 2, 2, 2, 2, 2, 2, 2, 2, 70, 85,
00195 78, 84, 79, 83, 2, 2, 2, 2, 2, 2,
00196 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00197 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00198 2, 67, 2, 68, 81, 2, 2, 2, 2, 2,
00199 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00200 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00201 2, 2, 2, 65, 82, 66, 74, 2, 2, 2,
00202 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00203 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00204 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00205 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00206 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00207 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00208 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00209 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00210 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00211 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00212 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00213 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00214 2, 2, 2, 2, 2, 2, 1, 3, 4, 5,
00215 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
00216 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
00217 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
00218 36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
00219 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
00220 56, 57, 58, 59, 60, 61
00221 };
00222
00223 #if YYDEBUG
00224 static const short yyprhs[] =
00225 {
00226 0, 0, 2, 4, 6, 8, 10, 12, 14, 16,
00227 18, 20, 22, 26, 29, 33, 37, 41, 47, 50,
00228 55, 56, 58, 60, 63, 67, 73, 75, 77, 79,
00229 81, 83, 88, 92, 96, 98, 101, 104, 107, 112,
00230 116, 119, 123, 125, 129, 131, 133, 135, 138, 141,
00231 143, 146, 149, 152, 155, 158, 161, 164, 167, 170,
00232 173, 176, 178, 182, 186, 190, 192, 196, 200, 202,
00233 206, 210, 214, 216, 220, 224, 228, 232, 236, 240,
00234 242, 246, 250, 254, 258, 260, 264, 266, 270, 272,
00235 276, 278, 282, 284, 288, 290, 296, 298, 302, 304,
00236 306, 308, 310, 312, 314, 316, 318, 320, 322, 324,
00237 326, 328, 332, 334, 336, 338, 340, 342, 344, 346,
00238 348, 350, 352, 354, 356, 358, 360, 363, 367, 369,
00239 372, 374, 376, 380, 384, 386, 390, 392, 395, 398,
00240 400, 403, 406, 412, 420, 427, 433, 443, 454, 462,
00241 471, 481, 482, 484, 487, 490, 494, 498, 501, 504,
00242 508, 512, 515, 518, 522, 526, 532, 538, 542, 548,
00243 549, 551, 553, 556, 560, 565, 568, 572, 576, 580,
00244 584, 588, 592, 597, 603, 606, 608, 611, 617, 624,
00245 629, 635, 637, 641, 644, 648, 649, 651, 653, 656,
00246 658
00247 };
00248 static const short yyrhs[] =
00249 {
00250 3, 0, 4, 0, 5, 0, 7, 0, 6, 0,
00251 62, 0, 51, 0, 21, 0, 59, 0, 86, 0,
00252 88, 0, 63, 115, 64, 0, 65, 66, 0, 65,
00253 92, 66, 0, 67, 90, 68, 0, 67, 89, 68,
00254 0, 67, 89, 69, 90, 68, 0, 90, 113, 0,
00255 89, 69, 90, 113, 0, 0, 91, 0, 69, 0,
00256 91, 69, 0, 93, 70, 113, 0, 92, 69, 93,
00257 70, 113, 0, 59, 0, 6, 0, 7, 0, 87,
00258 0, 146, 0, 94, 67, 115, 68, 0, 94, 71,
00259 59, 0, 12, 94, 97, 0, 94, 0, 12, 95,
00260 0, 94, 97, 0, 96, 97, 0, 96, 67, 115,
00261 68, 0, 96, 71, 59, 0, 63, 64, 0, 63,
00262 98, 64, 0, 113, 0, 98, 69, 113, 0, 95,
00263 0, 96, 0, 99, 0, 99, 43, 0, 99, 44,
00264 0, 100, 0, 19, 101, 0, 18, 101, 0, 27,
00265 101, 0, 43, 101, 0, 60, 101, 0, 44, 101,
00266 0, 61, 101, 0, 72, 101, 0, 73, 101, 0,
00267 74, 101, 0, 75, 101, 0, 101, 0, 102, 76,
00268 101, 0, 102, 62, 101, 0, 102, 77, 101, 0,
00269 102, 0, 103, 72, 102, 0, 103, 73, 102, 0,
00270 103, 0, 104, 45, 103, 0, 104, 46, 103, 0,
00271 104, 47, 103, 0, 104, 0, 105, 78, 104, 0,
00272 105, 79, 104, 0, 105, 39, 104, 0, 105, 40,
00273 104, 0, 105, 26, 104, 0, 105, 25, 104, 0,
00274 105, 0, 106, 35, 105, 0, 106, 36, 105, 0,
00275 106, 37, 105, 0, 106, 38, 105, 0, 106, 0,
00276 107, 80, 106, 0, 107, 0, 108, 81, 107, 0,
00277 108, 0, 109, 82, 108, 0, 109, 0, 110, 42,
00278 109, 0, 110, 0, 111, 41, 110, 0, 111, 0,
00279 111, 83, 113, 70, 113, 0, 112, 0, 99, 114,
00280 113, 0, 84, 0, 48, 0, 49, 0, 50, 0,
00281 51, 0, 52, 0, 53, 0, 54, 0, 55, 0,
00282 57, 0, 58, 0, 56, 0, 113, 0, 115, 69,
00283 113, 0, 117, 0, 120, 0, 124, 0, 125, 0,
00284 126, 0, 127, 0, 129, 0, 130, 0, 131, 0,
00285 132, 0, 133, 0, 139, 0, 140, 0, 141, 0,
00286 65, 66, 0, 65, 150, 66, 0, 116, 0, 118,
00287 116, 0, 13, 0, 14, 0, 119, 121, 85, 0,
00288 119, 121, 1, 0, 122, 0, 121, 69, 122, 0,
00289 59, 0, 59, 123, 0, 84, 113, 0, 85, 0,
00290 115, 85, 0, 115, 1, 0, 20, 63, 115, 64,
00291 116, 0, 20, 63, 115, 64, 116, 24, 116, 0,
00292 22, 116, 23, 63, 115, 64, 0, 23, 63, 115,
00293 64, 116, 0, 11, 63, 128, 85, 128, 85, 128,
00294 64, 116, 0, 11, 63, 13, 121, 85, 128, 85,
00295 128, 64, 116, 0, 11, 63, 99, 25, 115, 64,
00296 116, 0, 11, 63, 13, 59, 25, 115, 64, 116,
00297 0, 11, 63, 13, 59, 123, 25, 115, 64, 116,
00298 0, 0, 115, 0, 15, 85, 0, 15, 1, 0,
00299 15, 59, 85, 0, 15, 59, 1, 0, 8, 85,
00300 0, 8, 1, 0, 8, 59, 85, 0, 8, 59,
00301 1, 0, 17, 85, 0, 17, 1, 0, 17, 115,
00302 85, 0, 17, 115, 1, 0, 29, 63, 115, 64,
00303 116, 0, 28, 63, 115, 64, 134, 0, 65, 135,
00304 66, 0, 65, 135, 138, 135, 66, 0, 0, 136,
00305 0, 137, 0, 136, 137, 0, 9, 115, 70, 0,
00306 9, 115, 70, 118, 0, 10, 70, 0, 10, 70,
00307 118, 0, 59, 70, 116, 0, 31, 115, 85, 0,
00308 31, 115, 1, 0, 32, 117, 142, 0, 32, 117,
00309 143, 0, 32, 117, 142, 143, 0, 33, 63, 59,
00310 64, 117, 0, 34, 117, 0, 145, 0, 18, 145,
00311 0, 16, 59, 63, 64, 148, 0, 16, 59, 63,
00312 147, 64, 148, 0, 16, 63, 64, 148, 0, 16,
00313 63, 147, 64, 148, 0, 59, 0, 147, 69, 59,
00314 0, 65, 66, 0, 65, 150, 66, 0, 0, 150,
00315 0, 151, 0, 150, 151, 0, 116, 0, 144, 0
00316 };
00317
00318 #endif
00319
00320 #if YYDEBUG
00321
00322 static const short yyrline[] =
00323 {
00324 0, 167, 169, 170, 171, 172, 173, 176, 182, 184,
00325 185, 186, 187, 188, 189, 192, 194, 195, 198, 200,
00326 204, 206, 209, 211, 214, 216, 220, 222, 223, 226,
00327 228, 229, 230, 231, 234, 236, 239, 241, 242, 243,
00328 246, 248, 251, 253, 256, 258, 261, 263, 264, 267,
00329 269, 270, 271, 272, 273, 274, 275, 276, 277, 278,
00330 279, 282, 284, 285, 286, 289, 291, 292, 295, 297,
00331 298, 299, 302, 304, 306, 308, 310, 312, 314, 318,
00332 320, 321, 322, 323, 326, 328, 331, 333, 336, 338,
00333 341, 343, 347, 349, 353, 355, 359, 361, 365, 367,
00334 368, 369, 370, 371, 372, 373, 374, 375, 376, 377,
00335 380, 382, 385, 387, 388, 389, 390, 391, 392, 393,
00336 394, 395, 396, 397, 398, 399, 402, 404, 407, 409,
00337 412, 414, 417, 420, 429, 431, 435, 437, 440, 444,
00338 448, 451, 458, 460, 464, 466, 467, 470, 473, 476,
00339 479, 484, 486, 489, 491, 495, 496, 502, 504, 508,
00340 509, 516, 518, 522, 523, 530, 535, 540, 542, 546,
00341 548, 551, 553, 556, 558, 561, 563, 566, 571, 573,
00342 579, 581, 582, 585, 590, 594, 597, 600, 602, 606,
00343 608, 613, 615, 618, 621, 625, 629, 633, 635, 638,
00344 640
00345 };
00346 #endif
00347
00348
00349 #if (YYDEBUG) || defined YYERROR_VERBOSE
00350
00351
00352 static const char *const yytname[] =
00353 {
00354 "$", "error", "$undefined.", "NULLTOKEN", "TRUETOKEN", "FALSETOKEN",
00355 "STRING", "NUMBER", "BREAK", "CASE", "DEFAULT", "FOR", "NEW", "VAR",
00356 "CONST", "CONTINUE", "FUNCTION", "RETURN", "VOID", "DELETE", "IF",
00357 "THIS", "DO", "WHILE", "ELSE", "IN", "INSTANCEOF", "TYPEOF", "SWITCH",
00358 "WITH", "RESERVED", "THROW", "TRY", "CATCH", "FINALLY", "EQEQ", "NE",
00359 "STREQ", "STRNEQ", "LE", "GE", "OR", "AND", "PLUSPLUS", "MINUSMINUS",
00360 "LSHIFT", "RSHIFT", "URSHIFT", "PLUSEQUAL", "MINUSEQUAL", "MULTEQUAL",
00361 "DIVEQUAL", "LSHIFTEQUAL", "RSHIFTEQUAL", "URSHIFTEQUAL", "ANDEQUAL",
00362 "MODEQUAL", "XOREQUAL", "OREQUAL", "IDENT", "AUTOPLUSPLUS",
00363 "AUTOMINUSMINUS", "'/'", "'('", "')'", "'{'", "'}'", "'['", "']'",
00364 "','", "':'", "'.'", "'+'", "'-'", "'~'", "'!'", "'*'", "'%'", "'<'",
00365 "'>'", "'&'", "'^'", "'|'", "'?'", "'='", "';'", "Literal",
00366 "PrimaryExpr", "ArrayLiteral", "ElementList", "ElisionOpt", "Elision",
00367 "PropertyNameAndValueList", "PropertyName", "MemberExpr", "NewExpr",
00368 "CallExpr", "Arguments", "ArgumentList", "LeftHandSideExpr",
00369 "PostfixExpr", "UnaryExpr", "MultiplicativeExpr", "AdditiveExpr",
00370 "ShiftExpr", "RelationalExpr", "EqualityExpr", "BitwiseANDExpr",
00371 "BitwiseXORExpr", "BitwiseORExpr", "LogicalANDExpr", "LogicalORExpr",
00372 "ConditionalExpr", "AssignmentExpr", "AssignmentOperator", "Expr",
00373 "Statement", "Block", "StatementList", "Var", "VariableStatement",
00374 "VariableDeclarationList", "VariableDeclaration", "Initializer",
00375 "EmptyStatement", "ExprStatement", "IfStatement", "IterationStatement",
00376 "ExprOpt", "ContinueStatement", "BreakStatement", "ReturnStatement",
00377 "WithStatement", "SwitchStatement", "CaseBlock", "CaseClausesOpt",
00378 "CaseClauses", "CaseClause", "DefaultClause", "LabelledStatement",
00379 "ThrowStatement", "TryStatement", "Catch", "Finally",
00380 "FunctionDeclaration", "FunctionDeclarationInternal", "FunctionExpr",
00381 "FormalParameterList", "FunctionBody", "Program", "SourceElements",
00382 "SourceElement", 0
00383 };
00384 #endif
00385
00386
00387 static const short yyr1[] =
00388 {
00389 0, 86, 86, 86, 86, 86, 86, 86, 87, 87,
00390 87, 87, 87, 87, 87, 88, 88, 88, 89, 89,
00391 90, 90, 91, 91, 92, 92, 93, 93, 93, 94,
00392 94, 94, 94, 94, 95, 95, 96, 96, 96, 96,
00393 97, 97, 98, 98, 99, 99, 100, 100, 100, 101,
00394 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
00395 101, 102, 102, 102, 102, 103, 103, 103, 104, 104,
00396 104, 104, 105, 105, 105, 105, 105, 105, 105, 106,
00397 106, 106, 106, 106, 107, 107, 108, 108, 109, 109,
00398 110, 110, 111, 111, 112, 112, 113, 113, 114, 114,
00399 114, 114, 114, 114, 114, 114, 114, 114, 114, 114,
00400 115, 115, 116, 116, 116, 116, 116, 116, 116, 116,
00401 116, 116, 116, 116, 116, 116, 117, 117, 118, 118,
00402 119, 119, 120, 120, 121, 121, 122, 122, 123, 124,
00403 125, 125, 126, 126, 127, 127, 127, 127, 127, 127,
00404 127, 128, 128, 129, 129, 129, 129, 130, 130, 130,
00405 130, 131, 131, 131, 131, 132, 133, 134, 134, 135,
00406 135, 136, 136, 137, 137, 138, 138, 139, 140, 140,
00407 141, 141, 141, 142, 143, 144, 144, 145, 145, 146,
00408 146, 147, 147, 148, 148, 149, 149, 150, 150, 151,
00409 151
00410 };
00411
00412
00413 static const short yyr2[] =
00414 {
00415 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00416 1, 1, 3, 2, 3, 3, 3, 5, 2, 4,
00417 0, 1, 1, 2, 3, 5, 1, 1, 1, 1,
00418 1, 4, 3, 3, 1, 2, 2, 2, 4, 3,
00419 2, 3, 1, 3, 1, 1, 1, 2, 2, 1,
00420 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
00421 2, 1, 3, 3, 3, 1, 3, 3, 1, 3,
00422 3, 3, 1, 3, 3, 3, 3, 3, 3, 1,
00423 3, 3, 3, 3, 1, 3, 1, 3, 1, 3,
00424 1, 3, 1, 3, 1, 5, 1, 3, 1, 1,
00425 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
00426 1, 3, 1, 1, 1, 1, 1, 1, 1, 1,
00427 1, 1, 1, 1, 1, 1, 2, 3, 1, 2,
00428 1, 1, 3, 3, 1, 3, 1, 2, 2, 1,
00429 2, 2, 5, 7, 6, 5, 9, 10, 7, 8,
00430 9, 0, 1, 2, 2, 3, 3, 2, 2, 3,
00431 3, 2, 2, 3, 3, 5, 5, 3, 5, 0,
00432 1, 1, 2, 3, 4, 2, 3, 3, 3, 3,
00433 3, 3, 4, 5, 2, 1, 2, 5, 6, 4,
00434 5, 1, 3, 2, 3, 0, 1, 1, 2, 1,
00435 1
00436 };
00437
00438
00439
00440
00441 static const short yydefact[] =
00442 {
00443 195, 1, 2, 3, 5, 4, 0, 0, 0, 130,
00444 131, 0, 0, 0, 0, 0, 0, 8, 0, 0,
00445 0, 0, 0, 0, 0, 0, 0, 7, 9, 0,
00446 0, 6, 0, 0, 20, 0, 0, 0, 0, 139,
00447 10, 29, 11, 34, 44, 45, 46, 49, 61, 65,
00448 68, 72, 79, 84, 86, 88, 90, 92, 94, 96,
00449 110, 0, 199, 112, 0, 113, 114, 115, 116, 117,
00450 118, 119, 120, 121, 122, 123, 124, 125, 200, 185,
00451 30, 196, 197, 158, 0, 157, 151, 0, 9, 0,
00452 34, 35, 154, 0, 153, 0, 0, 162, 0, 161,
00453 0, 46, 51, 186, 50, 0, 0, 0, 52, 0,
00454 0, 0, 0, 0, 53, 55, 0, 54, 56, 0,
00455 5, 4, 9, 13, 0, 0, 0, 22, 0, 0,
00456 21, 57, 58, 59, 60, 0, 0, 0, 36, 0,
00457 0, 37, 47, 48, 99, 100, 101, 102, 103, 104,
00458 105, 106, 109, 107, 108, 98, 0, 0, 0, 0,
00459 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00460 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00461 0, 141, 0, 140, 136, 0, 134, 198, 160, 159,
00462 0, 46, 152, 0, 27, 28, 26, 13, 33, 156,
00463 155, 0, 191, 0, 0, 164, 163, 0, 0, 0,
00464 0, 0, 179, 178, 126, 0, 0, 180, 181, 177,
00465 12, 14, 0, 0, 127, 16, 20, 15, 18, 23,
00466 40, 0, 42, 0, 32, 0, 39, 97, 63, 62,
00467 64, 66, 67, 69, 70, 71, 78, 77, 75, 76,
00468 73, 74, 80, 81, 82, 83, 85, 87, 89, 91,
00469 93, 0, 111, 0, 137, 133, 0, 132, 136, 0,
00470 0, 151, 0, 0, 0, 189, 0, 0, 0, 0,
00471 0, 0, 0, 0, 184, 182, 0, 24, 0, 41,
00472 0, 31, 38, 0, 138, 135, 0, 137, 151, 0,
00473 0, 187, 0, 193, 0, 190, 192, 142, 0, 145,
00474 169, 166, 165, 0, 0, 17, 19, 43, 95, 0,
00475 0, 0, 0, 151, 188, 194, 0, 144, 0, 0,
00476 170, 171, 0, 25, 0, 0, 151, 148, 0, 143,
00477 0, 0, 167, 169, 172, 183, 149, 0, 0, 0,
00478 173, 175, 0, 150, 0, 146, 128, 174, 176, 168,
00479 147, 129, 0, 0, 0
00480 };
00481
00482 static const short yydefgoto[] =
00483 {
00484 40, 41, 42, 128, 129, 130, 124, 125, 43, 44,
00485 45, 138, 231, 46, 47, 48, 49, 50, 51, 52,
00486 53, 54, 55, 56, 57, 58, 59, 60, 156, 61,
00487 62, 63, 357, 64, 65, 185, 186, 264, 66, 67,
00488 68, 69, 193, 70, 71, 72, 73, 74, 311, 329,
00489 330, 331, 343, 75, 76, 77, 217, 218, 78, 79,
00490 80, 204, 275, 362, 126, 82
00491 };
00492
00493 static const short yypact[] =
00494 {
00495 713,-32768,-32768,-32768,-32768,-32768, 6, -40, 123,-32768,
00496 -32768, 7, -14, 228, 1198, 1271, -17,-32768, 788, -7,
00497 1271, 9, 15, 1271, -5, 1271, 1271,-32768, 25, 1271,
00498 1271,-32768, 1271, 338, 41, 1271, 1271, 1271, 1271,-32768,
00499 -32768,-32768,-32768, 48,-32768, 49, 959,-32768,-32768, -22,
00500 59, 191, 11, 183, 45, 64, 78, 127, -3,-32768,
00501 -32768, 8,-32768,-32768, 117,-32768,-32768,-32768,-32768,-32768,
00502 -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
00503 -32768, 713,-32768,-32768, 21,-32768, 906, 118,-32768, 55,
00504 48,-32768,-32768, 28,-32768, 124, 23,-32768, 1271,-32768,
00505 12, 99,-32768,-32768,-32768, 1271, 166, 1271,-32768, 1271,
00506 1271, 16, 413, 145,-32768,-32768, 788,-32768,-32768, 53,
00507 122, 160, 25, 871, -34, 169, 488,-32768, 115, 979,
00508 125,-32768,-32768,-32768,-32768, 1052, 1271, 186,-32768, 1271,
00509 189,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
00510 -32768,-32768,-32768,-32768,-32768,-32768, 1271, 1271, 1271, 1271,
00511 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271,
00512 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271, 1271,
00513 1271,-32768, 1271,-32768, 168, 17,-32768,-32768,-32768,-32768,
00514 199, 1304, 190, 176,-32768,-32768,-32768,-32768,-32768,-32768,
00515 -32768, 40,-32768, 198, 54,-32768,-32768, 69, 202, 77,
00516 92, 93,-32768,-32768,-32768, 203, -5, 233,-32768,-32768,
00517 -32768,-32768, 35, 1271,-32768,-32768, 41,-32768,-32768,-32768,
00518 -32768, 94,-32768, 159,-32768, 182,-32768,-32768,-32768,-32768,
00519 -32768, -22, -22, 59, 59, 59, 191, 191, 191, 191,
00520 191, 191, 11, 11, 11, 11, 183, 45, 64, 78,
00521 127, 200,-32768, 1271,-32768,-32768, 117,-32768, -1, -38,
00522 1271, 1271, 198, 95, 563,-32768, 198, 214, 788, 1271,
00523 788, 209, 788, 216,-32768,-32768, 208,-32768, 1125,-32768,
00524 1271,-32768,-32768, 1271,-32768,-32768, 1271, 255, 1271, 102,
00525 196,-32768, 198,-32768, 638,-32768,-32768, 258, 104,-32768,
00526 274,-32768,-32768, 220, 1271,-32768,-32768,-32768,-32768, 108,
00527 1271, 201, 788, 1271,-32768,-32768, 788,-32768, 1271, 4,
00528 274,-32768, -5,-32768, 788, 111, 1271,-32768, 221,-32768,
00529 184, 222,-32768, 274,-32768,-32768,-32768, 788, 234, 788,
00530 788, 788, 231,-32768, 788,-32768,-32768, 788, 788,-32768,
00531 -32768,-32768, 299, 305,-32768
00532 };
00533
00534 static const short yypgoto[] =
00535 {
00536 -32768,-32768,-32768,-32768, 80,-32768,-32768, 85, 302, 303,
00537 -32768, -11,-32768, 38,-32768, -10, 96, 79, -15, 51,
00538 137, 138, 140, 141, 136,-32768,-32768, -123,-32768, -2,
00539 -18, -23, -31,-32768,-32768, 132, 57, 56,-32768,-32768,
00540 -32768,-32768, -227,-32768,-32768,-32768,-32768,-32768,-32768, -16,
00541 -32768, 0,-32768,-32768,-32768,-32768,-32768, 120,-32768, 311,
00542 -32768, 134, -233,-32768, 2, -78
00543 };
00544
00545
00546 #define YYLAST 1388
00547
00548
00549 static const short yytable[] =
00550 {
00551 106, 113, 81, 187, 102, 104, 228, 83, 92, 181,
00552 108, 100, 232, 205, 341, 114, 115, 212, 265, 117,
00553 118, 111, 188, 86, 296, 131, 132, 133, 134, 199,
00554 119, 266, 221, 237, 141, 222, 165, 166, 179, 301,
00555 157, 194, 195, 305, 300, 95, 105, 298, 187, 96,
00556 167, 168, 101, 101, 158, 159, 107, 261, 101, 262,
00557 112, 194, 195, 101, 101, 84, 93, 101, 101, 324,
00558 342, 321, 109, 101, 101, 101, 101, 182, 110, 198,
00559 180, 182, 202, 263, 192, 182, 266, 203, 102, 169,
00560 170, 85, 94, 183, 196, 116, 338, 206, 219, 202,
00561 287, 213, 267, 207, 272, 209, 189, 210, 211, 348,
00562 127, 135, 135, 200, 196, 136, 139, 220, 276, 137,
00563 140, 197, 182, 277, 191, 175, 1, 2, 3, 4,
00564 5, 160, 161, 278, 233, 8, 101, 235, 182, 87,
00565 294, 280, 142, 143, 17, 176, 182, 238, 239, 240,
00566 246, 247, 248, 249, 250, 251, 281, 282, 289, 302,
00567 177, 182, 182, 290, 277, 316, 322, 317, 327, 178,
00568 318, 182, 334, 182, 27, 347, 184, 182, 215, 216,
00569 182, 96, 88, 225, 226, 31, 32, 201, 89, 208,
00570 34, 333, -27, 284, 229, 101, 101, 101, 101, 101,
00571 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
00572 101, 101, 101, 101, 101, 101, 101, 101, 171, 172,
00573 173, 174, 252, 253, 254, 255, 187, 291, 182, 97,
00574 -28, 1, 2, 3, 4, 5, 162, 163, 164, 223,
00575 8, 243, 244, 245, 87, 234, 98, 15, 236, 17,
00576 292, 182, 263, 182, 350, 20, 241, 242, 268, 182,
00577 307, 271, 309, 274, 312, 279, 283, 216, 299, 192,
00578 293, 25, 26, 306, 310, 313, 304, 308, 314, 27,
00579 320, 323, 326, 328, 332, 349, 336, 88, 29, 30,
00580 31, 32, 351, 89, 319, 34, 192, 359, 354, 363,
00581 35, 36, 37, 38, 337, 364, 288, 286, 339, 345,
00582 90, 91, 256, 99, 257, 260, 346, 258, 335, 259,
00583 358, 192, 269, 295, 297, 103, 340, 352, 0, 353,
00584 344, 355, 356, 356, 192, 273, 360, 285, 0, 361,
00585 361, 1, 2, 3, 120, 121, 6, 0, 0, 7,
00586 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
00587 18, 19, 0, 0, 0, 20, 21, 22, 0, 23,
00588 24, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00589 0, 25, 26, 0, 0, 0, 0, 0, 0, 27,
00590 0, 0, 0, 0, 0, 0, 0, 122, 29, 30,
00591 31, 32, 0, 33, 123, 34, 0, 0, 0, 0,
00592 35, 36, 37, 38, 0, 0, 1, 2, 3, 4,
00593 5, 6, 0, 39, 7, 8, 9, 10, 11, 12,
00594 13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
00595 20, 21, 22, 0, 23, 24, 0, 0, 0, 0,
00596 0, 0, 0, 0, 0, 0, 25, 26, 0, 0,
00597 0, 0, 0, 0, 27, 0, 0, 0, 0, 0,
00598 0, 0, 28, 29, 30, 31, 32, 0, 33, 214,
00599 34, 0, 0, 0, 0, 35, 36, 37, 38, 0,
00600 0, 1, 2, 3, 4, 5, 6, 0, 39, 7,
00601 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
00602 18, 19, 0, 0, 0, 20, 21, 22, 0, 23,
00603 24, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00604 0, 25, 26, 0, 0, 0, 0, 0, 0, 27,
00605 0, 0, 0, 0, 0, 0, 0, 28, 29, 30,
00606 31, 32, 0, 33, 224, 34, 0, 0, 0, 0,
00607 35, 36, 37, 38, 0, 0, 1, 2, 3, 4,
00608 5, 6, 0, 39, 7, 8, 9, 10, 11, 12,
00609 13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
00610 20, 21, 22, 0, 23, 24, 0, 0, 0, 0,
00611 0, 0, 0, 0, 0, 0, 25, 26, 0, 0,
00612 0, 0, 0, 0, 27, 0, 0, 0, 0, 0,
00613 0, 0, 28, 29, 30, 31, 32, 0, 33, 303,
00614 34, 0, 0, 0, 0, 35, 36, 37, 38, 0,
00615 0, 1, 2, 3, 4, 5, 6, 0, 39, 7,
00616 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
00617 18, 19, 0, 0, 0, 20, 21, 22, 0, 23,
00618 24, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00619 0, 25, 26, 0, 0, 0, 0, 0, 0, 27,
00620 0, 0, 0, 0, 0, 0, 0, 28, 29, 30,
00621 31, 32, 0, 33, 325, 34, 0, 0, 0, 0,
00622 35, 36, 37, 38, 0, 0, 1, 2, 3, 4,
00623 5, 6, 0, 39, 7, 8, 9, 10, 11, 12,
00624 13, 14, 15, 16, 17, 18, 19, 0, 0, 0,
00625 20, 21, 22, 0, 23, 24, 0, 0, 0, 0,
00626 0, 0, 0, 0, 0, 0, 25, 26, 0, 0,
00627 0, 0, 0, 0, 27, 0, 0, 0, 0, 0,
00628 0, 0, 28, 29, 30, 31, 32, 0, 33, 0,
00629 34, 0, 0, 0, 0, 35, 36, 37, 38, 0,
00630 0, 1, 2, 3, 4, 5, 6, 0, 39, 7,
00631 8, 9, 10, 11, 87, 13, 98, 15, 16, 17,
00632 18, 19, 0, 0, 0, 20, 21, 22, 0, 23,
00633 24, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00634 0, 25, 26, 0, 0, 0, 0, 0, 0, 27,
00635 0, 0, 0, 0, 0, 0, 0, 28, 29, 30,
00636 31, 32, 0, 33, 0, 34, 0, 0, 0, 0,
00637 35, 36, 37, 38, 0, 0, 0, 0, 0, 0,
00638 0, -126, 0, 39, -126, -126, -126, -126, -126, -126,
00639 -126, -126, -126, -126, -126, -126, -126, -126, -126, -126,
00640 -126, -126, -126, -126, -126, -126, 0, 0, -126, -126,
00641 -126, 0, -126, -126, 0, 0, 0, 0, 0, 1,
00642 2, 3, 4, 5, 0, 0, 0, 0, 8, 190,
00643 0, 0, 87, 0, 98, 15, 0, 17, 0, 0,
00644 -126, -126, -126, 20, 0, 0, -126, -126, 0, 0,
00645 0, 0, 0, 0, 0, -126, -126, 0, 0, 25,
00646 26, 0, 0, 0, 0, 0, 0, 27, 0, 0,
00647 0, 0, 0, 0, 0, 88, 29, 30, 31, 32,
00648 0, 89, 0, 34, 0, 0, 0, 0, 35, 36,
00649 37, 38, 1, 2, 3, 4, 5, 0, 0, 0,
00650 0, 8, 0, 0, 0, 87, 0, 98, 15, 0,
00651 17, 0, 142, 143, 0, 0, 20, 144, 145, 146,
00652 147, 148, 149, 150, 151, 152, 153, 154, 0, 0,
00653 0, 0, 25, 26, 0, 0, 0, 0, 0, 0,
00654 27, 0, 0, 0, 0, 0, 0, 0, 88, 29,
00655 30, 31, 32, 155, 89, 0, 34, 227, 0, 0,
00656 0, 35, 36, 37, 38, 1, 2, 3, 4, 5,
00657 0, 0, 0, 0, 8, 0, 0, 0, 87, 0,
00658 98, 15, 0, 17, 0, 0, 0, 0, 0, 20,
00659 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00660 0, 0, 0, 0, 0, 25, 26, 0, 0, 0,
00661 0, 0, 0, 27, 0, 0, 0, 0, 0, 0,
00662 0, 88, 29, 30, 31, 32, 230, 89, 0, 34,
00663 0, 0, 0, 0, 35, 36, 37, 38, 1, 2,
00664 3, 4, 5, 0, 0, 0, 0, 8, 0, 0,
00665 0, 87, 0, 98, 15, 0, 17, 0, 0, 0,
00666 0, 0, 20, 0, 0, 0, 0, 0, 0, 0,
00667 0, 0, 0, 0, 0, 0, 0, 0, 25, 26,
00668 0, 0, 0, 0, 0, 0, 27, 0, 0, 0,
00669 0, 0, 0, 0, 88, 29, 30, 31, 32, 0,
00670 89, 0, 34, 315, 0, 0, 0, 35, 36, 37,
00671 38, 1, 2, 3, 4, 5, 0, 0, 0, 0,
00672 8, 0, 0, 0, 12, 0, 98, 15, 0, 17,
00673 0, 0, 0, 0, 0, 20, 0, 0, 0, 0,
00674 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00675 0, 25, 26, 0, 0, 0, 0, 0, 0, 27,
00676 0, 0, 0, 0, 0, 0, 0, 88, 29, 30,
00677 31, 32, 0, 89, 0, 34, 0, 0, 0, 0,
00678 35, 36, 37, 38, 1, 2, 3, 4, 5, 0,
00679 0, 0, 0, 8, 0, 0, 0, 87, 0, 98,
00680 15, 0, 17, 0, 0, 0, 0, 0, 20, 0,
00681 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00682 0, 0, 0, 0, 25, 26, 0, 0, 0, 0,
00683 0, 0, 27, 0, 0, 0, 0, 0, 0, 270,
00684 88, 29, 30, 31, 32, 0, 89, 0, 34, 0,
00685 0, 0, 0, 35, 36, 37, 38, 142, 143, 0,
00686 0, 0, 144, 145, 146, 147, 148, 149, 150, 151,
00687 152, 153, 154, 0, 0, 0, 0, 0, 0, 0,
00688 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
00689 0, 0, 0, 0, 0, 0, 0, 0, 155
00690 };
00691
00692 static const short yycheck[] =
00693 {
00694 18, 24, 0, 81, 14, 15, 129, 1, 1, 1,
00695 20, 13, 135, 1, 10, 25, 26, 1, 1, 29,
00696 30, 23, 1, 63, 25, 35, 36, 37, 38, 1,
00697 32, 69, 66, 156, 45, 69, 25, 26, 41, 272,
00698 62, 6, 7, 276, 271, 59, 63, 85, 126, 63,
00699 39, 40, 14, 15, 76, 77, 63, 180, 20, 182,
00700 65, 6, 7, 25, 26, 59, 59, 29, 30, 302,
00701 66, 298, 63, 35, 36, 37, 38, 69, 63, 90,
00702 83, 69, 59, 84, 86, 69, 69, 64, 98, 78,
00703 79, 85, 85, 85, 59, 70, 323, 85, 116, 59,
00704 223, 85, 85, 105, 64, 107, 85, 109, 110, 336,
00705 69, 63, 63, 85, 59, 67, 67, 64, 64, 71,
00706 71, 66, 69, 69, 86, 80, 3, 4, 5, 6,
00707 7, 72, 73, 64, 136, 12, 98, 139, 69, 16,
00708 263, 64, 43, 44, 21, 81, 69, 157, 158, 159,
00709 165, 166, 167, 168, 169, 170, 64, 64, 64, 64,
00710 82, 69, 69, 69, 69, 288, 64, 290, 64, 42,
00711 293, 69, 64, 69, 51, 64, 59, 69, 33, 34,
00712 69, 63, 59, 68, 69, 62, 63, 63, 65, 23,
00713 67, 314, 70, 216, 69, 157, 158, 159, 160, 161,
00714 162, 163, 164, 165, 166, 167, 168, 169, 170, 171,
00715 172, 173, 174, 175, 176, 177, 178, 179, 35, 36,
00716 37, 38, 171, 172, 173, 174, 304, 68, 69, 1,
00717 70, 3, 4, 5, 6, 7, 45, 46, 47, 70,
00718 12, 162, 163, 164, 16, 59, 18, 19, 59, 21,
00719 68, 69, 84, 69, 70, 27, 160, 161, 59, 69,
00720 278, 85, 280, 65, 282, 63, 63, 34, 270, 271,
00721 70, 43, 44, 59, 65, 59, 274, 279, 70, 51,
00722 25, 85, 24, 9, 64, 64, 85, 59, 60, 61,
00723 62, 63, 70, 65, 296, 67, 298, 66, 64, 0,
00724 72, 73, 74, 75, 322, 0, 226, 222, 326, 332,
00725 8, 8, 175, 85, 176, 179, 334, 177, 320, 178,
00726 351, 323, 190, 266, 268, 14, 328, 343, -1, 347,
00727 330, 349, 350, 351, 336, 201, 354, 217, -1, 357,
00728 358, 3, 4, 5, 6, 7, 8, -1, -1, 11,
00729 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
00730 22, 23, -1, -1, -1, 27, 28, 29, -1, 31,
00731 32, -1, -1, -1, -1, -1, -1, -1, -1, -1,
00732 -1, 43, 44, -1, -1, -1, -1, -1, -1, 51,
00733 -1, -1, -1, -1, -1, -1, -1, 59, 60, 61,
00734 62, 63, -1, 65, 66, 67, -1, -1, -1, -1,
00735 72, 73, 74, 75, -1, -1, 3, 4, 5, 6,
00736 7, 8, -1, 85, 11, 12, 13, 14, 15, 16,
00737 17, 18, 19, 20, 21, 22, 23, -1, -1, -1,
00738 27, 28, 29, -1, 31, 32, -1, -1, -1, -1,
00739 -1, -1, -1, -1, -1, -1, 43, 44, -1, -1,
00740 -1, -1, -1, -1, 51, -1, -1, -1, -1, -1,
00741 -1, -1, 59, 60, 61, 62, 63, -1, 65, 66,
00742 67, -1, -1, -1, -1, 72, 73, 74, 75, -1,
00743 -1, 3, 4, 5, 6, 7, 8, -1, 85, 11,
00744 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
00745 22, 23, -1, -1, -1, 27, 28, 29, -1, 31,
00746 32, -1, -1, -1, -1, -1, -1, -1, -1, -1,
00747 -1, 43, 44, -1, -1, -1, -1, -1, -1, 51,
00748 -1, -1, -1, -1, -1, -1, -1, 59, 60, 61,
00749 62, 63, -1, 65, 66, 67, -1, -1, -1, -1,
00750 72, 73, 74, 75, -1, -1, 3, 4, 5, 6,
00751 7, 8, -1, 85, 11, 12, 13, 14, 15, 16,
00752 17, 18, 19, 20, 21, 22, 23, -1, -1, -1,
00753 27, 28, 29, -1, 31, 32, -1, -1, -1, -1,
00754 -1, -1, -1, -1, -1, -1, 43, 44, -1, -1,
00755 -1, -1, -1, -1, 51, -1, -1, -1, -1, -1,
00756 -1, -1, 59, 60, 61, 62, 63, -1, 65, 66,
00757 67, -1, -1, -1, -1, 72, 73, 74, 75, -1,
00758 -1, 3, 4, 5, 6, 7, 8, -1, 85, 11,
00759 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
00760 22, 23, -1, -1, -1, 27, 28, 29, -1, 31,
00761 32, -1, -1, -1, -1, -1, -1, -1, -1, -1,
00762 -1, 43, 44, -1, -1, -1, -1, -1, -1, 51,
00763 -1, -1, -1, -1, -1, -1, -1, 59, 60, 61,
00764 62, 63, -1, 65, 66, 67, -1, -1, -1, -1,
00765 72, 73, 74, 75, -1, -1, 3, 4, 5, 6,
00766 7, 8, -1, 85, 11, 12, 13, 14, 15, 16,
00767 17, 18, 19, 20, 21, 22, 23, -1, -1, -1,
00768 27, 28, 29, -1, 31, 32, -1, -1, -1, -1,
00769 -1, -1, -1, -1, -1, -1, 43, 44, -1, -1,
00770 -1, -1, -1, -1, 51, -1, -1, -1, -1, -1,
00771 -1, -1, 59, 60, 61, 62, 63, -1, 65, -1,
00772 67, -1, -1, -1, -1, 72, 73, 74, 75, -1,
00773 -1, 3, 4, 5, 6, 7, 8, -1, 85, 11,
00774 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
00775 22, 23, -1, -1, -1, 27, 28, 29, -1, 31,
00776 32, -1, -1, -1, -1, -1, -1, -1, -1, -1,
00777 -1, 43, 44, -1, -1, -1, -1, -1, -1, 51,
00778 -1, -1, -1, -1, -1, -1, -1, 59, 60, 61,
00779 62, 63, -1, 65, -1, 67, -1, -1, -1, -1,
00780 72, 73, 74, 75, -1, -1, -1, -1, -1, -1,
00781 -1, 0, -1, 85, 3, 4, 5, 6, 7, 8,
00782 9, 10, 11, 12, 13, 14, 15, 16, 17, 18,
00783 19, 20, 21, 22, 23, 24, -1, -1, 27, 28,
00784 29, -1, 31, 32, -1, -1, -1, -1, -1, 3,
00785 4, 5, 6, 7, -1, -1, -1, -1, 12, 13,
00786 -1, -1, 16, -1, 18, 19, -1, 21, -1, -1,
00787 59, 60, 61, 27, -1, -1, 65, 66, -1, -1,
00788 -1, -1, -1, -1, -1, 74, 75, -1, -1, 43,
00789 44, -1, -1, -1, -1, -1, -1, 51, -1, -1,
00790 -1, -1, -1, -1, -1, 59, 60, 61, 62, 63,
00791 -1, 65, -1, 67, -1, -1, -1, -1, 72, 73,
00792 74, 75, 3, 4, 5, 6, 7, -1, -1, -1,
00793 -1, 12, -1, -1, -1, 16, -1, 18, 19, -1,
00794 21, -1, 43, 44, -1, -1, 27, 48, 49, 50,
00795 51, 52, 53, 54, 55, 56, 57, 58, -1, -1,
00796 -1, -1, 43, 44, -1, -1, -1, -1, -1, -1,
00797 51, -1, -1, -1, -1, -1, -1, -1, 59, 60,
00798 61, 62, 63, 84, 65, -1, 67, 68, -1, -1,
00799 -1, 72, 73, 74, 75, 3, 4, 5, 6, 7,
00800 -1, -1, -1, -1, 12, -1, -1, -1, 16, -1,
00801 18, 19, -1, 21, -1, -1, -1, -1, -1, 27,
00802 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
00803 -1, -1, -1, -1, -1, 43, 44, -1, -1, -1,
00804 -1, -1, -1, 51, -1, -1, -1, -1, -1, -1,
00805 -1, 59, 60, 61, 62, 63, 64, 65, -1, 67,
00806 -1, -1, -1, -1, 72, 73, 74, 75, 3, 4,
00807 5, 6, 7, -1, -1, -1, -1, 12, -1, -1,
00808 -1, 16, -1, 18, 19, -1, 21, -1, -1, -1,
00809 -1, -1, 27, -1, -1, -1, -1, -1, -1, -1,
00810 -1, -1, -1, -1, -1, -1, -1, -1, 43, 44,
00811 -1, -1, -1, -1, -1, -1, 51, -1, -1, -1,
00812 -1, -1, -1, -1, 59, 60, 61, 62, 63, -1,
00813 65, -1, 67, 68, -1, -1, -1, 72, 73, 74,
00814 75, 3, 4, 5, 6, 7, -1, -1, -1, -1,
00815 12, -1, -1, -1, 16, -1, 18, 19, -1, 21,
00816 -1, -1, -1, -1, -1, 27, -1, -1, -1, -1,
00817 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
00818 -1, 43, 44, -1, -1, -1, -1, -1, -1, 51,
00819 -1, -1, -1, -1, -1, -1, -1, 59, 60, 61,
00820 62, 63, -1, 65, -1, 67, -1, -1, -1, -1,
00821 72, 73, 74, 75, 3, 4, 5, 6, 7, -1,
00822 -1, -1, -1, 12, -1, -1, -1, 16, -1, 18,
00823 19, -1, 21, -1, -1, -1, -1, -1, 27, -1,
00824 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
00825 -1, -1, -1, -1, 43, 44, -1, -1, -1, -1,
00826 -1, -1, 51, -1, -1, -1, -1, -1, -1, 25,
00827 59, 60, 61, 62, 63, -1, 65, -1, 67, -1,
00828 -1, -1, -1, 72, 73, 74, 75, 43, 44, -1,
00829 -1, -1, 48, 49, 50, 51, 52, 53, 54, 55,
00830 56, 57, 58, -1, -1, -1, -1, -1, -1, -1,
00831 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
00832 -1, -1, -1, -1, -1, -1, -1, -1, 84
00833 };
00834
00835 #line 3 "/usr/share/bison/bison.simple"
00836
00837
00838
00839
00840
00841
00842
00843
00844
00845
00846
00847
00848
00849
00850
00851
00852
00853
00854
00855
00856
00857
00858
00859
00860
00861
00862
00863
00864
00865
00866
00867
00868
00869
00870
00871
00872
00873
00874 #ifndef YYPARSE_RETURN_TYPE
00875 #define YYPARSE_RETURN_TYPE int
00876 #endif
00877
00878 #if ! defined (yyoverflow) || defined (YYERROR_VERBOSE)
00879
00880
00881
00882 # if YYSTACK_USE_ALLOCA
00883 # define YYSTACK_ALLOC alloca
00884 # else
00885 # ifndef YYSTACK_USE_ALLOCA
00886 # if defined (alloca) || defined (_ALLOCA_H)
00887 # define YYSTACK_ALLOC alloca
00888 # else
00889 # ifdef __GNUC__
00890 # define YYSTACK_ALLOC __builtin_alloca
00891 # endif
00892 # endif
00893 # endif
00894 # endif
00895
00896 # ifdef YYSTACK_ALLOC
00897
00898 # define YYSTACK_FREE(Ptr) do { ; } while (0)
00899 # else
00900 # if defined (__STDC__) || defined (__cplusplus)
00901 # include <stdlib.h>
00902 # define YYSIZE_T size_t
00903 # endif
00904 # define YYSTACK_ALLOC malloc
00905 # define YYSTACK_FREE free
00906 # endif
00907 #endif
00908
00909
00910 #if (! defined (yyoverflow) \
00911 && (! defined (__cplusplus) \
00912 || ((YYLTYPE_IS_TRIVIAL || ! YYLSP_NEEDED) && YYSTYPE_IS_TRIVIAL)))
00913
00914
00915 union yyalloc
00916 {
00917 short yyss;
00918 YYSTYPE yyvs;
00919 # if YYLSP_NEEDED
00920 YYLTYPE yyls;
00921 # endif
00922 };
00923
00924
00925 # define YYSTACK_GAP_MAX (sizeof (union yyalloc) - 1)
00926
00927
00928
00929 # if YYLSP_NEEDED
00930 # define YYSTACK_BYTES(N) \
00931 ((N) * (sizeof (short) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \
00932 + 2 * YYSTACK_GAP_MAX)
00933 # else
00934 # define YYSTACK_BYTES(N) \
00935 ((N) * (sizeof (short) + sizeof (YYSTYPE)) \
00936 + YYSTACK_GAP_MAX)
00937 # endif
00938
00939
00940
00941 # ifndef YYCOPY
00942 # if 1 < __GNUC__
00943 # define YYCOPY(To, From, Count) \
00944 __builtin_memcpy (To, From, (Count) * sizeof (*(From)))
00945 # else
00946 # define YYCOPY(To, From, Count) \
00947 do \
00948 { \
00949 register YYSIZE_T yyi; \
00950 for (yyi = 0; yyi < (Count); yyi++) \
00951 (To)[yyi] = (From)[yyi]; \
00952 } \
00953 while (0)
00954 # endif
00955 # endif
00956
00957
00958
00959
00960
00961
00962 # define YYSTACK_RELOCATE(Stack) \
00963 do \
00964 { \
00965 YYSIZE_T yynewbytes; \
00966 YYCOPY (&yyptr->Stack, Stack, yysize); \
00967 Stack = &yyptr->Stack; \
00968 yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAX; \
00969 yyptr += yynewbytes / sizeof (*yyptr); \
00970 } \
00971 while (0)
00972
00973 #endif
00974
00975
00976 #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__)
00977 # define YYSIZE_T __SIZE_TYPE__
00978 #endif
00979 #if ! defined (YYSIZE_T) && defined (size_t)
00980 # define YYSIZE_T size_t
00981 #endif
00982 #if ! defined (YYSIZE_T)
00983 # if defined (__STDC__) || defined (__cplusplus)
00984 # include <stddef.h>
00985 # define YYSIZE_T size_t
00986 # endif
00987 #endif
00988 #if ! defined (YYSIZE_T)
00989 # define YYSIZE_T unsigned int
00990 #endif
00991
00992 #define yyerrok (yyerrstatus = 0)
00993 #define yyclearin (yychar = YYEMPTY)
00994 #define YYEMPTY -2
00995 #define YYEOF 0
00996 #define YYACCEPT goto yyacceptlab
00997 #define YYABORT goto yyabortlab
00998 #define YYERROR goto yyerrlab1
00999
01000
01001
01002 #define YYFAIL goto yyerrlab
01003 #define YYRECOVERING() (!!yyerrstatus)
01004 #define YYBACKUP(Token, Value) \
01005 do \
01006 if (yychar == YYEMPTY && yylen == 1) \
01007 { \
01008 yychar = (Token); \
01009 yylval = (Value); \
01010 yychar1 = YYTRANSLATE (yychar); \
01011 YYPOPSTACK; \
01012 goto yybackup; \
01013 } \
01014 else \
01015 { \
01016 yyerror ("syntax error: cannot back up"); \
01017 YYERROR; \
01018 } \
01019 while (0)
01020
01021 #define YYTERROR 1
01022 #define YYERRCODE 256
01023
01024
01025
01026
01027
01028
01029
01030
01031
01032 #ifndef YYLLOC_DEFAULT
01033 # define YYLLOC_DEFAULT(Current, Rhs, N) \
01034 Current.last_line = Rhs[N].last_line; \
01035 Current.last_column = Rhs[N].last_column;
01036 #endif
01037
01038
01039
01040
01041 #if YYPURE
01042 # if YYLSP_NEEDED
01043 # ifdef YYLEX_PARAM
01044 # define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM)
01045 # else
01046 # define YYLEX yylex (&yylval, &yylloc)
01047 # endif
01048 # else
01049 # ifdef YYLEX_PARAM
01050 # define YYLEX yylex (&yylval, YYLEX_PARAM)
01051 # else
01052 # define YYLEX yylex (&yylval)
01053 # endif
01054 # endif
01055 #else
01056 # define YYLEX yylex ()
01057 #endif
01058
01059
01060
01061 #if YYDEBUG
01062
01063 # ifndef YYFPRINTF
01064 # include <stdio.h>
01065 # define YYFPRINTF fprintf
01066 # endif
01067
01068 # define YYDPRINTF(Args) \
01069 do { \
01070 if (yydebug) \
01071 YYFPRINTF Args; \
01072 } while (0)
01073
01074
01075 int yydebug;
01076 #else
01077 # define YYDPRINTF(Args)
01078 #endif
01079
01080
01081 #ifndef YYINITDEPTH
01082 # define YYINITDEPTH 200
01083 #endif
01084
01085
01086
01087
01088
01089
01090
01091
01092 #if YYMAXDEPTH == 0
01093 # undef YYMAXDEPTH
01094 #endif
01095
01096 #ifndef YYMAXDEPTH
01097 # define YYMAXDEPTH 10000
01098 #endif
01099
01100 #ifdef YYERROR_VERBOSE
01101
01102 # ifndef yystrlen
01103 # if defined (__GLIBC__) && defined (_STRING_H)
01104 # define yystrlen strlen
01105 # else
01106
01107 static YYSIZE_T
01108 # if defined (__STDC__) || defined (__cplusplus)
01109 yystrlen (const char *yystr)
01110 # else
01111 yystrlen (yystr)
01112 const char *yystr;
01113 # endif
01114 {
01115 register const char *yys = yystr;
01116
01117 while (*yys++ != '\0')
01118 continue;
01119
01120 return yys - yystr - 1;
01121 }
01122 # endif
01123 # endif
01124
01125 # ifndef yystpcpy
01126 # if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE)
01127 # define yystpcpy stpcpy
01128 # else
01129
01130
01131 static char *
01132 # if defined (__STDC__) || defined (__cplusplus)
01133 yystpcpy (char *yydest, const char *yysrc)
01134 # else
01135 yystpcpy (yydest, yysrc)
01136 char *yydest;
01137 const char *yysrc;
01138 # endif
01139 {
01140 register char *yyd = yydest;
01141 register const char *yys = yysrc;
01142
01143 while ((*yyd++ = *yys++) != '\0')
01144 continue;
01145
01146 return yyd - 1;
01147 }
01148 # endif
01149 # endif
01150 #endif
01151
01152 #line 319 "/usr/share/bison/bison.simple"
01153
01154
01155
01156
01157
01158
01159
01160
01161 #ifdef YYPARSE_PARAM
01162 # if defined (__STDC__) || defined (__cplusplus)
01163 # define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
01164 # define YYPARSE_PARAM_DECL
01165 # else
01166 # define YYPARSE_PARAM_ARG YYPARSE_PARAM
01167 # define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
01168 # endif
01169 #else
01170 # define YYPARSE_PARAM_ARG
01171 # define YYPARSE_PARAM_DECL
01172 #endif
01173
01174
01175 #ifdef __GNUC__
01176 # ifdef YYPARSE_PARAM
01177 YYPARSE_RETURN_TYPE yyparse (void *);
01178 # else
01179 YYPARSE_RETURN_TYPE yyparse (void);
01180 # endif
01181 #endif
01182
01183
01184
01185
01186 #define YY_DECL_NON_LSP_VARIABLES \
01187 \
01188 int yychar; \
01189 \
01190 \
01191 YYSTYPE yylval; \
01192 \
01193 \
01194 int yynerrs;
01195
01196 #if YYLSP_NEEDED
01197 # define YY_DECL_VARIABLES \
01198 YY_DECL_NON_LSP_VARIABLES \
01199 \
01200 \
01201 YYLTYPE yylloc;
01202 #else
01203 # define YY_DECL_VARIABLES \
01204 YY_DECL_NON_LSP_VARIABLES
01205 #endif
01206
01207
01208
01209
01210 #if !YYPURE
01211 YY_DECL_VARIABLES
01212 #endif
01213
01214 YYPARSE_RETURN_TYPE
01215 yyparse (YYPARSE_PARAM_ARG)
01216 YYPARSE_PARAM_DECL
01217 {
01218
01219 #if YYPURE
01220 YY_DECL_VARIABLES
01221 #endif
01222
01223 register int yystate;
01224 register int yyn;
01225 int yyresult;
01226
01227 int yyerrstatus;
01228
01229 int yychar1 = 0;
01230
01231
01232
01233
01234
01235
01236
01237
01238
01239
01240 short yyssa[YYINITDEPTH];
01241 short *yyss = yyssa;
01242 register short *yyssp;
01243
01244
01245 YYSTYPE yyvsa[YYINITDEPTH];
01246 YYSTYPE *yyvs = yyvsa;
01247 register YYSTYPE *yyvsp;
01248
01249 #if YYLSP_NEEDED
01250
01251 YYLTYPE yylsa[YYINITDEPTH];
01252 YYLTYPE *yyls = yylsa;
01253 YYLTYPE *yylsp;
01254 #endif
01255
01256 #if YYLSP_NEEDED
01257 # define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
01258 #else
01259 # define YYPOPSTACK (yyvsp--, yyssp--)
01260 #endif
01261
01262 YYSIZE_T yystacksize = YYINITDEPTH;
01263
01264
01265
01266
01267 YYSTYPE yyval;
01268 #if YYLSP_NEEDED
01269 YYLTYPE yyloc;
01270 #endif
01271
01272
01273
01274 int yylen;
01275
01276 YYDPRINTF ((stderr, "Starting parse\n"));
01277
01278 yystate = 0;
01279 yyerrstatus = 0;
01280 yynerrs = 0;
01281 yychar = YYEMPTY;
01282
01283
01284
01285
01286
01287
01288 yyssp = yyss;
01289 yyvsp = yyvs;
01290 #if YYLSP_NEEDED
01291 yylsp = yyls;
01292 #endif
01293 goto yysetstate;
01294
01295
01296
01297
01298 yynewstate:
01299
01300
01301
01302 yyssp++;
01303
01304 yysetstate:
01305 *yyssp = yystate;
01306
01307 if (yyssp >= yyss + yystacksize - 1)
01308 {
01309
01310 YYSIZE_T yysize = yyssp - yyss + 1;
01311
01312 #ifdef yyoverflow
01313 {
01314
01315
01316
01317 YYSTYPE *yyvs1 = yyvs;
01318 short *yyss1 = yyss;
01319
01320
01321
01322 # if YYLSP_NEEDED
01323 YYLTYPE *yyls1 = yyls;
01324
01325
01326 yyoverflow ("parser stack overflow",
01327 &yyss1, yysize * sizeof (*yyssp),
01328 &yyvs1, yysize * sizeof (*yyvsp),
01329 &yyls1, yysize * sizeof (*yylsp),
01330 &yystacksize);
01331 yyls = yyls1;
01332 # else
01333 yyoverflow ("parser stack overflow",
01334 &yyss1, yysize * sizeof (*yyssp),
01335 &yyvs1, yysize * sizeof (*yyvsp),
01336 &yystacksize);
01337 # endif
01338 yyss = yyss1;
01339 yyvs = yyvs1;
01340 }
01341 #else
01342 # ifndef YYSTACK_RELOCATE
01343 goto yyoverflowlab;
01344 # else
01345
01346 if (yystacksize >= YYMAXDEPTH)
01347 goto yyoverflowlab;
01348 yystacksize *= 2;
01349 if (yystacksize > YYMAXDEPTH)
01350 yystacksize = YYMAXDEPTH;
01351
01352 {
01353 short *yyss1 = yyss;
01354 union yyalloc *yyptr =
01355 (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
01356 if (! yyptr)
01357 goto yyoverflowlab;
01358 YYSTACK_RELOCATE (yyss);
01359 YYSTACK_RELOCATE (yyvs);
01360 # if YYLSP_NEEDED
01361 YYSTACK_RELOCATE (yyls);
01362 # endif
01363 # undef YYSTACK_RELOCATE
01364 if (yyss1 != yyssa)
01365 YYSTACK_FREE (yyss1);
01366 }
01367 # endif
01368 #endif
01369
01370 yyssp = yyss + yysize - 1;
01371 yyvsp = yyvs + yysize - 1;
01372 #if YYLSP_NEEDED
01373 yylsp = yyls + yysize - 1;
01374 #endif
01375
01376 YYDPRINTF ((stderr, "Stack size increased to %lu\n",
01377 (unsigned long int) yystacksize));
01378
01379 if (yyssp >= yyss + yystacksize - 1)
01380 YYABORT;
01381 }
01382
01383 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
01384
01385 goto yybackup;
01386
01387
01388
01389
01390
01391 yybackup:
01392
01393
01394
01395
01396
01397
01398
01399 yyn = yypact[yystate];
01400 if (yyn == YYFLAG)
01401 goto yydefault;
01402
01403
01404
01405
01406
01407
01408 if (yychar == YYEMPTY)
01409 {
01410 YYDPRINTF ((stderr, "Reading a token: "));
01411 yychar = YYLEX;
01412 }
01413
01414
01415
01416 if (yychar <= 0)
01417 {
01418 yychar1 = 0;
01419 yychar = YYEOF;
01420
01421 YYDPRINTF ((stderr, "Now at end of input.\n"));
01422 }
01423 else
01424 {
01425 yychar1 = YYTRANSLATE (yychar);
01426
01427 #if YYDEBUG
01428
01429
01430 if (yydebug)
01431 {
01432 YYFPRINTF (stderr, "Next token is %d (%s",
01433 yychar, yytname[yychar1]);
01434
01435
01436 # ifdef YYPRINT
01437 YYPRINT (stderr, yychar, yylval);
01438 # endif
01439 YYFPRINTF (stderr, ")\n");
01440 }
01441 #endif
01442 }
01443
01444 yyn += yychar1;
01445 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
01446 goto yydefault;
01447
01448 yyn = yytable[yyn];
01449
01450
01451
01452
01453
01454
01455
01456
01457 if (yyn < 0)
01458 {
01459 if (yyn == YYFLAG)
01460 goto yyerrlab;
01461 yyn = -yyn;
01462 goto yyreduce;
01463 }
01464 else if (yyn == 0)
01465 goto yyerrlab;
01466
01467 if (yyn == YYFINAL)
01468 YYACCEPT;
01469
01470
01471 YYDPRINTF ((stderr, "Shifting token %d (%s), ",
01472 yychar, yytname[yychar1]));
01473
01474
01475 if (yychar != YYEOF)
01476 yychar = YYEMPTY;
01477
01478 *++yyvsp = yylval;
01479 #if YYLSP_NEEDED
01480 *++yylsp = yylloc;
01481 #endif
01482
01483
01484
01485 if (yyerrstatus)
01486 yyerrstatus--;
01487
01488 yystate = yyn;
01489 goto yynewstate;
01490
01491
01492
01493
01494
01495 yydefault:
01496 yyn = yydefact[yystate];
01497 if (yyn == 0)
01498 goto yyerrlab;
01499 goto yyreduce;
01500
01501
01502
01503
01504
01505 yyreduce:
01506
01507 yylen = yyr2[yyn];
01508
01509
01510
01511
01512
01513
01514
01515
01516
01517 yyval = yyvsp[1-yylen];
01518
01519 #if YYLSP_NEEDED
01520
01521
01522 yyloc = yylsp[1-yylen];
01523 YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen);
01524 #endif
01525
01526 #if YYDEBUG
01527
01528
01529 if (yydebug)
01530 {
01531 int yyi;
01532
01533 YYFPRINTF (stderr, "Reducing via rule %d (line %d), ",
01534 yyn, yyrline[yyn]);
01535
01536
01537 for (yyi = yyprhs[yyn]; yyrhs[yyi] > 0; yyi++)
01538 YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]);
01539 YYFPRINTF (stderr, " -> %s\n", yytname[yyr1[yyn]]);
01540 }
01541 #endif
01542
01543 switch (yyn) {
01544
01545 case 1:
01546 #line 168 "grammar.y"
01547 { yyval.node = new NullNode(); ;
01548 break;}
01549 case 2:
01550 #line 169 "grammar.y"
01551 { yyval.node = new BooleanNode(true); ;
01552 break;}
01553 case 3:
01554 #line 170 "grammar.y"
01555 { yyval.node = new BooleanNode(false); ;
01556 break;}
01557 case 4:
01558 #line 171 "grammar.y"
01559 { yyval.node = new NumberNode(yyvsp[0].dval); ;
01560 break;}
01561 case 5:
01562 #line 172 "grammar.y"
01563 { yyval.node = new StringNode(yyvsp[0].ustr); ;
01564 break;}
01565 case 6:
01566 #line 173 "grammar.y"
01567 { Lexer *l = Lexer::curr();
01568 if (!l->scanRegExp()) YYABORT;
01569 yyval.node = new RegExpNode(l->pattern,l->flags);;
01570 break;}
01571 case 7:
01572 #line 177 "grammar.y"
01573 { Lexer *l = Lexer::curr();
01574 if (!l->scanRegExp()) YYABORT;
01575 yyval.node = new RegExpNode(UString('=')+l->pattern,l->flags);;
01576 break;}
01577 case 8:
01578 #line 183 "grammar.y"
01579 { yyval.node = new ThisNode(); ;
01580 break;}
01581 case 9:
01582 #line 184 "grammar.y"
01583 { yyval.node = new ResolveNode(*yyvsp[0].ident); ;
01584 break;}
01585 case 12:
01586 #line 187 "grammar.y"
01587 { yyval.node = new GroupNode(yyvsp[-1].node); ;
01588 break;}
01589 case 13:
01590 #line 188 "grammar.y"
01591 { yyval.node = new ObjectLiteralNode(); ;
01592 break;}
01593 case 14:
01594 #line 189 "grammar.y"
01595 { yyval.node = new ObjectLiteralNode(yyvsp[-1].plist); ;
01596 break;}
01597 case 15:
01598 #line 193 "grammar.y"
01599 { yyval.node = new ArrayNode(yyvsp[-1].ival); ;
01600 break;}
01601 case 16:
01602 #line 194 "grammar.y"
01603 { yyval.node = new ArrayNode(yyvsp[-1].elm); ;
01604 break;}
01605 case 17:
01606 #line 195 "grammar.y"
01607 { yyval.node = new ArrayNode(yyvsp[-1].ival, yyvsp[-3].elm); ;
01608 break;}
01609 case 18:
01610 #line 199 "grammar.y"
01611 { yyval.elm = new ElementNode(yyvsp[-1].ival, yyvsp[0].node); ;
01612 break;}
01613 case 19:
01614 #line 201 "grammar.y"
01615 { yyval.elm = new ElementNode(yyvsp[-3].elm, yyvsp[-1].ival, yyvsp[0].node); ;
01616 break;}
01617 case 20:
01618 #line 205 "grammar.y"
01619 { yyval.ival = 0; ;
01620 break;}
01621 case 22:
01622 #line 210 "grammar.y"
01623 { yyval.ival = 1; ;
01624 break;}
01625 case 23:
01626 #line 211 "grammar.y"
01627 { yyval.ival = yyvsp[-1].ival + 1; ;
01628 break;}
01629 case 24:
01630 #line 215 "grammar.y"
01631 { yyval.plist = new PropertyValueNode(yyvsp[-2].pnode, yyvsp[0].node); ;
01632 break;}
01633 case 25:
01634 #line 217 "grammar.y"
01635 { yyval.plist = new PropertyValueNode(yyvsp[-2].pnode, yyvsp[0].node, yyvsp[-4].plist); ;
01636 break;}
01637 case 26:
01638 #line 221 "grammar.y"
01639 { yyval.pnode = new PropertyNode(*yyvsp[0].ident); ;
01640 break;}
01641 case 27:
01642 #line 222 "grammar.y"
01643 { yyval.pnode = new PropertyNode(Identifier(*yyvsp[0].ustr)); ;
01644 break;}
01645 case 28:
01646 #line 223 "grammar.y"
01647 { yyval.pnode = new PropertyNode(yyvsp[0].dval); ;
01648 break;}
01649 case 31:
01650 #line 229 "grammar.y"
01651 { yyval.node = new AccessorNode1(yyvsp[-3].node, yyvsp[-1].node); ;
01652 break;}
01653 case 32:
01654 #line 230 "grammar.y"
01655 { yyval.node = new AccessorNode2(yyvsp[-2].node, *yyvsp[0].ident); ;
01656 break;}
01657 case 33:
01658 #line 231 "grammar.y"
01659 { yyval.node = new NewExprNode(yyvsp[-1].node, yyvsp[0].args); ;
01660 break;}
01661 case 35:
01662 #line 236 "grammar.y"
01663 { yyval.node = new NewExprNode(yyvsp[0].node); ;
01664 break;}
01665 case 36:
01666 #line 240 "grammar.y"
01667 { yyval.node = new FunctionCallNode(yyvsp[-1].node, yyvsp[0].args); ;
01668 break;}
01669 case 37:
01670 #line 241 "grammar.y"
01671 { yyval.node = new FunctionCallNode(yyvsp[-1].node, yyvsp[0].args); ;
01672 break;}
01673 case 38:
01674 #line 242 "grammar.y"
01675 { yyval.node = new AccessorNode1(yyvsp[-3].node, yyvsp[-1].node); ;
01676 break;}
01677 case 39:
01678 #line 243 "grammar.y"
01679 { yyval.node = new AccessorNode2(yyvsp[-2].node, *yyvsp[0].ident); ;
01680 break;}
01681 case 40:
01682 #line 247 "grammar.y"
01683 { yyval.args = new ArgumentsNode(); ;
01684 break;}
01685 case 41:
01686 #line 248 "grammar.y"
01687 { yyval.args = new ArgumentsNode(yyvsp[-1].alist); ;
01688 break;}
01689 case 42:
01690 #line 252 "grammar.y"
01691 { yyval.alist = new ArgumentListNode(yyvsp[0].node); ;
01692 break;}
01693 case 43:
01694 #line 253 "grammar.y"
01695 { yyval.alist = new ArgumentListNode(yyvsp[-2].alist, yyvsp[0].node); ;
01696 break;}
01697 case 47:
01698 #line 263 "grammar.y"
01699 { yyval.node = new PostfixNode(yyvsp[-1].node, OpPlusPlus); ;
01700 break;}
01701 case 48:
01702 #line 264 "grammar.y"
01703 { yyval.node = new PostfixNode(yyvsp[-1].node, OpMinusMinus); ;
01704 break;}
01705 case 50:
01706 #line 269 "grammar.y"
01707 { yyval.node = new DeleteNode(yyvsp[0].node); ;
01708 break;}
01709 case 51:
01710 #line 270 "grammar.y"
01711 { yyval.node = new VoidNode(yyvsp[0].node); ;
01712 break;}
01713 case 52:
01714 #line 271 "grammar.y"
01715 { yyval.node = new TypeOfNode(yyvsp[0].node); ;
01716 break;}
01717 case 53:
01718 #line 272 "grammar.y"
01719 { yyval.node = new PrefixNode(OpPlusPlus, yyvsp[0].node); ;
01720 break;}
01721 case 54:
01722 #line 273 "grammar.y"
01723 { yyval.node = new PrefixNode(OpPlusPlus, yyvsp[0].node); ;
01724 break;}
01725 case 55:
01726 #line 274 "grammar.y"
01727 { yyval.node = new PrefixNode(OpMinusMinus, yyvsp[0].node); ;
01728 break;}
01729 case 56:
01730 #line 275 "grammar.y"
01731 { yyval.node = new PrefixNode(OpMinusMinus, yyvsp[0].node); ;
01732 break;}
01733 case 57:
01734 #line 276 "grammar.y"
01735 { yyval.node = new UnaryPlusNode(yyvsp[0].node); ;
01736 break;}
01737 case 58:
01738 #line 277 "grammar.y"
01739 { yyval.node = new NegateNode(yyvsp[0].node); ;
01740 break;}
01741 case 59:
01742 #line 278 "grammar.y"
01743 { yyval.node = new BitwiseNotNode(yyvsp[0].node); ;
01744 break;}
01745 case 60:
01746 #line 279 "grammar.y"
01747 { yyval.node = new LogicalNotNode(yyvsp[0].node); ;
01748 break;}
01749 case 62:
01750 #line 284 "grammar.y"
01751 { yyval.node = new MultNode(yyvsp[-2].node, yyvsp[0].node, '*'); ;
01752 break;}
01753 case 63:
01754 #line 285 "grammar.y"
01755 { yyval.node = new MultNode(yyvsp[-2].node, yyvsp[0].node, '/'); ;
01756 break;}
01757 case 64:
01758 #line 286 "grammar.y"
01759 { yyval.node = new MultNode(yyvsp[-2].node,yyvsp[0].node,'%'); ;
01760 break;}
01761 case 66:
01762 #line 291 "grammar.y"
01763 { yyval.node = AddNode::create(yyvsp[-2].node, yyvsp[0].node, '+'); ;
01764 break;}
01765 case 67:
01766 #line 292 "grammar.y"
01767 { yyval.node = AddNode::create(yyvsp[-2].node, yyvsp[0].node, '-'); ;
01768 break;}
01769 case 69:
01770 #line 297 "grammar.y"
01771 { yyval.node = new ShiftNode(yyvsp[-2].node, OpLShift, yyvsp[0].node); ;
01772 break;}
01773 case 70:
01774 #line 298 "grammar.y"
01775 { yyval.node = new ShiftNode(yyvsp[-2].node, OpRShift, yyvsp[0].node); ;
01776 break;}
01777 case 71:
01778 #line 299 "grammar.y"
01779 { yyval.node = new ShiftNode(yyvsp[-2].node, OpURShift, yyvsp[0].node); ;
01780 break;}
01781 case 73:
01782 #line 305 "grammar.y"
01783 { yyval.node = new RelationalNode(yyvsp[-2].node, OpLess, yyvsp[0].node); ;
01784 break;}
01785 case 74:
01786 #line 307 "grammar.y"
01787 { yyval.node = new RelationalNode(yyvsp[-2].node, OpGreater, yyvsp[0].node); ;
01788 break;}
01789 case 75:
01790 #line 309 "grammar.y"
01791 { yyval.node = new RelationalNode(yyvsp[-2].node, OpLessEq, yyvsp[0].node); ;
01792 break;}
01793 case 76:
01794 #line 311 "grammar.y"
01795 { yyval.node = new RelationalNode(yyvsp[-2].node, OpGreaterEq, yyvsp[0].node); ;
01796 break;}
01797 case 77:
01798 #line 313 "grammar.y"
01799 { yyval.node = new RelationalNode(yyvsp[-2].node, OpInstanceOf, yyvsp[0].node); ;
01800 break;}
01801 case 78:
01802 #line 315 "grammar.y"
01803 { yyval.node = new RelationalNode(yyvsp[-2].node, OpIn, yyvsp[0].node); ;
01804 break;}
01805 case 80:
01806 #line 320 "grammar.y"
01807 { yyval.node = new EqualNode(yyvsp[-2].node, OpEqEq, yyvsp[0].node); ;
01808 break;}
01809 case 81:
01810 #line 321 "grammar.y"
01811 { yyval.node = new EqualNode(yyvsp[-2].node, OpNotEq, yyvsp[0].node); ;
01812 break;}
01813 case 82:
01814 #line 322 "grammar.y"
01815 { yyval.node = new EqualNode(yyvsp[-2].node, OpStrEq, yyvsp[0].node); ;
01816 break;}
01817 case 83:
01818 #line 323 "grammar.y"
01819 { yyval.node = new EqualNode(yyvsp[-2].node, OpStrNEq, yyvsp[0].node);;
01820 break;}
01821 case 85:
01822 #line 328 "grammar.y"
01823 { yyval.node = new BitOperNode(yyvsp[-2].node, OpBitAnd, yyvsp[0].node); ;
01824 break;}
01825 case 87:
01826 #line 333 "grammar.y"
01827 { yyval.node = new BitOperNode(yyvsp[-2].node, OpBitXOr, yyvsp[0].node); ;
01828 break;}
01829 case 89:
01830 #line 338 "grammar.y"
01831 { yyval.node = new BitOperNode(yyvsp[-2].node, OpBitOr, yyvsp[0].node); ;
01832 break;}
01833 case 91:
01834 #line 344 "grammar.y"
01835 { yyval.node = new BinaryLogicalNode(yyvsp[-2].node, OpAnd, yyvsp[0].node); ;
01836 break;}
01837 case 93:
01838 #line 350 "grammar.y"
01839 { yyval.node = new BinaryLogicalNode(yyvsp[-2].node, OpOr, yyvsp[0].node); ;
01840 break;}
01841 case 95:
01842 #line 356 "grammar.y"
01843 { yyval.node = new ConditionalNode(yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].node); ;
01844 break;}
01845 case 97:
01846 #line 362 "grammar.y"
01847 { yyval.node = new AssignNode(yyvsp[-2].node, yyvsp[-1].op, yyvsp[0].node);;
01848 break;}
01849 case 98:
01850 #line 366 "grammar.y"
01851 { yyval.op = OpEqual; ;
01852 break;}
01853 case 99:
01854 #line 367 "grammar.y"
01855 { yyval.op = OpPlusEq; ;
01856 break;}
01857 case 100:
01858 #line 368 "grammar.y"
01859 { yyval.op = OpMinusEq; ;
01860 break;}
01861 case 101:
01862 #line 369 "grammar.y"
01863 { yyval.op = OpMultEq; ;
01864 break;}
01865 case 102:
01866 #line 370 "grammar.y"
01867 { yyval.op = OpDivEq; ;
01868 break;}
01869 case 103:
01870 #line 371 "grammar.y"
01871 { yyval.op = OpLShift; ;
01872 break;}
01873 case 104:
01874 #line 372 "grammar.y"
01875 { yyval.op = OpRShift; ;
01876 break;}
01877 case 105:
01878 #line 373 "grammar.y"
01879 { yyval.op = OpURShift; ;
01880 break;}
01881 case 106:
01882 #line 374 "grammar.y"
01883 { yyval.op = OpAndEq; ;
01884 break;}
01885 case 107:
01886 #line 375 "grammar.y"
01887 { yyval.op = OpXOrEq; ;
01888 break;}
01889 case 108:
01890 #line 376 "grammar.y"
01891 { yyval.op = OpOrEq; ;
01892 break;}
01893 case 109:
01894 #line 377 "grammar.y"
01895 { yyval.op = OpModEq; ;
01896 break;}
01897 case 111:
01898 #line 382 "grammar.y"
01899 { yyval.node = new CommaNode(yyvsp[-2].node, yyvsp[0].node); ;
01900 break;}
01901 case 126:
01902 #line 403 "grammar.y"
01903 { yyval.stat = new BlockNode(0); DBG(yyval.stat, yylsp[0], yylsp[0]); ;
01904 break;}
01905 case 127:
01906 #line 404 "grammar.y"
01907 { yyval.stat = new BlockNode(yyvsp[-1].srcs); DBG(yyval.stat, yylsp[0], yylsp[0]); ;
01908 break;}
01909 case 128:
01910 #line 408 "grammar.y"
01911 { yyval.slist = new StatListNode(yyvsp[0].stat); ;
01912 break;}
01913 case 129:
01914 #line 409 "grammar.y"
01915 { yyval.slist = new StatListNode(yyvsp[-1].slist, yyvsp[0].stat); ;
01916 break;}
01917 case 130:
01918 #line 413 "grammar.y"
01919 { yyval.vtype = VarStatementNode::Variable; ;
01920 break;}
01921 case 131:
01922 #line 414 "grammar.y"
01923 { yyval.vtype = VarStatementNode::Constant; ;
01924 break;}
01925 case 132:
01926 #line 418 "grammar.y"
01927 { yyval.stat = new VarStatementNode(yyvsp[-2].vtype, yyvsp[-1].vlist);
01928 DBG(yyval.stat, yylsp[-2], yylsp[0]); ;
01929 break;}
01930 case 133:
01931 #line 420 "grammar.y"
01932 { if (automatic()) {
01933 yyval.stat = new VarStatementNode(yyvsp[-2].vtype, yyvsp[-1].vlist);
01934 DBG(yyval.stat, yylsp[-2], yylsp[-1]);
01935 } else {
01936 YYABORT;
01937 }
01938 ;
01939 break;}
01940 case 134:
01941 #line 430 "grammar.y"
01942 { yyval.vlist = new VarDeclListNode(yyvsp[0].decl); ;
01943 break;}
01944 case 135:
01945 #line 432 "grammar.y"
01946 { yyval.vlist = new VarDeclListNode(yyvsp[-2].vlist, yyvsp[0].decl); ;
01947 break;}
01948 case 136:
01949 #line 436 "grammar.y"
01950 { yyval.decl = new VarDeclNode(*yyvsp[0].ident, 0); ;
01951 break;}
01952 case 137:
01953 #line 437 "grammar.y"
01954 { yyval.decl = new VarDeclNode(*yyvsp[-1].ident, yyvsp[0].init); ;
01955 break;}
01956 case 138:
01957 #line 441 "grammar.y"
01958 { yyval.init = new AssignExprNode(yyvsp[0].node); ;
01959 break;}
01960 case 139:
01961 #line 445 "grammar.y"
01962 { yyval.stat = new EmptyStatementNode(); DBG(yyval.stat, yylsp[0], yylsp[0]); ;
01963 break;}
01964 case 140:
01965 #line 449 "grammar.y"
01966 { yyval.stat = new ExprStatementNode(yyvsp[-1].node);
01967 DBG(yyval.stat, yylsp[-1], yylsp[0]); ;
01968 break;}
01969 case 141:
01970 #line 451 "grammar.y"
01971 { if (automatic()) {
01972 yyval.stat = new ExprStatementNode(yyvsp[-1].node);
01973 DBG(yyval.stat, yylsp[-1], yylsp[-1]);
01974 } else
01975 YYABORT; ;
01976 break;}
01977 case 142:
01978 #line 459 "grammar.y"
01979 { yyval.stat = new IfNode(yyvsp[-2].node,yyvsp[0].stat,0);DBG(yyval.stat,yylsp[-4],yylsp[-1]); ;
01980 break;}
01981 case 143:
01982 #line 461 "grammar.y"
01983 { yyval.stat = new IfNode(yyvsp[-4].node,yyvsp[-2].stat,yyvsp[0].stat);DBG(yyval.stat,yylsp[-6],yylsp[-3]); ;
01984 break;}
01985 case 144:
01986 #line 465 "grammar.y"
01987 { yyval.stat=new DoWhileNode(yyvsp[-4].stat,yyvsp[-1].node);DBG(yyval.stat,yylsp[-5],yylsp[-3]);;
01988 break;}
01989 case 145:
01990 #line 466 "grammar.y"
01991 { yyval.stat = new WhileNode(yyvsp[-2].node,yyvsp[0].stat);DBG(yyval.stat,yylsp[-4],yylsp[-1]); ;
01992 break;}
01993 case 146:
01994 #line 468 "grammar.y"
01995 { yyval.stat = new ForNode(yyvsp[-6].node,yyvsp[-4].node,yyvsp[-2].node,yyvsp[0].stat);
01996 DBG(yyval.stat,yylsp[-8],yylsp[-1]); ;
01997 break;}
01998 case 147:
01999 #line 471 "grammar.y"
02000 { yyval.stat = new ForNode(yyvsp[-6].vlist,yyvsp[-4].node,yyvsp[-2].node,yyvsp[0].stat);
02001 DBG(yyval.stat,yylsp[-9],yylsp[-1]); ;
02002 break;}
02003 case 148:
02004 #line 474 "grammar.y"
02005 { yyval.stat = new ForInNode(yyvsp[-4].node, yyvsp[-2].node, yyvsp[0].stat);
02006 DBG(yyval.stat,yylsp[-6],yylsp[-1]); ;
02007 break;}
02008 case 149:
02009 #line 477 "grammar.y"
02010 { yyval.stat = new ForInNode(*yyvsp[-4].ident,0,yyvsp[-2].node,yyvsp[0].stat);
02011 DBG(yyval.stat,yylsp[-7],yylsp[-1]); ;
02012 break;}
02013 case 150:
02014 #line 480 "grammar.y"
02015 { yyval.stat = new ForInNode(*yyvsp[-5].ident,yyvsp[-4].init,yyvsp[-2].node,yyvsp[0].stat);
02016 DBG(yyval.stat,yylsp[-8],yylsp[-1]); ;
02017 break;}
02018 case 151:
02019 #line 485 "grammar.y"
02020 { yyval.node = 0; ;
02021 break;}
02022 case 153:
02023 #line 490 "grammar.y"
02024 { yyval.stat = new ContinueNode(); DBG(yyval.stat,yylsp[-1],yylsp[0]); ;
02025 break;}
02026 case 154:
02027 #line 491 "grammar.y"
02028 { if (automatic()) {
02029 yyval.stat = new ContinueNode(); DBG(yyval.stat,yylsp[-1],yylsp[0]);
02030 } else
02031 YYABORT; ;
02032 break;}
02033 case 155:
02034 #line 495 "grammar.y"
02035 { yyval.stat = new ContinueNode(*yyvsp[-1].ident); DBG(yyval.stat,yylsp[-2],yylsp[0]); ;
02036 break;}
02037 case 156:
02038 #line 496 "grammar.y"
02039 { if (automatic()) {
02040 yyval.stat = new ContinueNode(*yyvsp[-1].ident);DBG(yyval.stat,yylsp[-2],yylsp[-1]);
02041 } else
02042 YYABORT; ;
02043 break;}
02044 case 157:
02045 #line 503 "grammar.y"
02046 { yyval.stat = new BreakNode();DBG(yyval.stat,yylsp[-1],yylsp[0]); ;
02047 break;}
02048 case 158:
02049 #line 504 "grammar.y"
02050 { if (automatic()) {
02051 yyval.stat = new BreakNode(); DBG(yyval.stat,yylsp[-1],yylsp[-1]);
02052 } else
02053 YYABORT; ;
02054 break;}
02055 case 159:
02056 #line 508 "grammar.y"
02057 { yyval.stat = new BreakNode(*yyvsp[-1].ident); DBG(yyval.stat,yylsp[-2],yylsp[0]); ;
02058 break;}
02059 case 160:
02060 #line 509 "grammar.y"
02061 { if (automatic()) {
02062 yyval.stat = new BreakNode(*yyvsp[-1].ident); DBG(yyval.stat,yylsp[-2],yylsp[-1]);
02063 } else
02064 YYABORT;
02065 ;
02066 break;}
02067 case 161:
02068 #line 517 "grammar.y"
02069 { yyval.stat = new ReturnNode(0); DBG(yyval.stat,yylsp[-1],yylsp[0]); ;
02070 break;}
02071 case 162:
02072 #line 518 "grammar.y"
02073 { if (automatic()) {
02074 yyval.stat = new ReturnNode(0); DBG(yyval.stat,yylsp[-1],yylsp[-1]);
02075 } else
02076 YYABORT; ;
02077 break;}
02078 case 163:
02079 #line 522 "grammar.y"
02080 { yyval.stat = new ReturnNode(yyvsp[-1].node); DBG(yyval.stat,yylsp[-2],yylsp[0]); ;
02081 break;}
02082 case 164:
02083 #line 523 "grammar.y"
02084 { if (automatic()) {
02085 yyval.stat = new ReturnNode(yyvsp[-1].node); DBG(yyval.stat,yylsp[-2],yylsp[-2]);
02086 }
02087 else
02088 YYABORT; ;
02089 break;}
02090 case 165:
02091 #line 531 "grammar.y"
02092 { yyval.stat = new WithNode(yyvsp[-2].node,yyvsp[0].stat);
02093 DBG(yyval.stat, yylsp[-4], yylsp[-1]); ;
02094 break;}
02095 case 166:
02096 #line 536 "grammar.y"
02097 { yyval.stat = new SwitchNode(yyvsp[-2].node, yyvsp[0].cblk);
02098 DBG(yyval.stat, yylsp[-4], yylsp[-1]); ;
02099 break;}
02100 case 167:
02101 #line 541 "grammar.y"
02102 { yyval.cblk = new CaseBlockNode(yyvsp[-1].clist, 0, 0); ;
02103 break;}
02104 case 168:
02105 #line 543 "grammar.y"
02106 { yyval.cblk = new CaseBlockNode(yyvsp[-3].clist, yyvsp[-2].ccl, yyvsp[-1].clist); ;
02107 break;}
02108 case 169:
02109 #line 547 "grammar.y"
02110 { yyval.clist = 0; ;
02111 break;}
02112 case 171:
02113 #line 552 "grammar.y"
02114 { yyval.clist = new ClauseListNode(yyvsp[0].ccl); ;
02115 break;}
02116 case 172:
02117 #line 553 "grammar.y"
02118 { yyval.clist = new ClauseListNode(yyvsp[-1].clist, yyvsp[0].ccl); ;
02119 break;}
02120 case 173:
02121 #line 557 "grammar.y"
02122 { yyval.ccl = new CaseClauseNode(yyvsp[-1].node); ;
02123 break;}
02124 case 174:
02125 #line 558 "grammar.y"
02126 { yyval.ccl = new CaseClauseNode(yyvsp[-2].node, yyvsp[0].slist); ;
02127 break;}
02128 case 175:
02129 #line 562 "grammar.y"
02130 { yyval.ccl = new CaseClauseNode(0); ;
02131 break;}
02132 case 176:
02133 #line 563 "grammar.y"
02134 { yyval.ccl = new CaseClauseNode(0, yyvsp[0].slist); ;
02135 break;}
02136 case 177:
02137 #line 567 "grammar.y"
02138 { yyvsp[0].stat->pushLabel(*yyvsp[-2].ident);
02139 yyval.stat = new LabelNode(*yyvsp[-2].ident, yyvsp[0].stat); DBG(yyval.stat,yylsp[-2],yylsp[-1]); ;
02140 break;}
02141 case 178:
02142 #line 572 "grammar.y"
02143 { yyval.stat = new ThrowNode(yyvsp[-1].node); DBG(yyval.stat,yylsp[-2],yylsp[0]); ;
02144 break;}
02145 case 179:
02146 #line 573 "grammar.y"
02147 { if (automatic()) {
02148 yyval.stat = new ThrowNode(yyvsp[-1].node); DBG(yyval.stat,yylsp[-2],yylsp[-2]);
02149 } else {
02150 YYABORT; } ;
02151 break;}
02152 case 180:
02153 #line 580 "grammar.y"
02154 { yyval.stat = new TryNode(yyvsp[-1].stat, yyvsp[0].cnode); DBG(yyval.stat,yylsp[-2],yylsp[-2]); ;
02155 break;}
02156 case 181:
02157 #line 581 "grammar.y"
02158 { yyval.stat = new TryNode(yyvsp[-1].stat, yyvsp[0].fnode); DBG(yyval.stat,yylsp[-2],yylsp[-2]); ;
02159 break;}
02160 case 182:
02161 #line 582 "grammar.y"
02162 { yyval.stat = new TryNode(yyvsp[-2].stat, yyvsp[-1].cnode, yyvsp[0].fnode); DBG(yyval.stat,yylsp[-3],yylsp[-3]); ;
02163 break;}
02164 case 183:
02165 #line 586 "grammar.y"
02166 { CatchNode *c; yyval.cnode = c = new CatchNode(*yyvsp[-2].ident, yyvsp[0].stat);
02167 DBG(c,yylsp[-4],yylsp[-1]); ;
02168 break;}
02169 case 184:
02170 #line 591 "grammar.y"
02171 { FinallyNode *f; yyval.fnode = f = new FinallyNode(yyvsp[0].stat); DBG(f,yylsp[-1],yylsp[-1]); ;
02172 break;}
02173 case 186:
02174 #line 597 "grammar.y"
02175 { yyval.func = yyvsp[0].func; ;
02176 break;}
02177 case 187:
02178 #line 601 "grammar.y"
02179 { yyval.func = new FuncDeclNode(*yyvsp[-3].ident, yyvsp[0].body); DBG(yyval.func,yylsp[-4],yylsp[-1]); ;
02180 break;}
02181 case 188:
02182 #line 603 "grammar.y"
02183 { yyval.func = new FuncDeclNode(*yyvsp[-4].ident, yyvsp[-2].param, yyvsp[0].body); DBG(yyval.func,yylsp[-5],yylsp[-1]); ;
02184 break;}
02185 case 189:
02186 #line 607 "grammar.y"
02187 { yyval.node = new FuncExprNode(yyvsp[0].body); ;
02188 break;}
02189 case 190:
02190 #line 609 "grammar.y"
02191 { yyval.node = new FuncExprNode(yyvsp[-2].param, yyvsp[0].body); ;
02192 break;}
02193 case 191:
02194 #line 614 "grammar.y"
02195 { yyval.param = new ParameterNode(*yyvsp[0].ident); ;
02196 break;}
02197 case 192:
02198 #line 615 "grammar.y"
02199 { yyval.param = new ParameterNode(yyvsp[-2].param, *yyvsp[0].ident); ;
02200 break;}
02201 case 193:
02202 #line 619 "grammar.y"
02203 { yyval.body = new FunctionBodyNode(0);
02204 DBG(yyval.body, yylsp[-1], yylsp[0]);;
02205 break;}
02206 case 194:
02207 #line 621 "grammar.y"
02208 { yyval.body = new FunctionBodyNode(yyvsp[-1].srcs);
02209 DBG(yyval.body, yylsp[-2], yylsp[0]);;
02210 break;}
02211 case 195:
02212 #line 626 "grammar.y"
02213 { yyval.prog = new FunctionBodyNode(0);
02214 yyval.prog->setLoc(0, 0, Parser::source);
02215 Parser::progNode = yyval.prog; ;
02216 break;}
02217 case 196:
02218 #line 629 "grammar.y"
02219 { yyval.prog = new FunctionBodyNode(yyvsp[0].srcs);
02220 Parser::progNode = yyval.prog; ;
02221 break;}
02222 case 197:
02223 #line 634 "grammar.y"
02224 { yyval.srcs = new SourceElementsNode(yyvsp[0].stat); ;
02225 break;}
02226 case 198:
02227 #line 635 "grammar.y"
02228 { yyval.srcs = new SourceElementsNode(yyvsp[-1].srcs, yyvsp[0].stat); ;
02229 break;}
02230 case 199:
02231 #line 639 "grammar.y"
02232 { yyval.stat = yyvsp[0].stat; ;
02233 break;}
02234 case 200:
02235 #line 640 "grammar.y"
02236 { yyval.stat = yyvsp[0].func; ;
02237 break;}
02238 }
02239
02240 #line 709 "/usr/share/bison/bison.simple"
02241
02242
02243 yyvsp -= yylen;
02244 yyssp -= yylen;
02245 #if YYLSP_NEEDED
02246 yylsp -= yylen;
02247 #endif
02248
02249 #if YYDEBUG
02250 if (yydebug)
02251 {
02252 short *yyssp1 = yyss - 1;
02253 YYFPRINTF (stderr, "state stack now");
02254 while (yyssp1 != yyssp)
02255 YYFPRINTF (stderr, " %d", *++yyssp1);
02256 YYFPRINTF (stderr, "\n");
02257 }
02258 #endif
02259
02260 *++yyvsp = yyval;
02261 #if YYLSP_NEEDED
02262 *++yylsp = yyloc;
02263 #endif
02264
02265
02266
02267
02268
02269 yyn = yyr1[yyn];
02270
02271 yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
02272 if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
02273 yystate = yytable[yystate];
02274 else
02275 yystate = yydefgoto[yyn - YYNTBASE];
02276
02277 goto yynewstate;
02278
02279
02280
02281
02282
02283 yyerrlab:
02284
02285 if (!yyerrstatus)
02286 {
02287 ++yynerrs;
02288
02289 #ifdef YYERROR_VERBOSE
02290 yyn = yypact[yystate];
02291
02292 if (yyn > YYFLAG && yyn < YYLAST)
02293 {
02294 YYSIZE_T yysize = 0;
02295 char *yymsg;
02296 int yyx, yycount;
02297
02298 yycount = 0;
02299
02300
02301 for (yyx = yyn < 0 ? -yyn : 0;
02302 yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++)
02303 if (yycheck[yyx + yyn] == yyx)
02304 yysize += yystrlen (yytname[yyx]) + 15, yycount++;
02305 yysize += yystrlen ("parse error, unexpected ") + 1;
02306 yysize += yystrlen (yytname[YYTRANSLATE (yychar)]);
02307 yymsg = (char *) YYSTACK_ALLOC (yysize);
02308 if (yymsg != 0)
02309 {
02310 char *yyp = yystpcpy (yymsg, "parse error, unexpected ");
02311 yyp = yystpcpy (yyp, yytname[YYTRANSLATE (yychar)]);
02312
02313 if (yycount < 5)
02314 {
02315 yycount = 0;
02316 for (yyx = yyn < 0 ? -yyn : 0;
02317 yyx < (int) (sizeof (yytname) / sizeof (char *));
02318 yyx++)
02319 if (yycheck[yyx + yyn] == yyx)
02320 {
02321 const char *yyq = ! yycount ? ", expecting " : " or ";
02322 yyp = yystpcpy (yyp, yyq);
02323 yyp = yystpcpy (yyp, yytname[yyx]);
02324 yycount++;
02325 }
02326 }
02327 yyerror (yymsg);
02328 YYSTACK_FREE (yymsg);
02329 }
02330 else
02331 yyerror ("parse error; also virtual memory exhausted");
02332 }
02333 else
02334 #endif
02335 yyerror ("parse error");
02336 }
02337 goto yyerrlab1;
02338
02339
02340
02341
02342
02343 yyerrlab1:
02344 if (yyerrstatus == 3)
02345 {
02346
02347
02348
02349
02350 if (yychar == YYEOF)
02351 YYABORT;
02352 YYDPRINTF ((stderr, "Discarding token %d (%s).\n",
02353 yychar, yytname[yychar1]));
02354 yychar = YYEMPTY;
02355 }
02356
02357
02358
02359
02360 yyerrstatus = 3;
02361
02362 goto yyerrhandle;
02363
02364
02365
02366
02367
02368
02369 yyerrdefault:
02370 #if 0
02371
02372
02373
02374
02375 yyn = yydefact[yystate];
02376 if (yyn)
02377 goto yydefault;
02378 #endif
02379
02380
02381
02382
02383
02384
02385 yyerrpop:
02386 if (yyssp == yyss)
02387 YYABORT;
02388 yyvsp--;
02389 yystate = *--yyssp;
02390 #if YYLSP_NEEDED
02391 yylsp--;
02392 #endif
02393
02394 #if YYDEBUG
02395 if (yydebug)
02396 {
02397 short *yyssp1 = yyss - 1;
02398 YYFPRINTF (stderr, "Error: state stack now");
02399 while (yyssp1 != yyssp)
02400 YYFPRINTF (stderr, " %d", *++yyssp1);
02401 YYFPRINTF (stderr, "\n");
02402 }
02403 #endif
02404
02405
02406
02407
02408 yyerrhandle:
02409 yyn = yypact[yystate];
02410 if (yyn == YYFLAG)
02411 goto yyerrdefault;
02412
02413 yyn += YYTERROR;
02414 if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
02415 goto yyerrdefault;
02416
02417 yyn = yytable[yyn];
02418 if (yyn < 0)
02419 {
02420 if (yyn == YYFLAG)
02421 goto yyerrpop;
02422 yyn = -yyn;
02423 goto yyreduce;
02424 }
02425 else if (yyn == 0)
02426 goto yyerrpop;
02427
02428 if (yyn == YYFINAL)
02429 YYACCEPT;
02430
02431 YYDPRINTF ((stderr, "Shifting error token, "));
02432
02433 *++yyvsp = yylval;
02434 #if YYLSP_NEEDED
02435 *++yylsp = yylloc;
02436 #endif
02437
02438 yystate = yyn;
02439 goto yynewstate;
02440
02441
02442
02443
02444
02445 yyacceptlab:
02446 yyresult = 0;
02447 goto yyreturn;
02448
02449
02450
02451
02452 yyabortlab:
02453 yyresult = 1;
02454 goto yyreturn;
02455
02456
02457
02458
02459 yyoverflowlab:
02460 yyerror ("parser stack overflow");
02461 yyresult = 2;
02462
02463
02464 yyreturn:
02465 #ifndef yyoverflow
02466 if (yyss != yyssa)
02467 YYSTACK_FREE (yyss);
02468 #endif
02469 return yyresult;
02470 }
02471 #line 643 "grammar.y"
02472
02473
02474 int yyerror (const char *)
02475 {
02476
02477
02478 return 1;
02479 }
02480
02481
02482 bool automatic()
02483 {
02484 if (Lexer::curr()->hadError())
02485 return false;
02486 if (yychar == '}' || yychar == 0)
02487 return true;
02488 else if (Lexer::curr()->prevTerminator())
02489 return true;
02490
02491 return false;
02492 }