From dcaf701ef66dd0a9c27df49959e4eae9c45c73c4 Mon Sep 17 00:00:00 2001 From: Emanuele Torre Date: Fri, 4 Aug 2023 01:21:25 +0200 Subject: [PATCH] Simplify String rule in parser (#2805) Use a StringStart component that is either FORMAT QQSTRING_START or QQSTRING_START instead of having two similar rules for String. This is simpler and avoids having to use an untyped mid-rule action component to copy FORMAT at the top of the stack before QQString, and having to use jv_free($3) instead of jv_free($1) just to make bison not complain about the "unused" mid-rule component. --- src/parser.c | 1359 +++++++++++++++++++++++++------------------------- src/parser.y | 22 +- 2 files changed, 687 insertions(+), 694 deletions(-) diff --git a/src/parser.c b/src/parser.c index a1987d34a6..429a430471 100644 --- a/src/parser.c +++ b/src/parser.c @@ -366,24 +366,23 @@ enum yysymbol_kind_t YYSYMBOL_FuncDef = 79, /* FuncDef */ YYSYMBOL_Params = 80, /* Params */ YYSYMBOL_Param = 81, /* Param */ - YYSYMBOL_NoFormat = 82, /* NoFormat */ + YYSYMBOL_StringStart = 82, /* StringStart */ YYSYMBOL_String = 83, /* String */ - YYSYMBOL_84_1 = 84, /* @1 */ - YYSYMBOL_QQString = 85, /* QQString */ - YYSYMBOL_ElseBody = 86, /* ElseBody */ - YYSYMBOL_ExpD = 87, /* ExpD */ - YYSYMBOL_Term = 88, /* Term */ - YYSYMBOL_Args = 89, /* Args */ - YYSYMBOL_Arg = 90, /* Arg */ - YYSYMBOL_RepPatterns = 91, /* RepPatterns */ - YYSYMBOL_Patterns = 92, /* Patterns */ - YYSYMBOL_Pattern = 93, /* Pattern */ - YYSYMBOL_ArrayPats = 94, /* ArrayPats */ - YYSYMBOL_ObjPats = 95, /* ObjPats */ - YYSYMBOL_ObjPat = 96, /* ObjPat */ - YYSYMBOL_Keyword = 97, /* Keyword */ - YYSYMBOL_MkDict = 98, /* MkDict */ - YYSYMBOL_MkDictPair = 99 /* MkDictPair */ + YYSYMBOL_QQString = 84, /* QQString */ + YYSYMBOL_ElseBody = 85, /* ElseBody */ + YYSYMBOL_ExpD = 86, /* ExpD */ + YYSYMBOL_Term = 87, /* Term */ + YYSYMBOL_Args = 88, /* Args */ + YYSYMBOL_Arg = 89, /* Arg */ + YYSYMBOL_RepPatterns = 90, /* RepPatterns */ + YYSYMBOL_Patterns = 91, /* Patterns */ + YYSYMBOL_Pattern = 92, /* Pattern */ + YYSYMBOL_ArrayPats = 93, /* ArrayPats */ + YYSYMBOL_ObjPats = 94, /* ObjPats */ + YYSYMBOL_ObjPat = 95, /* ObjPat */ + YYSYMBOL_Keyword = 96, /* Keyword */ + YYSYMBOL_MkDict = 97, /* MkDict */ + YYSYMBOL_MkDictPair = 98 /* MkDictPair */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -583,7 +582,7 @@ static block gen_loc_object(location *loc, struct locfile *locations) { } -#line 587 "src/parser.c" +#line 586 "src/parser.c" #ifdef short @@ -908,18 +907,18 @@ union yyalloc #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 29 +#define YYFINAL 30 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 2039 +#define YYLAST 2051 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 70 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 30 +#define YYNNTS 29 /* YYNRULES -- Number of rules. */ -#define YYNRULES 170 +#define YYNRULES 169 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 318 +#define YYNSTATES 315 /* YYMAXUTOK -- Last valid token kind. */ #define YYMAXUTOK 303 @@ -979,18 +978,17 @@ static const yytype_int16 yyrline[] = 445, 449, 453, 457, 461, 465, 469, 473, 477, 481, 485, 489, 493, 497, 501, 505, 509, 513, 518, 521, 538, 547, 554, 562, 573, 578, 584, 587, 592, 596, - 603, 608, 612, 612, 619, 622, 625, 631, 634, 637, - 642, 645, 648, 654, 657, 660, 668, 672, 675, 678, - 681, 684, 687, 690, 693, 696, 700, 706, 709, 712, - 715, 718, 721, 724, 727, 730, 733, 736, 739, 742, - 745, 748, 751, 754, 757, 760, 763, 766, 788, 792, - 796, 799, 811, 816, 817, 818, 819, 822, 825, 830, - 835, 838, 843, 846, 851, 855, 858, 863, 866, 871, - 874, 879, 882, 885, 888, 891, 894, 902, 908, 911, - 914, 917, 920, 923, 926, 929, 932, 935, 938, 941, - 944, 947, 950, 953, 956, 959, 964, 967, 968, 969, - 972, 975, 978, 981, 985, 990, 994, 998, 1002, 1006, - 1014 + 603, 606, 612, 619, 622, 625, 631, 634, 637, 642, + 645, 648, 654, 657, 660, 668, 672, 675, 678, 681, + 684, 687, 690, 693, 696, 700, 706, 709, 712, 715, + 718, 721, 724, 727, 730, 733, 736, 739, 742, 745, + 748, 751, 754, 757, 760, 763, 766, 788, 792, 796, + 799, 811, 816, 817, 818, 819, 822, 825, 830, 835, + 838, 843, 846, 851, 855, 858, 863, 866, 871, 874, + 879, 882, 885, 888, 891, 894, 902, 908, 911, 914, + 917, 920, 923, 926, 929, 932, 935, 938, 941, 944, + 947, 950, 953, 956, 959, 964, 967, 968, 969, 972, + 975, 978, 981, 985, 990, 994, 998, 1002, 1006, 1014 }; #endif @@ -1019,7 +1017,7 @@ static const char *const yytname[] = "'%'", "NONOPT", "'?'", "';'", "'('", "')'", "':'", "'.'", "'['", "']'", "'{'", "'}'", "'$'", "$accept", "TopLevel", "Module", "Imports", "FuncDefs", "Exp", "Import", "ImportWhat", "ImportFrom", "FuncDef", - "Params", "Param", "NoFormat", "String", "@1", "QQString", "ElseBody", + "Params", "Param", "StringStart", "String", "QQString", "ElseBody", "ExpD", "Term", "Args", "Arg", "RepPatterns", "Patterns", "Pattern", "ArrayPats", "ObjPats", "ObjPat", "Keyword", "MkDict", "MkDictPair", YY_NULLPTR }; @@ -1031,12 +1029,12 @@ yysymbol_name (yysymbol_kind_t yysymbol) } #endif -#define YYPACT_NINF (-159) +#define YYPACT_NINF (-157) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF (-157) +#define YYTABLE_NINF (-156) #define yytable_value_is_error(Yyn) \ ((Yyn) == YYTABLE_NINF) @@ -1045,38 +1043,38 @@ yysymbol_name (yysymbol_kind_t yysymbol) STATE-NUM. */ static const yytype_int16 yypact[] = { - -13, 868, 7, 41, -44, -30, -159, -159, -2, -159, - 65, 868, 449, 449, 868, 66, 36, -159, -159, 868, - 418, 285, 351, 582, 4, 1356, 868, -159, 10, -159, - -4, -4, 868, 41, 670, 868, -159, -159, -18, 1712, - 47, 51, 54, 32, -159, -159, -159, -6, 46, 1186, - -159, 112, -2, 58, 52, -159, 997, -24, 64, 68, - -159, -159, -159, -159, -159, -159, -159, -159, -159, -159, - -159, -159, -159, -159, -159, -159, -159, -159, -159, 868, - 69, 72, 60, 92, 75, 868, 868, 868, 868, 868, - 868, 868, 868, 868, 868, 868, 868, 868, 868, 868, - 868, 868, 868, 868, 868, 868, 868, 868, 868, -159, - -159, 1880, 86, -5, 6, 166, 132, -159, -159, -159, - 1880, 868, -159, -159, 1407, 1880, 63, -159, -159, 73, - 868, 469, -5, -5, 520, 868, 11, -159, -159, -159, - -159, -159, -159, 638, 207, -159, 207, 207, 1220, 207, - 207, -159, 638, 146, 1948, 581, 581, 1914, 784, 1980, - 1948, 1948, 1948, 1948, 1948, 1948, 581, 581, 1880, 1914, - 1948, 581, 581, -6, -6, 95, 95, 95, -159, -159, - -5, 930, 114, 110, 118, 736, 101, 96, 868, 102, - 963, 120, -159, -159, 868, -159, 24, -159, -159, 76, - -159, 1458, -159, 1662, 103, 104, -159, -159, 1880, -159, - 868, -159, -47, -159, 207, 115, 17, 115, 115, 105, - 115, 115, -159, -159, -159, -19, 106, 113, 116, 868, - 117, -22, -159, 119, -5, 868, 107, 1031, -159, -159, - 1065, -159, 802, 124, -159, -159, -159, -159, 73, 125, - -159, 868, 868, -159, -159, 868, 868, 1746, -159, 207, - 207, -5, -159, -5, -5, -5, 1254, -5, 930, -159, - -5, 136, 1880, -159, 133, 140, 141, 1099, -159, -159, - 868, 1796, 1846, 1509, 1560, -159, 115, 115, -159, -159, - -159, -159, 138, -159, -159, -159, -159, -159, -159, 143, - 1611, -159, 868, 868, 868, -5, -159, -159, 1662, 1288, - 1133, -159, -159, -159, 868, -159, 1322, -159 + -14, 881, 15, 62, -33, -23, -157, -157, -9, -157, + 37, 881, 912, 912, 881, 40, 2, -157, -157, 881, + 193, 282, 415, 595, -18, 1400, 881, -157, -157, 12, + -157, 1, 1, 881, 62, 683, 881, -157, -157, -11, + 1756, 17, 49, 26, 10, -157, -157, 14, 21, 1230, + -157, 74, -9, 53, 51, -157, 1041, -26, 63, 64, + -157, -157, -157, -157, -157, -157, -157, -157, -157, -157, + -157, -157, -157, -157, -157, -157, -157, -157, -157, 881, + 65, 69, 70, 82, 67, 881, 881, 881, 881, 881, + 881, 881, 881, 881, 881, 881, 881, 881, 881, 881, + 881, 881, 881, 881, 881, 881, 881, 881, 881, -157, + -157, 1924, 13, 87, -5, -4, 348, 127, -157, -157, + -157, 1924, 881, -157, -157, 1451, 1924, 56, -157, 68, + 881, 482, -5, -5, 533, 881, -157, -157, -157, -157, + -157, -157, 651, 513, -157, 513, 513, 1264, 513, 513, + -157, 651, 144, 1992, 113, 113, 1958, 594, 913, 1992, + 1992, 1992, 1992, 1992, 1992, 113, 113, 1924, 1958, 1992, + 113, 113, 14, 14, 98, 98, 98, -157, 881, -157, + -157, -157, -5, 974, 117, 111, 119, 749, 102, 96, + 881, 104, 1007, 116, -157, -157, 881, -157, -157, -157, + 61, -157, 1502, -157, 1706, 110, 112, -157, -157, 1924, + -10, -157, 513, 126, 0, 126, 126, 115, 126, 126, + -157, -157, 1790, -157, -37, 118, 120, 121, 881, 122, + -38, -157, 124, -5, 881, 123, 1075, -157, -157, 1109, + -157, 815, 131, -157, -157, -157, 68, 128, -157, 881, + 881, -157, -157, 881, 881, -157, 513, 513, -157, -5, + -157, -5, -5, -5, 1298, -5, 974, -157, -5, 134, + 1924, -157, 133, 137, 145, 1143, -157, -157, 881, 1840, + 1890, 1553, 1604, 126, 126, -157, -157, -157, -157, 130, + -157, -157, -157, -157, -157, -157, 146, 1655, -157, 881, + 881, 881, -5, -157, -157, 1706, 1332, 1177, -157, -157, + -157, 881, -157, 1366, -157 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1084,54 +1082,54 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 4, 0, 0, 6, 111, 82, 109, 101, 103, 74, - 0, 0, 0, 0, 0, 0, 0, 110, 60, 0, - 0, 0, 0, 0, 0, 0, 0, 102, 47, 1, - 0, 0, 8, 6, 0, 0, 78, 62, 0, 0, - 0, 0, 18, 0, 76, 75, 64, 32, 0, 0, - 85, 0, 0, 84, 0, 106, 0, 0, 166, 165, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 167, 0, - 163, 168, 0, 157, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 6, 110, 81, 108, 100, 102, 73, + 0, 0, 0, 0, 0, 0, 0, 109, 61, 0, + 0, 0, 0, 0, 0, 0, 0, 63, 101, 47, + 1, 0, 0, 8, 6, 0, 0, 77, 60, 0, + 0, 0, 0, 18, 0, 75, 74, 32, 0, 0, + 84, 0, 0, 83, 0, 105, 0, 0, 165, 164, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 166, 0, + 162, 167, 0, 156, 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, 21, - 5, 10, 81, 0, 0, 0, 0, 53, 52, 3, - 2, 8, 7, 48, 0, 119, 0, 117, 64, 0, - 0, 0, 0, 0, 0, 0, 0, 113, 104, 86, - 80, 114, 105, 0, 0, 116, 0, 0, 0, 0, - 0, 107, 0, 0, 40, 41, 42, 25, 24, 23, - 27, 31, 34, 36, 39, 26, 45, 46, 28, 29, - 22, 43, 44, 30, 33, 35, 37, 38, 77, 124, - 0, 0, 0, 0, 123, 0, 83, 0, 0, 92, - 0, 0, 9, 49, 0, 112, 0, 59, 58, 0, - 56, 0, 16, 0, 0, 0, 19, 17, 20, 65, - 0, 61, 0, 159, 0, 170, 72, 160, 164, 0, - 162, 161, 158, 108, 127, 0, 0, 0, 131, 0, - 0, 0, 129, 0, 0, 0, 94, 0, 79, 115, - 0, 91, 0, 88, 51, 50, 118, 63, 0, 0, - 54, 0, 0, 69, 15, 0, 0, 0, 71, 0, - 0, 0, 125, 0, 0, 0, 0, 0, 0, 126, - 0, 122, 11, 93, 90, 100, 99, 0, 87, 57, - 0, 0, 0, 0, 0, 66, 70, 169, 128, 137, - 133, 132, 0, 135, 130, 134, 89, 97, 96, 98, - 0, 68, 0, 0, 0, 0, 95, 55, 0, 0, - 0, 136, 67, 12, 0, 14, 0, 13 + 5, 10, 0, 80, 0, 0, 0, 0, 53, 52, + 3, 2, 8, 7, 48, 0, 118, 0, 116, 0, + 0, 0, 0, 0, 0, 0, 112, 103, 85, 79, + 113, 104, 0, 0, 115, 0, 0, 0, 0, 0, + 106, 0, 0, 40, 41, 42, 25, 24, 23, 27, + 31, 34, 36, 39, 26, 45, 46, 28, 29, 22, + 43, 44, 30, 33, 35, 37, 38, 64, 0, 62, + 76, 123, 0, 0, 0, 0, 122, 0, 82, 0, + 0, 91, 0, 0, 9, 49, 0, 111, 59, 58, + 0, 56, 0, 16, 0, 0, 0, 19, 17, 20, + 0, 158, 0, 169, 71, 159, 163, 0, 161, 160, + 157, 107, 0, 126, 0, 0, 0, 130, 0, 0, + 0, 128, 0, 0, 0, 93, 0, 78, 114, 0, + 90, 0, 87, 51, 50, 117, 0, 0, 54, 0, + 0, 68, 15, 0, 0, 70, 0, 0, 65, 0, + 124, 0, 0, 0, 0, 0, 0, 125, 0, 121, + 11, 92, 89, 99, 98, 0, 86, 57, 0, 0, + 0, 0, 0, 69, 168, 127, 136, 132, 131, 0, + 134, 129, 133, 88, 96, 95, 97, 0, 67, 0, + 0, 0, 0, 94, 55, 0, 0, 0, 135, 66, + 12, 0, 14, 0, 13 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -159, -159, -159, 145, 74, -1, -159, -159, 172, -12, - -159, -43, -159, 5, -159, 78, -104, -138, -7, -159, - 16, -159, -69, -114, -159, -159, -51, -158, -111, -159 + -157, -157, -157, 169, 57, -1, -157, -157, 148, -13, + -157, -39, -157, -7, -157, -96, -101, -6, -157, 18, + -157, -66, -114, -157, -157, -56, -156, -102, -157 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_uint8 yydefgoto[] = { - 0, 2, 3, 32, 119, 111, 33, 34, 116, 26, - 199, 200, 46, 27, 128, 136, 254, 215, 28, 126, - 127, 182, 183, 184, 225, 231, 232, 81, 82, 83 + 0, 2, 3, 33, 120, 111, 34, 35, 117, 26, + 200, 201, 27, 28, 112, 252, 213, 29, 127, 128, + 184, 185, 186, 224, 230, 231, 81, 82, 83 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1139,321 +1137,324 @@ static const yytype_uint8 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 25, 179, 143, 1, 52, 40, 41, 29, 217, 218, - 39, 220, 221, 42, 52, 112, 144, 35, 47, 49, - 121, 56, 112, 233, 113, 143, 53, 268, 80, 36, - 261, 120, 213, 124, 125, 117, 117, 44, 18, 144, - 37, 222, 45, 129, 145, 130, 269, 262, 18, 106, - 107, 108, 112, 109, 209, 210, 112, 211, 30, 31, - 180, 132, 181, 204, 205, 133, 224, 209, 210, 38, - 247, 185, 43, 84, 114, 115, 258, 197, 148, 198, - 135, 114, 115, 134, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 137, 121, - 233, 114, 115, 139, 190, 114, 115, 140, 141, 186, - 271, 286, 287, 194, 244, 195, 245, 146, 151, 201, - 203, 147, 149, 207, 208, 150, 248, 216, 249, 216, - 216, 152, 216, 216, 153, 178, 191, 288, 80, 289, - 290, 291, 223, 293, 109, 234, 295, 80, 235, -121, - 238, 241, 239, 259, 255, 256, 273, 187, 260, 263, - 4, 5, 6, 7, 8, 9, 264, -120, 122, 265, - 267, 10, 270, 278, 237, 11, 230, 240, 280, 12, - 13, 311, 296, 125, 14, 192, 15, 16, 17, 297, - 298, 305, 306, 118, 312, 279, 196, 216, 18, 257, - 246, 4, 5, 6, 7, 8, 9, 294, 0, 0, - 19, 0, 0, 0, 0, 0, 0, 20, 266, 188, - 21, 22, 189, 23, 272, 24, 0, 0, 16, 17, - 0, 277, 0, 0, 0, 0, 0, 0, 0, 18, - 281, 282, 216, 216, 283, 284, 0, 0, 0, 0, - 0, 214, 0, 0, 0, 0, 0, 0, 20, 0, - 0, 21, 22, 230, 23, 0, 24, 0, 0, 300, - 0, 0, 0, 0, 0, -73, 50, 0, 0, 51, - -73, 0, 0, 52, 0, -73, -73, -73, -73, -73, - 0, 308, 309, 310, 0, -73, -73, -73, 0, 0, - -73, -73, -73, 316, -73, 0, 0, 0, -73, -73, - -73, -73, -73, -73, -73, -73, 0, 18, 0, 0, - -73, 0, 0, -73, -73, -73, -73, -73, -73, -73, - -73, -73, -73, 0, -73, -73, 0, -73, -73, -73, - -73, -73, 54, -73, 0, 4, 5, 6, 7, 8, - 9, 0, 0, 0, 0, 0, 10, 0, 0, 0, - 11, 0, 0, 0, 12, 13, 0, 0, 0, 14, - 0, 15, 16, 17, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, - 0, 0, 20, 0, 0, 21, 22, 55, 23, 48, - 24, 0, 4, 5, 6, 7, 8, 9, 0, 0, - 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, - 0, 12, 13, 0, 0, 0, 14, 0, 15, 16, - 17, 0, 0, 4, 5, 6, 7, 8, 9, 0, - 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 202, 0, 19, 4, 5, 6, 7, 8, 9, 20, - 16, 17, 21, 22, 10, 23, 0, 24, 11, 0, - 0, 18, 12, 13, 0, 0, 0, 14, 0, 15, - 16, 17, 0, 0, 0, 0, 0, 0, 0, 0, - 20, 18, 0, 21, 22, 0, 23, 0, 24, 0, - 0, 206, 0, 19, 4, 5, 6, 7, 8, 9, - 20, 0, 0, 21, 22, 10, 23, 0, 24, 11, - 0, 0, 0, 12, 13, 0, 0, 0, 14, 0, - 15, 16, 17, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, - 0, 20, 0, 57, 21, 22, 58, 23, 59, 24, - 52, 0, -157, -157, 0, 0, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 0, 0, 0, 0, 0, - -157, -157, 0, 0, 18, 0, 0, 0, 0, 0, - 0, 0, -157, -157, 104, 105, 106, 107, 108, 212, - 109, 0, 58, 79, 59, 0, 52, 0, 0, 0, - -156, 0, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 0, 0, 0, 4, 5, 6, 7, 8, 9, - 18, 0, 0, 0, 0, 10, 0, 0, 0, 11, - 0, 0, 0, 12, 13, 0, 0, 0, 14, 79, - 15, 16, 17, 0, 0, 0, -156, 0, 0, 0, - 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, - 123, 20, 0, 0, 21, 22, 0, 23, 0, 24, - 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, - 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, - 13, 0, 0, 0, 14, 0, 15, 16, 17, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 19, 0, 0, 0, 0, 86, 87, 20, 0, 0, - 21, 22, 236, 23, 0, 24, 4, 5, 6, 7, - 8, 9, 0, 0, 0, 0, 0, 10, 0, 0, - 0, 11, 0, 97, 98, 12, 13, 0, 0, 0, - 14, 0, 15, 16, 17, 102, 103, 104, 105, 106, - 107, 108, 0, 109, 18, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, - 0, 0, 0, 20, 0, 0, 21, 22, 276, 23, - 0, 24, 4, 5, 6, 7, 8, 9, 0, 0, + 25, 181, 1, 45, 52, 113, 41, 42, 46, 52, + 40, 266, 259, 43, 53, 30, 80, 113, 47, 49, + 122, 56, 113, 142, 118, 118, 114, 232, 36, 260, + 267, 132, 121, 38, 125, 126, 37, 143, 18, 142, + 211, 39, 144, 18, 215, 216, 44, 218, 219, 220, + 129, 84, 130, 143, 113, 134, 177, 178, 135, 179, + 182, 187, 183, 133, 115, 116, 205, 206, 223, 106, + 107, 108, 198, 109, 199, 138, 115, 116, 147, 31, + 32, 115, 116, 136, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 188, 122, + 232, 255, 139, 115, 116, 192, 196, 140, 197, 269, + 243, 246, 244, 247, -156, -156, 145, 146, 148, 202, + 204, 151, 149, 208, 209, 80, 152, 214, 150, 214, + 214, 193, 214, 214, 80, 285, 180, 286, 287, 288, + 221, 290, -156, -156, 292, 283, 284, 109, 233, 234, + -120, 237, 238, 240, -156, -156, 104, 105, 106, 107, + 108, 253, 109, 254, 256, -119, 229, 222, 257, 194, + 119, 261, 271, 262, 263, 265, 236, 268, 308, 239, + 276, 278, 293, 302, 48, 126, 294, 4, 5, 6, + 7, 8, 9, 123, 295, 303, 214, 277, 10, 309, + 291, 0, 11, 0, 245, 0, 12, 13, 0, 0, + 0, 14, 0, 15, 16, 17, 0, 264, 0, 0, + 0, 0, 0, 270, 0, 18, 0, 0, 0, 0, + 275, 0, 0, 0, 0, 0, 0, 19, 279, 280, + 214, 214, 281, 282, 20, 0, 0, 21, 22, 229, + 23, 0, 24, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 297, 0, 0, + 0, 0, -72, 50, 0, 0, 51, -72, 0, 0, + 52, 0, -72, -72, -72, -72, -72, 0, 305, 306, + 307, 0, -72, -72, -72, 0, 0, -72, -72, -72, + 313, -72, 0, 0, 0, -72, -72, -72, -72, -72, + -72, -72, -72, 0, 18, 0, 0, -72, 0, 0, + -72, -72, -72, -72, -72, -72, -72, -72, -72, -72, + 0, -72, -72, 0, -72, -72, -72, -72, -72, 189, + -72, 0, 4, 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, 10, 0, 0, 0, 11, 0, 0, 0, 12, 13, 0, 0, 0, 14, 0, 15, 16, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, 20, - 0, 226, 21, 22, 227, 23, 228, 24, 52, 0, - 0, 0, 0, 0, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 18, 85, 86, 87, 88, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, - 90, 229, 0, 0, 0, 0, 91, 92, 93, 94, - 95, 96, 97, 98, 0, 0, 0, 85, 86, 87, - 88, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 0, 109, 89, 90, 0, 242, 0, 0, 243, + 0, 190, 21, 22, 191, 23, 54, 24, 0, 4, + 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 11, 0, 0, 0, 12, 13, + 0, 0, 0, 14, 0, 15, 16, 17, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, + 0, 0, 0, 0, 0, 0, 20, 0, 0, 21, + 22, 55, 23, 203, 24, 0, 4, 5, 6, 7, + 8, 9, 0, 0, 0, 0, 0, 10, 0, 0, + 0, 11, 0, 0, 0, 12, 13, 0, 0, 0, + 14, 0, 15, 16, 17, 0, 0, 4, 5, 6, + 7, 8, 9, 0, 18, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 207, 0, 19, 4, 5, 6, + 7, 8, 9, 20, 16, 17, 21, 22, 10, 23, + 0, 24, 11, 0, 0, 18, 12, 13, 0, 0, + 0, 14, 0, 15, 16, 17, 0, 212, 0, 0, + 0, 0, 0, 0, 20, 18, 0, 21, 22, 0, + 23, 0, 24, 0, 0, 0, 0, 19, 0, 0, + 0, 0, 0, 0, 20, 0, 57, 21, 22, 58, + 23, 59, 24, 52, 0, 86, 87, 0, 0, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 0, 0, + 0, 0, 0, 97, 98, 0, 0, 18, 0, 0, + 0, 0, 0, 0, 0, 102, 103, 104, 105, 106, + 107, 108, 210, 109, 0, 58, 79, 59, 0, 52, + 0, 0, 0, -155, 0, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 0, 0, 0, 4, 5, 6, + 7, 8, 9, 18, 0, 0, 0, 0, 10, 0, + 0, 0, 11, 0, 0, 0, 12, 13, 0, 0, + 0, 14, 79, 15, 16, 17, 0, 0, 0, -155, + 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, + 0, 0, 0, 124, 20, 0, 0, 21, 22, 0, + 23, 0, 24, 4, 5, 6, 7, 8, 9, 0, + 0, 0, 0, 0, 10, 0, 0, 0, 11, 0, + 0, 0, 12, 13, 0, 0, 0, 14, 0, 15, + 16, 17, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 19, 0, 0, 0, 0, 0, 0, + 20, 0, 0, 21, 22, 235, 23, 0, 24, 4, + 5, 6, 7, 8, 9, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 11, 0, 0, 0, 12, 13, + 0, 0, 0, 14, 0, 15, 16, 17, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, + 0, 0, 0, 0, 0, 0, 20, 0, 0, 21, + 22, 274, 23, 0, 24, 4, 5, 6, 7, 8, + 9, 0, 0, 0, 0, 0, 10, 0, 0, 0, + 11, 0, 0, 0, 12, 13, 0, 0, 0, 14, + 0, 15, 16, 17, 0, 0, 4, 5, 6, 7, + 8, 9, 0, 18, 86, 87, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 19, 0, 0, 0, 89, + 0, 0, 20, 16, 17, 21, 22, 0, 23, 0, + 24, 0, 97, 98, 18, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 102, 103, 104, 105, 106, 107, + 108, 0, 109, 20, 0, 225, 21, 22, 226, 23, + 227, 24, 52, 0, 0, 0, 0, 0, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 18, 85, 86, 87, + 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 89, 90, 228, 0, 0, 0, 0, 91, 92, 93, 94, 95, 96, 97, 98, 0, 0, 0, 85, 86, 87, 88, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 0, 109, 89, 90, 0, - 0, 0, 0, 142, 91, 92, 93, 94, 95, 96, + 241, 0, 0, 242, 91, 92, 93, 94, 95, 96, 97, 98, 0, 0, 0, 85, 86, 87, 88, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 0, - 109, 89, 90, 0, 0, 0, 0, 274, 91, 92, + 109, 89, 90, 0, 0, 0, 0, 141, 91, 92, 93, 94, 95, 96, 97, 98, 0, 0, 0, 85, 86, 87, 88, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 0, 109, 89, 90, 0, 0, 0, - 0, 275, 91, 92, 93, 94, 95, 96, 97, 98, + 0, 272, 91, 92, 93, 94, 95, 96, 97, 98, 0, 0, 0, 85, 86, 87, 88, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 0, 109, 89, - 90, 0, 0, 0, 0, 299, 91, 92, 93, 94, - 95, 96, 97, 98, 0, 0, 0, 0, 0, 0, - 0, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 0, 109, 314, 0, 315, 85, 86, 87, 88, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 89, 90, 0, 0, 0, 0, 0, 91, - 92, 93, 94, 95, 96, 97, 98, 0, 0, 0, - 85, 86, 87, 88, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 0, 109, 89, 90, 138, 0, + 90, 0, 0, 0, 0, 273, 91, 92, 93, 94, + 95, 96, 97, 98, 0, 0, 0, 85, 86, 87, + 88, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 0, 109, 89, 90, 0, 0, 0, 0, 296, + 91, 92, 93, 94, 95, 96, 97, 98, 0, 0, + 0, 0, 0, 0, 0, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 0, 109, 311, 0, 312, + 85, 86, 87, 88, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 89, 90, 0, 0, 0, 0, 0, 91, 92, 93, 94, 95, 96, 97, 98, 0, 0, 0, 85, 86, 87, 88, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 0, 109, - 89, 90, 219, 0, 0, 0, 0, 91, 92, 93, + 89, 90, 137, 0, 0, 0, 0, 91, 92, 93, 94, 95, 96, 97, 98, 0, 0, 0, 85, 86, 87, 88, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 0, 109, 89, 90, 292, 0, 0, 0, + 107, 108, 0, 109, 89, 90, 217, 0, 0, 0, 0, 91, 92, 93, 94, 95, 96, 97, 98, 0, 0, 0, 85, 86, 87, 88, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 0, 109, 89, 90, - 313, 0, 0, 0, 0, 91, 92, 93, 94, 95, + 289, 0, 0, 0, 0, 91, 92, 93, 94, 95, 96, 97, 98, 0, 0, 0, 85, 86, 87, 88, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 0, 109, 89, 90, 317, 0, 0, 0, 0, 91, + 0, 109, 89, 90, 310, 0, 0, 0, 0, 91, 92, 93, 94, 95, 96, 97, 98, 0, 0, 0, - 0, 0, 0, 0, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 0, 109, 110, 85, 86, 87, - 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 89, 90, 0, 0, 0, 0, 0, - 91, 92, 93, 94, 95, 96, 97, 98, 0, 0, - 0, 0, 0, 0, 0, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 0, 109, 193, 85, 86, - 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 89, 90, 0, 0, 0, 0, - 0, 91, 92, 93, 94, 95, 96, 97, 98, 0, - 0, 0, 0, 0, 0, 0, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 0, 109, 250, 85, - 86, 87, 88, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 89, 90, 0, 0, 0, - 0, 0, 91, 92, 93, 94, 95, 96, 97, 98, - 0, 0, 0, 0, 0, 0, 0, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 0, 109, 303, - 85, 86, 87, 88, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 89, 90, 0, 0, + 85, 86, 87, 88, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 0, 109, 89, 90, 314, 0, 0, 0, 0, 91, 92, 93, 94, 95, 96, 97, 98, 0, 0, 0, 0, 0, 0, 0, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 0, 109, - 304, 85, 86, 87, 88, 0, 0, 0, 0, 0, + 110, 85, 86, 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 90, 0, 0, 0, 0, 0, 91, 92, 93, 94, 95, 96, 97, 98, 0, 0, 0, 0, 0, 0, 0, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 0, - 109, 307, 85, 86, 87, 88, 0, 0, 0, 0, - 0, 0, 0, 251, 252, 0, 0, 253, 89, 90, + 109, 195, 85, 86, 87, 88, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 89, 90, 0, 0, 0, 0, 0, 91, 92, 93, 94, 95, 96, 97, 98, 0, 0, 0, 0, 0, 0, 0, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 0, 109, 85, 86, 87, 88, 0, 0, 0, 0, - 0, 0, 131, 0, 0, 0, 0, 0, 89, 90, - 0, 0, 0, 0, 0, 91, 92, 93, 94, 95, - 96, 97, 98, 0, 0, 0, 85, 86, 87, 88, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 0, 109, 89, 90, 0, 0, 0, 0, 0, 91, - 92, 93, 94, 95, 96, 97, 98, 0, 0, 0, - 0, 285, 0, 0, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 0, 109, 85, 86, 87, 88, + 0, 109, 248, 85, 86, 87, 88, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, + 90, 0, 0, 0, 0, 0, 91, 92, 93, 94, + 95, 96, 97, 98, 0, 0, 0, 0, 0, 0, + 0, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 0, 109, 300, 85, 86, 87, 88, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 89, 90, 0, 0, 0, 0, 0, 91, 92, 93, + 94, 95, 96, 97, 98, 0, 0, 0, 0, 0, + 0, 0, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 0, 109, 301, 85, 86, 87, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 301, 89, 90, 0, 0, 0, 0, 0, 91, + 0, 89, 90, 0, 0, 0, 0, 0, 91, 92, + 93, 94, 95, 96, 97, 98, 0, 0, 0, 0, + 0, 0, 0, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 0, 109, 304, 85, 86, 87, 88, + 0, 0, 0, 0, 0, 0, 0, 249, 250, 0, + 0, 251, 89, 90, 0, 0, 0, 0, 0, 91, 92, 93, 94, 95, 96, 97, 98, 0, 0, 0, 0, 0, 0, 0, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 0, 109, 85, 86, 87, 88, - 0, 0, 0, 0, 0, 0, 302, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 131, 0, 0, 0, 0, 0, 89, 90, 0, 0, 0, 0, 0, 91, 92, 93, 94, 95, 96, 97, 98, 0, 0, 0, 85, 86, 87, 88, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 0, 109, 89, 90, 0, 0, 0, 0, 0, 91, 92, 93, 94, 95, 96, 97, + 98, 0, 0, 0, 0, 258, 0, 0, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 0, 109, + 85, 86, 87, 88, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 298, 89, 90, 0, 0, + 0, 0, 0, 91, 92, 93, 94, 95, 96, 97, + 98, 0, 0, 0, 0, 0, 0, 0, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 0, 109, + 85, 86, 87, 88, 0, 0, 0, 0, 0, 0, + 299, 0, 0, 0, 0, 0, 89, 90, 0, 0, + 0, 0, 0, 91, 92, 93, 94, 95, 96, 97, 98, 0, 0, 0, 85, 86, 87, 88, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 0, 109, 89, 90, 0, 0, 0, 0, 0, 91, 92, 93, - 94, 95, 96, 97, 98, 0, 0, 0, -157, 86, - 87, 0, 0, 0, 101, 102, 103, 104, 105, 106, + 94, 95, 96, 97, 98, 0, 0, 0, 85, 86, + 87, 88, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 0, 109, 89, 90, 0, 0, 0, 0, - 0, -157, -157, -157, -157, -157, -157, 97, 98, 0, - 0, 86, 87, 0, 0, 0, 0, 0, -157, 102, - 103, 104, 105, 106, 107, 108, 89, 109, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, - 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 102, 103, 104, 105, 106, 107, 108, 0, 109 + 0, 91, 92, 93, 94, 95, 96, 97, 98, 0, + 0, 0, -156, 86, 87, 0, 0, 0, 101, 102, + 103, 104, 105, 106, 107, 108, 0, 109, 89, 90, + 0, 0, 0, 0, 0, -156, -156, -156, -156, -156, + -156, 97, 98, 0, 0, 0, 0, 0, 0, 0, + 0, 0, -156, 102, 103, 104, 105, 106, 107, 108, + 0, 109 }; static const yytype_int16 yycheck[] = { - 1, 6, 49, 16, 8, 12, 13, 0, 146, 147, - 11, 149, 150, 14, 8, 5, 63, 61, 19, 20, - 32, 22, 5, 181, 14, 49, 21, 49, 23, 59, - 49, 32, 143, 34, 35, 30, 31, 1, 42, 63, - 42, 152, 6, 61, 68, 63, 68, 66, 42, 55, - 56, 57, 5, 59, 43, 44, 5, 46, 17, 18, - 65, 14, 67, 132, 133, 14, 180, 43, 44, 4, - 46, 65, 6, 69, 64, 65, 214, 4, 79, 6, - 48, 64, 65, 29, 85, 86, 87, 88, 89, 90, + 1, 6, 16, 1, 8, 5, 12, 13, 6, 8, + 11, 49, 49, 14, 21, 0, 23, 5, 19, 20, + 33, 22, 5, 49, 31, 32, 14, 183, 61, 66, + 68, 14, 33, 42, 35, 36, 59, 63, 42, 49, + 142, 4, 68, 42, 145, 146, 6, 148, 149, 151, + 61, 69, 63, 63, 5, 29, 43, 44, 48, 46, + 65, 65, 67, 14, 64, 65, 132, 133, 182, 55, + 56, 57, 4, 59, 6, 1, 64, 65, 79, 17, + 18, 64, 65, 62, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 62, 121, - 268, 64, 65, 1, 115, 64, 65, 59, 66, 114, - 234, 259, 260, 60, 4, 62, 6, 63, 68, 130, - 131, 63, 63, 134, 135, 63, 60, 144, 62, 146, - 147, 49, 149, 150, 69, 59, 14, 261, 143, 263, - 264, 265, 6, 267, 59, 41, 270, 152, 48, 41, - 59, 59, 66, 48, 61, 61, 59, 1, 63, 63, - 4, 5, 6, 7, 8, 9, 63, 41, 33, 63, - 63, 15, 63, 59, 185, 19, 181, 188, 63, 23, - 24, 305, 59, 194, 28, 121, 30, 31, 32, 59, - 59, 63, 59, 31, 308, 248, 128, 214, 42, 210, - 194, 4, 5, 6, 7, 8, 9, 268, -1, -1, - 54, -1, -1, -1, -1, -1, -1, 61, 229, 63, - 64, 65, 66, 67, 235, 69, -1, -1, 31, 32, - -1, 242, -1, -1, -1, -1, -1, -1, -1, 42, - 251, 252, 259, 260, 255, 256, -1, -1, -1, -1, - -1, 54, -1, -1, -1, -1, -1, -1, 61, -1, - -1, 64, 65, 268, 67, -1, 69, -1, -1, 280, - -1, -1, -1, -1, -1, 0, 1, -1, -1, 4, - 5, -1, -1, 8, -1, 10, 11, 12, 13, 14, - -1, 302, 303, 304, -1, 20, 21, 22, -1, -1, - 25, 26, 27, 314, 29, -1, -1, -1, 33, 34, - 35, 36, 37, 38, 39, 40, -1, 42, -1, -1, - 45, -1, -1, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, -1, 59, 60, -1, 62, 63, 64, - 65, 66, 1, 68, -1, 4, 5, 6, 7, 8, - 9, -1, -1, -1, -1, -1, 15, -1, -1, -1, - 19, -1, -1, -1, 23, 24, -1, -1, -1, 28, - -1, 30, 31, 32, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 42, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 54, -1, -1, -1, -1, - -1, -1, 61, -1, -1, 64, 65, 66, 67, 1, - 69, -1, 4, 5, 6, 7, 8, 9, -1, -1, - -1, -1, -1, 15, -1, -1, -1, 19, -1, -1, - -1, 23, 24, -1, -1, -1, 28, -1, 30, 31, - 32, -1, -1, 4, 5, 6, 7, 8, 9, -1, - 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1, -1, 54, 4, 5, 6, 7, 8, 9, 61, - 31, 32, 64, 65, 15, 67, -1, 69, 19, -1, - -1, 42, 23, 24, -1, -1, -1, 28, -1, 30, - 31, 32, -1, -1, -1, -1, -1, -1, -1, -1, - 61, 42, -1, 64, 65, -1, 67, -1, 69, -1, - -1, 1, -1, 54, 4, 5, 6, 7, 8, 9, - 61, -1, -1, 64, 65, 15, 67, -1, 69, 19, - -1, -1, -1, 23, 24, -1, -1, -1, 28, -1, - 30, 31, 32, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 42, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 54, -1, -1, -1, -1, -1, - -1, 61, -1, 1, 64, 65, 4, 67, 6, 69, - 8, -1, 11, 12, -1, -1, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, -1, -1, -1, -1, -1, - 39, 40, -1, -1, 42, -1, -1, -1, -1, -1, - -1, -1, 51, 52, 53, 54, 55, 56, 57, 1, - 59, -1, 4, 61, 6, -1, 8, -1, -1, -1, - 68, -1, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, -1, -1, -1, 4, 5, 6, 7, 8, 9, - 42, -1, -1, -1, -1, 15, -1, -1, -1, 19, - -1, -1, -1, 23, 24, -1, -1, -1, 28, 61, - 30, 31, 32, -1, -1, -1, 68, -1, -1, -1, - -1, -1, 42, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 54, -1, -1, -1, -1, -1, - 60, 61, -1, -1, 64, 65, -1, 67, -1, 69, - 4, 5, 6, 7, 8, 9, -1, -1, -1, -1, - -1, 15, -1, -1, -1, 19, -1, -1, -1, 23, - 24, -1, -1, -1, 28, -1, 30, 31, 32, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 42, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 54, -1, -1, -1, -1, 11, 12, 61, -1, -1, - 64, 65, 66, 67, -1, 69, 4, 5, 6, 7, - 8, 9, -1, -1, -1, -1, -1, 15, -1, -1, - -1, 19, -1, 39, 40, 23, 24, -1, -1, -1, - 28, -1, 30, 31, 32, 51, 52, 53, 54, 55, - 56, 57, -1, 59, 42, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 54, -1, -1, -1, - -1, -1, -1, 61, -1, -1, 64, 65, 66, 67, - -1, 69, 4, 5, 6, 7, 8, 9, -1, -1, + 101, 102, 103, 104, 105, 106, 107, 108, 115, 122, + 266, 212, 59, 64, 65, 116, 60, 66, 62, 233, + 4, 60, 6, 62, 11, 12, 63, 63, 63, 130, + 131, 49, 63, 134, 135, 142, 69, 143, 68, 145, + 146, 14, 148, 149, 151, 259, 59, 261, 262, 263, + 6, 265, 39, 40, 268, 256, 257, 59, 41, 48, + 41, 59, 66, 59, 51, 52, 53, 54, 55, 56, + 57, 61, 59, 61, 48, 41, 183, 178, 63, 122, + 32, 63, 59, 63, 63, 63, 187, 63, 302, 190, + 59, 63, 59, 63, 1, 196, 59, 4, 5, 6, + 7, 8, 9, 34, 59, 59, 212, 246, 15, 305, + 266, -1, 19, -1, 196, -1, 23, 24, -1, -1, + -1, 28, -1, 30, 31, 32, -1, 228, -1, -1, + -1, -1, -1, 234, -1, 42, -1, -1, -1, -1, + 241, -1, -1, -1, -1, -1, -1, 54, 249, 250, + 256, 257, 253, 254, 61, -1, -1, 64, 65, 266, + 67, -1, 69, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 278, -1, -1, + -1, -1, 0, 1, -1, -1, 4, 5, -1, -1, + 8, -1, 10, 11, 12, 13, 14, -1, 299, 300, + 301, -1, 20, 21, 22, -1, -1, 25, 26, 27, + 311, 29, -1, -1, -1, 33, 34, 35, 36, 37, + 38, 39, 40, -1, 42, -1, -1, 45, -1, -1, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + -1, 59, 60, -1, 62, 63, 64, 65, 66, 1, + 68, -1, 4, 5, 6, 7, 8, 9, -1, -1, -1, -1, -1, 15, -1, -1, -1, 19, -1, -1, -1, 23, 24, -1, -1, -1, 28, -1, 30, 31, 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 54, -1, -1, -1, -1, -1, -1, 61, - -1, 1, 64, 65, 4, 67, 6, 69, 8, -1, - -1, -1, -1, -1, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 42, 10, 11, 12, 13, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 26, - 27, 61, -1, -1, -1, -1, 33, 34, 35, 36, - 37, 38, 39, 40, -1, -1, -1, 10, 11, 12, - 13, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, -1, 59, 26, 27, -1, 63, -1, -1, 66, + -1, 63, 64, 65, 66, 67, 1, 69, -1, 4, + 5, 6, 7, 8, 9, -1, -1, -1, -1, -1, + 15, -1, -1, -1, 19, -1, -1, -1, 23, 24, + -1, -1, -1, 28, -1, 30, 31, 32, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 42, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 54, + -1, -1, -1, -1, -1, -1, 61, -1, -1, 64, + 65, 66, 67, 1, 69, -1, 4, 5, 6, 7, + 8, 9, -1, -1, -1, -1, -1, 15, -1, -1, + -1, 19, -1, -1, -1, 23, 24, -1, -1, -1, + 28, -1, 30, 31, 32, -1, -1, 4, 5, 6, + 7, 8, 9, -1, 42, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 1, -1, 54, 4, 5, 6, + 7, 8, 9, 61, 31, 32, 64, 65, 15, 67, + -1, 69, 19, -1, -1, 42, 23, 24, -1, -1, + -1, 28, -1, 30, 31, 32, -1, 54, -1, -1, + -1, -1, -1, -1, 61, 42, -1, 64, 65, -1, + 67, -1, 69, -1, -1, -1, -1, 54, -1, -1, + -1, -1, -1, -1, 61, -1, 1, 64, 65, 4, + 67, 6, 69, 8, -1, 11, 12, -1, -1, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, -1, -1, + -1, -1, -1, 39, 40, -1, -1, 42, -1, -1, + -1, -1, -1, -1, -1, 51, 52, 53, 54, 55, + 56, 57, 1, 59, -1, 4, 61, 6, -1, 8, + -1, -1, -1, 68, -1, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, -1, -1, -1, 4, 5, 6, + 7, 8, 9, 42, -1, -1, -1, -1, 15, -1, + -1, -1, 19, -1, -1, -1, 23, 24, -1, -1, + -1, 28, 61, 30, 31, 32, -1, -1, -1, 68, + -1, -1, -1, -1, -1, 42, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 54, -1, -1, + -1, -1, -1, 60, 61, -1, -1, 64, 65, -1, + 67, -1, 69, 4, 5, 6, 7, 8, 9, -1, + -1, -1, -1, -1, 15, -1, -1, -1, 19, -1, + -1, -1, 23, 24, -1, -1, -1, 28, -1, 30, + 31, 32, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 42, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 54, -1, -1, -1, -1, -1, -1, + 61, -1, -1, 64, 65, 66, 67, -1, 69, 4, + 5, 6, 7, 8, 9, -1, -1, -1, -1, -1, + 15, -1, -1, -1, 19, -1, -1, -1, 23, 24, + -1, -1, -1, 28, -1, 30, 31, 32, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 42, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 54, + -1, -1, -1, -1, -1, -1, 61, -1, -1, 64, + 65, 66, 67, -1, 69, 4, 5, 6, 7, 8, + 9, -1, -1, -1, -1, -1, 15, -1, -1, -1, + 19, -1, -1, -1, 23, 24, -1, -1, -1, 28, + -1, 30, 31, 32, -1, -1, 4, 5, 6, 7, + 8, 9, -1, 42, 11, 12, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 54, -1, -1, -1, 26, + -1, -1, 61, 31, 32, 64, 65, -1, 67, -1, + 69, -1, 39, 40, 42, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 51, 52, 53, 54, 55, 56, + 57, -1, 59, 61, -1, 1, 64, 65, 4, 67, + 6, 69, 8, -1, -1, -1, -1, -1, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 42, 10, 11, 12, + 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 26, 27, 61, -1, -1, -1, -1, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, 10, 11, 12, 13, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 26, 27, -1, - -1, -1, -1, 66, 33, 34, 35, 36, 37, 38, + 63, -1, -1, 66, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, 10, 11, 12, 13, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 26, 27, -1, -1, -1, -1, 66, 33, 34, @@ -1464,14 +1465,14 @@ static const yytype_int16 yycheck[] = -1, -1, -1, 10, 11, 12, 13, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 26, 27, -1, -1, -1, -1, 66, 33, 34, 35, 36, - 37, 38, 39, 40, -1, -1, -1, -1, -1, -1, - -1, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, -1, 59, 60, -1, 62, 10, 11, 12, 13, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 26, 27, -1, -1, -1, -1, -1, 33, - 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, - 10, 11, 12, 13, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, -1, 59, 26, 27, 62, -1, + 37, 38, 39, 40, -1, -1, -1, 10, 11, 12, + 13, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, -1, 59, 26, 27, -1, -1, -1, -1, 66, + 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, + -1, -1, -1, -1, -1, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, -1, 59, 60, -1, 62, + 10, 11, 12, 13, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 26, 27, -1, -1, -1, -1, -1, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, 10, 11, 12, 13, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, @@ -1487,25 +1488,8 @@ static const yytype_int16 yycheck[] = 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 26, 27, 62, -1, -1, -1, -1, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, - -1, -1, -1, -1, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, -1, 59, 60, 10, 11, 12, - 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 26, 27, -1, -1, -1, -1, -1, - 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, - -1, -1, -1, -1, -1, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, -1, 59, 60, 10, 11, - 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 26, 27, -1, -1, -1, -1, - -1, 33, 34, 35, 36, 37, 38, 39, 40, -1, - -1, -1, -1, -1, -1, -1, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, -1, 59, 60, 10, - 11, 12, 13, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 26, 27, -1, -1, -1, - -1, -1, 33, 34, 35, 36, 37, 38, 39, 40, - -1, -1, -1, -1, -1, -1, -1, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, - 10, 11, 12, 13, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 26, 27, -1, -1, + 10, 11, 12, 13, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, -1, 59, 26, 27, 62, -1, -1, -1, -1, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, -1, -1, -1, -1, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, @@ -1515,20 +1499,27 @@ static const yytype_int16 yycheck[] = 39, 40, -1, -1, -1, -1, -1, -1, -1, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 60, 10, 11, 12, 13, -1, -1, -1, -1, - -1, -1, -1, 21, 22, -1, -1, 25, 26, 27, + -1, -1, -1, -1, -1, -1, -1, -1, 26, 27, -1, -1, -1, -1, -1, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, -1, -1, -1, -1, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - -1, 59, 10, 11, 12, 13, -1, -1, -1, -1, - -1, -1, 20, -1, -1, -1, -1, -1, 26, 27, - -1, -1, -1, -1, -1, 33, 34, 35, 36, 37, - 38, 39, 40, -1, -1, -1, 10, 11, 12, 13, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - -1, 59, 26, 27, -1, -1, -1, -1, -1, 33, - 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, - -1, 45, -1, -1, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, -1, 59, 10, 11, 12, 13, + -1, 59, 60, 10, 11, 12, 13, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 26, + 27, -1, -1, -1, -1, -1, 33, 34, 35, 36, + 37, 38, 39, 40, -1, -1, -1, -1, -1, -1, + -1, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, -1, 59, 60, 10, 11, 12, 13, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 26, 27, -1, -1, -1, -1, -1, 33, 34, 35, + 36, 37, 38, 39, 40, -1, -1, -1, -1, -1, + -1, -1, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, -1, 59, 60, 10, 11, 12, 13, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 26, 27, -1, -1, -1, -1, -1, 33, 34, + 35, 36, 37, 38, 39, 40, -1, -1, -1, -1, + -1, -1, -1, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, -1, 59, 60, 10, 11, 12, 13, + -1, -1, -1, -1, -1, -1, -1, 21, 22, -1, -1, 25, 26, 27, -1, -1, -1, -1, -1, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, -1, -1, -1, -1, 48, 49, 50, 51, 52, 53, @@ -1539,18 +1530,29 @@ static const yytype_int16 yycheck[] = 10, 11, 12, 13, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 26, 27, -1, -1, -1, -1, -1, 33, 34, 35, 36, 37, 38, 39, + 40, -1, -1, -1, -1, 45, -1, -1, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, + 10, 11, 12, 13, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 25, 26, 27, -1, -1, + -1, -1, -1, 33, 34, 35, 36, 37, 38, 39, + 40, -1, -1, -1, -1, -1, -1, -1, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, + 10, 11, 12, 13, -1, -1, -1, -1, -1, -1, + 20, -1, -1, -1, -1, -1, 26, 27, -1, -1, + -1, -1, -1, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, 10, 11, 12, 13, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 26, 27, -1, -1, -1, -1, -1, 33, 34, 35, 36, 37, 38, 39, 40, -1, -1, -1, 10, 11, - 12, -1, -1, -1, 50, 51, 52, 53, 54, 55, + 12, 13, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, -1, 59, 26, 27, -1, -1, -1, -1, -1, 33, 34, 35, 36, 37, 38, 39, 40, -1, - -1, 11, 12, -1, -1, -1, -1, -1, 50, 51, - 52, 53, 54, 55, 56, 57, 26, 59, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 39, - 40, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 51, 52, 53, 54, 55, 56, 57, -1, 59 + -1, -1, 10, 11, 12, -1, -1, -1, 50, 51, + 52, 53, 54, 55, 56, 57, -1, 59, 26, 27, + -1, -1, -1, -1, -1, 33, 34, 35, 36, 37, + 38, 39, 40, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 50, 51, 52, 53, 54, 55, 56, 57, + -1, 59 }; /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of @@ -1559,36 +1561,36 @@ static const yytype_int8 yystos[] = { 0, 16, 71, 72, 4, 5, 6, 7, 8, 9, 15, 19, 23, 24, 28, 30, 31, 32, 42, 54, - 61, 64, 65, 67, 69, 75, 79, 83, 88, 0, - 17, 18, 73, 76, 77, 61, 59, 42, 4, 75, - 88, 88, 75, 6, 1, 6, 82, 75, 1, 75, + 61, 64, 65, 67, 69, 75, 79, 82, 83, 87, + 0, 17, 18, 73, 76, 77, 61, 59, 42, 4, + 75, 87, 87, 75, 6, 1, 6, 75, 1, 75, 1, 4, 8, 83, 1, 66, 75, 1, 4, 6, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 61, - 83, 97, 98, 99, 69, 10, 11, 12, 13, 26, + 83, 96, 97, 98, 69, 10, 11, 12, 13, 26, 27, 33, 34, 35, 36, 37, 38, 39, 40, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 59, - 60, 75, 5, 14, 64, 65, 78, 83, 78, 74, - 75, 79, 73, 60, 75, 75, 89, 90, 84, 61, - 63, 20, 14, 14, 29, 48, 85, 62, 62, 1, - 59, 66, 66, 49, 63, 68, 63, 63, 75, 63, - 63, 68, 49, 69, 75, 75, 75, 75, 75, 75, + 60, 75, 84, 5, 14, 64, 65, 78, 83, 78, + 74, 75, 79, 73, 60, 75, 75, 88, 89, 61, + 63, 20, 14, 14, 29, 48, 62, 62, 1, 59, + 66, 66, 49, 63, 68, 63, 63, 75, 63, 63, + 68, 49, 69, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, - 75, 75, 75, 75, 75, 75, 75, 75, 59, 6, - 65, 67, 91, 92, 93, 65, 83, 1, 63, 66, - 75, 14, 74, 60, 60, 62, 85, 4, 6, 80, - 81, 75, 1, 75, 92, 92, 1, 75, 75, 43, - 44, 46, 1, 98, 54, 87, 88, 87, 87, 62, - 87, 87, 98, 6, 93, 94, 1, 4, 6, 61, - 83, 95, 96, 97, 41, 48, 66, 75, 59, 66, - 75, 59, 63, 66, 4, 6, 90, 46, 60, 62, - 60, 21, 22, 25, 86, 61, 61, 75, 87, 48, - 63, 49, 66, 63, 63, 63, 75, 63, 49, 68, - 63, 93, 75, 59, 66, 66, 66, 75, 59, 81, - 63, 75, 75, 75, 75, 45, 87, 87, 93, 93, - 93, 93, 62, 93, 96, 93, 59, 59, 59, 66, - 75, 25, 20, 60, 60, 63, 59, 60, 75, 75, - 75, 93, 86, 62, 60, 62, 75, 62 + 75, 75, 75, 75, 75, 75, 75, 43, 44, 46, + 59, 6, 65, 67, 90, 91, 92, 65, 83, 1, + 63, 66, 75, 14, 74, 60, 60, 62, 4, 6, + 80, 81, 75, 1, 75, 91, 91, 1, 75, 75, + 1, 97, 54, 86, 87, 86, 86, 62, 86, 86, + 97, 6, 75, 92, 93, 1, 4, 6, 61, 83, + 94, 95, 96, 41, 48, 66, 75, 59, 66, 75, + 59, 63, 66, 4, 6, 89, 60, 62, 60, 21, + 22, 25, 85, 61, 61, 86, 48, 63, 45, 49, + 66, 63, 63, 63, 75, 63, 49, 68, 63, 92, + 75, 59, 66, 66, 66, 75, 59, 81, 63, 75, + 75, 75, 75, 86, 86, 92, 92, 92, 92, 62, + 92, 95, 92, 59, 59, 59, 66, 75, 25, 20, + 60, 60, 63, 59, 60, 75, 75, 75, 92, 85, + 62, 60, 62, 75, 62 }; /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ @@ -1600,18 +1602,17 @@ static const yytype_int8 yyr1[] = 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 75, 76, 76, 77, 77, 77, 78, 79, 79, 80, 80, 81, 81, - 82, 83, 84, 83, 85, 85, 85, 86, 86, 86, - 87, 87, 87, 88, 88, 88, 88, 88, 88, 88, - 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, - 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, - 88, 88, 88, 88, 88, 88, 88, 88, 88, 88, - 88, 88, 88, 88, 88, 88, 88, 89, 89, 90, - 91, 91, 92, 92, 93, 93, 93, 94, 94, 95, - 95, 96, 96, 96, 96, 96, 96, 96, 97, 97, - 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, - 97, 97, 97, 97, 97, 97, 98, 98, 98, 98, - 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, - 99 + 82, 82, 83, 84, 84, 84, 85, 85, 85, 86, + 86, 86, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 87, 87, 87, 87, + 87, 87, 87, 87, 87, 87, 88, 88, 89, 90, + 90, 91, 91, 92, 92, 92, 93, 93, 94, 94, + 95, 95, 95, 95, 95, 95, 95, 96, 96, 96, + 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, + 96, 96, 96, 96, 96, 97, 97, 97, 97, 98, + 98, 98, 98, 98, 98, 98, 98, 98, 98, 98 }; /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ @@ -1623,18 +1624,17 @@ static const yytype_int8 yyr2[] = 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 1, 2, 3, 4, 4, 2, 1, 5, 8, 1, 3, 1, 1, - 0, 4, 0, 5, 0, 2, 4, 5, 3, 1, - 3, 2, 1, 1, 1, 2, 2, 3, 2, 4, - 3, 2, 1, 3, 2, 2, 3, 5, 4, 6, - 5, 4, 3, 5, 4, 7, 6, 6, 6, 5, - 5, 1, 1, 1, 3, 3, 2, 3, 4, 1, - 1, 1, 4, 3, 3, 4, 3, 1, 3, 1, - 3, 1, 3, 1, 1, 3, 3, 1, 3, 1, - 3, 1, 3, 3, 3, 3, 5, 3, 1, 1, + 2, 1, 3, 0, 2, 4, 5, 3, 1, 3, + 2, 1, 1, 1, 2, 2, 3, 2, 4, 3, + 2, 1, 3, 2, 2, 3, 5, 4, 6, 5, + 4, 3, 5, 4, 7, 6, 6, 6, 5, 5, + 1, 1, 1, 3, 3, 2, 3, 4, 1, 1, + 1, 4, 3, 3, 4, 3, 1, 3, 1, 3, + 1, 3, 1, 1, 3, 3, 1, 3, 1, 3, + 1, 3, 3, 3, 3, 5, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 0, 1, 3, 3, - 3, 3, 3, 1, 3, 1, 1, 1, 1, 5, - 3 + 1, 1, 1, 1, 1, 0, 1, 3, 3, 3, + 3, 3, 1, 3, 1, 1, 1, 1, 5, 3 }; @@ -2297,7 +2297,7 @@ yydestruct (const char *yymsg, #line 2298 "src/parser.c" break; - case YYSYMBOL_NoFormat: /* NoFormat */ + case YYSYMBOL_StringStart: /* StringStart */ #line 36 "src/parser.y" { jv_free(((*yyvaluep).literal)); } #line 2304 "src/parser.c" @@ -3213,127 +3213,120 @@ YYLTYPE yylloc = yyloc_default; #line 3214 "src/parser.c" break; - case 60: /* NoFormat: %empty */ + case 60: /* StringStart: FORMAT QQSTRING_START */ #line 603 "src/parser.y" - { - (yyval.literal) = jv_string("text"); + { + (yyval.literal) = (yyvsp[-1].literal); } #line 3222 "src/parser.c" break; - case 61: /* String: QQSTRING_START NoFormat QQString QQSTRING_END */ -#line 608 "src/parser.y" - { - (yyval.blk) = (yyvsp[-1].blk); - jv_free((yyvsp[-2].literal)); + case 61: /* StringStart: QQSTRING_START */ +#line 606 "src/parser.y" + { + (yyval.literal) = jv_string("text"); } -#line 3231 "src/parser.c" +#line 3230 "src/parser.c" break; - case 62: /* @1: %empty */ + case 62: /* String: StringStart QQString QQSTRING_END */ #line 612 "src/parser.y" - { (yyval.literal) = (yyvsp[-1].literal); } -#line 3237 "src/parser.c" - break; - - case 63: /* String: FORMAT QQSTRING_START @1 QQString QQSTRING_END */ -#line 612 "src/parser.y" - { + { (yyval.blk) = (yyvsp[-1].blk); jv_free((yyvsp[-2].literal)); } -#line 3246 "src/parser.c" +#line 3239 "src/parser.c" break; - case 64: /* QQString: %empty */ + case 63: /* QQString: %empty */ #line 619 "src/parser.y" { (yyval.blk) = gen_const(jv_string("")); } -#line 3254 "src/parser.c" +#line 3247 "src/parser.c" break; - case 65: /* QQString: QQString QQSTRING_TEXT */ + case 64: /* QQString: QQString QQSTRING_TEXT */ #line 622 "src/parser.y" { (yyval.blk) = gen_binop((yyvsp[-1].blk), gen_const((yyvsp[0].literal)), '+'); } -#line 3262 "src/parser.c" +#line 3255 "src/parser.c" break; - case 66: /* QQString: QQString QQSTRING_INTERP_START Exp QQSTRING_INTERP_END */ + case 65: /* QQString: QQString QQSTRING_INTERP_START Exp QQSTRING_INTERP_END */ #line 625 "src/parser.y" { (yyval.blk) = gen_binop((yyvsp[-3].blk), gen_format((yyvsp[-1].blk), jv_copy((yyvsp[-4].literal))), '+'); } -#line 3270 "src/parser.c" +#line 3263 "src/parser.c" break; - case 67: /* ElseBody: "elif" Exp "then" Exp ElseBody */ + case 66: /* ElseBody: "elif" Exp "then" Exp ElseBody */ #line 631 "src/parser.y" { (yyval.blk) = gen_cond((yyvsp[-3].blk), (yyvsp[-1].blk), (yyvsp[0].blk)); } -#line 3278 "src/parser.c" +#line 3271 "src/parser.c" break; - case 68: /* ElseBody: "else" Exp "end" */ + case 67: /* ElseBody: "else" Exp "end" */ #line 634 "src/parser.y" { (yyval.blk) = (yyvsp[-1].blk); } -#line 3286 "src/parser.c" +#line 3279 "src/parser.c" break; - case 69: /* ElseBody: "end" */ + case 68: /* ElseBody: "end" */ #line 637 "src/parser.y" { (yyval.blk) = gen_noop(); } -#line 3294 "src/parser.c" +#line 3287 "src/parser.c" break; - case 70: /* ExpD: ExpD '|' ExpD */ + case 69: /* ExpD: ExpD '|' ExpD */ #line 642 "src/parser.y" { (yyval.blk) = block_join((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3302 "src/parser.c" +#line 3295 "src/parser.c" break; - case 71: /* ExpD: '-' ExpD */ + case 70: /* ExpD: '-' ExpD */ #line 645 "src/parser.y" { (yyval.blk) = BLOCK((yyvsp[0].blk), gen_call("_negate", gen_noop())); } -#line 3310 "src/parser.c" +#line 3303 "src/parser.c" break; - case 72: /* ExpD: Term */ + case 71: /* ExpD: Term */ #line 648 "src/parser.y" { (yyval.blk) = (yyvsp[0].blk); } -#line 3318 "src/parser.c" +#line 3311 "src/parser.c" break; - case 73: /* Term: '.' */ + case 72: /* Term: '.' */ #line 654 "src/parser.y" { (yyval.blk) = gen_noop(); } -#line 3326 "src/parser.c" +#line 3319 "src/parser.c" break; - case 74: /* Term: ".." */ + case 73: /* Term: ".." */ #line 657 "src/parser.y" { (yyval.blk) = gen_call("recurse", gen_noop()); } -#line 3334 "src/parser.c" +#line 3327 "src/parser.c" break; - case 75: /* Term: "break" BINDING */ + case 74: /* Term: "break" BINDING */ #line 660 "src/parser.y" { jv v = jv_string_fmt("*label-%s", jv_string_value((yyvsp[0].literal))); // impossible symbol @@ -3343,262 +3336,262 @@ YYLTYPE yylloc = yyloc_default; jv_free(v); jv_free((yyvsp[0].literal)); } -#line 3347 "src/parser.c" +#line 3340 "src/parser.c" break; - case 76: /* Term: "break" error */ + case 75: /* Term: "break" error */ #line 668 "src/parser.y" { FAIL((yyloc), "break requires a label to break to"); (yyval.blk) = gen_noop(); } -#line 3356 "src/parser.c" +#line 3349 "src/parser.c" break; - case 77: /* Term: Term FIELD '?' */ + case 76: /* Term: Term FIELD '?' */ #line 672 "src/parser.y" { (yyval.blk) = gen_index_opt((yyvsp[-2].blk), gen_const((yyvsp[-1].literal))); } -#line 3364 "src/parser.c" +#line 3357 "src/parser.c" break; - case 78: /* Term: FIELD '?' */ + case 77: /* Term: FIELD '?' */ #line 675 "src/parser.y" { (yyval.blk) = gen_index_opt(gen_noop(), gen_const((yyvsp[-1].literal))); } -#line 3372 "src/parser.c" +#line 3365 "src/parser.c" break; - case 79: /* Term: Term '.' String '?' */ + case 78: /* Term: Term '.' String '?' */ #line 678 "src/parser.y" { (yyval.blk) = gen_index_opt((yyvsp[-3].blk), (yyvsp[-1].blk)); } -#line 3380 "src/parser.c" +#line 3373 "src/parser.c" break; - case 80: /* Term: '.' String '?' */ + case 79: /* Term: '.' String '?' */ #line 681 "src/parser.y" { (yyval.blk) = gen_index_opt(gen_noop(), (yyvsp[-1].blk)); } -#line 3388 "src/parser.c" +#line 3381 "src/parser.c" break; - case 81: /* Term: Term FIELD */ + case 80: /* Term: Term FIELD */ #line 684 "src/parser.y" { (yyval.blk) = gen_index((yyvsp[-1].blk), gen_const((yyvsp[0].literal))); } -#line 3396 "src/parser.c" +#line 3389 "src/parser.c" break; - case 82: /* Term: FIELD */ + case 81: /* Term: FIELD */ #line 687 "src/parser.y" { (yyval.blk) = gen_index(gen_noop(), gen_const((yyvsp[0].literal))); } -#line 3404 "src/parser.c" +#line 3397 "src/parser.c" break; - case 83: /* Term: Term '.' String */ + case 82: /* Term: Term '.' String */ #line 690 "src/parser.y" { (yyval.blk) = gen_index((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3412 "src/parser.c" +#line 3405 "src/parser.c" break; - case 84: /* Term: '.' String */ + case 83: /* Term: '.' String */ #line 693 "src/parser.y" { (yyval.blk) = gen_index(gen_noop(), (yyvsp[0].blk)); } -#line 3420 "src/parser.c" +#line 3413 "src/parser.c" break; - case 85: /* Term: '.' error */ + case 84: /* Term: '.' error */ #line 696 "src/parser.y" { FAIL((yyloc), "try .[\"field\"] instead of .field for unusually named fields"); (yyval.blk) = gen_noop(); } -#line 3429 "src/parser.c" +#line 3422 "src/parser.c" break; - case 86: /* Term: '.' IDENT error */ + case 85: /* Term: '.' IDENT error */ #line 700 "src/parser.y" { jv_free((yyvsp[-1].literal)); FAIL((yyloc), "try .[\"field\"] instead of .field for unusually named fields"); (yyval.blk) = gen_noop(); } -#line 3439 "src/parser.c" +#line 3432 "src/parser.c" break; - case 87: /* Term: Term '[' Exp ']' '?' */ + case 86: /* Term: Term '[' Exp ']' '?' */ #line 706 "src/parser.y" { (yyval.blk) = gen_index_opt((yyvsp[-4].blk), (yyvsp[-2].blk)); } -#line 3447 "src/parser.c" +#line 3440 "src/parser.c" break; - case 88: /* Term: Term '[' Exp ']' */ + case 87: /* Term: Term '[' Exp ']' */ #line 709 "src/parser.y" { (yyval.blk) = gen_index((yyvsp[-3].blk), (yyvsp[-1].blk)); } -#line 3455 "src/parser.c" +#line 3448 "src/parser.c" break; - case 89: /* Term: Term '.' '[' Exp ']' '?' */ + case 88: /* Term: Term '.' '[' Exp ']' '?' */ #line 712 "src/parser.y" { (yyval.blk) = gen_index_opt((yyvsp[-5].blk), (yyvsp[-2].blk)); } -#line 3463 "src/parser.c" +#line 3456 "src/parser.c" break; - case 90: /* Term: Term '.' '[' Exp ']' */ + case 89: /* Term: Term '.' '[' Exp ']' */ #line 715 "src/parser.y" { (yyval.blk) = gen_index((yyvsp[-4].blk), (yyvsp[-1].blk)); } -#line 3471 "src/parser.c" +#line 3464 "src/parser.c" break; - case 91: /* Term: Term '[' ']' '?' */ + case 90: /* Term: Term '[' ']' '?' */ #line 718 "src/parser.y" { (yyval.blk) = block_join((yyvsp[-3].blk), gen_op_simple(EACH_OPT)); } -#line 3479 "src/parser.c" +#line 3472 "src/parser.c" break; - case 92: /* Term: Term '[' ']' */ + case 91: /* Term: Term '[' ']' */ #line 721 "src/parser.y" { (yyval.blk) = block_join((yyvsp[-2].blk), gen_op_simple(EACH)); } -#line 3487 "src/parser.c" +#line 3480 "src/parser.c" break; - case 93: /* Term: Term '.' '[' ']' '?' */ + case 92: /* Term: Term '.' '[' ']' '?' */ #line 724 "src/parser.y" { (yyval.blk) = block_join((yyvsp[-4].blk), gen_op_simple(EACH_OPT)); } -#line 3495 "src/parser.c" +#line 3488 "src/parser.c" break; - case 94: /* Term: Term '.' '[' ']' */ + case 93: /* Term: Term '.' '[' ']' */ #line 727 "src/parser.y" { (yyval.blk) = block_join((yyvsp[-3].blk), gen_op_simple(EACH)); } -#line 3503 "src/parser.c" +#line 3496 "src/parser.c" break; - case 95: /* Term: Term '[' Exp ':' Exp ']' '?' */ + case 94: /* Term: Term '[' Exp ':' Exp ']' '?' */ #line 730 "src/parser.y" { (yyval.blk) = gen_slice_index((yyvsp[-6].blk), (yyvsp[-4].blk), (yyvsp[-2].blk), INDEX_OPT); } -#line 3511 "src/parser.c" +#line 3504 "src/parser.c" break; - case 96: /* Term: Term '[' Exp ':' ']' '?' */ + case 95: /* Term: Term '[' Exp ':' ']' '?' */ #line 733 "src/parser.y" { (yyval.blk) = gen_slice_index((yyvsp[-5].blk), (yyvsp[-3].blk), gen_const(jv_null()), INDEX_OPT); } -#line 3519 "src/parser.c" +#line 3512 "src/parser.c" break; - case 97: /* Term: Term '[' ':' Exp ']' '?' */ + case 96: /* Term: Term '[' ':' Exp ']' '?' */ #line 736 "src/parser.y" { (yyval.blk) = gen_slice_index((yyvsp[-5].blk), gen_const(jv_null()), (yyvsp[-2].blk), INDEX_OPT); } -#line 3527 "src/parser.c" +#line 3520 "src/parser.c" break; - case 98: /* Term: Term '[' Exp ':' Exp ']' */ + case 97: /* Term: Term '[' Exp ':' Exp ']' */ #line 739 "src/parser.y" { (yyval.blk) = gen_slice_index((yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk), INDEX); } -#line 3535 "src/parser.c" +#line 3528 "src/parser.c" break; - case 99: /* Term: Term '[' Exp ':' ']' */ + case 98: /* Term: Term '[' Exp ':' ']' */ #line 742 "src/parser.y" { (yyval.blk) = gen_slice_index((yyvsp[-4].blk), (yyvsp[-2].blk), gen_const(jv_null()), INDEX); } -#line 3543 "src/parser.c" +#line 3536 "src/parser.c" break; - case 100: /* Term: Term '[' ':' Exp ']' */ + case 99: /* Term: Term '[' ':' Exp ']' */ #line 745 "src/parser.y" { (yyval.blk) = gen_slice_index((yyvsp[-4].blk), gen_const(jv_null()), (yyvsp[-1].blk), INDEX); } -#line 3551 "src/parser.c" +#line 3544 "src/parser.c" break; - case 101: /* Term: LITERAL */ + case 100: /* Term: LITERAL */ #line 748 "src/parser.y" { (yyval.blk) = gen_const((yyvsp[0].literal)); } -#line 3559 "src/parser.c" +#line 3552 "src/parser.c" break; - case 102: /* Term: String */ + case 101: /* Term: String */ #line 751 "src/parser.y" { (yyval.blk) = (yyvsp[0].blk); } -#line 3567 "src/parser.c" +#line 3560 "src/parser.c" break; - case 103: /* Term: FORMAT */ + case 102: /* Term: FORMAT */ #line 754 "src/parser.y" { (yyval.blk) = gen_format(gen_noop(), (yyvsp[0].literal)); } -#line 3575 "src/parser.c" +#line 3568 "src/parser.c" break; - case 104: /* Term: '(' Exp ')' */ + case 103: /* Term: '(' Exp ')' */ #line 757 "src/parser.y" { (yyval.blk) = (yyvsp[-1].blk); } -#line 3583 "src/parser.c" +#line 3576 "src/parser.c" break; - case 105: /* Term: '[' Exp ']' */ + case 104: /* Term: '[' Exp ']' */ #line 760 "src/parser.y" { (yyval.blk) = gen_collect((yyvsp[-1].blk)); } -#line 3591 "src/parser.c" +#line 3584 "src/parser.c" break; - case 106: /* Term: '[' ']' */ + case 105: /* Term: '[' ']' */ #line 763 "src/parser.y" { (yyval.blk) = gen_const(jv_array()); } -#line 3599 "src/parser.c" +#line 3592 "src/parser.c" break; - case 107: /* Term: '{' MkDict '}' */ + case 106: /* Term: '{' MkDict '}' */ #line 766 "src/parser.y" { block o = gen_const_object((yyvsp[-1].blk)); @@ -3607,36 +3600,36 @@ YYLTYPE yylloc = yyloc_default; else (yyval.blk) = BLOCK(gen_subexp(gen_const(jv_object())), (yyvsp[-1].blk), gen_op_simple(POP)); } -#line 3611 "src/parser.c" +#line 3604 "src/parser.c" break; - case 108: /* Term: '$' '$' '$' BINDING */ + case 107: /* Term: '$' '$' '$' BINDING */ #line 788 "src/parser.y" { (yyval.blk) = gen_location((yyloc), locations, gen_op_unbound(LOADVN, jv_string_value((yyvsp[0].literal)))); jv_free((yyvsp[0].literal)); } -#line 3620 "src/parser.c" +#line 3613 "src/parser.c" break; - case 109: /* Term: BINDING */ + case 108: /* Term: BINDING */ #line 792 "src/parser.y" { (yyval.blk) = gen_location((yyloc), locations, gen_op_unbound(LOADV, jv_string_value((yyvsp[0].literal)))); jv_free((yyvsp[0].literal)); } -#line 3629 "src/parser.c" +#line 3622 "src/parser.c" break; - case 110: /* Term: "$__loc__" */ + case 109: /* Term: "$__loc__" */ #line 796 "src/parser.y" { (yyval.blk) = gen_loc_object(&(yyloc), locations); } -#line 3637 "src/parser.c" +#line 3630 "src/parser.c" break; - case 111: /* Term: IDENT */ + case 110: /* Term: IDENT */ #line 799 "src/parser.y" { const char *s = jv_string_value((yyvsp[0].literal)); @@ -3650,197 +3643,197 @@ YYLTYPE yylloc = yyloc_default; (yyval.blk) = gen_location((yyloc), locations, gen_call(s, gen_noop())); jv_free((yyvsp[0].literal)); } -#line 3654 "src/parser.c" +#line 3647 "src/parser.c" break; - case 112: /* Term: IDENT '(' Args ')' */ + case 111: /* Term: IDENT '(' Args ')' */ #line 811 "src/parser.y" { (yyval.blk) = gen_call(jv_string_value((yyvsp[-3].literal)), (yyvsp[-1].blk)); (yyval.blk) = gen_location((yylsp[-3]), locations, (yyval.blk)); jv_free((yyvsp[-3].literal)); } -#line 3664 "src/parser.c" +#line 3657 "src/parser.c" break; - case 113: /* Term: '(' error ')' */ + case 112: /* Term: '(' error ')' */ #line 816 "src/parser.y" { (yyval.blk) = gen_noop(); } -#line 3670 "src/parser.c" +#line 3663 "src/parser.c" break; - case 114: /* Term: '[' error ']' */ + case 113: /* Term: '[' error ']' */ #line 817 "src/parser.y" { (yyval.blk) = gen_noop(); } -#line 3676 "src/parser.c" +#line 3669 "src/parser.c" break; - case 115: /* Term: Term '[' error ']' */ + case 114: /* Term: Term '[' error ']' */ #line 818 "src/parser.y" { (yyval.blk) = (yyvsp[-3].blk); } -#line 3682 "src/parser.c" +#line 3675 "src/parser.c" break; - case 116: /* Term: '{' error '}' */ + case 115: /* Term: '{' error '}' */ #line 819 "src/parser.y" { (yyval.blk) = gen_noop(); } -#line 3688 "src/parser.c" +#line 3681 "src/parser.c" break; - case 117: /* Args: Arg */ + case 116: /* Args: Arg */ #line 822 "src/parser.y" { (yyval.blk) = (yyvsp[0].blk); } -#line 3696 "src/parser.c" +#line 3689 "src/parser.c" break; - case 118: /* Args: Args ';' Arg */ + case 117: /* Args: Args ';' Arg */ #line 825 "src/parser.y" { (yyval.blk) = BLOCK((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3704 "src/parser.c" +#line 3697 "src/parser.c" break; - case 119: /* Arg: Exp */ + case 118: /* Arg: Exp */ #line 830 "src/parser.y" { (yyval.blk) = gen_lambda((yyvsp[0].blk)); } -#line 3712 "src/parser.c" +#line 3705 "src/parser.c" break; - case 120: /* RepPatterns: RepPatterns "?//" Pattern */ + case 119: /* RepPatterns: RepPatterns "?//" Pattern */ #line 835 "src/parser.y" { (yyval.blk) = BLOCK((yyvsp[-2].blk), gen_destructure_alt((yyvsp[0].blk))); } -#line 3720 "src/parser.c" +#line 3713 "src/parser.c" break; - case 121: /* RepPatterns: Pattern */ + case 120: /* RepPatterns: Pattern */ #line 838 "src/parser.y" { (yyval.blk) = gen_destructure_alt((yyvsp[0].blk)); } -#line 3728 "src/parser.c" +#line 3721 "src/parser.c" break; - case 122: /* Patterns: RepPatterns "?//" Pattern */ + case 121: /* Patterns: RepPatterns "?//" Pattern */ #line 843 "src/parser.y" { (yyval.blk) = BLOCK((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3736 "src/parser.c" +#line 3729 "src/parser.c" break; - case 123: /* Patterns: Pattern */ + case 122: /* Patterns: Pattern */ #line 846 "src/parser.y" { (yyval.blk) = (yyvsp[0].blk); } -#line 3744 "src/parser.c" +#line 3737 "src/parser.c" break; - case 124: /* Pattern: BINDING */ + case 123: /* Pattern: BINDING */ #line 851 "src/parser.y" { (yyval.blk) = gen_op_unbound(STOREV, jv_string_value((yyvsp[0].literal))); jv_free((yyvsp[0].literal)); } -#line 3753 "src/parser.c" +#line 3746 "src/parser.c" break; - case 125: /* Pattern: '[' ArrayPats ']' */ + case 124: /* Pattern: '[' ArrayPats ']' */ #line 855 "src/parser.y" { (yyval.blk) = BLOCK((yyvsp[-1].blk), gen_op_simple(POP)); } -#line 3761 "src/parser.c" +#line 3754 "src/parser.c" break; - case 126: /* Pattern: '{' ObjPats '}' */ + case 125: /* Pattern: '{' ObjPats '}' */ #line 858 "src/parser.y" { (yyval.blk) = BLOCK((yyvsp[-1].blk), gen_op_simple(POP)); } -#line 3769 "src/parser.c" +#line 3762 "src/parser.c" break; - case 127: /* ArrayPats: Pattern */ + case 126: /* ArrayPats: Pattern */ #line 863 "src/parser.y" { (yyval.blk) = gen_array_matcher(gen_noop(), (yyvsp[0].blk)); } -#line 3777 "src/parser.c" +#line 3770 "src/parser.c" break; - case 128: /* ArrayPats: ArrayPats ',' Pattern */ + case 127: /* ArrayPats: ArrayPats ',' Pattern */ #line 866 "src/parser.y" { (yyval.blk) = gen_array_matcher((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3785 "src/parser.c" +#line 3778 "src/parser.c" break; - case 129: /* ObjPats: ObjPat */ + case 128: /* ObjPats: ObjPat */ #line 871 "src/parser.y" { (yyval.blk) = (yyvsp[0].blk); } -#line 3793 "src/parser.c" +#line 3786 "src/parser.c" break; - case 130: /* ObjPats: ObjPats ',' ObjPat */ + case 129: /* ObjPats: ObjPats ',' ObjPat */ #line 874 "src/parser.y" { (yyval.blk) = BLOCK((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3801 "src/parser.c" +#line 3794 "src/parser.c" break; - case 131: /* ObjPat: BINDING */ + case 130: /* ObjPat: BINDING */ #line 879 "src/parser.y" { (yyval.blk) = gen_object_matcher(gen_const((yyvsp[0].literal)), gen_op_unbound(STOREV, jv_string_value((yyvsp[0].literal)))); } -#line 3809 "src/parser.c" +#line 3802 "src/parser.c" break; - case 132: /* ObjPat: BINDING ':' Pattern */ + case 131: /* ObjPat: BINDING ':' Pattern */ #line 882 "src/parser.y" { (yyval.blk) = gen_object_matcher(gen_const((yyvsp[-2].literal)), BLOCK(gen_op_simple(DUP), gen_op_unbound(STOREV, jv_string_value((yyvsp[-2].literal))), (yyvsp[0].blk))); } -#line 3817 "src/parser.c" +#line 3810 "src/parser.c" break; - case 133: /* ObjPat: IDENT ':' Pattern */ + case 132: /* ObjPat: IDENT ':' Pattern */ #line 885 "src/parser.y" { (yyval.blk) = gen_object_matcher(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk)); } -#line 3825 "src/parser.c" +#line 3818 "src/parser.c" break; - case 134: /* ObjPat: Keyword ':' Pattern */ + case 133: /* ObjPat: Keyword ':' Pattern */ #line 888 "src/parser.y" { (yyval.blk) = gen_object_matcher(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk)); } -#line 3833 "src/parser.c" +#line 3826 "src/parser.c" break; - case 135: /* ObjPat: String ':' Pattern */ + case 134: /* ObjPat: String ':' Pattern */ #line 891 "src/parser.y" { (yyval.blk) = gen_object_matcher((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 3841 "src/parser.c" +#line 3834 "src/parser.c" break; - case 136: /* ObjPat: '(' Exp ')' ':' Pattern */ + case 135: /* ObjPat: '(' Exp ')' ':' Pattern */ #line 894 "src/parser.y" { jv msg = check_object_key((yyvsp[-3].blk)); @@ -3850,268 +3843,268 @@ YYLTYPE yylloc = yyloc_default; jv_free(msg); (yyval.blk) = gen_object_matcher((yyvsp[-3].blk), (yyvsp[0].blk)); } -#line 3854 "src/parser.c" +#line 3847 "src/parser.c" break; - case 137: /* ObjPat: error ':' Pattern */ + case 136: /* ObjPat: error ':' Pattern */ #line 902 "src/parser.y" { FAIL((yyloc), "May need parentheses around object key expression"); (yyval.blk) = (yyvsp[0].blk); } -#line 3863 "src/parser.c" +#line 3856 "src/parser.c" break; - case 138: /* Keyword: "as" */ + case 137: /* Keyword: "as" */ #line 908 "src/parser.y" { (yyval.literal) = jv_string("as"); } -#line 3871 "src/parser.c" +#line 3864 "src/parser.c" break; - case 139: /* Keyword: "def" */ + case 138: /* Keyword: "def" */ #line 911 "src/parser.y" { (yyval.literal) = jv_string("def"); } -#line 3879 "src/parser.c" +#line 3872 "src/parser.c" break; - case 140: /* Keyword: "module" */ + case 139: /* Keyword: "module" */ #line 914 "src/parser.y" { (yyval.literal) = jv_string("module"); } -#line 3887 "src/parser.c" +#line 3880 "src/parser.c" break; - case 141: /* Keyword: "import" */ + case 140: /* Keyword: "import" */ #line 917 "src/parser.y" { (yyval.literal) = jv_string("import"); } -#line 3895 "src/parser.c" +#line 3888 "src/parser.c" break; - case 142: /* Keyword: "include" */ + case 141: /* Keyword: "include" */ #line 920 "src/parser.y" { (yyval.literal) = jv_string("include"); } -#line 3903 "src/parser.c" +#line 3896 "src/parser.c" break; - case 143: /* Keyword: "if" */ + case 142: /* Keyword: "if" */ #line 923 "src/parser.y" { (yyval.literal) = jv_string("if"); } -#line 3911 "src/parser.c" +#line 3904 "src/parser.c" break; - case 144: /* Keyword: "then" */ + case 143: /* Keyword: "then" */ #line 926 "src/parser.y" { (yyval.literal) = jv_string("then"); } -#line 3919 "src/parser.c" +#line 3912 "src/parser.c" break; - case 145: /* Keyword: "else" */ + case 144: /* Keyword: "else" */ #line 929 "src/parser.y" { (yyval.literal) = jv_string("else"); } -#line 3927 "src/parser.c" +#line 3920 "src/parser.c" break; - case 146: /* Keyword: "elif" */ + case 145: /* Keyword: "elif" */ #line 932 "src/parser.y" { (yyval.literal) = jv_string("elif"); } -#line 3935 "src/parser.c" +#line 3928 "src/parser.c" break; - case 147: /* Keyword: "reduce" */ + case 146: /* Keyword: "reduce" */ #line 935 "src/parser.y" { (yyval.literal) = jv_string("reduce"); } -#line 3943 "src/parser.c" +#line 3936 "src/parser.c" break; - case 148: /* Keyword: "foreach" */ + case 147: /* Keyword: "foreach" */ #line 938 "src/parser.y" { (yyval.literal) = jv_string("foreach"); } -#line 3951 "src/parser.c" +#line 3944 "src/parser.c" break; - case 149: /* Keyword: "end" */ + case 148: /* Keyword: "end" */ #line 941 "src/parser.y" { (yyval.literal) = jv_string("end"); } -#line 3959 "src/parser.c" +#line 3952 "src/parser.c" break; - case 150: /* Keyword: "and" */ + case 149: /* Keyword: "and" */ #line 944 "src/parser.y" { (yyval.literal) = jv_string("and"); } -#line 3967 "src/parser.c" +#line 3960 "src/parser.c" break; - case 151: /* Keyword: "or" */ + case 150: /* Keyword: "or" */ #line 947 "src/parser.y" { (yyval.literal) = jv_string("or"); } -#line 3975 "src/parser.c" +#line 3968 "src/parser.c" break; - case 152: /* Keyword: "try" */ + case 151: /* Keyword: "try" */ #line 950 "src/parser.y" { (yyval.literal) = jv_string("try"); } -#line 3983 "src/parser.c" +#line 3976 "src/parser.c" break; - case 153: /* Keyword: "catch" */ + case 152: /* Keyword: "catch" */ #line 953 "src/parser.y" { (yyval.literal) = jv_string("catch"); } -#line 3991 "src/parser.c" +#line 3984 "src/parser.c" break; - case 154: /* Keyword: "label" */ + case 153: /* Keyword: "label" */ #line 956 "src/parser.y" { (yyval.literal) = jv_string("label"); } -#line 3999 "src/parser.c" +#line 3992 "src/parser.c" break; - case 155: /* Keyword: "break" */ + case 154: /* Keyword: "break" */ #line 959 "src/parser.y" { (yyval.literal) = jv_string("break"); } -#line 4007 "src/parser.c" +#line 4000 "src/parser.c" break; - case 156: /* MkDict: %empty */ + case 155: /* MkDict: %empty */ #line 964 "src/parser.y" { (yyval.blk)=gen_noop(); } -#line 4015 "src/parser.c" +#line 4008 "src/parser.c" break; - case 157: /* MkDict: MkDictPair */ + case 156: /* MkDict: MkDictPair */ #line 967 "src/parser.y" { (yyval.blk) = (yyvsp[0].blk); } -#line 4021 "src/parser.c" +#line 4014 "src/parser.c" break; - case 158: /* MkDict: MkDictPair ',' MkDict */ + case 157: /* MkDict: MkDictPair ',' MkDict */ #line 968 "src/parser.y" { (yyval.blk)=block_join((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 4027 "src/parser.c" +#line 4020 "src/parser.c" break; - case 159: /* MkDict: error ',' MkDict */ + case 158: /* MkDict: error ',' MkDict */ #line 969 "src/parser.y" { (yyval.blk) = (yyvsp[0].blk); } -#line 4033 "src/parser.c" +#line 4026 "src/parser.c" break; - case 160: /* MkDictPair: IDENT ':' ExpD */ + case 159: /* MkDictPair: IDENT ':' ExpD */ #line 972 "src/parser.y" { (yyval.blk) = gen_dictpair(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk)); } -#line 4041 "src/parser.c" +#line 4034 "src/parser.c" break; - case 161: /* MkDictPair: Keyword ':' ExpD */ + case 160: /* MkDictPair: Keyword ':' ExpD */ #line 975 "src/parser.y" { (yyval.blk) = gen_dictpair(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk)); } -#line 4049 "src/parser.c" +#line 4042 "src/parser.c" break; - case 162: /* MkDictPair: String ':' ExpD */ + case 161: /* MkDictPair: String ':' ExpD */ #line 978 "src/parser.y" { (yyval.blk) = gen_dictpair((yyvsp[-2].blk), (yyvsp[0].blk)); } -#line 4057 "src/parser.c" +#line 4050 "src/parser.c" break; - case 163: /* MkDictPair: String */ + case 162: /* MkDictPair: String */ #line 981 "src/parser.y" { (yyval.blk) = gen_dictpair((yyvsp[0].blk), BLOCK(gen_op_simple(POP), gen_op_simple(DUP2), gen_op_simple(DUP2), gen_op_simple(INDEX))); } -#line 4066 "src/parser.c" +#line 4059 "src/parser.c" break; - case 164: /* MkDictPair: BINDING ':' ExpD */ + case 163: /* MkDictPair: BINDING ':' ExpD */ #line 985 "src/parser.y" { (yyval.blk) = gen_dictpair(gen_location((yyloc), locations, gen_op_unbound(LOADV, jv_string_value((yyvsp[-2].literal)))), (yyvsp[0].blk)); jv_free((yyvsp[-2].literal)); } -#line 4076 "src/parser.c" +#line 4069 "src/parser.c" break; - case 165: /* MkDictPair: BINDING */ + case 164: /* MkDictPair: BINDING */ #line 990 "src/parser.y" { (yyval.blk) = gen_dictpair(gen_const((yyvsp[0].literal)), gen_location((yyloc), locations, gen_op_unbound(LOADV, jv_string_value((yyvsp[0].literal))))); } -#line 4085 "src/parser.c" +#line 4078 "src/parser.c" break; - case 166: /* MkDictPair: IDENT */ + case 165: /* MkDictPair: IDENT */ #line 994 "src/parser.y" { (yyval.blk) = gen_dictpair(gen_const(jv_copy((yyvsp[0].literal))), gen_index(gen_noop(), gen_const((yyvsp[0].literal)))); } -#line 4094 "src/parser.c" +#line 4087 "src/parser.c" break; - case 167: /* MkDictPair: "$__loc__" */ + case 166: /* MkDictPair: "$__loc__" */ #line 998 "src/parser.y" { (yyval.blk) = gen_dictpair(gen_const(jv_string("__loc__")), gen_loc_object(&(yyloc), locations)); } -#line 4103 "src/parser.c" +#line 4096 "src/parser.c" break; - case 168: /* MkDictPair: Keyword */ + case 167: /* MkDictPair: Keyword */ #line 1002 "src/parser.y" { (yyval.blk) = gen_dictpair(gen_const(jv_copy((yyvsp[0].literal))), gen_index(gen_noop(), gen_const((yyvsp[0].literal)))); } -#line 4112 "src/parser.c" +#line 4105 "src/parser.c" break; - case 169: /* MkDictPair: '(' Exp ')' ':' ExpD */ + case 168: /* MkDictPair: '(' Exp ')' ':' ExpD */ #line 1006 "src/parser.y" { jv msg = check_object_key((yyvsp[-3].blk)); @@ -4121,20 +4114,20 @@ YYLTYPE yylloc = yyloc_default; jv_free(msg); (yyval.blk) = gen_dictpair((yyvsp[-3].blk), (yyvsp[0].blk)); } -#line 4125 "src/parser.c" +#line 4118 "src/parser.c" break; - case 170: /* MkDictPair: error ':' ExpD */ + case 169: /* MkDictPair: error ':' ExpD */ #line 1014 "src/parser.y" { FAIL((yyloc), "May need parentheses around object key expression"); (yyval.blk) = (yyvsp[0].blk); } -#line 4134 "src/parser.c" +#line 4127 "src/parser.c" break; -#line 4138 "src/parser.c" +#line 4131 "src/parser.c" default: break; } diff --git a/src/parser.y b/src/parser.y index 94ede7c4ab..af722a7c6f 100644 --- a/src/parser.y +++ b/src/parser.y @@ -122,7 +122,7 @@ struct lexer_param; %type Param Params Arg Args %type Patterns RepPatterns Pattern ArrayPats ObjPats ObjPat %type Keyword -%type NoFormat +%type StringStart %{ #include "lexer.h" struct lexer_param { @@ -599,20 +599,20 @@ IDENT { } -NoFormat: -%empty { +StringStart: +FORMAT QQSTRING_START { + $$ = $1; +} | +QQSTRING_START { $$ = jv_string("text"); } + String: -QQSTRING_START NoFormat QQString QQSTRING_END { - $$ = $3; - jv_free($2); -} | -FORMAT QQSTRING_START { $$ = $1; } QQString QQSTRING_END { - $$ = $4; - jv_free($3); -} +StringStart QQString QQSTRING_END { + $$ = $2; + jv_free($1); +}; QQString: