@ 261102.1

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

src/parser.c

@@ -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) {