Improve invalid object key error message
authorDavid Tolnay <dtolnay@gmail.com>
Wed, 16 Sep 2015 16:49:11 +0000 (09:49 -0700)
committerDavid Tolnay <dtolnay@gmail.com>
Wed, 16 Sep 2015 16:53:42 +0000 (09:53 -0700)
src/parser.c
src/parser.y

index f0650184d501145b63e4f69191af6ffc64dfa0e1..50d345683d4972978b346eff4d05675d8aefa87e 100644 (file)
@@ -62,7 +62,7 @@
 
 
 /* Copy the first part of user declarations.  */
-#line 1 "parser.y" /* yacc.c:339  */
+#line 1 "src/parser.y" /* yacc.c:339  */
 
 #include <assert.h>
 #include <math.h>
@@ -73,7 +73,7 @@
 #define YYMALLOC jv_mem_alloc
 #define YYFREE jv_mem_free
 
-#line 77 "parser.c" /* yacc.c:339  */
+#line 77 "src/parser.c" /* yacc.c:339  */
 
 # ifndef YY_NULLPTR
 #  if defined __cplusplus && 201103L <= __cplusplus
@@ -93,8 +93,8 @@
 
 /* In a future release of Bison, this section will be replaced
    by #include "y.tab.h".  */
-#ifndef YY_YY_PARSER_H_INCLUDED
-# define YY_YY_PARSER_H_INCLUDED
+#ifndef YY_YY_SRC_PARSER_H_INCLUDED
+# define YY_YY_SRC_PARSER_H_INCLUDED
 /* Debug traces.  */
 #ifndef YYDEBUG
 # define YYDEBUG 0
 extern int yydebug;
 #endif
 /* "%code requires" blocks.  */
-#line 11 "parser.y" /* yacc.c:355  */
+#line 11 "src/parser.y" /* yacc.c:355  */
 
 #include "locfile.h"
 struct lexer_param;
@@ -120,7 +120,7 @@ struct lexer_param;
     }                                           \
   } while (0)
 
-#line 124 "parser.c" /* yacc.c:355  */
+#line 124 "src/parser.c" /* yacc.c:355  */
 
 /* Token type.  */
 #ifndef YYTOKENTYPE
@@ -224,12 +224,12 @@ struct lexer_param;
 typedef union YYSTYPE YYSTYPE;
 union YYSTYPE
 {
-#line 31 "parser.y" /* yacc.c:355  */
+#line 31 "src/parser.y" /* yacc.c:355  */
 
   jv literal;
   block blk;
 
-#line 233 "parser.c" /* yacc.c:355  */
+#line 233 "src/parser.c" /* yacc.c:355  */
 };
 # define YYSTYPE_IS_TRIVIAL 1
 # define YYSTYPE_IS_DECLARED 1
@@ -253,10 +253,10 @@ struct YYLTYPE
 
 int yyparse (block* answer, int* errors, struct locfile* locations, struct lexer_param* lexer_param_ptr);
 
-#endif /* !YY_YY_PARSER_H_INCLUDED  */
+#endif /* !YY_YY_SRC_PARSER_H_INCLUDED  */
 
 /* Copy the second part of user declarations.  */
-#line 123 "parser.y" /* yacc.c:358  */
+#line 123 "src/parser.y" /* yacc.c:358  */
 
 #include "lexer.h"
 struct lexer_param {
@@ -422,7 +422,7 @@ static block gen_update(block object, block val, int optype) {
 }
 
 
-#line 426 "parser.c" /* yacc.c:358  */
+#line 426 "src/parser.c" /* yacc.c:358  */
 
 #ifdef short
 # undef short
@@ -666,16 +666,16 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  27
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1938
+#define YYLAST   1871
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  68
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  28
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  156
+#define YYNRULES  157
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  306
+#define YYNSTATES  307
 
 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
    by yylex, with out-of-bounds checking.  */
@@ -738,10 +738,10 @@ static const yytype_uint16 yyrline[] =
      683,   686,   689,   692,   695,   698,   701,   704,   707,   710,
      713,   716,   719,   726,   730,   734,   746,   751,   752,   753,
      754,   757,   760,   765,   770,   774,   777,   782,   785,   790,
-     793,   798,   801,   804,   807,   810,   815,   818,   821,   824,
-     827,   830,   833,   836,   839,   842,   845,   848,   851,   854,
-     857,   860,   863,   866,   869,   874,   877,   878,   879,   882,
-     885,   888,   891,   895,   899,   903,   906
+     793,   798,   801,   804,   807,   810,   813,   819,   822,   825,
+     828,   831,   834,   837,   840,   843,   846,   849,   852,   855,
+     858,   861,   864,   867,   870,   873,   878,   881,   882,   883,
+     886,   889,   892,   895,   899,   903,   907,   910
 };
 #endif
 
@@ -783,51 +783,51 @@ static const yytype_uint16 yytoknum[] =
 };
 # endif
 
-#define YYPACT_NINF -180
+#define YYPACT_NINF -155
 
 #define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-180)))
+  (!!((Yystate) == (-155)))
 
-#define YYTABLE_NINF -146
+#define YYTABLE_NINF -147
 
 #define yytable_value_is_error(Yytable_value) \
-  (!!((Yytable_value) == (-146)))
+  (!!((Yytable_value) == (-147)))
 
   /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-      27,   736,    13,    51,    -5,    -8,  -180,    23,  -180,    67,
-     736,   779,   779,   736,    15,     3,  -180,   736,   464,    20,
-     274,   437,   339,  1282,   736,  -180,     6,  -180,     8,     8,
-     736,    51,   646,   736,  -180,  -180,    -7,  1631,     9,    52,
-      46,    74,  -180,    75,  -180,   -10,    22,  1117,  -180,  -180,
-    -180,   109,    23,    55,    49,  -180,   918,   -37,    61,  -180,
-    -180,  -180,  -180,  -180,  -180,  -180,  -180,  -180,  -180,  -180,
-    -180,  -180,  -180,  -180,  -180,  -180,  -180,  -180,   528,   113,
-      64,    69,    68,    87,   736,   736,   736,   736,   736,   736,
-     736,   736,   736,   736,   736,   736,   736,   736,   736,   736,
-     736,   736,   736,   736,   736,   736,   736,   736,  -180,  -180,
-    1795,    79,   -25,     8,   148,   124,  -180,  -180,  -180,  1795,
-     736,  -180,  -180,  1332,  1795,   -20,  -180,  -180,    14,   736,
-     555,   -25,   -25,   619,    92,  -180,    18,  -180,  -180,  -180,
-    -180,  -180,  -180,   395,  -180,   773,    82,  1150,  -180,   773,
-     773,  -180,   395,  1861,   184,   184,  1828,   334,  1881,  1861,
-    1861,  1861,  1861,  1861,  1861,   184,   184,  1795,  1828,  1861,
-     184,   184,   -10,   -10,    83,    83,    83,  -180,   135,   -25,
-     837,    97,    90,    85,   736,    94,   869,    19,  -180,  -180,
-     736,  -180,    80,  -180,   140,    -2,  -180,  1382,  -180,  1582,
-      99,   100,  -180,  -180,   736,  -180,   736,  -180,   114,  -180,
-     773,   117,    56,    98,   103,   117,   117,  -180,  -180,  -180,
-     -12,   105,   736,   164,   107,   -21,  -180,   110,   736,  -180,
-    -180,   967,  -180,   709,   116,  -180,   170,  -180,  -180,  -180,
-      14,   118,  -180,   736,   736,  -180,   736,   736,  1795,  1664,
-    -180,   773,   773,   773,   -25,  -180,   -25,  1183,  -180,   -25,
-     837,  -180,   -25,  1795,   119,   122,  1016,  -180,  -180,  -180,
-     736,  1713,  1762,  1432,  1482,  -180,   117,   117,   117,  -180,
-    -180,   120,  -180,  -180,  -180,  -180,  -180,   127,  1532,  -180,
-     736,   736,   736,   -25,  -180,  -180,  1582,  1216,  1065,  -180,
-    -180,  -180,   736,  -180,  1249,  -180
+      20,   709,    42,    50,    14,    -3,  -155,     7,  -155,    58,
+     709,   191,   191,   709,    18,     2,  -155,   709,   465,    19,
+     275,   438,   340,  1215,   709,  -155,     6,  -155,    -2,    -2,
+     709,    50,   619,   709,  -155,  -155,     9,  1564,    17,    46,
+      54,   111,  -155,   116,  -155,     3,    62,  1050,  -155,  -155,
+    -155,   122,     7,    68,    66,  -155,   851,   -26,    72,  -155,
+    -155,  -155,  -155,  -155,  -155,  -155,  -155,  -155,  -155,  -155,
+    -155,  -155,  -155,  -155,  -155,  -155,  -155,  -155,   709,   131,
+      74,    75,    71,    92,   709,   709,   709,   709,   709,   709,
+     709,   709,   709,   709,   709,   709,   709,   709,   709,   709,
+     709,   709,   709,   709,   709,   709,   709,   709,  -155,  -155,
+    1728,    84,   -21,    -2,   148,   130,  -155,  -155,  -155,  1728,
+     709,  -155,  -155,  1265,  1728,    -5,  -155,  -155,     0,   709,
+     529,   -21,   -21,   556,    98,  -155,    34,  -155,  -155,  -155,
+    -155,  -155,  -155,   396,   689,  -155,   689,  1083,  -155,   689,
+     689,  -155,   396,  1794,   335,   335,  1761,   768,  1814,  1794,
+    1794,  1794,  1794,  1794,  1794,   335,   335,  1728,  1761,  1794,
+     335,   335,     3,     3,    90,    90,    90,  -155,   146,   -21,
+     770,   105,   101,    94,   709,   103,   802,    11,  -155,  -155,
+     709,  -155,    70,  -155,   157,    61,  -155,  1315,  -155,  1515,
+     104,   106,  -155,  -155,   709,  -155,   709,  -155,   -10,  -155,
+     689,   121,     1,   121,   107,   121,   121,  -155,  -155,  -155,
+     -19,   110,   112,   709,   164,   114,   -23,  -155,   117,   709,
+    -155,  -155,   900,  -155,   646,   123,  -155,   169,  -155,  -155,
+    -155,     0,   119,  -155,   709,   709,  -155,   709,   709,  1728,
+    1597,  -155,   689,   689,   -21,  -155,   -21,   -21,  1116,  -155,
+     -21,   770,  -155,   -21,  1728,   125,   127,   949,  -155,  -155,
+    -155,   709,  1646,  1695,  1365,  1415,  -155,   121,   121,  -155,
+    -155,  -155,   124,  -155,  -155,  -155,  -155,  -155,   133,  1465,
+    -155,   709,   709,   709,   -21,  -155,  -155,  1515,  1149,   998,
+    -155,  -155,  -155,   709,  -155,  1182,  -155
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -840,48 +840,48 @@ static const yytype_uint8 yydefact[] =
        0,     0,     0,     0,     0,    97,    47,     1,     0,     0,
        8,     6,     0,     0,    77,    62,     0,     0,     0,     0,
       18,     0,    75,     0,    64,    32,     0,     0,   104,   103,
-      84,     0,     0,    83,     0,   101,     0,     0,   154,   126,
-     127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
-     137,   138,   139,   140,   141,   142,   143,   144,     0,     0,
-     152,     0,     0,   146,     0,     0,     0,     0,     0,     0,
+      84,     0,     0,    83,     0,   101,     0,     0,   155,   127,
+     128,   129,   130,   131,   132,   133,   134,   135,   136,   137,
+     138,   139,   140,   141,   142,   143,   144,   145,     0,     0,
+     153,     0,     0,   147,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,    21,     5,
       10,    80,     0,     0,     0,     0,    53,    52,     3,     2,
        8,     7,    48,     0,   113,     0,   111,    64,     0,     0,
        0,     0,     0,     0,     0,    74,     0,   107,    99,    85,
-      79,   108,   100,     0,   110,     0,     0,     0,   153,     0,
+      79,   108,   100,     0,     0,   110,     0,     0,   154,     0,
        0,   102,     0,    40,    41,    42,    25,    24,    23,    27,
       31,    34,    36,    39,    26,    45,    46,    28,    29,    22,
       43,    44,    30,    33,    35,    37,    38,    76,     0,     0,
        0,     0,    82,     0,     0,    89,     0,     0,     9,    49,
        0,   106,     0,    59,     0,     0,    56,     0,    16,     0,
-       0,     0,    19,    17,     0,    65,     0,    61,     0,   148,
-       0,   149,    71,     0,     0,   151,   150,   147,   114,   117,
-       0,     0,     0,     0,     0,     0,   119,     0,     0,    78,
-     109,     0,    88,     0,    87,    51,     0,   112,    63,    58,
-       0,     0,    54,     0,     0,    15,     0,     0,    20,     0,
-      70,     0,     0,     0,     0,   115,     0,     0,   121,     0,
-       0,   116,     0,    11,    95,    94,     0,    86,    50,    57,
-       0,     0,     0,     0,     0,    66,    69,   156,   155,   118,
-     122,     0,   124,   120,   123,    92,    91,    93,     0,    68,
-       0,     0,     0,     0,    90,    55,     0,     0,     0,   125,
-      67,    12,     0,    14,     0,    13
+       0,     0,    19,    17,     0,    65,     0,    61,     0,   149,
+       0,   157,    71,   150,     0,   152,   151,   148,   114,   117,
+       0,     0,     0,     0,     0,     0,     0,   119,     0,     0,
+      78,   109,     0,    88,     0,    87,    51,     0,   112,    63,
+      58,     0,     0,    54,     0,     0,    15,     0,     0,    20,
+       0,    70,     0,     0,     0,   115,     0,     0,     0,   121,
+       0,     0,   116,     0,    11,    95,    94,     0,    86,    50,
+      57,     0,     0,     0,     0,     0,    66,    69,   156,   118,
+     126,   122,     0,   124,   120,   123,    92,    91,    93,     0,
+      68,     0,     0,     0,     0,    90,    55,     0,     0,     0,
+     125,    67,    12,     0,    14,     0,    13
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -180,  -180,  -180,   150,    66,    -1,  -180,  -180,   158,    -9,
-    -180,   -50,     5,  -180,  -180,    65,  -105,  -144,    -4,  -180,
-       7,  -129,  -180,  -180,   -67,  -179,  -115,  -180
+    -155,  -155,  -155,   156,    73,    -1,  -155,  -155,   162,   -12,
+    -155,   -49,     5,  -155,  -155,    67,   -96,  -136,    -4,  -155,
+      12,  -130,  -155,  -155,   -57,  -154,  -104,  -155
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
       -1,     2,     3,    30,   118,   110,    31,    32,   115,    24,
-     195,   196,    25,    44,   127,   136,   245,   211,    26,   125,
-     126,   181,   220,   225,   226,    81,    82,    83
+     195,   196,    25,    44,   127,   136,   246,   211,    26,   125,
+     126,   181,   220,   226,   227,    81,    82,    83
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -889,322 +889,306 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      23,   227,   200,   201,    42,   215,   216,    38,    39,    37,
-     143,   111,    40,    27,   111,    52,    45,    47,   193,   112,
-      56,   120,   131,   235,    48,    53,   260,    80,   209,   119,
-     144,   123,   124,   116,   116,   254,   178,   217,   190,   179,
-     191,   180,     1,   105,   106,   107,   261,   108,    16,    34,
-     219,    49,   128,   255,    33,   129,   240,   111,   241,   205,
-     206,   111,   207,    35,    43,   132,   250,    28,    29,   113,
-     114,    36,   113,   114,   133,   194,    41,   147,   134,   135,
-     236,   227,   137,   153,   154,   155,   156,   157,   158,   159,
+      23,   200,   201,    42,   193,    52,   111,    38,    39,    37,
+     213,   111,    40,   215,   216,   236,    45,    47,   120,   112,
+      56,   143,   111,    48,   261,    53,   228,    80,   254,   119,
+     131,   123,   124,   116,   116,     1,   144,   143,    16,   209,
+     178,   145,    27,   179,   262,   180,   255,    35,   217,   219,
+      49,   111,   144,   190,    34,   191,   105,   106,   107,   132,
+     108,   194,    36,    43,   113,   114,    28,    29,   128,   113,
+     114,   129,   237,    33,   251,   205,   206,   147,   207,    41,
+     113,   114,   133,   153,   154,   155,   156,   157,   158,   159,
      160,   161,   162,   163,   164,   165,   166,   167,   168,   169,
-     170,   171,   172,   173,   174,   175,   176,   276,   277,   278,
-     139,   120,   140,   186,   141,   113,   114,   148,   182,   113,
-     114,   205,   206,   145,   238,   279,   149,   280,   197,   199,
-     282,   150,   203,   284,   152,   151,   177,   187,   204,   218,
-     108,   212,   213,   228,   239,   212,   212,   229,    80,   183,
-     230,   232,     4,     5,     6,     7,     8,    80,   246,   247,
-     252,   143,     9,   251,   299,   253,    10,   256,   258,   259,
-      11,    12,   262,   267,   268,    13,   285,    14,    15,   286,
-     270,   121,   293,   231,   294,   224,   188,   117,    16,   124,
-     269,   300,   192,   283,  -146,  -146,     0,   237,     0,     0,
-      17,     0,     0,   248,     0,   249,   212,    18,     0,    19,
+     170,   171,   172,   173,   174,   175,   176,   228,   120,   113,
+     114,   205,   206,   186,   239,   134,   277,   278,   182,   241,
+     135,   242,   137,   139,   279,   140,   280,   281,   197,   199,
+     283,   141,   203,   285,   146,   148,   149,   150,   151,   152,
+     212,   177,   212,   187,   204,   212,   212,   108,    80,   183,
+     218,   229,     4,     5,     6,     7,     8,    80,   230,   231,
+     233,   240,     9,   247,   300,   248,    10,   252,   259,   253,
+      11,    12,   256,   269,   257,    13,   260,    14,    15,   263,
+     268,   271,   286,   232,   287,   225,   294,   121,    16,   124,
+     295,   117,   270,   188,   192,     4,     5,     6,     7,     8,
+      17,   301,   238,   249,   284,   250,   212,    18,     0,    19,
      184,    20,    21,   185,    22,     0,     0,     0,     0,     0,
-       0,   257,  -146,  -146,     0,     0,     0,   263,     0,     0,
-       0,     0,   266,  -146,  -146,   103,   104,   105,   106,   107,
-       0,   108,   271,   272,     0,   273,   274,   212,   212,   212,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,   224,     0,     0,     0,   288,
-       0,     0,     0,     0,   -72,    50,     0,     0,    51,   -72,
-       0,    52,     0,   -72,   -72,   -72,   -72,   -72,     0,   296,
-     297,   298,     0,   -72,   -72,   -72,     0,     0,   -72,   -72,
-     -72,   304,   -72,     0,     0,     0,   -72,   -72,   -72,   -72,
-     -72,   -72,   -72,   -72,    16,     0,     0,   -72,     0,     0,
-     -72,   -72,   -72,   -72,   -72,   -72,   -72,   -72,   -72,   -72,
-       0,   -72,   -72,     0,   -72,     0,   -72,   -72,   -72,   -72,
-      57,   -72,     0,    58,    85,    86,    52,     0,     0,     0,
-       0,     0,    59,    60,    61,    62,    63,    64,    65,    66,
-      67,    68,    69,    70,    71,    72,    73,    74,    75,    76,
-      77,     0,    96,    97,     0,     0,     0,     0,     0,    16,
-       0,     0,     0,   101,   102,   103,   104,   105,   106,   107,
-       0,   108,     0,     0,     0,     0,   208,     0,    78,    58,
-      79,     0,    52,     0,     0,     0,  -145,     0,    59,    60,
-      61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
-      71,    72,    73,    74,    75,    76,    77,     0,     0,     0,
-       0,     0,     0,     0,     0,    16,     0,     0,    54,     0,
-       0,     4,     5,     6,     7,     8,     0,     0,     0,     0,
-       0,     9,     0,     0,    78,    10,    79,     0,     0,    11,
-      12,     0,  -145,     0,    13,    46,    14,    15,     4,     5,
-       6,     7,     8,     0,     0,     0,     0,    16,     9,     0,
-       0,     0,    10,     0,     0,     0,    11,    12,     0,    17,
-       0,    13,     0,    14,    15,     0,    18,     0,    19,     0,
-      20,    21,    55,    22,    16,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    17,     0,     0,     0,
-       0,     0,     0,    18,     0,    19,     0,    20,    21,   146,
-      22,     0,     4,     5,     6,     7,     8,     0,     0,     0,
-       0,     0,     9,     0,     0,     0,    10,     0,     0,     0,
-      11,    12,     0,     0,     0,    13,   198,    14,    15,     4,
+       0,    15,   258,     0,     0,     0,     0,     0,   264,     0,
+       0,    16,     0,   267,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   272,   273,     0,   274,   275,   212,   212,
+      18,     0,    19,     0,    20,    21,     0,    22,     0,     0,
+       0,     0,     0,     0,     0,     0,   225,     0,     0,     0,
+     289,     0,     0,     0,     0,   -72,    50,     0,     0,    51,
+     -72,     0,    52,     0,   -72,   -72,   -72,   -72,   -72,     0,
+     297,   298,   299,     0,   -72,   -72,   -72,     0,     0,   -72,
+     -72,   -72,   305,   -72,     0,     0,     0,   -72,   -72,   -72,
+     -72,   -72,   -72,   -72,   -72,    16,     0,     0,   -72,     0,
+       0,   -72,   -72,   -72,   -72,   -72,   -72,   -72,   -72,   -72,
+     -72,     0,   -72,   -72,     0,   -72,     0,   -72,   -72,   -72,
+     -72,    57,   -72,     0,    58,  -147,  -147,    52,     0,     0,
+       0,     0,     0,    59,    60,    61,    62,    63,    64,    65,
+      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+      76,    77,     0,  -147,  -147,     0,     0,     0,     0,     0,
+      16,     0,     0,     0,  -147,  -147,   103,   104,   105,   106,
+     107,     0,   108,     0,     0,     0,     0,   208,     0,    78,
+      58,    79,     0,    52,     0,     0,     0,  -146,     0,    59,
+      60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
+      70,    71,    72,    73,    74,    75,    76,    77,     0,     0,
+       0,     0,     0,     0,     0,     0,    16,     0,     0,    54,
+       0,     0,     4,     5,     6,     7,     8,     0,     0,     0,
+       0,     0,     9,     0,     0,    78,    10,    79,     0,     0,
+      11,    12,     0,  -146,     0,    13,    46,    14,    15,     4,
        5,     6,     7,     8,     0,     0,     0,     0,    16,     9,
        0,     0,     0,    10,     0,     0,     0,    11,    12,     0,
       17,     0,    13,     0,    14,    15,     0,    18,     0,    19,
-       0,    20,    21,     0,    22,    16,     0,     0,     0,     0,
+       0,    20,    21,    55,    22,    16,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,    17,     0,     0,
        0,     0,     0,     0,    18,     0,    19,     0,    20,    21,
-     202,    22,     0,     4,     5,     6,     7,     8,     0,     0,
+     198,    22,     0,     4,     5,     6,     7,     8,     0,     0,
        0,     0,     0,     9,     0,     0,     0,    10,     0,     0,
-       0,    11,    12,     0,     0,     0,    13,     0,    14,    15,
+       0,    11,    12,     0,     0,     0,    13,   202,    14,    15,
        4,     5,     6,     7,     8,     0,     0,     0,     0,    16,
        9,     0,     0,     0,    10,     0,     0,     0,    11,    12,
        0,    17,     0,    13,     0,    14,    15,     0,    18,     0,
       19,     0,    20,    21,     0,    22,    16,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,    17,     0,
-       0,     0,     0,     0,   122,    18,     0,    19,     0,    20,
+       0,     0,     0,     0,     0,    18,     0,    19,     0,    20,
       21,     0,    22,     4,     5,     6,     7,     8,     0,     0,
        0,     0,     0,     9,     0,     0,     0,    10,     0,     0,
        0,    11,    12,     0,     0,     0,    13,     0,    14,    15,
        4,     5,     6,     7,     8,     0,     0,     0,     0,    16,
        9,     0,     0,     0,    10,     0,     0,     0,    11,    12,
-       0,    17,     0,    13,     0,    14,    15,     0,    18,     0,
-      19,     0,    20,    21,   265,    22,    16,     4,     5,     6,
-       7,     8,     0,     4,     5,     6,     7,     8,    17,     0,
+       0,    17,     0,    13,     0,    14,    15,   122,    18,     0,
+      19,     0,    20,    21,     0,    22,    16,     0,     0,     0,
+       0,     0,     0,     4,     5,     6,     7,     8,    17,     0,
        0,     0,     0,     0,     0,    18,     0,    19,     0,    20,
-      21,     0,    22,    15,     0,     0,     0,     0,     0,    15,
-       0,     0,     0,    16,     0,     0,     0,     0,     0,    16,
-       0,     0,     0,     0,     0,   210,     0,     0,     0,     0,
-       0,     0,    18,     0,    19,     0,    20,    21,    18,    22,
-      19,   221,    20,    21,    52,    22,     0,     0,     0,     0,
-      59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
-      69,    70,    71,    72,    73,    74,    75,    76,    77,     0,
-       0,     0,     0,     0,     0,     0,     0,    16,    84,    85,
-      86,    87,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    88,    89,   222,     0,   223,     0,
+      21,   266,    22,     4,     5,     6,     7,     8,     0,    15,
+       0,     0,     0,     9,     0,     0,     0,    10,     0,    16,
+       0,    11,    12,     0,     0,     0,    13,     0,    14,    15,
+       0,   210,     0,     0,     0,     0,     0,     0,    18,    16,
+      19,     0,    20,    21,     0,    22,     0,     0,     0,     0,
+       0,    17,     0,     0,     0,     0,     0,     0,    18,     0,
+      19,   221,    20,    21,   222,    22,     0,    52,    85,    86,
+       0,     0,     0,    59,    60,    61,    62,    63,    64,    65,
+      66,    67,    68,    69,    70,    71,    72,    73,    74,    75,
+      76,    77,     0,     0,     0,     0,    96,    97,     0,     0,
+      16,    84,    85,    86,    87,     0,     0,   101,   102,   103,
+     104,   105,   106,   107,     0,   108,     0,    88,    89,   223,
+       0,   224,     0,     0,    90,    91,    92,    93,    94,    95,
+      96,    97,     0,     0,     0,     0,     0,     0,    98,    99,
+     100,   101,   102,   103,   104,   105,   106,   107,     0,   108,
+      84,    85,    86,    87,   234,     0,     0,   235,     0,     0,
+       0,     0,     0,     0,     0,     0,    88,    89,     0,     0,
+       0,     0,     0,    90,    91,    92,    93,    94,    95,    96,
+      97,     0,     0,     0,     0,     0,     0,    98,    99,   100,
+     101,   102,   103,   104,   105,   106,   107,     0,   108,    84,
+      85,    86,    87,     0,     0,     0,   142,     0,     0,     0,
+       0,     0,     0,     0,     0,    88,    89,     0,     0,     0,
+       0,     0,    90,    91,    92,    93,    94,    95,    96,    97,
+       0,     0,     0,     0,     0,     0,    98,    99,   100,   101,
+     102,   103,   104,   105,   106,   107,     0,   108,    84,    85,
+      86,    87,     0,     0,     0,   265,     0,     0,     0,     0,
+       0,     0,     0,     0,    88,    89,     0,     0,     0,     0,
        0,    90,    91,    92,    93,    94,    95,    96,    97,     0,
        0,     0,     0,     0,     0,    98,    99,   100,   101,   102,
      103,   104,   105,   106,   107,     0,   108,    84,    85,    86,
-      87,   233,     0,     0,   234,     0,     0,     0,     0,     0,
+      87,     0,     0,     0,   288,     0,     0,     0,     0,     0,
        0,     0,     0,    88,    89,     0,     0,     0,     0,     0,
       90,    91,    92,    93,    94,    95,    96,    97,     0,     0,
        0,     0,     0,     0,    98,    99,   100,   101,   102,   103,
-     104,   105,   106,   107,     0,   108,    84,    85,    86,    87,
-       0,     0,     0,   142,     0,     0,     0,     0,     0,     0,
-       0,     0,    88,    89,     0,     0,     0,     0,     0,    90,
-      91,    92,    93,    94,    95,    96,    97,     0,     0,     0,
-       0,     0,     0,    98,    99,   100,   101,   102,   103,   104,
-     105,   106,   107,     0,   108,    84,    85,    86,    87,     0,
-       0,     0,   264,     0,     0,     0,     0,     0,     0,     0,
-       0,    88,    89,     0,     0,     0,     0,     0,    90,    91,
-      92,    93,    94,    95,    96,    97,     0,     0,     0,     0,
-       0,     0,    98,    99,   100,   101,   102,   103,   104,   105,
-     106,   107,     0,   108,    84,    85,    86,    87,     0,     0,
-       0,   287,     0,     0,     0,     0,     0,     0,     0,     0,
-      88,    89,     0,     0,     0,     0,     0,    90,    91,    92,
-      93,    94,    95,    96,    97,     0,     0,     0,     0,     0,
-       0,    98,    99,   100,   101,   102,   103,   104,   105,   106,
-     107,     0,   108,   302,     0,   303,    84,    85,    86,    87,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    88,    89,     0,     0,     0,     0,     0,    90,
-      91,    92,    93,    94,    95,    96,    97,     0,     0,    84,
-      85,    86,    87,    98,    99,   100,   101,   102,   103,   104,
-     105,   106,   107,     0,   108,    88,    89,   138,     0,     0,
+     104,   105,   106,   107,     0,   108,   303,     0,   304,    84,
+      85,    86,    87,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    88,    89,     0,     0,     0,
        0,     0,    90,    91,    92,    93,    94,    95,    96,    97,
        0,     0,    84,    85,    86,    87,    98,    99,   100,   101,
      102,   103,   104,   105,   106,   107,     0,   108,    88,    89,
-     214,     0,     0,     0,     0,    90,    91,    92,    93,    94,
+     138,     0,     0,     0,     0,    90,    91,    92,    93,    94,
       95,    96,    97,     0,     0,    84,    85,    86,    87,    98,
       99,   100,   101,   102,   103,   104,   105,   106,   107,     0,
-     108,    88,    89,   281,     0,     0,     0,     0,    90,    91,
+     108,    88,    89,   214,     0,     0,     0,     0,    90,    91,
       92,    93,    94,    95,    96,    97,     0,     0,    84,    85,
       86,    87,    98,    99,   100,   101,   102,   103,   104,   105,
-     106,   107,     0,   108,    88,    89,   301,     0,     0,     0,
+     106,   107,     0,   108,    88,    89,   282,     0,     0,     0,
        0,    90,    91,    92,    93,    94,    95,    96,    97,     0,
        0,    84,    85,    86,    87,    98,    99,   100,   101,   102,
-     103,   104,   105,   106,   107,     0,   108,    88,    89,   305,
-       0,     0,     0,     0,    90,    91,    92,    93,    94,    95,
-      96,    97,     0,     0,     0,     0,     0,     0,    98,    99,
-     100,   101,   102,   103,   104,   105,   106,   107,     0,   108,
-     109,    84,    85,    86,    87,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    88,    89,     0,
+     103,   104,   105,   106,   107,     0,   108,    88,    89,   302,
        0,     0,     0,     0,    90,    91,    92,    93,    94,    95,
-      96,    97,     0,     0,     0,     0,     0,     0,    98,    99,
-     100,   101,   102,   103,   104,   105,   106,   107,     0,   108,
-     189,    84,    85,    86,    87,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    88,    89,     0,
-       0,     0,     0,     0,    90,    91,    92,    93,    94,    95,
-      96,    97,     0,     0,     0,     0,     0,     0,    98,    99,
-     100,   101,   102,   103,   104,   105,   106,   107,     0,   108,
-     242,    84,    85,    86,    87,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    88,    89,     0,
-       0,     0,     0,     0,    90,    91,    92,    93,    94,    95,
-      96,    97,     0,     0,     0,     0,     0,     0,    98,    99,
-     100,   101,   102,   103,   104,   105,   106,   107,     0,   108,
-     291,    84,    85,    86,    87,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    88,    89,     0,
-       0,     0,     0,     0,    90,    91,    92,    93,    94,    95,
-      96,    97,     0,     0,     0,     0,     0,     0,    98,    99,
-     100,   101,   102,   103,   104,   105,   106,   107,     0,   108,
-     292,    84,    85,    86,    87,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    88,    89,     0,
-       0,     0,     0,     0,    90,    91,    92,    93,    94,    95,
-      96,    97,     0,     0,     0,     0,     0,     0,    98,    99,
-     100,   101,   102,   103,   104,   105,   106,   107,     0,   108,
-     295,    84,    85,    86,    87,     0,     0,     0,     0,     0,
-       0,     0,   243,   244,     0,     0,     0,    88,    89,     0,
-       0,     0,     0,     0,    90,    91,    92,    93,    94,    95,
-      96,    97,     0,     0,     0,     0,     0,     0,    98,    99,
+      96,    97,     0,     0,    84,    85,    86,    87,    98,    99,
      100,   101,   102,   103,   104,   105,   106,   107,     0,   108,
-      84,    85,    86,    87,     0,     0,     0,     0,     0,     0,
-     130,     0,     0,     0,     0,     0,    88,    89,     0,     0,
-       0,     0,     0,    90,    91,    92,    93,    94,    95,    96,
-      97,     0,     0,    84,    85,    86,    87,    98,    99,   100,
-     101,   102,   103,   104,   105,   106,   107,     0,   108,    88,
+      88,    89,   306,     0,     0,     0,     0,    90,    91,    92,
+      93,    94,    95,    96,    97,     0,     0,     0,     0,     0,
+       0,    98,    99,   100,   101,   102,   103,   104,   105,   106,
+     107,     0,   108,   109,    84,    85,    86,    87,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      88,    89,     0,     0,     0,     0,     0,    90,    91,    92,
+      93,    94,    95,    96,    97,     0,     0,     0,     0,     0,
+       0,    98,    99,   100,   101,   102,   103,   104,   105,   106,
+     107,     0,   108,   189,    84,    85,    86,    87,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      88,    89,     0,     0,     0,     0,     0,    90,    91,    92,
+      93,    94,    95,    96,    97,     0,     0,     0,     0,     0,
+       0,    98,    99,   100,   101,   102,   103,   104,   105,   106,
+     107,     0,   108,   243,    84,    85,    86,    87,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      88,    89,     0,     0,     0,     0,     0,    90,    91,    92,
+      93,    94,    95,    96,    97,     0,     0,     0,     0,     0,
+       0,    98,    99,   100,   101,   102,   103,   104,   105,   106,
+     107,     0,   108,   292,    84,    85,    86,    87,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      88,    89,     0,     0,     0,     0,     0,    90,    91,    92,
+      93,    94,    95,    96,    97,     0,     0,     0,     0,     0,
+       0,    98,    99,   100,   101,   102,   103,   104,   105,   106,
+     107,     0,   108,   293,    84,    85,    86,    87,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      88,    89,     0,     0,     0,     0,     0,    90,    91,    92,
+      93,    94,    95,    96,    97,     0,     0,     0,     0,     0,
+       0,    98,    99,   100,   101,   102,   103,   104,   105,   106,
+     107,     0,   108,   296,    84,    85,    86,    87,     0,     0,
+       0,     0,     0,     0,     0,   244,   245,     0,     0,     0,
+      88,    89,     0,     0,     0,     0,     0,    90,    91,    92,
+      93,    94,    95,    96,    97,     0,     0,     0,     0,     0,
+       0,    98,    99,   100,   101,   102,   103,   104,   105,   106,
+     107,     0,   108,    84,    85,    86,    87,     0,     0,     0,
+       0,     0,     0,   130,     0,     0,     0,     0,     0,    88,
       89,     0,     0,     0,     0,     0,    90,    91,    92,    93,
-      94,    95,    96,    97,     0,     0,     0,   275,     0,     0,
+      94,    95,    96,    97,     0,     0,    84,    85,    86,    87,
       98,    99,   100,   101,   102,   103,   104,   105,   106,   107,
-       0,   108,    84,    85,    86,    87,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   289,    88,    89,
-       0,     0,     0,     0,     0,    90,    91,    92,    93,    94,
-      95,    96,    97,     0,     0,     0,     0,     0,     0,    98,
-      99,   100,   101,   102,   103,   104,   105,   106,   107,     0,
-     108,    84,    85,    86,    87,     0,     0,     0,     0,     0,
-       0,   290,     0,     0,     0,     0,     0,    88,    89,     0,
-       0,     0,     0,     0,    90,    91,    92,    93,    94,    95,
-      96,    97,     0,     0,    84,    85,    86,    87,    98,    99,
-     100,   101,   102,   103,   104,   105,   106,   107,     0,   108,
+       0,   108,    88,    89,     0,     0,     0,     0,     0,    90,
+      91,    92,    93,    94,    95,    96,    97,     0,     0,     0,
+     276,     0,     0,    98,    99,   100,   101,   102,   103,   104,
+     105,   106,   107,     0,   108,    84,    85,    86,    87,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     290,    88,    89,     0,     0,     0,     0,     0,    90,    91,
+      92,    93,    94,    95,    96,    97,     0,     0,     0,     0,
+       0,     0,    98,    99,   100,   101,   102,   103,   104,   105,
+     106,   107,     0,   108,    84,    85,    86,    87,     0,     0,
+       0,     0,     0,     0,   291,     0,     0,     0,     0,     0,
       88,    89,     0,     0,     0,     0,     0,    90,    91,    92,
       93,    94,    95,    96,    97,     0,     0,    84,    85,    86,
       87,    98,    99,   100,   101,   102,   103,   104,   105,   106,
      107,     0,   108,    88,    89,     0,     0,     0,     0,     0,
       90,    91,    92,    93,    94,    95,    96,    97,     0,     0,
-    -146,    85,    86,     0,     0,     0,   100,   101,   102,   103,
+      84,    85,    86,    87,    98,    99,   100,   101,   102,   103,
      104,   105,   106,   107,     0,   108,    88,    89,     0,     0,
-       0,    85,    86,  -146,  -146,  -146,  -146,  -146,  -146,    96,
-      97,     0,     0,     0,     0,     0,    88,     0,     0,  -146,
-     101,   102,   103,   104,   105,   106,   107,     0,   108,    96,
-      97,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     101,   102,   103,   104,   105,   106,   107,     0,   108
+       0,     0,     0,    90,    91,    92,    93,    94,    95,    96,
+      97,     0,     0,  -147,    85,    86,     0,     0,     0,   100,
+     101,   102,   103,   104,   105,   106,   107,     0,   108,    88,
+      89,     0,     0,     0,    85,    86,  -147,  -147,  -147,  -147,
+    -147,  -147,    96,    97,     0,     0,     0,     0,     0,    88,
+       0,     0,  -147,   101,   102,   103,   104,   105,   106,   107,
+       0,   108,    96,    97,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   101,   102,   103,   104,   105,   106,   107,
+       0,   108
 };
 
 static const yytype_int16 yycheck[] =
 {
-       1,   180,   131,   132,     1,   149,   150,    11,    12,    10,
-      47,     5,    13,     0,     5,     7,    17,    18,     4,    13,
-      21,    30,    13,     4,     4,    20,    47,    22,   143,    30,
-      67,    32,    33,    28,    29,    47,    61,   152,    58,    64,
-      60,    66,    15,    53,    54,    55,    67,    57,    40,    57,
-     179,    31,    59,    65,    59,    62,    58,     5,    60,    41,
-      42,     5,    44,    40,    61,    13,   210,    16,    17,    63,
-      64,     4,    63,    64,    28,    61,    61,    78,     4,     4,
-      61,   260,    60,    84,    85,    86,    87,    88,    89,    90,
+       1,   131,   132,     1,     4,     7,     5,    11,    12,    10,
+     146,     5,    13,   149,   150,     4,    17,    18,    30,    13,
+      21,    47,     5,     4,    47,    20,   180,    22,    47,    30,
+      13,    32,    33,    28,    29,    15,    62,    47,    40,   143,
+      61,    67,     0,    64,    67,    66,    65,    40,   152,   179,
+      31,     5,    62,    58,    57,    60,    53,    54,    55,    13,
+      57,    61,     4,    61,    63,    64,    16,    17,    59,    63,
+      64,    62,    61,    59,   210,    41,    42,    78,    44,    61,
+      63,    64,    28,    84,    85,    86,    87,    88,    89,    90,
       91,    92,    93,    94,    95,    96,    97,    98,    99,   100,
-     101,   102,   103,   104,   105,   106,   107,   251,   252,   253,
-       1,   120,    57,   114,    65,    63,    64,     4,   113,    63,
-      64,    41,    42,    62,    44,   254,    62,   256,   129,   130,
-     259,    62,   133,   262,    47,    67,    57,    13,    46,     4,
-      57,   145,    60,    46,     4,   149,   150,    57,   143,     1,
-      65,    57,     4,     5,     6,     7,     8,   152,    59,    59,
-      62,    47,    14,    46,   293,    62,    18,    62,     4,    62,
-      22,    23,    62,    57,     4,    27,    57,    29,    30,    57,
-      62,    31,    62,   184,    57,   180,   120,    29,    40,   190,
-     240,   296,   127,   260,    10,    11,    -1,   190,    -1,    -1,
-      52,    -1,    -1,   204,    -1,   206,   210,    59,    -1,    61,
+     101,   102,   103,   104,   105,   106,   107,   261,   120,    63,
+      64,    41,    42,   114,    44,     4,   252,   253,   113,    58,
+       4,    60,    60,     1,   254,    57,   256,   257,   129,   130,
+     260,    65,   133,   263,    62,     4,    62,    62,    67,    47,
+     144,    57,   146,    13,    46,   149,   150,    57,   143,     1,
+       4,    46,     4,     5,     6,     7,     8,   152,    57,    65,
+      57,     4,    14,    59,   294,    59,    18,    46,     4,    62,
+      22,    23,    62,     4,    62,    27,    62,    29,    30,    62,
+      57,    62,    57,   184,    57,   180,    62,    31,    40,   190,
+      57,    29,   241,   120,   127,     4,     5,     6,     7,     8,
+      52,   297,   190,   204,   261,   206,   210,    59,    -1,    61,
       62,    63,    64,    65,    66,    -1,    -1,    -1,    -1,    -1,
-      -1,   222,    38,    39,    -1,    -1,    -1,   228,    -1,    -1,
-      -1,    -1,   233,    49,    50,    51,    52,    53,    54,    55,
-      -1,    57,   243,   244,    -1,   246,   247,   251,   252,   253,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,   260,    -1,    -1,    -1,   270,
-      -1,    -1,    -1,    -1,     0,     1,    -1,    -1,     4,     5,
-      -1,     7,    -1,     9,    10,    11,    12,    13,    -1,   290,
-     291,   292,    -1,    19,    20,    21,    -1,    -1,    24,    25,
-      26,   302,    28,    -1,    -1,    -1,    32,    33,    34,    35,
-      36,    37,    38,    39,    40,    -1,    -1,    43,    -1,    -1,
-      46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-      -1,    57,    58,    -1,    60,    -1,    62,    63,    64,    65,
-       1,    67,    -1,     4,    10,    11,     7,    -1,    -1,    -1,
-      -1,    -1,    13,    14,    15,    16,    17,    18,    19,    20,
-      21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-      31,    -1,    38,    39,    -1,    -1,    -1,    -1,    -1,    40,
-      -1,    -1,    -1,    49,    50,    51,    52,    53,    54,    55,
-      -1,    57,    -1,    -1,    -1,    -1,     1,    -1,    59,     4,
-      61,    -1,     7,    -1,    -1,    -1,    67,    -1,    13,    14,
-      15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
-      25,    26,    27,    28,    29,    30,    31,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    40,    -1,    -1,     1,    -1,
-      -1,     4,     5,     6,     7,     8,    -1,    -1,    -1,    -1,
-      -1,    14,    -1,    -1,    59,    18,    61,    -1,    -1,    22,
-      23,    -1,    67,    -1,    27,     1,    29,    30,     4,     5,
-       6,     7,     8,    -1,    -1,    -1,    -1,    40,    14,    -1,
-      -1,    -1,    18,    -1,    -1,    -1,    22,    23,    -1,    52,
-      -1,    27,    -1,    29,    30,    -1,    59,    -1,    61,    -1,
-      63,    64,    65,    66,    40,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    52,    -1,    -1,    -1,
-      -1,    -1,    -1,    59,    -1,    61,    -1,    63,    64,     1,
-      66,    -1,     4,     5,     6,     7,     8,    -1,    -1,    -1,
-      -1,    -1,    14,    -1,    -1,    -1,    18,    -1,    -1,    -1,
-      22,    23,    -1,    -1,    -1,    27,     1,    29,    30,     4,
+      -1,    30,   223,    -1,    -1,    -1,    -1,    -1,   229,    -1,
+      -1,    40,    -1,   234,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   244,   245,    -1,   247,   248,   252,   253,
+      59,    -1,    61,    -1,    63,    64,    -1,    66,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   261,    -1,    -1,    -1,
+     271,    -1,    -1,    -1,    -1,     0,     1,    -1,    -1,     4,
+       5,    -1,     7,    -1,     9,    10,    11,    12,    13,    -1,
+     291,   292,   293,    -1,    19,    20,    21,    -1,    -1,    24,
+      25,    26,   303,    28,    -1,    -1,    -1,    32,    33,    34,
+      35,    36,    37,    38,    39,    40,    -1,    -1,    43,    -1,
+      -1,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    -1,    57,    58,    -1,    60,    -1,    62,    63,    64,
+      65,     1,    67,    -1,     4,    10,    11,     7,    -1,    -1,
+      -1,    -1,    -1,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+      30,    31,    -1,    38,    39,    -1,    -1,    -1,    -1,    -1,
+      40,    -1,    -1,    -1,    49,    50,    51,    52,    53,    54,
+      55,    -1,    57,    -1,    -1,    -1,    -1,     1,    -1,    59,
+       4,    61,    -1,     7,    -1,    -1,    -1,    67,    -1,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    27,    28,    29,    30,    31,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    40,    -1,    -1,     1,
+      -1,    -1,     4,     5,     6,     7,     8,    -1,    -1,    -1,
+      -1,    -1,    14,    -1,    -1,    59,    18,    61,    -1,    -1,
+      22,    23,    -1,    67,    -1,    27,     1,    29,    30,     4,
        5,     6,     7,     8,    -1,    -1,    -1,    -1,    40,    14,
       -1,    -1,    -1,    18,    -1,    -1,    -1,    22,    23,    -1,
       52,    -1,    27,    -1,    29,    30,    -1,    59,    -1,    61,
-      -1,    63,    64,    -1,    66,    40,    -1,    -1,    -1,    -1,
+      -1,    63,    64,    65,    66,    40,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    52,    -1,    -1,
       -1,    -1,    -1,    -1,    59,    -1,    61,    -1,    63,    64,
        1,    66,    -1,     4,     5,     6,     7,     8,    -1,    -1,
       -1,    -1,    -1,    14,    -1,    -1,    -1,    18,    -1,    -1,
-      -1,    22,    23,    -1,    -1,    -1,    27,    -1,    29,    30,
+      -1,    22,    23,    -1,    -1,    -1,    27,     1,    29,    30,
        4,     5,     6,     7,     8,    -1,    -1,    -1,    -1,    40,
       14,    -1,    -1,    -1,    18,    -1,    -1,    -1,    22,    23,
       -1,    52,    -1,    27,    -1,    29,    30,    -1,    59,    -1,
       61,    -1,    63,    64,    -1,    66,    40,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    52,    -1,
-      -1,    -1,    -1,    -1,    58,    59,    -1,    61,    -1,    63,
+      -1,    -1,    -1,    -1,    -1,    59,    -1,    61,    -1,    63,
       64,    -1,    66,     4,     5,     6,     7,     8,    -1,    -1,
       -1,    -1,    -1,    14,    -1,    -1,    -1,    18,    -1,    -1,
       -1,    22,    23,    -1,    -1,    -1,    27,    -1,    29,    30,
        4,     5,     6,     7,     8,    -1,    -1,    -1,    -1,    40,
       14,    -1,    -1,    -1,    18,    -1,    -1,    -1,    22,    23,
-      -1,    52,    -1,    27,    -1,    29,    30,    -1,    59,    -1,
-      61,    -1,    63,    64,    65,    66,    40,     4,     5,     6,
-       7,     8,    -1,     4,     5,     6,     7,     8,    52,    -1,
+      -1,    52,    -1,    27,    -1,    29,    30,    58,    59,    -1,
+      61,    -1,    63,    64,    -1,    66,    40,    -1,    -1,    -1,
+      -1,    -1,    -1,     4,     5,     6,     7,     8,    52,    -1,
       -1,    -1,    -1,    -1,    -1,    59,    -1,    61,    -1,    63,
-      64,    -1,    66,    30,    -1,    -1,    -1,    -1,    -1,    30,
-      -1,    -1,    -1,    40,    -1,    -1,    -1,    -1,    -1,    40,
-      -1,    -1,    -1,    -1,    -1,    52,    -1,    -1,    -1,    -1,
-      -1,    -1,    59,    -1,    61,    -1,    63,    64,    59,    66,
-      61,     4,    63,    64,     7,    66,    -1,    -1,    -1,    -1,
-      13,    14,    15,    16,    17,    18,    19,    20,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,    30,    31,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    40,     9,    10,
-      11,    12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    25,    26,    59,    -1,    61,    -1,
+      64,    65,    66,     4,     5,     6,     7,     8,    -1,    30,
+      -1,    -1,    -1,    14,    -1,    -1,    -1,    18,    -1,    40,
+      -1,    22,    23,    -1,    -1,    -1,    27,    -1,    29,    30,
+      -1,    52,    -1,    -1,    -1,    -1,    -1,    -1,    59,    40,
+      61,    -1,    63,    64,    -1,    66,    -1,    -1,    -1,    -1,
+      -1,    52,    -1,    -1,    -1,    -1,    -1,    -1,    59,    -1,
+      61,     1,    63,    64,     4,    66,    -1,     7,    10,    11,
+      -1,    -1,    -1,    13,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
+      30,    31,    -1,    -1,    -1,    -1,    38,    39,    -1,    -1,
+      40,     9,    10,    11,    12,    -1,    -1,    49,    50,    51,
+      52,    53,    54,    55,    -1,    57,    -1,    25,    26,    59,
+      -1,    61,    -1,    -1,    32,    33,    34,    35,    36,    37,
+      38,    39,    -1,    -1,    -1,    -1,    -1,    -1,    46,    47,
+      48,    49,    50,    51,    52,    53,    54,    55,    -1,    57,
+       9,    10,    11,    12,    62,    -1,    -1,    65,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    25,    26,    -1,    -1,
+      -1,    -1,    -1,    32,    33,    34,    35,    36,    37,    38,
+      39,    -1,    -1,    -1,    -1,    -1,    -1,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    55,    -1,    57,     9,
+      10,    11,    12,    -1,    -1,    -1,    65,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    25,    26,    -1,    -1,    -1,
+      -1,    -1,    32,    33,    34,    35,    36,    37,    38,    39,
+      -1,    -1,    -1,    -1,    -1,    -1,    46,    47,    48,    49,
+      50,    51,    52,    53,    54,    55,    -1,    57,     9,    10,
+      11,    12,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    25,    26,    -1,    -1,    -1,    -1,
       -1,    32,    33,    34,    35,    36,    37,    38,    39,    -1,
       -1,    -1,    -1,    -1,    -1,    46,    47,    48,    49,    50,
       51,    52,    53,    54,    55,    -1,    57,     9,    10,    11,
-      12,    62,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,
+      12,    -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    25,    26,    -1,    -1,    -1,    -1,    -1,
       32,    33,    34,    35,    36,    37,    38,    39,    -1,    -1,
       -1,    -1,    -1,    -1,    46,    47,    48,    49,    50,    51,
-      52,    53,    54,    55,    -1,    57,     9,    10,    11,    12,
-      -1,    -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    25,    26,    -1,    -1,    -1,    -1,    -1,    32,
-      33,    34,    35,    36,    37,    38,    39,    -1,    -1,    -1,
-      -1,    -1,    -1,    46,    47,    48,    49,    50,    51,    52,
-      53,    54,    55,    -1,    57,     9,    10,    11,    12,    -1,
-      -1,    -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    25,    26,    -1,    -1,    -1,    -1,    -1,    32,    33,
-      34,    35,    36,    37,    38,    39,    -1,    -1,    -1,    -1,
-      -1,    -1,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,    55,    -1,    57,     9,    10,    11,    12,    -1,    -1,
-      -1,    65,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      25,    26,    -1,    -1,    -1,    -1,    -1,    32,    33,    34,
-      35,    36,    37,    38,    39,    -1,    -1,    -1,    -1,    -1,
-      -1,    46,    47,    48,    49,    50,    51,    52,    53,    54,
-      55,    -1,    57,    58,    -1,    60,     9,    10,    11,    12,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    25,    26,    -1,    -1,    -1,    -1,    -1,    32,
-      33,    34,    35,    36,    37,    38,    39,    -1,    -1,     9,
-      10,    11,    12,    46,    47,    48,    49,    50,    51,    52,
-      53,    54,    55,    -1,    57,    25,    26,    60,    -1,    -1,
+      52,    53,    54,    55,    -1,    57,    58,    -1,    60,     9,
+      10,    11,    12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    25,    26,    -1,    -1,    -1,
       -1,    -1,    32,    33,    34,    35,    36,    37,    38,    39,
       -1,    -1,     9,    10,    11,    12,    46,    47,    48,    49,
       50,    51,    52,    53,    54,    55,    -1,    57,    25,    26,
@@ -1219,68 +1203,72 @@ static const yytype_int16 yycheck[] =
       -1,     9,    10,    11,    12,    46,    47,    48,    49,    50,
       51,    52,    53,    54,    55,    -1,    57,    25,    26,    60,
       -1,    -1,    -1,    -1,    32,    33,    34,    35,    36,    37,
-      38,    39,    -1,    -1,    -1,    -1,    -1,    -1,    46,    47,
-      48,    49,    50,    51,    52,    53,    54,    55,    -1,    57,
-      58,     9,    10,    11,    12,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    25,    26,    -1,
-      -1,    -1,    -1,    -1,    32,    33,    34,    35,    36,    37,
-      38,    39,    -1,    -1,    -1,    -1,    -1,    -1,    46,    47,
-      48,    49,    50,    51,    52,    53,    54,    55,    -1,    57,
-      58,     9,    10,    11,    12,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    25,    26,    -1,
-      -1,    -1,    -1,    -1,    32,    33,    34,    35,    36,    37,
-      38,    39,    -1,    -1,    -1,    -1,    -1,    -1,    46,    47,
-      48,    49,    50,    51,    52,    53,    54,    55,    -1,    57,
-      58,     9,    10,    11,    12,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    25,    26,    -1,
-      -1,    -1,    -1,    -1,    32,    33,    34,    35,    36,    37,
-      38,    39,    -1,    -1,    -1,    -1,    -1,    -1,    46,    47,
-      48,    49,    50,    51,    52,    53,    54,    55,    -1,    57,
-      58,     9,    10,    11,    12,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    25,    26,    -1,
-      -1,    -1,    -1,    -1,    32,    33,    34,    35,    36,    37,
-      38,    39,    -1,    -1,    -1,    -1,    -1,    -1,    46,    47,
-      48,    49,    50,    51,    52,    53,    54,    55,    -1,    57,
-      58,     9,    10,    11,    12,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    25,    26,    -1,
-      -1,    -1,    -1,    -1,    32,    33,    34,    35,    36,    37,
-      38,    39,    -1,    -1,    -1,    -1,    -1,    -1,    46,    47,
-      48,    49,    50,    51,    52,    53,    54,    55,    -1,    57,
-      58,     9,    10,    11,    12,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    20,    21,    -1,    -1,    -1,    25,    26,    -1,
-      -1,    -1,    -1,    -1,    32,    33,    34,    35,    36,    37,
-      38,    39,    -1,    -1,    -1,    -1,    -1,    -1,    46,    47,
+      38,    39,    -1,    -1,     9,    10,    11,    12,    46,    47,
       48,    49,    50,    51,    52,    53,    54,    55,    -1,    57,
-       9,    10,    11,    12,    -1,    -1,    -1,    -1,    -1,    -1,
-      19,    -1,    -1,    -1,    -1,    -1,    25,    26,    -1,    -1,
-      -1,    -1,    -1,    32,    33,    34,    35,    36,    37,    38,
-      39,    -1,    -1,     9,    10,    11,    12,    46,    47,    48,
-      49,    50,    51,    52,    53,    54,    55,    -1,    57,    25,
+      25,    26,    60,    -1,    -1,    -1,    -1,    32,    33,    34,
+      35,    36,    37,    38,    39,    -1,    -1,    -1,    -1,    -1,
+      -1,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    -1,    57,    58,     9,    10,    11,    12,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      25,    26,    -1,    -1,    -1,    -1,    -1,    32,    33,    34,
+      35,    36,    37,    38,    39,    -1,    -1,    -1,    -1,    -1,
+      -1,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    -1,    57,    58,     9,    10,    11,    12,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      25,    26,    -1,    -1,    -1,    -1,    -1,    32,    33,    34,
+      35,    36,    37,    38,    39,    -1,    -1,    -1,    -1,    -1,
+      -1,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    -1,    57,    58,     9,    10,    11,    12,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      25,    26,    -1,    -1,    -1,    -1,    -1,    32,    33,    34,
+      35,    36,    37,    38,    39,    -1,    -1,    -1,    -1,    -1,
+      -1,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    -1,    57,    58,     9,    10,    11,    12,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      25,    26,    -1,    -1,    -1,    -1,    -1,    32,    33,    34,
+      35,    36,    37,    38,    39,    -1,    -1,    -1,    -1,    -1,
+      -1,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    -1,    57,    58,     9,    10,    11,    12,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      25,    26,    -1,    -1,    -1,    -1,    -1,    32,    33,    34,
+      35,    36,    37,    38,    39,    -1,    -1,    -1,    -1,    -1,
+      -1,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    -1,    57,    58,     9,    10,    11,    12,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    20,    21,    -1,    -1,    -1,
+      25,    26,    -1,    -1,    -1,    -1,    -1,    32,    33,    34,
+      35,    36,    37,    38,    39,    -1,    -1,    -1,    -1,    -1,
+      -1,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      55,    -1,    57,     9,    10,    11,    12,    -1,    -1,    -1,
+      -1,    -1,    -1,    19,    -1,    -1,    -1,    -1,    -1,    25,
       26,    -1,    -1,    -1,    -1,    -1,    32,    33,    34,    35,
-      36,    37,    38,    39,    -1,    -1,    -1,    43,    -1,    -1,
+      36,    37,    38,    39,    -1,    -1,     9,    10,    11,    12,
       46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
-      -1,    57,     9,    10,    11,    12,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    24,    25,    26,
-      -1,    -1,    -1,    -1,    -1,    32,    33,    34,    35,    36,
-      37,    38,    39,    -1,    -1,    -1,    -1,    -1,    -1,    46,
-      47,    48,    49,    50,    51,    52,    53,    54,    55,    -1,
-      57,     9,    10,    11,    12,    -1,    -1,    -1,    -1,    -1,
-      -1,    19,    -1,    -1,    -1,    -1,    -1,    25,    26,    -1,
-      -1,    -1,    -1,    -1,    32,    33,    34,    35,    36,    37,
-      38,    39,    -1,    -1,     9,    10,    11,    12,    46,    47,
-      48,    49,    50,    51,    52,    53,    54,    55,    -1,    57,
+      -1,    57,    25,    26,    -1,    -1,    -1,    -1,    -1,    32,
+      33,    34,    35,    36,    37,    38,    39,    -1,    -1,    -1,
+      43,    -1,    -1,    46,    47,    48,    49,    50,    51,    52,
+      53,    54,    55,    -1,    57,     9,    10,    11,    12,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      24,    25,    26,    -1,    -1,    -1,    -1,    -1,    32,    33,
+      34,    35,    36,    37,    38,    39,    -1,    -1,    -1,    -1,
+      -1,    -1,    46,    47,    48,    49,    50,    51,    52,    53,
+      54,    55,    -1,    57,     9,    10,    11,    12,    -1,    -1,
+      -1,    -1,    -1,    -1,    19,    -1,    -1,    -1,    -1,    -1,
       25,    26,    -1,    -1,    -1,    -1,    -1,    32,    33,    34,
       35,    36,    37,    38,    39,    -1,    -1,     9,    10,    11,
       12,    46,    47,    48,    49,    50,    51,    52,    53,    54,
       55,    -1,    57,    25,    26,    -1,    -1,    -1,    -1,    -1,
       32,    33,    34,    35,    36,    37,    38,    39,    -1,    -1,
-       9,    10,    11,    -1,    -1,    -1,    48,    49,    50,    51,
+       9,    10,    11,    12,    46,    47,    48,    49,    50,    51,
       52,    53,    54,    55,    -1,    57,    25,    26,    -1,    -1,
-      -1,    10,    11,    32,    33,    34,    35,    36,    37,    38,
-      39,    -1,    -1,    -1,    -1,    -1,    25,    -1,    -1,    48,
-      49,    50,    51,    52,    53,    54,    55,    -1,    57,    38,
-      39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      49,    50,    51,    52,    53,    54,    55,    -1,    57
+      -1,    -1,    -1,    32,    33,    34,    35,    36,    37,    38,
+      39,    -1,    -1,     9,    10,    11,    -1,    -1,    -1,    48,
+      49,    50,    51,    52,    53,    54,    55,    -1,    57,    25,
+      26,    -1,    -1,    -1,    10,    11,    32,    33,    34,    35,
+      36,    37,    38,    39,    -1,    -1,    -1,    -1,    -1,    25,
+      -1,    -1,    48,    49,    50,    51,    52,    53,    54,    55,
+      -1,    57,    38,    39,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    49,    50,    51,    52,    53,    54,    55,
+      -1,    57
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1301,23 +1289,23 @@ static const yytype_uint8 yystos[] =
       73,     5,    13,    63,    64,    76,    80,    76,    72,    73,
       77,    71,    58,    73,    73,    87,    88,    82,    59,    62,
       19,    13,    13,    28,     4,     4,    83,    60,    60,     1,
-      57,    65,    65,    47,    67,    62,     1,    73,     4,    62,
+      57,    65,    65,    47,    62,    67,    62,    73,     4,    62,
       62,    67,    47,    73,    73,    73,    73,    73,    73,    73,
       73,    73,    73,    73,    73,    73,    73,    73,    73,    73,
       73,    73,    73,    73,    73,    73,    73,    57,    61,    64,
       66,    89,    80,     1,    62,    65,    73,    13,    72,    58,
       58,    60,    83,     4,    61,    78,    79,    73,     1,    73,
       89,    89,     1,    73,    46,    41,    42,    44,     1,    94,
-      52,    85,    86,    60,    60,    85,    85,    94,     4,    89,
-      90,     4,    59,    61,    80,    91,    92,    93,    46,    57,
-      65,    73,    57,    62,    65,     4,    61,    88,    44,     4,
-      58,    60,    58,    20,    21,    84,    59,    59,    73,    73,
-      85,    46,    62,    62,    47,    65,    62,    73,     4,    62,
-      47,    67,    62,    73,    65,    65,    73,    57,     4,    79,
-      62,    73,    73,    73,    73,    43,    85,    85,    85,    89,
-      89,    60,    89,    92,    89,    57,    57,    65,    73,    24,
-      19,    58,    58,    62,    57,    58,    73,    73,    73,    89,
-      84,    60,    58,    60,    73,    60
+      52,    85,    86,    85,    60,    85,    85,    94,     4,    89,
+      90,     1,     4,    59,    61,    80,    91,    92,    93,    46,
+      57,    65,    73,    57,    62,    65,     4,    61,    88,    44,
+       4,    58,    60,    58,    20,    21,    84,    59,    59,    73,
+      73,    85,    46,    62,    47,    65,    62,    62,    73,     4,
+      62,    47,    67,    62,    73,    65,    65,    73,    57,     4,
+      79,    62,    73,    73,    73,    73,    43,    85,    85,    89,
+      89,    89,    60,    89,    92,    89,    57,    57,    65,    73,
+      24,    19,    58,    58,    62,    57,    58,    73,    73,    73,
+      89,    84,    60,    58,    60,    73,    60
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
@@ -1335,10 +1323,10 @@ static const yytype_uint8 yyr1[] =
       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,    89,    90,    90,    91,
-      91,    92,    92,    92,    92,    92,    93,    93,    93,    93,
+      91,    92,    92,    92,    92,    92,    92,    93,    93,    93,
       93,    93,    93,    93,    93,    93,    93,    93,    93,    93,
-      93,    93,    93,    93,    93,    94,    94,    94,    94,    95,
-      95,    95,    95,    95,    95,    95,    95
+      93,    93,    93,    93,    93,    93,    94,    94,    94,    94,
+      95,    95,    95,    95,    95,    95,    95,    95
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -1356,10 +1344,10 @@ static const yytype_uint8 yyr2[] =
        7,     6,     6,     6,     5,     5,     1,     1,     1,     3,
        3,     2,     3,     2,     2,     1,     4,     3,     3,     4,
        3,     1,     3,     1,     2,     3,     3,     1,     3,     1,
-       3,     2,     3,     3,     3,     5,     1,     1,     1,     1,
+       3,     2,     3,     3,     3,     5,     3,     1,     1,     1,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     1,     0,     1,     3,     3,     3,
-       3,     3,     1,     2,     1,     5,     5
+       1,     1,     1,     1,     1,     1,     0,     1,     3,     3,
+       3,     3,     3,     1,     2,     1,     5,     3
 };
 
 
@@ -1860,177 +1848,177 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
   switch (yytype)
     {
           case 4: /* IDENT  */
-#line 36 "parser.y" /* yacc.c:1257  */
+#line 36 "src/parser.y" /* yacc.c:1257  */
       { jv_free(((*yyvaluep).literal)); }
-#line 1866 "parser.c" /* yacc.c:1257  */
+#line 1854 "src/parser.c" /* yacc.c:1257  */
         break;
 
     case 5: /* FIELD  */
-#line 36 "parser.y" /* yacc.c:1257  */
+#line 36 "src/parser.y" /* yacc.c:1257  */
       { jv_free(((*yyvaluep).literal)); }
-#line 1872 "parser.c" /* yacc.c:1257  */
+#line 1860 "src/parser.c" /* yacc.c:1257  */
         break;
 
     case 6: /* LITERAL  */
-#line 36 "parser.y" /* yacc.c:1257  */
+#line 36 "src/parser.y" /* yacc.c:1257  */
       { jv_free(((*yyvaluep).literal)); }
-#line 1878 "parser.c" /* yacc.c:1257  */
+#line 1866 "src/parser.c" /* yacc.c:1257  */
         break;
 
     case 7: /* FORMAT  */
-#line 36 "parser.y" /* yacc.c:1257  */
+#line 36 "src/parser.y" /* yacc.c:1257  */
       { jv_free(((*yyvaluep).literal)); }
-#line 1884 "parser.c" /* yacc.c:1257  */
+#line 1872 "src/parser.c" /* yacc.c:1257  */
         break;
 
     case 41: /* QQSTRING_TEXT  */
-#line 36 "parser.y" /* yacc.c:1257  */
+#line 36 "src/parser.y" /* yacc.c:1257  */
       { jv_free(((*yyvaluep).literal)); }
-#line 1890 "parser.c" /* yacc.c:1257  */
+#line 1878 "src/parser.c" /* yacc.c:1257  */
         break;
 
     case 70: /* Module  */
-#line 37 "parser.y" /* yacc.c:1257  */
+#line 37 "src/parser.y" /* yacc.c:1257  */
       { block_free(((*yyvaluep).blk)); }
-#line 1896 "parser.c" /* yacc.c:1257  */
+#line 1884 "src/parser.c" /* yacc.c:1257  */
         break;
 
     case 71: /* Imports  */
-#line 37 "parser.y" /* yacc.c:1257  */
+#line 37 "src/parser.y" /* yacc.c:1257  */
       { block_free(((*yyvaluep).blk)); }
-#line 1902 "parser.c" /* yacc.c:1257  */
+#line 1890 "src/parser.c" /* yacc.c:1257  */
         break;
 
     case 72: /* FuncDefs  */
-#line 37 "parser.y" /* yacc.c:1257  */
+#line 37 "src/parser.y" /* yacc.c:1257  */
       { block_free(((*yyvaluep).blk)); }
-#line 1908 "parser.c" /* yacc.c:1257  */
+#line 1896 "src/parser.c" /* yacc.c:1257  */
         break;
 
     case 73: /* Exp  */
-#line 37 "parser.y" /* yacc.c:1257  */
+#line 37 "src/parser.y" /* yacc.c:1257  */
       { block_free(((*yyvaluep).blk)); }
-#line 1914 "parser.c" /* yacc.c:1257  */
+#line 1902 "src/parser.c" /* yacc.c:1257  */
         break;
 
     case 74: /* Import  */
-#line 37 "parser.y" /* yacc.c:1257  */
+#line 37 "src/parser.y" /* yacc.c:1257  */
       { block_free(((*yyvaluep).blk)); }
-#line 1920 "parser.c" /* yacc.c:1257  */
+#line 1908 "src/parser.c" /* yacc.c:1257  */
         break;
 
     case 75: /* ImportWhat  */
-#line 37 "parser.y" /* yacc.c:1257  */
+#line 37 "src/parser.y" /* yacc.c:1257  */
       { block_free(((*yyvaluep).blk)); }
-#line 1926 "parser.c" /* yacc.c:1257  */
+#line 1914 "src/parser.c" /* yacc.c:1257  */
         break;
 
     case 76: /* ImportFrom  */
-#line 37 "parser.y" /* yacc.c:1257  */
+#line 37 "src/parser.y" /* yacc.c:1257  */
       { block_free(((*yyvaluep).blk)); }
-#line 1932 "parser.c" /* yacc.c:1257  */
+#line 1920 "src/parser.c" /* yacc.c:1257  */
         break;
 
     case 77: /* FuncDef  */
-#line 37 "parser.y" /* yacc.c:1257  */
+#line 37 "src/parser.y" /* yacc.c:1257  */
       { block_free(((*yyvaluep).blk)); }
-#line 1938 "parser.c" /* yacc.c:1257  */
+#line 1926 "src/parser.c" /* yacc.c:1257  */
         break;
 
     case 78: /* Params  */
-#line 37 "parser.y" /* yacc.c:1257  */
+#line 37 "src/parser.y" /* yacc.c:1257  */
       { block_free(((*yyvaluep).blk)); }
-#line 1944 "parser.c" /* yacc.c:1257  */
+#line 1932 "src/parser.c" /* yacc.c:1257  */
         break;
 
     case 79: /* Param  */
-#line 37 "parser.y" /* yacc.c:1257  */
+#line 37 "src/parser.y" /* yacc.c:1257  */
       { block_free(((*yyvaluep).blk)); }
-#line 1950 "parser.c" /* yacc.c:1257  */
+#line 1938 "src/parser.c" /* yacc.c:1257  */
         break;
 
     case 80: /* String  */
-#line 37 "parser.y" /* yacc.c:1257  */
+#line 37 "src/parser.y" /* yacc.c:1257  */
       { block_free(((*yyvaluep).blk)); }
-#line 1956 "parser.c" /* yacc.c:1257  */
+#line 1944 "src/parser.c" /* yacc.c:1257  */
         break;
 
     case 83: /* QQString  */
-#line 37 "parser.y" /* yacc.c:1257  */
+#line 37 "src/parser.y" /* yacc.c:1257  */
       { block_free(((*yyvaluep).blk)); }
-#line 1962 "parser.c" /* yacc.c:1257  */
+#line 1950 "src/parser.c" /* yacc.c:1257  */
         break;
 
     case 84: /* ElseBody  */
-#line 37 "parser.y" /* yacc.c:1257  */
+#line 37 "src/parser.y" /* yacc.c:1257  */
       { block_free(((*yyvaluep).blk)); }
-#line 1968 "parser.c" /* yacc.c:1257  */
+#line 1956 "src/parser.c" /* yacc.c:1257  */
         break;
 
     case 85: /* ExpD  */
-#line 37 "parser.y" /* yacc.c:1257  */
+#line 37 "src/parser.y" /* yacc.c:1257  */
       { block_free(((*yyvaluep).blk)); }
-#line 1974 "parser.c" /* yacc.c:1257  */
+#line 1962 "src/parser.c" /* yacc.c:1257  */
         break;
 
     case 86: /* Term  */
-#line 37 "parser.y" /* yacc.c:1257  */
+#line 37 "src/parser.y" /* yacc.c:1257  */
       { block_free(((*yyvaluep).blk)); }
-#line 1980 "parser.c" /* yacc.c:1257  */
+#line 1968 "src/parser.c" /* yacc.c:1257  */
         break;
 
     case 87: /* Args  */
-#line 37 "parser.y" /* yacc.c:1257  */
+#line 37 "src/parser.y" /* yacc.c:1257  */
       { block_free(((*yyvaluep).blk)); }
-#line 1986 "parser.c" /* yacc.c:1257  */
+#line 1974 "src/parser.c" /* yacc.c:1257  */
         break;
 
     case 88: /* Arg  */
-#line 37 "parser.y" /* yacc.c:1257  */
+#line 37 "src/parser.y" /* yacc.c:1257  */
       { block_free(((*yyvaluep).blk)); }
-#line 1992 "parser.c" /* yacc.c:1257  */
+#line 1980 "src/parser.c" /* yacc.c:1257  */
         break;
 
     case 89: /* Pattern  */
-#line 37 "parser.y" /* yacc.c:1257  */
+#line 37 "src/parser.y" /* yacc.c:1257  */
       { block_free(((*yyvaluep).blk)); }
-#line 1998 "parser.c" /* yacc.c:1257  */
+#line 1986 "src/parser.c" /* yacc.c:1257  */
         break;
 
     case 90: /* ArrayPats  */
-#line 37 "parser.y" /* yacc.c:1257  */
+#line 37 "src/parser.y" /* yacc.c:1257  */
       { block_free(((*yyvaluep).blk)); }
-#line 2004 "parser.c" /* yacc.c:1257  */
+#line 1992 "src/parser.c" /* yacc.c:1257  */
         break;
 
     case 91: /* ObjPats  */
-#line 37 "parser.y" /* yacc.c:1257  */
+#line 37 "src/parser.y" /* yacc.c:1257  */
       { block_free(((*yyvaluep).blk)); }
-#line 2010 "parser.c" /* yacc.c:1257  */
+#line 1998 "src/parser.c" /* yacc.c:1257  */
         break;
 
     case 92: /* ObjPat  */
-#line 37 "parser.y" /* yacc.c:1257  */
+#line 37 "src/parser.y" /* yacc.c:1257  */
       { block_free(((*yyvaluep).blk)); }
-#line 2016 "parser.c" /* yacc.c:1257  */
+#line 2004 "src/parser.c" /* yacc.c:1257  */
         break;
 
     case 93: /* Keyword  */
-#line 36 "parser.y" /* yacc.c:1257  */
+#line 36 "src/parser.y" /* yacc.c:1257  */
       { jv_free(((*yyvaluep).literal)); }
-#line 2022 "parser.c" /* yacc.c:1257  */
+#line 2010 "src/parser.c" /* yacc.c:1257  */
         break;
 
     case 94: /* MkDict  */
-#line 37 "parser.y" /* yacc.c:1257  */
+#line 37 "src/parser.y" /* yacc.c:1257  */
       { block_free(((*yyvaluep).blk)); }
-#line 2028 "parser.c" /* yacc.c:1257  */
+#line 2016 "src/parser.c" /* yacc.c:1257  */
         break;
 
     case 95: /* MkDictPair  */
-#line 37 "parser.y" /* yacc.c:1257  */
+#line 37 "src/parser.y" /* yacc.c:1257  */
       { block_free(((*yyvaluep).blk)); }
-#line 2034 "parser.c" /* yacc.c:1257  */
+#line 2022 "src/parser.c" /* yacc.c:1257  */
         break;
 
 
@@ -2322,31 +2310,31 @@ yyreduce:
   switch (yyn)
     {
         case 2:
-#line 291 "parser.y" /* yacc.c:1646  */
+#line 291 "src/parser.y" /* yacc.c:1646  */
     {
   *answer = BLOCK((yyvsp[-2].blk), (yyvsp[-1].blk), gen_op_simple(TOP), (yyvsp[0].blk));
 }
-#line 2330 "parser.c" /* yacc.c:1646  */
+#line 2318 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 3:
-#line 294 "parser.y" /* yacc.c:1646  */
+#line 294 "src/parser.y" /* yacc.c:1646  */
     {
   *answer = BLOCK((yyvsp[-2].blk), (yyvsp[-1].blk), (yyvsp[0].blk));
 }
-#line 2338 "parser.c" /* yacc.c:1646  */
+#line 2326 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 4:
-#line 299 "parser.y" /* yacc.c:1646  */
+#line 299 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_noop();
 }
-#line 2346 "parser.c" /* yacc.c:1646  */
+#line 2334 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 5:
-#line 302 "parser.y" /* yacc.c:1646  */
+#line 302 "src/parser.y" /* yacc.c:1646  */
     {
   if (!block_is_const((yyvsp[-1].blk))) {
     FAIL((yyloc), "Module metadata must be constant");
@@ -2356,366 +2344,366 @@ yyreduce:
     (yyval.blk) = gen_module((yyvsp[-1].blk));
   }
 }
-#line 2360 "parser.c" /* yacc.c:1646  */
+#line 2348 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 6:
-#line 313 "parser.y" /* yacc.c:1646  */
+#line 313 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_noop();
 }
-#line 2368 "parser.c" /* yacc.c:1646  */
+#line 2356 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 7:
-#line 316 "parser.y" /* yacc.c:1646  */
+#line 316 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = BLOCK((yyvsp[-1].blk), (yyvsp[0].blk));
 }
-#line 2376 "parser.c" /* yacc.c:1646  */
+#line 2364 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 8:
-#line 321 "parser.y" /* yacc.c:1646  */
+#line 321 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_noop();
 }
-#line 2384 "parser.c" /* yacc.c:1646  */
+#line 2372 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 9:
-#line 324 "parser.y" /* yacc.c:1646  */
+#line 324 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = block_bind((yyvsp[-1].blk), (yyvsp[0].blk), OP_IS_CALL_PSEUDO);
 }
-#line 2392 "parser.c" /* yacc.c:1646  */
+#line 2380 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 10:
-#line 329 "parser.y" /* yacc.c:1646  */
+#line 329 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = block_bind_referenced((yyvsp[-1].blk), (yyvsp[0].blk), OP_IS_CALL_PSEUDO);
 }
-#line 2400 "parser.c" /* yacc.c:1646  */
+#line 2388 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 11:
-#line 333 "parser.y" /* yacc.c:1646  */
+#line 333 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_destructure((yyvsp[-4].blk), (yyvsp[-2].blk), (yyvsp[0].blk));
 }
-#line 2408 "parser.c" /* yacc.c:1646  */
+#line 2396 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 12:
-#line 337 "parser.y" /* yacc.c:1646  */
+#line 337 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_reduce((yyvsp[-7].blk), (yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk));
 }
-#line 2416 "parser.c" /* yacc.c:1646  */
+#line 2404 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 13:
-#line 341 "parser.y" /* yacc.c:1646  */
+#line 341 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_foreach((yyvsp[-9].blk), (yyvsp[-7].blk), (yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk));
 }
-#line 2424 "parser.c" /* yacc.c:1646  */
+#line 2412 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 14:
-#line 345 "parser.y" /* yacc.c:1646  */
+#line 345 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_foreach((yyvsp[-7].blk), (yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk), gen_noop());
 }
-#line 2432 "parser.c" /* yacc.c:1646  */
+#line 2420 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 15:
-#line 349 "parser.y" /* yacc.c:1646  */
+#line 349 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_cond((yyvsp[-3].blk), (yyvsp[-1].blk), (yyvsp[0].blk));
 }
-#line 2440 "parser.c" /* yacc.c:1646  */
+#line 2428 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 16:
-#line 352 "parser.y" /* yacc.c:1646  */
+#line 352 "src/parser.y" /* yacc.c:1646  */
     {
   FAIL((yyloc), "Possibly unterminated 'if' statement");
   (yyval.blk) = (yyvsp[-2].blk);
 }
-#line 2449 "parser.c" /* yacc.c:1646  */
+#line 2437 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 17:
-#line 357 "parser.y" /* yacc.c:1646  */
+#line 357 "src/parser.y" /* yacc.c:1646  */
     {
   //$$ = BLOCK(gen_op_target(FORK_OPT, $2), $2, $4);
   (yyval.blk) = gen_try((yyvsp[-2].blk), gen_try_handler((yyvsp[0].blk)));
 }
-#line 2458 "parser.c" /* yacc.c:1646  */
+#line 2446 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 18:
-#line 361 "parser.y" /* yacc.c:1646  */
+#line 361 "src/parser.y" /* yacc.c:1646  */
     {
   //$$ = BLOCK(gen_op_target(FORK_OPT, $2), $2, gen_op_simple(BACKTRACK));
   (yyval.blk) = gen_try((yyvsp[0].blk), gen_op_simple(BACKTRACK));
 }
-#line 2467 "parser.c" /* yacc.c:1646  */
+#line 2455 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 19:
-#line 365 "parser.y" /* yacc.c:1646  */
+#line 365 "src/parser.y" /* yacc.c:1646  */
     {
   FAIL((yyloc), "Possibly unterminated 'try' statement");
   (yyval.blk) = (yyvsp[-2].blk);
 }
-#line 2476 "parser.c" /* yacc.c:1646  */
+#line 2464 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 20:
-#line 370 "parser.y" /* yacc.c:1646  */
+#line 370 "src/parser.y" /* yacc.c:1646  */
     {
   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 2487 "parser.c" /* yacc.c:1646  */
+#line 2475 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 21:
-#line 377 "parser.y" /* yacc.c:1646  */
+#line 377 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_try((yyvsp[-1].blk), gen_op_simple(BACKTRACK));
 }
-#line 2495 "parser.c" /* yacc.c:1646  */
+#line 2483 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 22:
-#line 381 "parser.y" /* yacc.c:1646  */
+#line 381 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_call("_assign", BLOCK(gen_lambda((yyvsp[-2].blk)), gen_lambda((yyvsp[0].blk))));
 }
-#line 2503 "parser.c" /* yacc.c:1646  */
+#line 2491 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 23:
-#line 385 "parser.y" /* yacc.c:1646  */
+#line 385 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_or((yyvsp[-2].blk), (yyvsp[0].blk));
 }
-#line 2511 "parser.c" /* yacc.c:1646  */
+#line 2499 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 24:
-#line 389 "parser.y" /* yacc.c:1646  */
+#line 389 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_and((yyvsp[-2].blk), (yyvsp[0].blk));
 }
-#line 2519 "parser.c" /* yacc.c:1646  */
+#line 2507 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 25:
-#line 393 "parser.y" /* yacc.c:1646  */
+#line 393 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_definedor((yyvsp[-2].blk), (yyvsp[0].blk));
 }
-#line 2527 "parser.c" /* yacc.c:1646  */
+#line 2515 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 26:
-#line 397 "parser.y" /* yacc.c:1646  */
+#line 397 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_definedor_assign((yyvsp[-2].blk), (yyvsp[0].blk));
 }
-#line 2535 "parser.c" /* yacc.c:1646  */
+#line 2523 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 27:
-#line 401 "parser.y" /* yacc.c:1646  */
+#line 401 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_call("_modify", BLOCK(gen_lambda((yyvsp[-2].blk)), gen_lambda((yyvsp[0].blk))));
 }
-#line 2543 "parser.c" /* yacc.c:1646  */
+#line 2531 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 28:
-#line 405 "parser.y" /* yacc.c:1646  */
+#line 405 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = block_join((yyvsp[-2].blk), (yyvsp[0].blk));
 }
-#line 2551 "parser.c" /* yacc.c:1646  */
+#line 2539 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 29:
-#line 409 "parser.y" /* yacc.c:1646  */
+#line 409 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_both((yyvsp[-2].blk), (yyvsp[0].blk));
 }
-#line 2559 "parser.c" /* yacc.c:1646  */
+#line 2547 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 30:
-#line 413 "parser.y" /* yacc.c:1646  */
+#line 413 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '+');
 }
-#line 2567 "parser.c" /* yacc.c:1646  */
+#line 2555 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 31:
-#line 417 "parser.y" /* yacc.c:1646  */
+#line 417 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '+');
 }
-#line 2575 "parser.c" /* yacc.c:1646  */
+#line 2563 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 32:
-#line 421 "parser.y" /* yacc.c:1646  */
+#line 421 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = BLOCK((yyvsp[0].blk), gen_call("_negate", gen_noop()));
 }
-#line 2583 "parser.c" /* yacc.c:1646  */
+#line 2571 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 33:
-#line 425 "parser.y" /* yacc.c:1646  */
+#line 425 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '-');
 }
-#line 2591 "parser.c" /* yacc.c:1646  */
+#line 2579 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 34:
-#line 429 "parser.y" /* yacc.c:1646  */
+#line 429 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '-');
 }
-#line 2599 "parser.c" /* yacc.c:1646  */
+#line 2587 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 35:
-#line 433 "parser.y" /* yacc.c:1646  */
+#line 433 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '*');
 }
-#line 2607 "parser.c" /* yacc.c:1646  */
+#line 2595 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 36:
-#line 437 "parser.y" /* yacc.c:1646  */
+#line 437 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '*');
 }
-#line 2615 "parser.c" /* yacc.c:1646  */
+#line 2603 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 37:
-#line 441 "parser.y" /* yacc.c:1646  */
+#line 441 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '/');
   if (block_is_const_inf((yyval.blk)))
     FAIL((yyloc), "Division by zero?");
 }
-#line 2625 "parser.c" /* yacc.c:1646  */
+#line 2613 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 38:
-#line 447 "parser.y" /* yacc.c:1646  */
+#line 447 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '%');
   if (block_is_const_inf((yyval.blk)))
     FAIL((yyloc), "Remainder by zero?");
 }
-#line 2635 "parser.c" /* yacc.c:1646  */
+#line 2623 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 39:
-#line 453 "parser.y" /* yacc.c:1646  */
+#line 453 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '/');
 }
-#line 2643 "parser.c" /* yacc.c:1646  */
+#line 2631 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 40:
-#line 457 "parser.y" /* yacc.c:1646  */
+#line 457 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '%');
 }
-#line 2651 "parser.c" /* yacc.c:1646  */
+#line 2639 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 41:
-#line 461 "parser.y" /* yacc.c:1646  */
+#line 461 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), EQ);
 }
-#line 2659 "parser.c" /* yacc.c:1646  */
+#line 2647 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 42:
-#line 465 "parser.y" /* yacc.c:1646  */
+#line 465 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), NEQ);
 }
-#line 2667 "parser.c" /* yacc.c:1646  */
+#line 2655 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 43:
-#line 469 "parser.y" /* yacc.c:1646  */
+#line 469 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '<');
 }
-#line 2675 "parser.c" /* yacc.c:1646  */
+#line 2663 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 44:
-#line 473 "parser.y" /* yacc.c:1646  */
+#line 473 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '>');
 }
-#line 2683 "parser.c" /* yacc.c:1646  */
+#line 2671 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 45:
-#line 477 "parser.y" /* yacc.c:1646  */
+#line 477 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), LESSEQ);
 }
-#line 2691 "parser.c" /* yacc.c:1646  */
+#line 2679 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 46:
-#line 481 "parser.y" /* yacc.c:1646  */
+#line 481 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), GREATEREQ);
 }
-#line 2699 "parser.c" /* yacc.c:1646  */
+#line 2687 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 47:
-#line 485 "parser.y" /* yacc.c:1646  */
+#line 485 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = (yyvsp[0].blk);
 }
-#line 2707 "parser.c" /* yacc.c:1646  */
+#line 2695 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 48:
-#line 490 "parser.y" /* yacc.c:1646  */
+#line 490 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = (yyvsp[-1].blk);
 }
-#line 2715 "parser.c" /* yacc.c:1646  */
+#line 2703 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 49:
-#line 493 "parser.y" /* yacc.c:1646  */
+#line 493 "src/parser.y" /* yacc.c:1646  */
     {
   if (!block_is_const((yyvsp[-1].blk))) {
     FAIL((yyloc), "Module metadata must be constant");
@@ -2731,11 +2719,11 @@ yyreduce:
     (yyval.blk) = gen_import_meta((yyvsp[-2].blk), (yyvsp[-1].blk));
   }
 }
-#line 2735 "parser.c" /* yacc.c:1646  */
+#line 2723 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 50:
-#line 510 "parser.y" /* yacc.c:1646  */
+#line 510 "src/parser.y" /* yacc.c:1646  */
     {
   jv v = block_const((yyvsp[-3].blk));
   // XXX Make gen_import take only blocks and the int is_data so we
@@ -2745,11 +2733,11 @@ yyreduce:
   jv_free((yyvsp[0].literal));
   jv_free(v);
 }
-#line 2749 "parser.c" /* yacc.c:1646  */
+#line 2737 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 51:
-#line 519 "parser.y" /* yacc.c:1646  */
+#line 519 "src/parser.y" /* yacc.c:1646  */
     {
   jv v = block_const((yyvsp[-2].blk));
   (yyval.blk) = gen_import(jv_string_value(v), jv_string_value((yyvsp[0].literal)), 0);
@@ -2757,22 +2745,22 @@ yyreduce:
   jv_free((yyvsp[0].literal));
   jv_free(v);
 }
-#line 2761 "parser.c" /* yacc.c:1646  */
+#line 2749 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 52:
-#line 526 "parser.y" /* yacc.c:1646  */
+#line 526 "src/parser.y" /* yacc.c:1646  */
     {
   jv v = block_const((yyvsp[0].blk));
   (yyval.blk) = gen_import(jv_string_value(v), NULL, 0);
   block_free((yyvsp[0].blk));
   jv_free(v);
 }
-#line 2772 "parser.c" /* yacc.c:1646  */
+#line 2760 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 53:
-#line 534 "parser.y" /* yacc.c:1646  */
+#line 534 "src/parser.y" /* yacc.c:1646  */
     {
   if (!block_is_const((yyvsp[0].blk))) {
     FAIL((yyloc), "Import path must be constant");
@@ -2782,173 +2770,173 @@ yyreduce:
     (yyval.blk) = (yyvsp[0].blk);
   }
 }
-#line 2786 "parser.c" /* yacc.c:1646  */
+#line 2774 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 54:
-#line 545 "parser.y" /* yacc.c:1646  */
+#line 545 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_function(jv_string_value((yyvsp[-3].literal)), gen_noop(), (yyvsp[-1].blk));
   jv_free((yyvsp[-3].literal));
 }
-#line 2795 "parser.c" /* yacc.c:1646  */
+#line 2783 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 55:
-#line 550 "parser.y" /* yacc.c:1646  */
+#line 550 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_function(jv_string_value((yyvsp[-6].literal)), (yyvsp[-4].blk), (yyvsp[-1].blk));
   jv_free((yyvsp[-6].literal));
 }
-#line 2804 "parser.c" /* yacc.c:1646  */
+#line 2792 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 56:
-#line 556 "parser.y" /* yacc.c:1646  */
+#line 556 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = (yyvsp[0].blk);
 }
-#line 2812 "parser.c" /* yacc.c:1646  */
+#line 2800 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 57:
-#line 559 "parser.y" /* yacc.c:1646  */
+#line 559 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = BLOCK((yyvsp[-2].blk), (yyvsp[0].blk));
 }
-#line 2820 "parser.c" /* yacc.c:1646  */
+#line 2808 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 58:
-#line 564 "parser.y" /* yacc.c:1646  */
+#line 564 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_param_regular(jv_string_value((yyvsp[0].literal)));
   jv_free((yyvsp[0].literal));
 }
-#line 2829 "parser.c" /* yacc.c:1646  */
+#line 2817 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 59:
-#line 569 "parser.y" /* yacc.c:1646  */
+#line 569 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_param(jv_string_value((yyvsp[0].literal)));
   jv_free((yyvsp[0].literal));
 }
-#line 2838 "parser.c" /* yacc.c:1646  */
+#line 2826 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 60:
-#line 576 "parser.y" /* yacc.c:1646  */
+#line 576 "src/parser.y" /* yacc.c:1646  */
     { (yyval.literal) = jv_string("text"); }
-#line 2844 "parser.c" /* yacc.c:1646  */
+#line 2832 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 61:
-#line 576 "parser.y" /* yacc.c:1646  */
+#line 576 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = (yyvsp[-1].blk);
   jv_free((yyvsp[-2].literal));
 }
-#line 2853 "parser.c" /* yacc.c:1646  */
+#line 2841 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 62:
-#line 580 "parser.y" /* yacc.c:1646  */
+#line 580 "src/parser.y" /* yacc.c:1646  */
     { (yyval.literal) = (yyvsp[-1].literal); }
-#line 2859 "parser.c" /* yacc.c:1646  */
+#line 2847 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 63:
-#line 580 "parser.y" /* yacc.c:1646  */
+#line 580 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = (yyvsp[-1].blk);
   jv_free((yyvsp[-2].literal));
 }
-#line 2868 "parser.c" /* yacc.c:1646  */
+#line 2856 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 64:
-#line 587 "parser.y" /* yacc.c:1646  */
+#line 587 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_const(jv_string(""));
 }
-#line 2876 "parser.c" /* yacc.c:1646  */
+#line 2864 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 65:
-#line 590 "parser.y" /* yacc.c:1646  */
+#line 590 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_binop((yyvsp[-1].blk), gen_const((yyvsp[0].literal)), '+');
 }
-#line 2884 "parser.c" /* yacc.c:1646  */
+#line 2872 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 66:
-#line 593 "parser.y" /* yacc.c:1646  */
+#line 593 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_binop((yyvsp[-3].blk), gen_format((yyvsp[-1].blk), jv_copy((yyvsp[-4].literal))), '+');
 }
-#line 2892 "parser.c" /* yacc.c:1646  */
+#line 2880 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 67:
-#line 599 "parser.y" /* yacc.c:1646  */
+#line 599 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_cond((yyvsp[-3].blk), (yyvsp[-1].blk), (yyvsp[0].blk));
 }
-#line 2900 "parser.c" /* yacc.c:1646  */
+#line 2888 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 68:
-#line 602 "parser.y" /* yacc.c:1646  */
+#line 602 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = (yyvsp[-1].blk);
 }
-#line 2908 "parser.c" /* yacc.c:1646  */
+#line 2896 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 69:
-#line 607 "parser.y" /* yacc.c:1646  */
+#line 607 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = block_join((yyvsp[-2].blk), (yyvsp[0].blk));
 }
-#line 2916 "parser.c" /* yacc.c:1646  */
+#line 2904 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 70:
-#line 610 "parser.y" /* yacc.c:1646  */
+#line 610 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = BLOCK((yyvsp[0].blk), gen_call("_negate", gen_noop()));
 }
-#line 2924 "parser.c" /* yacc.c:1646  */
+#line 2912 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 71:
-#line 613 "parser.y" /* yacc.c:1646  */
+#line 613 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = (yyvsp[0].blk);
 }
-#line 2932 "parser.c" /* yacc.c:1646  */
+#line 2920 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 72:
-#line 619 "parser.y" /* yacc.c:1646  */
+#line 619 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_noop();
 }
-#line 2940 "parser.c" /* yacc.c:1646  */
+#line 2928 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 73:
-#line 622 "parser.y" /* yacc.c:1646  */
+#line 622 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_call("recurse", gen_noop());
 }
-#line 2948 "parser.c" /* yacc.c:1646  */
+#line 2936 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 74:
-#line 625 "parser.y" /* yacc.c:1646  */
+#line 625 "src/parser.y" /* yacc.c:1646  */
     {
   jv v = jv_string_fmt("*label-%s", jv_string_value((yyvsp[0].literal)));     // impossible symbol
   (yyval.blk) = gen_location((yyloc), locations,
@@ -2957,231 +2945,231 @@ yyreduce:
   jv_free(v);
   jv_free((yyvsp[0].literal));
 }
-#line 2961 "parser.c" /* yacc.c:1646  */
+#line 2949 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 75:
-#line 633 "parser.y" /* yacc.c:1646  */
+#line 633 "src/parser.y" /* yacc.c:1646  */
     {
   FAIL((yyloc), "break requires a label to break to");
   (yyval.blk) = gen_noop();
 }
-#line 2970 "parser.c" /* yacc.c:1646  */
+#line 2958 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 76:
-#line 637 "parser.y" /* yacc.c:1646  */
+#line 637 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_index_opt((yyvsp[-2].blk), gen_const((yyvsp[-1].literal)));
 }
-#line 2978 "parser.c" /* yacc.c:1646  */
+#line 2966 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 77:
-#line 640 "parser.y" /* yacc.c:1646  */
+#line 640 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_index_opt(gen_noop(), gen_const((yyvsp[-1].literal)));
 }
-#line 2986 "parser.c" /* yacc.c:1646  */
+#line 2974 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 78:
-#line 643 "parser.y" /* yacc.c:1646  */
+#line 643 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_index_opt((yyvsp[-3].blk), (yyvsp[-1].blk));
 }
-#line 2994 "parser.c" /* yacc.c:1646  */
+#line 2982 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 79:
-#line 646 "parser.y" /* yacc.c:1646  */
+#line 646 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_index_opt(gen_noop(), (yyvsp[-1].blk));
 }
-#line 3002 "parser.c" /* yacc.c:1646  */
+#line 2990 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 80:
-#line 649 "parser.y" /* yacc.c:1646  */
+#line 649 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_index((yyvsp[-1].blk), gen_const((yyvsp[0].literal)));
 }
-#line 3010 "parser.c" /* yacc.c:1646  */
+#line 2998 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 81:
-#line 652 "parser.y" /* yacc.c:1646  */
+#line 652 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_index(gen_noop(), gen_const((yyvsp[0].literal)));
 }
-#line 3018 "parser.c" /* yacc.c:1646  */
+#line 3006 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 82:
-#line 655 "parser.y" /* yacc.c:1646  */
+#line 655 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_index((yyvsp[-2].blk), (yyvsp[0].blk));
 }
-#line 3026 "parser.c" /* yacc.c:1646  */
+#line 3014 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 83:
-#line 658 "parser.y" /* yacc.c:1646  */
+#line 658 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_index(gen_noop(), (yyvsp[0].blk));
 }
-#line 3034 "parser.c" /* yacc.c:1646  */
+#line 3022 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 84:
-#line 661 "parser.y" /* yacc.c:1646  */
+#line 661 "src/parser.y" /* yacc.c:1646  */
     {
   FAIL((yyloc), "try .[\"field\"] instead of .field for unusually named fields");
   (yyval.blk) = gen_noop();
 }
-#line 3043 "parser.c" /* yacc.c:1646  */
+#line 3031 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 85:
-#line 665 "parser.y" /* yacc.c:1646  */
+#line 665 "src/parser.y" /* yacc.c:1646  */
     {
   jv_free((yyvsp[-1].literal));
   FAIL((yyloc), "try .[\"field\"] instead of .field for unusually named fields");
   (yyval.blk) = gen_noop();
 }
-#line 3053 "parser.c" /* yacc.c:1646  */
+#line 3041 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 86:
-#line 671 "parser.y" /* yacc.c:1646  */
+#line 671 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_index_opt((yyvsp[-4].blk), (yyvsp[-2].blk));
 }
-#line 3061 "parser.c" /* yacc.c:1646  */
+#line 3049 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 87:
-#line 674 "parser.y" /* yacc.c:1646  */
+#line 674 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_index((yyvsp[-3].blk), (yyvsp[-1].blk));
 }
-#line 3069 "parser.c" /* yacc.c:1646  */
+#line 3057 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 88:
-#line 677 "parser.y" /* yacc.c:1646  */
+#line 677 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = block_join((yyvsp[-3].blk), gen_op_simple(EACH_OPT));
 }
-#line 3077 "parser.c" /* yacc.c:1646  */
+#line 3065 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 89:
-#line 680 "parser.y" /* yacc.c:1646  */
+#line 680 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = block_join((yyvsp[-2].blk), gen_op_simple(EACH));
 }
-#line 3085 "parser.c" /* yacc.c:1646  */
+#line 3073 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 90:
-#line 683 "parser.y" /* yacc.c:1646  */
+#line 683 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_slice_index((yyvsp[-6].blk), (yyvsp[-4].blk), (yyvsp[-2].blk), INDEX_OPT);
 }
-#line 3093 "parser.c" /* yacc.c:1646  */
+#line 3081 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 91:
-#line 686 "parser.y" /* yacc.c:1646  */
+#line 686 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_slice_index((yyvsp[-5].blk), (yyvsp[-3].blk), gen_const(jv_null()), INDEX_OPT);
 }
-#line 3101 "parser.c" /* yacc.c:1646  */
+#line 3089 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 92:
-#line 689 "parser.y" /* yacc.c:1646  */
+#line 689 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_slice_index((yyvsp[-5].blk), gen_const(jv_null()), (yyvsp[-2].blk), INDEX_OPT);
 }
-#line 3109 "parser.c" /* yacc.c:1646  */
+#line 3097 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 93:
-#line 692 "parser.y" /* yacc.c:1646  */
+#line 692 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_slice_index((yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk), INDEX);
 }
-#line 3117 "parser.c" /* yacc.c:1646  */
+#line 3105 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 94:
-#line 695 "parser.y" /* yacc.c:1646  */
+#line 695 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_slice_index((yyvsp[-4].blk), (yyvsp[-2].blk), gen_const(jv_null()), INDEX);
 }
-#line 3125 "parser.c" /* yacc.c:1646  */
+#line 3113 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 95:
-#line 698 "parser.y" /* yacc.c:1646  */
+#line 698 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_slice_index((yyvsp[-4].blk), gen_const(jv_null()), (yyvsp[-1].blk), INDEX);
 }
-#line 3133 "parser.c" /* yacc.c:1646  */
+#line 3121 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 96:
-#line 701 "parser.y" /* yacc.c:1646  */
+#line 701 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_const((yyvsp[0].literal));
 }
-#line 3141 "parser.c" /* yacc.c:1646  */
+#line 3129 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 97:
-#line 704 "parser.y" /* yacc.c:1646  */
+#line 704 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = (yyvsp[0].blk);
 }
-#line 3149 "parser.c" /* yacc.c:1646  */
+#line 3137 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 98:
-#line 707 "parser.y" /* yacc.c:1646  */
+#line 707 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_format(gen_noop(), (yyvsp[0].literal));
 }
-#line 3157 "parser.c" /* yacc.c:1646  */
+#line 3145 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 99:
-#line 710 "parser.y" /* yacc.c:1646  */
+#line 710 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = (yyvsp[-1].blk);
 }
-#line 3165 "parser.c" /* yacc.c:1646  */
+#line 3153 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 100:
-#line 713 "parser.y" /* yacc.c:1646  */
+#line 713 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_collect((yyvsp[-1].blk));
 }
-#line 3173 "parser.c" /* yacc.c:1646  */
+#line 3161 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 101:
-#line 716 "parser.y" /* yacc.c:1646  */
+#line 716 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_const(jv_array());
 }
-#line 3181 "parser.c" /* yacc.c:1646  */
+#line 3169 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 102:
-#line 719 "parser.y" /* yacc.c:1646  */
+#line 719 "src/parser.y" /* yacc.c:1646  */
     {
   block o = gen_const_object((yyvsp[-1].blk));
   if (o.first != NULL)
@@ -3189,29 +3177,29 @@ yyreduce:
   else
     (yyval.blk) = BLOCK(gen_subexp(gen_const(jv_object())), (yyvsp[-1].blk), gen_op_simple(POP));
 }
-#line 3193 "parser.c" /* yacc.c:1646  */
+#line 3181 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 103:
-#line 726 "parser.y" /* yacc.c:1646  */
+#line 726 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_const(JV_OBJECT(jv_string("file"), jv_copy(locations->fname),
                            jv_string("line"), jv_number(locfile_get_line(locations, (yyloc).start) + 1)));
 }
-#line 3202 "parser.c" /* yacc.c:1646  */
+#line 3190 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 104:
-#line 730 "parser.y" /* yacc.c:1646  */
+#line 730 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_location((yyloc), locations, gen_op_unbound(LOADV, jv_string_value((yyvsp[0].literal))));
   jv_free((yyvsp[0].literal));
 }
-#line 3211 "parser.c" /* yacc.c:1646  */
+#line 3199 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 105:
-#line 734 "parser.y" /* yacc.c:1646  */
+#line 734 "src/parser.y" /* yacc.c:1646  */
     {
   const char *s = jv_string_value((yyvsp[0].literal));
   if (strcmp(s, "false") == 0)
@@ -3224,409 +3212,421 @@ yyreduce:
     (yyval.blk) = gen_location((yyloc), locations, gen_call(s, gen_noop()));
   jv_free((yyvsp[0].literal));
 }
-#line 3228 "parser.c" /* yacc.c:1646  */
+#line 3216 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 106:
-#line 746 "parser.y" /* yacc.c:1646  */
+#line 746 "src/parser.y" /* yacc.c:1646  */
     {
   (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 3238 "parser.c" /* yacc.c:1646  */
+#line 3226 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 107:
-#line 751 "parser.y" /* yacc.c:1646  */
+#line 751 "src/parser.y" /* yacc.c:1646  */
     { (yyval.blk) = gen_noop(); }
-#line 3244 "parser.c" /* yacc.c:1646  */
+#line 3232 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 108:
-#line 752 "parser.y" /* yacc.c:1646  */
+#line 752 "src/parser.y" /* yacc.c:1646  */
     { (yyval.blk) = gen_noop(); }
-#line 3250 "parser.c" /* yacc.c:1646  */
+#line 3238 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 109:
-#line 753 "parser.y" /* yacc.c:1646  */
+#line 753 "src/parser.y" /* yacc.c:1646  */
     { (yyval.blk) = (yyvsp[-3].blk); }
-#line 3256 "parser.c" /* yacc.c:1646  */
+#line 3244 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 110:
-#line 754 "parser.y" /* yacc.c:1646  */
+#line 754 "src/parser.y" /* yacc.c:1646  */
     { (yyval.blk) = gen_noop(); }
-#line 3262 "parser.c" /* yacc.c:1646  */
+#line 3250 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 111:
-#line 757 "parser.y" /* yacc.c:1646  */
+#line 757 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = (yyvsp[0].blk);
 }
-#line 3270 "parser.c" /* yacc.c:1646  */
+#line 3258 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 112:
-#line 760 "parser.y" /* yacc.c:1646  */
+#line 760 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = BLOCK((yyvsp[-2].blk), (yyvsp[0].blk));
 }
-#line 3278 "parser.c" /* yacc.c:1646  */
+#line 3266 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 113:
-#line 765 "parser.y" /* yacc.c:1646  */
+#line 765 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_lambda((yyvsp[0].blk));
 }
-#line 3286 "parser.c" /* yacc.c:1646  */
+#line 3274 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 114:
-#line 770 "parser.y" /* yacc.c:1646  */
+#line 770 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_op_unbound(STOREV, jv_string_value((yyvsp[0].literal)));
   jv_free((yyvsp[0].literal));
 }
-#line 3295 "parser.c" /* yacc.c:1646  */
+#line 3283 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 115:
-#line 774 "parser.y" /* yacc.c:1646  */
+#line 774 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = BLOCK((yyvsp[-1].blk), gen_op_simple(POP));
 }
-#line 3303 "parser.c" /* yacc.c:1646  */
+#line 3291 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 116:
-#line 777 "parser.y" /* yacc.c:1646  */
+#line 777 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = BLOCK((yyvsp[-1].blk), gen_op_simple(POP));
 }
-#line 3311 "parser.c" /* yacc.c:1646  */
+#line 3299 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 117:
-#line 782 "parser.y" /* yacc.c:1646  */
+#line 782 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_array_matcher(gen_noop(), (yyvsp[0].blk));
 }
-#line 3319 "parser.c" /* yacc.c:1646  */
+#line 3307 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 118:
-#line 785 "parser.y" /* yacc.c:1646  */
+#line 785 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_array_matcher((yyvsp[-2].blk), (yyvsp[0].blk));
 }
-#line 3327 "parser.c" /* yacc.c:1646  */
+#line 3315 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 119:
-#line 790 "parser.y" /* yacc.c:1646  */
+#line 790 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = (yyvsp[0].blk);
 }
-#line 3335 "parser.c" /* yacc.c:1646  */
+#line 3323 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 120:
-#line 793 "parser.y" /* yacc.c:1646  */
+#line 793 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = BLOCK((yyvsp[-2].blk), (yyvsp[0].blk));
 }
-#line 3343 "parser.c" /* yacc.c:1646  */
+#line 3331 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 121:
-#line 798 "parser.y" /* yacc.c:1646  */
+#line 798 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_object_matcher(gen_const((yyvsp[0].literal)), gen_op_unbound(STOREV, jv_string_value((yyvsp[0].literal))));
 }
-#line 3351 "parser.c" /* yacc.c:1646  */
+#line 3339 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 122:
-#line 801 "parser.y" /* yacc.c:1646  */
+#line 801 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_object_matcher(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk));
 }
-#line 3359 "parser.c" /* yacc.c:1646  */
+#line 3347 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 123:
-#line 804 "parser.y" /* yacc.c:1646  */
+#line 804 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_object_matcher(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk));
 }
-#line 3367 "parser.c" /* yacc.c:1646  */
+#line 3355 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 124:
-#line 807 "parser.y" /* yacc.c:1646  */
+#line 807 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_object_matcher((yyvsp[-2].blk), (yyvsp[0].blk));
 }
-#line 3375 "parser.c" /* yacc.c:1646  */
+#line 3363 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 125:
-#line 810 "parser.y" /* yacc.c:1646  */
+#line 810 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_object_matcher((yyvsp[-3].blk), (yyvsp[0].blk));
 }
-#line 3383 "parser.c" /* yacc.c:1646  */
+#line 3371 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 126:
-#line 815 "parser.y" /* yacc.c:1646  */
+#line 813 "src/parser.y" /* yacc.c:1646  */
     {
-  (yyval.literal) = jv_string("as");
+  FAIL((yyloc), "May need parentheses around object key");
+  (yyval.blk) = (yyvsp[0].blk);
 }
-#line 3391 "parser.c" /* yacc.c:1646  */
+#line 3380 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 127:
-#line 818 "parser.y" /* yacc.c:1646  */
+#line 819 "src/parser.y" /* yacc.c:1646  */
     {
-  (yyval.literal) = jv_string("def");
+  (yyval.literal) = jv_string("as");
 }
-#line 3399 "parser.c" /* yacc.c:1646  */
+#line 3388 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 128:
-#line 821 "parser.y" /* yacc.c:1646  */
+#line 822 "src/parser.y" /* yacc.c:1646  */
     {
-  (yyval.literal) = jv_string("module");
+  (yyval.literal) = jv_string("def");
 }
-#line 3407 "parser.c" /* yacc.c:1646  */
+#line 3396 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 129:
-#line 824 "parser.y" /* yacc.c:1646  */
+#line 825 "src/parser.y" /* yacc.c:1646  */
     {
-  (yyval.literal) = jv_string("import");
+  (yyval.literal) = jv_string("module");
 }
-#line 3415 "parser.c" /* yacc.c:1646  */
+#line 3404 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 130:
-#line 827 "parser.y" /* yacc.c:1646  */
+#line 828 "src/parser.y" /* yacc.c:1646  */
     {
-  (yyval.literal) = jv_string("include");
+  (yyval.literal) = jv_string("import");
 }
-#line 3423 "parser.c" /* yacc.c:1646  */
+#line 3412 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 131:
-#line 830 "parser.y" /* yacc.c:1646  */
+#line 831 "src/parser.y" /* yacc.c:1646  */
     {
-  (yyval.literal) = jv_string("if");
+  (yyval.literal) = jv_string("include");
 }
-#line 3431 "parser.c" /* yacc.c:1646  */
+#line 3420 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 132:
-#line 833 "parser.y" /* yacc.c:1646  */
+#line 834 "src/parser.y" /* yacc.c:1646  */
     {
-  (yyval.literal) = jv_string("then");
+  (yyval.literal) = jv_string("if");
 }
-#line 3439 "parser.c" /* yacc.c:1646  */
+#line 3428 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 133:
-#line 836 "parser.y" /* yacc.c:1646  */
+#line 837 "src/parser.y" /* yacc.c:1646  */
     {
-  (yyval.literal) = jv_string("else");
+  (yyval.literal) = jv_string("then");
 }
-#line 3447 "parser.c" /* yacc.c:1646  */
+#line 3436 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 134:
-#line 839 "parser.y" /* yacc.c:1646  */
+#line 840 "src/parser.y" /* yacc.c:1646  */
     {
-  (yyval.literal) = jv_string("elif");
+  (yyval.literal) = jv_string("else");
 }
-#line 3455 "parser.c" /* yacc.c:1646  */
+#line 3444 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 135:
-#line 842 "parser.y" /* yacc.c:1646  */
+#line 843 "src/parser.y" /* yacc.c:1646  */
     {
-  (yyval.literal) = jv_string("reduce");
+  (yyval.literal) = jv_string("elif");
 }
-#line 3463 "parser.c" /* yacc.c:1646  */
+#line 3452 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 136:
-#line 845 "parser.y" /* yacc.c:1646  */
+#line 846 "src/parser.y" /* yacc.c:1646  */
     {
-  (yyval.literal) = jv_string("foreach");
+  (yyval.literal) = jv_string("reduce");
 }
-#line 3471 "parser.c" /* yacc.c:1646  */
+#line 3460 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 137:
-#line 848 "parser.y" /* yacc.c:1646  */
+#line 849 "src/parser.y" /* yacc.c:1646  */
     {
-  (yyval.literal) = jv_string("end");
+  (yyval.literal) = jv_string("foreach");
 }
-#line 3479 "parser.c" /* yacc.c:1646  */
+#line 3468 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 138:
-#line 851 "parser.y" /* yacc.c:1646  */
+#line 852 "src/parser.y" /* yacc.c:1646  */
     {
-  (yyval.literal) = jv_string("and");
+  (yyval.literal) = jv_string("end");
 }
-#line 3487 "parser.c" /* yacc.c:1646  */
+#line 3476 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 139:
-#line 854 "parser.y" /* yacc.c:1646  */
+#line 855 "src/parser.y" /* yacc.c:1646  */
     {
-  (yyval.literal) = jv_string("or");
+  (yyval.literal) = jv_string("and");
 }
-#line 3495 "parser.c" /* yacc.c:1646  */
+#line 3484 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 140:
-#line 857 "parser.y" /* yacc.c:1646  */
+#line 858 "src/parser.y" /* yacc.c:1646  */
     {
-  (yyval.literal) = jv_string("try");
+  (yyval.literal) = jv_string("or");
 }
-#line 3503 "parser.c" /* yacc.c:1646  */
+#line 3492 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 141:
-#line 860 "parser.y" /* yacc.c:1646  */
+#line 861 "src/parser.y" /* yacc.c:1646  */
     {
-  (yyval.literal) = jv_string("catch");
+  (yyval.literal) = jv_string("try");
 }
-#line 3511 "parser.c" /* yacc.c:1646  */
+#line 3500 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 142:
-#line 863 "parser.y" /* yacc.c:1646  */
+#line 864 "src/parser.y" /* yacc.c:1646  */
     {
-  (yyval.literal) = jv_string("label");
+  (yyval.literal) = jv_string("catch");
 }
-#line 3519 "parser.c" /* yacc.c:1646  */
+#line 3508 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 143:
-#line 866 "parser.y" /* yacc.c:1646  */
+#line 867 "src/parser.y" /* yacc.c:1646  */
     {
-  (yyval.literal) = jv_string("break");
+  (yyval.literal) = jv_string("label");
 }
-#line 3527 "parser.c" /* yacc.c:1646  */
+#line 3516 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 144:
-#line 869 "parser.y" /* yacc.c:1646  */
+#line 870 "src/parser.y" /* yacc.c:1646  */
     {
-  (yyval.literal) = jv_string("__loc__");
+  (yyval.literal) = jv_string("break");
 }
-#line 3535 "parser.c" /* yacc.c:1646  */
+#line 3524 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 145:
-#line 874 "parser.y" /* yacc.c:1646  */
+#line 873 "src/parser.y" /* yacc.c:1646  */
     {
-  (yyval.blk)=gen_noop();
+  (yyval.literal) = jv_string("__loc__");
 }
-#line 3543 "parser.c" /* yacc.c:1646  */
+#line 3532 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 146:
-#line 877 "parser.y" /* yacc.c:1646  */
-    { (yyval.blk) = (yyvsp[0].blk); }
-#line 3549 "parser.c" /* yacc.c:1646  */
+#line 878 "src/parser.y" /* yacc.c:1646  */
+    {
+  (yyval.blk)=gen_noop();
+}
+#line 3540 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 147:
-#line 878 "parser.y" /* yacc.c:1646  */
-    { (yyval.blk)=block_join((yyvsp[-2].blk), (yyvsp[0].blk)); }
-#line 3555 "parser.c" /* yacc.c:1646  */
+#line 881 "src/parser.y" /* yacc.c:1646  */
+    { (yyval.blk) = (yyvsp[0].blk); }
+#line 3546 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 148:
-#line 879 "parser.y" /* yacc.c:1646  */
-    { (yyval.blk) = (yyvsp[0].blk); }
-#line 3561 "parser.c" /* yacc.c:1646  */
+#line 882 "src/parser.y" /* yacc.c:1646  */
+    { (yyval.blk)=block_join((yyvsp[-2].blk), (yyvsp[0].blk)); }
+#line 3552 "src/parser.c" /* yacc.c:1646  */
     break;
 
   case 149:
-#line 882 "parser.y" /* yacc.c:1646  */
+#line 883 "src/parser.y" /* yacc.c:1646  */
+    { (yyval.blk) = (yyvsp[0].blk); }
+#line 3558 "src/parser.c" /* yacc.c:1646  */
+    break;
+
+  case 150:
+#line 886 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_dictpair(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk));
  }
-#line 3569 "parser.c" /* yacc.c:1646  */
+#line 3566 "src/parser.c" /* yacc.c:1646  */
     break;
 
-  case 150:
-#line 885 "parser.y" /* yacc.c:1646  */
+  case 151:
+#line 889 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_dictpair(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk));
   }
-#line 3577 "parser.c" /* yacc.c:1646  */
+#line 3574 "src/parser.c" /* yacc.c:1646  */
     break;
 
-  case 151:
-#line 888 "parser.y" /* yacc.c:1646  */
+  case 152:
+#line 892 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_dictpair((yyvsp[-2].blk), (yyvsp[0].blk));
   }
-#line 3585 "parser.c" /* yacc.c:1646  */
+#line 3582 "src/parser.c" /* yacc.c:1646  */
     break;
 
-  case 152:
-#line 891 "parser.y" /* yacc.c:1646  */
+  case 153:
+#line 895 "src/parser.y" /* yacc.c:1646  */
     {
   (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 3594 "parser.c" /* yacc.c:1646  */
+#line 3591 "src/parser.c" /* yacc.c:1646  */
     break;
 
-  case 153:
-#line 895 "parser.y" /* yacc.c:1646  */
+  case 154:
+#line 899 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_dictpair(gen_const((yyvsp[0].literal)),
                     gen_location((yyloc), locations, gen_op_unbound(LOADV, jv_string_value((yyvsp[0].literal)))));
   }
-#line 3603 "parser.c" /* yacc.c:1646  */
+#line 3600 "src/parser.c" /* yacc.c:1646  */
     break;
 
-  case 154:
-#line 899 "parser.y" /* yacc.c:1646  */
+  case 155:
+#line 903 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_dictpair(gen_const(jv_copy((yyvsp[0].literal))),
                     gen_index(gen_noop(), gen_const((yyvsp[0].literal))));
   }
-#line 3612 "parser.c" /* yacc.c:1646  */
+#line 3609 "src/parser.c" /* yacc.c:1646  */
     break;
 
-  case 155:
-#line 903 "parser.y" /* yacc.c:1646  */
+  case 156:
+#line 907 "src/parser.y" /* yacc.c:1646  */
     {
   (yyval.blk) = gen_dictpair((yyvsp[-3].blk), (yyvsp[0].blk));
   }
-#line 3620 "parser.c" /* yacc.c:1646  */
+#line 3617 "src/parser.c" /* yacc.c:1646  */
     break;
 
-  case 156:
-#line 906 "parser.y" /* yacc.c:1646  */
-    { (yyval.blk) = (yyvsp[0].blk); }
-#line 3626 "parser.c" /* yacc.c:1646  */
+  case 157:
+#line 910 "src/parser.y" /* yacc.c:1646  */
+    {
+  FAIL((yyloc), "May need parentheses around object key");
+  (yyval.blk) = (yyvsp[0].blk);
+  }
+#line 3626 "src/parser.c" /* yacc.c:1646  */
     break;
 
 
-#line 3630 "parser.c" /* yacc.c:1646  */
+#line 3630 "src/parser.c" /* yacc.c:1646  */
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -3861,7 +3861,7 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 907 "parser.y" /* yacc.c:1906  */
+#line 914 "src/parser.y" /* yacc.c:1906  */
 
 
 int jq_parse(struct locfile* locations, block* answer) {
index d57e5c8aa85e544f0eab8ecfce1d245261beb563..ddc0eb05d4d7b073eb9b1d56bc74cddfbc0c6574 100644 (file)
@@ -809,6 +809,10 @@ String ':' Pattern {
 } |
 '(' Exp ')' ':' Pattern {
   $$ = gen_object_matcher($2, $5);
+} |
+error ':' Pattern {
+  FAIL(@$, "May need parentheses around object key");
+  $$ = $3;
 }
 
 Keyword:
@@ -903,7 +907,10 @@ IDENT ':' ExpD {
 | '(' Exp ')' ':' ExpD {
   $$ = gen_dictpair($2, $5);
   }
-| '(' error ')' ':' ExpD { $$ = $5; }
+| error ':' ExpD {
+  FAIL(@$, "May need parentheses around object key");
+  $$ = $3;
+  }
 %%
 
 int jq_parse(struct locfile* locations, block* answer) {