From 542be69b2a89eb35f87e208018a7c0cc4c2aac04 Mon Sep 17 00:00:00 2001 From: Kimplul Date: Sat, 25 Mar 2023 21:14:13 +0200 Subject: add union to parser --- src/ast.c | 72 ++- src/gen_parser.c | 1899 +++++++++++++++++++++++++++--------------------------- src/parser.y | 27 +- 3 files changed, 1015 insertions(+), 983 deletions(-) (limited to 'src') diff --git a/src/ast.c b/src/ast.c index 4b8e55a..1211c5e 100644 --- a/src/ast.c +++ b/src/ast.c @@ -436,7 +436,11 @@ struct ast_node *gen_type(enum ast_type_kind kind, struct ast_node *id, case AST_TYPE_UNION: n->_type.unio.id = id; n->_type.unio.body = expr; - n->loc = id->loc; + if (id) + n->loc = id->loc; + else + n->loc = expr->loc; + break; case AST_TYPE_STRUCT: @@ -666,7 +670,10 @@ struct ast_node *gen_struct(struct ast_node *id, n->_struct.id = id; n->_struct.generics = generics; n->_struct.body = body; - n->loc = id->loc; + if (id) + n->loc = id->loc; + else + n->loc = body->loc; return n; } @@ -679,6 +686,30 @@ void destroy_struct(struct ast_node *struc) free(struc); } +struct ast_node *gen_union(struct ast_node *id, + struct ast_node *generics, struct ast_node *body) +{ + ALLOC_NODE(n, struct); + n->node_type = AST_UNION; + n->_union.id = id; + n->_union.generics = generics; + n->_union.body = body; + if (id) + n->loc = id->loc; + else + n->loc = body->loc; + return n; +} + +void destroy_union(struct ast_node *unio) +{ + assert(unio->node_type == AST_UNION); + destroy_ast_node(unio->_union.id); + DESTROY_LIST(unio->_union.generics); + DESTROY_LIST(unio->_union.body); + free(unio); +} + struct ast_node *gen_enum(struct ast_node *id, struct ast_node *type, struct ast_node *body) { @@ -866,6 +897,7 @@ void destroy_ast_node(struct ast_node *node) assert(node->node_type); switch (node->node_type) { + case AST_UNION: destroy_union(node); break; case AST_ASSIGN: destroy_assign(node); break; case AST_INIT: destroy_init(node); break; case AST_SIZEOF: destroy_sizeof(node); break; @@ -1022,6 +1054,18 @@ static void dump_flags(struct ast_node *node) static void __dump_ast(int depth, struct ast_node *node) { switch (node->node_type) { + case AST_UNION: + dump(depth, "{UNION:"); + dump_flags(node); + putchar('\n'); + + dump_ast(depth + 1, node->_union.id); + dump_ast(depth + 1, node->_union.generics); + dump_ast(depth + 1, node->_union.body); + + dump(depth, "}\n"); + break; + case AST_ASSIGN: dump(depth, "{ASSIGN:"); dump_flags(node); @@ -1494,6 +1538,12 @@ struct ast_node *clone_ast_node(struct ast_node *node) assert(node->node_type); struct ast_node *new = NULL; switch (node->node_type) { + case AST_UNION: + new = gen_union(clone_ast_node(node->_union.id), + clone_ast_node(node->_union.generics), + clone_ast_node(node->_union.body)); + break; + case AST_ASSIGN: new = gen_assign(clone_ast_node(node->_assign.to), clone_ast_node(node->_assign.from)); @@ -1814,6 +1864,18 @@ int identical_ast_nodes(int exact, struct ast_node *left, struct ast_node *right return 0; switch (left->node_type) { + case AST_UNION: + if (!identical_ast_nodes(exact, left->_union.id, right->_union.id)) + return 0; + + if (!identical_ast_nodes(exact, left->_union.generics, right->_union.generics)) + return 0; + + if (!identical_ast_nodes(exact, left->_union.body, right->_union.body)) + return 0; + + break; + case AST_ASSIGN: if (!identical_ast_nodes(exact, left->_assign.to, right->_assign.to)) return 0; @@ -2267,6 +2329,12 @@ int ast_call_on(int (*call)(struct ast_node *, void *data), return ret; switch (node->node_type) { + case AST_UNION: + ret |= call(node->_union.id, data); + ret |= call(node->_union.generics, data); + ret |= call(node->_union.body, data); + break; + case AST_ASSIGN: ret |= call(node->_assign.to, data); ret |= call(node->_assign.from, data); diff --git a/src/gen_parser.c b/src/gen_parser.c index a14081c..ac53567 100644 --- a/src/gen_parser.c +++ b/src/gen_parser.c @@ -235,25 +235,24 @@ enum yysymbol_kind_t YYSYMBOL_var_init = 123, /* var_init */ YYSYMBOL_proc = 124, /* proc */ YYSYMBOL_lambda = 125, /* lambda */ - YYSYMBOL_union_elem = 126, /* union_elem */ - YYSYMBOL_union_list = 127, /* union_list */ + YYSYMBOL_struct_elem = 126, /* struct_elem */ + YYSYMBOL_struct_list = 127, /* struct_list */ YYSYMBOL_union = 128, /* union */ - YYSYMBOL_struct_list = 129, /* struct_list */ - YYSYMBOL_generic = 130, /* generic */ - YYSYMBOL_generic_list = 131, /* generic_list */ - YYSYMBOL_struct = 132, /* struct */ - YYSYMBOL_template_elem = 133, /* template_elem */ - YYSYMBOL_template_list = 134, /* template_list */ - YYSYMBOL_type_list = 135, /* type_list */ - YYSYMBOL_type_alias = 136, /* type_alias */ - YYSYMBOL_type_template = 137, /* type_template */ - YYSYMBOL_enum_val = 138, /* enum_val */ - YYSYMBOL_enum_list = 139, /* enum_list */ - YYSYMBOL_enum = 140, /* enum */ - YYSYMBOL_top_if = 141, /* top_if */ - YYSYMBOL_top = 142, /* top */ - YYSYMBOL_unit = 143, /* unit */ - YYSYMBOL_input = 144 /* input */ + YYSYMBOL_generic = 129, /* generic */ + YYSYMBOL_generic_list = 130, /* generic_list */ + YYSYMBOL_struct = 131, /* struct */ + YYSYMBOL_template_elem = 132, /* template_elem */ + YYSYMBOL_template_list = 133, /* template_list */ + YYSYMBOL_type_list = 134, /* type_list */ + YYSYMBOL_type_alias = 135, /* type_alias */ + YYSYMBOL_type_template = 136, /* type_template */ + YYSYMBOL_enum_val = 137, /* enum_val */ + YYSYMBOL_enum_list = 138, /* enum_list */ + YYSYMBOL_enum = 139, /* enum */ + YYSYMBOL_top_if = 140, /* top_if */ + YYSYMBOL_top = 141, /* top */ + YYSYMBOL_unit = 142, /* unit */ + YYSYMBOL_input = 143 /* input */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -584,16 +583,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 57 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 2040 +#define YYLAST 1987 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 81 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 64 +#define YYNNTS 63 /* YYNRULES -- Number of rules. */ -#define YYNRULES 218 +#define YYNRULES 216 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 433 +#define YYNSTATES 434 /* YYMAXUTOK -- Last valid token kind. */ #define YYMAXUTOK 335 @@ -666,12 +665,12 @@ static const yytype_int16 yyrline[] = 381, 384, 385, 388, 391, 398, 402, 407, 415, 417, 421, 424, 426, 428, 430, 434, 435, 442, 443, 447, 450, 454, 458, 462, 467, 471, 472, 475, 476, 480, - 486, 490, 496, 500, 501, 504, 505, 508, 511, 516, - 519, 520, 521, 524, 527, 534, 535, 536, 537, 540, - 541, 544, 545, 548, 553, 556, 562, 563, 566, 567, - 568, 571, 572, 578, 582, 586, 594, 595, 596, 597, - 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, - 608, 609, 610, 611, 612, 627, 628, 631, 632 + 486, 490, 496, 499, 502, 503, 506, 509, 514, 515, + 516, 519, 522, 529, 530, 531, 532, 535, 536, 539, + 540, 543, 548, 551, 557, 558, 561, 562, 563, 566, + 567, 573, 577, 581, 589, 590, 591, 592, 593, 594, + 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, + 605, 606, 607, 622, 623, 626, 627 }; #endif @@ -706,9 +705,9 @@ static const char *const yytname[] = "expr_list", "struct_init", "struct_inits", "struct_construct", "init_expr", "cond", "expr_if", "if", "for", "case", "case_list", "switch", "const_for", "const_if", "const", "func_sign", "variadic_sign", - "type", "var_decl", "var_init", "proc", "lambda", "union_elem", - "union_list", "union", "struct_list", "generic", "generic_list", - "struct", "template_elem", "template_list", "type_list", "type_alias", + "type", "var_decl", "var_init", "proc", "lambda", "struct_elem", + "struct_list", "union", "generic", "generic_list", "struct", + "template_elem", "template_list", "type_list", "type_alias", "type_template", "enum_val", "enum_list", "enum", "top_if", "top", "unit", "input", YY_NULLPTR }; @@ -720,12 +719,12 @@ yysymbol_name (yysymbol_kind_t yysymbol) } #endif -#define YYPACT_NINF (-227) +#define YYPACT_NINF (-255) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF (-219) +#define YYTABLE_NINF (-217) #define yytable_value_is_error(Yyn) \ 0 @@ -734,50 +733,50 @@ yysymbol_name (yysymbol_kind_t yysymbol) STATE-NUM. */ static const yytype_int16 yypact[] = { - 478, -227, -227, -227, 249, 18, 18, 35, -7, 18, - 18, 18, 182, 49, 72, -227, 67, -227, -227, -227, - 96, -227, -227, 424, -227, 114, 120, 138, -227, -227, - -227, 146, -227, -227, 85, 59, -227, 1167, -227, 66, - 65, 88, 64, 1167, 26, 136, 15, 270, 92, -227, - 97, -227, -227, -227, 1003, -227, -227, -227, -227, -227, - -227, 18, 46, 90, -227, -227, -227, -227, 1167, 18, - 1167, 1167, 1167, 1167, 1167, -227, 100, 103, 1167, 18, - 61, 36, -227, -227, -227, -227, -227, -227, 1256, -227, - 15, -227, 61, 18, 32, -227, -227, 87, 1003, -227, - 1003, -227, -227, 61, 566, 130, 27, -227, 131, 61, - 1320, 61, 769, -227, 1193, 921, 1961, 102, -227, -227, - 61, 133, 109, 25, 51, -227, 173, -227, -227, 112, - -227, 148, 183, -227, 46, 117, 87, -227, 87, 87, - 68, 1545, 87, 1167, 189, 553, 1384, 67, 123, 156, - 132, -227, 18, 947, 1085, 1167, 1167, 1167, 1167, 1167, - 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, - 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, 1167, - 1167, 1167, 1167, 1167, 335, 61, 18, -32, 134, 205, - 169, 144, 97, 40, -227, -227, 149, 61, 61, 61, - 18, -227, 163, 61, -227, 61, 175, 152, -227, -227, - 18, 1193, 217, 219, 1167, 1029, 1167, 97, 603, -10, - -227, 528, 220, 223, 1448, -227, -227, 224, 688, 160, - -227, -227, -227, -227, -227, -227, -227, 234, -227, -227, - 1111, 1961, 97, 18, 197, 171, -227, 61, -227, 18, - 185, 46, 186, 46, -227, -227, 246, -227, -227, -227, - 1512, 184, -227, -227, 18, 66, -227, 1167, -227, 577, - 213, 190, -227, -227, 1961, -227, -24, -24, -24, 68, - 68, 1289, 1489, 1545, 1481, 1417, 1353, 859, 859, 859, - 859, 783, 783, 287, 287, 1961, 1961, 1961, 1961, 1961, - 1961, 1961, 1961, 1961, 1961, 191, -227, -227, 18, 1167, - 18, -227, -227, 18, 97, -227, -227, 188, -227, 192, - -227, -227, 61, -227, -227, 97, -227, -227, 1576, 260, - 1640, 207, -227, 262, 1167, 18, -227, -227, -227, -227, - -227, -227, -227, -227, -227, -227, 210, 222, 277, 921, - -227, -227, -227, 46, 203, 46, -227, -227, -227, -227, - -227, 97, -227, 1029, -227, 228, 212, 1961, -227, 215, - -227, 61, -227, -227, 232, 229, 1167, -227, 1167, -227, - 1640, 281, -227, -14, 1003, -227, 221, -227, 225, -227, - -227, -1, -227, 97, 236, 93, 1167, 229, 237, 1705, - 1769, 240, 1167, -227, -227, -227, -227, -227, 335, -227, - -227, -227, -227, -227, 1833, -227, -227, 1167, -227, 94, - 1897, 97, 239, 845, 1640, -227, -227, 1167, -227, -227, - -227, -227, -227 + 210, -255, -255, -255, 341, 44, 44, 24, 1, 44, + 44, 44, 411, 46, 54, -255, 64, -255, -255, -255, + 67, -255, -255, 95, -255, 84, 76, 77, -255, -255, + -255, 81, -255, -255, -7, 172, -255, 1110, -255, 27, + 23, 36, 42, 1110, 181, 296, 100, 494, 47, -255, + 59, -255, -255, -255, 976, -255, -255, -255, -255, -255, + -255, 44, 44, 25, -255, -255, -255, -255, 1110, 44, + 1110, 1110, 1110, 1110, 1110, -255, 66, 68, 1110, 44, + 305, 17, -255, -255, -255, -255, -255, -255, 1203, -255, + 100, -255, 305, 44, 15, -255, -255, 57, 976, -255, + 976, -255, -255, 305, 615, 93, 51, -255, 94, 305, + 1267, 305, 746, -255, 1140, 573, 1908, 71, -255, -255, + 305, 98, 80, 527, -255, 144, 82, 44, -255, 332, + 145, -255, 30, 83, 57, -255, 57, 57, 207, 1492, + 57, 1110, 154, 522, 1331, 64, 89, 124, 113, -255, + 44, 898, 1054, 1110, 1110, 1110, 1110, 1110, 1110, 1110, + 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, + 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, 1110, + 1110, 1110, 221, 305, 44, -21, 103, 183, 157, 117, + 59, 29, -255, -255, 120, 305, 305, 305, 44, -255, + 161, 305, -255, 305, 159, 129, -255, -255, 44, 1140, + 199, 202, 1110, 1008, 1110, 59, 930, -16, -255, 320, + 204, 205, 1395, -255, -255, 208, 670, 153, -255, -255, + -255, -255, -255, -255, -255, 222, -255, -255, 1084, 1908, + 59, 44, 195, 169, -255, 305, -255, 44, 182, 44, + -255, -1, -255, 255, -255, -255, -255, 1459, 194, -255, + -255, 44, 27, -255, 1110, -255, 539, 220, 203, -255, + -255, 1908, -255, -4, -4, -4, 207, 207, 1236, 1436, + 1492, 1428, 1364, 1300, 836, 836, 836, 836, 760, 760, + 235, 235, 1908, 1908, 1908, 1908, 1908, 1908, 1908, 1908, + 1908, 1908, 197, -255, -255, 44, 1110, 44, -255, -255, + 44, 59, -255, -255, 214, -255, 209, -255, -255, 305, + -255, -255, 59, -255, -255, 1523, 265, 1587, 219, -255, + 277, 1110, 44, -255, -255, -255, -255, -255, -255, -255, + -255, -255, -255, 223, 237, 289, 573, -255, -255, -255, + 44, -255, 44, 44, -255, -255, -255, -255, 59, -255, + 1008, -255, 240, 224, 1908, -255, 227, -255, 305, -255, + -255, 243, 244, 1110, -255, 1110, -255, 1587, 297, -255, + -35, 976, -255, 242, 247, 246, -255, -255, -31, -255, + 59, 249, -20, 1110, 244, 248, 1652, 1716, 257, 1110, + -255, -255, -255, -255, 251, -255, 221, -255, -255, -255, + -255, -255, 1780, -255, -255, 1110, -255, -17, 1844, 59, + 44, 253, 822, 1587, -255, -255, 1110, -255, 254, -255, + -255, -255, -255, -255 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -785,74 +784,74 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 0, 214, 2, 196, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 200, 3, 4, 198, 199, - 0, 204, 197, 0, 217, 0, 0, 0, 208, 207, - 206, 0, 211, 205, 0, 0, 6, 0, 201, 0, + 0, 212, 2, 194, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 198, 3, 4, 196, 197, + 0, 202, 195, 0, 215, 0, 0, 0, 206, 205, + 204, 0, 209, 203, 0, 0, 6, 0, 199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 147, 145, - 0, 156, 212, 202, 0, 203, 216, 1, 213, 209, - 210, 0, 0, 0, 183, 61, 62, 63, 0, 0, + 0, 156, 210, 200, 0, 201, 214, 1, 211, 207, + 208, 0, 0, 0, 181, 61, 62, 63, 0, 0, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 56, 74, 65, 68, 69, 66, 67, 0, 75, 0, 161, 0, 0, 0, 148, 150, 153, 0, 154, 0, 155, 144, 0, 147, 52, 0, 48, 51, 0, 0, 0, 0, 160, 0, 0, 118, 120, 157, 119, - 0, 172, 0, 0, 0, 164, 0, 169, 163, 0, - 185, 0, 0, 178, 180, 0, 41, 59, 39, 71, - 38, 40, 42, 0, 0, 56, 0, 0, 0, 107, - 0, 73, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 170, 0, 0, 163, 0, 0, 0, 183, 0, + 0, 176, 178, 0, 41, 59, 39, 71, 38, 40, + 42, 0, 0, 56, 0, 0, 0, 107, 0, 73, 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, 0, 0, 0, 0, 186, - 190, 0, 0, 0, 158, 159, 0, 0, 0, 0, - 0, 141, 0, 0, 151, 0, 182, 0, 101, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 105, 56, 0, 0, 0, 91, 92, 0, 0, 0, - 99, 94, 86, 89, 93, 90, 95, 0, 97, 98, - 0, 122, 0, 0, 116, 0, 113, 0, 170, 0, - 0, 0, 0, 166, 173, 175, 0, 177, 179, 184, - 0, 0, 64, 70, 0, 0, 58, 0, 54, 56, - 47, 0, 45, 44, 7, 8, 11, 12, 13, 10, - 9, 15, 14, 16, 18, 17, 19, 32, 33, 34, - 35, 36, 37, 20, 21, 22, 23, 24, 25, 26, - 29, 27, 28, 30, 31, 0, 72, 57, 0, 0, - 189, 192, 110, 0, 0, 143, 50, 0, 142, 0, - 49, 152, 0, 149, 78, 0, 82, 83, 0, 0, - 0, 0, 81, 0, 0, 0, 139, 138, 88, 85, - 84, 79, 87, 102, 104, 96, 0, 0, 0, 0, - 117, 121, 171, 0, 0, 0, 165, 176, 55, 5, - 106, 0, 43, 0, 53, 193, 0, 187, 188, 0, - 108, 0, 140, 181, 126, 0, 0, 76, 0, 80, - 0, 0, 123, 0, 0, 115, 0, 168, 0, 162, - 46, 0, 191, 0, 0, 0, 0, 132, 0, 0, - 0, 135, 0, 124, 125, 114, 174, 167, 0, 195, - 109, 146, 127, 128, 0, 131, 133, 0, 77, 0, - 112, 0, 0, 0, 0, 136, 137, 0, 134, 194, - 130, 129, 111 + 0, 0, 0, 0, 0, 0, 0, 184, 188, 0, + 0, 0, 158, 159, 0, 0, 0, 0, 0, 141, + 0, 0, 151, 0, 180, 0, 101, 100, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 105, 56, + 0, 0, 0, 91, 92, 0, 0, 0, 99, 94, + 86, 89, 93, 90, 95, 0, 97, 98, 0, 122, + 0, 0, 116, 0, 113, 0, 168, 0, 0, 165, + 171, 0, 173, 0, 175, 177, 182, 0, 0, 64, + 70, 0, 0, 58, 0, 54, 56, 47, 0, 45, + 44, 7, 8, 11, 12, 13, 10, 9, 15, 14, + 16, 18, 17, 19, 32, 33, 34, 35, 36, 37, + 20, 21, 22, 23, 24, 25, 26, 29, 27, 28, + 30, 31, 0, 72, 57, 0, 0, 187, 190, 110, + 0, 0, 143, 50, 0, 142, 0, 49, 152, 0, + 149, 78, 0, 82, 83, 0, 0, 0, 0, 81, + 0, 0, 0, 139, 138, 88, 85, 84, 79, 87, + 102, 104, 96, 0, 0, 0, 0, 117, 121, 169, + 0, 164, 0, 0, 174, 55, 5, 106, 0, 43, + 0, 53, 191, 0, 185, 186, 0, 108, 0, 140, + 179, 126, 0, 0, 76, 0, 80, 0, 0, 123, + 0, 0, 115, 0, 0, 0, 162, 46, 0, 189, + 0, 0, 0, 0, 132, 0, 0, 0, 135, 0, + 124, 125, 114, 172, 0, 166, 0, 193, 109, 146, + 127, 128, 0, 131, 133, 0, 77, 0, 112, 0, + 0, 0, 0, 0, 136, 137, 0, 134, 0, 192, + 130, 129, 111, 167 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -227, 0, -2, -227, 3, -227, -227, -227, 79, -68, - -227, -71, -227, -227, 286, -227, -227, -227, -227, -212, - 157, -91, 4, -116, -227, -34, 162, -17, 110, -220, - -70, -227, -227, -69, -227, -227, -89, -227, -13, -227, - 471, 128, -63, 330, -227, -227, -226, -33, -16, -227, - 89, 9, -227, 206, 17, 10, 13, -227, -221, 14, - -47, -227, -22, -227 + -255, 0, 3, -255, 4, -255, -255, -255, 121, -23, + -255, -62, -255, -255, 293, -255, -255, -255, -255, -223, + -34, -92, 9, -85, -255, -2, 196, -30, 140, -219, + -38, -255, -255, -39, -255, -255, -60, -255, -12, -255, + 440, 20, -63, 355, -255, -255, -216, -255, -255, -222, + 10, -255, 230, 50, 13, 14, -255, -254, 16, -14, + -255, -22, -255 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - 0, 81, 13, 82, 14, 83, 84, 85, 270, 271, - 105, 106, 86, 87, 116, 225, 226, 227, 228, 229, - 230, 150, 15, 421, 244, 245, 117, 272, 242, 119, - 232, 233, 397, 398, 234, 336, 337, 235, 49, 50, - 51, 16, 17, 18, 89, 126, 127, 128, 129, 121, - 122, 19, 134, 135, 207, 20, 21, 190, 191, 22, - 38, 23, 24, 25 + 0, 81, 13, 82, 14, 83, 84, 85, 267, 268, + 105, 106, 86, 87, 116, 223, 224, 225, 226, 227, + 228, 148, 15, 419, 242, 243, 117, 269, 240, 119, + 230, 231, 394, 395, 232, 333, 334, 233, 49, 50, + 51, 16, 17, 18, 89, 125, 126, 131, 121, 122, + 19, 132, 133, 205, 20, 21, 188, 189, 22, 38, + 23, 24, 25 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -860,420 +859,408 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 12, 56, 26, 193, 12, 34, 35, 27, 28, 39, - 40, 41, 48, 30, 31, 148, 343, 32, 33, 187, - 346, 2, 42, 12, 2, 354, 91, 356, 43, 95, - 133, 2, 2, 42, 98, 48, 200, 118, 2, 43, - 36, 201, 48, 114, 48, 48, 104, 334, 202, 313, - 37, 152, 2, 335, 185, 186, 37, 2, 42, 52, - 112, 120, 124, 131, 43, 2, 42, 2, 42, 137, - 2, 42, 43, 408, 43, 54, 92, 43, 145, 149, - 48, 194, 53, 195, 155, 156, 157, 366, 102, 368, - 104, 47, 48, 189, 149, 103, 2, 123, 246, 251, - 201, 133, 47, 48, 48, 192, 55, 202, 153, 48, - 222, 48, 221, 314, 57, 223, 231, 197, 256, 198, - 48, 236, 237, 252, 48, 238, 239, 47, 316, 388, - 58, 48, 320, 63, 131, 47, 90, 47, 90, 93, - 47, 123, 2, 42, 100, 48, 185, 186, 59, 43, - 211, 334, 266, 269, 2, 42, 60, 61, 255, 62, - 94, 43, 305, 404, 111, 130, 186, 112, 112, 2, - 42, 112, 143, 360, 108, 144, 43, 148, 199, 203, - 247, 249, 250, 253, 12, 48, 307, 254, 2, 42, - 125, 132, 259, 257, 261, 43, 263, 48, 48, 104, - 317, 333, 48, 104, 264, 48, 147, 113, 308, 265, - 324, 430, 47, 309, 197, 269, 198, 310, 108, 311, - 90, 48, 315, 322, 47, 323, 222, 326, 221, 327, - 339, 223, 231, 340, 342, 344, 318, 236, 237, 47, - 145, 238, 239, 348, 345, 349, 350, 48, 44, 120, - 45, 124, 361, 124, 46, 2, 357, 359, 47, 353, - 355, 363, 132, 364, 149, 372, 365, 269, 371, 48, - 376, 378, 379, 65, 66, 67, 2, 68, 387, 69, - 383, 273, 70, 382, 71, 384, 391, 392, 393, 72, - 395, 396, 402, 73, 329, 390, 406, 74, 419, 5, - 407, 6, 7, 155, 156, 157, 158, 159, 189, 411, - 189, 432, 416, 369, 429, 385, 275, 75, 9, 10, - 11, 325, 48, 88, 76, 413, 77, 108, 415, 97, - 426, 108, 246, 110, 29, 381, 1, 386, 352, 373, - 258, 2, 78, 273, 409, 3, 79, 109, 80, 312, - 0, 0, 0, 124, 136, 124, 138, 139, 140, 141, - 142, 0, 0, 269, 146, 185, 186, 405, 147, 0, - 0, 48, 0, 0, 331, 0, 0, 0, 0, 125, - 0, 125, 0, 0, 4, 5, 422, 6, 7, 0, - 0, 0, 0, 0, 0, 362, 0, 0, 224, 347, - 241, 0, 0, 8, 9, 10, 11, 0, 12, 0, + 12, 56, 191, 340, 12, 34, 35, 26, 27, 39, + 40, 41, 48, 28, 30, 146, 113, 31, 32, 343, + 33, 2, 114, 12, 118, 349, 37, 91, 185, 36, + 95, 2, 150, 351, 92, 48, 2, 209, 310, 112, + 331, 331, 48, 406, 48, 48, 104, 332, 2, 42, + 2, 363, 199, 365, 112, 43, 52, 112, 37, 200, + 198, 120, 123, 129, 53, 61, 108, 62, 192, 135, + 193, 352, 54, 353, 183, 184, 127, 55, 143, 147, + 48, 127, 124, 130, 57, 244, 58, 59, 190, 151, + 104, 60, 48, 187, 147, -213, 1, 93, 145, 90, + 128, 2, 311, 48, 48, 3, 2, 42, 94, 48, + 108, 48, 219, 43, 90, 220, 221, 253, 47, 111, + 48, 229, 234, 48, 199, 235, 236, 251, 237, 48, + 384, 200, 129, 112, 383, 313, 184, 385, 141, 317, + 142, 197, 201, 48, 4, 5, 247, 6, 7, 245, + 263, 266, 130, 248, 249, 254, 309, 250, 256, 258, + 302, 401, 260, 8, 9, 10, 11, 2, 42, 357, + -213, 270, 261, 102, 43, 146, 47, 305, 2, 42, + 103, 328, 12, 48, 304, 43, 330, 2, 42, 98, + 262, 306, 308, 312, 43, 48, 48, 104, 314, 430, + 48, 104, 320, 48, 428, 307, 344, 319, 321, 323, + -216, 1, 324, 266, 336, 337, 2, 108, 339, 48, + 3, 108, 1, 153, 154, 155, 219, 2, 341, 220, + 221, 3, 342, 270, 315, 229, 234, 47, 143, 235, + 236, 345, 237, 346, 347, 48, 63, 120, 47, 123, + 358, 153, 154, 155, 156, 157, 350, 47, 145, 4, + 5, 147, 6, 7, 266, 354, 48, 356, 360, 124, + 4, 5, 362, 6, 7, 373, 361, 367, 8, 9, + 10, 11, 369, 375, 359, 183, 184, 376, 371, 8, + 9, 10, 11, 374, 368, 380, 379, 381, 388, 389, + 390, 392, 2, 42, 100, 187, 393, 187, 399, 43, + 366, 2, 42, 183, 184, 417, 244, 403, 43, 48, + 404, 405, 409, 414, 386, 420, 2, 42, 429, 433, + 88, 335, 378, 43, 326, 150, 97, 387, 2, 42, + 110, 432, 252, 398, 382, 43, 400, 2, 272, 322, + 123, 402, 120, 123, 411, 413, 408, 425, 410, 29, + 266, 134, 255, 136, 137, 138, 139, 140, 48, 370, + 124, 144, 47, 124, 407, 0, 0, 0, 0, 0, + 270, 47, 0, 424, 421, 427, 44, 0, 45, 431, + 0, 5, 151, 6, 7, 0, 47, 0, 195, 0, + 196, 0, 0, 0, 90, 222, 12, 239, 47, 0, + 9, 10, 11, 0, 0, 0, 0, 2, 42, 0, + 123, 0, 219, 0, 43, 220, 221, 0, 0, 0, + 0, 229, 234, 0, 257, 235, 236, 0, 237, 0, + 124, 0, 0, 0, 0, 271, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 64, 0, 44, 0, 45, + 0, 0, 96, 46, 99, 101, 107, 47, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 65, 66, 67, + 2, 68, 239, 69, 0, 325, 70, 327, 71, 0, + 0, 0, 0, 72, 0, 0, 0, 73, 0, 222, + 149, 74, 0, 0, 0, 0, 0, 0, 2, 42, + 107, 144, 186, 2, 42, 43, 0, 150, 0, 0, + 43, 75, 0, 194, 0, 2, 42, 0, 76, 202, + 77, 204, 43, 0, 150, 0, 0, 139, 0, 0, + 246, 0, 0, 0, 0, 0, 78, 0, 0, 0, + 79, 109, 80, 0, 0, 0, 65, 66, 67, 2, + 68, 0, 69, 0, 0, 70, 0, 71, 44, 0, + 45, 0, 72, 195, 151, 196, 73, 0, 47, 364, + 74, 0, 0, 47, 0, 195, 0, 196, 0, 0, + 0, 151, 0, 0, 0, 47, 0, 0, 0, 0, + 75, 2, 42, 303, 377, 0, 0, 76, 43, 77, + 114, 0, 0, 0, 0, 99, 101, 107, 0, 0, + 316, 107, 0, 318, 0, 78, 0, 115, 0, 79, + 0, 80, 241, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 396, 0, 397, 0, + 0, 206, 0, 65, 66, 67, 2, 68, 0, 69, + 207, 195, 70, 196, 71, 348, 412, 111, 0, 72, + 0, 47, 418, 73, 0, 0, 0, 74, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 423, 0, + 0, 0, 0, 0, 0, 222, 0, 75, 0, 418, + 5, 0, 6, 7, 76, 208, 77, 209, 0, 210, + 211, 212, -103, 213, 214, 215, 0, 216, 217, 0, + 10, 11, 78, 0, 112, -103, 79, 206, 80, 65, + 66, 67, 2, 68, 0, 69, 207, 0, 70, 204, + 71, 0, 0, 0, 0, 72, 0, 0, 0, 73, + 0, 0, 0, 74, 0, 0, 153, 154, 155, 156, + 157, 0, 159, 160, 161, 0, 0, 0, 164, 165, + 166, 167, 0, 75, 170, 171, 5, 0, 6, 7, + 76, 208, 77, 209, 0, 210, 211, 212, 391, 213, + 214, 215, 0, 216, 217, 0, 10, 11, 78, 0, + 112, 218, 79, 206, 80, 65, 66, 67, 2, 68, + 0, 69, 207, 0, 70, 0, 71, 0, 183, 184, + 0, 72, 0, 0, 0, 73, 0, 0, 0, 74, + 0, 0, 153, 154, 155, 156, 157, 0, 159, 160, + 161, 0, 0, 0, 0, 0, 0, 0, 0, 75, + 170, 171, 5, 0, 6, 7, 76, 208, 77, 209, + 0, 210, 211, 212, 0, 213, 214, 215, 0, 216, + 217, 0, 10, 11, 78, 0, 112, 0, 79, 0, + 80, 65, 66, 67, 2, 68, 0, 69, 0, 0, + 70, 0, 71, 0, 183, 184, 0, 72, 0, 0, + 0, 264, 0, 0, 0, 74, 0, 0, 0, 0, + 0, 0, 0, 65, 66, 67, 2, 68, 0, 69, + 329, 0, 70, 0, 71, 75, 0, 0, 0, 72, + 0, 0, 76, 73, 77, 114, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 222, 0, 221, -215, 1, 223, 231, 0, 260, - 2, 0, 236, 237, 3, 0, 238, 239, 0, 0, - 274, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 0, 370, 0, 4, 5, 0, 6, 7, -218, 1, - 0, 125, 374, 125, 2, 0, 0, 377, 3, 0, - 0, 273, 8, 9, 10, 11, 0, 241, 0, -215, - 328, 0, 330, 0, 0, 0, 64, 0, 0, 0, - 0, 0, 0, 96, 224, 99, 101, 107, 389, 0, - 0, 0, 0, 0, 0, 0, 146, 4, 5, 0, - 6, 7, 0, 0, 2, 42, 0, 401, 0, 338, - 403, 43, 0, 152, 0, 0, 8, 9, 10, 11, - 410, 151, 412, 141, 0, 0, 0, 0, 0, 2, - 42, 107, 0, 188, 0, 0, 43, 0, 152, 0, - 0, 0, 2, 42, 196, 0, 425, 0, 428, 43, - 204, 431, 206, 2, 42, 0, 0, 0, 0, 0, - 43, 248, 152, 0, 44, 367, 45, 0, 0, 0, - 153, 0, 0, 0, 47, 0, 65, 66, 67, 2, - 68, 0, 69, 332, 0, 70, 0, 71, 0, 44, - 380, 45, 72, 0, 0, 153, 73, 0, 0, 47, - 74, 0, 197, 0, 198, 0, 0, 0, 111, 0, - 0, 0, 47, 197, 0, 198, 0, 0, 0, 153, - 75, 0, 0, 47, 0, 0, 306, 76, 0, 77, - 114, 0, 399, 0, 400, 0, 0, 0, 99, 101, - 107, 0, 0, 319, 107, 78, 321, 115, 0, 79, - 0, 80, 414, 0, 0, 0, 0, 0, 420, 208, - 0, 65, 66, 67, 2, 68, 0, 69, 209, 0, - 70, 0, 71, 424, 0, 0, 0, 72, 0, 224, - 0, 73, 0, 420, 0, 74, 0, 0, 351, 0, + 78, 265, 115, 0, 79, 0, 80, 75, 0, 65, + 66, 67, 2, 68, 76, 69, 77, 114, 70, 0, + 71, 0, 0, 0, 0, 72, 0, 0, 0, 73, + 0, 0, 78, 74, 115, 0, 79, 0, 80, 0, + 0, 65, 66, 67, 2, 68, 0, 69, 0, 0, + 70, 0, 71, 75, 0, 0, 0, 72, 0, 0, + 76, 264, 77, 114, 0, 74, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 78, 0, + 115, 0, 79, 0, 80, 75, 0, 65, 66, 67, + 2, 68, 76, 69, 77, 114, 70, 0, 71, 0, + 0, 0, 0, 72, 0, 0, 0, 73, 0, 0, + 78, 74, 115, 0, 79, 0, 80, 65, 66, 67, + 2, 68, 0, 69, 0, 0, 70, 0, 71, 0, + 0, 75, 0, 72, 0, 0, 0, 73, 76, 0, + 77, 74, 0, 65, 66, 67, 2, 68, 0, 69, + 0, 0, 70, 0, 71, 0, 78, 0, 115, 72, + 79, 75, 80, 73, 0, 0, 0, 74, 76, 0, + 77, 114, 0, 65, 66, 67, 2, 68, 0, 69, + 0, 0, 70, 0, 71, 0, 78, 75, 0, 72, + 79, 0, 80, 73, 76, 0, 77, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 75, 0, 0, 5, 0, - 6, 7, 76, 210, 77, 211, 0, 212, 213, 214, - -103, 215, 216, 217, 0, 218, 219, 0, 10, 11, - 78, 0, 112, -103, 79, 0, 80, 0, 0, 0, - 208, 0, 65, 66, 67, 2, 68, 0, 69, 209, - 0, 70, 0, 71, 0, 0, 0, 0, 72, 0, - 0, 0, 73, 206, 0, 0, 74, 0, 0, 155, - 156, 157, 158, 159, 0, 161, 162, 163, 0, 0, - 0, 166, 167, 168, 169, 0, 75, 172, 173, 5, - 0, 6, 7, 76, 210, 77, 211, 0, 212, 213, - 214, 0, 215, 216, 217, 0, 218, 219, 0, 10, - 11, 78, 394, 112, 220, 79, 208, 80, 65, 66, - 67, 2, 68, 0, 69, 209, 0, 70, 0, 71, - 0, 185, 186, 0, 72, 0, 0, 0, 73, 0, - 0, 0, 74, 0, 0, 155, 156, 157, 158, 159, - 0, 161, 162, 163, 0, 0, 0, 0, 0, 0, - 0, 0, 75, 172, 173, 5, 0, 6, 7, 76, - 210, 77, 211, 0, 212, 213, 214, 0, 215, 216, - 217, 0, 218, 219, 0, 10, 11, 78, 0, 112, - 0, 79, 0, 80, 65, 66, 67, 2, 68, 0, - 69, 0, 0, 70, 0, 71, 0, 185, 186, 0, - 72, 0, 0, 0, 73, 0, 0, 0, 74, 0, - 65, 66, 67, 2, 68, 0, 69, 0, 0, 70, - 0, 71, 0, 0, 0, 0, 72, 0, 75, 0, - 267, 0, 0, 0, 74, 76, 0, 77, 114, 0, + 0, 0, 78, 0, 0, 0, 79, 75, 80, 0, + 0, 0, 0, 0, 76, 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 78, 75, 115, 0, 79, 0, 80, - 243, 76, 0, 77, 114, 0, 65, 66, 67, 2, - 68, 0, 69, 0, 0, 70, 0, 71, 0, 78, - 268, 115, 72, 79, 0, 80, 73, 0, 0, 0, - 74, 0, 65, 66, 67, 2, 68, 0, 69, 0, - 0, 70, 0, 71, 0, 0, 0, 0, 72, 0, - 75, 0, 267, 0, 0, 0, 74, 76, 0, 77, - 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 78, 75, 115, 0, 79, - 0, 80, 0, 76, 0, 77, 114, 0, 65, 66, - 67, 2, 68, 0, 69, 0, 0, 70, 0, 71, - 0, 78, 0, 115, 72, 79, 0, 80, 73, 0, - 0, 0, 74, 0, 65, 66, 67, 2, 68, 0, - 69, 0, 0, 70, 0, 71, 0, 0, 0, 0, - 72, 0, 75, 0, 73, 0, 0, 0, 74, 76, - 0, 77, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 78, 75, 115, - 0, 79, 0, 80, 0, 76, 0, 77, 114, 0, - 65, 66, 67, 2, 68, 0, 69, 0, 0, 70, - 0, 71, 0, 78, 0, 0, 72, 79, 0, 80, - 73, 0, 0, 0, 74, 0, 65, 66, 67, 2, - 68, 0, 69, 0, 0, 70, 0, 71, 0, 0, - 0, 0, 72, 0, 75, 0, 73, 0, 0, 0, - 74, 76, 0, 77, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, - 75, 0, 0, 79, 0, 80, 0, 76, 0, 77, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 154, 240, 0, 0, 0, 79, - 0, 80, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 0, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 0, 180, - 181, 182, 183, 0, 0, 155, 156, 157, 158, 159, - 0, 161, 162, 163, 164, 165, 0, 166, 167, 168, - 169, 170, 171, 172, 173, 0, 0, 0, 154, 0, - 184, 0, 0, 0, 185, 186, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 0, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 0, 180, 181, 182, 183, 185, 186, 155, - 156, 157, 158, 159, 0, 161, 162, 163, 164, 0, - 0, 166, 167, 168, 169, 170, 171, 172, 173, 0, - 0, 0, 154, 0, 0, 0, 0, 205, 185, 186, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 0, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 0, 180, 181, 182, - 183, 185, 186, 155, 156, 157, 158, 159, 0, 161, - 162, 163, 0, 0, 0, 166, 167, 168, 169, 170, - 171, 172, 173, 0, 0, 0, 154, 262, 341, 0, - 0, 0, 185, 186, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 0, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 0, 180, 181, 182, 183, 185, 186, 155, 156, 157, - 158, 159, 0, 161, 162, 155, 156, 157, 158, 159, - 0, 0, 162, 0, 0, 172, 173, 0, 0, 0, - 154, 0, 0, 172, 173, 0, 185, 186, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 0, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 0, 180, 181, 182, 183, 185, - 186, 155, 156, 157, 158, 159, 0, 185, 186, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, - 173, 0, 0, 0, 154, 358, 0, 0, 0, 0, - 185, 186, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 0, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 0, 180, - 181, 182, 183, 185, 186, 0, 0, 0, 0, 0, + 0, 152, 238, 0, 0, 0, 79, 0, 80, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 0, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 0, 178, 179, 180, 181, + 0, 0, 153, 154, 155, 156, 157, 0, 159, 160, + 161, 162, 163, 0, 164, 165, 166, 167, 168, 169, + 170, 171, 0, 0, 0, 152, 0, 182, 0, 0, + 0, 183, 184, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 0, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 0, + 178, 179, 180, 181, 183, 184, 153, 154, 155, 156, + 157, 0, 159, 160, 161, 162, 0, 0, 164, 165, + 166, 167, 168, 169, 170, 171, 0, 0, 0, 152, + 0, 0, 0, 0, 203, 183, 184, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 0, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 0, 178, 179, 180, 181, 183, 184, + 153, 154, 155, 156, 157, 0, 159, 160, 161, 0, + 0, 0, 164, 165, 166, 167, 168, 169, 170, 171, + 0, 0, 0, 152, 259, 338, 0, 0, 0, 183, + 184, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 0, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 0, 178, 179, + 180, 181, 183, 184, 153, 154, 155, 156, 157, 0, + 159, 160, 153, 154, 155, 156, 157, 0, 0, 160, + 0, 0, 170, 171, 0, 0, 0, 152, 0, 0, + 170, 171, 0, 183, 184, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 0, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 0, 178, 179, 180, 181, 183, 184, 153, 154, + 155, 156, 157, 0, 183, 184, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 170, 171, 0, 0, + 0, 152, 355, 0, 0, 0, 0, 183, 184, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 0, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 0, 178, 179, 180, 181, + 183, 184, 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, 0, 154, 0, - 375, 0, 0, 0, 185, 186, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 0, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 0, 180, 181, 182, 183, 0, 0, 0, + 0, 0, 0, 0, 0, 152, 0, 372, 0, 0, + 0, 183, 184, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 0, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 0, + 178, 179, 180, 181, 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, 0, - 0, 0, 0, 154, 112, 417, 0, 0, 185, 186, - 0, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 0, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 0, 180, 181, - 182, 183, 0, 0, 0, 0, 0, 0, 0, 0, + 152, 112, 415, 0, 0, 183, 184, 0, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 0, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 0, 178, 179, 180, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 154, 0, 418, - 0, 0, 0, 185, 186, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 0, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 0, 180, 181, 182, 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 152, 0, 416, 0, 0, 0, + 183, 184, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 0, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 0, 178, + 179, 180, 181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 154, 0, 0, 423, 0, 0, 185, 186, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 0, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 0, 180, 181, 182, 183, + 0, 0, 0, 0, 0, 0, 0, 0, 152, 0, + 0, 422, 0, 0, 183, 184, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 0, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 0, 178, 179, 180, 181, 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, 0, 0, 0, 154, 0, 0, 0, 0, - 0, 185, 186, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 0, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 0, - 180, 181, 182, 183, 0, 427, 0, 0, 0, 0, + 0, 0, 152, 0, 0, 0, 0, 0, 183, 184, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 0, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 0, 178, 179, 180, + 181, 0, 426, 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, 0, 154, - 0, 0, 0, 0, 0, 185, 186, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 0, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 0, 180, 181, 182, 183, 0, 0, + 0, 0, 0, 0, 0, 0, 152, 0, 0, 0, + 0, 0, 183, 184, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 0, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 0, 178, 179, 180, 181, 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, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 185, - 186 + 0, 0, 0, 0, 0, 0, 183, 184 }; static const yytype_int16 yycheck[] = { - 0, 23, 4, 94, 4, 5, 6, 4, 4, 9, - 10, 11, 12, 4, 4, 78, 228, 4, 4, 90, - 240, 6, 7, 23, 6, 251, 39, 253, 13, 42, - 63, 6, 6, 7, 8, 35, 9, 54, 6, 13, - 5, 73, 42, 57, 44, 45, 46, 57, 80, 9, - 57, 15, 6, 63, 78, 79, 57, 6, 7, 10, - 74, 61, 62, 63, 13, 6, 7, 6, 7, 69, - 6, 7, 13, 74, 13, 8, 11, 13, 78, 79, - 80, 98, 10, 100, 16, 17, 18, 308, 73, 310, - 90, 76, 92, 93, 94, 80, 6, 51, 115, 74, - 73, 134, 76, 103, 104, 73, 10, 80, 72, 109, - 112, 111, 112, 73, 0, 112, 112, 66, 131, 68, - 120, 112, 112, 123, 124, 112, 112, 76, 199, 355, - 10, 131, 203, 74, 134, 76, 72, 76, 72, 74, - 76, 51, 6, 7, 8, 145, 78, 79, 10, 13, - 57, 57, 152, 153, 6, 7, 10, 72, 10, 74, - 72, 13, 184, 383, 72, 75, 79, 74, 74, 6, - 7, 74, 72, 264, 46, 72, 13, 240, 48, 48, - 78, 48, 73, 10, 184, 185, 186, 75, 6, 7, - 62, 63, 75, 10, 5, 13, 73, 197, 198, 199, - 200, 218, 202, 203, 48, 205, 78, 50, 74, 77, - 210, 423, 76, 8, 66, 215, 68, 48, 90, 75, - 72, 221, 73, 48, 76, 73, 228, 10, 228, 10, - 10, 228, 228, 10, 10, 75, 73, 228, 228, 76, - 240, 228, 228, 243, 10, 48, 75, 247, 66, 249, - 68, 251, 265, 253, 72, 6, 10, 73, 76, 74, - 74, 48, 134, 73, 264, 73, 75, 267, 80, 269, - 10, 64, 10, 3, 4, 5, 6, 7, 75, 9, - 58, 153, 12, 73, 14, 8, 58, 75, 73, 19, - 58, 62, 11, 23, 215, 363, 75, 27, 58, 50, - 75, 52, 53, 16, 17, 18, 19, 20, 308, 73, - 310, 427, 75, 313, 75, 349, 154, 47, 69, 70, - 71, 211, 322, 37, 54, 395, 56, 199, 397, 43, - 419, 203, 349, 47, 4, 335, 1, 353, 249, 322, - 134, 6, 72, 215, 391, 10, 76, 77, 78, 192, - -1, -1, -1, 353, 68, 355, 70, 71, 72, 73, - 74, -1, -1, 363, 78, 78, 79, 384, 240, -1, - -1, 371, -1, -1, 217, -1, -1, -1, -1, 251, - -1, 253, -1, -1, 49, 50, 408, 52, 53, -1, - -1, -1, -1, -1, -1, 267, -1, -1, 112, 242, - 114, -1, -1, 68, 69, 70, 71, -1, 408, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 423, -1, 423, 0, 1, 423, 423, -1, 143, - 6, -1, 423, 423, 10, -1, 423, 423, -1, -1, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - -1, 314, -1, 49, 50, -1, 52, 53, 0, 1, - -1, 353, 325, 355, 6, -1, -1, 330, 10, -1, - -1, 363, 68, 69, 70, 71, -1, 211, -1, 75, - 214, -1, 216, -1, -1, -1, 35, -1, -1, -1, - -1, -1, -1, 42, 228, 44, 45, 46, 361, -1, - -1, -1, -1, -1, -1, -1, 240, 49, 50, -1, - 52, 53, -1, -1, 6, 7, -1, 380, -1, 11, - 383, 13, -1, 15, -1, -1, 68, 69, 70, 71, - 393, 80, 395, 267, -1, -1, -1, -1, -1, 6, - 7, 90, -1, 92, -1, -1, 13, -1, 15, -1, - -1, -1, 6, 7, 103, -1, 419, -1, 421, 13, - 109, 424, 111, 6, 7, -1, -1, -1, -1, -1, - 13, 120, 15, -1, 66, 309, 68, -1, -1, -1, - 72, -1, -1, -1, 76, -1, 3, 4, 5, 6, - 7, -1, 9, 10, -1, 12, -1, 14, -1, 66, - 334, 68, 19, -1, -1, 72, 23, -1, -1, 76, - 27, -1, 66, -1, 68, -1, -1, -1, 72, -1, - -1, -1, 76, 66, -1, 68, -1, -1, -1, 72, - 47, -1, -1, 76, -1, -1, 185, 54, -1, 56, - 57, -1, 376, -1, 378, -1, -1, -1, 197, 198, - 199, -1, -1, 202, 203, 72, 205, 74, -1, 76, - -1, 78, 396, -1, -1, -1, -1, -1, 402, 1, - -1, 3, 4, 5, 6, 7, -1, 9, 10, -1, - 12, -1, 14, 417, -1, -1, -1, 19, -1, 423, - -1, 23, -1, 427, -1, 27, -1, -1, 247, -1, + 0, 23, 94, 226, 4, 5, 6, 4, 4, 9, + 10, 11, 12, 4, 4, 78, 50, 4, 4, 238, + 4, 6, 57, 23, 54, 247, 57, 39, 90, 5, + 42, 6, 15, 249, 11, 35, 6, 57, 9, 74, + 57, 57, 42, 74, 44, 45, 46, 63, 6, 7, + 6, 305, 73, 307, 74, 13, 10, 74, 57, 80, + 9, 61, 62, 63, 10, 72, 46, 74, 98, 69, + 100, 72, 8, 74, 78, 79, 51, 10, 78, 79, + 80, 51, 62, 63, 0, 115, 10, 10, 73, 72, + 90, 10, 92, 93, 94, 0, 1, 74, 78, 72, + 75, 6, 73, 103, 104, 10, 6, 7, 72, 109, + 90, 111, 112, 13, 72, 112, 112, 129, 76, 72, + 120, 112, 112, 123, 73, 112, 112, 127, 112, 129, + 352, 80, 132, 74, 350, 197, 79, 353, 72, 201, + 72, 48, 48, 143, 49, 50, 48, 52, 53, 78, + 150, 151, 132, 73, 10, 10, 190, 75, 75, 5, + 182, 380, 73, 68, 69, 70, 71, 6, 7, 261, + 75, 151, 48, 73, 13, 238, 76, 74, 6, 7, + 80, 215, 182, 183, 184, 13, 216, 6, 7, 8, + 77, 8, 75, 73, 13, 195, 196, 197, 198, 422, + 200, 201, 73, 203, 420, 48, 240, 48, 208, 10, + 0, 1, 10, 213, 10, 10, 6, 197, 10, 219, + 10, 201, 1, 16, 17, 18, 226, 6, 75, 226, + 226, 10, 10, 213, 73, 226, 226, 76, 238, 226, + 226, 241, 226, 48, 75, 245, 74, 247, 76, 249, + 262, 16, 17, 18, 19, 20, 74, 76, 238, 49, + 50, 261, 52, 53, 264, 10, 266, 73, 48, 249, + 49, 50, 75, 52, 53, 10, 73, 311, 68, 69, + 70, 71, 73, 64, 264, 78, 79, 10, 322, 68, + 69, 70, 71, 327, 80, 58, 73, 8, 58, 75, + 73, 58, 6, 7, 8, 305, 62, 307, 11, 13, + 310, 6, 7, 78, 79, 58, 346, 75, 13, 319, + 73, 75, 73, 75, 358, 74, 6, 7, 75, 75, + 37, 11, 332, 13, 213, 15, 43, 360, 6, 7, + 47, 426, 10, 377, 346, 13, 380, 6, 152, 209, + 350, 381, 352, 353, 392, 394, 390, 417, 392, 4, + 360, 68, 132, 70, 71, 72, 73, 74, 368, 319, + 350, 78, 76, 353, 388, -1, -1, -1, -1, -1, + 360, 76, -1, 417, 406, 419, 66, -1, 68, 423, + -1, 50, 72, 52, 53, -1, 76, -1, 66, -1, + 68, -1, -1, -1, 72, 112, 406, 114, 76, -1, + 69, 70, 71, -1, -1, -1, -1, 6, 7, -1, + 420, -1, 422, -1, 13, 422, 422, -1, -1, -1, + -1, 422, 422, -1, 141, 422, 422, -1, 422, -1, + 420, -1, -1, -1, -1, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 35, -1, 66, -1, 68, + -1, -1, 42, 72, 44, 45, 46, 76, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 3, 4, 5, + 6, 7, 209, 9, -1, 212, 12, 214, 14, -1, + -1, -1, -1, 19, -1, -1, -1, 23, -1, 226, + 80, 27, -1, -1, -1, -1, -1, -1, 6, 7, + 90, 238, 92, 6, 7, 13, -1, 15, -1, -1, + 13, 47, -1, 103, -1, 6, 7, -1, 54, 109, + 56, 111, 13, -1, 15, -1, -1, 264, -1, -1, + 120, -1, -1, -1, -1, -1, 72, -1, -1, -1, + 76, 77, 78, -1, -1, -1, 3, 4, 5, 6, + 7, -1, 9, -1, -1, 12, -1, 14, 66, -1, + 68, -1, 19, 66, 72, 68, 23, -1, 76, 306, + 27, -1, -1, 76, -1, 66, -1, 68, -1, -1, + -1, 72, -1, -1, -1, 76, -1, -1, -1, -1, + 47, 6, 7, 183, 331, -1, -1, 54, 13, 56, + 57, -1, -1, -1, -1, 195, 196, 197, -1, -1, + 200, 201, -1, 203, -1, 72, -1, 74, -1, 76, + -1, 78, 79, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 373, -1, 375, -1, + -1, 1, -1, 3, 4, 5, 6, 7, -1, 9, + 10, 66, 12, 68, 14, 245, 393, 72, -1, 19, + -1, 76, 399, 23, -1, -1, -1, 27, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 415, -1, + -1, -1, -1, -1, -1, 422, -1, 47, -1, 426, + 50, -1, 52, 53, 54, 55, 56, 57, -1, 59, + 60, 61, 62, 63, 64, 65, -1, 67, 68, -1, + 70, 71, 72, -1, 74, 75, 76, 1, 78, 3, + 4, 5, 6, 7, -1, 9, 10, -1, 12, 319, + 14, -1, -1, -1, -1, 19, -1, -1, -1, 23, + -1, -1, -1, 27, -1, -1, 16, 17, 18, 19, + 20, -1, 22, 23, 24, -1, -1, -1, 28, 29, + 30, 31, -1, 47, 34, 35, 50, -1, 52, 53, + 54, 55, 56, 57, -1, 59, 60, 61, 368, 63, + 64, 65, -1, 67, 68, -1, 70, 71, 72, -1, + 74, 75, 76, 1, 78, 3, 4, 5, 6, 7, + -1, 9, 10, -1, 12, -1, 14, -1, 78, 79, + -1, 19, -1, -1, -1, 23, -1, -1, -1, 27, + -1, -1, 16, 17, 18, 19, 20, -1, 22, 23, + 24, -1, -1, -1, -1, -1, -1, -1, -1, 47, + 34, 35, 50, -1, 52, 53, 54, 55, 56, 57, + -1, 59, 60, 61, -1, 63, 64, 65, -1, 67, + 68, -1, 70, 71, 72, -1, 74, -1, 76, -1, + 78, 3, 4, 5, 6, 7, -1, 9, -1, -1, + 12, -1, 14, -1, 78, 79, -1, 19, -1, -1, + -1, 23, -1, -1, -1, 27, -1, -1, -1, -1, + -1, -1, -1, 3, 4, 5, 6, 7, -1, 9, + 10, -1, 12, -1, 14, 47, -1, -1, -1, 19, + -1, -1, 54, 23, 56, 57, -1, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 47, -1, -1, 50, -1, - 52, 53, 54, 55, 56, 57, -1, 59, 60, 61, - 62, 63, 64, 65, -1, 67, 68, -1, 70, 71, - 72, -1, 74, 75, 76, -1, 78, -1, -1, -1, - 1, -1, 3, 4, 5, 6, 7, -1, 9, 10, - -1, 12, -1, 14, -1, -1, -1, -1, 19, -1, - -1, -1, 23, 322, -1, -1, 27, -1, -1, 16, - 17, 18, 19, 20, -1, 22, 23, 24, -1, -1, - -1, 28, 29, 30, 31, -1, 47, 34, 35, 50, - -1, 52, 53, 54, 55, 56, 57, -1, 59, 60, - 61, -1, 63, 64, 65, -1, 67, 68, -1, 70, - 71, 72, 371, 74, 75, 76, 1, 78, 3, 4, - 5, 6, 7, -1, 9, 10, -1, 12, -1, 14, - -1, 78, 79, -1, 19, -1, -1, -1, 23, -1, - -1, -1, 27, -1, -1, 16, 17, 18, 19, 20, - -1, 22, 23, 24, -1, -1, -1, -1, -1, -1, - -1, -1, 47, 34, 35, 50, -1, 52, 53, 54, - 55, 56, 57, -1, 59, 60, 61, -1, 63, 64, - 65, -1, 67, 68, -1, 70, 71, 72, -1, 74, - -1, 76, -1, 78, 3, 4, 5, 6, 7, -1, - 9, -1, -1, 12, -1, 14, -1, 78, 79, -1, - 19, -1, -1, -1, 23, -1, -1, -1, 27, -1, - 3, 4, 5, 6, 7, -1, 9, -1, -1, 12, - -1, 14, -1, -1, -1, -1, 19, -1, 47, -1, - 23, -1, -1, -1, 27, 54, -1, 56, 57, -1, + 72, 73, 74, -1, 76, -1, 78, 47, -1, 3, + 4, 5, 6, 7, 54, 9, 56, 57, 12, -1, + 14, -1, -1, -1, -1, 19, -1, -1, -1, 23, + -1, -1, 72, 27, 74, -1, 76, -1, 78, -1, + -1, 3, 4, 5, 6, 7, -1, 9, -1, -1, + 12, -1, 14, 47, -1, -1, -1, 19, -1, -1, + 54, 23, 56, 57, -1, 27, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 72, -1, + 74, -1, 76, -1, 78, 47, -1, 3, 4, 5, + 6, 7, 54, 9, 56, 57, 12, -1, 14, -1, + -1, -1, -1, 19, -1, -1, -1, 23, -1, -1, + 72, 27, 74, -1, 76, -1, 78, 3, 4, 5, + 6, 7, -1, 9, -1, -1, 12, -1, 14, -1, + -1, 47, -1, 19, -1, -1, -1, 23, 54, -1, + 56, 27, -1, 3, 4, 5, 6, 7, -1, 9, + -1, -1, 12, -1, 14, -1, 72, -1, 74, 19, + 76, 47, 78, 23, -1, -1, -1, 27, 54, -1, + 56, 57, -1, 3, 4, 5, 6, 7, -1, 9, + -1, -1, 12, -1, 14, -1, 72, 47, -1, 19, + 76, -1, 78, 23, 54, -1, 56, 27, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 72, 47, 74, -1, 76, -1, 78, - 79, 54, -1, 56, 57, -1, 3, 4, 5, 6, - 7, -1, 9, -1, -1, 12, -1, 14, -1, 72, - 73, 74, 19, 76, -1, 78, 23, -1, -1, -1, - 27, -1, 3, 4, 5, 6, 7, -1, 9, -1, - -1, 12, -1, 14, -1, -1, -1, -1, 19, -1, - 47, -1, 23, -1, -1, -1, 27, 54, -1, 56, - 57, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 72, 47, 74, -1, 76, - -1, 78, -1, 54, -1, 56, 57, -1, 3, 4, - 5, 6, 7, -1, 9, -1, -1, 12, -1, 14, - -1, 72, -1, 74, 19, 76, -1, 78, 23, -1, - -1, -1, 27, -1, 3, 4, 5, 6, 7, -1, - 9, -1, -1, 12, -1, 14, -1, -1, -1, -1, - 19, -1, 47, -1, 23, -1, -1, -1, 27, 54, - -1, 56, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 72, 47, 74, - -1, 76, -1, 78, -1, 54, -1, 56, 57, -1, - 3, 4, 5, 6, 7, -1, 9, -1, -1, 12, - -1, 14, -1, 72, -1, -1, 19, 76, -1, 78, - 23, -1, -1, -1, 27, -1, 3, 4, 5, 6, - 7, -1, 9, -1, -1, 12, -1, 14, -1, -1, - -1, -1, 19, -1, 47, -1, 23, -1, -1, -1, - 27, 54, -1, 56, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 72, - 47, -1, -1, 76, -1, 78, -1, 54, -1, 56, + -1, -1, 72, -1, -1, -1, 76, 47, 78, -1, + -1, -1, -1, -1, 54, -1, 56, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 8, 72, -1, -1, -1, 76, - -1, 78, 16, 17, 18, 19, 20, 21, 22, 23, + -1, 8, 72, -1, -1, -1, 76, -1, 78, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + -1, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, -1, 43, 44, 45, 46, + -1, -1, 16, 17, 18, 19, 20, -1, 22, 23, 24, 25, 26, -1, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, -1, 43, - 44, 45, 46, -1, -1, 16, 17, 18, 19, 20, - -1, 22, 23, 24, 25, 26, -1, 28, 29, 30, - 31, 32, 33, 34, 35, -1, -1, -1, 8, -1, - 74, -1, -1, -1, 78, 79, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, -1, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, -1, 43, 44, 45, 46, 78, 79, 16, - 17, 18, 19, 20, -1, 22, 23, 24, 25, -1, - -1, 28, 29, 30, 31, 32, 33, 34, 35, -1, - -1, -1, 8, -1, -1, -1, -1, 77, 78, 79, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, -1, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, -1, 43, 44, 45, - 46, 78, 79, 16, 17, 18, 19, 20, -1, 22, - 23, 24, -1, -1, -1, 28, 29, 30, 31, 32, - 33, 34, 35, -1, -1, -1, 8, 73, 10, -1, - -1, -1, 78, 79, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, -1, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - -1, 43, 44, 45, 46, 78, 79, 16, 17, 18, - 19, 20, -1, 22, 23, 16, 17, 18, 19, 20, - -1, -1, 23, -1, -1, 34, 35, -1, -1, -1, - 8, -1, -1, 34, 35, -1, 78, 79, 16, 17, + 34, 35, -1, -1, -1, 8, -1, 74, -1, -1, + -1, 78, 79, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, -1, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, -1, + 43, 44, 45, 46, 78, 79, 16, 17, 18, 19, + 20, -1, 22, 23, 24, 25, -1, -1, 28, 29, + 30, 31, 32, 33, 34, 35, -1, -1, -1, 8, + -1, -1, -1, -1, 77, 78, 79, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, -1, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, -1, 43, 44, 45, 46, 78, 79, + 16, 17, 18, 19, 20, -1, 22, 23, 24, -1, + -1, -1, 28, 29, 30, 31, 32, 33, 34, 35, + -1, -1, -1, 8, 73, 10, -1, -1, -1, 78, + 79, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, -1, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, -1, 43, 44, + 45, 46, 78, 79, 16, 17, 18, 19, 20, -1, + 22, 23, 16, 17, 18, 19, 20, -1, -1, 23, + -1, -1, 34, 35, -1, -1, -1, 8, -1, -1, + 34, 35, -1, 78, 79, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, -1, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, -1, 43, 44, 45, 46, 78, 79, 16, 17, + 18, 19, 20, -1, 78, 79, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 34, 35, -1, -1, + -1, 8, 73, -1, -1, -1, -1, 78, 79, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + -1, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, -1, 43, 44, 45, 46, + 78, 79, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 8, -1, 74, -1, -1, + -1, 78, 79, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, -1, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, -1, + 43, 44, 45, 46, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 8, 74, 10, -1, -1, 78, 79, -1, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, -1, 43, 44, 45, 46, 78, - 79, 16, 17, 18, 19, 20, -1, 78, 79, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 34, - 35, -1, -1, -1, 8, 73, -1, -1, -1, -1, + 38, 39, 40, 41, -1, 43, 44, 45, 46, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 8, -1, 10, -1, -1, -1, 78, 79, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, -1, 43, - 44, 45, 46, 78, 79, -1, -1, -1, -1, -1, + 44, 45, 46, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 8, -1, - 74, -1, -1, -1, 78, 79, 16, 17, 18, 19, + -1, 11, -1, -1, 78, 79, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, -1, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, -1, 43, 44, 45, 46, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 8, 74, 10, -1, -1, 78, 79, - -1, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, -1, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, -1, 43, 44, - 45, 46, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 8, -1, 10, - -1, -1, -1, 78, 79, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, -1, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, -1, 43, 44, 45, 46, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 8, -1, -1, 11, -1, -1, 78, 79, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - -1, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, -1, 43, 44, 45, 46, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 8, -1, -1, -1, -1, - -1, 78, 79, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, -1, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, -1, - 43, 44, 45, 46, -1, 48, -1, -1, -1, -1, + -1, -1, 8, -1, -1, -1, -1, -1, 78, 79, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, -1, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, -1, 43, 44, 45, + 46, -1, 48, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 8, - -1, -1, -1, -1, -1, 78, 79, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, -1, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, -1, 43, 44, 45, 46, -1, -1, + -1, -1, -1, -1, -1, -1, 8, -1, -1, -1, + -1, -1, 78, 79, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, -1, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + -1, 43, 44, 45, 46, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 78, - 79 + -1, -1, -1, -1, -1, -1, 78, 79 }; /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of @@ -1281,49 +1268,49 @@ static const yytype_int16 yycheck[] = static const yytype_uint8 yystos[] = { 0, 1, 6, 10, 49, 50, 52, 53, 68, 69, - 70, 71, 82, 83, 85, 103, 122, 123, 124, 132, - 136, 137, 140, 142, 143, 144, 83, 85, 103, 124, - 132, 136, 137, 140, 82, 82, 5, 57, 141, 82, + 70, 71, 82, 83, 85, 103, 122, 123, 124, 131, + 135, 136, 139, 141, 142, 143, 83, 85, 103, 124, + 131, 135, 136, 139, 82, 82, 5, 57, 140, 82, 82, 82, 7, 13, 66, 68, 72, 76, 82, 119, - 120, 121, 10, 10, 8, 10, 143, 0, 10, 10, + 120, 121, 10, 10, 8, 10, 142, 0, 10, 10, 10, 72, 74, 74, 121, 3, 4, 5, 7, 9, 12, 14, 19, 23, 27, 47, 54, 56, 72, 76, 78, 82, 84, 86, 87, 88, 93, 94, 95, 125, 72, 119, 11, 74, 72, 119, 121, 95, 8, 121, 8, 121, 73, 80, 82, 91, 92, 121, 122, 77, 95, 72, 74, 101, 57, 74, 95, 107, 108, 110, - 82, 130, 131, 51, 82, 122, 126, 127, 128, 129, - 75, 82, 122, 128, 133, 134, 95, 82, 95, 95, - 95, 95, 95, 72, 72, 82, 95, 122, 123, 82, - 102, 121, 15, 72, 8, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 43, 44, 45, 46, 74, 78, 79, 92, 121, 82, - 138, 139, 73, 102, 108, 108, 121, 66, 68, 48, - 9, 73, 80, 48, 121, 77, 121, 135, 1, 10, - 55, 57, 59, 60, 61, 63, 64, 65, 67, 68, - 75, 82, 83, 85, 95, 96, 97, 98, 99, 100, - 101, 103, 111, 112, 115, 118, 132, 136, 137, 140, - 72, 95, 109, 79, 105, 106, 108, 78, 121, 48, - 73, 74, 82, 10, 75, 10, 119, 10, 134, 75, - 95, 5, 73, 73, 48, 77, 82, 23, 73, 82, - 89, 90, 108, 122, 95, 107, 95, 95, 95, 95, + 82, 129, 130, 82, 122, 126, 127, 51, 75, 82, + 122, 128, 132, 133, 95, 82, 95, 95, 95, 95, + 95, 72, 72, 82, 95, 122, 123, 82, 102, 121, + 15, 72, 8, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 43, 44, + 45, 46, 74, 78, 79, 92, 121, 82, 137, 138, + 73, 102, 108, 108, 121, 66, 68, 48, 9, 73, + 80, 48, 121, 77, 121, 134, 1, 10, 55, 57, + 59, 60, 61, 63, 64, 65, 67, 68, 75, 82, + 83, 85, 95, 96, 97, 98, 99, 100, 101, 103, + 111, 112, 115, 118, 131, 135, 136, 139, 72, 95, + 109, 79, 105, 106, 108, 78, 121, 48, 73, 10, + 75, 82, 10, 119, 10, 133, 75, 95, 5, 73, + 73, 48, 77, 82, 23, 73, 82, 89, 90, 108, + 122, 95, 107, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, - 95, 95, 95, 95, 95, 143, 121, 82, 74, 8, - 48, 75, 101, 9, 73, 73, 92, 82, 73, 121, - 92, 121, 48, 73, 82, 109, 10, 10, 95, 89, - 95, 101, 10, 108, 57, 63, 116, 117, 11, 10, - 10, 10, 10, 100, 75, 10, 110, 101, 82, 48, - 75, 121, 131, 74, 127, 74, 127, 10, 73, 73, - 102, 119, 122, 48, 73, 75, 139, 95, 139, 82, - 101, 80, 73, 135, 101, 74, 10, 101, 64, 10, - 95, 82, 73, 58, 8, 106, 129, 75, 127, 101, - 90, 58, 75, 73, 121, 58, 62, 113, 114, 95, - 95, 101, 11, 101, 110, 108, 75, 75, 74, 141, - 101, 73, 101, 111, 95, 114, 75, 10, 10, 58, - 95, 104, 143, 11, 95, 101, 117, 48, 101, 75, - 100, 101, 104 + 95, 95, 142, 121, 82, 74, 8, 48, 75, 101, + 9, 73, 73, 92, 82, 73, 121, 92, 121, 48, + 73, 82, 109, 10, 10, 95, 89, 95, 101, 10, + 108, 57, 63, 116, 117, 11, 10, 10, 10, 10, + 100, 75, 10, 110, 101, 82, 48, 75, 121, 130, + 74, 127, 72, 74, 10, 73, 73, 102, 119, 122, + 48, 73, 75, 138, 95, 138, 82, 101, 80, 73, + 134, 101, 74, 10, 101, 64, 10, 95, 82, 73, + 58, 8, 106, 127, 130, 127, 101, 90, 58, 75, + 73, 121, 58, 62, 113, 114, 95, 95, 101, 11, + 101, 110, 108, 75, 73, 75, 74, 140, 101, 73, + 101, 111, 95, 114, 75, 10, 10, 58, 95, 104, + 74, 142, 11, 95, 101, 117, 48, 101, 127, 75, + 100, 101, 104, 75 }; /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ @@ -1345,12 +1332,12 @@ static const yytype_uint8 yyr1[] = 113, 114, 114, 115, 116, 117, 117, 117, 118, 118, 119, 119, 119, 119, 119, 120, 120, 121, 121, 121, 121, 121, 121, 121, 122, 122, 122, 123, 123, 123, - 124, 124, 125, 126, 126, 127, 127, 128, 128, 129, - 130, 131, 131, 132, 132, 133, 133, 133, 133, 134, - 134, 135, 135, 136, 137, 137, 138, 138, 139, 139, - 139, 140, 140, 141, 141, 141, 142, 142, 142, 142, - 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, - 142, 142, 142, 142, 142, 143, 143, 144, 144 + 124, 124, 125, 126, 127, 127, 128, 128, 129, 130, + 130, 131, 131, 132, 132, 132, 132, 133, 133, 134, + 134, 135, 136, 136, 137, 137, 138, 138, 138, 139, + 139, 140, 140, 140, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, + 141, 141, 141, 142, 142, 143, 143 }; /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ @@ -1372,12 +1359,12 @@ static const yytype_int8 yyr2[] = 4, 2, 1, 5, 5, 3, 5, 5, 2, 2, 5, 3, 4, 4, 2, 1, 7, 1, 2, 4, 2, 3, 4, 2, 3, 3, 2, 3, 4, 4, - 3, 3, 5, 1, 1, 3, 2, 5, 4, 1, - 2, 3, 1, 5, 8, 2, 3, 2, 1, 2, - 1, 3, 1, 3, 5, 4, 1, 3, 3, 2, - 1, 7, 5, 5, 9, 7, 1, 1, 1, 1, - 1, 2, 2, 2, 1, 2, 2, 2, 2, 3, - 3, 2, 2, 3, 1, 1, 2, 1, 0 + 3, 3, 5, 1, 3, 2, 5, 8, 2, 3, + 1, 5, 8, 2, 3, 2, 1, 2, 1, 3, + 1, 3, 5, 4, 1, 3, 3, 2, 1, 7, + 5, 5, 9, 7, 1, 1, 1, 1, 1, 2, + 2, 2, 1, 2, 2, 2, 2, 3, 3, 2, + 2, 3, 1, 1, 2, 1, 0 }; @@ -1943,397 +1930,391 @@ yydestruct (const char *yymsg, case YYSYMBOL_INT: /* INT */ #line 143 "src/parser.y" {} -#line 1947 "src/gen_parser.c" +#line 1934 "src/gen_parser.c" break; case YYSYMBOL_FLOAT: /* FLOAT */ #line 143 "src/parser.y" {} -#line 1953 "src/gen_parser.c" +#line 1940 "src/gen_parser.c" break; case YYSYMBOL_STRING: /* STRING */ #line 143 "src/parser.y" {} -#line 1959 "src/gen_parser.c" +#line 1946 "src/gen_parser.c" break; case YYSYMBOL_ID: /* ID */ #line 143 "src/parser.y" {} -#line 1965 "src/gen_parser.c" +#line 1952 "src/gen_parser.c" break; case YYSYMBOL_id: /* id */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 1971 "src/gen_parser.c" +#line 1958 "src/gen_parser.c" break; case YYSYMBOL_var: /* var */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 1977 "src/gen_parser.c" +#line 1964 "src/gen_parser.c" break; case YYSYMBOL_embed: /* embed */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 1983 "src/gen_parser.c" +#line 1970 "src/gen_parser.c" break; case YYSYMBOL_import: /* import */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 1989 "src/gen_parser.c" +#line 1976 "src/gen_parser.c" break; case YYSYMBOL_assign: /* assign */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 1995 "src/gen_parser.c" +#line 1982 "src/gen_parser.c" break; case YYSYMBOL_binary_op: /* binary_op */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2001 "src/gen_parser.c" +#line 1988 "src/gen_parser.c" break; case YYSYMBOL_unary_op: /* unary_op */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2007 "src/gen_parser.c" +#line 1994 "src/gen_parser.c" break; case YYSYMBOL_arg: /* arg */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2013 "src/gen_parser.c" +#line 2000 "src/gen_parser.c" break; case YYSYMBOL_arg_list: /* arg_list */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2019 "src/gen_parser.c" +#line 2006 "src/gen_parser.c" break; case YYSYMBOL_param_decl: /* param_decl */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2025 "src/gen_parser.c" +#line 2012 "src/gen_parser.c" break; case YYSYMBOL_decl_list: /* decl_list */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2031 "src/gen_parser.c" +#line 2018 "src/gen_parser.c" break; case YYSYMBOL_call: /* call */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2037 "src/gen_parser.c" +#line 2024 "src/gen_parser.c" break; case YYSYMBOL_defer: /* defer */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2043 "src/gen_parser.c" +#line 2030 "src/gen_parser.c" break; case YYSYMBOL_expr: /* expr */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2049 "src/gen_parser.c" +#line 2036 "src/gen_parser.c" break; case YYSYMBOL_while: /* while */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2055 "src/gen_parser.c" +#line 2042 "src/gen_parser.c" break; case YYSYMBOL_do_while: /* do_while */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2061 "src/gen_parser.c" +#line 2048 "src/gen_parser.c" break; case YYSYMBOL_goto: /* goto */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2067 "src/gen_parser.c" +#line 2054 "src/gen_parser.c" break; case YYSYMBOL_statement: /* statement */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2073 "src/gen_parser.c" +#line 2060 "src/gen_parser.c" break; case YYSYMBOL_statement_list: /* statement_list */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2079 "src/gen_parser.c" +#line 2066 "src/gen_parser.c" break; case YYSYMBOL_body: /* body */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2085 "src/gen_parser.c" +#line 2072 "src/gen_parser.c" break; case YYSYMBOL_macro_list: /* macro_list */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2091 "src/gen_parser.c" +#line 2078 "src/gen_parser.c" break; case YYSYMBOL_macro: /* macro */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2097 "src/gen_parser.c" +#line 2084 "src/gen_parser.c" break; case YYSYMBOL_expr_list: /* expr_list */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2103 "src/gen_parser.c" +#line 2090 "src/gen_parser.c" break; case YYSYMBOL_struct_init: /* struct_init */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2109 "src/gen_parser.c" +#line 2096 "src/gen_parser.c" break; case YYSYMBOL_struct_inits: /* struct_inits */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2115 "src/gen_parser.c" +#line 2102 "src/gen_parser.c" break; case YYSYMBOL_struct_construct: /* struct_construct */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2121 "src/gen_parser.c" +#line 2108 "src/gen_parser.c" break; case YYSYMBOL_init_expr: /* init_expr */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2127 "src/gen_parser.c" +#line 2114 "src/gen_parser.c" break; case YYSYMBOL_cond: /* cond */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2133 "src/gen_parser.c" +#line 2120 "src/gen_parser.c" break; case YYSYMBOL_expr_if: /* expr_if */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2139 "src/gen_parser.c" +#line 2126 "src/gen_parser.c" break; case YYSYMBOL_if: /* if */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2145 "src/gen_parser.c" +#line 2132 "src/gen_parser.c" break; case YYSYMBOL_for: /* for */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2151 "src/gen_parser.c" +#line 2138 "src/gen_parser.c" break; case YYSYMBOL_case: /* case */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2157 "src/gen_parser.c" +#line 2144 "src/gen_parser.c" break; case YYSYMBOL_case_list: /* case_list */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2163 "src/gen_parser.c" +#line 2150 "src/gen_parser.c" break; case YYSYMBOL_switch: /* switch */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2169 "src/gen_parser.c" +#line 2156 "src/gen_parser.c" break; case YYSYMBOL_const_for: /* const_for */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2175 "src/gen_parser.c" +#line 2162 "src/gen_parser.c" break; case YYSYMBOL_const_if: /* const_if */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2181 "src/gen_parser.c" +#line 2168 "src/gen_parser.c" break; case YYSYMBOL_const: /* const */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2187 "src/gen_parser.c" +#line 2174 "src/gen_parser.c" break; case YYSYMBOL_func_sign: /* func_sign */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2193 "src/gen_parser.c" +#line 2180 "src/gen_parser.c" break; case YYSYMBOL_variadic_sign: /* variadic_sign */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2199 "src/gen_parser.c" +#line 2186 "src/gen_parser.c" break; case YYSYMBOL_type: /* type */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2205 "src/gen_parser.c" +#line 2192 "src/gen_parser.c" break; case YYSYMBOL_var_decl: /* var_decl */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2211 "src/gen_parser.c" +#line 2198 "src/gen_parser.c" break; case YYSYMBOL_var_init: /* var_init */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2217 "src/gen_parser.c" +#line 2204 "src/gen_parser.c" break; case YYSYMBOL_proc: /* proc */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2223 "src/gen_parser.c" +#line 2210 "src/gen_parser.c" break; case YYSYMBOL_lambda: /* lambda */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2229 "src/gen_parser.c" +#line 2216 "src/gen_parser.c" break; - case YYSYMBOL_union_elem: /* union_elem */ + case YYSYMBOL_struct_elem: /* struct_elem */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2235 "src/gen_parser.c" +#line 2222 "src/gen_parser.c" break; - case YYSYMBOL_union_list: /* union_list */ + case YYSYMBOL_struct_list: /* struct_list */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2241 "src/gen_parser.c" +#line 2228 "src/gen_parser.c" break; case YYSYMBOL_union: /* union */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2247 "src/gen_parser.c" - break; - - case YYSYMBOL_struct_list: /* struct_list */ -#line 144 "src/parser.y" - { destroy_ast_tree(((*yyvaluep).node)); } -#line 2253 "src/gen_parser.c" +#line 2234 "src/gen_parser.c" break; case YYSYMBOL_generic: /* generic */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2259 "src/gen_parser.c" +#line 2240 "src/gen_parser.c" break; case YYSYMBOL_generic_list: /* generic_list */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2265 "src/gen_parser.c" +#line 2246 "src/gen_parser.c" break; case YYSYMBOL_struct: /* struct */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2271 "src/gen_parser.c" +#line 2252 "src/gen_parser.c" break; case YYSYMBOL_template_elem: /* template_elem */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2277 "src/gen_parser.c" +#line 2258 "src/gen_parser.c" break; case YYSYMBOL_template_list: /* template_list */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2283 "src/gen_parser.c" +#line 2264 "src/gen_parser.c" break; case YYSYMBOL_type_list: /* type_list */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2289 "src/gen_parser.c" +#line 2270 "src/gen_parser.c" break; case YYSYMBOL_type_alias: /* type_alias */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2295 "src/gen_parser.c" +#line 2276 "src/gen_parser.c" break; case YYSYMBOL_type_template: /* type_template */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2301 "src/gen_parser.c" +#line 2282 "src/gen_parser.c" break; case YYSYMBOL_enum_val: /* enum_val */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2307 "src/gen_parser.c" +#line 2288 "src/gen_parser.c" break; case YYSYMBOL_enum_list: /* enum_list */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2313 "src/gen_parser.c" +#line 2294 "src/gen_parser.c" break; case YYSYMBOL_enum: /* enum */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2319 "src/gen_parser.c" +#line 2300 "src/gen_parser.c" break; case YYSYMBOL_top_if: /* top_if */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2325 "src/gen_parser.c" +#line 2306 "src/gen_parser.c" break; case YYSYMBOL_top: /* top */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2331 "src/gen_parser.c" +#line 2312 "src/gen_parser.c" break; case YYSYMBOL_unit: /* unit */ #line 144 "src/parser.y" { destroy_ast_tree(((*yyvaluep).node)); } -#line 2337 "src/gen_parser.c" +#line 2318 "src/gen_parser.c" break; default: @@ -2642,169 +2623,169 @@ yyreduce: (yyval.node) = gen_id(strdup((yyvsp[0].str))); (yyval.node)->loc = to_src_loc(&yylloc); } -#line 2646 "src/gen_parser.c" +#line 2627 "src/gen_parser.c" break; case 3: /* var: var_decl */ #line 154 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 2652 "src/gen_parser.c" +#line 2633 "src/gen_parser.c" break; case 4: /* var: var_init */ #line 155 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 2658 "src/gen_parser.c" +#line 2639 "src/gen_parser.c" break; case 5: /* embed: "embed" "(" STRING ")" */ #line 158 "src/parser.y" { (yyval.node) = gen_embed(clone_string((yyvsp[-1].str))); } -#line 2664 "src/gen_parser.c" +#line 2645 "src/gen_parser.c" break; case 6: /* import: "import" STRING */ #line 161 "src/parser.y" { (yyval.node) = gen_import(clone_string((yyvsp[0].str))); } -#line 2670 "src/gen_parser.c" +#line 2651 "src/gen_parser.c" break; case 7: /* assign: expr "=" expr */ #line 164 "src/parser.y" { (yyval.node) = gen_assign((yyvsp[-2].node), (yyvsp[0].node)); } -#line 2676 "src/gen_parser.c" +#line 2657 "src/gen_parser.c" break; case 8: /* assign: expr "=" struct_construct */ #line 165 "src/parser.y" { (yyval.node) = gen_assign((yyvsp[-2].node), (yyvsp[0].node)); } -#line 2682 "src/gen_parser.c" +#line 2663 "src/gen_parser.c" break; case 9: /* binary_op: expr "+" expr */ #line 168 "src/parser.y" { (yyval.node) = gen_binop(AST_ADD, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2688 "src/gen_parser.c" +#line 2669 "src/gen_parser.c" break; case 10: /* binary_op: expr "-" expr */ #line 169 "src/parser.y" { (yyval.node) = gen_binop(AST_SUB, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2694 "src/gen_parser.c" +#line 2675 "src/gen_parser.c" break; case 11: /* binary_op: expr "*" expr */ #line 170 "src/parser.y" { (yyval.node) = gen_binop(AST_MUL, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2700 "src/gen_parser.c" +#line 2681 "src/gen_parser.c" break; case 12: /* binary_op: expr "/" expr */ #line 171 "src/parser.y" { (yyval.node) = gen_binop(AST_DIV, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2706 "src/gen_parser.c" +#line 2687 "src/gen_parser.c" break; case 13: /* binary_op: expr "%" expr */ #line 172 "src/parser.y" { (yyval.node) = gen_binop(AST_REM, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2712 "src/gen_parser.c" +#line 2693 "src/gen_parser.c" break; case 14: /* binary_op: expr "^" expr */ #line 173 "src/parser.y" { (yyval.node) = gen_binop(AST_XOR, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2718 "src/gen_parser.c" +#line 2699 "src/gen_parser.c" break; case 15: /* binary_op: expr "^^" expr */ #line 174 "src/parser.y" { (yyval.node) = gen_binop(AST_POW, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2724 "src/gen_parser.c" +#line 2705 "src/gen_parser.c" break; case 16: /* binary_op: expr "&" expr */ #line 175 "src/parser.y" { (yyval.node) = gen_binop(AST_AND, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2730 "src/gen_parser.c" +#line 2711 "src/gen_parser.c" break; case 17: /* binary_op: expr "&&" expr */ #line 176 "src/parser.y" { (yyval.node) = gen_binop(AST_LAND, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2736 "src/gen_parser.c" +#line 2717 "src/gen_parser.c" break; case 18: /* binary_op: expr "|" expr */ #line 177 "src/parser.y" { (yyval.node) = gen_binop(AST_OR, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2742 "src/gen_parser.c" +#line 2723 "src/gen_parser.c" break; case 19: /* binary_op: expr "||" expr */ #line 178 "src/parser.y" { (yyval.node) = gen_binop(AST_LOR, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2748 "src/gen_parser.c" +#line 2729 "src/gen_parser.c" break; case 20: /* binary_op: expr "<<" expr */ #line 179 "src/parser.y" { (yyval.node) = gen_binop(AST_LSHIFT, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2754 "src/gen_parser.c" +#line 2735 "src/gen_parser.c" break; case 21: /* binary_op: expr ">>" expr */ #line 180 "src/parser.y" { (yyval.node) = gen_binop(AST_RSHIFT, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2760 "src/gen_parser.c" +#line 2741 "src/gen_parser.c" break; case 22: /* binary_op: expr "+=" expr */ #line 181 "src/parser.y" { (yyval.node) = gen_binop(AST_ASSIGN_ADD, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2766 "src/gen_parser.c" +#line 2747 "src/gen_parser.c" break; case 23: /* binary_op: expr "-=" expr */ #line 182 "src/parser.y" { (yyval.node) = gen_binop(AST_ASSIGN_SUB, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2772 "src/gen_parser.c" +#line 2753 "src/gen_parser.c" break; case 24: /* binary_op: expr "*=" expr */ #line 183 "src/parser.y" { (yyval.node) = gen_binop(AST_ASSIGN_MUL, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2778 "src/gen_parser.c" +#line 2759 "src/gen_parser.c" break; case 25: /* binary_op: expr "/=" expr */ #line 184 "src/parser.y" { (yyval.node) = gen_binop(AST_ASSIGN_DIV, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2784 "src/gen_parser.c" +#line 2765 "src/gen_parser.c" break; case 26: /* binary_op: expr "%=" expr */ #line 185 "src/parser.y" { (yyval.node) = gen_binop(AST_ASSIGN_REM, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2790 "src/gen_parser.c" +#line 2771 "src/gen_parser.c" break; case 27: /* binary_op: expr "&=" expr */ #line 186 "src/parser.y" { (yyval.node) = gen_binop(AST_ASSIGN_AND, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2796 "src/gen_parser.c" +#line 2777 "src/gen_parser.c" break; case 28: /* binary_op: expr "|=" expr */ #line 187 "src/parser.y" { (yyval.node) = gen_binop(AST_ASSIGN_OR, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2802 "src/gen_parser.c" +#line 2783 "src/gen_parser.c" break; case 29: /* binary_op: expr "^=" expr */ #line 188 "src/parser.y" { (yyval.node) = gen_binop(AST_ASSIGN_XOR, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2808 "src/gen_parser.c" +#line 2789 "src/gen_parser.c" break; case 30: /* binary_op: expr "<<=" expr */ @@ -2812,7 +2793,7 @@ yyreduce: { (yyval.node) = gen_binop(AST_ASSIGN_LSHIFT, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2816 "src/gen_parser.c" +#line 2797 "src/gen_parser.c" break; case 31: /* binary_op: expr ">>=" expr */ @@ -2820,193 +2801,193 @@ yyreduce: { (yyval.node) = gen_binop(AST_ASSIGN_RSHIFT, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2824 "src/gen_parser.c" +#line 2805 "src/gen_parser.c" break; case 32: /* binary_op: expr "<" expr */ #line 195 "src/parser.y" { (yyval.node) = gen_binop(AST_LT, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2830 "src/gen_parser.c" +#line 2811 "src/gen_parser.c" break; case 33: /* binary_op: expr ">" expr */ #line 196 "src/parser.y" { (yyval.node) = gen_binop(AST_GT, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2836 "src/gen_parser.c" +#line 2817 "src/gen_parser.c" break; case 34: /* binary_op: expr "<=" expr */ #line 197 "src/parser.y" { (yyval.node) = gen_binop(AST_LE, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2842 "src/gen_parser.c" +#line 2823 "src/gen_parser.c" break; case 35: /* binary_op: expr ">=" expr */ #line 198 "src/parser.y" { (yyval.node) = gen_binop(AST_GE, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2848 "src/gen_parser.c" +#line 2829 "src/gen_parser.c" break; case 36: /* binary_op: expr "!=" expr */ #line 199 "src/parser.y" { (yyval.node) = gen_binop(AST_NE, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2854 "src/gen_parser.c" +#line 2835 "src/gen_parser.c" break; case 37: /* binary_op: expr "==" expr */ #line 200 "src/parser.y" { (yyval.node) = gen_binop(AST_EQ, (yyvsp[-2].node), (yyvsp[0].node)); } -#line 2860 "src/gen_parser.c" +#line 2841 "src/gen_parser.c" break; case 38: /* unary_op: "-" expr */ #line 203 "src/parser.y" { (yyval.node) = gen_unop(AST_NEG, (yyvsp[0].node)); } -#line 2866 "src/gen_parser.c" +#line 2847 "src/gen_parser.c" break; case 39: /* unary_op: "!" expr */ #line 204 "src/parser.y" { (yyval.node) = gen_unop(AST_LNOT, (yyvsp[0].node)); } -#line 2872 "src/gen_parser.c" +#line 2853 "src/gen_parser.c" break; case 40: /* unary_op: "&" expr */ #line 205 "src/parser.y" { (yyval.node) = gen_unop(AST_REF, (yyvsp[0].node)); } -#line 2878 "src/gen_parser.c" +#line 2859 "src/gen_parser.c" break; case 41: /* unary_op: "'" expr */ #line 206 "src/parser.y" { (yyval.node) = gen_unop(AST_DEREF, (yyvsp[0].node)); } -#line 2884 "src/gen_parser.c" +#line 2865 "src/gen_parser.c" break; case 42: /* unary_op: "~" expr */ #line 207 "src/parser.y" { (yyval.node) = gen_unop(AST_NOT, (yyvsp[0].node)); } -#line 2890 "src/gen_parser.c" +#line 2871 "src/gen_parser.c" break; case 43: /* arg: "&" var_decl */ #line 210 "src/parser.y" { (yyval.node) = gen_unop(AST_REF, (yyvsp[0].node)); } -#line 2896 "src/gen_parser.c" +#line 2877 "src/gen_parser.c" break; case 44: /* arg: var_decl */ #line 211 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 2902 "src/gen_parser.c" +#line 2883 "src/gen_parser.c" break; case 45: /* arg: init_expr */ #line 212 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 2908 "src/gen_parser.c" +#line 2889 "src/gen_parser.c" break; case 46: /* arg_list: arg "," arg_list */ #line 215 "src/parser.y" { (yyval.node) = (yyvsp[-2].node); (yyvsp[-2].node)->next = (yyvsp[0].node); } -#line 2914 "src/gen_parser.c" +#line 2895 "src/gen_parser.c" break; case 47: /* arg_list: arg */ #line 216 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 2920 "src/gen_parser.c" +#line 2901 "src/gen_parser.c" break; case 48: /* param_decl: type */ #line 219 "src/parser.y" { (yyval.node) = gen_var(NULL, (yyvsp[0].node), NULL); } -#line 2926 "src/gen_parser.c" +#line 2907 "src/gen_parser.c" break; case 49: /* decl_list: var_decl "," decl_list */ #line 221 "src/parser.y" { (yyval.node) = (yyvsp[-2].node); (yyvsp[-2].node)->next = (yyvsp[0].node); } -#line 2932 "src/gen_parser.c" +#line 2913 "src/gen_parser.c" break; case 50: /* decl_list: param_decl "," decl_list */ #line 222 "src/parser.y" { (yyval.node) = (yyvsp[-2].node); (yyvsp[-2].node)->next = (yyvsp[0].node); } -#line 2938 "src/gen_parser.c" +#line 2919 "src/gen_parser.c" break; case 51: /* decl_list: var_decl */ #line 223 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 2944 "src/gen_parser.c" +#line 2925 "src/gen_parser.c" break; case 52: /* decl_list: param_decl */ #line 224 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 2950 "src/gen_parser.c" +#line 2931 "src/gen_parser.c" break; case 53: /* call: id "(" arg_list ")" */ #line 228 "src/parser.y" { (yyval.node) = gen_call((yyvsp[-3].node), (yyvsp[-1].node)); } -#line 2956 "src/gen_parser.c" +#line 2937 "src/gen_parser.c" break; case 54: /* call: id "(" ")" */ #line 229 "src/parser.y" { (yyval.node) = gen_call((yyvsp[-2].node), NULL); } -#line 2962 "src/gen_parser.c" +#line 2943 "src/gen_parser.c" break; case 55: /* defer: "defer" "(" expr ")" */ #line 232 "src/parser.y" { (yyval.node) = gen_defer((yyvsp[-1].node)); } -#line 2968 "src/gen_parser.c" +#line 2949 "src/gen_parser.c" break; case 56: /* expr: id */ #line 236 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 2974 "src/gen_parser.c" +#line 2955 "src/gen_parser.c" break; case 57: /* expr: expr "." id */ #line 237 "src/parser.y" { (yyval.node) = gen_dot((yyvsp[-2].node), (yyvsp[0].node)); } -#line 2980 "src/gen_parser.c" +#line 2961 "src/gen_parser.c" break; case 58: /* expr: id "##" id */ #line 238 "src/parser.y" { (yyval.node) = gen_paste((yyvsp[-2].node), (yyvsp[0].node)); } -#line 2986 "src/gen_parser.c" +#line 2967 "src/gen_parser.c" break; case 59: /* expr: "..." id */ #line 239 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 2992 "src/gen_parser.c" +#line 2973 "src/gen_parser.c" break; case 60: /* expr: "@" */ #line 240 "src/parser.y" { (yyval.node) = gen_last(); } -#line 2998 "src/gen_parser.c" +#line 2979 "src/gen_parser.c" break; case 61: /* expr: INT */ #line 241 "src/parser.y" { (yyval.node) = gen_int((yyvsp[0].integer)); (yyval.node)->loc = to_src_loc(&yylloc); } -#line 3004 "src/gen_parser.c" +#line 2985 "src/gen_parser.c" break; case 62: /* expr: FLOAT */ #line 242 "src/parser.y" { (yyval.node) = gen_float((yyvsp[0].dbl)); (yyval.node)->loc = to_src_loc(&yylloc); } -#line 3010 "src/gen_parser.c" +#line 2991 "src/gen_parser.c" break; case 63: /* expr: STRING */ @@ -3015,85 +2996,85 @@ yyreduce: (yyval.node) = gen_string(clone_string((yyvsp[0].str))); (yyval.node)->loc = to_src_loc(&yylloc); } -#line 3019 "src/gen_parser.c" +#line 3000 "src/gen_parser.c" break; case 64: /* expr: "(" expr ")" */ #line 247 "src/parser.y" { (yyval.node) = (yyvsp[-1].node); } -#line 3025 "src/gen_parser.c" +#line 3006 "src/gen_parser.c" break; case 65: /* expr: assign */ #line 248 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 3031 "src/gen_parser.c" +#line 3012 "src/gen_parser.c" break; case 66: /* expr: call */ #line 249 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 3037 "src/gen_parser.c" +#line 3018 "src/gen_parser.c" break; case 67: /* expr: defer */ #line 250 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 3043 "src/gen_parser.c" +#line 3024 "src/gen_parser.c" break; case 68: /* expr: binary_op */ #line 251 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 3049 "src/gen_parser.c" +#line 3030 "src/gen_parser.c" break; case 69: /* expr: unary_op */ #line 252 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 3055 "src/gen_parser.c" +#line 3036 "src/gen_parser.c" break; case 70: /* expr: "(" var_init ")" */ #line 253 "src/parser.y" { (yyval.node) = (yyvsp[-1].node); } -#line 3061 "src/gen_parser.c" +#line 3042 "src/gen_parser.c" break; case 71: /* expr: "sizeof" expr */ #line 254 "src/parser.y" { (yyval.node) = gen_sizeof((yyvsp[0].node)); } -#line 3067 "src/gen_parser.c" +#line 3048 "src/gen_parser.c" break; case 72: /* expr: expr "as" type */ #line 255 "src/parser.y" { (yyval.node) = gen_cast((yyvsp[-2].node), (yyvsp[0].node)); } -#line 3073 "src/gen_parser.c" +#line 3054 "src/gen_parser.c" break; case 73: /* expr: "as" type */ #line 256 "src/parser.y" { (yyval.node) = gen_as((yyvsp[0].node)); } -#line 3079 "src/gen_parser.c" +#line 3060 "src/gen_parser.c" break; case 74: /* expr: embed */ #line 257 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 3085 "src/gen_parser.c" +#line 3066 "src/gen_parser.c" break; case 75: /* expr: lambda */ #line 258 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 3091 "src/gen_parser.c" +#line 3072 "src/gen_parser.c" break; case 76: /* while: "while" expr body */ #line 261 "src/parser.y" { (yyval.node) = gen_while((yyvsp[-1].node), (yyvsp[0].node)); } -#line 3097 "src/gen_parser.c" +#line 3078 "src/gen_parser.c" break; case 77: /* do_while: "do" body "while" expr ";" */ @@ -3102,146 +3083,146 @@ yyreduce: (yyval.node) = gen_while((yyvsp[-3].node), (yyvsp[-1].node)); ast_set_flags((yyval.node), AST_FLAG_DELAYED); } -#line 3106 "src/gen_parser.c" +#line 3087 "src/gen_parser.c" break; case 78: /* goto: "goto" id */ #line 270 "src/parser.y" { (yyval.node) = gen_goto(gen_label((yyvsp[0].node))); } -#line 3112 "src/gen_parser.c" +#line 3093 "src/gen_parser.c" break; case 79: /* statement: expr ";" */ #line 272 "src/parser.y" { (yyval.node) = (yyvsp[-1].node); } -#line 3118 "src/gen_parser.c" +#line 3099 "src/gen_parser.c" break; case 80: /* statement: "return" init_expr ";" */ #line 273 "src/parser.y" { (yyval.node) = gen_return((yyvsp[-1].node)); } -#line 3124 "src/gen_parser.c" +#line 3105 "src/gen_parser.c" break; case 81: /* statement: "return" ";" */ #line 274 "src/parser.y" { (yyval.node) = gen_return(NULL); } -#line 3130 "src/gen_parser.c" +#line 3111 "src/gen_parser.c" break; case 82: /* statement: "break" ";" */ #line 275 "src/parser.y" { (yyval.node) = gen_ctrl(AST_CTRL_BREAK, to_src_loc(&yylloc)); } -#line 3136 "src/gen_parser.c" +#line 3117 "src/gen_parser.c" break; case 83: /* statement: "continue" ";" */ #line 276 "src/parser.y" { (yyval.node) = gen_ctrl(AST_CTRL_CONTINUE, to_src_loc(&yylloc)); } -#line 3143 "src/gen_parser.c" +#line 3124 "src/gen_parser.c" break; case 84: /* statement: import ";" */ #line 278 "src/parser.y" { (yyval.node) = (yyvsp[-1].node); } -#line 3149 "src/gen_parser.c" +#line 3130 "src/gen_parser.c" break; case 85: /* statement: var ";" */ #line 279 "src/parser.y" { (yyval.node) = (yyvsp[-1].node); } -#line 3155 "src/gen_parser.c" +#line 3136 "src/gen_parser.c" break; case 86: /* statement: if */ #line 280 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 3161 "src/gen_parser.c" +#line 3142 "src/gen_parser.c" break; case 87: /* statement: goto ";" */ #line 281 "src/parser.y" { (yyval.node) = (yyvsp[-1].node); } -#line 3167 "src/gen_parser.c" +#line 3148 "src/gen_parser.c" break; case 88: /* statement: id ":" */ #line 282 "src/parser.y" { (yyval.node) = gen_label((yyvsp[-1].node)); } -#line 3173 "src/gen_parser.c" +#line 3154 "src/gen_parser.c" break; case 89: /* statement: for */ #line 283 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 3179 "src/gen_parser.c" +#line 3160 "src/gen_parser.c" break; case 90: /* statement: const */ #line 284 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 3185 "src/gen_parser.c" +#line 3166 "src/gen_parser.c" break; case 91: /* statement: while */ #line 285 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 3191 "src/gen_parser.c" +#line 3172 "src/gen_parser.c" break; case 92: /* statement: do_while */ #line 286 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 3197 "src/gen_parser.c" +#line 3178 "src/gen_parser.c" break; case 93: /* statement: switch */ #line 287 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 3203 "src/gen_parser.c" +#line 3184 "src/gen_parser.c" break; case 94: /* statement: macro */ #line 288 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 3209 "src/gen_parser.c" +#line 3190 "src/gen_parser.c" break; case 95: /* statement: struct */ #line 289 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 3215 "src/gen_parser.c" +#line 3196 "src/gen_parser.c" break; case 96: /* statement: type_alias ";" */ #line 290 "src/parser.y" { (yyval.node) = (yyvsp[-1].node); } -#line 3221 "src/gen_parser.c" +#line 3202 "src/gen_parser.c" break; case 97: /* statement: type_template */ #line 291 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 3227 "src/gen_parser.c" +#line 3208 "src/gen_parser.c" break; case 98: /* statement: enum */ #line 292 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 3233 "src/gen_parser.c" +#line 3214 "src/gen_parser.c" break; case 99: /* statement: body */ #line 293 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 3239 "src/gen_parser.c" +#line 3220 "src/gen_parser.c" break; case 100: /* statement: ";" */ #line 294 "src/parser.y" { (yyval.node) = gen_empty(); } -#line 3245 "src/gen_parser.c" +#line 3226 "src/gen_parser.c" break; case 101: /* statement: error */ @@ -3260,43 +3241,43 @@ yyreduce: yyclearin; yyerrok; } -#line 3264 "src/gen_parser.c" +#line 3245 "src/gen_parser.c" break; case 102: /* statement_list: statement statement_list */ #line 311 "src/parser.y" { (yyval.node) = (yyvsp[-1].node); (yyvsp[-1].node)->next = (yyvsp[0].node); } -#line 3270 "src/gen_parser.c" +#line 3251 "src/gen_parser.c" break; case 103: /* statement_list: statement */ #line 312 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 3276 "src/gen_parser.c" +#line 3257 "src/gen_parser.c" break; case 104: /* body: "{" statement_list "}" */ #line 315 "src/parser.y" { (yyval.node) = gen_block((yyvsp[-1].node)); } -#line 3282 "src/gen_parser.c" +#line 3263 "src/gen_parser.c" break; case 105: /* body: "{" "}" */ #line 316 "src/parser.y" { (yyval.node) = gen_block(gen_empty()); } -#line 3288 "src/gen_parser.c" +#line 3269 "src/gen_parser.c" break; case 106: /* macro_list: id "," macro_list */ #line 319 "src/parser.y" { (yyval.node) = (yyvsp[-2].node); (yyval.node)->next = (yyvsp[0].node); } -#line 3294 "src/gen_parser.c" +#line 3275 "src/gen_parser.c" break; case 107: /* macro_list: id */ #line 320 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 3300 "src/gen_parser.c" +#line 3281 "src/gen_parser.c" break; case 108: /* macro: "define" id "(" macro_list ")" body */ @@ -3305,7 +3286,7 @@ yyreduce: (yyval.node) = gen_macro((yyvsp[-4].node), (yyvsp[-2].node), (yyvsp[0].node)); ast_set_flags((yyvsp[0].node), AST_FLAG_UNHYGIENIC); } -#line 3309 "src/gen_parser.c" +#line 3290 "src/gen_parser.c" break; case 109: /* macro: "define" id "(" macro_list "..." id ")" body */ @@ -3317,7 +3298,7 @@ yyreduce: ast_set_flags((yyval.node), AST_FLAG_VARIADIC); ast_set_flags((yyvsp[0].node), AST_FLAG_UNHYGIENIC); } -#line 3321 "src/gen_parser.c" +#line 3302 "src/gen_parser.c" break; case 110: /* macro: "define" id "(" ")" body */ @@ -3326,25 +3307,25 @@ yyreduce: (yyval.node) = gen_macro((yyvsp[-3].node), NULL, (yyvsp[0].node)); ast_set_flags((yyvsp[0].node), AST_FLAG_UNHYGIENIC); } -#line 3330 "src/gen_parser.c" +#line 3311 "src/gen_parser.c" break; case 111: /* expr_list: expr "," expr_list */ #line 340 "src/parser.y" { (yyval.node) = (yyvsp[-2].node); (yyvsp[-2].node)->next = (yyvsp[0].node); } -#line 3336 "src/gen_parser.c" +#line 3317 "src/gen_parser.c" break; case 112: /* expr_list: expr */ #line 341 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 3342 "src/gen_parser.c" +#line 3323 "src/gen_parser.c" break; case 113: /* struct_init: init_expr */ #line 344 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 3348 "src/gen_parser.c" +#line 3329 "src/gen_parser.c" break; case 114: /* struct_init: "." id "=" init_expr */ @@ -3353,121 +3334,121 @@ yyreduce: (yyval.node) = gen_var((yyvsp[-2].node), NULL, (yyvsp[0].node)); ast_set_flags((yyval.node), AST_FLAG_MEMBER); } -#line 3357 "src/gen_parser.c" +#line 3338 "src/gen_parser.c" break; case 115: /* struct_inits: struct_init "," struct_inits */ #line 351 "src/parser.y" { (yyval.node) = (yyvsp[-2].node); (yyvsp[-2].node)->next = (yyvsp[0].node); } -#line 3363 "src/gen_parser.c" +#line 3344 "src/gen_parser.c" break; case 116: /* struct_inits: struct_init */ #line 352 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 3369 "src/gen_parser.c" +#line 3350 "src/gen_parser.c" break; case 117: /* struct_construct: "{" struct_inits "}" */ #line 355 "src/parser.y" { (yyval.node) = gen_init((yyvsp[-1].node)); } -#line 3375 "src/gen_parser.c" +#line 3356 "src/gen_parser.c" break; case 118: /* init_expr: expr */ #line 358 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 3381 "src/gen_parser.c" +#line 3362 "src/gen_parser.c" break; case 119: /* init_expr: expr_if */ #line 359 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 3387 "src/gen_parser.c" +#line 3368 "src/gen_parser.c" break; case 120: /* init_expr: struct_construct */ #line 360 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 3393 "src/gen_parser.c" +#line 3374 "src/gen_parser.c" break; case 121: /* init_expr: struct_construct "as" type */ #line 361 "src/parser.y" { (yyval.node) = gen_cast((yyvsp[-2].node), (yyvsp[0].node)); } -#line 3399 "src/gen_parser.c" +#line 3380 "src/gen_parser.c" break; case 122: /* cond: expr */ #line 364 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 3405 "src/gen_parser.c" +#line 3386 "src/gen_parser.c" break; case 123: /* cond: "(" expr_if ")" */ #line 365 "src/parser.y" { (yyval.node) = (yyvsp[-1].node); } -#line 3411 "src/gen_parser.c" +#line 3392 "src/gen_parser.c" break; case 124: /* expr_if: "if" cond body "else" body */ #line 369 "src/parser.y" { (yyval.node) = gen_if((yyvsp[-3].node), (yyvsp[-2].node), (yyvsp[0].node)); } -#line 3417 "src/gen_parser.c" +#line 3398 "src/gen_parser.c" break; case 125: /* expr_if: "if" cond body "else" expr_if */ #line 370 "src/parser.y" { (yyval.node) = gen_if((yyvsp[-3].node), (yyvsp[-2].node), (yyvsp[0].node)); } -#line 3423 "src/gen_parser.c" +#line 3404 "src/gen_parser.c" break; case 126: /* if: "if" cond body */ #line 373 "src/parser.y" { (yyval.node) = gen_if((yyvsp[-1].node), (yyvsp[0].node), NULL); } -#line 3429 "src/gen_parser.c" +#line 3410 "src/gen_parser.c" break; case 127: /* if: "if" cond body "else" body */ #line 374 "src/parser.y" { (yyval.node) = gen_if((yyvsp[-3].node), (yyvsp[-2].node), (yyvsp[0].node)); } -#line 3435 "src/gen_parser.c" +#line 3416 "src/gen_parser.c" break; case 128: /* if: "if" cond body "else" if */ #line 375 "src/parser.y" { (yyval.node) = gen_if((yyvsp[-3].node), (yyvsp[-2].node), (yyvsp[0].node)); } -#line 3441 "src/gen_parser.c" +#line 3422 "src/gen_parser.c" break; case 129: /* for: "for" arg ";" expr ";" expr body */ #line 378 "src/parser.y" { (yyval.node) = gen_for((yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node)); } -#line 3447 "src/gen_parser.c" +#line 3428 "src/gen_parser.c" break; case 130: /* case: "case" expr ":" statement_list */ #line 381 "src/parser.y" { (yyval.node) = gen_case((yyvsp[-2].node), (yyvsp[0].node)); } -#line 3453 "src/gen_parser.c" +#line 3434 "src/gen_parser.c" break; case 131: /* case_list: case case_list */ #line 384 "src/parser.y" { (yyval.node) = (yyvsp[-1].node); (yyvsp[-1].node)->next = (yyvsp[0].node); } -#line 3459 "src/gen_parser.c" +#line 3440 "src/gen_parser.c" break; case 132: /* case_list: case */ #line 385 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 3465 "src/gen_parser.c" +#line 3446 "src/gen_parser.c" break; case 133: /* switch: "switch" expr "{" case_list "}" */ #line 388 "src/parser.y" { (yyval.node) = gen_switch((yyvsp[-3].node), (yyvsp[-1].node)); } -#line 3471 "src/gen_parser.c" +#line 3452 "src/gen_parser.c" break; case 134: /* const_for: "for" id ":" expr_list body */ @@ -3477,7 +3458,7 @@ yyreduce: (yyval.node) = gen_for((yyvsp[-3].node), NULL, (yyvsp[-1].node), (yyvsp[0].node)); ast_set_flags((yyvsp[0].node), AST_FLAG_UNHYGIENIC); } -#line 3481 "src/gen_parser.c" +#line 3462 "src/gen_parser.c" break; case 135: /* const_if: "if" expr body */ @@ -3486,7 +3467,7 @@ yyreduce: (yyval.node) = gen_if((yyvsp[-1].node), (yyvsp[0].node), NULL); ast_set_flags((yyvsp[0].node), AST_FLAG_UNHYGIENIC); } -#line 3490 "src/gen_parser.c" +#line 3471 "src/gen_parser.c" break; case 136: /* const_if: "if" expr body "else" body */ @@ -3496,7 +3477,7 @@ yyreduce: ast_set_flags((yyvsp[-2].node), AST_FLAG_UNHYGIENIC); ast_set_flags((yyvsp[0].node), AST_FLAG_UNHYGIENIC); } -#line 3500 "src/gen_parser.c" +#line 3481 "src/gen_parser.c" break; case 137: /* const_if: "if" expr body "else" const_if */ @@ -3505,21 +3486,21 @@ yyreduce: (yyval.node) = gen_if((yyvsp[-3].node), (yyvsp[-2].node), (yyvsp[0].node)); ast_set_flags((yyvsp[-2].node), AST_FLAG_UNHYGIENIC); } -#line 3509 "src/gen_parser.c" +#line 3490 "src/gen_parser.c" break; case 138: /* const: "const" const_if */ #line 415 "src/parser.y" { (yyval.node) = (yyvsp[0].node); ast_set_flags((yyval.node), AST_FLAG_CONST); } -#line 3516 "src/gen_parser.c" +#line 3497 "src/gen_parser.c" break; case 139: /* const: "const" const_for */ #line 417 "src/parser.y" { (yyval.node) = (yyvsp[0].node); ast_set_flags((yyval.node), AST_FLAG_CONST); } -#line 3523 "src/gen_parser.c" +#line 3504 "src/gen_parser.c" break; case 140: /* func_sign: "(" decl_list "=>" type ")" */ @@ -3527,41 +3508,41 @@ yyreduce: { (yyval.node) = gen_type(AST_TYPE_SIGN, NULL, (yyvsp[-3].node), (yyvsp[-1].node)); } -#line 3531 "src/gen_parser.c" +#line 3512 "src/gen_parser.c" break; case 141: /* func_sign: "(" decl_list ")" */ #line 424 "src/parser.y" { (yyval.node) = gen_type(AST_TYPE_SIGN, NULL, (yyvsp[-1].node), NULL); } -#line 3538 "src/gen_parser.c" +#line 3519 "src/gen_parser.c" break; case 142: /* func_sign: "(" decl_list "=>" ")" */ #line 426 "src/parser.y" { (yyval.node) = gen_type(AST_TYPE_SIGN, NULL, (yyvsp[-2].node), NULL); } -#line 3545 "src/gen_parser.c" +#line 3526 "src/gen_parser.c" break; case 143: /* func_sign: "(" "=>" type ")" */ #line 428 "src/parser.y" { (yyval.node) = gen_type(AST_TYPE_SIGN, NULL, NULL, (yyvsp[-1].node)); } -#line 3552 "src/gen_parser.c" +#line 3533 "src/gen_parser.c" break; case 144: /* func_sign: "(" ")" */ #line 430 "src/parser.y" { (yyval.node) = gen_type(AST_TYPE_SIGN, NULL, NULL, NULL); } -#line 3559 "src/gen_parser.c" +#line 3540 "src/gen_parser.c" break; case 145: /* variadic_sign: func_sign */ #line 434 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 3565 "src/gen_parser.c" +#line 3546 "src/gen_parser.c" break; case 146: /* variadic_sign: "(" decl_list "..." id "=>" type ")" */ @@ -3571,13 +3552,13 @@ yyreduce: (yyval.node) = gen_type(AST_TYPE_SIGN, NULL, (yyvsp[-5].node), (yyvsp[-1].node)); ast_set_flags((yyval.node), AST_FLAG_VARIADIC); } -#line 3575 "src/gen_parser.c" +#line 3556 "src/gen_parser.c" break; case 147: /* type: id */ #line 442 "src/parser.y" { (yyval.node) = gen_type(AST_TYPE_ID, (yyvsp[0].node), NULL, NULL); } -#line 3581 "src/gen_parser.c" +#line 3562 "src/gen_parser.c" break; case 148: /* type: "'" func_sign */ @@ -3586,7 +3567,7 @@ yyreduce: (yyval.node) = gen_type(AST_TYPE_POINTER, NULL, NULL, NULL); (yyval.node)->next = (yyvsp[0].node); } -#line 3590 "src/gen_parser.c" +#line 3571 "src/gen_parser.c" break; case 149: /* type: id "(" type_list ")" */ @@ -3594,7 +3575,7 @@ yyreduce: { (yyval.node) = gen_type(AST_TYPE_STRUCT, (yyvsp[-3].node), (yyvsp[-1].node), NULL); } -#line 3598 "src/gen_parser.c" +#line 3579 "src/gen_parser.c" break; case 150: /* type: "'" type */ @@ -3603,7 +3584,7 @@ yyreduce: (yyval.node) = gen_type(AST_TYPE_POINTER, NULL, NULL, NULL); (yyval.node)->_type.next = (yyvsp[0].node); } -#line 3607 "src/gen_parser.c" +#line 3588 "src/gen_parser.c" break; case 151: /* type: "[" "]" type */ @@ -3612,7 +3593,7 @@ yyreduce: (yyval.node) = gen_type(AST_TYPE_ARR, NULL, NULL, NULL); (yyval.node)->_type.next = (yyvsp[0].node); } -#line 3616 "src/gen_parser.c" +#line 3597 "src/gen_parser.c" break; case 152: /* type: "[" expr "]" type */ @@ -3621,7 +3602,7 @@ yyreduce: (yyval.node) = gen_type(AST_TYPE_ARR, NULL, (yyvsp[-2].node), NULL); (yyval.node)->_type.next = (yyvsp[0].node); } -#line 3625 "src/gen_parser.c" +#line 3606 "src/gen_parser.c" break; case 153: /* type: "typeof" expr */ @@ -3629,7 +3610,7 @@ yyreduce: { (yyval.node) = gen_type(AST_TYPE_TYPEOF, NULL, (yyvsp[0].node), NULL); } -#line 3633 "src/gen_parser.c" +#line 3614 "src/gen_parser.c" break; case 154: /* var_decl: id "mut" type */ @@ -3638,25 +3619,25 @@ yyreduce: (yyval.node) = gen_var((yyvsp[-2].node), (yyvsp[0].node), NULL); ast_set_flags((yyval.node), AST_FLAG_MUTABLE); } -#line 3642 "src/gen_parser.c" +#line 3623 "src/gen_parser.c" break; case 155: /* var_decl: id "const" type */ #line 471 "src/parser.y" { (yyval.node) = gen_var((yyvsp[-2].node), (yyvsp[0].node), NULL); } -#line 3648 "src/gen_parser.c" +#line 3629 "src/gen_parser.c" break; case 156: /* var_decl: id type */ #line 472 "src/parser.y" { (yyval.node) = gen_var((yyvsp[-1].node), (yyvsp[0].node), NULL); } -#line 3654 "src/gen_parser.c" +#line 3635 "src/gen_parser.c" break; case 157: /* var_init: var_decl "=" init_expr */ #line 475 "src/parser.y" { (yyval.node) = (yyvsp[-2].node); (yyvsp[-2].node)->_var.init = (yyvsp[0].node); } -#line 3660 "src/gen_parser.c" +#line 3641 "src/gen_parser.c" break; case 158: /* var_init: id "mut" "=" init_expr */ @@ -3665,7 +3646,7 @@ yyreduce: (yyval.node) = gen_var((yyvsp[-3].node), NULL, (yyvsp[0].node)); ast_set_flags((yyval.node), AST_FLAG_UNTYPED | AST_FLAG_MUTABLE); } -#line 3669 "src/gen_parser.c" +#line 3650 "src/gen_parser.c" break; case 159: /* var_init: id "const" "=" init_expr */ @@ -3674,7 +3655,7 @@ yyreduce: (yyval.node) = gen_var((yyvsp[-3].node), NULL, (yyvsp[0].node)); ast_set_flags((yyval.node), AST_FLAG_UNTYPED); } -#line 3678 "src/gen_parser.c" +#line 3659 "src/gen_parser.c" break; case 160: /* proc: id variadic_sign body */ @@ -3683,7 +3664,7 @@ yyreduce: (yyval.node) = gen_proc((yyvsp[-2].node), (yyvsp[-1].node), (yyvsp[0].node)); ast_set_flags((yyval.node), (yyvsp[-1].node)->flags); } -#line 3687 "src/gen_parser.c" +#line 3668 "src/gen_parser.c" break; case 161: /* proc: "extern" id func_sign */ @@ -3692,348 +3673,336 @@ yyreduce: (yyval.node) = gen_proc((yyvsp[-1].node), (yyvsp[0].node), NULL); ast_set_flags((yyval.node), AST_FLAG_EXTERN); } -#line 3696 "src/gen_parser.c" +#line 3677 "src/gen_parser.c" break; case 162: /* lambda: "[" macro_list "]" func_sign body */ #line 496 "src/parser.y" - { (yyval.node) = gen_lambda((yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node)); - } -#line 3703 "src/gen_parser.c" - break; - - case 163: /* union_elem: union */ -#line 500 "src/parser.y" - { (yyval.node) = (yyvsp[0].node); } -#line 3709 "src/gen_parser.c" + { (yyval.node) = gen_lambda((yyvsp[-3].node), (yyvsp[-1].node), (yyvsp[0].node)); } +#line 3683 "src/gen_parser.c" break; - case 164: /* union_elem: var_decl */ -#line 501 "src/parser.y" - { (yyval.node) = (yyvsp[0].node); } -#line 3715 "src/gen_parser.c" + case 163: /* struct_elem: var_decl */ +#line 499 "src/parser.y" + { (yyval.node) = (yyvsp[0].node); } +#line 3689 "src/gen_parser.c" break; - case 165: /* union_list: union_elem ";" union_list */ -#line 504 "src/parser.y" - { (yyval.node) = (yyvsp[-2].node); (yyvsp[-2].node)->next = (yyvsp[0].node); } -#line 3721 "src/gen_parser.c" + case 164: /* struct_list: struct_elem ";" struct_list */ +#line 502 "src/parser.y" + { (yyval.node) = (yyvsp[-2].node); (yyvsp[-2].node)->next = (yyvsp[0].node); } +#line 3695 "src/gen_parser.c" break; - case 166: /* union_list: union_elem ";" */ -#line 505 "src/parser.y" - { (yyval.node) = (yyvsp[-1].node); } -#line 3727 "src/gen_parser.c" + case 165: /* struct_list: struct_elem ";" */ +#line 503 "src/parser.y" + { (yyval.node) = (yyvsp[-1].node); } +#line 3701 "src/gen_parser.c" break; - case 167: /* union: "union" id "{" union_list "}" */ -#line 508 "src/parser.y" - { - (yyval.node) = gen_type(AST_TYPE_UNION, (yyvsp[-3].node), (yyvsp[-1].node), NULL); + case 166: /* union: "union" id "{" struct_list "}" */ +#line 506 "src/parser.y" + { + (yyval.node) = gen_union((yyvsp[-3].node), NULL, (yyvsp[-1].node)); } -#line 3735 "src/gen_parser.c" - break; - - case 168: /* union: "union" "{" union_list "}" */ -#line 511 "src/parser.y" - { - (yyval.node) = gen_type(AST_TYPE_UNION, NULL, (yyvsp[-1].node), NULL); } -#line 3742 "src/gen_parser.c" +#line 3709 "src/gen_parser.c" break; - case 169: /* struct_list: union_list */ -#line 516 "src/parser.y" - { (yyval.node) = (yyvsp[0].node); } -#line 3748 "src/gen_parser.c" + case 167: /* union: "union" id "(" generic_list ")" "{" struct_list "}" */ +#line 509 "src/parser.y" + { + (yyval.node) = gen_union((yyvsp[-6].node), (yyvsp[-4].node), (yyvsp[-1].node)); + } +#line 3717 "src/gen_parser.c" break; - case 170: /* generic: id type */ -#line 519 "src/parser.y" + case 168: /* generic: id type */ +#line 514 "src/parser.y" { (yyval.node) = gen_alias((yyvsp[-1].node), (yyvsp[0].node)); } -#line 3754 "src/gen_parser.c" +#line 3723 "src/gen_parser.c" break; - case 171: /* generic_list: generic "," generic_list */ -#line 520 "src/parser.y" + case 169: /* generic_list: generic "," generic_list */ +#line 515 "src/parser.y" { (yyval.node) = (yyvsp[-2].node); (yyval.node)->next = (yyvsp[0].node); } -#line 3760 "src/gen_parser.c" +#line 3729 "src/gen_parser.c" break; - case 172: /* generic_list: generic */ -#line 521 "src/parser.y" + case 170: /* generic_list: generic */ +#line 516 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 3766 "src/gen_parser.c" +#line 3735 "src/gen_parser.c" break; - case 173: /* struct: "struct" id "{" struct_list "}" */ -#line 524 "src/parser.y" + case 171: /* struct: "struct" id "{" struct_list "}" */ +#line 519 "src/parser.y" { (yyval.node) = gen_struct((yyvsp[-3].node), NULL, (yyvsp[-1].node)); } -#line 3774 "src/gen_parser.c" +#line 3743 "src/gen_parser.c" break; - case 174: /* struct: "struct" id "(" generic_list ")" "{" struct_list "}" */ -#line 527 "src/parser.y" + case 172: /* struct: "struct" id "(" generic_list ")" "{" struct_list "}" */ +#line 522 "src/parser.y" { (yyval.node) = gen_struct((yyvsp[-6].node), (yyvsp[-4].node), (yyvsp[-1].node)); } -#line 3782 "src/gen_parser.c" +#line 3751 "src/gen_parser.c" break; - case 175: /* template_elem: id ";" */ -#line 534 "src/parser.y" + case 173: /* template_elem: id ";" */ +#line 529 "src/parser.y" { (yyval.node) = (yyvsp[-1].node); } -#line 3788 "src/gen_parser.c" +#line 3757 "src/gen_parser.c" break; - case 176: /* template_elem: id func_sign ";" */ -#line 535 "src/parser.y" + case 174: /* template_elem: id func_sign ";" */ +#line 530 "src/parser.y" { (yyval.node) = gen_proc((yyvsp[-2].node), (yyvsp[-1].node), NULL); } -#line 3794 "src/gen_parser.c" +#line 3763 "src/gen_parser.c" break; - case 177: /* template_elem: var_decl ";" */ -#line 536 "src/parser.y" + case 175: /* template_elem: var_decl ";" */ +#line 531 "src/parser.y" { (yyval.node) = (yyvsp[-1].node); } -#line 3800 "src/gen_parser.c" +#line 3769 "src/gen_parser.c" break; - case 178: /* template_elem: union */ -#line 537 "src/parser.y" + case 176: /* template_elem: union */ +#line 532 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 3806 "src/gen_parser.c" +#line 3775 "src/gen_parser.c" break; - case 179: /* template_list: template_elem template_list */ -#line 540 "src/parser.y" + case 177: /* template_list: template_elem template_list */ +#line 535 "src/parser.y" { (yyval.node) = (yyvsp[-1].node); (yyvsp[-1].node)->next = (yyvsp[0].node); } -#line 3812 "src/gen_parser.c" +#line 3781 "src/gen_parser.c" break; - case 180: /* template_list: template_elem */ -#line 541 "src/parser.y" + case 178: /* template_list: template_elem */ +#line 536 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 3818 "src/gen_parser.c" +#line 3787 "src/gen_parser.c" break; - case 181: /* type_list: type "," type_list */ -#line 544 "src/parser.y" + case 179: /* type_list: type "," type_list */ +#line 539 "src/parser.y" { (yyval.node) = (yyvsp[-2].node); (yyvsp[-2].node)->next = (yyvsp[0].node); } -#line 3824 "src/gen_parser.c" +#line 3793 "src/gen_parser.c" break; - case 182: /* type_list: type */ -#line 545 "src/parser.y" + case 180: /* type_list: type */ +#line 540 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 3830 "src/gen_parser.c" +#line 3799 "src/gen_parser.c" break; - case 183: /* type_alias: "type" id type */ -#line 548 "src/parser.y" + case 181: /* type_alias: "type" id type */ +#line 543 "src/parser.y" { (yyval.node) = gen_alias((yyvsp[-1].node), (yyvsp[0].node)); } -#line 3836 "src/gen_parser.c" +#line 3805 "src/gen_parser.c" break; - case 184: /* type_template: "type" id "{" template_list "}" */ -#line 553 "src/parser.y" + case 182: /* type_template: "type" id "{" template_list "}" */ +#line 548 "src/parser.y" { (yyval.node) = gen_template((yyvsp[-3].node), (yyvsp[-1].node)); } -#line 3844 "src/gen_parser.c" +#line 3813 "src/gen_parser.c" break; - case 185: /* type_template: "type" id "{" "}" */ -#line 556 "src/parser.y" + case 183: /* type_template: "type" id "{" "}" */ +#line 551 "src/parser.y" { /* should match anything, but doesn't implement anything */ (yyval.node) = gen_template((yyvsp[-2].node), NULL); } -#line 3853 "src/gen_parser.c" +#line 3822 "src/gen_parser.c" break; - case 186: /* enum_val: id */ -#line 562 "src/parser.y" + case 184: /* enum_val: id */ +#line 557 "src/parser.y" { (yyval.node) = gen_val((yyvsp[0].node), gen_int(0)); } -#line 3859 "src/gen_parser.c" +#line 3828 "src/gen_parser.c" break; - case 187: /* enum_val: id "=" expr */ -#line 563 "src/parser.y" + case 185: /* enum_val: id "=" expr */ +#line 558 "src/parser.y" { (yyval.node) = gen_val((yyvsp[-2].node), (yyvsp[0].node)); } -#line 3865 "src/gen_parser.c" +#line 3834 "src/gen_parser.c" break; - case 188: /* enum_list: enum_val "," enum_list */ -#line 566 "src/parser.y" + case 186: /* enum_list: enum_val "," enum_list */ +#line 561 "src/parser.y" { (yyval.node) = (yyvsp[-2].node); (yyvsp[-2].node)->next = (yyvsp[0].node); } -#line 3871 "src/gen_parser.c" +#line 3840 "src/gen_parser.c" break; - case 189: /* enum_list: enum_val "," */ -#line 567 "src/parser.y" + case 187: /* enum_list: enum_val "," */ +#line 562 "src/parser.y" { (yyval.node) = (yyvsp[-1].node); } -#line 3877 "src/gen_parser.c" +#line 3846 "src/gen_parser.c" break; - case 190: /* enum_list: enum_val */ -#line 568 "src/parser.y" + case 188: /* enum_list: enum_val */ +#line 563 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 3883 "src/gen_parser.c" +#line 3852 "src/gen_parser.c" break; - case 191: /* enum: "enum" id ":" type "{" enum_list "}" */ -#line 571 "src/parser.y" + case 189: /* enum: "enum" id ":" type "{" enum_list "}" */ +#line 566 "src/parser.y" { (yyval.node) = gen_enum((yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[-1].node)); } -#line 3889 "src/gen_parser.c" +#line 3858 "src/gen_parser.c" break; - case 192: /* enum: "enum" id "{" enum_list "}" */ -#line 572 "src/parser.y" + case 190: /* enum: "enum" id "{" enum_list "}" */ +#line 567 "src/parser.y" { (yyval.node) = gen_enum((yyvsp[-3].node), NULL, (yyvsp[-1].node)); ast_set_flags((yyval.node), AST_FLAG_UNTYPED); } -#line 3898 "src/gen_parser.c" +#line 3867 "src/gen_parser.c" break; - case 193: /* top_if: "if" expr "{" unit "}" */ -#line 578 "src/parser.y" + case 191: /* top_if: "if" expr "{" unit "}" */ +#line 573 "src/parser.y" { (yyval.node) = gen_if((yyvsp[-3].node), (yyvsp[-1].node), NULL); ast_set_flags((yyval.node), AST_FLAG_UNHYGIENIC); } -#line 3907 "src/gen_parser.c" +#line 3876 "src/gen_parser.c" break; - case 194: /* top_if: "if" expr "{" unit "}" "else" "{" unit "}" */ -#line 582 "src/parser.y" + case 192: /* top_if: "if" expr "{" unit "}" "else" "{" unit "}" */ +#line 577 "src/parser.y" { (yyval.node) = gen_if((yyvsp[-7].node), (yyvsp[-5].node), (yyvsp[-1].node)); ast_set_flags((yyval.node), AST_FLAG_UNHYGIENIC); } -#line 3916 "src/gen_parser.c" +#line 3885 "src/gen_parser.c" break; - case 195: /* top_if: "if" expr "{" unit "}" "else" top_if */ -#line 586 "src/parser.y" + case 193: /* top_if: "if" expr "{" unit "}" "else" top_if */ +#line 581 "src/parser.y" { (yyval.node) = gen_if((yyvsp[-5].node), (yyvsp[-3].node), (yyvsp[0].node)); ast_set_flags((yyval.node), AST_FLAG_UNHYGIENIC); } -#line 3925 "src/gen_parser.c" +#line 3894 "src/gen_parser.c" break; - case 196: /* top: ";" */ -#line 594 "src/parser.y" + case 194: /* top: ";" */ +#line 589 "src/parser.y" { (yyval.node) = gen_empty(); } -#line 3931 "src/gen_parser.c" +#line 3900 "src/gen_parser.c" break; - case 197: /* top: enum */ -#line 595 "src/parser.y" + case 195: /* top: enum */ +#line 590 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 3937 "src/gen_parser.c" +#line 3906 "src/gen_parser.c" break; - case 198: /* top: proc */ -#line 596 "src/parser.y" + case 196: /* top: proc */ +#line 591 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 3943 "src/gen_parser.c" +#line 3912 "src/gen_parser.c" break; - case 199: /* top: struct */ -#line 597 "src/parser.y" + case 197: /* top: struct */ +#line 592 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 3949 "src/gen_parser.c" +#line 3918 "src/gen_parser.c" break; - case 200: /* top: macro */ -#line 598 "src/parser.y" + case 198: /* top: macro */ +#line 593 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 3955 "src/gen_parser.c" +#line 3924 "src/gen_parser.c" break; - case 201: /* top: "const" top_if */ -#line 599 "src/parser.y" + case 199: /* top: "const" top_if */ +#line 594 "src/parser.y" { (yyval.node) = (yyvsp[0].node); ast_set_flags((yyval.node), AST_FLAG_CONST); } -#line 3961 "src/gen_parser.c" +#line 3930 "src/gen_parser.c" break; - case 202: /* top: import ";" */ -#line 600 "src/parser.y" + case 200: /* top: import ";" */ +#line 595 "src/parser.y" { (yyval.node) = (yyvsp[-1].node); } -#line 3967 "src/gen_parser.c" +#line 3936 "src/gen_parser.c" break; - case 203: /* top: type_alias ";" */ -#line 601 "src/parser.y" + case 201: /* top: type_alias ";" */ +#line 596 "src/parser.y" { (yyval.node) = (yyvsp[-1].node); } -#line 3973 "src/gen_parser.c" +#line 3942 "src/gen_parser.c" break; - case 204: /* top: type_template */ -#line 602 "src/parser.y" + case 202: /* top: type_template */ +#line 597 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 3979 "src/gen_parser.c" +#line 3948 "src/gen_parser.c" break; - case 205: /* top: "pub" enum */ -#line 603 "src/parser.y" + case 203: /* top: "pub" enum */ +#line 598 "src/parser.y" { (yyval.node) = (yyvsp[0].node); ast_set_flags((yyvsp[0].node), AST_FLAG_PUBLIC); } -#line 3985 "src/gen_parser.c" +#line 3954 "src/gen_parser.c" break; - case 206: /* top: "pub" struct */ -#line 604 "src/parser.y" + case 204: /* top: "pub" struct */ +#line 599 "src/parser.y" { (yyval.node) = (yyvsp[0].node); ast_set_flags((yyvsp[0].node), AST_FLAG_PUBLIC); } -#line 3991 "src/gen_parser.c" +#line 3960 "src/gen_parser.c" break; - case 207: /* top: "pub" proc */ -#line 605 "src/parser.y" + case 205: /* top: "pub" proc */ +#line 600 "src/parser.y" { (yyval.node) = (yyvsp[0].node); ast_set_flags((yyvsp[0].node), AST_FLAG_PUBLIC); } -#line 3997 "src/gen_parser.c" +#line 3966 "src/gen_parser.c" break; - case 208: /* top: "pub" macro */ -#line 606 "src/parser.y" + case 206: /* top: "pub" macro */ +#line 601 "src/parser.y" { (yyval.node) = (yyvsp[0].node); ast_set_flags((yyvsp[0].node), AST_FLAG_PUBLIC); } -#line 4003 "src/gen_parser.c" +#line 3972 "src/gen_parser.c" break; - case 209: /* top: "pub" import ";" */ -#line 607 "src/parser.y" + case 207: /* top: "pub" import ";" */ +#line 602 "src/parser.y" { (yyval.node) = (yyvsp[-1].node); ast_set_flags((yyvsp[-1].node), AST_FLAG_PUBLIC); } -#line 4009 "src/gen_parser.c" +#line 3978 "src/gen_parser.c" break; - case 210: /* top: "pub" type_alias ";" */ -#line 608 "src/parser.y" + case 208: /* top: "pub" type_alias ";" */ +#line 603 "src/parser.y" { (yyval.node) = (yyvsp[-1].node); ast_set_flags((yyvsp[-1].node), AST_FLAG_PUBLIC); } -#line 4015 "src/gen_parser.c" +#line 3984 "src/gen_parser.c" break; - case 211: /* top: "pub" type_template */ -#line 609 "src/parser.y" + case 209: /* top: "pub" type_template */ +#line 604 "src/parser.y" { (yyval.node) = (yyvsp[0].node); ast_set_flags((yyvsp[0].node), AST_FLAG_PUBLIC); } -#line 4021 "src/gen_parser.c" +#line 3990 "src/gen_parser.c" break; - case 212: /* top: var ";" */ -#line 610 "src/parser.y" + case 210: /* top: var ";" */ +#line 605 "src/parser.y" { (yyval.node) = (yyvsp[-1].node); } -#line 4027 "src/gen_parser.c" +#line 3996 "src/gen_parser.c" break; - case 213: /* top: "pub" var ";" */ -#line 611 "src/parser.y" + case 211: /* top: "pub" var ";" */ +#line 606 "src/parser.y" { (yyval.node) = (yyvsp[-1].node); ast_set_flags((yyvsp[-1].node), AST_FLAG_PUBLIC); } -#line 4033 "src/gen_parser.c" +#line 4002 "src/gen_parser.c" break; - case 214: /* top: error */ -#line 612 "src/parser.y" + case 212: /* top: error */ +#line 607 "src/parser.y" { (yyval.node) = gen_empty(); parser->failed = true; @@ -4047,29 +4016,29 @@ yyreduce: yyclearin; yyerrok; } -#line 4051 "src/gen_parser.c" +#line 4020 "src/gen_parser.c" break; - case 215: /* unit: top */ -#line 627 "src/parser.y" + case 213: /* unit: top */ +#line 622 "src/parser.y" { (yyval.node) = (yyvsp[0].node); } -#line 4057 "src/gen_parser.c" +#line 4026 "src/gen_parser.c" break; - case 216: /* unit: top unit */ -#line 628 "src/parser.y" + case 214: /* unit: top unit */ +#line 623 "src/parser.y" { (yyval.node) = (yyvsp[-1].node); (yyvsp[-1].node)->next = (yyvsp[0].node); } -#line 4063 "src/gen_parser.c" +#line 4032 "src/gen_parser.c" break; - case 217: /* input: unit */ -#line 631 "src/parser.y" + case 215: /* input: unit */ +#line 626 "src/parser.y" { parser->tree = (yyvsp[0].node); } -#line 4069 "src/gen_parser.c" +#line 4038 "src/gen_parser.c" break; -#line 4073 "src/gen_parser.c" +#line 4042 "src/gen_parser.c" default: break; } @@ -4298,5 +4267,5 @@ yyreturnlab: return yyresult; } -#line 634 "src/parser.y" +#line 629 "src/parser.y" diff --git a/src/parser.y b/src/parser.y index cddfb2a..0132283 100644 --- a/src/parser.y +++ b/src/parser.y @@ -135,10 +135,10 @@ %nterm func_sign variadic_sign type var_decl var %nterm var_init proc lambda template_elem template_list type_list %nterm type_alias type_template enum_val enum_list enum top unit id -%nterm embed param_decl union union_list union_elem struct struct_list +%nterm embed param_decl union struct struct_list struct_elem %nterm top_if const_if const_for defer goto assign %nterm struct_construct struct_inits struct_init cond -%nterm generic generic_list +%nterm generic generic_list union_struct %destructor {} FLOAT INT STRING ID %destructor { destroy_ast_tree($$); } <*> @@ -493,27 +493,22 @@ proc: id variadic_sign body { } ; -lambda: "[" macro_list "]" func_sign body { $$ = gen_lambda($2, $4, $5); - } +lambda: "[" macro_list "]" func_sign body { $$ = gen_lambda($2, $4, $5); } ; -union_elem: union { $$ = $1; } - | var_decl { $$ = $1; } +struct_elem: var_decl { $$ = $1; } ; -union_list: union_elem ";" union_list { $$ = $1; $1->next = $3; } - | union_elem ";" { $$ = $1; } +struct_list: struct_elem ";" struct_list { $$ = $1; $1->next = $3; } + | struct_elem ";" { $$ = $1; } ; -union: "union" id "{" union_list "}" { - $$ = gen_type(AST_TYPE_UNION, $2, $4, NULL); +union: "union" id "{" struct_list "}" { + $$ = gen_union($2, NULL, $4); + } + | "union" id "(" generic_list ")" "{" struct_list "}" { + $$ = gen_union($2, $4, $7); } - | "union" "{" union_list "}" { - $$ = gen_type(AST_TYPE_UNION, NULL, $3, NULL); } - ; - -/* alias I guess, might try and name things better */ -struct_list: union_list { $$ = $1; } ; generic: id type { $$ = gen_alias($1, $2); } -- cgit v1.3