📄 ecma.tab.c
字号:
/* A Bison parser, made from ecma.y by GNU bison 1.35. */#define YYBISON 1 /* Identify Bison output. */# define ASSIGNMENT_OPERATOR 257# define BREAK 258# define CASE 259# define CATCH 260# define CONTINUE 261# define DECREMENT 262# define DEFAULT 263# define DELETE 264# define DO 265# define ELSE 266# define EQUAL 267# define EXACTLY_EQUAL 268# define EXACTLY_NOT_EQUAL 269# define FALSE 270# define FINALLY 271# define FOR 272# define FUNCTION 273# define GREATER_EQUAL 274# define IDENTIFIER 275# define IF 276# define IN 277# define INCREMENT 278# define INSTANCEOF 279# define LESS_EQUAL 280# define LOGICAL_AND 281# define LOGICAL_OR 282# define NEW 283# define NOT_EQUAL 284# define NULL_LITERAL 285# define NUMERIC 286# define RETURN 287# define SHIFT_LEFT 288# define SHIFT_RIGHT 289# define SHIFT_RIGHT_UNSIGNED 290# define STRING 291# define SWITCH 292# define THIS 293# define THROW 294# define TRY 295# define TRUE 296# define TYPEOF 297# define VAR 298# define VOID 299# define WITH 300# define WHILE 301#line 1 "ecma.y" /* ecma.y -- written by Alexis WILKE for Made to Order Software, Ltd. (c) 2004-2005 */ /* grammar parser for Action Scripts *//*Copyright (c) 2004-2005 Made to Order Software, Ltd.Permission is hereby granted, free of charge, to anyperson obtaining a copy of this software andassociated documentation files (the "Software"), todeal in the Software without restriction, includingwithout limitation the rights to use, copy, modify,merge, publish, distribute, sublicense, and/or sellcopies of the Software, and to permit persons to whomthe Software is furnished to do so, subject to thefollowing conditions:The above copyright notice and this permission noticeshall be included in all copies or substantialportions of the Software.THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OFANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOTLIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESSFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NOEVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BELIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,ARISING FROM, OUT OF OR IN CONNECTION WITH THESOFTWARE OR THE USE OR OTHER DEALINGS IN THESOFTWARE.*/#include "sswf.h"#define YYPARSE_PARAM resultstatic void yyerror(const char *msg);#line 47 "ecma.y"#ifndef YYSTYPEtypedef union{ struct node_t *node; int unused;} yystype;# define YYSTYPE yystype# define YYSTYPE_IS_TRIVIAL 1#endif#ifndef YYDEBUG# define YYDEBUG 0#endif#define YYFINAL 377#define YYFLAG -32768#define YYNTBASE 72/* YYTRANSLATE(YYLEX) -- Bison token number corresponding to YYLEX. */#define YYTRANSLATE(x) ((unsigned)(x) <= 301 ? yytranslate[x] : 148)/* YYTRANSLATE[YYLEX] -- Bison token number corresponding to YYLEX. */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, 62, 2, 2, 2, 65, 68, 2, 48, 49, 63, 59, 52, 60, 58, 64, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 55, 53, 66, 54, 67, 71, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 56, 2, 57, 69, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 50, 70, 51, 61, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 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};#if YYDEBUGstatic const short yyprhs[] ={ 0, 0, 2, 4, 6, 9, 11, 13, 22, 30, 32, 40, 47, 49, 53, 55, 57, 59, 61, 63, 65, 67, 69, 71, 73, 75, 77, 79, 81, 83, 86, 90, 92, 95, 99, 101, 105, 107, 111, 113, 116, 118, 121, 124, 127, 129, 132, 140, 146, 154, 160, 170, 181, 189, 198, 200, 203, 205, 208, 210, 213, 219, 225, 228, 232, 234, 237, 241, 246, 249, 253, 257, 260, 264, 268, 273, 279, 282, 284, 286, 288, 290, 292, 296, 298, 300, 302, 304, 306, 309, 313, 317, 322, 324, 327, 331, 333, 336, 339, 343, 345, 349, 353, 355, 357, 359, 361, 363, 368, 372, 376, 378, 381, 384, 387, 392, 396, 399, 403, 405, 409, 411, 413, 415, 418, 421, 423, 426, 429, 432, 435, 438, 441, 444, 447, 450, 452, 456, 460, 464, 466, 470, 474, 476, 480, 484, 488, 490, 494, 498, 502, 506, 510, 514, 516, 520, 524, 528, 532, 536, 538, 542, 546, 550, 554, 556, 560, 564, 568, 572, 574, 578, 580, 584, 586, 590, 592, 596, 598, 602, 604, 608, 610, 614, 616, 620, 622, 626, 628, 632, 634, 640, 642, 648, 650, 654, 656, 660, 662, 666, 668, 672, 673};static const short yyrhs[] ={ 73, 0, 74, 0, 75, 0, 74, 75, 0, 80, 0, 76, 0, 19, 21, 48, 78, 49, 50, 79, 51, 0, 19, 21, 48, 49, 50, 79, 51, 0, 76, 0, 19, 48, 78, 49, 50, 79, 51, 0, 19, 48, 49, 50, 79, 51, 0, 21, 0, 78, 52, 21, 0, 74, 0, 81, 0, 83, 0, 90, 0, 91, 0, 92, 0, 93, 0, 94, 0, 95, 0, 96, 0, 97, 0, 102, 0, 98, 0, 103, 0, 104, 0, 50, 51, 0, 50, 82, 51, 0, 80, 0, 82, 80, 0, 44, 84, 53, 0, 86, 0, 84, 52, 86, 0, 87, 0, 85, 52, 87, 0, 21, 0, 21, 88, 0, 21, 0, 21, 89, 0, 54, 143, 0, 54, 144, 0, 53, 0, 145, 53, 0, 22, 48, 145, 49, 80, 12, 80, 0, 22, 48, 145, 49, 80, 0, 11, 80, 47, 48, 145, 49, 53, 0, 47, 48, 145, 49, 80, 0, 18, 48, 147, 53, 147, 53, 147, 49, 80, 0, 18, 48, 44, 85, 53, 147, 53, 147, 49, 80, 0, 18, 48, 121, 23, 145, 49, 80, 0, 18, 48, 44, 85, 23, 145, 49, 80, 0, 7, 0, 7, 21, 0, 4, 0, 4, 21, 0, 33, 0, 33, 145, 0, 46, 48, 145, 49, 80, 0, 38, 48, 145, 49, 99, 0, 50, 51, 0, 50, 100, 51, 0, 101, 0, 100, 101, 0, 5, 145, 55, 0, 5, 145, 55, 82, 0, 9, 55, 0, 9, 55, 82, 0, 21, 55, 80, 0, 40, 145, 0, 41, 81, 105, 0, 41, 81, 106, 0, 41, 81, 105, 106, 0, 6, 48, 21, 51, 81, 0, 17, 81, 0, 39, 0, 21, 0, 108, 0, 109, 0, 112, 0, 48, 145, 49, 0, 31, 0, 42, 0, 16, 0, 32, 0, 37, 0, 56, 57, 0, 56, 111, 57, 0, 56, 110, 57, 0, 56, 110, 111, 57, 0, 143, 0, 111, 143, 0, 110, 111, 143, 0, 52, 0, 111, 52, 0, 50, 51, 0, 50, 113, 51, 0, 114, 0, 113, 52, 114, 0, 115, 55, 143, 0, 21, 0, 37, 0, 32, 0, 107, 0, 77, 0, 116, 56, 145, 57, 0, 116, 58, 21, 0, 29, 116, 119, 0, 116, 0, 29, 117, 0, 116, 119, 0, 118, 119, 0, 118, 56, 145, 57, 0, 118, 58, 21, 0, 48, 49, 0, 48, 120, 49, 0, 143, 0, 120, 52, 143, 0, 117, 0, 118, 0, 121, 0, 121, 24, 0, 121, 8, 0, 122, 0, 10, 123, 0, 45, 123, 0, 43, 123, 0, 24, 123, 0, 8, 123, 0, 59, 123, 0, 60, 123, 0, 61, 123, 0, 62, 123, 0, 123, 0, 124, 63, 123, 0, 124, 64, 123, 0, 124, 65, 123, 0, 124, 0, 125, 59, 124, 0, 125, 60, 124, 0, 125, 0, 126, 34, 125, 0, 126, 35, 125, 0, 126, 36, 125, 0, 126, 0, 127, 66, 126, 0, 127, 67, 126, 0, 127, 26, 126, 0, 127, 20, 126, 0, 127, 25, 126, 0, 127, 23, 126, 0, 126, 0, 128, 66, 126, 0, 128, 67, 126, 0, 128, 26, 126, 0, 128, 20, 126, 0, 128, 25, 126, 0, 127, 0, 129, 13, 127, 0, 129, 30, 127, 0, 129, 14, 127, 0, 129, 15, 127, 0, 128, 0, 130, 13, 128, 0, 130, 30, 128, 0, 130, 14, 128, 0, 130, 15, 128, 0, 129, 0, 131, 68, 129, 0, 130, 0, 132, 68, 130, 0, 131, 0, 133, 69, 131, 0, 132, 0, 134, 69, 132, 0, 133, 0, 135, 70, 133, 0, 134, 0, 136, 70, 134, 0, 135, 0, 137, 27, 135, 0, 136, 0, 138, 27, 136, 0, 137, 0, 139, 28, 137, 0, 138, 0, 140, 28, 138, 0, 139, 0, 139, 71, 143, 55, 143, 0, 140, 0, 140, 71, 143, 55, 144, 0, 141, 0, 121, 3, 143, 0, 142, 0, 121, 3, 144, 0, 143, 0, 145, 52, 143, 0, 144, 0, 146, 52, 144, 0, 0, 146, 0};#endif#if YYDEBUG/* YYRLINE[YYN] -- source line where rule number YYN was defined. */static const short yyrline[] ={ 0, 151, 157, 163, 167, 172, 176, 182, 186, 191, 195, 198, 203, 207, 212, 223, 227, 230, 233, 236, 239, 242, 245, 248, 251, 254, 257, 260, 263, 269, 273, 279, 283, 289, 295, 299, 305, 309, 315, 319, 325, 329, 335, 342, 350, 356, 364, 368, 374, 378, 381, 384, 387, 390, 397, 401, 407, 411, 417, 421, 430, 437, 444, 448, 454, 458, 465, 469, 472, 475, 482, 490, 497, 501, 504, 510, 517, 526, 530, 533, 536, 539, 542, 549, 553, 556, 559, 562, 569, 573, 576, 579, 585, 589, 592, 598, 602, 608, 612, 618, 622, 627, 634, 638, 641, 648, 652, 655, 658, 661, 667, 671, 677, 681, 684, 687, 693, 697, 704, 708, 715, 719, 725, 729, 732, 739, 743, 746, 749, 752, 755, 758, 761, 764, 767, 773, 777, 780, 783, 790, 794, 797, 804, 808, 811, 814, 820, 824, 827, 830, 833, 836, 839, 846, 850, 853, 856, 859, 862, 868, 872, 875, 878, 881, 889, 893, 896, 899, 902, 909, 913, 918, 922, 928, 932, 937, 941, 947, 951, 956, 960, 968, 972, 977, 981, 989, 993, 998, 1002, 1008, 1012, 1018, 1022, 1029, 1033, 1038, 1042, 1049, 1053, 1058, 1062, 1068, 1072};#endif#if (YYDEBUG) || defined YYERROR_VERBOSE/* YYTNAME[TOKEN_NUM] -- String name of the token TOKEN_NUM. */static const char *const yytname[] ={ "$", "error", "$undefined.", "ASSIGNMENT_OPERATOR", "BREAK", "CASE", "CATCH", "CONTINUE", "DECREMENT", "DEFAULT", "DELETE", "DO", "ELSE", "EQUAL", "EXACTLY_EQUAL", "EXACTLY_NOT_EQUAL", "FALSE", "FINALLY", "FOR", "FUNCTION", "GREATER_EQUAL", "IDENTIFIER", "IF", "IN", "INCREMENT", "INSTANCEOF", "LESS_EQUAL", "LOGICAL_AND", "LOGICAL_OR", "NEW", "NOT_EQUAL", "NULL_LITERAL", "NUMERIC", "RETURN", "SHIFT_LEFT", "SHIFT_RIGHT", "SHIFT_RIGHT_UNSIGNED", "STRING", "SWITCH", "THIS", "THROW", "TRY", "TRUE", "TYPEOF", "VAR", "VOID", "WITH", "WHILE", "'('", "')'", "'{'", "'}'", "','", "';'", "'='", "':'", "'['", "']'", "'.'", "'+'", "'-'", "'~'", "'!'", "'*'", "'/'", "'%'", "'<'", "'>'", "'&'", "'^'", "'|'", "'?'", "start", "program", "source_element_list", "source_element", "function_declaration", "function_expression", "formal_parameter_list", "function_body", "statement", "block", "statement_list", "variable_statement", "variable_declaration_list", "variable_declaration_list_no_in", "variable_declaration", "variable_declaration_no_in", "initializer", "initializer_no_in", "empty_statement", "expression_statement", "if_statement", "iteration_statement", "continue_statement", "break_statement", "return_statement", "with_statement", "switch_statement", "case_block", "case_clause_list", "case_clause", "labelled_statement", "throw_statement", "try_statement", "catch", "finally", "primary_expression", "literal", "array_literal", "element_list", "elision", "object_literal", "property_name_and_value_list", "property", "property_name", "member_expression", "new_expression", "call_expression", "arguments", "argument_list", "left_hand_side_expression", "postfix_expression", "unary_expression", "multiplicative_expression", "additive_expression", "shift_expression", "relational_expression", "relational_expression_no_in", "equality_expression", "equality_expression_no_in", "bitwise_and_expression", "bitwise_and_expression_no_in", "bitwise_xor_expression", "bitwise_xor_expression_no_in", "bitwise_or_expression", "bitwise_or_expression_no_in", "logical_and_expression", "logical_and_expression_no_in", "logical_or_expression", "logical_or_expression_no_in", "conditional_expression", "conditional_expression_no_in", "assignment_expression", "assignment_expression_no_in", "expression", "expression_no_in", "expression_no_in_opt", 0};#endif/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */static const short yyr1[] ={ 0, 72, 73, 74, 74, 75, 75, 76, 76, 77, 77, 77, 78, 78, 79, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 81, 81, 82, 82, 83, 84, 84, 85, 85, 86, 86, 87, 87, 88, 89, 90, 91, 92, 92, 93, 93, 93, 93, 93, 93, 94, 94, 95, 95, 96, 96, 97, 98, 99, 99, 100, 100, 101, 101, 101, 101, 102, 103, 104, 104, 104, 105, 106, 107, 107, 107, 107, 107, 107, 108, 108, 108, 108, 108, 109, 109, 109, 109, 110, 110, 110, 111, 111, 112, 112, 113, 113, 114, 115, 115, 115, 116, 116, 116, 116, 116, 117, 117, 118, 118, 118, 118, 119, 119, 120, 120, 121, 121, 122, 122, 122, 123, 123, 123, 123, 123, 123, 123, 123, 123, 123, 124, 124, 124, 124, 125, 125, 125, 126, 126, 126, 126, 127, 127, 127, 127, 127, 127, 127, 128, 128, 128, 128, 128, 128, 129, 129, 129, 129, 129, 130, 130, 130, 130, 130, 131, 131, 132, 132, 133, 133, 134, 134, 135, 135, 136, 136, 137, 137, 138, 138, 139, 139, 140, 140, 141, 141, 142, 142, 143, 143, 144, 144, 145, 145, 146, 146, 147, 147};/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */static const short yyr2[] ={ 0, 1, 1, 1, 2, 1, 1, 8, 7, 1, 7, 6, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 2, 3, 1, 3, 1, 3, 1, 2, 1, 2, 2, 2, 1, 2, 7, 5, 7, 5, 9, 10, 7, 8, 1, 2, 1, 2, 1, 2, 5, 5, 2, 3, 1, 2, 3, 4, 2, 3, 3, 2, 3, 3, 4, 5, 2, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 2, 3, 3, 4, 1, 2, 3, 1, 2, 2, 3, 1, 3, 3, 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, 1, 3, 3, 3, 1, 3, 3, 1, 3, 3, 3, 1, 3, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, 3, 3, 3, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 3, 1, 5, 1, 5, 1, 3, 1, 3, 1, 3, 1, 3, 0, 1};/* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE doesn't specify something else to do. Zero means the default is an error. */static const short yydefact[] ={ 0, 56, 54, 0, 0, 0, 85, 0, 0, 78, 0, 0, 0, 83, 86, 58, 87, 0, 77, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 44, 0, 0, 0, 0, 0, 1, 2, 3, 6, 106, 5, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 26, 25, 27, 28, 105, 79, 80, 81, 110, 120, 121, 122, 125, 135, 139, 142, 146, 159, 169, 173, 177, 181, 185, 189, 193, 197, 0, 57, 55, 78, 0, 9, 122, 130, 126, 0, 201, 0, 0, 0, 0, 129, 110, 111, 59, 0, 71, 0, 0, 128, 38, 0, 34, 127, 0, 0, 0, 78, 86, 87, 29, 31, 0, 0, 99, 0, 95, 88, 0, 0, 92, 131, 132, 133, 134, 4, 0, 0, 0, 112, 0, 0, 113, 0, 124, 123, 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, 45, 102, 104, 103, 97, 0, 0, 122, 153, 164, 171, 175, 179, 183, 187, 191, 195, 199,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -