📄 tparser.cpp
字号:
449, 452, 456, 459, 462, 466, 467, 468, 469, 475,
485, 495, 496, 497, 500, 501, 507, 510, 511, 515,
518, 519, 522, 530, 533, 534, 537, 538, 547, 549,
550, 553, 553, 556, 556, 556, 559, 560, 561, 564,
565, 569, 571, 574, 575, 576, 580, 583, 583, 588,
598, 605, 609, 613, 615, 615, 624, 626, 631, 634,
635, 638, 639, 640, 643, 650, 651, 652, 658, 660,
666, 668, 669, 672, 683, 686, 688, 693, 694, 695,
698, 700, 706, 720, 724, 728, 729, 729, 729, 729,
730, 730, 730, 730, 730, 733, 734, 736, 740, 744,
745, 748, 752, 752, 752, 752, 755, 760, 762, 764,
766, 767, 768, 769, 770, 771, 772, 774, 775, 777,
778, 779, 780, 781, 782, 783, 784, 785, 787, 788,
790, 791, 792, 793, 797, 801, 802, 803, 804, 807,
808, 810, 812, 813, 814, 816, 819, 822, 826, 827,
828, 829, 830, 831, 833, 836, 838, 841, 843, 846,
849, 852, 854, 857, 858, 861, 862, 865, 866, 869,
875, 877, 878, 882, 887, 888, 891, 894, 897, 901,
905, 908, 911, 913, 914, 918, 921, 924, 925, 926,
929, 931, 932, 934, 939, 941, 943, 947, 950, 954,
958, 964, 969, 974, 976, 983, 988, 990, 992, 995,
1002, 1004, 1008, 1010, 1011, 1015, 1017, 1018, 1021, 1026,
1032, 1037, 1045, 1052, 1060, 1061, 1064, 1069, 1070, 1074,
1076, 1079, 1081, 1085, 1087, 1090, 1092, 1095, 1103, 1108,
1109
};
static const char * const yytname[] = { "$","error","$undefined.","TOKEN",
"IDEN","CONSTANT","TYPENAME","TYPENAME_FUNCTION","TEMPLATE_NAME","TEMPLATE_NAME_EXPR",
"THIS_CLASSNAME","FLOAT","DOUBLE","UNSIGNED","INT","SHORT","LONG","CHAR","VOID",
"BOOL","TYPEDEF","CLASS","STRUCT","ENUM","OPERATOR","GOTO","UNION","STATIC_CAST",
"CONST_CAST","DYNAMIC_CAST","REINTERPRET_CAST","STRUCT_X","CLASS_X","STRUCT_Y",
"CLASS_Y","UNION_Y","IF","ELSE","WHILE","DO","FOR","SWITCH","CASE","RETURN",
"CONTINUE","BREAK","DEFAULT","NAMESPACE","USING","TRY","CATCH","THROW","TEMPLATE",
"EXTERN","THREEDOT","TYPEOF","EXPLICIT","FRIEND","LAMBDA","FAKE_INIT_LIST","CONST",
"STATIC","STDCALL","API","VIRTUAL","PRIVATE","PROTECTED","PUBLIC","COMMA","ASSIGN",
"MUL_A","DIV_A","MOD_A","ADD_A","MINUS_A","SHL_A","SHR_A","BAND_A","BOR_A","XOR_A",
"ARITH_IF","LOG_OR","LOG_AND","BIN_OR","BIN_XOR","BIN_AND","EQUAL","NOT_EQUAL",
"LESS_THAN","LEQ","GREATER","GEQ","LSHIFT","RSHIFT","PLUS","MINUS","STAR","DIVIDE",
"MODULO","MEMBER_ARROW","MEMBER_DOT","NEW","DELETE","TYPECAST","DEREF","ADDR",
"UPLUS","UMINUS","LOG_NOT","BIN_NOT","INCR","DECR","SIZEOF","TYPE_CONSTRUCT",
"FUN_CALL","ARRAY","ARROW","DOT","BINARY_SCOPE","UNARY_SCOPE","'{'","'}'","';'",
"':'","'('","')'","'['","']'","','","program","statement_list","block","@1",
"statement","declaration","typedef_stmt","@2","declaration_stmt","this_classname",
"construct_destruct","conversion_operator","function_front","explicit_mod","ctor_dtor_dcl",
"function_declaration","extern_c_declaration","any_declaration","extern_c","extern_qualifier",
"function_definition","ctor_dtor","poss_class_init_list","@3","class_init_list",
"class_init_item","type_expr","poss_const","mod_type_name","modifiers","open_parens",
"close_parens","type_name","integer","pointer_expr","array_expr","@4","tname_expr",
"tname_exp2","token","begin_list","end_list","arg_list","type_list","type_expr_init",
"init_tname_expr","tname_expr_list","poss_int_const","init_assign","poss_initialization",
"@5","brace_expr","brace_item","brace_list","access_modifier","poss_access_modifier",
"class_or_struct","class_or_struct_ex","poss_derived","token_or_typename","class_name",
"class_id","@6","class_declaration","@7","access_specifier","friend_declaration",
"@8","enum_stmt","@9","@10","poss_enum_list","poss_tag","enum_item","enum_list",
"namespace_declaration","@11","@12","poss_class_name","using_directive","using_declaration",
"goto_stmt","@13","@14","goto_label","scope","global_scope","end_scope","assign_op",
"scoped_name","expr","poss_size","type_expression","typecast_type","type_bracket",
"_expr","@15","@16","@17","@18","poss_array","function_arg_list","init_list",
"expr_list","condition","poss_expr","controlled_statement","@19","if_front",
"if_stmt","if_else_stmt","@20","while_stmt","@21","@22","do_stmt","@23","for_init",
"for_stmt","@24","@25","@26","switch_stmt","@27","return_stmt","case_label",
"break_stmt","continue_stmt","try_catch_stmt","try_block","@28","except_block",
"catch_block","@29","catch_block_list","throw_stmt","typename_function","typename_class",
"typename_expr","template_class","template_expr","template_header","template_function_declaration",
"template_class_declaration","struct_or_class_x","template_class_header","template_class_name",
"begin_templ_list","end_templ_list","template_type_list","templ_item_list","class_item",
"class_parm","templ_item","class_item"
};
#endif
static const short yyr1[] = { 0,
129, 130, 130, 130, 132, 131, 133, 133, 133, 133,
133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
133, 133, 133, 133, 133, 133, 133, 133, 133, 133,
133, 133, 133, 133, 133, 133, 134, 136, 135, 137,
137, 138, 139, 139, 140, 141, 142, 143, 144, 144,
144, 144, 145, 145, 145, 146, 146, 147, 148, 149,
149, 149, 149, 150, 151, 152, 151, 153, 153, 153,
154, 154, 155, 156, 156, 157, 157, 157, 157, 158,
158, 158, 158, 159, 160, 161, 161, 161, 161, 161,
161, 161, 161, 161, 161, 161, -1, -1, -1, -1,
162, 162, 162, 162, 163, 165, 164, 166, 166, 166,
166, 166, 166, 166, 166, 166, 166, 166, 167, 167,
167, 168, 169, 170, 171, 172, 172, 172, 172, 173,
174, 175, 175, 175, 176, 176, 177, 178, 178, 178,
179, 178, 178, 180, 181, 181, 182, 182, 183, 183,
183, 184, 184, 185, 185, 185, 186, 186, 186, 187,
187, 188, 188, 189, 189, 189, 189, 191, 190, 193,
192, 192, 194, 196, 195, 195, 198, 199, 197, 200,
200, 201, 201, 201, 202, 203, 203, 203, 205, 206,
204, 207, 207, 208, 209, 209, 209, 211, 212, 210,
213, 213, 214, 215, 216, 217, 217, 217, 217, 217,
217, 217, 217, 217, 217, 218, 218, 218, 219, 220,
220, 221, 222, 222, 222, 222, 223, 224, 224, 224,
224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
224, 224, 224, 224, 224, 224, 224, 224, 224, 225,
224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
224, 224, 224, 224, 224, 224, 226, 224, 227, 224,
228, 224, 224, 229, 229, -1, -1, 230, 230, 231,
232, 232, 232, 233, 234, 234, 236, 235, 237, 238,
240, 239, 242, 243, 241, 245, 244, 246, 246, 246,
248, 249, 250, 247, 252, 251, 253, 254, 254, 255,
256, 257, 259, 258, 260, 262, 261, 263, 263, 264,
265, 265, 266, 266, 266, 267, 267, 267, 268, 269,
270, 271, 272, 272, 273, 273, 274, 275, 275, 276,
277, 278, 278, 279, 279, 280, 280, 281, 282, 282,
282
};
static const short yyr2[] = { 0,
1, 0, 1, 2, 0, 4, 1, 1, 1, 1,
1, 1, 2, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 2, 3, 0, 3, 1,
1, 1, 1, 2, 4, 5, 1, 3, 2, 1,
2, 2, 2, 4, 2, 1, 1, 2, 1, 2,
1, 2, 2, 4, 0, 0, 3, 1, 1, 3,
2, 2, 2, 0, 1, 1, 2, 2, 3, 1,
1, 1, 1, 1, 1, 1, 4, 1, 2, 1,
1, 1, 1, 1, 1, 1, 0, 1, 0, 1,
1, 1, 1, 1, 4, 0, 4, 0, 1, 2,
7, 3, 2, 3, 3, 2, 2, 1, 0, 2,
2, 1, 1, 1, 3, 0, 1, 3, 1, 2,
2, 0, 1, 3, 0, 1, 1, 0, 2, 1,
0, 5, 2, 3, 1, 1, 1, 3, 1, 1,
1, 0, 1, 1, 1, 1, 1, 1, 1, 0,
3, 1, 1, 0, 1, 1, 1, 0, 2, 0,
7, 2, 2, 0, 3, 4, 0, 0, 5, 0,
3, 0, 1, 1, 2, 0, 1, 3, 0, 0,
5, 0, 1, 4, 3, 4, 3, 0, 0, 5,
2, 2, 2, 1, 0, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 3, 3, 1, 0,
3, 1, 1, 1, 1, 1, 3, 1, 1, 3,
3, 3, 3, 3, 3, 3, 3, 2, 2, 2,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
2, 2, 2, 2, 4, 4, 5, 3, 3, 0,
4, 3, 3, 2, 2, 5, 2, 4, 2, 3,
3, 3, 3, 3, 4, 2, 0, 4, 0, 4,
0, 4, 1, 0, 2, 0, 1, 2, 1, 3,
1, 3, 1, 3, 0, 1, 0, 2, 2, 2,
0, 5, 0, 0, 5, 0, 5, 1, 2, 1,
0, 0, 0, 11, 0, 6, 3, 3, 2, 2,
2, 2, 0, 3, 3, 0, 4, 1, 2, 3,
1, 1, 1, 1, 3, 1, 1, 3, 2, 2,
2, 2, 2, 3, 1, 1, 2, 1, 1, 1,
1, 2, 3, 1, 3, 2, 2, 1, 1, 1,
1
};
static const short yydefact[] = { 0,
283, 0, 216, 228, 333, 336, 0, 0, 42, 91,
92, 90, 101, 102, 103, 104, 94, 93, 38, 154,
155, 177, 0, 198, 156, 223, 224, 225, 226, 158,
157, 159, 0, 303, 306, 0, 0, 0, 0, 0,
0, 0, 189, 0, 323, 0, 0, 59, 0, 47,
174, 0, 80, 82, 83, 81, 150, 151, 149, 0,
0, 0, 0, 284, 0, 0, 0, 0, 0, 0,
204, 5, 7, 0, 0, 8, 3, 9, 14, 43,
0, 0, 0, 0, 50, 10, 35, 0, 0, 11,
61, 0, 0, 76, 88, 0, 168, 168, 95, 15,
12, 96, 32, 33, 34, 26, 27, 0, 0, 229,
0, 0, 219, 297, 16, 17, 18, 19, 20, 21,
22, 23, 24, 25, 30, 0, 31, 86, 0, 334,
337, 0, 29, 28, 0, 36, 201, 202, 123, 0,
267, 289, 350, 0, 339, 340, 89, 0, 182, 336,
119, 0, 0, 0, 299, 0, 297, 311, 0, 283,
216, 0, 0, 0, 296, 0, 321, 320, 319, 164,
0, 0, 0, 0, 0, 0, 341, 58, 84, 0,
164, 0, 78, 238, 239, 264, 260, 220, 0, 0,
265, 240, 44, 269, 252, 254, 0, 0, 222, 0,
0, 0, 4, 123, 126, 65, 52, 63, 49, 60,
0, 51, 62, 0, 57, 0, 0, 0, 0, 56,
55, 53, 118, 122, 74, 0, 0, 0, 138, 109,
133, 0, 0, 0, 77, 173, 160, 164, 172, 205,
205, 0, 205, 13, 0, 0, 0, 0, 206, 207,
208, 209, 210, 211, 212, 213, 214, 215, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 281, 0, 251,
253, 279, 277, 0, 0, 276, 300, 0, 0, 328,
322, 203, 345, 346, 342, 0, 347, 348, 349, 343,
288, 283, 291, 0, 360, 154, 351, 359, 352, 0,
358, 361, 354, 40, 39, 41, 183, 184, 178, 119,
119, 0, 199, 0, 304, 0, 0, 0, 318, 317,
162, 163, 167, 165, 193, 190, 166, 0, 205, 195,
197, 0, 324, 330, 0, 0, 175, 0, 0, 259,
262, 285, 263, 0, 0, 0, 73, 0, 230, 129,
138, 0, 127, 48, 66, 0, 0, 0, 75, 0,
113, 0, 0, 106, 117, 110, 137, 0, 116, 0,
74, 0, 131, 140, 0, 37, 205, 205, 0, 79,
152, 0, 169, 217, 335, 338, 218, 0, 0, 258,
249, 0, 248, 247, 237, 273, 236, 245, 246, 241,
243, 242, 244, 270, 271, 234, 235, 231, 232, 233,
0, 272, 0, 0, 0, 250, 301, 298, 326, 329,
0, 344, 124, 0, 290, 356, 357, 0, 353, 180,
120, 121, 45, 0, 294, 297, 0, 308, 310, 0,
0, 312, 315, 0, 194, 196, 0, 85, 87, 176,
261, 0, 256, 255, 6, 268, 130, 125, 126, 0,
64, 54, 112, 0, 0, 0, 143, 138, 141, 139,
138, 134, 115, 114, 153, 0, 170, 227, 0, 0,
282, 280, 278, 275, 297, 0, 292, 355, 186, 179,
200, 305, 307, 309, 0, 0, 191, 325, 221, 128,
0, 331, 68, 67, 69, 0, 332, 105, 0, 0,
136, 46, 0, 161, 0, 266, 257, 302, 327, 138,
187, 0, 0, 316, 72, 0, 71, 205, 107, 0,
146, 147, 0, 145, 0, 185, 181, 0, 0, 70,
0, 0, 142, 0, 171, 188, 0, 111, 144, 148,
313, 297, 314, 0, 0, 0
};
static const short yydefgoto[] = { 564,
75, 76, 198, 77, 78, 79, 148, 315, 80, 81,
82, 83, 84, 85, 86, 87, 221, 88, 89, 90,
91, 366, 470, 514, 515, 199, 370, 92, 93, 180,
459, 94, 95, 228, 379, 476, 481, 322, 230, 140,
435, 381, 362, 363, 231, 232, 520, 382, 383, 523,
541, 542, 543, 96, 486, 97, 98, 392, 334, 335,
237, 238, 99, 525, 100, 101, 182, 102, 149, 440,
500, 319, 531, 532, 103, 170, 454, 336, 104, 105,
106, 153, 444, 107, 163, 109, 394, 285, 110, 111,
350, 201, 112, 246, 113, 348, 424, 423, 421, 190,
286, 142, 304, 155, 166, 287, 288, 114, 115, 116,
495, 117, 156, 446, 118, 157, 452, 119, 327, 505,
562, 120, 506, 121, 122, 123, 124, 125, 126, 175,
343, 290, 496, 291, 127, 516, 128, 129, 130, 131,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -