]> granicus.if.org Git - jq/commitdiff
Add `{$var}` `. as {$var}` syntax (fix #831)
authorNicolas Williams <nico@cryptonector.com>
Sat, 27 Jun 2015 01:29:04 +0000 (20:29 -0500)
committerNicolas Williams <nico@cryptonector.com>
Sat, 27 Jun 2015 01:45:14 +0000 (20:45 -0500)
parser.c
parser.y

index 70ae4b3bb7e3b18bfc5d392961ed3d160f1a261a..e516a7ef2d7556f0a611f98ae2f866ccff5db768 100644 (file)
--- a/parser.c
+++ b/parser.c
@@ -651,16 +651,16 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  27
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1986
+#define YYLAST   1976
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  65
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  26
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  151
+#define YYNRULES  153
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  300
+#define YYNSTATES  304
 
 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
    by yylex, with out-of-bounds checking.  */
@@ -722,10 +722,10 @@ static const yytype_uint16 yyrline[] =
      660,   663,   666,   669,   672,   675,   678,   681,   684,   687,
      690,   697,   701,   705,   717,   722,   723,   724,   725,   728,
      731,   736,   741,   745,   748,   753,   756,   761,   764,   769,
-     772,   775,   778,   783,   786,   789,   792,   795,   798,   801,
+     772,   775,   778,   781,   786,   789,   792,   795,   798,   801,
      804,   807,   810,   813,   816,   819,   822,   825,   828,   831,
-     834,   839,   842,   843,   844,   847,   850,   853,   856,   860,
-     864,   867
+     834,   837,   842,   845,   846,   847,   850,   853,   856,   859,
+     863,   867,   871,   874
 };
 #endif
 
@@ -766,50 +766,51 @@ static const yytype_uint16 yytoknum[] =
 };
 # endif
 
-#define YYPACT_NINF -171
+#define YYPACT_NINF -141
 
 #define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-171)))
+  (!!((Yystate) == (-141)))
 
-#define YYTABLE_NINF -142
+#define YYTABLE_NINF -143
 
 #define yytable_value_is_error(Yytable_value) \
-  (!!((Yytable_value) == (-142)))
+  (!!((Yytable_value) == (-143)))
 
   /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-      19,   862,    41,    28,    48,    -2,  -171,    25,  -171,    53,
-     862,   152,   152,   862,    56,     1,  -171,   862,   508,    21,
-     267,   482,   329,  1323,   862,  -171,     6,  -171,     3,   862,
-      28,   862,  -171,  -171,   -20,  1698,     8,    10,    81,    73,
-    -171,   111,  -171,     9,    59,  1168,  -171,  -171,  -171,   116,
-      25,    64,    57,  -171,   950,   -31,    63,  -171,  -171,  -171,
-    -171,  -171,  -171,  -171,  -171,  -171,  -171,  -171,  -171,  -171,
-    -171,  -171,  -171,  -171,  -171,   569,    67,    69,    65,    86,
-     862,   862,   862,   862,   862,   862,   862,   862,   862,   862,
-     862,   862,   862,   862,   862,   862,   862,   862,   862,   862,
-     862,   862,   862,   862,  -171,  -171,  1852,    78,   -23,     3,
-     419,   121,  -171,  1852,   862,  -171,  1852,   -12,  -171,  -171,
-      18,   862,   595,   -23,   -23,   656,    91,  -171,    13,  -171,
-    -171,  -171,  -171,  -171,  -171,   382,  -171,   144,    83,  1199,
-     144,   144,  -171,   382,  1914,   324,   324,  1883,  1088,  1932,
-    1914,  1914,  1914,  1914,  1914,  1914,   324,   324,  1852,  1883,
-    1914,   324,   324,     9,     9,    84,    84,    84,  -171,   137,
-     -23,  1093,    98,    89,    82,   862,    92,   904,    54,  -171,
-     862,  -171,    32,  -171,   141,    -8,  -171,  1370,  -171,  1652,
-      97,    99,  -171,  -171,   862,  -171,   862,  -171,   109,  -171,
-     144,   117,    50,   103,   104,   117,   117,  -171,  -171,  -171,
-     -14,   105,   862,   106,   -18,  -171,   108,   862,  -171,  -171,
-     996,  -171,   682,   114,   742,   165,  -171,  -171,  -171,    18,
-     112,  -171,   862,   862,  -171,   862,   862,  1852,  1729,  -171,
-     144,   144,   144,   -23,  -171,   -23,  1230,   -23,  1093,  -171,
-     -23,  1852,   118,   122,  1042,  -171,  -171,  1417,   802,  -171,
-     862,  1775,  1821,  1464,  1511,  -171,   117,   117,   117,  -171,
-    -171,   119,  -171,  -171,  -171,  -171,  -171,   123,  -171,  -171,
-    1558,  1605,  -171,   862,   862,   862,   -23,  -171,  -171,  -171,
-    1652,  1261,  1119,  -171,  -171,  -171,   862,  -171,  1292,  -171
+      25,   806,    31,    33,    -5,    -2,  -141,    17,  -141,    64,
+     806,   666,   666,   806,    18,     0,  -141,   806,   452,    11,
+     271,   426,   333,  1284,   806,  -141,     6,  -141,     3,   806,
+      33,   806,  -141,  -141,   -21,  1659,     9,    48,    45,    71,
+    -141,    73,  -141,    -6,    56,  1129,  -141,  -141,  -141,    78,
+      17,    63,    57,  -141,   942,   -32,    68,  -141,  -141,  -141,
+    -141,  -141,  -141,  -141,  -141,  -141,  -141,  -141,  -141,  -141,
+    -141,  -141,  -141,  -141,  -141,   513,   116,    69,    72,    59,
+      85,   806,   806,   806,   806,   806,   806,   806,   806,   806,
+     806,   806,   806,   806,   806,   806,   806,   806,   806,   806,
+     806,   806,   806,   806,   806,  -141,  -141,  1813,    79,   -24,
+       3,   143,   122,  -141,  1813,   806,  -141,  1813,    16,  -141,
+    -141,     2,   806,   539,   -24,   -24,   600,    92,  -141,    14,
+    -141,  -141,  -141,  -141,  -141,  -141,   386,  -141,   204,    83,
+    1160,  -141,   204,   204,  -141,   386,  1875,   328,   328,  1844,
+    1922,  1893,  1875,  1875,  1875,  1875,  1875,  1875,   328,   328,
+    1813,  1844,  1875,   328,   328,    -6,    -6,    87,    87,    87,
+    -141,   138,   -24,   861,    99,    91,    90,   806,   100,   896,
+      20,  -141,   806,  -141,    22,  -141,   149,    61,  -141,  1331,
+    -141,  1613,   102,   103,  -141,  -141,   806,  -141,   806,  -141,
+     110,  -141,   204,   112,    54,   104,   107,   112,   112,  -141,
+    -141,  -141,   -19,   108,   806,   157,   111,   -20,  -141,   114,
+     806,  -141,  -141,   988,  -141,   626,   121,   686,   158,  -141,
+    -141,  -141,     2,   118,  -141,   806,   806,  -141,   806,   806,
+    1813,  1690,  -141,   204,   204,   204,   -24,  -141,   -24,  1191,
+    -141,   -24,   861,  -141,   -24,  1813,   124,   125,  1034,  -141,
+    -141,  1378,   746,  -141,   806,  1736,  1782,  1425,  1472,  -141,
+     112,   112,   112,  -141,  -141,   126,  -141,  -141,  -141,  -141,
+    -141,   129,  -141,  -141,  1519,  1566,  -141,   806,   806,   806,
+     -24,  -141,  -141,  -141,  1613,  1222,  1080,  -141,  -141,  -141,
+     806,  -141,  1253,  -141
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -822,47 +823,48 @@ static const yytype_uint8 yydefact[] =
        0,     0,     0,     0,     0,    95,    47,     1,     0,     8,
        6,     0,    75,    60,     0,     0,     0,     0,    18,     0,
       73,     0,    62,    32,     0,     0,   102,   101,    82,     0,
-       0,    81,     0,    99,     0,     0,   149,   123,   124,   125,
-     126,   127,   128,   129,   130,   131,   132,   133,   134,   135,
-     136,   137,   138,   139,   140,     0,   148,     0,     0,   142,
+       0,    81,     0,    99,     0,     0,   151,   124,   125,   126,
+     127,   128,   129,   130,   131,   132,   133,   134,   135,   136,
+     137,   138,   139,   140,   141,     0,     0,   149,     0,     0,
+     143,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    21,     5,    10,    78,     0,     0,
-       0,     0,     3,     2,     8,     7,   111,     0,   109,    62,
-       0,     0,     0,     0,     0,     0,     0,    72,     0,   105,
-      97,    83,    77,   106,    98,     0,   108,     0,     0,     0,
-       0,     0,   100,     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,    74,     0,
-       0,     0,     0,    80,     0,     0,    87,     0,     0,     9,
-       0,   104,     0,    57,     0,     0,    54,     0,    16,     0,
-       0,     0,    19,    17,     0,    63,     0,    59,     0,   144,
-       0,   145,    69,     0,     0,   147,   146,   143,   112,   115,
-       0,     0,     0,     0,     0,   117,     0,     0,    76,   107,
-       0,    86,     0,    85,     0,     0,   110,    61,    56,     0,
-       0,    52,     0,     0,    15,     0,     0,    20,     0,    68,
-       0,     0,     0,     0,   113,     0,     0,     0,     0,   114,
-       0,    11,    93,    92,     0,    84,    49,     0,     0,    55,
-       0,     0,     0,     0,     0,    64,    67,   151,   150,   116,
-     119,     0,   121,   118,   120,    90,    89,    91,    50,    48,
-       0,     0,    66,     0,     0,     0,     0,    88,    51,    53,
-       0,     0,     0,   122,    65,    12,     0,    14,     0,    13
+       0,     0,     0,     0,     0,    21,     5,    10,    78,     0,
+       0,     0,     0,     3,     2,     8,     7,   111,     0,   109,
+      62,     0,     0,     0,     0,     0,     0,     0,    72,     0,
+     105,    97,    83,    77,   106,    98,     0,   108,     0,     0,
+       0,   150,     0,     0,   100,     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,
+      74,     0,     0,     0,     0,    80,     0,     0,    87,     0,
+       0,     9,     0,   104,     0,    57,     0,     0,    54,     0,
+      16,     0,     0,     0,    19,    17,     0,    63,     0,    59,
+       0,   145,     0,   146,    69,     0,     0,   148,   147,   144,
+     112,   115,     0,     0,     0,     0,     0,     0,   117,     0,
+       0,    76,   107,     0,    86,     0,    85,     0,     0,   110,
+      61,    56,     0,     0,    52,     0,     0,    15,     0,     0,
+      20,     0,    68,     0,     0,     0,     0,   113,     0,     0,
+     119,     0,     0,   114,     0,    11,    93,    92,     0,    84,
+      49,     0,     0,    55,     0,     0,     0,     0,     0,    64,
+      67,   153,   152,   116,   120,     0,   122,   118,   121,    90,
+      89,    91,    50,    48,     0,     0,    66,     0,     0,     0,
+       0,    88,    51,    53,     0,     0,     0,   123,    65,    12,
+       0,    14,     0,    13
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -171,  -171,  -171,   140,    66,    -1,  -171,   -11,  -171,   -47,
-       4,  -171,  -171,    68,  -105,  -135,    -4,  -171,    12,  -120,
-    -171,  -171,   -64,  -170,  -106,  -171
+    -141,  -141,  -141,   150,    74,    -1,  -141,   -11,  -141,   -48,
+       1,  -141,  -141,    66,  -107,  -138,    -4,  -141,     8,  -122,
+    -141,  -141,   -64,  -140,  -109,  -141
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -1,     2,     3,    29,   112,   106,    30,    24,   185,   186,
-      25,    42,   119,   128,   234,   201,    26,   117,   118,   172,
-     210,   214,   215,    77,    78,    79
+      -1,     2,     3,    29,   113,   107,    30,    24,   187,   188,
+      25,    42,   120,   129,   237,   203,    26,   118,   119,   174,
+     212,   217,   218,    78,    79,    80
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -870,332 +872,324 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      23,   216,    40,   190,   191,   205,   206,    36,    37,    35,
-      50,   107,    38,   107,   135,   107,    43,    45,   114,   108,
-      54,   123,   183,   124,    51,    46,    76,   248,   113,   199,
-     116,   243,   111,   136,     1,   169,   120,   207,   170,   121,
-     171,    27,    16,   180,    28,   181,   249,   229,   244,   230,
-     209,    47,    32,   195,   196,   107,   197,    34,   224,    41,
-     101,   102,   103,   104,    33,   239,   109,   110,   109,   110,
-     109,   110,   195,   196,   139,   227,   184,   126,   216,   144,
-     145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
-     155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
-     165,   166,   167,   114,    31,   266,   267,   268,   125,   177,
-     109,   110,   225,   173,    39,   127,   129,   131,   132,   133,
-     187,   189,   137,   269,   193,   270,   140,   272,   141,   142,
-     274,   143,   168,   202,   178,   194,   202,   202,   104,    76,
-     203,   208,   217,   218,   219,   228,   221,    76,     4,     5,
-       6,     7,     8,   235,   135,   236,     4,     5,     6,     7,
-       8,   240,   241,   242,   245,   247,   293,   250,   255,   258,
-     115,   260,   275,    15,   220,   213,   276,   287,   286,   116,
-     179,    15,   259,    16,   273,   294,     0,   182,     0,     0,
-       0,    16,   226,   237,   200,   238,   202,     0,     0,     0,
-      18,     0,    19,     0,    20,    21,     0,    22,    18,     0,
-      19,   246,    20,    21,     0,    22,   251,     0,     0,     0,
-       0,   254,     0,   257,     0,     0,     0,     0,     0,     0,
-       0,   261,   262,     0,   263,   264,   202,   202,   202,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,   213,     0,     0,     0,     0,   280,     0,   281,
-       0,     0,     0,     0,     0,     0,     0,   -70,    48,     0,
-       0,    49,   -70,     0,    50,     0,   -70,   -70,   -70,   -70,
-     -70,     0,   290,   291,   292,   -70,   -70,   -70,     0,     0,
-     -70,   -70,   -70,     0,   -70,   298,     0,     0,   -70,   -70,
-     -70,   -70,   -70,   -70,   -70,   -70,    16,     0,     0,   -70,
-       0,   -70,   -70,   -70,   -70,   -70,   -70,   -70,   -70,   -70,
-     -70,   -70,   -70,     0,   -70,     0,   -70,   -70,   -70,   -70,
-      55,   -70,     0,    56,  -142,  -142,    50,     0,     0,     0,
-       0,     0,    57,    58,    59,    60,    61,    62,    63,    64,
-      65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
-       0,  -142,  -142,     0,     0,     0,     0,     0,    16,     0,
-       0,  -142,  -142,    99,   100,   101,   102,   103,   104,     0,
-       0,     0,     0,   198,     0,    75,    56,     0,     0,    50,
-       0,     0,     0,  -141,     0,    57,    58,    59,    60,    61,
-      62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
-      72,    73,    74,     0,     0,     0,     0,     0,     0,     0,
-     174,    16,     0,     4,     5,     6,     7,     8,     0,     0,
-       0,     0,     0,     9,     0,     0,    10,     0,    75,     0,
-      11,    12,     0,     0,     0,    13,  -141,    14,    15,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    16,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    17,
-       0,     0,     0,     0,     0,    18,     0,    19,   175,    20,
-      21,   176,    22,    52,     0,     0,     4,     5,     6,     7,
-       8,     0,     0,     0,     0,     0,     9,     0,     0,    10,
-       0,     0,     0,    11,    12,     0,     0,     0,    13,    44,
-      14,    15,     4,     5,     6,     7,     8,     0,     0,     0,
-       0,    16,     9,     0,     0,    10,     0,     0,     0,    11,
-      12,     0,    17,     0,    13,     0,    14,    15,    18,     0,
-      19,     0,    20,    21,    53,    22,     0,    16,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    17,     0,
-       0,     0,     0,     0,    18,     0,    19,     0,    20,    21,
-     138,    22,     0,     4,     5,     6,     7,     8,     0,     0,
-       0,     0,     0,     9,     0,     0,    10,     0,     0,     0,
-      11,    12,     0,     0,     0,    13,   188,    14,    15,     4,
-       5,     6,     7,     8,     0,     0,     0,     0,    16,     9,
-       0,     0,    10,     0,     0,     0,    11,    12,     0,    17,
-       0,    13,     0,    14,    15,    18,     0,    19,     0,    20,
-      21,     0,    22,     0,    16,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    17,     0,     0,     0,     0,
-       0,    18,     0,    19,     0,    20,    21,   192,    22,     0,
+      23,    40,   192,   193,   207,   208,   185,    36,    37,    35,
+      50,   108,    38,   136,   108,    46,    43,    45,   115,   109,
+      54,    51,   124,    77,   227,   252,   246,   201,   114,   112,
+     117,    27,   137,   219,   171,   121,   209,   172,   122,   173,
+       1,    47,    16,   247,   253,   102,   103,   104,   105,    28,
+     211,    31,    32,   108,   197,   198,    33,   199,    41,   108,
+     186,   125,   197,   198,   242,   230,   110,   111,    34,   110,
+     111,   182,   126,   183,   140,   127,    39,   128,   228,   132,
+     146,   147,   148,   149,   150,   151,   152,   153,   154,   155,
+     156,   157,   158,   159,   160,   161,   162,   163,   164,   165,
+     166,   167,   168,   169,   115,   270,   271,   272,   110,   111,
+     179,   175,   219,   130,   110,   111,   232,   133,   233,   134,
+     141,   189,   191,   144,   273,   195,   274,   138,   142,   276,
+     145,   143,   278,   170,   204,   180,   196,    77,   204,   204,
+     205,   105,   210,   220,   176,   221,    77,     4,     5,     6,
+       7,     8,   222,   231,   224,   136,   243,     9,   238,   239,
+      10,   250,   262,   244,    11,    12,   245,   248,   297,    13,
+     251,    14,    15,   254,   216,   259,   223,   264,   279,   280,
+     116,   117,    16,   291,   263,   290,   184,   298,   277,   181,
+     229,     0,     0,    17,     0,   240,     0,   241,   204,    18,
+       0,    19,   177,    20,    21,   178,    22,     0,     4,     5,
+       6,     7,     8,   249,     0,     0,     0,     0,     0,   255,
+       0,     0,     0,     0,   258,     0,   261,     0,     0,     0,
+       0,     0,     0,    15,   265,   266,     0,   267,   268,   204,
+     204,   204,     0,    16,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   216,   202,     0,     0,     0,     0,     0,
+      18,   284,    19,   285,    20,    21,     0,    22,     0,     0,
+       0,   -70,    48,     0,     0,    49,   -70,     0,    50,     0,
+     -70,   -70,   -70,   -70,   -70,     0,   294,   295,   296,   -70,
+     -70,   -70,     0,     0,   -70,   -70,   -70,     0,   -70,   302,
+       0,     0,   -70,   -70,   -70,   -70,   -70,   -70,   -70,   -70,
+      16,     0,     0,   -70,     0,   -70,   -70,   -70,   -70,   -70,
+     -70,   -70,   -70,   -70,   -70,   -70,   -70,     0,   -70,     0,
+     -70,   -70,   -70,   -70,    55,   -70,     0,    56,  -143,  -143,
+      50,     0,     0,     0,     0,     0,    57,    58,    59,    60,
+      61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
+      71,    72,    73,    74,     0,  -143,  -143,     0,     0,     0,
+       0,     0,    16,     0,     0,  -143,  -143,   100,   101,   102,
+     103,   104,   105,     0,     0,     0,     0,   200,     0,    75,
+      56,    76,     0,    50,     0,     0,     0,  -142,     0,    57,
+      58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
+      68,    69,    70,    71,    72,    73,    74,     0,     0,     0,
+       0,     0,     0,     0,     0,    16,     0,    52,     0,     0,
        4,     5,     6,     7,     8,     0,     0,     0,     0,     0,
-       9,     0,     0,    10,     0,     0,     0,    11,    12,     0,
-       0,     0,    13,     0,    14,    15,     4,     5,     6,     7,
+       9,     0,    75,    10,    76,     0,     0,    11,    12,     0,
+    -142,     0,    13,    44,    14,    15,     4,     5,     6,     7,
        8,     0,     0,     0,     0,    16,     9,     0,     0,    10,
        0,     0,     0,    11,    12,     0,    17,     0,    13,     0,
-      14,    15,    18,     0,    19,     0,    20,    21,     0,    22,
+      14,    15,    18,     0,    19,     0,    20,    21,    53,    22,
        0,    16,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,    17,     0,     0,     0,     0,     0,    18,     0,
-      19,     0,    20,    21,   253,    22,     4,     5,     6,     7,
-       8,     0,     0,     0,     0,     0,     9,     0,     0,    10,
-       0,     0,     0,    11,    12,     0,     0,     0,    13,     0,
-      14,    15,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    16,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    17,     0,     0,     0,     0,   256,    18,     0,
-      19,     0,    20,    21,     0,    22,     4,     5,     6,     7,
-       8,     0,     0,     0,     0,     0,     9,     0,     0,    10,
-       0,     0,     0,    11,    12,     0,     0,     0,    13,     0,
-      14,    15,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    16,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    17,     0,     0,     0,     0,   279,    18,     0,
-      19,     0,    20,    21,     0,    22,     4,     5,     6,     7,
-       8,     0,     0,     0,     0,     0,     9,     0,     0,    10,
-       0,     0,     0,    11,    12,     0,     0,     0,    13,     0,
-      14,    15,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    16,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    17,    80,    81,    82,    83,     0,    18,     0,
-      19,     0,    20,    21,     0,    22,     0,     0,    84,    85,
-       0,     0,     0,     0,     0,    86,    87,    88,    89,    90,
-      91,    92,    93,     0,     0,     0,     0,     0,    94,    95,
-      96,    97,    98,    99,   100,   101,   102,   103,   104,    80,
-      81,    82,    83,   222,     0,     0,   223,     0,     0,     0,
-       0,     0,     0,     0,    84,    85,     0,     0,     0,     0,
-       0,    86,    87,    88,    89,    90,    91,    92,    93,     0,
-       0,     0,     0,     0,    94,    95,    96,    97,    98,    99,
-     100,   101,   102,   103,   104,    80,    81,    82,    83,     0,
-       0,     0,   134,     0,     0,     0,     0,     0,     0,     0,
-      84,    85,     0,     0,     0,     0,     0,    86,    87,    88,
-      89,    90,    91,    92,    93,     0,     0,     0,     0,     0,
-      94,    95,    96,    97,    98,    99,   100,   101,   102,   103,
-     104,    80,    81,    82,    83,     0,     0,     0,   252,     0,
-       0,     0,     0,     0,     0,     0,    84,    85,     0,     0,
-       0,     0,     0,    86,    87,    88,    89,    90,    91,    92,
-      93,     0,     0,     0,     0,     0,    94,    95,    96,    97,
-      98,    99,   100,   101,   102,   103,   104,   211,    81,    82,
-      50,     0,     0,     0,   277,     0,    57,    58,    59,    60,
-      61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
-      71,    72,    73,    74,     0,    92,    93,     0,    80,    81,
-      82,    83,    16,     0,     0,    97,    98,    99,   100,   101,
-     102,   103,   104,    84,    85,     0,     0,     0,     0,   212,
-      86,    87,    88,    89,    90,    91,    92,    93,     0,     0,
-       0,     0,     0,    94,    95,    96,    97,    98,    99,   100,
-     101,   102,   103,   104,   296,     0,   297,    80,    81,    82,
-      83,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    84,    85,     0,     0,     0,     0,     0,    86,
-      87,    88,    89,    90,    91,    92,    93,     0,    80,    81,
-      82,    83,    94,    95,    96,    97,    98,    99,   100,   101,
-     102,   103,   104,    84,    85,   130,     0,     0,     0,     0,
-      86,    87,    88,    89,    90,    91,    92,    93,     0,    80,
-      81,    82,    83,    94,    95,    96,    97,    98,    99,   100,
-     101,   102,   103,   104,    84,    85,   204,     0,     0,     0,
-       0,    86,    87,    88,    89,    90,    91,    92,    93,     0,
-      80,    81,    82,    83,    94,    95,    96,    97,    98,    99,
-     100,   101,   102,   103,   104,    84,    85,   271,     0,     0,
-       0,     0,    86,    87,    88,    89,    90,    91,    92,    93,
-       0,    80,    81,    82,    83,    94,    95,    96,    97,    98,
-      99,   100,   101,   102,   103,   104,    84,    85,   295,     0,
-       0,     0,     0,    86,    87,    88,    89,    90,    91,    92,
-      93,     0,    80,    81,    82,    83,    94,    95,    96,    97,
-      98,    99,   100,   101,   102,   103,   104,    84,    85,   299,
-       0,     0,     0,     0,    86,    87,    88,    89,    90,    91,
-      92,    93,     0,     0,     0,     0,     0,    94,    95,    96,
-      97,    98,    99,   100,   101,   102,   103,   104,   105,    80,
-      81,    82,    83,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    84,    85,     0,     0,     0,     0,
-       0,    86,    87,    88,    89,    90,    91,    92,    93,     0,
-       0,     0,     0,     0,    94,    95,    96,    97,    98,    99,
-     100,   101,   102,   103,   104,   231,    80,    81,    82,    83,
+      19,     0,    20,    21,   139,    22,     0,     4,     5,     6,
+       7,     8,     0,     0,     0,     0,     0,     9,     0,     0,
+      10,     0,     0,     0,    11,    12,     0,     0,     0,    13,
+     190,    14,    15,     4,     5,     6,     7,     8,     0,     0,
+       0,     0,    16,     9,     0,     0,    10,     0,     0,     0,
+      11,    12,     0,    17,     0,    13,     0,    14,    15,    18,
+       0,    19,     0,    20,    21,     0,    22,     0,    16,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    17,
+       0,     0,     0,     0,     0,    18,     0,    19,     0,    20,
+      21,   194,    22,     0,     4,     5,     6,     7,     8,     0,
+       0,     0,     0,     0,     9,     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,    10,     0,     0,     0,    11,    12,     0,
+      17,     0,    13,     0,    14,    15,    18,     0,    19,     0,
+      20,    21,     0,    22,     0,    16,     0,     0,     0,     0,
+       4,     5,     6,     7,     8,     0,    17,     0,     0,     0,
+       0,     0,    18,     0,    19,     0,    20,    21,   257,    22,
+       4,     5,     6,     7,     8,    15,     0,     0,     0,     0,
+       9,     0,     0,    10,     0,    16,     0,    11,    12,     0,
+       0,     0,    13,     0,    14,    15,     0,     0,     0,     0,
+       0,     0,    18,     0,    19,    16,    20,    21,     0,    22,
+       0,     0,     0,     0,     0,     0,    17,     0,     0,     0,
+       0,   260,    18,     0,    19,     0,    20,    21,     0,    22,
+       4,     5,     6,     7,     8,     0,     0,     0,     0,     0,
+       9,     0,     0,    10,     0,     0,     0,    11,    12,     0,
+       0,     0,    13,     0,    14,    15,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    16,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    17,     0,     0,     0,
+       0,   283,    18,     0,    19,     0,    20,    21,     0,    22,
+       4,     5,     6,     7,     8,     0,     0,     0,     0,     0,
+       9,     0,     0,    10,     0,     0,     0,    11,    12,     0,
+       0,     0,    13,     0,    14,    15,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    16,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    17,     0,     0,     0,
+       0,     0,    18,     0,    19,   213,    20,    21,    50,    22,
+       0,     0,     0,     0,    57,    58,    59,    60,    61,    62,
+      63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
+      73,    74,     0,     0,     0,     0,     0,     0,     0,     0,
+      16,     0,     0,     0,     0,    81,    82,    83,    84,     0,
+       0,     0,     0,     0,     0,     0,     0,   214,     0,   215,
+      85,    86,     0,     0,     0,     0,     0,    87,    88,    89,
+      90,    91,    92,    93,    94,     0,     0,     0,     0,     0,
+      95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
+     105,    81,    82,    83,    84,   225,     0,     0,   226,     0,
+       0,     0,     0,     0,     0,     0,    85,    86,     0,     0,
+       0,     0,     0,    87,    88,    89,    90,    91,    92,    93,
+      94,     0,     0,     0,     0,     0,    95,    96,    97,    98,
+      99,   100,   101,   102,   103,   104,   105,    81,    82,    83,
+      84,     0,     0,     0,   135,     0,     0,     0,     0,     0,
+       0,     0,    85,    86,     0,     0,     0,     0,     0,    87,
+      88,    89,    90,    91,    92,    93,    94,     0,     0,     0,
+       0,     0,    95,    96,    97,    98,    99,   100,   101,   102,
+     103,   104,   105,    81,    82,    83,    84,     0,     0,     0,
+     256,     0,     0,     0,     0,     0,     0,     0,    85,    86,
+       0,     0,     0,     0,     0,    87,    88,    89,    90,    91,
+      92,    93,    94,     0,     0,     0,     0,     0,    95,    96,
+      97,    98,    99,   100,   101,   102,   103,   104,   105,    81,
+      82,    83,    84,     0,     0,     0,   281,     0,     0,     0,
+       0,     0,     0,     0,    85,    86,     0,     0,     0,     0,
+       0,    87,    88,    89,    90,    91,    92,    93,    94,     0,
+       0,     0,     0,     0,    95,    96,    97,    98,    99,   100,
+     101,   102,   103,   104,   105,   300,     0,   301,    81,    82,
+      83,    84,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    85,    86,     0,     0,     0,     0,     0,
+      87,    88,    89,    90,    91,    92,    93,    94,     0,    81,
+      82,    83,    84,    95,    96,    97,    98,    99,   100,   101,
+     102,   103,   104,   105,    85,    86,   131,     0,     0,     0,
+       0,    87,    88,    89,    90,    91,    92,    93,    94,     0,
+      81,    82,    83,    84,    95,    96,    97,    98,    99,   100,
+     101,   102,   103,   104,   105,    85,    86,   206,     0,     0,
+       0,     0,    87,    88,    89,    90,    91,    92,    93,    94,
+       0,    81,    82,    83,    84,    95,    96,    97,    98,    99,
+     100,   101,   102,   103,   104,   105,    85,    86,   275,     0,
+       0,     0,     0,    87,    88,    89,    90,    91,    92,    93,
+      94,     0,    81,    82,    83,    84,    95,    96,    97,    98,
+      99,   100,   101,   102,   103,   104,   105,    85,    86,   299,
+       0,     0,     0,     0,    87,    88,    89,    90,    91,    92,
+      93,    94,     0,    81,    82,    83,    84,    95,    96,    97,
+      98,    99,   100,   101,   102,   103,   104,   105,    85,    86,
+     303,     0,     0,     0,     0,    87,    88,    89,    90,    91,
+      92,    93,    94,     0,     0,     0,     0,     0,    95,    96,
+      97,    98,    99,   100,   101,   102,   103,   104,   105,   106,
+      81,    82,    83,    84,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    85,    86,     0,     0,     0,
+       0,     0,    87,    88,    89,    90,    91,    92,    93,    94,
+       0,     0,     0,     0,     0,    95,    96,    97,    98,    99,
+     100,   101,   102,   103,   104,   105,   234,    81,    82,    83,
+      84,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,    85,    86,     0,     0,     0,     0,     0,    87,
+      88,    89,    90,    91,    92,    93,    94,     0,     0,     0,
+       0,     0,    95,    96,    97,    98,    99,   100,   101,   102,
+     103,   104,   105,   282,    81,    82,    83,    84,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    85,
+      86,     0,     0,     0,     0,     0,    87,    88,    89,    90,
+      91,    92,    93,    94,     0,     0,     0,     0,     0,    95,
+      96,    97,    98,    99,   100,   101,   102,   103,   104,   105,
+     288,    81,    82,    83,    84,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    85,    86,     0,     0,
+       0,     0,     0,    87,    88,    89,    90,    91,    92,    93,
+      94,     0,     0,     0,     0,     0,    95,    96,    97,    98,
+      99,   100,   101,   102,   103,   104,   105,   289,    81,    82,
+      83,    84,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    85,    86,     0,     0,     0,     0,     0,
+      87,    88,    89,    90,    91,    92,    93,    94,     0,     0,
+       0,     0,     0,    95,    96,    97,    98,    99,   100,   101,
+     102,   103,   104,   105,   292,    81,    82,    83,    84,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    84,    85,     0,     0,     0,     0,     0,    86,    87,
-      88,    89,    90,    91,    92,    93,     0,     0,     0,     0,
-       0,    94,    95,    96,    97,    98,    99,   100,   101,   102,
-     103,   104,   278,    80,    81,    82,    83,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,    84,    85,
-       0,     0,     0,     0,     0,    86,    87,    88,    89,    90,
-      91,    92,    93,     0,     0,     0,     0,     0,    94,    95,
-      96,    97,    98,    99,   100,   101,   102,   103,   104,   284,
-      80,    81,    82,    83,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    84,    85,     0,     0,     0,
-       0,     0,    86,    87,    88,    89,    90,    91,    92,    93,
-       0,     0,     0,     0,     0,    94,    95,    96,    97,    98,
-      99,   100,   101,   102,   103,   104,   285,    80,    81,    82,
-      83,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    84,    85,     0,     0,     0,     0,     0,    86,
-      87,    88,    89,    90,    91,    92,    93,     0,     0,     0,
-       0,     0,    94,    95,    96,    97,    98,    99,   100,   101,
-     102,   103,   104,   288,    80,    81,    82,    83,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    84,
-      85,     0,     0,     0,     0,     0,    86,    87,    88,    89,
-      90,    91,    92,    93,     0,     0,     0,     0,     0,    94,
+      85,    86,     0,     0,     0,     0,     0,    87,    88,    89,
+      90,    91,    92,    93,    94,     0,     0,     0,     0,     0,
       95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
-     289,    80,    81,    82,    83,     0,     0,     0,     0,     0,
-       0,   232,   233,     0,     0,     0,    84,    85,     0,     0,
-       0,     0,     0,    86,    87,    88,    89,    90,    91,    92,
-      93,     0,     0,     0,     0,     0,    94,    95,    96,    97,
-      98,    99,   100,   101,   102,   103,   104,    80,    81,    82,
-      83,     0,     0,     0,     0,     0,   122,     0,     0,     0,
-       0,     0,    84,    85,     0,     0,     0,     0,     0,    86,
-      87,    88,    89,    90,    91,    92,    93,     0,    80,    81,
-      82,    83,    94,    95,    96,    97,    98,    99,   100,   101,
-     102,   103,   104,    84,    85,     0,     0,     0,     0,     0,
-      86,    87,    88,    89,    90,    91,    92,    93,     0,     0,
-       0,   265,     0,    94,    95,    96,    97,    98,    99,   100,
-     101,   102,   103,   104,    80,    81,    82,    83,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   282,    84,
-      85,     0,     0,     0,     0,     0,    86,    87,    88,    89,
-      90,    91,    92,    93,     0,     0,     0,     0,     0,    94,
+     105,   293,    81,    82,    83,    84,     0,     0,     0,     0,
+       0,     0,   235,   236,     0,     0,     0,    85,    86,     0,
+       0,     0,     0,     0,    87,    88,    89,    90,    91,    92,
+      93,    94,     0,     0,     0,     0,     0,    95,    96,    97,
+      98,    99,   100,   101,   102,   103,   104,   105,    81,    82,
+      83,    84,     0,     0,     0,     0,     0,   123,     0,     0,
+       0,     0,     0,    85,    86,     0,     0,     0,     0,     0,
+      87,    88,    89,    90,    91,    92,    93,    94,     0,    81,
+      82,    83,    84,    95,    96,    97,    98,    99,   100,   101,
+     102,   103,   104,   105,    85,    86,     0,     0,     0,     0,
+       0,    87,    88,    89,    90,    91,    92,    93,    94,     0,
+       0,     0,   269,     0,    95,    96,    97,    98,    99,   100,
+     101,   102,   103,   104,   105,    81,    82,    83,    84,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   286,
+      85,    86,     0,     0,     0,     0,     0,    87,    88,    89,
+      90,    91,    92,    93,    94,     0,     0,     0,     0,     0,
       95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
-      80,    81,    82,    83,     0,     0,     0,     0,     0,   283,
-       0,     0,     0,     0,     0,    84,    85,     0,     0,     0,
-       0,     0,    86,    87,    88,    89,    90,    91,    92,    93,
-       0,    80,    81,    82,    83,    94,    95,    96,    97,    98,
-      99,   100,   101,   102,   103,   104,    84,    85,     0,     0,
-       0,     0,     0,    86,    87,    88,    89,    90,    91,    92,
-      93,     0,    80,    81,    82,    83,    94,    95,    96,    97,
-      98,    99,   100,   101,   102,   103,   104,    84,    85,     0,
-       0,     0,     0,     0,    86,    87,    88,    89,    90,    91,
-      92,    93,     0,  -142,    81,    82,     0,     0,     0,    96,
-      97,    98,    99,   100,   101,   102,   103,   104,    84,    85,
-       0,     0,    81,    82,     0,  -142,  -142,  -142,  -142,  -142,
-    -142,    92,    93,     0,     0,     0,    84,     0,     0,     0,
-    -142,    97,    98,    99,   100,   101,   102,   103,   104,    92,
-      93,     0,     0,     0,     0,     0,     0,     0,     0,    97,
-      98,    99,   100,   101,   102,   103,   104
+     105,    81,    82,    83,    84,     0,     0,     0,     0,     0,
+     287,     0,     0,     0,     0,     0,    85,    86,     0,     0,
+       0,     0,     0,    87,    88,    89,    90,    91,    92,    93,
+      94,     0,    81,    82,    83,    84,    95,    96,    97,    98,
+      99,   100,   101,   102,   103,   104,   105,    85,    86,     0,
+       0,     0,     0,     0,    87,    88,    89,    90,    91,    92,
+      93,    94,     0,    81,    82,    83,    84,    95,    96,    97,
+      98,    99,   100,   101,   102,   103,   104,   105,    85,    86,
+       0,     0,     0,     0,     0,    87,    88,    89,    90,    91,
+      92,    93,    94,     0,  -143,    82,    83,     0,     0,     0,
+      97,    98,    99,   100,   101,   102,   103,   104,   105,    85,
+      86,     0,     0,    82,    83,     0,  -143,  -143,  -143,  -143,
+    -143,  -143,    93,    94,     0,     0,     0,    85,     0,     0,
+       0,  -143,    98,    99,   100,   101,   102,   103,   104,   105,
+      93,    94,    82,    83,     0,     0,     0,     0,     0,     0,
+      98,    99,   100,   101,   102,   103,   104,   105,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    93,
+      94,     0,     0,     0,     0,     0,     0,     0,     0,    98,
+      99,   100,   101,   102,   103,   104,   105
 };
 
 static const yytype_int16 yycheck[] =
 {
-       1,   171,     1,   123,   124,   140,   141,    11,    12,    10,
-       7,     5,    13,     5,    45,     5,    17,    18,    29,    13,
-      21,    13,     4,    13,    20,     4,    22,    45,    29,   135,
-      31,    45,    28,    64,    15,    58,    56,   143,    61,    59,
-      63,     0,    39,    55,    16,    57,    64,    55,    62,    57,
-     170,    30,    54,    40,    41,     5,    43,     4,     4,    58,
-      51,    52,    53,    54,    39,   200,    60,    61,    60,    61,
-      60,    61,    40,    41,    75,    43,    58,     4,   248,    80,
+       1,     1,   124,   125,   142,   143,     4,    11,    12,    10,
+       7,     5,    13,    45,     5,     4,    17,    18,    29,    13,
+      21,    20,    13,    22,     4,    45,    45,   136,    29,    28,
+      31,     0,    64,   173,    58,    56,   145,    61,    59,    63,
+      15,    30,    39,    62,    64,    51,    52,    53,    54,    16,
+     172,    56,    54,     5,    40,    41,    39,    43,    58,     5,
+      58,    13,    40,    41,   202,    43,    60,    61,     4,    60,
+      61,    55,    27,    57,    75,     4,    58,     4,    58,     1,
       81,    82,    83,    84,    85,    86,    87,    88,    89,    90,
       91,    92,    93,    94,    95,    96,    97,    98,    99,   100,
-     101,   102,   103,   114,    56,   240,   241,   242,    27,   110,
-      60,    61,    58,   109,    58,     4,    57,     1,    54,    62,
-     121,   122,    59,   243,   125,   245,    59,   247,    59,    64,
-     250,    45,    54,   137,    13,    44,   140,   141,    54,   135,
-      57,     4,    44,    54,    62,     4,    54,   143,     4,     5,
-       6,     7,     8,    56,    45,    56,     4,     5,     6,     7,
-       8,    44,    59,    59,    59,    59,   286,    59,    54,     4,
-      30,    59,    54,    29,   175,   171,    54,    54,    59,   180,
-     114,    29,   229,    39,   248,   290,    -1,   119,    -1,    -1,
-      -1,    39,   180,   194,    50,   196,   200,    -1,    -1,    -1,
-      56,    -1,    58,    -1,    60,    61,    -1,    63,    56,    -1,
-      58,   212,    60,    61,    -1,    63,   217,    -1,    -1,    -1,
-      -1,   222,    -1,   224,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,   232,   233,    -1,   235,   236,   240,   241,   242,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,   248,    -1,    -1,    -1,    -1,   258,    -1,   260,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,     0,     1,    -1,
-      -1,     4,     5,    -1,     7,    -1,     9,    10,    11,    12,
-      13,    -1,   283,   284,   285,    18,    19,    20,    -1,    -1,
-      23,    24,    25,    -1,    27,   296,    -1,    -1,    31,    32,
-      33,    34,    35,    36,    37,    38,    39,    -1,    -1,    42,
-      -1,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      53,    54,    55,    -1,    57,    -1,    59,    60,    61,    62,
-       1,    64,    -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,
-      -1,    37,    38,    -1,    -1,    -1,    -1,    -1,    39,    -1,
-      -1,    47,    48,    49,    50,    51,    52,    53,    54,    -1,
-      -1,    -1,    -1,     1,    -1,    56,     4,    -1,    -1,     7,
-      -1,    -1,    -1,    64,    -1,    13,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
-      28,    29,    30,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-       1,    39,    -1,     4,     5,     6,     7,     8,    -1,    -1,
-      -1,    -1,    -1,    14,    -1,    -1,    17,    -1,    56,    -1,
-      21,    22,    -1,    -1,    -1,    26,    64,    28,    29,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    50,
-      -1,    -1,    -1,    -1,    -1,    56,    -1,    58,    59,    60,
-      61,    62,    63,     1,    -1,    -1,     4,     5,     6,     7,
-       8,    -1,    -1,    -1,    -1,    -1,    14,    -1,    -1,    17,
-      -1,    -1,    -1,    21,    22,    -1,    -1,    -1,    26,     1,
-      28,    29,     4,     5,     6,     7,     8,    -1,    -1,    -1,
-      -1,    39,    14,    -1,    -1,    17,    -1,    -1,    -1,    21,
-      22,    -1,    50,    -1,    26,    -1,    28,    29,    56,    -1,
-      58,    -1,    60,    61,    62,    63,    -1,    39,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,
-      -1,    -1,    -1,    -1,    56,    -1,    58,    -1,    60,    61,
-       1,    63,    -1,     4,     5,     6,     7,     8,    -1,    -1,
-      -1,    -1,    -1,    14,    -1,    -1,    17,    -1,    -1,    -1,
-      21,    22,    -1,    -1,    -1,    26,     1,    28,    29,     4,
-       5,     6,     7,     8,    -1,    -1,    -1,    -1,    39,    14,
-      -1,    -1,    17,    -1,    -1,    -1,    21,    22,    -1,    50,
-      -1,    26,    -1,    28,    29,    56,    -1,    58,    -1,    60,
-      61,    -1,    63,    -1,    39,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    50,    -1,    -1,    -1,    -1,
-      -1,    56,    -1,    58,    -1,    60,    61,     1,    63,    -1,
+     101,   102,   103,   104,   115,   243,   244,   245,    60,    61,
+     111,   110,   252,    57,    60,    61,    55,    54,    57,    62,
+       4,   122,   123,    64,   246,   126,   248,    59,    59,   251,
+      45,    59,   254,    54,   138,    13,    44,   136,   142,   143,
+      57,    54,     4,    44,     1,    54,   145,     4,     5,     6,
+       7,     8,    62,     4,    54,    45,    44,    14,    56,    56,
+      17,     4,     4,    59,    21,    22,    59,    59,   290,    26,
+      59,    28,    29,    59,   173,    54,   177,    59,    54,    54,
+      30,   182,    39,    54,   232,    59,   120,   294,   252,   115,
+     182,    -1,    -1,    50,    -1,   196,    -1,   198,   202,    56,
+      -1,    58,    59,    60,    61,    62,    63,    -1,     4,     5,
+       6,     7,     8,   214,    -1,    -1,    -1,    -1,    -1,   220,
+      -1,    -1,    -1,    -1,   225,    -1,   227,    -1,    -1,    -1,
+      -1,    -1,    -1,    29,   235,   236,    -1,   238,   239,   243,
+     244,   245,    -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   252,    50,    -1,    -1,    -1,    -1,    -1,
+      56,   262,    58,   264,    60,    61,    -1,    63,    -1,    -1,
+      -1,     0,     1,    -1,    -1,     4,     5,    -1,     7,    -1,
+       9,    10,    11,    12,    13,    -1,   287,   288,   289,    18,
+      19,    20,    -1,    -1,    23,    24,    25,    -1,    27,   300,
+      -1,    -1,    31,    32,    33,    34,    35,    36,    37,    38,
+      39,    -1,    -1,    42,    -1,    44,    45,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    55,    -1,    57,    -1,
+      59,    60,    61,    62,     1,    64,    -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,    -1,    37,    38,    -1,    -1,    -1,
+      -1,    -1,    39,    -1,    -1,    47,    48,    49,    50,    51,
+      52,    53,    54,    -1,    -1,    -1,    -1,     1,    -1,    56,
+       4,    58,    -1,     7,    -1,    -1,    -1,    64,    -1,    13,
+      14,    15,    16,    17,    18,    19,    20,    21,    22,    23,
+      24,    25,    26,    27,    28,    29,    30,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    39,    -1,     1,    -1,    -1,
        4,     5,     6,     7,     8,    -1,    -1,    -1,    -1,    -1,
-      14,    -1,    -1,    17,    -1,    -1,    -1,    21,    22,    -1,
-      -1,    -1,    26,    -1,    28,    29,     4,     5,     6,     7,
+      14,    -1,    56,    17,    58,    -1,    -1,    21,    22,    -1,
+      64,    -1,    26,     1,    28,    29,     4,     5,     6,     7,
        8,    -1,    -1,    -1,    -1,    39,    14,    -1,    -1,    17,
       -1,    -1,    -1,    21,    22,    -1,    50,    -1,    26,    -1,
-      28,    29,    56,    -1,    58,    -1,    60,    61,    -1,    63,
+      28,    29,    56,    -1,    58,    -1,    60,    61,    62,    63,
       -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    50,    -1,    -1,    -1,    -1,    -1,    56,    -1,
-      58,    -1,    60,    61,    62,    63,     4,     5,     6,     7,
-       8,    -1,    -1,    -1,    -1,    -1,    14,    -1,    -1,    17,
-      -1,    -1,    -1,    21,    22,    -1,    -1,    -1,    26,    -1,
-      28,    29,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    50,    -1,    -1,    -1,    -1,    55,    56,    -1,
-      58,    -1,    60,    61,    -1,    63,     4,     5,     6,     7,
-       8,    -1,    -1,    -1,    -1,    -1,    14,    -1,    -1,    17,
-      -1,    -1,    -1,    21,    22,    -1,    -1,    -1,    26,    -1,
-      28,    29,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    50,    -1,    -1,    -1,    -1,    55,    56,    -1,
-      58,    -1,    60,    61,    -1,    63,     4,     5,     6,     7,
-       8,    -1,    -1,    -1,    -1,    -1,    14,    -1,    -1,    17,
-      -1,    -1,    -1,    21,    22,    -1,    -1,    -1,    26,    -1,
-      28,    29,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    39,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    50,     9,    10,    11,    12,    -1,    56,    -1,
-      58,    -1,    60,    61,    -1,    63,    -1,    -1,    24,    25,
-      -1,    -1,    -1,    -1,    -1,    31,    32,    33,    34,    35,
-      36,    37,    38,    -1,    -1,    -1,    -1,    -1,    44,    45,
-      46,    47,    48,    49,    50,    51,    52,    53,    54,     9,
-      10,    11,    12,    59,    -1,    -1,    62,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    24,    25,    -1,    -1,    -1,    -1,
-      -1,    31,    32,    33,    34,    35,    36,    37,    38,    -1,
-      -1,    -1,    -1,    -1,    44,    45,    46,    47,    48,    49,
-      50,    51,    52,    53,    54,     9,    10,    11,    12,    -1,
-      -1,    -1,    62,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      58,    -1,    60,    61,     1,    63,    -1,     4,     5,     6,
+       7,     8,    -1,    -1,    -1,    -1,    -1,    14,    -1,    -1,
+      17,    -1,    -1,    -1,    21,    22,    -1,    -1,    -1,    26,
+       1,    28,    29,     4,     5,     6,     7,     8,    -1,    -1,
+      -1,    -1,    39,    14,    -1,    -1,    17,    -1,    -1,    -1,
+      21,    22,    -1,    50,    -1,    26,    -1,    28,    29,    56,
+      -1,    58,    -1,    60,    61,    -1,    63,    -1,    39,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    50,
+      -1,    -1,    -1,    -1,    -1,    56,    -1,    58,    -1,    60,
+      61,     1,    63,    -1,     4,     5,     6,     7,     8,    -1,
+      -1,    -1,    -1,    -1,    14,    -1,    -1,    17,    -1,    -1,
+      -1,    21,    22,    -1,    -1,    -1,    26,    -1,    28,    29,
+       4,     5,     6,     7,     8,    -1,    -1,    -1,    -1,    39,
+      14,    -1,    -1,    17,    -1,    -1,    -1,    21,    22,    -1,
+      50,    -1,    26,    -1,    28,    29,    56,    -1,    58,    -1,
+      60,    61,    -1,    63,    -1,    39,    -1,    -1,    -1,    -1,
+       4,     5,     6,     7,     8,    -1,    50,    -1,    -1,    -1,
+      -1,    -1,    56,    -1,    58,    -1,    60,    61,    62,    63,
+       4,     5,     6,     7,     8,    29,    -1,    -1,    -1,    -1,
+      14,    -1,    -1,    17,    -1,    39,    -1,    21,    22,    -1,
+      -1,    -1,    26,    -1,    28,    29,    -1,    -1,    -1,    -1,
+      -1,    -1,    56,    -1,    58,    39,    60,    61,    -1,    63,
+      -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,    -1,    -1,
+      -1,    55,    56,    -1,    58,    -1,    60,    61,    -1,    63,
+       4,     5,     6,     7,     8,    -1,    -1,    -1,    -1,    -1,
+      14,    -1,    -1,    17,    -1,    -1,    -1,    21,    22,    -1,
+      -1,    -1,    26,    -1,    28,    29,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,    -1,    -1,
+      -1,    55,    56,    -1,    58,    -1,    60,    61,    -1,    63,
+       4,     5,     6,     7,     8,    -1,    -1,    -1,    -1,    -1,
+      14,    -1,    -1,    17,    -1,    -1,    -1,    21,    22,    -1,
+      -1,    -1,    26,    -1,    28,    29,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,    -1,    -1,
+      -1,    -1,    56,    -1,    58,     4,    60,    61,     7,    63,
+      -1,    -1,    -1,    -1,    13,    14,    15,    16,    17,    18,
+      19,    20,    21,    22,    23,    24,    25,    26,    27,    28,
+      29,    30,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      39,    -1,    -1,    -1,    -1,     9,    10,    11,    12,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    56,    -1,    58,
       24,    25,    -1,    -1,    -1,    -1,    -1,    31,    32,    33,
       34,    35,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,
       44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
-      54,     9,    10,    11,    12,    -1,    -1,    -1,    62,    -1,
+      54,     9,    10,    11,    12,    59,    -1,    -1,    62,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    24,    25,    -1,    -1,
       -1,    -1,    -1,    31,    32,    33,    34,    35,    36,    37,
       38,    -1,    -1,    -1,    -1,    -1,    44,    45,    46,    47,
-      48,    49,    50,    51,    52,    53,    54,     4,    10,    11,
-       7,    -1,    -1,    -1,    62,    -1,    13,    14,    15,    16,
-      17,    18,    19,    20,    21,    22,    23,    24,    25,    26,
-      27,    28,    29,    30,    -1,    37,    38,    -1,     9,    10,
-      11,    12,    39,    -1,    -1,    47,    48,    49,    50,    51,
-      52,    53,    54,    24,    25,    -1,    -1,    -1,    -1,    56,
-      31,    32,    33,    34,    35,    36,    37,    38,    -1,    -1,
-      -1,    -1,    -1,    44,    45,    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,
+      48,    49,    50,    51,    52,    53,    54,     9,    10,    11,
+      12,    -1,    -1,    -1,    62,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    24,    25,    -1,    -1,    -1,    -1,    -1,    31,
-      32,    33,    34,    35,    36,    37,    38,    -1,     9,    10,
-      11,    12,    44,    45,    46,    47,    48,    49,    50,    51,
-      52,    53,    54,    24,    25,    57,    -1,    -1,    -1,    -1,
+      32,    33,    34,    35,    36,    37,    38,    -1,    -1,    -1,
+      -1,    -1,    44,    45,    46,    47,    48,    49,    50,    51,
+      52,    53,    54,     9,    10,    11,    12,    -1,    -1,    -1,
+      62,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    24,    25,
+      -1,    -1,    -1,    -1,    -1,    31,    32,    33,    34,    35,
+      36,    37,    38,    -1,    -1,    -1,    -1,    -1,    44,    45,
+      46,    47,    48,    49,    50,    51,    52,    53,    54,     9,
+      10,    11,    12,    -1,    -1,    -1,    62,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    24,    25,    -1,    -1,    -1,    -1,
+      -1,    31,    32,    33,    34,    35,    36,    37,    38,    -1,
+      -1,    -1,    -1,    -1,    44,    45,    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,    -1,    -1,    -1,    -1,    -1,
       31,    32,    33,    34,    35,    36,    37,    38,    -1,     9,
       10,    11,    12,    44,    45,    46,    47,    48,    49,    50,
       51,    52,    53,    54,    24,    25,    57,    -1,    -1,    -1,
@@ -1209,20 +1203,9 @@ static const yytype_int16 yycheck[] =
       38,    -1,     9,    10,    11,    12,    44,    45,    46,    47,
       48,    49,    50,    51,    52,    53,    54,    24,    25,    57,
       -1,    -1,    -1,    -1,    31,    32,    33,    34,    35,    36,
-      37,    38,    -1,    -1,    -1,    -1,    -1,    44,    45,    46,
-      47,    48,    49,    50,    51,    52,    53,    54,    55,     9,
-      10,    11,    12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    24,    25,    -1,    -1,    -1,    -1,
-      -1,    31,    32,    33,    34,    35,    36,    37,    38,    -1,
-      -1,    -1,    -1,    -1,    44,    45,    46,    47,    48,    49,
-      50,    51,    52,    53,    54,    55,     9,    10,    11,    12,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    24,    25,    -1,    -1,    -1,    -1,    -1,    31,    32,
-      33,    34,    35,    36,    37,    38,    -1,    -1,    -1,    -1,
-      -1,    44,    45,    46,    47,    48,    49,    50,    51,    52,
-      53,    54,    55,     9,    10,    11,    12,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    24,    25,
-      -1,    -1,    -1,    -1,    -1,    31,    32,    33,    34,    35,
+      37,    38,    -1,     9,    10,    11,    12,    44,    45,    46,
+      47,    48,    49,    50,    51,    52,    53,    54,    24,    25,
+      57,    -1,    -1,    -1,    -1,    31,    32,    33,    34,    35,
       36,    37,    38,    -1,    -1,    -1,    -1,    -1,    44,    45,
       46,    47,    48,    49,    50,    51,    52,    53,    54,    55,
        9,    10,    11,    12,    -1,    -1,    -1,    -1,    -1,    -1,
@@ -1240,36 +1223,53 @@ static const yytype_int16 yycheck[] =
       35,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,    44,
       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
       55,     9,    10,    11,    12,    -1,    -1,    -1,    -1,    -1,
-      -1,    19,    20,    -1,    -1,    -1,    24,    25,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    24,    25,    -1,    -1,
       -1,    -1,    -1,    31,    32,    33,    34,    35,    36,    37,
       38,    -1,    -1,    -1,    -1,    -1,    44,    45,    46,    47,
-      48,    49,    50,    51,    52,    53,    54,     9,    10,    11,
-      12,    -1,    -1,    -1,    -1,    -1,    18,    -1,    -1,    -1,
-      -1,    -1,    24,    25,    -1,    -1,    -1,    -1,    -1,    31,
-      32,    33,    34,    35,    36,    37,    38,    -1,     9,    10,
-      11,    12,    44,    45,    46,    47,    48,    49,    50,    51,
-      52,    53,    54,    24,    25,    -1,    -1,    -1,    -1,    -1,
+      48,    49,    50,    51,    52,    53,    54,    55,     9,    10,
+      11,    12,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    24,    25,    -1,    -1,    -1,    -1,    -1,
       31,    32,    33,    34,    35,    36,    37,    38,    -1,    -1,
-      -1,    42,    -1,    44,    45,    46,    47,    48,    49,    50,
-      51,    52,    53,    54,     9,    10,    11,    12,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    23,    24,
-      25,    -1,    -1,    -1,    -1,    -1,    31,    32,    33,    34,
-      35,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,    44,
-      45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
-       9,    10,    11,    12,    -1,    -1,    -1,    -1,    -1,    18,
-      -1,    -1,    -1,    -1,    -1,    24,    25,    -1,    -1,    -1,
-      -1,    -1,    31,    32,    33,    34,    35,    36,    37,    38,
-      -1,     9,    10,    11,    12,    44,    45,    46,    47,    48,
-      49,    50,    51,    52,    53,    54,    24,    25,    -1,    -1,
+      -1,    -1,    -1,    44,    45,    46,    47,    48,    49,    50,
+      51,    52,    53,    54,    55,     9,    10,    11,    12,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      24,    25,    -1,    -1,    -1,    -1,    -1,    31,    32,    33,
+      34,    35,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,
+      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
+      54,    55,     9,    10,    11,    12,    -1,    -1,    -1,    -1,
+      -1,    -1,    19,    20,    -1,    -1,    -1,    24,    25,    -1,
+      -1,    -1,    -1,    -1,    31,    32,    33,    34,    35,    36,
+      37,    38,    -1,    -1,    -1,    -1,    -1,    44,    45,    46,
+      47,    48,    49,    50,    51,    52,    53,    54,     9,    10,
+      11,    12,    -1,    -1,    -1,    -1,    -1,    18,    -1,    -1,
+      -1,    -1,    -1,    24,    25,    -1,    -1,    -1,    -1,    -1,
+      31,    32,    33,    34,    35,    36,    37,    38,    -1,     9,
+      10,    11,    12,    44,    45,    46,    47,    48,    49,    50,
+      51,    52,    53,    54,    24,    25,    -1,    -1,    -1,    -1,
+      -1,    31,    32,    33,    34,    35,    36,    37,    38,    -1,
+      -1,    -1,    42,    -1,    44,    45,    46,    47,    48,    49,
+      50,    51,    52,    53,    54,     9,    10,    11,    12,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    23,
+      24,    25,    -1,    -1,    -1,    -1,    -1,    31,    32,    33,
+      34,    35,    36,    37,    38,    -1,    -1,    -1,    -1,    -1,
+      44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
+      54,     9,    10,    11,    12,    -1,    -1,    -1,    -1,    -1,
+      18,    -1,    -1,    -1,    -1,    -1,    24,    25,    -1,    -1,
       -1,    -1,    -1,    31,    32,    33,    34,    35,    36,    37,
       38,    -1,     9,    10,    11,    12,    44,    45,    46,    47,
       48,    49,    50,    51,    52,    53,    54,    24,    25,    -1,
       -1,    -1,    -1,    -1,    31,    32,    33,    34,    35,    36,
-      37,    38,    -1,     9,    10,    11,    -1,    -1,    -1,    46,
+      37,    38,    -1,     9,    10,    11,    12,    44,    45,    46,
       47,    48,    49,    50,    51,    52,    53,    54,    24,    25,
-      -1,    -1,    10,    11,    -1,    31,    32,    33,    34,    35,
-      36,    37,    38,    -1,    -1,    -1,    24,    -1,    -1,    -1,
-      46,    47,    48,    49,    50,    51,    52,    53,    54,    37,
+      -1,    -1,    -1,    -1,    -1,    31,    32,    33,    34,    35,
+      36,    37,    38,    -1,     9,    10,    11,    -1,    -1,    -1,
+      46,    47,    48,    49,    50,    51,    52,    53,    54,    24,
+      25,    -1,    -1,    10,    11,    -1,    31,    32,    33,    34,
+      35,    36,    37,    38,    -1,    -1,    -1,    24,    -1,    -1,
+      -1,    46,    47,    48,    49,    50,    51,    52,    53,    54,
+      37,    38,    10,    11,    -1,    -1,    -1,    -1,    -1,    -1,
+      47,    48,    49,    50,    51,    52,    53,    54,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    37,
       38,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    47,
       48,    49,    50,    51,    52,    53,    54
 };
@@ -1285,29 +1285,30 @@ static const yytype_uint8 yystos[] =
        1,    58,    76,    70,     1,    70,     4,    30,     1,     4,
        7,    75,     1,    62,    70,     1,     4,    13,    14,    15,
       16,    17,    18,    19,    20,    21,    22,    23,    24,    25,
-      26,    27,    28,    29,    30,    56,    75,    88,    89,    90,
-       9,    10,    11,    12,    24,    25,    31,    32,    33,    34,
-      35,    36,    37,    38,    44,    45,    46,    47,    48,    49,
-      50,    51,    52,    53,    54,    55,    70,     5,    13,    60,
-      61,    75,    69,    70,    72,    68,    70,    82,    83,    77,
-      56,    59,    18,    13,    13,    27,     4,     4,    78,    57,
-      57,     1,    54,    62,    62,    45,    64,    59,     1,    70,
-      59,    59,    64,    45,    70,    70,    70,    70,    70,    70,
+      26,    27,    28,    29,    30,    56,    58,    75,    88,    89,
+      90,     9,    10,    11,    12,    24,    25,    31,    32,    33,
+      34,    35,    36,    37,    38,    44,    45,    46,    47,    48,
+      49,    50,    51,    52,    53,    54,    55,    70,     5,    13,
+      60,    61,    75,    69,    70,    72,    68,    70,    82,    83,
+      77,    56,    59,    18,    13,    13,    27,     4,     4,    78,
+      57,    57,     1,    54,    62,    62,    45,    64,    59,     1,
+      70,     4,    59,    59,    64,    45,    70,    70,    70,    70,
       70,    70,    70,    70,    70,    70,    70,    70,    70,    70,
-      70,    70,    70,    70,    70,    70,    70,    70,    54,    58,
-      61,    63,    84,    75,     1,    59,    62,    70,    13,    69,
-      55,    57,    78,     4,    58,    73,    74,    70,     1,    70,
-      84,    84,     1,    70,    44,    40,    41,    43,     1,    89,
-      50,    80,    81,    57,    57,    80,    80,    89,     4,    84,
-      85,     4,    56,    75,    86,    87,    88,    44,    54,    62,
-      70,    54,    59,    62,     4,    58,    83,    43,     4,    55,
-      57,    55,    19,    20,    79,    56,    56,    70,    70,    80,
-      44,    59,    59,    45,    62,    59,    70,    59,    45,    64,
-      59,    70,    62,    62,    70,    54,    55,    70,     4,    74,
-      59,    70,    70,    70,    70,    42,    80,    80,    80,    84,
-      84,    57,    84,    87,    84,    54,    54,    62,    55,    55,
-      70,    70,    23,    18,    55,    55,    59,    54,    55,    55,
-      70,    70,    70,    84,    79,    57,    55,    57,    70,    57
+      70,    70,    70,    70,    70,    70,    70,    70,    70,    70,
+      54,    58,    61,    63,    84,    75,     1,    59,    62,    70,
+      13,    69,    55,    57,    78,     4,    58,    73,    74,    70,
+       1,    70,    84,    84,     1,    70,    44,    40,    41,    43,
+       1,    89,    50,    80,    81,    57,    57,    80,    80,    89,
+       4,    84,    85,     4,    56,    58,    75,    86,    87,    88,
+      44,    54,    62,    70,    54,    59,    62,     4,    58,    83,
+      43,     4,    55,    57,    55,    19,    20,    79,    56,    56,
+      70,    70,    80,    44,    59,    59,    45,    62,    59,    70,
+       4,    59,    45,    64,    59,    70,    62,    62,    70,    54,
+      55,    70,     4,    74,    59,    70,    70,    70,    70,    42,
+      80,    80,    80,    84,    84,    57,    84,    87,    84,    54,
+      54,    62,    55,    55,    70,    70,    23,    18,    55,    55,
+      59,    54,    55,    55,    70,    70,    70,    84,    79,    57,
+      55,    57,    70,    57
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
@@ -1325,10 +1326,10 @@ static const yytype_uint8 yyr1[] =
       81,    81,    81,    81,    81,    81,    81,    81,    81,    81,
       81,    81,    81,    81,    81,    81,    81,    81,    81,    82,
       82,    83,    84,    84,    84,    85,    85,    86,    86,    87,
-      87,    87,    87,    88,    88,    88,    88,    88,    88,    88,
+      87,    87,    87,    87,    88,    88,    88,    88,    88,    88,
       88,    88,    88,    88,    88,    88,    88,    88,    88,    88,
-      88,    89,    89,    89,    89,    90,    90,    90,    90,    90,
-      90,    90
+      88,    88,    89,    89,    89,    89,    90,    90,    90,    90,
+      90,    90,    90,    90
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -1345,11 +1346,11 @@ static const yytype_uint8 yyr2[] =
        3,     2,     2,     3,     5,     4,     4,     3,     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,     3,
-       3,     3,     5,     1,     1,     1,     1,     1,     1,     1,
+       3,     1,     2,     3,     3,     1,     3,     1,     3,     2,
+       3,     3,     3,     5,     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,     1,
-       5,     5
+       1,     1,     0,     1,     3,     3,     3,     3,     3,     1,
+       2,     1,     5,     5
 };
 
 
@@ -1852,163 +1853,163 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio
           case 4: /* IDENT  */
 #line 36 "parser.y" /* yacc.c:1257  */
       { jv_free(((*yyvaluep).literal)); }
-#line 1856 "parser.c" /* yacc.c:1257  */
+#line 1857 "parser.c" /* yacc.c:1257  */
         break;
 
     case 5: /* FIELD  */
 #line 36 "parser.y" /* yacc.c:1257  */
       { jv_free(((*yyvaluep).literal)); }
-#line 1862 "parser.c" /* yacc.c:1257  */
+#line 1863 "parser.c" /* yacc.c:1257  */
         break;
 
     case 6: /* LITERAL  */
 #line 36 "parser.y" /* yacc.c:1257  */
       { jv_free(((*yyvaluep).literal)); }
-#line 1868 "parser.c" /* yacc.c:1257  */
+#line 1869 "parser.c" /* yacc.c:1257  */
         break;
 
     case 7: /* FORMAT  */
 #line 36 "parser.y" /* yacc.c:1257  */
       { jv_free(((*yyvaluep).literal)); }
-#line 1874 "parser.c" /* yacc.c:1257  */
+#line 1875 "parser.c" /* yacc.c:1257  */
         break;
 
     case 40: /* QQSTRING_TEXT  */
 #line 36 "parser.y" /* yacc.c:1257  */
       { jv_free(((*yyvaluep).literal)); }
-#line 1880 "parser.c" /* yacc.c:1257  */
+#line 1881 "parser.c" /* yacc.c:1257  */
         break;
 
     case 67: /* Module  */
 #line 37 "parser.y" /* yacc.c:1257  */
       { block_free(((*yyvaluep).blk)); }
-#line 1886 "parser.c" /* yacc.c:1257  */
+#line 1887 "parser.c" /* yacc.c:1257  */
         break;
 
     case 68: /* Imports  */
 #line 37 "parser.y" /* yacc.c:1257  */
       { block_free(((*yyvaluep).blk)); }
-#line 1892 "parser.c" /* yacc.c:1257  */
+#line 1893 "parser.c" /* yacc.c:1257  */
         break;
 
     case 69: /* FuncDefs  */
 #line 37 "parser.y" /* yacc.c:1257  */
       { block_free(((*yyvaluep).blk)); }
-#line 1898 "parser.c" /* yacc.c:1257  */
+#line 1899 "parser.c" /* yacc.c:1257  */
         break;
 
     case 70: /* Exp  */
 #line 37 "parser.y" /* yacc.c:1257  */
       { block_free(((*yyvaluep).blk)); }
-#line 1904 "parser.c" /* yacc.c:1257  */
+#line 1905 "parser.c" /* yacc.c:1257  */
         break;
 
     case 71: /* Import  */
 #line 37 "parser.y" /* yacc.c:1257  */
       { block_free(((*yyvaluep).blk)); }
-#line 1910 "parser.c" /* yacc.c:1257  */
+#line 1911 "parser.c" /* yacc.c:1257  */
         break;
 
     case 72: /* FuncDef  */
 #line 37 "parser.y" /* yacc.c:1257  */
       { block_free(((*yyvaluep).blk)); }
-#line 1916 "parser.c" /* yacc.c:1257  */
+#line 1917 "parser.c" /* yacc.c:1257  */
         break;
 
     case 73: /* Params  */
 #line 37 "parser.y" /* yacc.c:1257  */
       { block_free(((*yyvaluep).blk)); }
-#line 1922 "parser.c" /* yacc.c:1257  */
+#line 1923 "parser.c" /* yacc.c:1257  */
         break;
 
     case 74: /* Param  */
 #line 37 "parser.y" /* yacc.c:1257  */
       { block_free(((*yyvaluep).blk)); }
-#line 1928 "parser.c" /* yacc.c:1257  */
+#line 1929 "parser.c" /* yacc.c:1257  */
         break;
 
     case 75: /* String  */
 #line 37 "parser.y" /* yacc.c:1257  */
       { block_free(((*yyvaluep).blk)); }
-#line 1934 "parser.c" /* yacc.c:1257  */
+#line 1935 "parser.c" /* yacc.c:1257  */
         break;
 
     case 78: /* QQString  */
 #line 37 "parser.y" /* yacc.c:1257  */
       { block_free(((*yyvaluep).blk)); }
-#line 1940 "parser.c" /* yacc.c:1257  */
+#line 1941 "parser.c" /* yacc.c:1257  */
         break;
 
     case 79: /* ElseBody  */
 #line 37 "parser.y" /* yacc.c:1257  */
       { block_free(((*yyvaluep).blk)); }
-#line 1946 "parser.c" /* yacc.c:1257  */
+#line 1947 "parser.c" /* yacc.c:1257  */
         break;
 
     case 80: /* ExpD  */
 #line 37 "parser.y" /* yacc.c:1257  */
       { block_free(((*yyvaluep).blk)); }
-#line 1952 "parser.c" /* yacc.c:1257  */
+#line 1953 "parser.c" /* yacc.c:1257  */
         break;
 
     case 81: /* Term  */
 #line 37 "parser.y" /* yacc.c:1257  */
       { block_free(((*yyvaluep).blk)); }
-#line 1958 "parser.c" /* yacc.c:1257  */
+#line 1959 "parser.c" /* yacc.c:1257  */
         break;
 
     case 82: /* Args  */
 #line 37 "parser.y" /* yacc.c:1257  */
       { block_free(((*yyvaluep).blk)); }
-#line 1964 "parser.c" /* yacc.c:1257  */
+#line 1965 "parser.c" /* yacc.c:1257  */
         break;
 
     case 83: /* Arg  */
 #line 37 "parser.y" /* yacc.c:1257  */
       { block_free(((*yyvaluep).blk)); }
-#line 1970 "parser.c" /* yacc.c:1257  */
+#line 1971 "parser.c" /* yacc.c:1257  */
         break;
 
     case 84: /* Pattern  */
 #line 37 "parser.y" /* yacc.c:1257  */
       { block_free(((*yyvaluep).blk)); }
-#line 1976 "parser.c" /* yacc.c:1257  */
+#line 1977 "parser.c" /* yacc.c:1257  */
         break;
 
     case 85: /* ArrayPats  */
 #line 37 "parser.y" /* yacc.c:1257  */
       { block_free(((*yyvaluep).blk)); }
-#line 1982 "parser.c" /* yacc.c:1257  */
+#line 1983 "parser.c" /* yacc.c:1257  */
         break;
 
     case 86: /* ObjPats  */
 #line 37 "parser.y" /* yacc.c:1257  */
       { block_free(((*yyvaluep).blk)); }
-#line 1988 "parser.c" /* yacc.c:1257  */
+#line 1989 "parser.c" /* yacc.c:1257  */
         break;
 
     case 87: /* ObjPat  */
 #line 37 "parser.y" /* yacc.c:1257  */
       { block_free(((*yyvaluep).blk)); }
-#line 1994 "parser.c" /* yacc.c:1257  */
+#line 1995 "parser.c" /* yacc.c:1257  */
         break;
 
     case 88: /* Keyword  */
 #line 36 "parser.y" /* yacc.c:1257  */
       { jv_free(((*yyvaluep).literal)); }
-#line 2000 "parser.c" /* yacc.c:1257  */
+#line 2001 "parser.c" /* yacc.c:1257  */
         break;
 
     case 89: /* MkDict  */
 #line 37 "parser.y" /* yacc.c:1257  */
       { block_free(((*yyvaluep).blk)); }
-#line 2006 "parser.c" /* yacc.c:1257  */
+#line 2007 "parser.c" /* yacc.c:1257  */
         break;
 
     case 90: /* MkDictPair  */
 #line 37 "parser.y" /* yacc.c:1257  */
       { block_free(((*yyvaluep).blk)); }
-#line 2012 "parser.c" /* yacc.c:1257  */
+#line 2013 "parser.c" /* yacc.c:1257  */
         break;
 
 
@@ -2304,7 +2305,7 @@ yyreduce:
     {
   *answer = BLOCK((yyvsp[-2].blk), (yyvsp[-1].blk), gen_op_simple(TOP), (yyvsp[0].blk));
 }
-#line 2308 "parser.c" /* yacc.c:1646  */
+#line 2309 "parser.c" /* yacc.c:1646  */
     break;
 
   case 3:
@@ -2312,7 +2313,7 @@ yyreduce:
     {
   *answer = BLOCK((yyvsp[-2].blk), (yyvsp[-1].blk), (yyvsp[0].blk));
 }
-#line 2316 "parser.c" /* yacc.c:1646  */
+#line 2317 "parser.c" /* yacc.c:1646  */
     break;
 
   case 4:
@@ -2320,7 +2321,7 @@ yyreduce:
     {
   (yyval.blk) = gen_noop();
 }
-#line 2324 "parser.c" /* yacc.c:1646  */
+#line 2325 "parser.c" /* yacc.c:1646  */
     break;
 
   case 5:
@@ -2333,7 +2334,7 @@ yyreduce:
     (yyval.blk) = gen_module((yyvsp[-1].blk));
   }
 }
-#line 2337 "parser.c" /* yacc.c:1646  */
+#line 2338 "parser.c" /* yacc.c:1646  */
     break;
 
   case 6:
@@ -2341,7 +2342,7 @@ yyreduce:
     {
   (yyval.blk) = gen_noop();
 }
-#line 2345 "parser.c" /* yacc.c:1646  */
+#line 2346 "parser.c" /* yacc.c:1646  */
     break;
 
   case 7:
@@ -2349,7 +2350,7 @@ yyreduce:
     {
   (yyval.blk) = BLOCK((yyvsp[-1].blk), (yyvsp[0].blk));
 }
-#line 2353 "parser.c" /* yacc.c:1646  */
+#line 2354 "parser.c" /* yacc.c:1646  */
     break;
 
   case 8:
@@ -2357,7 +2358,7 @@ yyreduce:
     {
   (yyval.blk) = gen_noop();
 }
-#line 2361 "parser.c" /* yacc.c:1646  */
+#line 2362 "parser.c" /* yacc.c:1646  */
     break;
 
   case 9:
@@ -2365,7 +2366,7 @@ yyreduce:
     {
   (yyval.blk) = block_bind((yyvsp[-1].blk), (yyvsp[0].blk), OP_IS_CALL_PSEUDO);
 }
-#line 2369 "parser.c" /* yacc.c:1646  */
+#line 2370 "parser.c" /* yacc.c:1646  */
     break;
 
   case 10:
@@ -2373,7 +2374,7 @@ yyreduce:
     {
   (yyval.blk) = block_bind_referenced((yyvsp[-1].blk), (yyvsp[0].blk), OP_IS_CALL_PSEUDO);
 }
-#line 2377 "parser.c" /* yacc.c:1646  */
+#line 2378 "parser.c" /* yacc.c:1646  */
     break;
 
   case 11:
@@ -2381,7 +2382,7 @@ yyreduce:
     {
   (yyval.blk) = gen_destructure((yyvsp[-4].blk), (yyvsp[-2].blk), (yyvsp[0].blk));
 }
-#line 2385 "parser.c" /* yacc.c:1646  */
+#line 2386 "parser.c" /* yacc.c:1646  */
     break;
 
   case 12:
@@ -2389,7 +2390,7 @@ yyreduce:
     {
   (yyval.blk) = gen_reduce((yyvsp[-7].blk), (yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk));
 }
-#line 2393 "parser.c" /* yacc.c:1646  */
+#line 2394 "parser.c" /* yacc.c:1646  */
     break;
 
   case 13:
@@ -2397,7 +2398,7 @@ yyreduce:
     {
   (yyval.blk) = gen_foreach((yyvsp[-9].blk), (yyvsp[-7].blk), (yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk));
 }
-#line 2401 "parser.c" /* yacc.c:1646  */
+#line 2402 "parser.c" /* yacc.c:1646  */
     break;
 
   case 14:
@@ -2405,7 +2406,7 @@ yyreduce:
     {
   (yyval.blk) = gen_foreach((yyvsp[-7].blk), (yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk), gen_noop());
 }
-#line 2409 "parser.c" /* yacc.c:1646  */
+#line 2410 "parser.c" /* yacc.c:1646  */
     break;
 
   case 15:
@@ -2413,7 +2414,7 @@ yyreduce:
     {
   (yyval.blk) = gen_cond((yyvsp[-3].blk), (yyvsp[-1].blk), (yyvsp[0].blk));
 }
-#line 2417 "parser.c" /* yacc.c:1646  */
+#line 2418 "parser.c" /* yacc.c:1646  */
     break;
 
   case 16:
@@ -2422,7 +2423,7 @@ yyreduce:
   FAIL((yyloc), "Possibly unterminated 'if' statement");
   (yyval.blk) = (yyvsp[-2].blk);
 }
-#line 2426 "parser.c" /* yacc.c:1646  */
+#line 2427 "parser.c" /* yacc.c:1646  */
     break;
 
   case 17:
@@ -2431,7 +2432,7 @@ yyreduce:
   //$$ = BLOCK(gen_op_target(FORK_OPT, $2), $2, $4);
   (yyval.blk) = gen_try((yyvsp[-2].blk), gen_try_handler((yyvsp[0].blk)));
 }
-#line 2435 "parser.c" /* yacc.c:1646  */
+#line 2436 "parser.c" /* yacc.c:1646  */
     break;
 
   case 18:
@@ -2440,7 +2441,7 @@ yyreduce:
   //$$ = BLOCK(gen_op_target(FORK_OPT, $2), $2, gen_op_simple(BACKTRACK));
   (yyval.blk) = gen_try((yyvsp[0].blk), gen_op_simple(BACKTRACK));
 }
-#line 2444 "parser.c" /* yacc.c:1646  */
+#line 2445 "parser.c" /* yacc.c:1646  */
     break;
 
   case 19:
@@ -2449,7 +2450,7 @@ yyreduce:
   FAIL((yyloc), "Possibly unterminated 'try' statement");
   (yyval.blk) = (yyvsp[-2].blk);
 }
-#line 2453 "parser.c" /* yacc.c:1646  */
+#line 2454 "parser.c" /* yacc.c:1646  */
     break;
 
   case 20:
@@ -2460,7 +2461,7 @@ yyreduce:
   jv_free((yyvsp[-2].literal));
   jv_free(v);
 }
-#line 2464 "parser.c" /* yacc.c:1646  */
+#line 2465 "parser.c" /* yacc.c:1646  */
     break;
 
   case 21:
@@ -2468,7 +2469,7 @@ yyreduce:
     {
   (yyval.blk) = gen_try((yyvsp[-1].blk), gen_op_simple(BACKTRACK));
 }
-#line 2472 "parser.c" /* yacc.c:1646  */
+#line 2473 "parser.c" /* yacc.c:1646  */
     break;
 
   case 22:
@@ -2476,7 +2477,7 @@ yyreduce:
     {
   (yyval.blk) = gen_call("_assign", BLOCK(gen_lambda((yyvsp[-2].blk)), gen_lambda((yyvsp[0].blk))));
 }
-#line 2480 "parser.c" /* yacc.c:1646  */
+#line 2481 "parser.c" /* yacc.c:1646  */
     break;
 
   case 23:
@@ -2484,7 +2485,7 @@ yyreduce:
     {
   (yyval.blk) = gen_or((yyvsp[-2].blk), (yyvsp[0].blk));
 }
-#line 2488 "parser.c" /* yacc.c:1646  */
+#line 2489 "parser.c" /* yacc.c:1646  */
     break;
 
   case 24:
@@ -2492,7 +2493,7 @@ yyreduce:
     {
   (yyval.blk) = gen_and((yyvsp[-2].blk), (yyvsp[0].blk));
 }
-#line 2496 "parser.c" /* yacc.c:1646  */
+#line 2497 "parser.c" /* yacc.c:1646  */
     break;
 
   case 25:
@@ -2500,7 +2501,7 @@ yyreduce:
     {
   (yyval.blk) = gen_definedor((yyvsp[-2].blk), (yyvsp[0].blk));
 }
-#line 2504 "parser.c" /* yacc.c:1646  */
+#line 2505 "parser.c" /* yacc.c:1646  */
     break;
 
   case 26:
@@ -2508,7 +2509,7 @@ yyreduce:
     {
   (yyval.blk) = gen_definedor_assign((yyvsp[-2].blk), (yyvsp[0].blk));
 }
-#line 2512 "parser.c" /* yacc.c:1646  */
+#line 2513 "parser.c" /* yacc.c:1646  */
     break;
 
   case 27:
@@ -2516,7 +2517,7 @@ yyreduce:
     {
   (yyval.blk) = gen_call("_modify", BLOCK(gen_lambda((yyvsp[-2].blk)), gen_lambda((yyvsp[0].blk))));
 }
-#line 2520 "parser.c" /* yacc.c:1646  */
+#line 2521 "parser.c" /* yacc.c:1646  */
     break;
 
   case 28:
@@ -2524,7 +2525,7 @@ yyreduce:
     { 
   (yyval.blk) = block_join((yyvsp[-2].blk), (yyvsp[0].blk)); 
 }
-#line 2528 "parser.c" /* yacc.c:1646  */
+#line 2529 "parser.c" /* yacc.c:1646  */
     break;
 
   case 29:
@@ -2532,7 +2533,7 @@ yyreduce:
     { 
   (yyval.blk) = gen_both((yyvsp[-2].blk), (yyvsp[0].blk)); 
 }
-#line 2536 "parser.c" /* yacc.c:1646  */
+#line 2537 "parser.c" /* yacc.c:1646  */
     break;
 
   case 30:
@@ -2540,7 +2541,7 @@ yyreduce:
     {
   (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '+');
 }
-#line 2544 "parser.c" /* yacc.c:1646  */
+#line 2545 "parser.c" /* yacc.c:1646  */
     break;
 
   case 31:
@@ -2548,7 +2549,7 @@ yyreduce:
     {
   (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '+');
 }
-#line 2552 "parser.c" /* yacc.c:1646  */
+#line 2553 "parser.c" /* yacc.c:1646  */
     break;
 
   case 32:
@@ -2556,7 +2557,7 @@ yyreduce:
     {
   (yyval.blk) = BLOCK((yyvsp[0].blk), gen_call("_negate", gen_noop()));
 }
-#line 2560 "parser.c" /* yacc.c:1646  */
+#line 2561 "parser.c" /* yacc.c:1646  */
     break;
 
   case 33:
@@ -2564,7 +2565,7 @@ yyreduce:
     {
   (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '-');
 }
-#line 2568 "parser.c" /* yacc.c:1646  */
+#line 2569 "parser.c" /* yacc.c:1646  */
     break;
 
   case 34:
@@ -2572,7 +2573,7 @@ yyreduce:
     {
   (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '-');
 }
-#line 2576 "parser.c" /* yacc.c:1646  */
+#line 2577 "parser.c" /* yacc.c:1646  */
     break;
 
   case 35:
@@ -2580,7 +2581,7 @@ yyreduce:
     {
   (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '*');
 }
-#line 2584 "parser.c" /* yacc.c:1646  */
+#line 2585 "parser.c" /* yacc.c:1646  */
     break;
 
   case 36:
@@ -2588,7 +2589,7 @@ yyreduce:
     {
   (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '*');
 }
-#line 2592 "parser.c" /* yacc.c:1646  */
+#line 2593 "parser.c" /* yacc.c:1646  */
     break;
 
   case 37:
@@ -2598,7 +2599,7 @@ yyreduce:
   if (block_is_const_inf((yyval.blk)))
     FAIL((yyloc), "Division by zero?");
 }
-#line 2602 "parser.c" /* yacc.c:1646  */
+#line 2603 "parser.c" /* yacc.c:1646  */
     break;
 
   case 38:
@@ -2608,7 +2609,7 @@ yyreduce:
   if (block_is_const_inf((yyval.blk)))
     FAIL((yyloc), "Remainder by zero?");
 }
-#line 2612 "parser.c" /* yacc.c:1646  */
+#line 2613 "parser.c" /* yacc.c:1646  */
     break;
 
   case 39:
@@ -2616,7 +2617,7 @@ yyreduce:
     {
   (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '/');
 }
-#line 2620 "parser.c" /* yacc.c:1646  */
+#line 2621 "parser.c" /* yacc.c:1646  */
     break;
 
   case 40:
@@ -2624,7 +2625,7 @@ yyreduce:
     {
   (yyval.blk) = gen_update((yyvsp[-2].blk), (yyvsp[0].blk), '%');
 }
-#line 2628 "parser.c" /* yacc.c:1646  */
+#line 2629 "parser.c" /* yacc.c:1646  */
     break;
 
   case 41:
@@ -2632,7 +2633,7 @@ yyreduce:
     {
   (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), EQ);
 }
-#line 2636 "parser.c" /* yacc.c:1646  */
+#line 2637 "parser.c" /* yacc.c:1646  */
     break;
 
   case 42:
@@ -2640,7 +2641,7 @@ yyreduce:
     {
   (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), NEQ);
 }
-#line 2644 "parser.c" /* yacc.c:1646  */
+#line 2645 "parser.c" /* yacc.c:1646  */
     break;
 
   case 43:
@@ -2648,7 +2649,7 @@ yyreduce:
     {
   (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '<');
 }
-#line 2652 "parser.c" /* yacc.c:1646  */
+#line 2653 "parser.c" /* yacc.c:1646  */
     break;
 
   case 44:
@@ -2656,7 +2657,7 @@ yyreduce:
     {
   (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), '>');
 }
-#line 2660 "parser.c" /* yacc.c:1646  */
+#line 2661 "parser.c" /* yacc.c:1646  */
     break;
 
   case 45:
@@ -2664,7 +2665,7 @@ yyreduce:
     {
   (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), LESSEQ);
 }
-#line 2668 "parser.c" /* yacc.c:1646  */
+#line 2669 "parser.c" /* yacc.c:1646  */
     break;
 
   case 46:
@@ -2672,7 +2673,7 @@ yyreduce:
     {
   (yyval.blk) = gen_binop((yyvsp[-2].blk), (yyvsp[0].blk), GREATEREQ);
 }
-#line 2676 "parser.c" /* yacc.c:1646  */
+#line 2677 "parser.c" /* yacc.c:1646  */
     break;
 
   case 47:
@@ -2680,7 +2681,7 @@ yyreduce:
     { 
   (yyval.blk) = (yyvsp[0].blk); 
 }
-#line 2684 "parser.c" /* yacc.c:1646  */
+#line 2685 "parser.c" /* yacc.c:1646  */
     break;
 
   case 48:
@@ -2694,7 +2695,7 @@ yyreduce:
   jv_free((yyvsp[-1].literal));
   jv_free(v);
 }
-#line 2698 "parser.c" /* yacc.c:1646  */
+#line 2699 "parser.c" /* yacc.c:1646  */
     break;
 
   case 49:
@@ -2706,7 +2707,7 @@ yyreduce:
   jv_free((yyvsp[-1].literal));
   jv_free(v);
 }
-#line 2710 "parser.c" /* yacc.c:1646  */
+#line 2711 "parser.c" /* yacc.c:1646  */
     break;
 
   case 50:
@@ -2723,7 +2724,7 @@ yyreduce:
   block_free((yyvsp[-4].blk));
   jv_free((yyvsp[-2].literal));
 }
-#line 2727 "parser.c" /* yacc.c:1646  */
+#line 2728 "parser.c" /* yacc.c:1646  */
     break;
 
   case 51:
@@ -2740,7 +2741,7 @@ yyreduce:
   block_free((yyvsp[-5].blk));
   jv_free((yyvsp[-2].literal));
 }
-#line 2744 "parser.c" /* yacc.c:1646  */
+#line 2745 "parser.c" /* yacc.c:1646  */
     break;
 
   case 52:
@@ -2749,7 +2750,7 @@ yyreduce:
   (yyval.blk) = gen_function(jv_string_value((yyvsp[-3].literal)), gen_noop(), (yyvsp[-1].blk));
   jv_free((yyvsp[-3].literal));
 }
-#line 2753 "parser.c" /* yacc.c:1646  */
+#line 2754 "parser.c" /* yacc.c:1646  */
     break;
 
   case 53:
@@ -2758,7 +2759,7 @@ yyreduce:
   (yyval.blk) = gen_function(jv_string_value((yyvsp[-6].literal)), (yyvsp[-4].blk), (yyvsp[-1].blk));
   jv_free((yyvsp[-6].literal));
 }
-#line 2762 "parser.c" /* yacc.c:1646  */
+#line 2763 "parser.c" /* yacc.c:1646  */
     break;
 
   case 54:
@@ -2766,7 +2767,7 @@ yyreduce:
     {
   (yyval.blk) = (yyvsp[0].blk);
 }
-#line 2770 "parser.c" /* yacc.c:1646  */
+#line 2771 "parser.c" /* yacc.c:1646  */
     break;
 
   case 55:
@@ -2774,7 +2775,7 @@ yyreduce:
     {
   (yyval.blk) = BLOCK((yyvsp[-2].blk), (yyvsp[0].blk));
 }
-#line 2778 "parser.c" /* yacc.c:1646  */
+#line 2779 "parser.c" /* yacc.c:1646  */
     break;
 
   case 56:
@@ -2783,7 +2784,7 @@ yyreduce:
   (yyval.blk) = gen_param_regular(jv_string_value((yyvsp[0].literal)));
   jv_free((yyvsp[0].literal));
 }
-#line 2787 "parser.c" /* yacc.c:1646  */
+#line 2788 "parser.c" /* yacc.c:1646  */
     break;
 
   case 57:
@@ -2792,13 +2793,13 @@ yyreduce:
   (yyval.blk) = gen_param(jv_string_value((yyvsp[0].literal)));
   jv_free((yyvsp[0].literal));
 }
-#line 2796 "parser.c" /* yacc.c:1646  */
+#line 2797 "parser.c" /* yacc.c:1646  */
     break;
 
   case 58:
 #line 547 "parser.y" /* yacc.c:1646  */
     { (yyval.literal) = jv_string("text"); }
-#line 2802 "parser.c" /* yacc.c:1646  */
+#line 2803 "parser.c" /* yacc.c:1646  */
     break;
 
   case 59:
@@ -2807,13 +2808,13 @@ yyreduce:
   (yyval.blk) = (yyvsp[-1].blk);
   jv_free((yyvsp[-2].literal));
 }
-#line 2811 "parser.c" /* yacc.c:1646  */
+#line 2812 "parser.c" /* yacc.c:1646  */
     break;
 
   case 60:
 #line 551 "parser.y" /* yacc.c:1646  */
     { (yyval.literal) = (yyvsp[-1].literal); }
-#line 2817 "parser.c" /* yacc.c:1646  */
+#line 2818 "parser.c" /* yacc.c:1646  */
     break;
 
   case 61:
@@ -2822,7 +2823,7 @@ yyreduce:
   (yyval.blk) = (yyvsp[-1].blk);
   jv_free((yyvsp[-2].literal));
 }
-#line 2826 "parser.c" /* yacc.c:1646  */
+#line 2827 "parser.c" /* yacc.c:1646  */
     break;
 
   case 62:
@@ -2830,7 +2831,7 @@ yyreduce:
     {
   (yyval.blk) = gen_const(jv_string(""));
 }
-#line 2834 "parser.c" /* yacc.c:1646  */
+#line 2835 "parser.c" /* yacc.c:1646  */
     break;
 
   case 63:
@@ -2838,7 +2839,7 @@ yyreduce:
     {
   (yyval.blk) = gen_binop((yyvsp[-1].blk), gen_const((yyvsp[0].literal)), '+');
 }
-#line 2842 "parser.c" /* yacc.c:1646  */
+#line 2843 "parser.c" /* yacc.c:1646  */
     break;
 
   case 64:
@@ -2846,7 +2847,7 @@ yyreduce:
     {
   (yyval.blk) = gen_binop((yyvsp[-3].blk), gen_format((yyvsp[-1].blk), jv_copy((yyvsp[-4].literal))), '+');
 }
-#line 2850 "parser.c" /* yacc.c:1646  */
+#line 2851 "parser.c" /* yacc.c:1646  */
     break;
 
   case 65:
@@ -2854,7 +2855,7 @@ yyreduce:
     {
   (yyval.blk) = gen_cond((yyvsp[-3].blk), (yyvsp[-1].blk), (yyvsp[0].blk));
 }
-#line 2858 "parser.c" /* yacc.c:1646  */
+#line 2859 "parser.c" /* yacc.c:1646  */
     break;
 
   case 66:
@@ -2862,7 +2863,7 @@ yyreduce:
     {
   (yyval.blk) = (yyvsp[-1].blk);
 }
-#line 2866 "parser.c" /* yacc.c:1646  */
+#line 2867 "parser.c" /* yacc.c:1646  */
     break;
 
   case 67:
@@ -2870,7 +2871,7 @@ yyreduce:
     { 
   (yyval.blk) = block_join((yyvsp[-2].blk), (yyvsp[0].blk));
 }
-#line 2874 "parser.c" /* yacc.c:1646  */
+#line 2875 "parser.c" /* yacc.c:1646  */
     break;
 
   case 68:
@@ -2878,7 +2879,7 @@ yyreduce:
     {
   (yyval.blk) = BLOCK((yyvsp[0].blk), gen_call("_negate", gen_noop()));
 }
-#line 2882 "parser.c" /* yacc.c:1646  */
+#line 2883 "parser.c" /* yacc.c:1646  */
     break;
 
   case 69:
@@ -2886,7 +2887,7 @@ yyreduce:
     {
   (yyval.blk) = (yyvsp[0].blk);
 }
-#line 2890 "parser.c" /* yacc.c:1646  */
+#line 2891 "parser.c" /* yacc.c:1646  */
     break;
 
   case 70:
@@ -2894,7 +2895,7 @@ yyreduce:
     {
   (yyval.blk) = gen_noop(); 
 }
-#line 2898 "parser.c" /* yacc.c:1646  */
+#line 2899 "parser.c" /* yacc.c:1646  */
     break;
 
   case 71:
@@ -2902,7 +2903,7 @@ yyreduce:
     {
   (yyval.blk) = gen_call("recurse", gen_noop());
 }
-#line 2906 "parser.c" /* yacc.c:1646  */
+#line 2907 "parser.c" /* yacc.c:1646  */
     break;
 
   case 72:
@@ -2915,7 +2916,7 @@ yyreduce:
   jv_free(v);
   jv_free((yyvsp[0].literal));
 }
-#line 2919 "parser.c" /* yacc.c:1646  */
+#line 2920 "parser.c" /* yacc.c:1646  */
     break;
 
   case 73:
@@ -2924,7 +2925,7 @@ yyreduce:
   FAIL((yyloc), "break requires a label to break to");
   (yyval.blk) = gen_noop();
 }
-#line 2928 "parser.c" /* yacc.c:1646  */
+#line 2929 "parser.c" /* yacc.c:1646  */
     break;
 
   case 74:
@@ -2932,7 +2933,7 @@ yyreduce:
     {
   (yyval.blk) = gen_index_opt((yyvsp[-2].blk), gen_const((yyvsp[-1].literal)));
 }
-#line 2936 "parser.c" /* yacc.c:1646  */
+#line 2937 "parser.c" /* yacc.c:1646  */
     break;
 
   case 75:
@@ -2940,7 +2941,7 @@ yyreduce:
     { 
   (yyval.blk) = gen_index_opt(gen_noop(), gen_const((yyvsp[-1].literal))); 
 }
-#line 2944 "parser.c" /* yacc.c:1646  */
+#line 2945 "parser.c" /* yacc.c:1646  */
     break;
 
   case 76:
@@ -2948,7 +2949,7 @@ yyreduce:
     {
   (yyval.blk) = gen_index_opt((yyvsp[-3].blk), (yyvsp[-1].blk));
 }
-#line 2952 "parser.c" /* yacc.c:1646  */
+#line 2953 "parser.c" /* yacc.c:1646  */
     break;
 
   case 77:
@@ -2956,7 +2957,7 @@ yyreduce:
     {
   (yyval.blk) = gen_index_opt(gen_noop(), (yyvsp[-1].blk));
 }
-#line 2960 "parser.c" /* yacc.c:1646  */
+#line 2961 "parser.c" /* yacc.c:1646  */
     break;
 
   case 78:
@@ -2964,7 +2965,7 @@ yyreduce:
     {
   (yyval.blk) = gen_index((yyvsp[-1].blk), gen_const((yyvsp[0].literal)));
 }
-#line 2968 "parser.c" /* yacc.c:1646  */
+#line 2969 "parser.c" /* yacc.c:1646  */
     break;
 
   case 79:
@@ -2972,7 +2973,7 @@ yyreduce:
     { 
   (yyval.blk) = gen_index(gen_noop(), gen_const((yyvsp[0].literal))); 
 }
-#line 2976 "parser.c" /* yacc.c:1646  */
+#line 2977 "parser.c" /* yacc.c:1646  */
     break;
 
   case 80:
@@ -2980,7 +2981,7 @@ yyreduce:
     {
   (yyval.blk) = gen_index((yyvsp[-2].blk), (yyvsp[0].blk));
 }
-#line 2984 "parser.c" /* yacc.c:1646  */
+#line 2985 "parser.c" /* yacc.c:1646  */
     break;
 
   case 81:
@@ -2988,7 +2989,7 @@ yyreduce:
     {
   (yyval.blk) = gen_index(gen_noop(), (yyvsp[0].blk));
 }
-#line 2992 "parser.c" /* yacc.c:1646  */
+#line 2993 "parser.c" /* yacc.c:1646  */
     break;
 
   case 82:
@@ -2997,7 +2998,7 @@ yyreduce:
   FAIL((yyloc), "try .[\"field\"] instead of .field for unusually named fields");
   (yyval.blk) = gen_noop();
 }
-#line 3001 "parser.c" /* yacc.c:1646  */
+#line 3002 "parser.c" /* yacc.c:1646  */
     break;
 
   case 83:
@@ -3007,7 +3008,7 @@ yyreduce:
   FAIL((yyloc), "try .[\"field\"] instead of .field for unusually named fields");
   (yyval.blk) = gen_noop();
 }
-#line 3011 "parser.c" /* yacc.c:1646  */
+#line 3012 "parser.c" /* yacc.c:1646  */
     break;
 
   case 84:
@@ -3015,7 +3016,7 @@ yyreduce:
     {
   (yyval.blk) = gen_index_opt((yyvsp[-4].blk), (yyvsp[-2].blk)); 
 }
-#line 3019 "parser.c" /* yacc.c:1646  */
+#line 3020 "parser.c" /* yacc.c:1646  */
     break;
 
   case 85:
@@ -3023,7 +3024,7 @@ yyreduce:
     {
   (yyval.blk) = gen_index((yyvsp[-3].blk), (yyvsp[-1].blk)); 
 }
-#line 3027 "parser.c" /* yacc.c:1646  */
+#line 3028 "parser.c" /* yacc.c:1646  */
     break;
 
   case 86:
@@ -3031,7 +3032,7 @@ yyreduce:
     {
   (yyval.blk) = block_join((yyvsp[-3].blk), gen_op_simple(EACH_OPT)); 
 }
-#line 3035 "parser.c" /* yacc.c:1646  */
+#line 3036 "parser.c" /* yacc.c:1646  */
     break;
 
   case 87:
@@ -3039,7 +3040,7 @@ yyreduce:
     {
   (yyval.blk) = block_join((yyvsp[-2].blk), gen_op_simple(EACH)); 
 }
-#line 3043 "parser.c" /* yacc.c:1646  */
+#line 3044 "parser.c" /* yacc.c:1646  */
     break;
 
   case 88:
@@ -3047,7 +3048,7 @@ yyreduce:
     {
   (yyval.blk) = gen_slice_index((yyvsp[-6].blk), (yyvsp[-4].blk), (yyvsp[-2].blk), INDEX_OPT);
 }
-#line 3051 "parser.c" /* yacc.c:1646  */
+#line 3052 "parser.c" /* yacc.c:1646  */
     break;
 
   case 89:
@@ -3055,7 +3056,7 @@ yyreduce:
     {
   (yyval.blk) = gen_slice_index((yyvsp[-5].blk), (yyvsp[-3].blk), gen_const(jv_null()), INDEX_OPT);
 }
-#line 3059 "parser.c" /* yacc.c:1646  */
+#line 3060 "parser.c" /* yacc.c:1646  */
     break;
 
   case 90:
@@ -3063,7 +3064,7 @@ yyreduce:
     {
   (yyval.blk) = gen_slice_index((yyvsp[-5].blk), gen_const(jv_null()), (yyvsp[-2].blk), INDEX_OPT);
 }
-#line 3067 "parser.c" /* yacc.c:1646  */
+#line 3068 "parser.c" /* yacc.c:1646  */
     break;
 
   case 91:
@@ -3071,7 +3072,7 @@ yyreduce:
     {
   (yyval.blk) = gen_slice_index((yyvsp[-5].blk), (yyvsp[-3].blk), (yyvsp[-1].blk), INDEX);
 }
-#line 3075 "parser.c" /* yacc.c:1646  */
+#line 3076 "parser.c" /* yacc.c:1646  */
     break;
 
   case 92:
@@ -3079,7 +3080,7 @@ yyreduce:
     {
   (yyval.blk) = gen_slice_index((yyvsp[-4].blk), (yyvsp[-2].blk), gen_const(jv_null()), INDEX);
 }
-#line 3083 "parser.c" /* yacc.c:1646  */
+#line 3084 "parser.c" /* yacc.c:1646  */
     break;
 
   case 93:
@@ -3087,7 +3088,7 @@ yyreduce:
     {
   (yyval.blk) = gen_slice_index((yyvsp[-4].blk), gen_const(jv_null()), (yyvsp[-1].blk), INDEX);
 }
-#line 3091 "parser.c" /* yacc.c:1646  */
+#line 3092 "parser.c" /* yacc.c:1646  */
     break;
 
   case 94:
@@ -3095,7 +3096,7 @@ yyreduce:
     {
   (yyval.blk) = gen_const((yyvsp[0].literal)); 
 }
-#line 3099 "parser.c" /* yacc.c:1646  */
+#line 3100 "parser.c" /* yacc.c:1646  */
     break;
 
   case 95:
@@ -3103,7 +3104,7 @@ yyreduce:
     {
   (yyval.blk) = (yyvsp[0].blk);
 }
-#line 3107 "parser.c" /* yacc.c:1646  */
+#line 3108 "parser.c" /* yacc.c:1646  */
     break;
 
   case 96:
@@ -3111,7 +3112,7 @@ yyreduce:
     {
   (yyval.blk) = gen_format(gen_noop(), (yyvsp[0].literal));
 }
-#line 3115 "parser.c" /* yacc.c:1646  */
+#line 3116 "parser.c" /* yacc.c:1646  */
     break;
 
   case 97:
@@ -3119,7 +3120,7 @@ yyreduce:
     { 
   (yyval.blk) = (yyvsp[-1].blk); 
 }
-#line 3123 "parser.c" /* yacc.c:1646  */
+#line 3124 "parser.c" /* yacc.c:1646  */
     break;
 
   case 98:
@@ -3127,7 +3128,7 @@ yyreduce:
     { 
   (yyval.blk) = gen_collect((yyvsp[-1].blk)); 
 }
-#line 3131 "parser.c" /* yacc.c:1646  */
+#line 3132 "parser.c" /* yacc.c:1646  */
     break;
 
   case 99:
@@ -3135,7 +3136,7 @@ yyreduce:
     { 
   (yyval.blk) = gen_const(jv_array()); 
 }
-#line 3139 "parser.c" /* yacc.c:1646  */
+#line 3140 "parser.c" /* yacc.c:1646  */
     break;
 
   case 100:
@@ -3147,7 +3148,7 @@ yyreduce:
   else
     (yyval.blk) = BLOCK(gen_subexp(gen_const(jv_object())), (yyvsp[-1].blk), gen_op_simple(POP));
 }
-#line 3151 "parser.c" /* yacc.c:1646  */
+#line 3152 "parser.c" /* yacc.c:1646  */
     break;
 
   case 101:
@@ -3156,7 +3157,7 @@ yyreduce:
   (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 3160 "parser.c" /* yacc.c:1646  */
+#line 3161 "parser.c" /* yacc.c:1646  */
     break;
 
   case 102:
@@ -3165,7 +3166,7 @@ yyreduce:
   (yyval.blk) = gen_location((yyloc), locations, gen_op_unbound(LOADV, jv_string_value((yyvsp[0].literal))));
   jv_free((yyvsp[0].literal));
 }
-#line 3169 "parser.c" /* yacc.c:1646  */
+#line 3170 "parser.c" /* yacc.c:1646  */
     break;
 
   case 103:
@@ -3182,7 +3183,7 @@ yyreduce:
     (yyval.blk) = gen_location((yyloc), locations, gen_call(s, gen_noop()));
   jv_free((yyvsp[0].literal));
 }
-#line 3186 "parser.c" /* yacc.c:1646  */
+#line 3187 "parser.c" /* yacc.c:1646  */
     break;
 
   case 104:
@@ -3192,31 +3193,31 @@ yyreduce:
   (yyval.blk) = gen_location((yylsp[-3]), locations, (yyval.blk));
   jv_free((yyvsp[-3].literal));
 }
-#line 3196 "parser.c" /* yacc.c:1646  */
+#line 3197 "parser.c" /* yacc.c:1646  */
     break;
 
   case 105:
 #line 722 "parser.y" /* yacc.c:1646  */
     { (yyval.blk) = gen_noop(); }
-#line 3202 "parser.c" /* yacc.c:1646  */
+#line 3203 "parser.c" /* yacc.c:1646  */
     break;
 
   case 106:
 #line 723 "parser.y" /* yacc.c:1646  */
     { (yyval.blk) = gen_noop(); }
-#line 3208 "parser.c" /* yacc.c:1646  */
+#line 3209 "parser.c" /* yacc.c:1646  */
     break;
 
   case 107:
 #line 724 "parser.y" /* yacc.c:1646  */
     { (yyval.blk) = (yyvsp[-3].blk); }
-#line 3214 "parser.c" /* yacc.c:1646  */
+#line 3215 "parser.c" /* yacc.c:1646  */
     break;
 
   case 108:
 #line 725 "parser.y" /* yacc.c:1646  */
     { (yyval.blk) = gen_noop(); }
-#line 3220 "parser.c" /* yacc.c:1646  */
+#line 3221 "parser.c" /* yacc.c:1646  */
     break;
 
   case 109:
@@ -3224,7 +3225,7 @@ yyreduce:
     {
   (yyval.blk) = (yyvsp[0].blk);
 }
-#line 3228 "parser.c" /* yacc.c:1646  */
+#line 3229 "parser.c" /* yacc.c:1646  */
     break;
 
   case 110:
@@ -3232,7 +3233,7 @@ yyreduce:
     {
   (yyval.blk) = BLOCK((yyvsp[-2].blk), (yyvsp[0].blk));
 }
-#line 3236 "parser.c" /* yacc.c:1646  */
+#line 3237 "parser.c" /* yacc.c:1646  */
     break;
 
   case 111:
@@ -3240,7 +3241,7 @@ yyreduce:
     {
   (yyval.blk) = gen_lambda((yyvsp[0].blk));
 }
-#line 3244 "parser.c" /* yacc.c:1646  */
+#line 3245 "parser.c" /* yacc.c:1646  */
     break;
 
   case 112:
@@ -3249,7 +3250,7 @@ yyreduce:
   (yyval.blk) = gen_op_unbound(STOREV, jv_string_value((yyvsp[0].literal)));
   jv_free((yyvsp[0].literal));
 }
-#line 3253 "parser.c" /* yacc.c:1646  */
+#line 3254 "parser.c" /* yacc.c:1646  */
     break;
 
   case 113:
@@ -3257,7 +3258,7 @@ yyreduce:
     {
   (yyval.blk) = BLOCK((yyvsp[-1].blk), gen_op_simple(POP));
 }
-#line 3261 "parser.c" /* yacc.c:1646  */
+#line 3262 "parser.c" /* yacc.c:1646  */
     break;
 
   case 114:
@@ -3265,7 +3266,7 @@ yyreduce:
     {
   (yyval.blk) = BLOCK((yyvsp[-1].blk), gen_op_simple(POP));
 }
-#line 3269 "parser.c" /* yacc.c:1646  */
+#line 3270 "parser.c" /* yacc.c:1646  */
     break;
 
   case 115:
@@ -3273,7 +3274,7 @@ yyreduce:
     {
   (yyval.blk) = gen_array_matcher(gen_noop(), (yyvsp[0].blk));
 }
-#line 3277 "parser.c" /* yacc.c:1646  */
+#line 3278 "parser.c" /* yacc.c:1646  */
     break;
 
   case 116:
@@ -3281,7 +3282,7 @@ yyreduce:
     {
   (yyval.blk) = gen_array_matcher((yyvsp[-2].blk), (yyvsp[0].blk));
 }
-#line 3285 "parser.c" /* yacc.c:1646  */
+#line 3286 "parser.c" /* yacc.c:1646  */
     break;
 
   case 117:
@@ -3289,7 +3290,7 @@ yyreduce:
     {
   (yyval.blk) = (yyvsp[0].blk);
 }
-#line 3293 "parser.c" /* yacc.c:1646  */
+#line 3294 "parser.c" /* yacc.c:1646  */
     break;
 
   case 118:
@@ -3297,15 +3298,15 @@ yyreduce:
     {
   (yyval.blk) = BLOCK((yyvsp[-2].blk), (yyvsp[0].blk));
 }
-#line 3301 "parser.c" /* yacc.c:1646  */
+#line 3302 "parser.c" /* yacc.c:1646  */
     break;
 
   case 119:
 #line 769 "parser.y" /* yacc.c:1646  */
     {
-  (yyval.blk) = gen_object_matcher(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk));
+  (yyval.blk) = gen_object_matcher(gen_const((yyvsp[0].literal)), gen_op_unbound(STOREV, jv_string_value((yyvsp[0].literal))));
 }
-#line 3309 "parser.c" /* yacc.c:1646  */
+#line 3310 "parser.c" /* yacc.c:1646  */
     break;
 
   case 120:
@@ -3313,253 +3314,270 @@ yyreduce:
     {
   (yyval.blk) = gen_object_matcher(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk));
 }
-#line 3317 "parser.c" /* yacc.c:1646  */
+#line 3318 "parser.c" /* yacc.c:1646  */
     break;
 
   case 121:
 #line 775 "parser.y" /* yacc.c:1646  */
     {
-  (yyval.blk) = gen_object_matcher((yyvsp[-2].blk), (yyvsp[0].blk));
+  (yyval.blk) = gen_object_matcher(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk));
 }
-#line 3325 "parser.c" /* yacc.c:1646  */
+#line 3326 "parser.c" /* yacc.c:1646  */
     break;
 
   case 122:
 #line 778 "parser.y" /* yacc.c:1646  */
     {
-  (yyval.blk) = gen_object_matcher((yyvsp[-3].blk), (yyvsp[0].blk));
+  (yyval.blk) = gen_object_matcher((yyvsp[-2].blk), (yyvsp[0].blk));
 }
-#line 3333 "parser.c" /* yacc.c:1646  */
+#line 3334 "parser.c" /* yacc.c:1646  */
     break;
 
   case 123:
-#line 783 "parser.y" /* yacc.c:1646  */
+#line 781 "parser.y" /* yacc.c:1646  */
     {
-  (yyval.literal) = jv_string("as");
+  (yyval.blk) = gen_object_matcher((yyvsp[-3].blk), (yyvsp[0].blk));
 }
-#line 3341 "parser.c" /* yacc.c:1646  */
+#line 3342 "parser.c" /* yacc.c:1646  */
     break;
 
   case 124:
 #line 786 "parser.y" /* yacc.c:1646  */
     {
-  (yyval.literal) = jv_string("def");
+  (yyval.literal) = jv_string("as");
 }
-#line 3349 "parser.c" /* yacc.c:1646  */
+#line 3350 "parser.c" /* yacc.c:1646  */
     break;
 
   case 125:
 #line 789 "parser.y" /* yacc.c:1646  */
     {
-  (yyval.literal) = jv_string("module");
+  (yyval.literal) = jv_string("def");
 }
-#line 3357 "parser.c" /* yacc.c:1646  */
+#line 3358 "parser.c" /* yacc.c:1646  */
     break;
 
   case 126:
 #line 792 "parser.y" /* yacc.c:1646  */
     {
-  (yyval.literal) = jv_string("import");
+  (yyval.literal) = jv_string("module");
 }
-#line 3365 "parser.c" /* yacc.c:1646  */
+#line 3366 "parser.c" /* yacc.c:1646  */
     break;
 
   case 127:
 #line 795 "parser.y" /* yacc.c:1646  */
     {
-  (yyval.literal) = jv_string("if");
+  (yyval.literal) = jv_string("import");
 }
-#line 3373 "parser.c" /* yacc.c:1646  */
+#line 3374 "parser.c" /* yacc.c:1646  */
     break;
 
   case 128:
 #line 798 "parser.y" /* yacc.c:1646  */
     {
-  (yyval.literal) = jv_string("then");
+  (yyval.literal) = jv_string("if");
 }
-#line 3381 "parser.c" /* yacc.c:1646  */
+#line 3382 "parser.c" /* yacc.c:1646  */
     break;
 
   case 129:
 #line 801 "parser.y" /* yacc.c:1646  */
     {
-  (yyval.literal) = jv_string("else");
+  (yyval.literal) = jv_string("then");
 }
-#line 3389 "parser.c" /* yacc.c:1646  */
+#line 3390 "parser.c" /* yacc.c:1646  */
     break;
 
   case 130:
 #line 804 "parser.y" /* yacc.c:1646  */
     {
-  (yyval.literal) = jv_string("elif");
+  (yyval.literal) = jv_string("else");
 }
-#line 3397 "parser.c" /* yacc.c:1646  */
+#line 3398 "parser.c" /* yacc.c:1646  */
     break;
 
   case 131:
 #line 807 "parser.y" /* yacc.c:1646  */
     {
-  (yyval.literal) = jv_string("reduce");
+  (yyval.literal) = jv_string("elif");
 }
-#line 3405 "parser.c" /* yacc.c:1646  */
+#line 3406 "parser.c" /* yacc.c:1646  */
     break;
 
   case 132:
 #line 810 "parser.y" /* yacc.c:1646  */
     {
-  (yyval.literal) = jv_string("foreach");
+  (yyval.literal) = jv_string("reduce");
 }
-#line 3413 "parser.c" /* yacc.c:1646  */
+#line 3414 "parser.c" /* yacc.c:1646  */
     break;
 
   case 133:
 #line 813 "parser.y" /* yacc.c:1646  */
     {
-  (yyval.literal) = jv_string("end");
+  (yyval.literal) = jv_string("foreach");
 }
-#line 3421 "parser.c" /* yacc.c:1646  */
+#line 3422 "parser.c" /* yacc.c:1646  */
     break;
 
   case 134:
 #line 816 "parser.y" /* yacc.c:1646  */
     {
-  (yyval.literal) = jv_string("and");
+  (yyval.literal) = jv_string("end");
 }
-#line 3429 "parser.c" /* yacc.c:1646  */
+#line 3430 "parser.c" /* yacc.c:1646  */
     break;
 
   case 135:
 #line 819 "parser.y" /* yacc.c:1646  */
     {
-  (yyval.literal) = jv_string("or");
+  (yyval.literal) = jv_string("and");
 }
-#line 3437 "parser.c" /* yacc.c:1646  */
+#line 3438 "parser.c" /* yacc.c:1646  */
     break;
 
   case 136:
 #line 822 "parser.y" /* yacc.c:1646  */
     {
-  (yyval.literal) = jv_string("try");
+  (yyval.literal) = jv_string("or");
 }
-#line 3445 "parser.c" /* yacc.c:1646  */
+#line 3446 "parser.c" /* yacc.c:1646  */
     break;
 
   case 137:
 #line 825 "parser.y" /* yacc.c:1646  */
     {
-  (yyval.literal) = jv_string("catch");
+  (yyval.literal) = jv_string("try");
 }
-#line 3453 "parser.c" /* yacc.c:1646  */
+#line 3454 "parser.c" /* yacc.c:1646  */
     break;
 
   case 138:
 #line 828 "parser.y" /* yacc.c:1646  */
     {
-  (yyval.literal) = jv_string("label");
+  (yyval.literal) = jv_string("catch");
 }
-#line 3461 "parser.c" /* yacc.c:1646  */
+#line 3462 "parser.c" /* yacc.c:1646  */
     break;
 
   case 139:
 #line 831 "parser.y" /* yacc.c:1646  */
     {
-  (yyval.literal) = jv_string("break");
+  (yyval.literal) = jv_string("label");
 }
-#line 3469 "parser.c" /* yacc.c:1646  */
+#line 3470 "parser.c" /* yacc.c:1646  */
     break;
 
   case 140:
 #line 834 "parser.y" /* yacc.c:1646  */
     {
-  (yyval.literal) = jv_string("__loc__");
+  (yyval.literal) = jv_string("break");
 }
-#line 3477 "parser.c" /* yacc.c:1646  */
+#line 3478 "parser.c" /* yacc.c:1646  */
     break;
 
   case 141:
-#line 839 "parser.y" /* yacc.c:1646  */
-    { 
-  (yyval.blk)=gen_noop(); 
+#line 837 "parser.y" /* yacc.c:1646  */
+    {
+  (yyval.literal) = jv_string("__loc__");
 }
-#line 3485 "parser.c" /* yacc.c:1646  */
+#line 3486 "parser.c" /* yacc.c:1646  */
     break;
 
   case 142:
 #line 842 "parser.y" /* yacc.c:1646  */
-    { (yyval.blk) = (yyvsp[0].blk); }
-#line 3491 "parser.c" /* yacc.c:1646  */
+    { 
+  (yyval.blk)=gen_noop(); 
+}
+#line 3494 "parser.c" /* yacc.c:1646  */
     break;
 
   case 143:
-#line 843 "parser.y" /* yacc.c:1646  */
-    { (yyval.blk)=block_join((yyvsp[-2].blk), (yyvsp[0].blk)); }
-#line 3497 "parser.c" /* yacc.c:1646  */
+#line 845 "parser.y" /* yacc.c:1646  */
+    { (yyval.blk) = (yyvsp[0].blk); }
+#line 3500 "parser.c" /* yacc.c:1646  */
     break;
 
   case 144:
-#line 844 "parser.y" /* yacc.c:1646  */
-    { (yyval.blk) = (yyvsp[0].blk); }
-#line 3503 "parser.c" /* yacc.c:1646  */
+#line 846 "parser.y" /* yacc.c:1646  */
+    { (yyval.blk)=block_join((yyvsp[-2].blk), (yyvsp[0].blk)); }
+#line 3506 "parser.c" /* yacc.c:1646  */
     break;
 
   case 145:
 #line 847 "parser.y" /* yacc.c:1646  */
-    { 
-  (yyval.blk) = gen_dictpair(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk));
- }
-#line 3511 "parser.c" /* yacc.c:1646  */
+    { (yyval.blk) = (yyvsp[0].blk); }
+#line 3512 "parser.c" /* yacc.c:1646  */
     break;
 
   case 146:
 #line 850 "parser.y" /* yacc.c:1646  */
-    {
+    { 
   (yyval.blk) = gen_dictpair(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk));
 }
-#line 3519 "parser.c" /* yacc.c:1646  */
+ }
+#line 3520 "parser.c" /* yacc.c:1646  */
     break;
 
   case 147:
 #line 853 "parser.y" /* yacc.c:1646  */
     {
-  (yyval.blk) = gen_dictpair((yyvsp[-2].blk), (yyvsp[0].blk));
+  (yyval.blk) = gen_dictpair(gen_const((yyvsp[-2].literal)), (yyvsp[0].blk));
   }
-#line 3527 "parser.c" /* yacc.c:1646  */
+#line 3528 "parser.c" /* yacc.c:1646  */
     break;
 
   case 148:
 #line 856 "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)));
+  (yyval.blk) = gen_dictpair((yyvsp[-2].blk), (yyvsp[0].blk));
   }
 #line 3536 "parser.c" /* yacc.c:1646  */
     break;
 
   case 149:
-#line 860 "parser.y" /* yacc.c:1646  */
+#line 859 "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))));
+  (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 3545 "parser.c" /* yacc.c:1646  */
     break;
 
   case 150:
-#line 864 "parser.y" /* yacc.c:1646  */
+#line 863 "parser.y" /* yacc.c:1646  */
     {
-  (yyval.blk) = gen_dictpair((yyvsp[-3].blk), (yyvsp[0].blk));
+  (yyval.blk) = gen_dictpair(gen_const((yyvsp[0].literal)),
+                    gen_location((yyloc), locations, gen_op_unbound(LOADV, jv_string_value((yyvsp[0].literal)))));
   }
-#line 3553 "parser.c" /* yacc.c:1646  */
+#line 3554 "parser.c" /* yacc.c:1646  */
     break;
 
   case 151:
 #line 867 "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 3563 "parser.c" /* yacc.c:1646  */
+    break;
+
+  case 152:
+#line 871 "parser.y" /* yacc.c:1646  */
+    {
+  (yyval.blk) = gen_dictpair((yyvsp[-3].blk), (yyvsp[0].blk));
+  }
+#line 3571 "parser.c" /* yacc.c:1646  */
+    break;
+
+  case 153:
+#line 874 "parser.y" /* yacc.c:1646  */
     { (yyval.blk) = (yyvsp[0].blk); }
-#line 3559 "parser.c" /* yacc.c:1646  */
+#line 3577 "parser.c" /* yacc.c:1646  */
     break;
 
 
-#line 3563 "parser.c" /* yacc.c:1646  */
+#line 3581 "parser.c" /* yacc.c:1646  */
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -3794,7 +3812,7 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 868 "parser.y" /* yacc.c:1906  */
+#line 875 "parser.y" /* yacc.c:1906  */
 
 
 int jq_parse(struct locfile* locations, block* answer) {
index 494cfef6c5333222237f4d3182469c531b920b44..ab8854f764b7be5a24699a57e1aeaf91ee49f149 100644 (file)
--- a/parser.y
+++ b/parser.y
@@ -766,6 +766,9 @@ ObjPats ',' ObjPat {
 }
 
 ObjPat:
+'$' IDENT {
+  $$ = gen_object_matcher(gen_const($2), gen_op_unbound(STOREV, jv_string_value($2)));
+} |
 IDENT ':' Pattern {
   $$ = gen_object_matcher(gen_const($1), $3);
 } |
@@ -857,6 +860,10 @@ IDENT ':' ExpD {
   $$ = gen_dictpair($1, BLOCK(gen_op_simple(POP), gen_op_simple(DUP2),
                               gen_op_simple(DUP2), gen_op_simple(INDEX)));
   }
+| '$' IDENT {
+  $$ = gen_dictpair(gen_const($2),
+                    gen_location(@$, locations, gen_op_unbound(LOADV, jv_string_value($2))));
+  }
 | IDENT {
   $$ = gen_dictpair(gen_const(jv_copy($1)),
                     gen_index(gen_noop(), gen_const($1)));