261006.1 · a19efdd45dfe91329a7d266efb2ac0a64279a938
Parse `?//` as `?` and `//` outside destructuring patterns (#3593)
The lexer returned a single ALTERNATION token for `?//`, so any `?` followed by `//` was consumed by it, and `.name?//"unknown"` failed to parse even though they read as the optional operator followed by the alternative operator.
Drop the lexer rule and spell the destructuring alternative operator as `'?' "//"` instead. So `x ?// y` now parses as `x? // y`, while `. as [$a] ?// [$b] | ...` keeps its meaning. Note that `?` and `//` may now be separated by whitespaces inside a pattern.
reading declarations
Changes to src/parser.c. All files
@@ -180,14 +180,13 @@ struct lexer_param; SETDEFINEDOR = 293, /* "//=" */ LESSEQ = 294, /* "<=" */ GREATEREQ = 295, /* ">=" */- ALTERNATION = 296, /* "?//" */- QQSTRING_START = 297, /* QQSTRING_START */- QQSTRING_TEXT = 298, /* QQSTRING_TEXT */- QQSTRING_INTERP_START = 299, /* QQSTRING_INTERP_START */- QQSTRING_INTERP_END = 300, /* QQSTRING_INTERP_END */- QQSTRING_END = 301, /* QQSTRING_END */- FUNCDEF = 302, /* FUNCDEF */- NONOPT = 303 /* NONOPT */+ QQSTRING_START = 296, /* QQSTRING_START */+ QQSTRING_TEXT = 297, /* QQSTRING_TEXT */+ QQSTRING_INTERP_START = 298, /* QQSTRING_INTERP_START */+ QQSTRING_INTERP_END = 299, /* QQSTRING_INTERP_END */+ QQSTRING_END = 300, /* QQSTRING_END */+ FUNCDEF = 301, /* FUNCDEF */+ NONOPT = 302 /* NONOPT */ }; typedef enum yytokentype yytoken_kind_t; #endif@@ -234,14 +233,13 @@ struct lexer_param; #define SETDEFINEDOR 293 #define LESSEQ 294 #define GREATEREQ 295-#define ALTERNATION 296-#define QQSTRING_START 297-#define QQSTRING_TEXT 298-#define QQSTRING_INTERP_START 299-#define QQSTRING_INTERP_END 300-#define QQSTRING_END 301-#define FUNCDEF 302-#define NONOPT 303+#define QQSTRING_START 296+#define QQSTRING_TEXT 297+#define QQSTRING_INTERP_START 298+#define QQSTRING_INTERP_END 299+#define QQSTRING_END 300+#define FUNCDEF 301+#define NONOPT 302 /* Value type. */ #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED@@ -252,7 +250,7 @@ union YYSTYPE jv literal; block blk; -#line 256 "src/parser.c"+#line 254 "src/parser.c" }; typedef union YYSTYPE YYSTYPE;@@ -326,71 +324,70 @@ enum yysymbol_kind_t YYSYMBOL_SETDEFINEDOR = 38, /* "//=" */ YYSYMBOL_LESSEQ = 39, /* "<=" */ YYSYMBOL_GREATEREQ = 40, /* ">=" */- YYSYMBOL_ALTERNATION = 41, /* "?//" */- YYSYMBOL_QQSTRING_START = 42, /* QQSTRING_START */- YYSYMBOL_QQSTRING_TEXT = 43, /* QQSTRING_TEXT */- YYSYMBOL_QQSTRING_INTERP_START = 44, /* QQSTRING_INTERP_START */- YYSYMBOL_QQSTRING_INTERP_END = 45, /* QQSTRING_INTERP_END */- YYSYMBOL_QQSTRING_END = 46, /* QQSTRING_END */- YYSYMBOL_FUNCDEF = 47, /* FUNCDEF */- YYSYMBOL_48_ = 48, /* '|' */- YYSYMBOL_49_ = 49, /* ',' */- YYSYMBOL_50_ = 50, /* '=' */- YYSYMBOL_51_ = 51, /* '<' */- YYSYMBOL_52_ = 52, /* '>' */- YYSYMBOL_53_ = 53, /* '+' */- YYSYMBOL_54_ = 54, /* '-' */- YYSYMBOL_55_ = 55, /* '*' */- YYSYMBOL_56_ = 56, /* '/' */- YYSYMBOL_57_ = 57, /* '%' */- YYSYMBOL_NONOPT = 58, /* NONOPT */- YYSYMBOL_59_ = 59, /* '?' */- YYSYMBOL_60_ = 60, /* '.' */- YYSYMBOL_61_ = 61, /* '[' */- YYSYMBOL_62_ = 62, /* ';' */- YYSYMBOL_63_ = 63, /* ':' */- YYSYMBOL_64_ = 64, /* '(' */- YYSYMBOL_65_ = 65, /* ')' */- YYSYMBOL_66_ = 66, /* ']' */- YYSYMBOL_67_ = 67, /* '{' */- YYSYMBOL_68_ = 68, /* '}' */- YYSYMBOL_69_ = 69, /* '$' */- YYSYMBOL_YYACCEPT = 70, /* $accept */- YYSYMBOL_TopLevel = 71, /* TopLevel */- YYSYMBOL_Module = 72, /* Module */- YYSYMBOL_Imports = 73, /* Imports */- YYSYMBOL_FuncDefs = 74, /* FuncDefs */- YYSYMBOL_Query = 75, /* Query */- YYSYMBOL_Expr = 76, /* Expr */- YYSYMBOL_Import = 77, /* Import */- YYSYMBOL_ImportWhat = 78, /* ImportWhat */- YYSYMBOL_ImportFrom = 79, /* ImportFrom */- YYSYMBOL_FuncDef = 80, /* FuncDef */- YYSYMBOL_Params = 81, /* Params */- YYSYMBOL_Param = 82, /* Param */- YYSYMBOL_StringStart = 83, /* StringStart */- YYSYMBOL_String = 84, /* String */- YYSYMBOL_QQString = 85, /* QQString */- YYSYMBOL_ElseBody = 86, /* ElseBody */- 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_DictPairs = 97, /* DictPairs */- YYSYMBOL_DictPair = 98, /* DictPair */- YYSYMBOL_DictExpr = 99 /* DictExpr */+ YYSYMBOL_QQSTRING_START = 41, /* QQSTRING_START */+ YYSYMBOL_QQSTRING_TEXT = 42, /* QQSTRING_TEXT */+ YYSYMBOL_QQSTRING_INTERP_START = 43, /* QQSTRING_INTERP_START */+ YYSYMBOL_QQSTRING_INTERP_END = 44, /* QQSTRING_INTERP_END */+ YYSYMBOL_QQSTRING_END = 45, /* QQSTRING_END */+ YYSYMBOL_FUNCDEF = 46, /* FUNCDEF */+ YYSYMBOL_47_ = 47, /* '|' */+ YYSYMBOL_48_ = 48, /* ',' */+ YYSYMBOL_49_ = 49, /* '=' */+ YYSYMBOL_50_ = 50, /* '<' */+ YYSYMBOL_51_ = 51, /* '>' */+ YYSYMBOL_52_ = 52, /* '+' */+ YYSYMBOL_53_ = 53, /* '-' */+ YYSYMBOL_54_ = 54, /* '*' */+ YYSYMBOL_55_ = 55, /* '/' */+ YYSYMBOL_56_ = 56, /* '%' */+ YYSYMBOL_NONOPT = 57, /* NONOPT */+ YYSYMBOL_58_ = 58, /* '?' */+ YYSYMBOL_59_ = 59, /* '.' */+ YYSYMBOL_60_ = 60, /* '[' */+ YYSYMBOL_61_ = 61, /* ';' */+ YYSYMBOL_62_ = 62, /* ':' */+ YYSYMBOL_63_ = 63, /* '(' */+ YYSYMBOL_64_ = 64, /* ')' */+ YYSYMBOL_65_ = 65, /* ']' */+ YYSYMBOL_66_ = 66, /* '{' */+ YYSYMBOL_67_ = 67, /* '}' */+ YYSYMBOL_68_ = 68, /* '$' */+ YYSYMBOL_YYACCEPT = 69, /* $accept */+ YYSYMBOL_TopLevel = 70, /* TopLevel */+ YYSYMBOL_Module = 71, /* Module */+ YYSYMBOL_Imports = 72, /* Imports */+ YYSYMBOL_FuncDefs = 73, /* FuncDefs */+ YYSYMBOL_Query = 74, /* Query */+ YYSYMBOL_Expr = 75, /* Expr */+ YYSYMBOL_Import = 76, /* Import */+ YYSYMBOL_ImportWhat = 77, /* ImportWhat */+ YYSYMBOL_ImportFrom = 78, /* ImportFrom */+ YYSYMBOL_FuncDef = 79, /* FuncDef */+ YYSYMBOL_Params = 80, /* Params */+ YYSYMBOL_Param = 81, /* Param */+ YYSYMBOL_StringStart = 82, /* StringStart */+ YYSYMBOL_String = 83, /* String */+ YYSYMBOL_QQString = 84, /* QQString */+ YYSYMBOL_ElseBody = 85, /* ElseBody */+ YYSYMBOL_Term = 86, /* Term */+ YYSYMBOL_Args = 87, /* Args */+ YYSYMBOL_Arg = 88, /* Arg */+ YYSYMBOL_RepPatterns = 89, /* RepPatterns */+ YYSYMBOL_Patterns = 90, /* Patterns */+ YYSYMBOL_Pattern = 91, /* Pattern */+ YYSYMBOL_ArrayPats = 92, /* ArrayPats */+ YYSYMBOL_ObjPats = 93, /* ObjPats */+ YYSYMBOL_ObjPat = 94, /* ObjPat */+ YYSYMBOL_Keyword = 95, /* Keyword */+ YYSYMBOL_DictPairs = 96, /* DictPairs */+ YYSYMBOL_DictPair = 97, /* DictPair */+ YYSYMBOL_DictExpr = 98 /* DictExpr */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; /* Second part of user prologue. */-#line 127 "src/parser.y"+#line 126 "src/parser.y" #include "lexer.h" struct lexer_param {@@ -543,7 +540,7 @@ static block gen_loc_object(location *loc, struct locfile *locations) { } -#line 547 "src/parser.c"+#line 544 "src/parser.c" #ifdef short@@ -870,19 +867,19 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 31 /* YYLAST -- Last index in YYTABLE. */-#define YYLAST 1226+#define YYLAST 1165 /* YYNTOKENS -- Number of terminals. */-#define YYNTOKENS 70+#define YYNTOKENS 69 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 30 /* YYNRULES -- Number of rules. */ #define YYNRULES 168 /* YYNSTATES -- Number of states. */-#define YYNSTATES 312+#define YYNSTATES 313 /* YYMAXUTOK -- Last valid token kind. */-#define YYMAXUTOK 303+#define YYMAXUTOK 302 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM@@ -899,16 +896,16 @@ static const yytype_int8 yytranslate[] = 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,- 2, 2, 2, 2, 2, 2, 69, 57, 2, 2,- 64, 65, 55, 53, 49, 54, 60, 56, 2, 2,- 2, 2, 2, 2, 2, 2, 2, 2, 63, 62,- 51, 50, 52, 59, 2, 2, 2, 2, 2, 2,+ 2, 2, 2, 2, 2, 2, 68, 56, 2, 2,+ 63, 64, 54, 52, 48, 53, 59, 55, 2, 2,+ 2, 2, 2, 2, 2, 2, 2, 2, 62, 61,+ 50, 49, 51, 58, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,- 2, 61, 2, 66, 2, 2, 2, 2, 2, 2,+ 2, 60, 2, 65, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,- 2, 2, 2, 67, 48, 68, 2, 2, 2, 2,+ 2, 2, 2, 66, 47, 67, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,@@ -926,30 +923,30 @@ static const yytype_int8 yytranslate[] = 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,- 45, 46, 47, 58+ 45, 46, 57 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = {- 0, 282, 282, 285, 290, 293, 308, 311, 316, 319,- 325, 328, 331, 337, 340, 343, 349, 352, 355, 358,- 361, 364, 367, 370, 373, 376, 379, 382, 385, 388,- 391, 394, 397, 400, 403, 406, 409, 412, 415, 421,- 424, 441, 445, 449, 455, 466, 471, 477, 480, 485,- 489, 496, 499, 505, 512, 515, 518, 524, 527, 530,- 536, 539, 542, 550, 554, 557, 560, 563, 566, 569,- 572, 575, 578, 582, 588, 591, 594, 597, 600, 603,- 606, 609, 612, 615, 618, 621, 624, 627, 630, 633,- 636, 639, 642, 645, 648, 651, 654, 661, 664, 667,- 670, 673, 677, 680, 684, 702, 706, 710, 713, 725,- 730, 731, 732, 733, 736, 739, 744, 749, 752, 757,- 760, 765, 769, 772, 777, 780, 785, 788, 793, 796,- 799, 802, 805, 808, 816, 822, 825, 828, 831, 834,- 837, 840, 843, 846, 849, 852, 855, 858, 861, 864,- 867, 870, 873, 879, 882, 885, 890, 893, 896, 899,- 903, 908, 912, 916, 920, 924, 932, 938, 941+ 0, 281, 281, 284, 289, 292, 307, 310, 315, 318,+ 324, 327, 330, 336, 339, 342, 348, 351, 354, 357,+ 360, 363, 366, 369, 372, 375, 378, 381, 384, 387,+ 390, 393, 396, 399, 402, 405, 408, 411, 414, 420,+ 423, 440, 444, 448, 454, 465, 470, 476, 479, 484,+ 488, 495, 498, 504, 511, 514, 517, 523, 526, 529,+ 535, 538, 541, 549, 553, 556, 559, 562, 565, 568,+ 571, 574, 577, 581, 587, 590, 593, 596, 599, 602,+ 605, 608, 611, 614, 617, 620, 623, 626, 629, 632,+ 635, 638, 641, 644, 647, 650, 653, 660, 663, 666,+ 669, 672, 676, 679, 683, 701, 705, 709, 712, 724,+ 729, 730, 731, 732, 735, 738, 743, 748, 751, 756,+ 759, 764, 768, 771, 776, 779, 784, 787, 792, 795,+ 798, 801, 804, 807, 815, 821, 824, 827, 830, 833,+ 836, 839, 842, 845, 848, 851, 854, 857, 860, 863,+ 866, 869, 872, 878, 881, 884, 889, 892, 895, 898,+ 902, 907, 911, 915, 919, 923, 931, 937, 940 }; #endif @@ -972,16 +969,15 @@ static const char *const yytname[] = "\"elif\"", "\"reduce\"", "\"foreach\"", "\"end\"", "\"and\"", "\"or\"", "\"try\"", "\"catch\"", "\"label\"", "\"break\"", "\"$__loc__\"", "\"|=\"", "\"+=\"", "\"-=\"", "\"*=\"", "\"/=\"", "\"//=\"", "\"<=\"",- "\">=\"", "\"?//\"", "QQSTRING_START", "QQSTRING_TEXT",- "QQSTRING_INTERP_START", "QQSTRING_INTERP_END", "QQSTRING_END",- "FUNCDEF", "'|'", "','", "'='", "'<'", "'>'", "'+'", "'-'", "'*'", "'/'",- "'%'", "NONOPT", "'?'", "'.'", "'['", "';'", "':'", "'('", "')'", "']'",- "'{'", "'}'", "'$'", "$accept", "TopLevel", "Module", "Imports",- "FuncDefs", "Query", "Expr", "Import", "ImportWhat", "ImportFrom",- "FuncDef", "Params", "Param", "StringStart", "String", "QQString",- "ElseBody", "Term", "Args", "Arg", "RepPatterns", "Patterns", "Pattern",- "ArrayPats", "ObjPats", "ObjPat", "Keyword", "DictPairs", "DictPair",- "DictExpr", YY_NULLPTR+ "\">=\"", "QQSTRING_START", "QQSTRING_TEXT", "QQSTRING_INTERP_START",+ "QQSTRING_INTERP_END", "QQSTRING_END", "FUNCDEF", "'|'", "','", "'='",+ "'<'", "'>'", "'+'", "'-'", "'*'", "'/'", "'%'", "NONOPT", "'?'", "'.'",+ "'['", "';'", "':'", "'('", "')'", "']'", "'{'", "'}'", "'$'", "$accept",+ "TopLevel", "Module", "Imports", "FuncDefs", "Query", "Expr", "Import",+ "ImportWhat", "ImportFrom", "FuncDef", "Params", "Param", "StringStart",+ "String", "QQString", "ElseBody", "Term", "Args", "Arg", "RepPatterns",+ "Patterns", "Pattern", "ArrayPats", "ObjPats", "ObjPat", "Keyword",+ "DictPairs", "DictPair", "DictExpr", YY_NULLPTR }; static const char *@@ -1005,38 +1001,38 @@ yysymbol_name (yysymbol_kind_t yysymbol) STATE-NUM. */ static const yytype_int16 yypact[] = {- 31, 890, 44, 35, 11, 9, -146, -146, 38, -146,- 85, 890, 956, 956, 956, 112, 26, -146, -146, 956,- 279, 345, 412, 608, 59, 25, 1040, 890, -146, -146,- -2, -146, 4, 4, 890, 35, 692, 890, -146, -146,- 20, -18, 1073, 1105, 131, 86, -146, -146, -2, -146,- 164, 38, 108, 107, -146, 22, 104, 0, -34, 121,- 124, -146, -146, -146, -146, -146, -146, -146, -146, -146,+ 43, 882, 63, -6, 82, 84, -146, -146, 120, -146,+ 147, 882, 947, 947, 947, 188, 72, -146, -146, 947,+ 280, 345, 411, 604, 137, -30, 985, 882, -146, -146,+ 2, -146, 31, 31, 882, -6, 687, 882, -146, -146,+ 12, 105, 1016, 1047, 177, 165, -146, -146, 2, -146,+ 212, 120, 175, 158, -146, 23, 172, 132, 81, 180,+ 190, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146, -146,- 890, 135, 137, 134, 126, 141, 890, 890, -146, 956,- 956, 956, 956, -5, 956, 956, 956, 956, 956, 956,- 956, 956, 956, 956, 956, 956, 956, 956, 956, 956,- 956, 956, 84, 177, 147, -146, 3, 173, 199, -146,- -146, -146, 84, 890, -146, -146, 114, 84, 77, -146,- 890, 13, 479, -5, -5, 546, 890, -146, -146, -146,- -146, -146, -146, 956, -146, 956, 956, 78, 956, 956,- -146, 663, 220, 84, -146, 1169, 505, 505, 1137, -146,- -5, 1018, 187, 166, 188, 606, 205, 1169, 1169, 1169,- 1169, 1169, 1169, 505, 505, 1169, 505, 505, 208, 208,- -146, -146, -146, -146, 890, -146, -146, 758, 176, 175,- 890, 184, 6, 57, -146, -146, 890, -146, 123, -146,- -146, 83, -146, -146, 18, 185, 189, -146, -146, 84,- 1137, 200, 200, 200, 203, 200, 200, 206, -146, -146,- -146, -42, 207, 209, 210, 890, 212, -45, -146, 213,- -5, 890, 33, 193, 28, -146, -146, 71, -146, 824,- 218, -146, -146, -146, -146, 13, 215, 890, 890, -146,- -146, 890, 890, 956, 956, -5, -146, -5, -5, -5,- 103, -5, 1018, -146, -5, 227, 84, -146, -146, 222,- 223, 226, 74, -146, -146, 890, -7, 2, 160, 163,- 200, 200, -146, -146, -146, -146, 225, -146, -146, -146,- -146, -146, -146, 235, 170, -146, 890, 890, 890, -5,- -146, -146, 18, 105, 76, -146, -146, -146, 890, -146,- 142, -146+ 882, 194, 195, 174, 218, 204, 882, 882, -146, 947,+ 947, 947, 947, -2, 947, 947, 947, 947, 947, 947,+ 947, 947, 947, 947, 947, 947, 947, 947, 947, 947,+ 947, 947, 71, 228, 220, -146, 79, 169, 262, -146,+ -146, -146, 71, 882, -146, -146, 21, 71, 20, -146,+ 882, 181, 477, -2, -2, 543, 882, -146, -146, -146,+ -146, -146, -146, 947, -146, 947, 947, 134, 947, 947,+ -146, 658, 273, 71, -146, 1109, 209, 209, 1078, -146,+ -2, 26, 225, 239, 229, 602, 907, 1109, 1109, 1109,+ 1109, 1109, 1109, 209, 209, 1109, 209, 209, 162, 162,+ -146, -146, -146, -146, 882, -146, -146, 752, 231, 230,+ 882, 241, 18, 271, -146, -146, 882, -146, 110, -146,+ -146, 101, -146, -146, 116, 240, 247, -146, -146, 71,+ 1078, 257, 257, 257, 249, 257, 257, 250, -146, -146,+ -146, -46, 260, 261, 263, 882, 264, -45, -146, 275,+ 330, 882, 167, 290, 29, -146, -146, 75, -146, 817,+ 297, -146, -146, -146, -146, 181, 294, 882, 882, -146,+ -146, 882, 882, 947, 947, -2, -146, -2, -2, -2,+ 155, -2, 26, -146, -2, -2, 71, -146, -146, 299,+ 300, 301, 107, -146, -146, 882, -24, 112, 192, 197,+ 257, 257, -146, -146, -146, -146, 303, -146, -146, -146,+ 304, -146, -146, -146, 305, 221, -146, 882, 882, 882,+ -2, -146, -146, 116, 161, 143, -146, -146, -146, 882,+ -146, 179, -146 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.@@ -1070,20 +1066,20 @@ static const yytype_uint8 yydefact[] = 0, 0, 0, 81, 0, 66, 112, 0, 78, 0, 75, 42, 41, 115, 45, 0, 0, 0, 0, 59, 100, 0, 0, 0, 0, 0, 122, 0, 0, 0,- 0, 0, 0, 123, 0, 119, 11, 56, 80, 77,+ 0, 0, 0, 123, 0, 0, 11, 56, 80, 77, 87, 86, 0, 74, 48, 0, 0, 0, 0, 0, 167, 165, 125, 134, 130, 129, 0, 132, 127, 131,- 76, 84, 83, 85, 0, 58, 0, 0, 0, 0,- 82, 46, 0, 0, 0, 133, 57, 97, 0, 99,- 0, 98+ 119, 76, 84, 83, 85, 0, 58, 0, 0, 0,+ 0, 82, 46, 0, 0, 0, 133, 57, 97, 0,+ 99, 0, 98 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = {- -146, -146, -146, 236, 179, -1, 1, -146, -146, 253,- -8, -146, 53, -146, 5, -146, 7, 284, -146, 115,- -146, 60, -100, -146, -146, 48, -145, 169, -146, -140+ -146, -146, -146, 326, 243, -1, 1, -146, -146, 334,+ -8, -146, 125, -146, 5, -146, 68, 353, -146, 178,+ -146, 34, -131, -146, -146, 117, -145, 227, -146, -140 }; /* YYDEFGOTO[NTERM-NUM]. */@@ -1099,316 +1095,304 @@ static const yytype_uint8 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = {- 25, 159, 132, 114, 262, 212, 213, 255, 215, 216,- 41, 51, 51, 42, 43, 44, 229, 199, 295, 200,- 55, 57, 296, 263, 256, 52, 123, 46, 81, 143,- 86, 87, 47, 122, 144, 126, 127, 119, 119, 247,- 248, 86, 87, 249, 31, 18, 18, 1, 86, 87,- 86, 87, 32, 33, 86, 87, 160, 115, 116, 117,- 220, 241, 161, 242, 187, 142, 86, 87, 38, 239,- 86, 87, 240, 86, 87, 37, 86, 87, 267, 147,- 39, 86, 87, 130, 131, 153, 154, 88, 140, 40,+ 25, 296, 255, 262, 159, 212, 213, 114, 215, 216,+ 41, 32, 33, 42, 43, 44, 229, 86, 87, 256,+ 55, 57, 263, 86, 87, 52, 123, 222, 81, 220,+ 223, 88, 224, 122, 51, 126, 127, 119, 119, 51,+ 61, 62, 63, 64, 65, 66, 67, 68, 69, 70,+ 71, 72, 73, 74, 75, 76, 77, 78, 160, 1,+ 115, 116, 117, 31, 161, 86, 87, 18, 86, 87,+ 86, 87, 18, 46, 130, 131, 86, 87, 47, 147,+ 239, 196, 195, 240, 197, 153, 154, 51, 140, 225, 155, 156, 157, 158, 269, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179,- 180, 181, 182, 280, 281, 123, 192, 229, 45, 86,- 87, 188, 86, 87, 86, 87, 86, 87, 85, 198,- 265, 204, 86, 87, 136, 209, 208, 270, 308, 196,- 293, 309, 197, 214, 210, 245, 210, 210, 246, 210,- 210, 86, 87, 86, 87, 282, 81, 283, 284, 285,- 135, 287, 86, 87, 289, 137, 226, 138, 286, 141,- 307, 86, 87, 139, 189, 151, 195, 4, 5, 6,- 7, 8, 9, 232, 145, 244, 234, 146, 10, 237,- 86, 87, 11, 205, 206, 127, 12, 13, 148, 305,- 149, 14, 150, 15, 16, 17, 186, 311, 86, 87,- 152, 86, 87, 193, 231, 18, 90, 91, 86, 87,- 183, 184, 297, 185, 260, 298, 219, 19, 230, -118,- 266, 94, 301, 20, 21, 235, 190, 22, 272, 191,- 23, 236, 24, 238, 102, 103, 276, 277, 253, 251,- 278, 279, 268, 252, 210, 210, 105, 106, 107, 108,- 109, 110, 111, 109, 110, 111, 254, 226, -117, 143,- 257, 124, 258, 259, 294, 261, 264, 273, 275, -60,- 49, 290, 291, 50, -60, 292, 120, 51, 299, -60,- -60, -60, -60, -60, 300, 302, 303, 304, 274, -60,- -60, -60, 194, 48, -60, -60, -60, 310, -60, 306,- 288, 243, -60, -60, -60, -60, -60, -60, -60, -60,- 218, 18, 0, 0, -60, 0, 0, -60, -60, -60,- -60, -60, -60, -60, -60, -60, -60, 0, -60, -60,- -60, -60, -60, 0, -60, -60, 53, -60, 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, 20, 21, 0, 0, 22,- 0, 54, 23, 56, 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, 20, 21, 0, 0, 22, 0, 0, 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, 0, 0, -154, -154, 0, 0,- 0, 18, 0, 0, 0, 0, 0, 0, 0, 0,- 0, 0, 0, 19, 0, 0, 0, 0, 0, 20,- 21, 0, 0, 22, -154, -154, 23, 207, 24, 0,- 4, 5, 6, 7, 8, 9, -154, -154, 107, 108,- 109, 110, 111, 0, 0, 11, 0, 0, 0, 12,- 13, 0, 0, 0, 14, 0, 0, 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, 20, 21, 0, 58,- 22, 0, 59, 23, 60, 24, 51, 90, 91, 0,- 0, 0, 61, 62, 63, 64, 65, 66, 67, 68,- 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,- 79, 0, 0, 0, 0, 102, 103, 0, 0, 0,- 18, 0, 0, 0, 0, 0, 0, 105, 106, 107,- 108, 109, 110, 111, 217, 0, 0, 59, 0, 60,- 0, 51, 80, 0, 0, 0, -153, 61, 62, 63,- 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,- 74, 75, 76, 77, 78, 79, 4, 5, 6, 7,- 8, 9, 0, 0, 0, 18, 0, 10, 0, 0,- 0, 11, 0, 0, 0, 12, 13, 0, 0, 0,- 14, 0, 15, 16, 17, 0, 0, 80, 0, 0,- 0, -153, 0, 0, 18, 0, 0, 0, 0, 0,- 0, 0, 0, 0, 0, 0, 19, 0, 0, 0,- 0, 0, 20, 21, 125, 0, 22, 0, 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, 20, 21,- 0, 0, 22, 0, 233, 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,+ 180, 181, 182, 280, 281, 123, 192, 229, 86, 87,+ 18, 188, 86, 87, 282, 132, 283, 284, 285, 198,+ 287, 204, 297, 289, 290, 209, 208, 247, 248, 187,+ 270, 249, 38, 143, 210, 37, 210, 210, 144, 210,+ 210, 40, 86, 87, 86, 87, 81, 86, 87, 86,+ 87, 39, 245, 86, 87, 246, 226, 205, 206, 306,+ 189, 244, 294, 4, 5, 6, 7, 8, 9, 86,+ 87, 86, 87, 232, 10, 199, 234, 200, 11, 237,+ 86, 87, 12, 13, 45, 127, 142, 14, 214, 15,+ 16, 17, 86, 87, 309, 85, 135, 310, 86, 87,+ 18, 267, 136, 137, 86, 87, 109, 110, 111, 286,+ -154, -154, 19, 139, 260, 308, 86, 87, 20, 21,+ 266, 190, 22, 138, 191, 23, 141, 24, 272, 86,+ 87, 150, 145, 312, 86, 87, 276, 277, -154, -154,+ 278, 279, 146, 298, 210, 210, 148, 149, 299, -154,+ -154, 107, 108, 109, 110, 111, 151, 226, 86, 87,+ 183, 184, 152, 185, 295, 241, 193, 242, 186, 219,+ -60, 49, 302, 230, 50, -60, 231, -118, 51, 235,+ -60, -60, -60, -60, -60, 236, 303, 304, 305, 238,+ -60, -60, -60, 251, 253, -60, -60, -60, 311, -60,+ 252, 254, 143, -60, -60, -60, -60, -60, -60, -60,+ -60, 18, 257, 258, -60, 259, 261, -60, -60, -60,+ -60, -60, -60, -60, -60, -60, -60, 264, -60, -60,+ -60, -60, -60, 265, -60, -60, 53, -60, 268, 4,+ 5, 6, 7, 8, 9, 273, 275, 291, 292, 293,+ 10, 124, -117, 301, 11, 300, 194, 120, 12, 13,+ 274, 307, 48, 14, 243, 15, 16, 17, 218, 288, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0, 20, 21, 0, 0, 22, 0,- 271, 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,+ 54, 23, 56, 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, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 0, 0, 0, 0, 0,- 20, 21, 0, 0, 22, 0, 0, 23, 0, 24,- 4, 5, 6, 7, 8, 9, 0, 0, 0, 0,- 0, 0, 0, 0, 0, 11, 0, 0, 0, 12,- 13, 0, 0, 0, 14, 0, 0, 16, 17, 0,+ 20, 21, 0, 0, 22, 0, 0, 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, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,- 19, 0, 0, 0, 0, 0, 20, 21, 0, 222,- 22, 0, 223, 23, 224, 24, 51, 0, 0, 0,- 0, 0, 61, 62, 63, 64, 65, 66, 67, 68,+ 19, 0, 0, 0, 0, 0, 20, 21, 0, 0,+ 22, 0, 0, 23, 207, 24, 0, 4, 5, 6,+ 7, 8, 9, 0, 0, 0, 0, 0, 0, 0,+ 0, 0, 11, 0, 0, 0, 12, 13, 0, 0,+ 0, 14, 0, 0, 16, 17, 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, 20, 21, 0, 58, 22, 0, 59, 23,+ 60, 24, 51, 90, 91, 0, 0, 0, 61, 62,+ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72,+ 73, 74, 75, 76, 77, 78, 79, 0, 0, 0,+ 0, 102, 103, 0, 0, 18, 0, 0, 0, 0,+ 0, 0, 105, 106, 107, 108, 109, 110, 111, 217,+ 0, 0, 59, 0, 60, 0, 51, 80, 0, 0,+ 0, -153, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78,- 89, 90, 91, 92, 93, 0, 0, 0, 0, 0,- 18, 0, 0, 0, 0, 0, 94, 95, 0, 0,- 0, 0, 0, 96, 97, 98, 99, 100, 101, 102,- 103, 0, 225, 89, 90, 91, 92, 133, 0, 0,- 104, 105, 106, 107, 108, 109, 110, 111, 0, 94,- 95, 0, 0, 0, 0, 0, 96, 97, 98, 99,- 100, 101, 102, 103, 0, 89, 90, 91, 92, 134,- 0, 0, 0, 104, 105, 106, 107, 108, 109, 110,- 111, 94, 95, 0, 0, 0, 0, 0, 96, 97,- 98, 99, 100, 101, 102, 103, 0, 89, 90, 91,- 92, 0, 0, 0, 0, 104, 105, 106, 107, 108,+ 79, 4, 5, 6, 7, 8, 9, 0, 0, 18,+ 0, 0, 10, 0, 0, 0, 11, 0, 0, 0,+ 12, 13, 0, 0, 0, 14, 0, 15, 16, 17,+ 0, 80, 0, 0, 0, -153, 0, 0, 18, 0,+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,+ 19, 0, 0, 0, 0, 0, 20, 21, 125, 0,+ 22, 0, 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, 18, 0, 0, 0, 0, 0, 0,+ 0, 0, 0, 0, 0, 19, 0, 0, 0, 0,+ 0, 20, 21, 0, 0, 22, 0, 233, 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, 18, 0,+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,+ 19, 0, 0, 0, 0, 0, 20, 21, 0, 0,+ 22, 0, 271, 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, 90, 91,+ 0, 0, 0, 18, 0, 0, 0, 0, 0, 0,+ 0, 0, 0, 94, 0, 19, 0, 0, 0, 0,+ 0, 20, 21, 0, 0, 22, 102, 103, 23, 0,+ 24, 4, 5, 6, 7, 8, 9, 105, 106, 107,+ 108, 109, 110, 111, 0, 0, 11, 0, 0, 0,+ 12, 13, 0, 0, 0, 14, 0, 0, 16, 17,+ 0, 0, 0, 0, 0, 0, 0, 0, 18, 0,+ 0, 0, 0, 0, 0, 89, 90, 91, 92, 93,+ 19, 0, 0, 0, 0, 0, 20, 21, 0, 0,+ 22, 94, 95, 23, 0, 24, 0, 0, 96, 97,+ 98, 99, 100, 101, 102, 103, 89, 90, 91, 92,+ 133, 0, 0, 0, 104, 105, 106, 107, 108, 109,+ 110, 111, 94, 95, 0, 0, 0, 0, 0, 96,+ 97, 98, 99, 100, 101, 102, 103, 89, 90, 91,+ 92, 134, 0, 0, 0, 104, 105, 106, 107, 108, 109, 110, 111, 94, 95, 0, 0, 0, 0, 0,- 96, 97, 98, 99, 100, 101, 102, 103, 0, -154,+ 96, 97, 98, 99, 100, 101, 102, 103, 89, 90,+ 91, 92, 0, 0, 0, 0, 104, 105, 106, 107,+ 108, 109, 110, 111, 94, 95, 0, 0, 0, 0,+ 0, 96, 97, 98, 99, 100, 101, 102, 103, -154, 90, 91, 0, 0, 0, 0, 0, 104, 105, 106, 107, 108, 109, 110, 111, 94, 95, 0, 0, 0, 0, 0, -154, -154, -154, -154, -154, -154, 102, 103,- 0, 0, 0, 0, 0, 0, 0, 0, 0, -154,- 105, 106, 107, 108, 109, 110, 111+ 0, 0, 0, 0, 0, 0, 0, 0, -154, 105,+ 106, 107, 108, 109, 110, 111 }; static const yytype_int16 yycheck[] = {- 1, 6, 20, 5, 49, 145, 146, 49, 148, 149,- 11, 8, 8, 12, 13, 14, 161, 4, 25, 6,- 21, 22, 20, 68, 66, 20, 34, 1, 23, 63,- 48, 49, 6, 34, 68, 36, 37, 32, 33, 21,- 22, 48, 49, 25, 0, 42, 42, 16, 48, 49,- 48, 49, 17, 18, 48, 49, 61, 59, 60, 61,- 160, 4, 67, 6, 61, 65, 48, 49, 59, 63,- 48, 49, 66, 48, 49, 64, 48, 49, 45, 80,- 42, 48, 49, 63, 64, 86, 87, 62, 66, 4,- 89, 90, 91, 92, 66, 94, 95, 96, 97, 98,+ 1, 25, 48, 48, 6, 145, 146, 5, 148, 149,+ 11, 17, 18, 12, 13, 14, 161, 47, 48, 65,+ 21, 22, 67, 47, 48, 20, 34, 1, 23, 160,+ 4, 61, 6, 34, 8, 36, 37, 32, 33, 8,+ 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,+ 24, 25, 26, 27, 28, 29, 30, 31, 60, 16,+ 58, 59, 60, 0, 66, 47, 48, 41, 47, 48,+ 47, 48, 41, 1, 62, 63, 47, 48, 6, 80,+ 62, 61, 61, 65, 64, 86, 87, 8, 65, 63,+ 89, 90, 91, 92, 65, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,- 109, 110, 111, 253, 254, 123, 117, 262, 6, 48,- 49, 116, 48, 49, 48, 49, 48, 49, 69, 130,- 230, 132, 48, 49, 48, 136, 135, 66, 62, 62,- 66, 65, 65, 65, 143, 62, 145, 146, 65, 148,- 149, 48, 49, 48, 49, 255, 151, 257, 258, 259,- 29, 261, 48, 49, 264, 1, 161, 59, 65, 65,- 65, 48, 49, 66, 1, 49, 62, 4, 5, 6,- 7, 8, 9, 184, 63, 62, 187, 63, 15, 190,- 48, 49, 19, 133, 134, 196, 23, 24, 63, 299,- 63, 28, 68, 30, 31, 32, 59, 65, 48, 49,- 69, 48, 49, 14, 48, 42, 11, 12, 48, 49,- 43, 44, 62, 46, 225, 62, 6, 54, 41, 41,- 231, 26, 62, 60, 61, 59, 63, 64, 239, 66,- 67, 66, 69, 59, 39, 40, 247, 248, 48, 64,- 251, 252, 59, 64, 253, 254, 51, 52, 53, 54,- 55, 56, 57, 55, 56, 57, 63, 262, 41, 63,- 63, 35, 63, 63, 275, 63, 63, 59, 63, 0,- 1, 59, 59, 4, 5, 59, 33, 8, 63, 10,- 11, 12, 13, 14, 59, 296, 297, 298, 245, 20,- 21, 22, 123, 19, 25, 26, 27, 308, 29, 302,- 262, 196, 33, 34, 35, 36, 37, 38, 39, 40,- 151, 42, -1, -1, 45, -1, -1, 48, 49, 50,- 51, 52, 53, 54, 55, 56, 57, -1, 59, 60,- 61, 62, 63, -1, 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, 60, 61, -1, -1, 64,- -1, 66, 67, 1, 69, -1, 4, 5, 6, 7,+ 109, 110, 111, 253, 254, 123, 117, 262, 47, 48,+ 41, 116, 47, 48, 255, 20, 257, 258, 259, 130,+ 261, 132, 20, 264, 265, 136, 135, 21, 22, 60,+ 65, 25, 58, 62, 143, 63, 145, 146, 67, 148,+ 149, 4, 47, 48, 47, 48, 151, 47, 48, 47,+ 48, 41, 61, 47, 48, 64, 161, 133, 134, 300,+ 1, 61, 65, 4, 5, 6, 7, 8, 9, 47,+ 48, 47, 48, 184, 15, 4, 187, 6, 19, 190,+ 47, 48, 23, 24, 6, 196, 64, 28, 64, 30,+ 31, 32, 47, 48, 61, 68, 29, 64, 47, 48,+ 41, 44, 47, 1, 47, 48, 54, 55, 56, 64,+ 11, 12, 53, 65, 225, 64, 47, 48, 59, 60,+ 231, 62, 63, 58, 65, 66, 64, 68, 239, 47,+ 48, 67, 62, 64, 47, 48, 247, 248, 39, 40,+ 251, 252, 62, 61, 253, 254, 62, 62, 61, 50,+ 51, 52, 53, 54, 55, 56, 48, 262, 47, 48,+ 42, 43, 68, 45, 275, 4, 14, 6, 58, 6,+ 0, 1, 61, 58, 4, 5, 47, 58, 8, 58,+ 10, 11, 12, 13, 14, 65, 297, 298, 299, 58,+ 20, 21, 22, 63, 47, 25, 26, 27, 309, 29,+ 63, 62, 62, 33, 34, 35, 36, 37, 38, 39,+ 40, 41, 62, 62, 44, 62, 62, 47, 48, 49,+ 50, 51, 52, 53, 54, 55, 56, 62, 58, 59,+ 60, 61, 62, 13, 64, 65, 1, 67, 58, 4,+ 5, 6, 7, 8, 9, 58, 62, 58, 58, 58,+ 15, 35, 58, 58, 19, 62, 123, 33, 23, 24,+ 245, 303, 19, 28, 196, 30, 31, 32, 151, 262,+ -1, -1, -1, -1, -1, -1, 41, -1, -1, -1,+ -1, -1, -1, -1, -1, -1, -1, -1, 53, -1,+ -1, -1, -1, -1, 59, 60, -1, -1, 63, -1,+ 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, 41, -1, -1, -1, -1, -1, -1, -1,+ -1, -1, -1, -1, 53, -1, -1, -1, -1, -1,+ 59, 60, -1, -1, 63, -1, -1, 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, 41, -1,+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,+ 53, -1, -1, -1, -1, -1, 59, 60, -1, -1,+ 63, -1, -1, 66, 1, 68, -1, 4, 5, 6,+ 7, 8, 9, -1, -1, -1, -1, -1, -1, -1,+ -1, -1, 19, -1, -1, -1, 23, 24, -1, -1,+ -1, 28, -1, -1, 31, 32, -1, -1, -1, -1,+ -1, -1, -1, -1, 41, -1, -1, -1, -1, -1,+ -1, -1, -1, -1, -1, -1, 53, -1, -1, -1,+ -1, -1, 59, 60, -1, 1, 63, -1, 4, 66,+ 6, 68, 8, 11, 12, -1, -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, 39, 40, -1, -1, 41, -1, -1, -1, -1,+ -1, -1, 50, 51, 52, 53, 54, 55, 56, 1,+ -1, -1, 4, -1, 6, -1, 8, 63, -1, -1,+ -1, 67, 14, 15, 16, 17, 18, 19, 20, 21,+ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,+ 32, 4, 5, 6, 7, 8, 9, -1, -1, 41,+ -1, -1, 15, -1, -1, -1, 19, -1, -1, -1,+ 23, 24, -1, -1, -1, 28, -1, 30, 31, 32,+ -1, 63, -1, -1, -1, 67, -1, -1, 41, -1,+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,+ 53, -1, -1, -1, -1, -1, 59, 60, 61, -1,+ 63, -1, -1, 66, -1, 68, 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, 60, 61, -1, -1, 64, -1, -1, 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, 11, 12, -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, 39, 40, 67, 1, 69, -1,- 4, 5, 6, 7, 8, 9, 51, 52, 53, 54,- 55, 56, 57, -1, -1, 19, -1, -1, -1, 23,- 24, -1, -1, -1, 28, -1, -1, 31, 32, -1,- -1, -1, -1, -1, -1, -1, -1, -1, 42, -1,+ -1, -1, -1, 41, -1, -1, -1, -1, -1, -1,+ -1, -1, -1, -1, -1, 53, -1, -1, -1, -1,+ -1, 59, 60, -1, -1, 63, -1, 65, 66, -1,+ 68, 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, 41, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,- 54, -1, -1, -1, -1, -1, 60, 61, -1, 1,- 64, -1, 4, 67, 6, 69, 8, 11, 12, -1,- -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, 39, 40, -1, -1, -1,- 42, -1, -1, -1, -1, -1, -1, 51, 52, 53,- 54, 55, 56, 57, 1, -1, -1, 4, -1, 6,- -1, 8, 64, -1, -1, -1, 68, 14, 15, 16,- 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,- 27, 28, 29, 30, 31, 32, 4, 5, 6, 7,- 8, 9, -1, -1, -1, 42, -1, 15, -1, -1,+ 53, -1, -1, -1, -1, -1, 59, 60, -1, -1,+ 63, -1, 65, 66, -1, 68, 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, 64, -1, -1,- -1, 68, -1, -1, 42, -1, -1, -1, -1, -1,- -1, -1, -1, -1, -1, -1, 54, -1, -1, -1,- -1, -1, 60, 61, 62, -1, 64, -1, -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, 60, 61,- -1, -1, 64, -1, 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, 60, 61, -1, -1, 64, -1,- 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,- 60, 61, -1, -1, 64, -1, -1, 67, -1, 69,- 4, 5, 6, 7, 8, 9, -1, -1, -1, -1,- -1, -1, -1, -1, -1, 19, -1, -1, -1, 23,- 24, -1, -1, -1, 28, -1, -1, 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, 60, 61, -1, 1,- 64, -1, 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,- 10, 11, 12, 13, 14, -1, -1, -1, -1, -1,- 42, -1, -1, -1, -1, -1, 26, 27, -1, -1,- -1, -1, -1, 33, 34, 35, 36, 37, 38, 39,- 40, -1, 64, 10, 11, 12, 13, 14, -1, -1,- 50, 51, 52, 53, 54, 55, 56, 57, -1, 26,- 27, -1, -1, -1, -1, -1, 33, 34, 35, 36,- 37, 38, 39, 40, -1, 10, 11, 12, 13, 14,- -1, -1, -1, 50, 51, 52, 53, 54, 55, 56,- 57, 26, 27, -1, -1, -1, -1, -1, 33, 34,- 35, 36, 37, 38, 39, 40, -1, 10, 11, 12,- 13, -1, -1, -1, -1, 50, 51, 52, 53, 54,- 55, 56, 57, 26, 27, -1, -1, -1, -1, -1,- 33, 34, 35, 36, 37, 38, 39, 40, -1, 10,- 11, 12, -1, -1, -1, -1, -1, 50, 51, 52,- 53, 54, 55, 56, 57, 26, 27, -1, -1, -1,+ 28, -1, 30, 31, 32, -1, -1, -1, 11, 12,+ -1, -1, -1, 41, -1, -1, -1, -1, -1, -1,+ -1, -1, -1, 26, -1, 53, -1, -1, -1, -1,+ -1, 59, 60, -1, -1, 63, 39, 40, 66, -1,+ 68, 4, 5, 6, 7, 8, 9, 50, 51, 52,+ 53, 54, 55, 56, -1, -1, 19, -1, -1, -1,+ 23, 24, -1, -1, -1, 28, -1, -1, 31, 32,+ -1, -1, -1, -1, -1, -1, -1, -1, 41, -1,+ -1, -1, -1, -1, -1, 10, 11, 12, 13, 14,+ 53, -1, -1, -1, -1, -1, 59, 60, -1, -1,+ 63, 26, 27, 66, -1, 68, -1, -1, 33, 34,+ 35, 36, 37, 38, 39, 40, 10, 11, 12, 13,+ 14, -1, -1, -1, 49, 50, 51, 52, 53, 54,+ 55, 56, 26, 27, -1, -1, -1, -1, -1, 33,+ 34, 35, 36, 37, 38, 39, 40, 10, 11, 12,+ 13, 14, -1, -1, -1, 49, 50, 51, 52, 53,+ 54, 55, 56, 26, 27, -1, -1, -1, -1, -1,+ 33, 34, 35, 36, 37, 38, 39, 40, 10, 11,+ 12, 13, -1, -1, -1, -1, 49, 50, 51, 52,+ 53, 54, 55, 56, 26, 27, -1, -1, -1, -1,+ -1, 33, 34, 35, 36, 37, 38, 39, 40, 10,+ 11, 12, -1, -1, -1, -1, -1, 49, 50, 51,+ 52, 53, 54, 55, 56, 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, -1, -1, -1, -1, -1, -1, -1, 49, 50,+ 51, 52, 53, 54, 55, 56 }; /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of state STATE-NUM. */ 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,- 60, 61, 64, 67, 69, 75, 76, 80, 83, 84,- 87, 0, 17, 18, 73, 77, 78, 64, 59, 42,- 4, 75, 76, 76, 76, 6, 1, 6, 87, 1,- 4, 8, 84, 1, 66, 75, 1, 75, 1, 4,+ 0, 16, 70, 71, 4, 5, 6, 7, 8, 9,+ 15, 19, 23, 24, 28, 30, 31, 32, 41, 53,+ 59, 60, 63, 66, 68, 74, 75, 79, 82, 83,+ 86, 0, 17, 18, 72, 76, 77, 63, 58, 41,+ 4, 74, 75, 75, 75, 6, 1, 6, 86, 1,+ 4, 8, 83, 1, 65, 74, 1, 74, 1, 4, 6, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,- 64, 84, 96, 97, 98, 69, 48, 49, 62, 10,+ 63, 83, 95, 96, 97, 68, 47, 48, 61, 10, 11, 12, 13, 14, 26, 27, 33, 34, 35, 36,- 37, 38, 39, 40, 50, 51, 52, 53, 54, 55,- 56, 57, 75, 85, 5, 59, 60, 61, 79, 84,- 79, 74, 75, 80, 73, 62, 75, 75, 88, 89,- 63, 64, 20, 14, 14, 29, 48, 1, 59, 66,- 66, 65, 65, 63, 68, 63, 63, 75, 63, 63,- 68, 49, 69, 75, 75, 76, 76, 76, 76, 6,- 61, 67, 90, 91, 92, 76, 76, 76, 76, 76,- 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,- 76, 76, 76, 43, 44, 46, 59, 61, 84, 1,- 63, 66, 75, 14, 74, 62, 62, 65, 75, 4,- 6, 81, 82, 1, 75, 91, 91, 1, 76, 75,- 76, 99, 99, 99, 65, 99, 99, 1, 97, 6,- 92, 93, 1, 4, 6, 64, 84, 94, 95, 96,- 41, 48, 75, 66, 75, 59, 66, 75, 59, 63,- 66, 4, 6, 89, 62, 62, 65, 21, 22, 25,- 86, 64, 64, 48, 63, 49, 66, 63, 63, 63,- 75, 63, 49, 68, 63, 92, 75, 45, 59, 66,- 66, 66, 75, 59, 82, 63, 75, 75, 75, 75,- 99, 99, 92, 92, 92, 92, 65, 92, 95, 92,- 59, 59, 59, 66, 75, 25, 20, 62, 62, 63,- 59, 62, 75, 75, 75, 92, 86, 65, 62, 65,- 75, 65+ 37, 38, 39, 40, 49, 50, 51, 52, 53, 54,+ 55, 56, 74, 84, 5, 58, 59, 60, 78, 83,+ 78, 73, 74, 79, 72, 61, 74, 74, 87, 88,+ 62, 63, 20, 14, 14, 29, 47, 1, 58, 65,+ 65, 64, 64, 62, 67, 62, 62, 74, 62, 62,+ 67, 48, 68, 74, 74, 75, 75, 75, 75, 6,+ 60, 66, 89, 90, 91, 75, 75, 75, 75, 75,+ 75, 75, 75, 75, 75, 75, 75, 75, 75, 75,+ 75, 75, 75, 42, 43, 45, 58, 60, 83, 1,+ 62, 65, 74, 14, 73, 61, 61, 64, 74, 4,+ 6, 80, 81, 1, 74, 90, 90, 1, 75, 74,+ 75, 98, 98, 98, 64, 98, 98, 1, 96, 6,+ 91, 92, 1, 4, 6, 63, 83, 93, 94, 95,+ 58, 47, 74, 65, 74, 58, 65, 74, 58, 62,+ 65, 4, 6, 88, 61, 61, 64, 21, 22, 25,+ 85, 63, 63, 47, 62, 48, 65, 62, 62, 62,+ 74, 62, 48, 67, 62, 13, 74, 44, 58, 65,+ 65, 65, 74, 58, 81, 62, 74, 74, 74, 74,+ 98, 98, 91, 91, 91, 91, 64, 91, 94, 91,+ 91, 58, 58, 58, 65, 74, 25, 20, 61, 61,+ 62, 58, 61, 74, 74, 74, 91, 85, 64, 61,+ 64, 74, 64 }; /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ static const yytype_int8 yyr1[] = {- 0, 70, 71, 71, 72, 72, 73, 73, 74, 74,- 75, 75, 75, 75, 75, 75, 76, 76, 76, 76,- 76, 76, 76, 76, 76, 76, 76, 76, 76, 76,- 76, 76, 76, 76, 76, 76, 76, 76, 76, 77,- 77, 78, 78, 78, 79, 80, 80, 81, 81, 82,- 82, 83, 83, 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, 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, 98, 98, 98, 98,- 98, 98, 98, 98, 98, 98, 98, 99, 99+ 0, 69, 70, 70, 71, 71, 72, 72, 73, 73,+ 74, 74, 74, 74, 74, 74, 75, 75, 75, 75,+ 75, 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, 82, 83, 84, 84, 84, 85, 85, 85,+ 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,+ 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,+ 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,+ 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,+ 86, 86, 86, 86, 86, 86, 86, 86, 86, 86,+ 86, 86, 86, 86, 87, 87, 88, 89, 89, 90,+ 90, 91, 91, 91, 92, 92, 93, 93, 94, 94,+ 94, 94, 94, 94, 94, 95, 95, 95, 95, 95,+ 95, 95, 95, 95, 95, 95, 95, 95, 95, 95,+ 95, 95, 95, 96, 96, 96, 97, 97, 97, 97,+ 97, 97, 97, 97, 97, 97, 97, 98, 98 }; /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */@@ -1425,7 +1409,7 @@ static const yytype_int8 yyr2[] = 5, 4, 7, 6, 6, 6, 5, 5, 2, 1, 1, 1, 2, 3, 3, 2, 3, 9, 11, 9, 5, 4, 4, 4, 2, 4, 1, 1, 1, 4,- 3, 3, 4, 3, 1, 3, 1, 3, 1, 3,+ 3, 3, 4, 3, 1, 3, 1, 4, 1, 4, 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,@@ -2000,205 +1984,205 @@ yydestruct (const char *yymsg, case YYSYMBOL_IDENT: /* IDENT */ #line 37 "src/parser.y" { jv_free(((*yyvaluep).literal)); }-#line 2004 "src/parser.c"+#line 1988 "src/parser.c" break; case YYSYMBOL_FIELD: /* FIELD */ #line 37 "src/parser.y" { jv_free(((*yyvaluep).literal)); }-#line 2010 "src/parser.c"+#line 1994 "src/parser.c" break; case YYSYMBOL_BINDING: /* BINDING */ #line 37 "src/parser.y" { jv_free(((*yyvaluep).literal)); }-#line 2016 "src/parser.c"+#line 2000 "src/parser.c" break; case YYSYMBOL_LITERAL: /* LITERAL */ #line 37 "src/parser.y" { jv_free(((*yyvaluep).literal)); }-#line 2022 "src/parser.c"+#line 2006 "src/parser.c" break; case YYSYMBOL_FORMAT: /* FORMAT */ #line 37 "src/parser.y" { jv_free(((*yyvaluep).literal)); }-#line 2028 "src/parser.c"+#line 2012 "src/parser.c" break; case YYSYMBOL_QQSTRING_TEXT: /* QQSTRING_TEXT */ #line 37 "src/parser.y" { jv_free(((*yyvaluep).literal)); }-#line 2034 "src/parser.c"+#line 2018 "src/parser.c" break; case YYSYMBOL_Module: /* Module */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); }-#line 2040 "src/parser.c"+#line 2024 "src/parser.c" break; case YYSYMBOL_Imports: /* Imports */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); }-#line 2046 "src/parser.c"+#line 2030 "src/parser.c" break; case YYSYMBOL_FuncDefs: /* FuncDefs */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); }-#line 2052 "src/parser.c"+#line 2036 "src/parser.c" break; case YYSYMBOL_Query: /* Query */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); }-#line 2058 "src/parser.c"+#line 2042 "src/parser.c" break; case YYSYMBOL_Expr: /* Expr */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); }-#line 2064 "src/parser.c"+#line 2048 "src/parser.c" break; case YYSYMBOL_Import: /* Import */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); }-#line 2070 "src/parser.c"+#line 2054 "src/parser.c" break; case YYSYMBOL_ImportWhat: /* ImportWhat */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); }-#line 2076 "src/parser.c"+#line 2060 "src/parser.c" break; case YYSYMBOL_ImportFrom: /* ImportFrom */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); }-#line 2082 "src/parser.c"+#line 2066 "src/parser.c" break; case YYSYMBOL_FuncDef: /* FuncDef */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); }-#line 2088 "src/parser.c"+#line 2072 "src/parser.c" break; case YYSYMBOL_Params: /* Params */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); }-#line 2094 "src/parser.c"+#line 2078 "src/parser.c" break; case YYSYMBOL_Param: /* Param */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); }-#line 2100 "src/parser.c"+#line 2084 "src/parser.c" break; case YYSYMBOL_StringStart: /* StringStart */ #line 37 "src/parser.y" { jv_free(((*yyvaluep).literal)); }-#line 2106 "src/parser.c"+#line 2090 "src/parser.c" break; case YYSYMBOL_String: /* String */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); }-#line 2112 "src/parser.c"+#line 2096 "src/parser.c" break; case YYSYMBOL_QQString: /* QQString */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); }-#line 2118 "src/parser.c"+#line 2102 "src/parser.c" break; case YYSYMBOL_ElseBody: /* ElseBody */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); }-#line 2124 "src/parser.c"+#line 2108 "src/parser.c" break; case YYSYMBOL_Term: /* Term */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); }-#line 2130 "src/parser.c"+#line 2114 "src/parser.c" break; case YYSYMBOL_Args: /* Args */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); }-#line 2136 "src/parser.c"+#line 2120 "src/parser.c" break; case YYSYMBOL_Arg: /* Arg */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); }-#line 2142 "src/parser.c"+#line 2126 "src/parser.c" break; case YYSYMBOL_RepPatterns: /* RepPatterns */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); }-#line 2148 "src/parser.c"+#line 2132 "src/parser.c" break; case YYSYMBOL_Patterns: /* Patterns */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); }-#line 2154 "src/parser.c"+#line 2138 "src/parser.c" break; case YYSYMBOL_Pattern: /* Pattern */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); }-#line 2160 "src/parser.c"+#line 2144 "src/parser.c" break; case YYSYMBOL_ArrayPats: /* ArrayPats */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); }-#line 2166 "src/parser.c"+#line 2150 "src/parser.c" break; case YYSYMBOL_ObjPats: /* ObjPats */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); }-#line 2172 "src/parser.c"+#line 2156 "src/parser.c" break; case YYSYMBOL_ObjPat: /* ObjPat */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); }-#line 2178 "src/parser.c"+#line 2162 "src/parser.c" break; case YYSYMBOL_Keyword: /* Keyword */ #line 37 "src/parser.y" { jv_free(((*yyvaluep).literal)); }-#line 2184 "src/parser.c"+#line 2168 "src/parser.c" break; case YYSYMBOL_DictPairs: /* DictPairs */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); }-#line 2190 "src/parser.c"+#line 2174 "src/parser.c" break; case YYSYMBOL_DictPair: /* DictPair */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); }-#line 2196 "src/parser.c"+#line 2180 "src/parser.c" break; case YYSYMBOL_DictExpr: /* DictExpr */ #line 38 "src/parser.y" { block_free(((*yyvaluep).blk)); }-#line 2202 "src/parser.c"+#line 2186 "src/parser.c" break; default:@@ -2502,31 +2486,31 @@ yyreduce: switch (yyn) { case 2: /* TopLevel: Module Imports Query */-#line 282 "src/parser.y"+#line 281 "src/parser.y" { *answer = BLOCK((yyvsp[-2].blk), (yyvsp[-1].blk), gen_op_simple(TOP), (yyvsp[0].blk)); }-#line 2510 "src/parser.c"+#line 2494 "src/parser.c" break; case 3: /* TopLevel: Module Imports FuncDefs */-#line 285 "src/parser.y"+#line 284 "src/parser.y" { *answer = BLOCK((yyvsp[-2].blk), (yyvsp[-1].blk), (yyvsp[0].blk)); }-#line 2518 "src/parser.c"+#line 2502 "src/parser.c" break; case 4: /* Module: %empty */-#line 290 "src/parser.y"+#line 289 "src/parser.y" { (yyval.blk) = gen_noop(); }-#line 2526 "src/parser.c"+#line 2510 "src/parser.c" break; case 5: /* Module: "module" Query ';' */-#line 293 "src/parser.y"+#line 292 "src/parser.y" { if (!block_is_const((yyvsp[-1].blk))) { FAIL((yylsp[-1]), "Module metadata must be constant");@@ -2540,286 +2524,286 @@ yyreduce: (yyval.blk) = gen_module((yyvsp[-1].blk)); } }-#line 2544 "src/parser.c"+#line 2528 "src/parser.c" break; case 6: /* Imports: %empty */-#line 308 "src/parser.y"+#line 307 "src/parser.y" { (yyval.blk) = gen_noop(); }-#line 2552 "src/parser.c"+#line 2536 "src/parser.c" break; case 7: /* Imports: Import Imports */-#line 311 "src/parser.y"+#line 310 "src/parser.y" { (yyval.blk) = BLOCK((yyvsp[-1].blk), (yyvsp[0].blk)); }-#line 2560 "src/parser.c"+#line 2544 "src/parser.c" break; case 8: /* FuncDefs: %empty */-#line 316 "src/parser.y"+#line 315 "src/parser.y" { (yyval.blk) = gen_noop(); }-#line 2568 "src/parser.c"+#line 2552 "src/parser.c" break; case 9: /* FuncDefs: FuncDef FuncDefs */-#line 319 "src/parser.y"+#line 318 "src/parser.y" { (yyval.blk) = block_join((yyvsp[-1].blk), (yyvsp[0].blk)); }-#line 2576 "src/parser.c"+#line 2560 "src/parser.c" break; case 10: /* Query: FuncDef Query */-#line 325 "src/parser.y"+#line 324 "src/parser.y" { (yyval.blk) = block_bind_referenced((yyvsp[-1].blk), (yyvsp[0].blk), OP_IS_CALL_PSEUDO); }-#line 2584 "src/parser.c"+#line 2568 "src/parser.c" break; case 11: /* Query: Expr "as" Patterns '|' Query */-#line 328 "src/parser.y"+#line 327 "src/parser.y" { (yyval.blk) = gen_destructure((yyvsp[-4].blk), (yyvsp[-2].blk), (yyvsp[0].blk)); }-#line 2592 "src/parser.c"+#line 2576 "src/parser.c" break; case 12: /* Query: "label" BINDING '|' Query */-#line 331 "src/parser.y"+#line 330 "src/parser.y" { jv v = jv_string_fmt("*label-%s", jv_string_value((yyvsp[-2].literal))); (yyval.blk) = gen_location((yyloc), locations, gen_label(jv_string_value(v), (yyvsp[0].blk))); jv_free((yyvsp[-2].literal)); jv_free(v); }-#line 2603 "src/parser.c"+#line 2587 "src/parser.c" break; case 13: /* Query: Query '|' Query */-#line 337 "src/parser.y"+#line 336 "src/parser.y" { (yyval.blk) = block_join((yyvsp[-2].blk), (yyvsp[0].blk)); }-#line 2611 "src/parser.c"+#line 2595 "src/parser.c" break; case 14: /* Query: Query ',' Query */-#line 340 "src/parser.y"+#line 339 "src/parser.y" { (yyval.blk) = gen_both((yyvsp[-2].blk), (yyvsp[0].blk)); }-#line 2619 "src/parser.c"+#line 2603 "src/parser.c" break; case 15: /* Query: Expr */-#line 343 "src/parser.y"+#line 342 "src/parser.y" { (yyval.blk) = (yyvsp[0].blk); }-#line 2627 "src/parser.c"+#line 2611 "src/parser.c" break; case 16: /* Expr: Expr "//" Expr */-#line 349 "src/parser.y"+#line 348 "src/parser.y" { (yyval.blk) = gen_definedor((yyvsp[-2].blk), (yyvsp[0].blk)); }-#line 2635 "src/parser.c"+#line 2619 "src/parser.c" break; case 17: /* Expr: Expr '=' Expr */-#line 352 "src/parser.y"+#line 351 "src/parser.y" { (yyval.blk) = gen_call("_assign", BLOCK(gen_lambda((yyvsp[-2].blk)), gen_lambda((yyvsp[0].blk)))); }-#line 2643 "src/parser.c"+#line 2627 "src/parser.c" break; case 18: /* Expr: Expr "or" Expr */-#line 355 "src/parser.y"+#line 354 "src/parser.y" { (yyval.blk) = gen_or((yyvsp[-2].blk), (yyvsp[0].blk)); }-#line 2651 "src/parser.c"+#line 2635 "src/parser.c" break; case 19: /* Expr: Expr "and" Expr */-#line 358 "src/parser.y"+#line 357 "src/parser.y" { (yyval.blk) = gen_and((yyvsp[-2].blk), (yyvsp[0].blk)); }-#line 2659 "src/parser.c"+#line 2643 "src/parser.c" break; case 20: /* Expr: Expr "//=" Expr */-#line 361 "src/parser.y"+#line 360 "src/parser.y" { (yyval.blk) = gen_definedor_assign((yyvsp[-2].blk), (yyvsp[0].blk)); }-#line 2667 "src/parser.c"+#line 2651 "src/parser.c" break; case 21: /* Expr: Expr "|=" Expr */-#line 364 "src/parser.y"+#line 363 "src/parser.y" { (yyval.blk) = gen_call("_modify", BLOCK(gen_lambda((yyvsp[-2].blk)), gen_lambda((yyvsp[0].blk)))); }-#line 2675 "src/parser.c"+#line 2659 "src/parser.c" break; case 22: /* Expr: Expr '+' Expr */-#line 367 "src/parser.y"+#line 366 "src/parser.y" { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '+'); }-#line 2683 "src/parser.c"+#line 2667 "src/parser.c" break; case 23: /* Expr: Expr "+=" Expr */-#line 370 "src/parser.y"+#line 369 "src/parser.y" { (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '+'); }-#line 2691 "src/parser.c"+#line 2675 "src/parser.c" break; case 24: /* Expr: Expr '-' Expr */-#line 373 "src/parser.y"+#line 372 "src/parser.y" { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '-'); }-#line 2699 "src/parser.c"+#line 2683 "src/parser.c" break; case 25: /* Expr: Expr "-=" Expr */-#line 376 "src/parser.y"+#line 375 "src/parser.y" { (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '-'); }-#line 2707 "src/parser.c"+#line 2691 "src/parser.c" break; case 26: /* Expr: Expr '*' Expr */-#line 379 "src/parser.y"+#line 378 "src/parser.y" { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '*'); }-#line 2715 "src/parser.c"+#line 2699 "src/parser.c" break; case 27: /* Expr: Expr "*=" Expr */-#line 382 "src/parser.y"+#line 381 "src/parser.y" { (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '*'); }-#line 2723 "src/parser.c"+#line 2707 "src/parser.c" break; case 28: /* Expr: Expr '/' Expr */-#line 385 "src/parser.y"+#line 384 "src/parser.y" { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '/'); }-#line 2731 "src/parser.c"+#line 2715 "src/parser.c" break; case 29: /* Expr: Expr '%' Expr */-#line 388 "src/parser.y"+#line 387 "src/parser.y" { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '%'); }-#line 2739 "src/parser.c"+#line 2723 "src/parser.c" break; case 30: /* Expr: Expr "/=" Expr */-#line 391 "src/parser.y"+#line 390 "src/parser.y" { (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '/'); }-#line 2747 "src/parser.c"+#line 2731 "src/parser.c" break; case 31: /* Expr: Expr "%=" Expr */-#line 394 "src/parser.y"+#line 393 "src/parser.y" { (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '%'); }-#line 2755 "src/parser.c"+#line 2739 "src/parser.c" break; case 32: /* Expr: Expr "==" Expr */-#line 397 "src/parser.y"+#line 396 "src/parser.y" { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), EQ); }-#line 2763 "src/parser.c"+#line 2747 "src/parser.c" break; case 33: /* Expr: Expr "!=" Expr */-#line 400 "src/parser.y"+#line 399 "src/parser.y" { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), NEQ); }-#line 2771 "src/parser.c"+#line 2755 "src/parser.c" break; case 34: /* Expr: Expr '<' Expr */-#line 403 "src/parser.y"+#line 402 "src/parser.y" { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '<'); }-#line 2779 "src/parser.c"+#line 2763 "src/parser.c" break; case 35: /* Expr: Expr '>' Expr */-#line 406 "src/parser.y"+#line 405 "src/parser.y" { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '>'); }-#line 2787 "src/parser.c"+#line 2771 "src/parser.c" break; case 36: /* Expr: Expr "<=" Expr */-#line 409 "src/parser.y"+#line 408 "src/parser.y" { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), LESSEQ); }-#line 2795 "src/parser.c"+#line 2779 "src/parser.c" break; case 37: /* Expr: Expr ">=" Expr */-#line 412 "src/parser.y"+#line 411 "src/parser.y" { (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), GREATEREQ); }-#line 2803 "src/parser.c"+#line 2787 "src/parser.c" break; case 38: /* Expr: Term */-#line 415 "src/parser.y"+#line 414 "src/parser.y" { (yyval.blk) = (yyvsp[0].blk); }-#line 2811 "src/parser.c"+#line 2795 "src/parser.c" break; case 39: /* Import: ImportWhat ';' */-#line 421 "src/parser.y"+#line 420 "src/parser.y" { (yyval.blk) = (yyvsp[-1].blk); }-#line 2819 "src/parser.c"+#line 2803 "src/parser.c" break; case 40: /* Import: ImportWhat Query ';' */-#line 424 "src/parser.y"+#line 423 "src/parser.y" { if (!block_is_const((yyvsp[-1].blk))) { FAIL((yylsp[-1]), "Module metadata must be constant");@@ -2835,38 +2819,38 @@ yyreduce: (yyval.blk) = gen_import_meta((yyvsp[-2].blk), (yyvsp[-1].blk)); } }-#line 2839 "src/parser.c"+#line 2823 "src/parser.c" break; case 41: /* ImportWhat: "import" ImportFrom "as" BINDING */-#line 441 "src/parser.y"+#line 440 "src/parser.y" { (yyval.blk) = gen_import(block_const((yyvsp[-2].blk)), (yyvsp[0].literal), 1); block_free((yyvsp[-2].blk)); }-#line 2848 "src/parser.c"+#line 2832 "src/parser.c" break; case 42: /* ImportWhat: "import" ImportFrom "as" IDENT */-#line 445 "src/parser.y"+#line 444 "src/parser.y" { (yyval.blk) = gen_import(block_const((yyvsp[-2].blk)), (yyvsp[0].literal), 0); block_free((yyvsp[-2].blk)); }-#line 2857 "src/parser.c"+#line 2841 "src/parser.c" break; case 43: /* ImportWhat: "include" ImportFrom */-#line 449 "src/parser.y"+#line 448 "src/parser.y" { (yyval.blk) = gen_import(block_const((yyvsp[0].blk)), jv_invalid(), 0); block_free((yyvsp[0].blk)); }-#line 2866 "src/parser.c"+#line 2850 "src/parser.c" break; case 44: /* ImportFrom: String */-#line 455 "src/parser.y"+#line 454 "src/parser.y" { if (!block_is_const((yyvsp[0].blk))) { FAIL((yylsp[0]), "Import path must be constant");@@ -2876,152 +2860,152 @@ yyreduce: (yyval.blk) = (yyvsp[0].blk); } }-#line 2880 "src/parser.c"+#line 2864 "src/parser.c" break; case 45: /* FuncDef: "def" IDENT ':' Query ';' */-#line 466 "src/parser.y"+#line 465 "src/parser.y" { (yyval.blk) = gen_function(jv_string_value((yyvsp[-3].literal)), gen_noop(), (yyvsp[-1].blk)); jv_free((yyvsp[-3].literal)); }-#line 2889 "src/parser.c"+#line 2873 "src/parser.c" break; case 46: /* FuncDef: "def" IDENT '(' Params ')' ':' Query ';' */-#line 471 "src/parser.y"+#line 470 "src/parser.y" { (yyval.blk) = gen_function(jv_string_value((yyvsp[-6].literal)), (yyvsp[-4].blk), (yyvsp[-1].blk)); jv_free((yyvsp[-6].literal)); }-#line 2898 "src/parser.c"+#line 2882 "src/parser.c" break; case 47: /* Params: Param */-#line 477 "src/parser.y"+#line 476 "src/parser.y" { (yyval.blk) = (yyvsp[0].blk); }-#line 2906 "src/parser.c"+#line 2890 "src/parser.c" break; case 48: /* Params: Params ';' Param */-#line 480 "src/parser.y"+#line 479 "src/parser.y" { (yyval.blk) = BLOCK((yyvsp[-2].blk), (yyvsp[0].blk)); }-#line 2914 "src/parser.c"+#line 2898 "src/parser.c" break; case 49: /* Param: BINDING */-#line 485 "src/parser.y"+#line 484 "src/parser.y" { (yyval.blk) = gen_param_regular(jv_string_value((yyvsp[0].literal))); jv_free((yyvsp[0].literal)); }-#line 2923 "src/parser.c"+#line 2907 "src/parser.c" break; case 50: /* Param: IDENT */-#line 489 "src/parser.y"+#line 488 "src/parser.y" { (yyval.blk) = gen_param(jv_string_value((yyvsp[0].literal))); jv_free((yyvsp[0].literal)); }-#line 2932 "src/parser.c"+#line 2916 "src/parser.c" break; case 51: /* StringStart: FORMAT QQSTRING_START */-#line 496 "src/parser.y"+#line 495 "src/parser.y" { (yyval.literal) = (yyvsp[-1].literal); }-#line 2940 "src/parser.c"+#line 2924 "src/parser.c" break; case 52: /* StringStart: QQSTRING_START */-#line 499 "src/parser.y"+#line 498 "src/parser.y" { (yyval.literal) = jv_string("text"); }-#line 2948 "src/parser.c"+#line 2932 "src/parser.c" break; case 53: /* String: StringStart QQString QQSTRING_END */-#line 505 "src/parser.y"+#line 504 "src/parser.y" { (yyval.blk) = (yyvsp[-1].blk); jv_free((yyvsp[-2].literal)); }-#line 2957 "src/parser.c"+#line 2941 "src/parser.c" break; case 54: /* QQString: %empty */-#line 512 "src/parser.y"+#line 511 "src/parser.y" { (yyval.blk) = gen_const(jv_string("")); }-#line 2965 "src/parser.c"+#line 2949 "src/parser.c" break; case 55: /* QQString: QQString QQSTRING_TEXT */-#line 515 "src/parser.y"+#line 514 "src/parser.y" { (yyval.blk) = gen_binop((yyvsp[-1].blk), gen_const((yyvsp[0].literal)), '+'); }-#line 2973 "src/parser.c"+#line 2957 "src/parser.c" break; case 56: /* QQString: QQString QQSTRING_INTERP_START Query QQSTRING_INTERP_END */-#line 518 "src/parser.y"+#line 517 "src/parser.y" { (yyval.blk) = gen_binop((yyvsp[-3].blk), gen_format((yyvsp[-1].blk), jv_copy((yyvsp[-4].literal))), '+'); }-#line 2981 "src/parser.c"+#line 2965 "src/parser.c" break; case 57: /* ElseBody: "elif" Query "then" Query ElseBody */-#line 524 "src/parser.y"+#line 523 "src/parser.y" { (yyval.blk) = gen_cond((yyvsp[-3].blk), (yyvsp[-1].blk), (yyvsp[0].blk)); }-#line 2989 "src/parser.c"+#line 2973 "src/parser.c" break; case 58: /* ElseBody: "else" Query "end" */-#line 527 "src/parser.y"+#line 526 "src/parser.y" { (yyval.blk) = (yyvsp[-1].blk); }-#line 2997 "src/parser.c"+#line 2981 "src/parser.c" break; case 59: /* ElseBody: "end" */-#line 530 "src/parser.y"+#line 529 "src/parser.y" { (yyval.blk) = gen_noop(); }-#line 3005 "src/parser.c"+#line 2989 "src/parser.c" break; case 60: /* Term: '.' */-#line 536 "src/parser.y"+#line 535 "src/parser.y" { (yyval.blk) = gen_noop(); }-#line 3013 "src/parser.c"+#line 2997 "src/parser.c" break; case 61: /* Term: ".." */-#line 539 "src/parser.y"+#line 538 "src/parser.y" { (yyval.blk) = gen_call("recurse", gen_noop()); }-#line 3021 "src/parser.c"+#line 3005 "src/parser.c" break; case 62: /* Term: "break" BINDING */-#line 542 "src/parser.y"+#line 541 "src/parser.y" { jv v = jv_string_fmt("*label-%s", jv_string_value((yyvsp[0].literal))); // impossible symbol (yyval.blk) = gen_location((yyloc), locations,@@ -3030,279 +3014,279 @@ yyreduce: jv_free(v); jv_free((yyvsp[0].literal)); }-#line 3034 "src/parser.c"+#line 3018 "src/parser.c" break; case 63: /* Term: "break" error */-#line 550 "src/parser.y"+#line 549 "src/parser.y" { FAIL((yyloc), "break requires a label to break to"); (yyval.blk) = gen_noop(); }-#line 3043 "src/parser.c"+#line 3027 "src/parser.c" break; case 64: /* Term: Term FIELD '?' */-#line 554 "src/parser.y"+#line 553 "src/parser.y" { (yyval.blk) = gen_index_opt((yyvsp[-2].blk), gen_const((yyvsp[-1].literal))); }-#line 3051 "src/parser.c"+#line 3035 "src/parser.c" break; case 65: /* Term: FIELD '?' */-#line 557 "src/parser.y"+#line 556 "src/parser.y" { (yyval.blk) = gen_index_opt(gen_noop(), gen_const((yyvsp[-1].literal))); }-#line 3059 "src/parser.c"+#line 3043 "src/parser.c" break; case 66: /* Term: Term '.' String '?' */-#line 560 "src/parser.y"+#line 559 "src/parser.y" { (yyval.blk) = gen_index_opt((yyvsp[-3].blk), (yyvsp[-1].blk)); }-#line 3067 "src/parser.c"+#line 3051 "src/parser.c" break; case 67: /* Term: '.' String '?' */-#line 563 "src/parser.y"+#line 562 "src/parser.y" { (yyval.blk) = gen_index_opt(gen_noop(), (yyvsp[-1].blk)); }-#line 3075 "src/parser.c"+#line 3059 "src/parser.c" break; case 68: /* Term: Term FIELD */-#line 566 "src/parser.y"+#line 565 "src/parser.y" { (yyval.blk) = gen_index((yyvsp[-1].blk), gen_const((yyvsp[0].literal))); }-#line 3083 "src/parser.c"+#line 3067 "src/parser.c" break; case 69: /* Term: FIELD */-#line 569 "src/parser.y"+#line 568 "src/parser.y" { (yyval.blk) = gen_index(gen_noop(), gen_const((yyvsp[0].literal))); }-#line 3091 "src/parser.c"+#line 3075 "src/parser.c" break; case 70: /* Term: Term '.' String */-#line 572 "src/parser.y"+#line 571 "src/parser.y" { (yyval.blk) = gen_index((yyvsp[-2].blk), (yyvsp[0].blk)); }-#line 3099 "src/parser.c"+#line 3083 "src/parser.c" break; case 71: /* Term: '.' String */-#line 575 "src/parser.y"+#line 574 "src/parser.y" { (yyval.blk) = gen_index(gen_noop(), (yyvsp[0].blk)); }-#line 3107 "src/parser.c"+#line 3091 "src/parser.c" break; case 72: /* Term: '.' error */-#line 578 "src/parser.y"+#line 577 "src/parser.y" { FAIL((yyloc), "try .[\"field\"] instead of .field for unusually named fields"); (yyval.blk) = gen_noop(); }-#line 3116 "src/parser.c"+#line 3100 "src/parser.c" break; case 73: /* Term: '.' IDENT error */-#line 582 "src/parser.y"+#line 581 "src/parser.y" { jv_free((yyvsp[-1].literal)); FAIL((yyloc), "try .[\"field\"] instead of .field for unusually named fields"); (yyval.blk) = gen_noop(); }-#line 3126 "src/parser.c"+#line 3110 "src/parser.c" break; case 74: /* Term: Term '[' Query ']' '?' */-#line 588 "src/parser.y"+#line 587 "src/parser.y" { (yyval.blk) = gen_index_opt((yyvsp[-4].blk), (yyvsp[-2].blk)); }-#line 3134 "src/parser.c"+#line 3118 "src/parser.c" break; case 75: /* Term: Term '[' Query ']' */-#line 591 "src/parser.y"+#line 590 "src/parser.y" { (yyval.blk) = gen_index((yyvsp[-3].blk), (yyvsp[-1].blk)); }-#line 3142 "src/parser.c"+#line 3126 "src/parser.c" break; case 76: /* Term: Term '.' '[' Query ']' '?' */-#line 594 "src/parser.y"+#line 593 "src/parser.y" { (yyval.blk) = gen_index_opt((yyvsp[-5].blk), (yyvsp[-2].blk)); }-#line 3150 "src/parser.c"+#line 3134 "src/parser.c" break; case 77: /* Term: Term '.' '[' Query ']' */-#line 597 "src/parser.y"+#line 596 "src/parser.y" { (yyval.blk) = gen_index((yyvsp[-4].blk), (yyvsp[-1].blk)); }-#line 3158 "src/parser.c"+#line 3142 "src/parser.c" break; case 78: /* Term: Term '[' ']' '?' */-#line 600 "src/parser.y"+#line 599 "src/parser.y" { (yyval.blk) = block_join((yyvsp[-3].blk), gen_op_simple(EACH_OPT)); }-#line 3166 "src/parser.c"+#line 3150 "src/parser.c" break; case 79: /* Term: Term '[' ']' */-#line 603 "src/parser.y"+#line 602 "src/parser.y" { (yyval.blk) = block_join((yyvsp[-2].blk), gen_op_simple(EACH)); }-#line 3174 "src/parser.c"+#line 3158 "src/parser.c" break; case 80: /* Term: Term '.' '[' ']' '?' */-#line 606 "src/parser.y"+#line 605 "src/parser.y" { (yyval.blk) = block_join((yyvsp[-4].blk), gen_op_simple(EACH_OPT)); }-#line 3182 "src/parser.c"+#line 3166 "src/parser.c" break; case 81: /* Term: Term '.' '[' ']' */-#line 609 "src/parser.y"+#line 608 "src/parser.y" { (yyval.blk) = block_join((yyvsp[-3].blk), gen_op_simple(EACH)); }-#line 3190 "src/parser.c"+#line 3174 "src/parser.c" break; case 82: /* Term: Term '[' Query ':' Query ']' '?' */-#line 612 "src/parser.y"+#line 611 "src/parser.y" { (yyval.blk) = gen_slice_index((yyvsp[-6].blk), (yyvsp[-4].blk), (yyvsp[-2].blk), INDEX_OPT); }-#line 3198 "src/parser.c"+#line 3182 "src/parser.c" break; case 83: /* Term: Term '[' Query ':' ']' '?' */-#line 615 "src/parser.y"+#line 614 "src/parser.y" { (yyval.blk) = gen_slice_index((yyvsp[-5].blk), (yyvsp[-3].blk), gen_const(jv_null()), INDEX_OPT); }-#line 3206 "src/parser.c"+#line 3190 "src/parser.c" break; case 84: /* Term: Term '[' ':' Query ']' '?' */-#line 618 "src/parser.y"+#line 617 "src/parser.y" { (yyval.blk) = gen_slice_index((yyvsp[-5].blk), gen_const(jv_null()), (yyvsp[-2].blk), INDEX_OPT); }-#line 3214 "src/parser.c"+#line 3198 "src/parser.c" break; case 85: /* Term: Term '[' Query ':' Query ']' */-#line 621 "src/parser.y"+#line 620 "src/parser.y" { (yyval.blk) = gen_slice_index((yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk), INDEX); }-#line 3222 "src/parser.c"+#line 3206 "src/parser.c" break; case 86: /* Term: Term '[' Query ':' ']' */-#line 624 "src/parser.y"+#line 623 "src/parser.y" { (yyval.blk) = gen_slice_index((yyvsp[-4].blk), (yyvsp[-2].blk), gen_const(jv_null()), INDEX); }-#line 3230 "src/parser.c"+#line 3214 "src/parser.c" break; case 87: /* Term: Term '[' ':' Query ']' */-#line 627 "src/parser.y"+#line 626 "src/parser.y" { (yyval.blk) = gen_slice_index((yyvsp[-4].blk), gen_const(jv_null()), (yyvsp[-1].blk), INDEX); }-#line 3238 "src/parser.c"+#line 3222 "src/parser.c" break; case 88: /* Term: Term '?' */-#line 630 "src/parser.y"+#line 629 "src/parser.y" { (yyval.blk) = gen_try((yyvsp[-1].blk), gen_op_simple(BACKTRACK)); }-#line 3246 "src/parser.c"+#line 3230 "src/parser.c" break; case 89: /* Term: LITERAL */-#line 633 "src/parser.y"+#line 632 "src/parser.y" { (yyval.blk) = gen_const((yyvsp[0].literal)); }-#line 3254 "src/parser.c"+#line 3238 "src/parser.c" break; case 90: /* Term: String */-#line 636 "src/parser.y"+#line 635 "src/parser.y" { (yyval.blk) = (yyvsp[0].blk); }-#line 3262 "src/parser.c"+#line 3246 "src/parser.c" break; case 91: /* Term: FORMAT */-#line 639 "src/parser.y"+#line 638 "src/parser.y" { (yyval.blk) = gen_format(gen_noop(), (yyvsp[0].literal)); }-#line 3270 "src/parser.c"+#line 3254 "src/parser.c" break; case 92: /* Term: '-' Term */-#line 642 "src/parser.y"+#line 641 "src/parser.y" { (yyval.blk) = BLOCK((yyvsp[0].blk), gen_call("_negate", gen_noop())); }-#line 3278 "src/parser.c"+#line 3262 "src/parser.c" break; case 93: /* Term: '(' Query ')' */-#line 645 "src/parser.y"+#line 644 "src/parser.y" { (yyval.blk) = (yyvsp[-1].blk); }-#line 3286 "src/parser.c"+#line 3270 "src/parser.c" break; case 94: /* Term: '[' Query ']' */-#line 648 "src/parser.y"+#line 647 "src/parser.y" { (yyval.blk) = gen_collect((yyvsp[-1].blk)); }-#line 3294 "src/parser.c"+#line 3278 "src/parser.c" break; case 95: /* Term: '[' ']' */-#line 651 "src/parser.y"+#line 650 "src/parser.y" { (yyval.blk) = gen_const(jv_array()); }-#line 3302 "src/parser.c"+#line 3286 "src/parser.c" break; case 96: /* Term: '{' DictPairs '}' */-#line 654 "src/parser.y"+#line 653 "src/parser.y" { block o = gen_const_object((yyvsp[-1].blk)); if (o.first != NULL)@@ -3310,103 +3294,103 @@ yyreduce: else (yyval.blk) = BLOCK(gen_subexp(gen_const(jv_object())), (yyvsp[-1].blk), gen_op_simple(POP)); }-#line 3314 "src/parser.c"+#line 3298 "src/parser.c" break; case 97: /* Term: "reduce" Expr "as" Patterns '(' Query ';' Query ')' */-#line 661 "src/parser.y"+#line 660 "src/parser.y" { (yyval.blk) = gen_reduce((yyvsp[-7].blk), (yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk)); }-#line 3322 "src/parser.c"+#line 3306 "src/parser.c" break; case 98: /* Term: "foreach" Expr "as" Patterns '(' Query ';' Query ';' Query ')' */-#line 664 "src/parser.y"+#line 663 "src/parser.y" { (yyval.blk) = gen_foreach((yyvsp[-9].blk), (yyvsp[-7].blk), (yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk)); }-#line 3330 "src/parser.c"+#line 3314 "src/parser.c" break; case 99: /* Term: "foreach" Expr "as" Patterns '(' Query ';' Query ')' */-#line 667 "src/parser.y"+#line 666 "src/parser.y" { (yyval.blk) = gen_foreach((yyvsp[-7].blk), (yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk), gen_noop()); }-#line 3338 "src/parser.c"+#line 3322 "src/parser.c" break; case 100: /* Term: "if" Query "then" Query ElseBody */-#line 670 "src/parser.y"+#line 669 "src/parser.y" { (yyval.blk) = gen_cond((yyvsp[-3].blk), (yyvsp[-1].blk), (yyvsp[0].blk)); }-#line 3346 "src/parser.c"+#line 3330 "src/parser.c" break; case 101: /* Term: "if" Query "then" error */-#line 673 "src/parser.y"+#line 672 "src/parser.y" { FAIL((yyloc), "Possibly unterminated 'if' statement"); (yyval.blk) = (yyvsp[-2].blk); }-#line 3355 "src/parser.c"+#line 3339 "src/parser.c" break; case 102: /* Term: "try" Expr "catch" Expr */-#line 677 "src/parser.y"+#line 676 "src/parser.y" { (yyval.blk) = gen_try((yyvsp[-2].blk), (yyvsp[0].blk)); }-#line 3363 "src/parser.c"+#line 3347 "src/parser.c" break; case 103: /* Term: "try" Expr "catch" error */-#line 680 "src/parser.y"+#line 679 "src/parser.y" { FAIL((yyloc), "Possibly unterminated 'try' statement"); (yyval.blk) = (yyvsp[-2].blk); }-#line 3372 "src/parser.c"+#line 3356 "src/parser.c" break; case 104: /* Term: "try" Expr */-#line 684 "src/parser.y"+#line 683 "src/parser.y" { (yyval.blk) = gen_try((yyvsp[0].blk), gen_op_simple(BACKTRACK)); }-#line 3380 "src/parser.c"+#line 3364 "src/parser.c" break; case 105: /* Term: '$' '$' '$' BINDING */-#line 702 "src/parser.y"+#line 701 "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 3389 "src/parser.c"+#line 3373 "src/parser.c" break; case 106: /* Term: BINDING */-#line 706 "src/parser.y"+#line 705 "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 3398 "src/parser.c"+#line 3382 "src/parser.c" break; case 107: /* Term: "$__loc__" */-#line 710 "src/parser.y"+#line 709 "src/parser.y" { (yyval.blk) = gen_loc_object(&(yyloc), locations); }-#line 3406 "src/parser.c"+#line 3390 "src/parser.c" break; case 108: /* Term: IDENT */-#line 713 "src/parser.y"+#line 712 "src/parser.y" { const char *s = jv_string_value((yyvsp[0].literal)); if (strcmp(s, "false") == 0)@@ -3419,198 +3403,198 @@ yyreduce: (yyval.blk) = gen_location((yyloc), locations, gen_call(s, gen_noop())); jv_free((yyvsp[0].literal)); }-#line 3423 "src/parser.c"+#line 3407 "src/parser.c" break; case 109: /* Term: IDENT '(' Args ')' */-#line 725 "src/parser.y"+#line 724 "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 3433 "src/parser.c"+#line 3417 "src/parser.c" break; case 110: /* Term: '(' error ')' */-#line 730 "src/parser.y"+#line 729 "src/parser.y" { (yyval.blk) = gen_noop(); }-#line 3439 "src/parser.c"+#line 3423 "src/parser.c" break; case 111: /* Term: '[' error ']' */-#line 731 "src/parser.y"+#line 730 "src/parser.y" { (yyval.blk) = gen_noop(); }-#line 3445 "src/parser.c"+#line 3429 "src/parser.c" break; case 112: /* Term: Term '[' error ']' */-#line 732 "src/parser.y"+#line 731 "src/parser.y" { (yyval.blk) = (yyvsp[-3].blk); }-#line 3451 "src/parser.c"+#line 3435 "src/parser.c" break; case 113: /* Term: '{' error '}' */-#line 733 "src/parser.y"+#line 732 "src/parser.y" { (yyval.blk) = gen_noop(); }-#line 3457 "src/parser.c"+#line 3441 "src/parser.c" break; case 114: /* Args: Arg */-#line 736 "src/parser.y"+#line 735 "src/parser.y" { (yyval.blk) = (yyvsp[0].blk); }-#line 3465 "src/parser.c"+#line 3449 "src/parser.c" break; case 115: /* Args: Args ';' Arg */-#line 739 "src/parser.y"+#line 738 "src/parser.y" { (yyval.blk) = BLOCK((yyvsp[-2].blk), (yyvsp[0].blk)); }-#line 3473 "src/parser.c"+#line 3457 "src/parser.c" break; case 116: /* Arg: Query */-#line 744 "src/parser.y"+#line 743 "src/parser.y" { (yyval.blk) = gen_lambda((yyvsp[0].blk)); }-#line 3481 "src/parser.c"+#line 3465 "src/parser.c" break; - case 117: /* RepPatterns: RepPatterns "?//" Pattern */-#line 749 "src/parser.y"- {- (yyval.blk) = BLOCK((yyvsp[-2].blk), gen_destructure_alt((yyvsp[0].blk)));+ case 117: /* RepPatterns: RepPatterns '?' "//" Pattern */+#line 748 "src/parser.y"+ {+ (yyval.blk) = BLOCK((yyvsp[-3].blk), gen_destructure_alt((yyvsp[0].blk))); }-#line 3489 "src/parser.c"+#line 3473 "src/parser.c" break; case 118: /* RepPatterns: Pattern */-#line 752 "src/parser.y"+#line 751 "src/parser.y" { (yyval.blk) = gen_destructure_alt((yyvsp[0].blk)); }-#line 3497 "src/parser.c"+#line 3481 "src/parser.c" break; - case 119: /* Patterns: RepPatterns "?//" Pattern */-#line 757 "src/parser.y"- {- (yyval.blk) = BLOCK((yyvsp[-2].blk), (yyvsp[0].blk));+ case 119: /* Patterns: RepPatterns '?' "//" Pattern */+#line 756 "src/parser.y"+ {+ (yyval.blk) = BLOCK((yyvsp[-3].blk), (yyvsp[0].blk)); }-#line 3505 "src/parser.c"+#line 3489 "src/parser.c" break; case 120: /* Patterns: Pattern */-#line 760 "src/parser.y"+#line 759 "src/parser.y" { (yyval.blk) = (yyvsp[0].blk); }-#line 3513 "src/parser.c"+#line 3497 "src/parser.c" break; case 121: /* Pattern: BINDING */-#line 765 "src/parser.y"+#line 764 "src/parser.y" { (yyval.blk) = gen_op_unbound(STOREV, jv_string_value((yyvsp[0].literal))); jv_free((yyvsp[0].literal)); }-#line 3522 "src/parser.c"+#line 3506 "src/parser.c" break; case 122: /* Pattern: '[' ArrayPats ']' */-#line 769 "src/parser.y"+#line 768 "src/parser.y" { (yyval.blk) = BLOCK((yyvsp[-1].blk), gen_op_simple(POP)); }-#line 3530 "src/parser.c"+#line 3514 "src/parser.c" break; case 123: /* Pattern: '{' ObjPats '}' */-#line 772 "src/parser.y"+#line 771 "src/parser.y" { (yyval.blk) = BLOCK((yyvsp[-1].blk), gen_op_simple(POP)); }-#line 3538 "src/parser.c"+#line 3522 "src/parser.c" break; case 124: /* ArrayPats: Pattern */-#line 777 "src/parser.y"+#line 776 "src/parser.y" { (yyval.blk) = gen_array_matcher(gen_noop(), (yyvsp[0].blk)); }-#line 3546 "src/parser.c"+#line 3530 "src/parser.c" break; case 125: /* ArrayPats: ArrayPats ',' Pattern */-#line 780 "src/parser.y"+#line 779 "src/parser.y" { (yyval.blk) = gen_array_matcher((yyvsp[-2].blk), (yyvsp[0].blk)); }-#line 3554 "src/parser.c"+#line 3538 "src/parser.c" break; case 126: /* ObjPats: ObjPat */-#line 785 "src/parser.y"+#line 784 "src/parser.y" { (yyval.blk) = (yyvsp[0].blk); }-#line 3562 "src/parser.c"+#line 3546 "src/parser.c" break; case 127: /* ObjPats: ObjPats ',' ObjPat */-#line 788 "src/parser.y"+#line 787 "src/parser.y" { (yyval.blk) = BLOCK((yyvsp[-2].blk), (yyvsp[0].blk)); }-#line 3570 "src/parser.c"+#line 3554 "src/parser.c" break; case 128: /* ObjPat: BINDING */-#line 793 "src/parser.y"+#line 792 "src/parser.y" { (yyval.blk) = gen_object_matcher(gen_const((yyvsp[0].literal)), gen_op_unbound(STOREV, jv_string_value((yyvsp[0].literal)))); }-#line 3578 "src/parser.c"+#line 3562 "src/parser.c" break; case 129: /* ObjPat: BINDING ':' Pattern */-#line 796 "src/parser.y"+#line 795 "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 3586 "src/parser.c"+#line 3570 "src/parser.c" break; case 130: /* ObjPat: IDENT ':' Pattern */-#line 799 "src/parser.y"+#line 798 "src/parser.y" { (yyval.blk) = gen_object_matcher(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk)); }-#line 3594 "src/parser.c"+#line 3578 "src/parser.c" break; case 131: /* ObjPat: Keyword ':' Pattern */-#line 802 "src/parser.y"+#line 801 "src/parser.y" { (yyval.blk) = gen_object_matcher(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk)); }-#line 3602 "src/parser.c"+#line 3586 "src/parser.c" break; case 132: /* ObjPat: String ':' Pattern */-#line 805 "src/parser.y"+#line 804 "src/parser.y" { (yyval.blk) = gen_object_matcher((yyvsp[-2].blk), (yyvsp[0].blk)); }-#line 3610 "src/parser.c"+#line 3594 "src/parser.c" break; case 133: /* ObjPat: '(' Query ')' ':' Pattern */-#line 808 "src/parser.y"+#line 807 "src/parser.y" { jv msg = check_object_key((yyvsp[-3].blk)); if (jv_is_valid(msg)) {@@ -3619,267 +3603,267 @@ yyreduce: jv_free(msg); (yyval.blk) = gen_object_matcher((yyvsp[-3].blk), (yyvsp[0].blk)); }-#line 3623 "src/parser.c"+#line 3607 "src/parser.c" break; case 134: /* ObjPat: error ':' Pattern */-#line 816 "src/parser.y"+#line 815 "src/parser.y" { FAIL((yyloc), "May need parentheses around object key expression"); (yyval.blk) = (yyvsp[0].blk); }-#line 3632 "src/parser.c"+#line 3616 "src/parser.c" break; case 135: /* Keyword: "as" */-#line 822 "src/parser.y"+#line 821 "src/parser.y" { (yyval.literal) = jv_string("as"); }-#line 3640 "src/parser.c"+#line 3624 "src/parser.c" break; case 136: /* Keyword: "def" */-#line 825 "src/parser.y"+#line 824 "src/parser.y" { (yyval.literal) = jv_string("def"); }-#line 3648 "src/parser.c"+#line 3632 "src/parser.c" break; case 137: /* Keyword: "module" */-#line 828 "src/parser.y"+#line 827 "src/parser.y" { (yyval.literal) = jv_string("module"); }-#line 3656 "src/parser.c"+#line 3640 "src/parser.c" break; case 138: /* Keyword: "import" */-#line 831 "src/parser.y"+#line 830 "src/parser.y" { (yyval.literal) = jv_string("import"); }-#line 3664 "src/parser.c"+#line 3648 "src/parser.c" break; case 139: /* Keyword: "include" */-#line 834 "src/parser.y"+#line 833 "src/parser.y" { (yyval.literal) = jv_string("include"); }-#line 3672 "src/parser.c"+#line 3656 "src/parser.c" break; case 140: /* Keyword: "if" */-#line 837 "src/parser.y"+#line 836 "src/parser.y" { (yyval.literal) = jv_string("if"); }-#line 3680 "src/parser.c"+#line 3664 "src/parser.c" break; case 141: /* Keyword: "then" */-#line 840 "src/parser.y"+#line 839 "src/parser.y" { (yyval.literal) = jv_string("then"); }-#line 3688 "src/parser.c"+#line 3672 "src/parser.c" break; case 142: /* Keyword: "else" */-#line 843 "src/parser.y"+#line 842 "src/parser.y" { (yyval.literal) = jv_string("else"); }-#line 3696 "src/parser.c"+#line 3680 "src/parser.c" break; case 143: /* Keyword: "elif" */-#line 846 "src/parser.y"+#line 845 "src/parser.y" { (yyval.literal) = jv_string("elif"); }-#line 3704 "src/parser.c"+#line 3688 "src/parser.c" break; case 144: /* Keyword: "reduce" */-#line 849 "src/parser.y"+#line 848 "src/parser.y" { (yyval.literal) = jv_string("reduce"); }-#line 3712 "src/parser.c"+#line 3696 "src/parser.c" break; case 145: /* Keyword: "foreach" */-#line 852 "src/parser.y"+#line 851 "src/parser.y" { (yyval.literal) = jv_string("foreach"); }-#line 3720 "src/parser.c"+#line 3704 "src/parser.c" break; case 146: /* Keyword: "end" */-#line 855 "src/parser.y"+#line 854 "src/parser.y" { (yyval.literal) = jv_string("end"); }-#line 3728 "src/parser.c"+#line 3712 "src/parser.c" break; case 147: /* Keyword: "and" */-#line 858 "src/parser.y"+#line 857 "src/parser.y" { (yyval.literal) = jv_string("and"); }-#line 3736 "src/parser.c"+#line 3720 "src/parser.c" break; case 148: /* Keyword: "or" */-#line 861 "src/parser.y"+#line 860 "src/parser.y" { (yyval.literal) = jv_string("or"); }-#line 3744 "src/parser.c"+#line 3728 "src/parser.c" break; case 149: /* Keyword: "try" */-#line 864 "src/parser.y"+#line 863 "src/parser.y" { (yyval.literal) = jv_string("try"); }-#line 3752 "src/parser.c"+#line 3736 "src/parser.c" break; case 150: /* Keyword: "catch" */-#line 867 "src/parser.y"+#line 866 "src/parser.y" { (yyval.literal) = jv_string("catch"); }-#line 3760 "src/parser.c"+#line 3744 "src/parser.c" break; case 151: /* Keyword: "label" */-#line 870 "src/parser.y"+#line 869 "src/parser.y" { (yyval.literal) = jv_string("label"); }-#line 3768 "src/parser.c"+#line 3752 "src/parser.c" break; case 152: /* Keyword: "break" */-#line 873 "src/parser.y"+#line 872 "src/parser.y" { (yyval.literal) = jv_string("break"); }-#line 3776 "src/parser.c"+#line 3760 "src/parser.c" break; case 153: /* DictPairs: %empty */-#line 879 "src/parser.y"+#line 878 "src/parser.y" { (yyval.blk) = gen_noop(); }-#line 3784 "src/parser.c"+#line 3768 "src/parser.c" break; case 154: /* DictPairs: DictPair */-#line 882 "src/parser.y"+#line 881 "src/parser.y" { (yyval.blk) = (yyvsp[0].blk); }-#line 3792 "src/parser.c"+#line 3776 "src/parser.c" break; case 155: /* DictPairs: DictPair ',' DictPairs */-#line 885 "src/parser.y"+#line 884 "src/parser.y" { (yyval.blk) = block_join((yyvsp[-2].blk), (yyvsp[0].blk)); }-#line 3800 "src/parser.c"+#line 3784 "src/parser.c" break; case 156: /* DictPair: IDENT ':' DictExpr */-#line 890 "src/parser.y"+#line 889 "src/parser.y" { (yyval.blk) = gen_dictpair(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk)); }-#line 3808 "src/parser.c"+#line 3792 "src/parser.c" break; case 157: /* DictPair: Keyword ':' DictExpr */-#line 893 "src/parser.y"+#line 892 "src/parser.y" { (yyval.blk) = gen_dictpair(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk)); }-#line 3816 "src/parser.c"+#line 3800 "src/parser.c" break; case 158: /* DictPair: String ':' DictExpr */-#line 896 "src/parser.y"+#line 895 "src/parser.y" { (yyval.blk) = gen_dictpair((yyvsp[-2].blk), (yyvsp[0].blk)); }-#line 3824 "src/parser.c"+#line 3808 "src/parser.c" break; case 159: /* DictPair: String */-#line 899 "src/parser.y"+#line 898 "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 3833 "src/parser.c"+#line 3817 "src/parser.c" break; case 160: /* DictPair: BINDING ':' DictExpr */-#line 903 "src/parser.y"+#line 902 "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 3843 "src/parser.c"+#line 3827 "src/parser.c" break; case 161: /* DictPair: BINDING */-#line 908 "src/parser.y"+#line 907 "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 3852 "src/parser.c"+#line 3836 "src/parser.c" break; case 162: /* DictPair: IDENT */-#line 912 "src/parser.y"+#line 911 "src/parser.y" { (yyval.blk) = gen_dictpair(gen_const(jv_copy((yyvsp[0].literal))), gen_index(gen_noop(), gen_const((yyvsp[0].literal)))); }-#line 3861 "src/parser.c"+#line 3845 "src/parser.c" break; case 163: /* DictPair: "$__loc__" */-#line 916 "src/parser.y"+#line 915 "src/parser.y" { (yyval.blk) = gen_dictpair(gen_const(jv_string("__loc__")), gen_loc_object(&(yyloc), locations)); }-#line 3870 "src/parser.c"+#line 3854 "src/parser.c" break; case 164: /* DictPair: Keyword */-#line 920 "src/parser.y"+#line 919 "src/parser.y" { (yyval.blk) = gen_dictpair(gen_const(jv_copy((yyvsp[0].literal))), gen_index(gen_noop(), gen_const((yyvsp[0].literal)))); }-#line 3879 "src/parser.c"+#line 3863 "src/parser.c" break; case 165: /* DictPair: '(' Query ')' ':' DictExpr */-#line 924 "src/parser.y"+#line 923 "src/parser.y" { jv msg = check_object_key((yyvsp[-3].blk)); if (jv_is_valid(msg)) {@@ -3888,36 +3872,36 @@ yyreduce: jv_free(msg); (yyval.blk) = gen_dictpair((yyvsp[-3].blk), (yyvsp[0].blk)); }-#line 3892 "src/parser.c"+#line 3876 "src/parser.c" break; case 166: /* DictPair: error ':' DictExpr */-#line 932 "src/parser.y"+#line 931 "src/parser.y" { FAIL((yylsp[-2]), "May need parentheses around object key expression"); (yyval.blk) = (yyvsp[0].blk); }-#line 3901 "src/parser.c"+#line 3885 "src/parser.c" break; case 167: /* DictExpr: DictExpr '|' DictExpr */-#line 938 "src/parser.y"+#line 937 "src/parser.y" { (yyval.blk) = block_join((yyvsp[-2].blk), (yyvsp[0].blk)); }-#line 3909 "src/parser.c"+#line 3893 "src/parser.c" break; case 168: /* DictExpr: Expr */-#line 941 "src/parser.y"+#line 940 "src/parser.y" { (yyval.blk) = (yyvsp[0].blk); }-#line 3917 "src/parser.c"+#line 3901 "src/parser.c" break; -#line 3921 "src/parser.c"+#line 3905 "src/parser.c" default: break; }@@ -4146,7 +4130,7 @@ yyreturnlab: return yyresult; } -#line 944 "src/parser.y"+#line 943 "src/parser.y" int jq_parse(struct locfile* locations, block* answer) {