gawk-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gawk-diffs] [SCM] gawk branch, feature/fix-comments, updated. gawk-4.1.


From: Arnold Robbins
Subject: [gawk-diffs] [SCM] gawk branch, feature/fix-comments, updated. gawk-4.1.0-2351-g26e5cfc
Date: Mon, 28 Nov 2016 04:43:43 +0000 (UTC)

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "gawk".

The branch, feature/fix-comments has been updated
       via  26e5cfc94a913dfbbba37d6413d3ad68a7047da6 (commit)
      from  89e2185558142719ad95e6168a40afc349b5e65f (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.sv.gnu.org/cgit/gawk.git/commit/?id=26e5cfc94a913dfbbba37d6413d3ad68a7047da6

commit 26e5cfc94a913dfbbba37d6413d3ad68a7047da6
Author: Arnold D. Robbins <address@hidden>
Date:   Mon Nov 28 06:43:26 2016 +0200

    Start on improving switch/case comments for profiling.

diff --git a/ChangeLog b/ChangeLog
index a2e5d75..c9d12df 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2016-11-28         Arnold D. Robbins     <address@hidden>
+
+       Start improving profiling comments for switch/case.
+
+       * awkgram.y (switch_head): New production.
+
 2016-11-21         Arnold D. Robbins     <address@hidden>
 
        * dfa.c: Sync with GNULIB.
diff --git a/awkgram.c b/awkgram.c
index 89eecdb..0554dc2 100644
--- a/awkgram.c
+++ b/awkgram.c
@@ -610,16 +610,16 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  2
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   1236
+#define YYLAST   1247
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  76
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  70
+#define YYNNTS  71
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  203
+#define YYNRULES  204
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  350
+#define YYNSTATES  351
 
 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
    by yylex, with out-of-bounds checking.  */
@@ -674,23 +674,23 @@ static const yytype_uint16 yyrline[] =
      262,   268,   277,   285,   287,   292,   300,   302,   308,   316,
      326,   356,   370,   384,   392,   403,   415,   417,   419,   425,
      433,   434,   438,   438,   484,   483,   517,   546,   548,   553,
-     563,   610,   615,   616,   620,   622,   624,   631,   721,   763,
-     805,   918,   925,   932,   943,   953,   963,   973,   985,  1002,
-    1001,  1026,  1038,  1038,  1137,  1137,  1171,  1202,  1211,  1212,
-    1218,  1219,  1226,  1231,  1243,  1257,  1259,  1267,  1274,  1276,
-    1284,  1293,  1295,  1304,  1305,  1313,  1318,  1318,  1329,  1333,
-    1341,  1342,  1345,  1347,  1352,  1353,  1362,  1363,  1368,  1373,
-    1382,  1384,  1386,  1393,  1394,  1400,  1401,  1406,  1408,  1413,
-    1415,  1423,  1428,  1437,  1438,  1443,  1445,  1450,  1452,  1460,
-    1465,  1473,  1474,  1479,  1486,  1490,  1492,  1494,  1507,  1524,
-    1534,  1541,  1543,  1548,  1550,  1552,  1560,  1562,  1567,  1569,
-    1574,  1576,  1578,  1634,  1636,  1638,  1640,  1642,  1644,  1646,
-    1648,  1662,  1667,  1672,  1697,  1703,  1705,  1707,  1709,  1711,
-    1713,  1718,  1722,  1754,  1756,  1762,  1768,  1781,  1782,  1783,
-    1788,  1793,  1797,  1801,  1816,  1837,  1842,  1879,  1908,  1909,
-    1915,  1916,  1921,  1923,  1930,  1947,  1964,  1966,  1973,  1978,
-    1986,  1996,  2008,  2017,  2021,  2025,  2029,  2033,  2037,  2040,
-    2042,  2046,  2050,  2054
+     563,   610,   615,   616,   620,   636,   638,   640,   647,   738,
+     780,   822,   935,   942,   949,   960,   970,   980,   990,  1002,
+    1019,  1018,  1043,  1055,  1055,  1154,  1154,  1188,  1219,  1228,
+    1229,  1235,  1236,  1243,  1248,  1260,  1274,  1276,  1284,  1291,
+    1293,  1301,  1310,  1312,  1321,  1322,  1330,  1335,  1335,  1346,
+    1350,  1358,  1359,  1362,  1364,  1369,  1370,  1379,  1380,  1385,
+    1390,  1399,  1401,  1403,  1410,  1411,  1417,  1418,  1423,  1425,
+    1430,  1432,  1440,  1445,  1454,  1455,  1460,  1462,  1467,  1469,
+    1477,  1482,  1490,  1491,  1496,  1503,  1507,  1509,  1511,  1524,
+    1541,  1551,  1558,  1560,  1565,  1567,  1569,  1577,  1579,  1584,
+    1586,  1591,  1593,  1595,  1651,  1653,  1655,  1657,  1659,  1661,
+    1663,  1665,  1679,  1684,  1689,  1714,  1720,  1722,  1724,  1726,
+    1728,  1730,  1735,  1739,  1771,  1773,  1779,  1785,  1798,  1799,
+    1800,  1805,  1810,  1814,  1818,  1833,  1854,  1859,  1896,  1925,
+    1926,  1932,  1933,  1938,  1940,  1947,  1964,  1981,  1983,  1990,
+    1995,  2003,  2013,  2025,  2034,  2038,  2042,  2046,  2050,  2054,
+    2057,  2059,  2063,  2067,  2071
 };
 #endif
 
@@ -714,18 +714,18 @@ static const char *const yytname[] =
   "'}'", "';'", "$accept", "program", "rule", "source", "library",
   "pattern", "action", "func_name", "lex_builtin", "function_prologue",
   "address@hidden", "regexp", "address@hidden", "typed_regexp", "a_slash", 
"statements",
-  "statement_term", "statement", "non_compound_stmt", "address@hidden", 
"simple_stmt",
-  "address@hidden", "address@hidden", "opt_simple_stmt", "case_statements", 
"case_statement",
-  "case_value", "print", "print_expression_list", "output_redir", 
"address@hidden",
-  "if_statement", "nls", "opt_nls", "input_redir", "opt_param_list",
-  "param_list", "opt_exp", "opt_expression_list", "expression_list",
-  "opt_fcall_expression_list", "fcall_expression_list", "fcall_exp", "exp",
-  "assign_operator", "relop_or_less", "a_relop", "common_exp", "simp_exp",
-  "simp_exp_nc", "non_post_simp_exp", "func_call", "direct_func_call",
-  "opt_variable", "delete_subscript_list", "delete_subscript",
-  "delete_exp_list", "bracketed_exp_list", "subscript", "subscript_list",
-  "simple_variable", "variable", "opt_incdec", "l_brace", "r_brace",
-  "r_paren", "opt_semi", "semi", "colon", "comma", YY_NULLPTR
+  "statement_term", "switch_head", "statement", "non_compound_stmt", 
"address@hidden",
+  "simple_stmt", "address@hidden", "address@hidden", "opt_simple_stmt", 
"case_statements",
+  "case_statement", "case_value", "print", "print_expression_list",
+  "output_redir", "address@hidden", "if_statement", "nls", "opt_nls", 
"input_redir",
+  "opt_param_list", "param_list", "opt_exp", "opt_expression_list",
+  "expression_list", "opt_fcall_expression_list", "fcall_expression_list",
+  "fcall_exp", "exp", "assign_operator", "relop_or_less", "a_relop",
+  "common_exp", "simp_exp", "simp_exp_nc", "non_post_simp_exp",
+  "func_call", "direct_func_call", "opt_variable", "delete_subscript_list",
+  "delete_subscript", "delete_exp_list", "bracketed_exp_list", "subscript",
+  "subscript_list", "simple_variable", "variable", "opt_incdec", "l_brace",
+  "r_brace", "r_paren", "opt_semi", "semi", "colon", "comma", YY_NULLPTR
 };
 #endif
 
@@ -745,55 +745,56 @@ static const yytype_uint16 yytoknum[] =
 };
 # endif
 
-#define YYPACT_NINF -275
+#define YYPACT_NINF -305
 
 #define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-275)))
+  (!!((Yystate) == (-305)))
 
-#define YYTABLE_NINF -115
+#define YYTABLE_NINF -116
 
 #define yytable_value_is_error(Yytable_value) \
-  (!!((Yytable_value) == (-115)))
+  (!!((Yytable_value) == (-116)))
 
   /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-    -275,   376,  -275,  -275,   -12,    -9,  -275,  -275,  -275,  -275,
-     171,  -275,  -275,    44,    44,    44,     5,    40,  -275,  -275,
-    -275,  1139,  1139,  -275,  1139,  1166,   869,    27,  -275,   -18,
-       2,  -275,  -275,    89,   884,  1065,   192,   214,  -275,  -275,
-    -275,  -275,   248,   795,   869,  -275,    10,  -275,  -275,  -275,
-    -275,  -275,   116,    82,  -275,   115,  -275,  -275,  -275,   795,
-     795,   166,   107,   104,   107,   107,  1139,   117,  -275,  -275,
-      15,   349,    23,    45,  -275,   125,  -275,  -275,  -275,    89,
-    -275,   125,  -275,   178,  -275,  -275,  1092,   172,  1139,  1139,
-    1139,   125,  -275,  -275,  -275,  1139,   146,   192,  1139,  1139,
-    1139,  1139,  1139,  1139,  1139,  1139,  1139,  1139,  1139,  1139,
-    -275,   181,  -275,  -275,   173,  1139,  -275,  -275,  -275,   128,
-      73,  -275,  1107,    14,  1107,  -275,  -275,  -275,  -275,  1139,
-    -275,   128,   128,   349,  -275,  -275,  -275,  1139,   125,  -275,
-     152,   916,  -275,  -275,    16,    92,  -275,    20,    92,    89,
-    -275,   599,  -275,  -275,  -275,   148,  -275,   124,    22,  1048,
-    1139,   199,    44,   265,   265,   107,   107,   107,   107,   265,
-     265,   107,   107,   107,   107,  -275,  -275,  1107,  -275,  1092,
-     842,  -275,    43,   192,  -275,  -275,  1107,  -275,   172,  -275,
-    1107,  -275,  -275,  -275,  -275,  -275,   133,  -275,    41,   144,
-     145,   125,   147,    92,    92,  -275,  -275,    92,  1139,    92,
-     125,  -275,  -275,    92,  -275,  -275,  1107,  -275,   151,   125,
-    1139,  1107,  -275,  -275,  -275,  -275,  -275,  -275,   128,    76,
-    -275,  1139,  1139,  -275,   224,  1139,  1139,   715,   949,  -275,
-    -275,  -275,    92,  1107,  -275,  -275,  -275,   646,   599,   125,
-    -275,  -275,  1107,   125,  -275,    49,   349,    92,    -9,   160,
-     349,   349,   206,   113,  -275,   151,  -275,   869,   225,  -275,
-     169,  -275,  -275,  -275,  -275,  -275,   125,  -275,  -275,    11,
-    -275,  -275,  -275,   125,   125,   179,   172,   125,    15,  -275,
-    -275,   715,  -275,  -275,     2,   715,  1139,   128,   762,   152,
-    1139,   219,  -275,  -275,   349,   125,   275,   125,  1065,   125,
-     112,   125,   715,   125,   997,   715,  -275,   261,   205,  -275,
-     191,  -275,  -275,   997,   128,  -275,  -275,  -275,   271,   272,
-    -275,  -275,   205,  -275,   125,  -275,   128,   125,  -275,  -275,
-     125,  -275,   125,   715,  -275,   449,   715,  -275,   524,  -275
+    -305,   387,  -305,  -305,   -35,   -18,  -305,  -305,  -305,  -305,
+     182,  -305,  -305,    78,    78,    78,   -23,   -21,  -305,  -305,
+    -305,  1150,  1150,  -305,  1150,   303,   880,   187,  -305,   -25,
+     -16,  -305,  -305,     3,  1165,  1076,    97,   341,  -305,  -305,
+    -305,  -305,   280,   806,   880,  -305,     8,  -305,  -305,  -305,
+    -305,  -305,    10,     5,  -305,    76,  -305,  -305,  -305,   806,
+     806,   145,    75,    22,    75,    75,  1150,   117,  -305,  -305,
+      15,  1059,    31,    38,  -305,   112,  -305,  -305,  -305,     3,
+    -305,   112,  -305,   162,  -305,  -305,  1103,   175,  1150,  1150,
+    1150,   112,  -305,  -305,  -305,  1150,   141,    97,  1150,  1150,
+    1150,  1150,  1150,  1150,  1150,  1150,  1150,  1150,  1150,  1150,
+    -305,   173,  -305,  -305,   170,  1150,  -305,  -305,  -305,   118,
+      69,  -305,  1189,    58,  1189,  -305,  -305,  -305,  -305,  1150,
+    -305,   118,   118,  1059,  -305,  -305,  -305,  1150,   112,  -305,
+     148,   927,  -305,  -305,    68,   -24,  -305,    71,   -24,     3,
+    -305,   610,  -305,  -305,  -305,    19,  -305,   241,   220,  1183,
+    1150,   186,    78,   -20,   -20,    75,    75,    75,    75,   -20,
+     -20,    75,    75,    75,    75,  -305,  -305,  1189,  -305,  1103,
+     853,  -305,    60,    97,  -305,  -305,  1189,  -305,   175,  -305,
+    1189,  -305,  -305,  -305,  -305,  -305,   135,  -305,    59,   140,
+     146,   112,   151,   -24,   -24,  -305,  -305,   -24,  1150,   -24,
+     112,   -16,  -305,  -305,   -24,  -305,  -305,  1189,  -305,   147,
+     112,  1150,  1189,  -305,  -305,  -305,  -305,  -305,  -305,   118,
+     138,  -305,  1150,  1150,  -305,   212,  1150,  1150,   726,   960,
+    -305,  -305,  -305,   -24,  1189,  -305,  -305,  -305,  -305,   657,
+     610,   112,  -305,  -305,  1189,   112,  -305,    48,  1059,   -24,
+     -18,   154,  1059,  1059,   198,   -17,  -305,   147,  -305,   201,
+     880,   223,  -305,    57,  -305,  -305,  -305,  -305,  -305,   112,
+    -305,  -305,     9,  -305,  -305,  -305,   112,   112,   163,   175,
+     112,  -305,   259,   190,  -305,   168,    15,  -305,  -305,   726,
+    -305,  -305,  -305,   726,  1150,   118,   773,  -305,  -305,   230,
+     240,  -305,  -305,   190,  -305,   112,  -305,   148,  1150,   234,
+    -305,  1059,   112,   895,   112,  -305,  -305,   112,  -305,  1076,
+     112,   112,   726,   112,  1008,  -305,   460,   726,  -305,  -305,
+    1008,   118,   535,  -305,   118,   112,   112,   726,   726,  -305,
+    -305
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -801,65 +802,68 @@ static const yytype_int16 yypact[] =
      means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       2,     0,     1,     6,     0,   189,   171,   172,    21,    22,
-       0,    23,    24,   178,     0,     0,     0,   166,     5,    90,
+       2,     0,     1,     6,     0,   190,   172,   173,    21,    22,
+       0,    23,    24,   179,     0,     0,     0,   167,     5,    91,
       38,     0,     0,    37,     0,     0,     0,     0,     3,     0,
-       0,   161,    34,     4,    19,   132,   140,   141,   143,   167,
-     175,   191,   168,     0,     0,   186,     0,   190,    27,    26,
-      30,    31,     0,     0,    28,    94,   179,   169,   170,     0,
-       0,     0,   174,   168,   173,   162,     0,   195,   168,   109,
-       0,   107,     0,     0,   176,    92,   201,     7,     8,    42,
-      39,    92,     9,     0,    91,   136,     0,     0,     0,     0,
-       0,    92,   137,   139,   138,     0,     0,   142,     0,     0,
+       0,   162,    34,     4,    19,   133,   141,   142,   144,   168,
+     176,   192,   169,     0,     0,   187,     0,   191,    27,    26,
+      30,    31,     0,     0,    28,    95,   180,   170,   171,     0,
+       0,     0,   175,   169,   174,   163,     0,   196,   169,   110,
+       0,   108,     0,     0,   177,    93,   202,     7,     8,    42,
+      39,    93,     9,     0,    92,   137,     0,     0,     0,     0,
+       0,    93,   138,   140,   139,     0,     0,   143,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-     134,   133,   151,   152,     0,     0,   117,    36,   122,     0,
-       0,   115,   121,     0,   107,   188,   187,    29,    32,     0,
-     150,     0,     0,     0,   193,   194,   192,   110,    92,   198,
-       0,     0,   163,    14,     0,     0,    17,     0,     0,    93,
-     196,     0,    43,    35,   127,   128,   129,   125,   126,     0,
-       0,   130,   178,   148,   149,   145,   146,   147,   144,   159,
-     160,   156,   157,   158,   155,   124,   135,   123,   177,   118,
-       0,   185,     0,    95,   164,   165,   111,   203,     0,   112,
-     108,    13,    10,    16,    11,    41,     0,    59,     0,     0,
-       0,    92,     0,     0,     0,    81,    82,     0,   103,     0,
-      92,    40,    53,     0,    62,    46,    67,    39,   199,    92,
-       0,    20,   154,   119,   120,   116,   100,    98,     0,     0,
-     153,     0,   103,    64,     0,     0,     0,     0,    68,    54,
-      55,    56,     0,   104,    57,   197,    61,     0,     0,    92,
-     200,    44,   131,    92,   101,     0,     0,     0,   180,     0,
-       0,     0,     0,   189,    69,     0,    58,     0,    85,    83,
-       0,    45,    25,    33,   102,    99,    92,    60,    65,     0,
-     182,   184,    66,    92,    92,     0,     0,    92,     0,    86,
-      63,     0,   181,   183,     0,     0,     0,     0,     0,    84,
-       0,    88,    70,    48,     0,    92,     0,    92,    87,    92,
-       0,    92,     0,    92,    68,     0,    72,     0,     0,    71,
-       0,    49,    50,    68,     0,    89,    75,    78,     0,     0,
-      79,    80,     0,   202,    92,    47,     0,    92,    77,    76,
-      92,    39,    92,     0,    39,     0,     0,    52,     0,    51
+     135,   134,   152,   153,     0,     0,   118,    36,   123,     0,
+       0,   116,   122,     0,   108,   189,   188,    29,    32,     0,
+     151,     0,     0,     0,   194,   195,   193,   111,    93,   199,
+       0,     0,   164,    14,     0,     0,    17,     0,     0,    94,
+     197,     0,    43,    35,   128,   129,   130,   126,   127,     0,
+       0,   131,   179,   149,   150,   146,   147,   148,   145,   160,
+     161,   157,   158,   159,   156,   125,   136,   124,   178,   119,
+       0,   186,     0,    96,   165,   166,   112,   204,     0,   113,
+     109,    13,    10,    16,    11,    41,     0,    60,     0,     0,
+       0,    93,     0,     0,     0,    82,    83,     0,   104,     0,
+      93,     0,    40,    54,     0,    63,    47,    68,    39,   200,
+      93,     0,    20,   155,   120,   121,   117,   101,    99,     0,
+       0,   154,     0,   104,    65,     0,     0,     0,     0,    69,
+      55,    56,    57,     0,   105,    58,   198,    71,    62,     0,
+       0,    93,   201,    45,   132,    93,   102,     0,     0,     0,
+     181,     0,     0,     0,     0,   190,    70,     0,    59,     0,
+       0,    86,    84,     0,    46,    25,    33,   103,   100,    93,
+      61,    66,     0,   183,   185,    67,    93,    93,     0,     0,
+      93,    73,     0,     0,    72,     0,     0,    87,    64,     0,
+     182,   184,    44,     0,     0,     0,     0,    76,    79,     0,
+       0,    80,    81,     0,   203,    93,    48,    85,     0,    89,
+      49,     0,    93,     0,    93,    78,    77,    93,    39,    88,
+      93,    93,     0,    93,    69,    39,     0,     0,    50,    51,
+      69,     0,     0,    90,     0,    93,    93,     0,     0,    53,
+      52
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -275,  -275,  -275,  -275,  -275,  -275,   252,  -275,  -275,  -275,
-    -275,   -33,  -275,   -80,  -275,  -213,   100,  -144,  -275,  -275,
-    -231,  -275,  -275,  -274,  -275,  -275,  -275,  -275,  -275,  -275,
-    -275,  -275,     7,    62,  -275,  -275,  -275,    54,  -275,   -43,
-       1,  -275,   -23,    -1,  -275,  -275,  -275,   -13,    17,  -275,
-     263,  -275,     8,   127,  -275,  -275,    21,   -36,  -275,  -275,
-     -78,    -2,  -275,   -27,  -230,   -65,  -275,   -15,   -38,   -94
+    -305,  -305,  -305,  -305,  -305,  -305,   227,  -305,  -305,  -305,
+    -305,   -34,  -305,   -71,  -305,  -204,   -67,  -305,  -182,  -305,
+    -305,  -222,  -305,  -305,  -304,  -305,  -305,  -305,  -305,  -305,
+    -305,  -305,  -305,     6,    53,  -305,  -305,  -305,    26,  -305,
+     -38,   111,  -305,    -6,   109,  -305,  -305,  -305,   -58,    -1,
+    -305,   245,  -305,     4,   110,  -305,  -305,    -8,   -42,  -305,
+    -305,   -77,   -13,  -305,   -11,  -212,   -57,  -305,   -26,   -37,
+    -115
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
       -1,     1,    28,   145,   148,    29,    77,    53,    54,    30,
-     182,    31,    83,   118,    32,   151,    78,   211,   212,   232,
-     213,   247,   258,   265,   310,   319,   332,   214,   268,   290,
-     300,   215,   149,   150,   130,   228,   229,   242,   269,    70,
-     119,   120,   121,   216,   115,    94,    95,    35,    36,    37,
-      38,    39,    40,    55,   278,   279,   280,    45,    46,    47,
-      41,    42,   136,   217,   218,   142,   249,   219,   334,   141
+     182,    31,    83,   118,    32,   151,    78,   211,   212,   213,
+     233,   214,   249,   260,   267,   269,   294,   313,   215,   271,
+     298,   318,   216,   149,   150,   130,   229,   230,   243,   272,
+      70,   119,   120,   121,   217,   115,    94,    95,    35,    36,
+      37,    38,    39,    40,    55,   281,   282,   283,    45,    46,
+      47,    41,    42,   136,   218,   219,   142,   251,   220,   315,
+     141
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -867,258 +871,260 @@ static const yytype_int16 yydefgoto[] =
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      34,   123,    80,    80,   248,   140,   154,   264,    33,   156,
-     126,    56,    57,    58,    81,   137,   137,   191,   271,    63,
-      63,   193,    63,    68,   143,    71,   180,   125,   292,   144,
-       4,   175,    85,    63,    19,    74,    79,    86,    62,    64,
-     324,    65,   122,   124,   226,   233,   146,   227,     5,   336,
-     274,   147,    97,   275,   178,    75,    43,    76,   122,   122,
-     131,   132,    44,    87,    88,   133,   184,   185,   -12,    74,
-     138,   138,   -15,    59,   179,    75,    72,   254,    73,    92,
-      93,    44,    44,   264,   139,   155,   181,   157,   158,   159,
-     335,   -12,   264,   262,   161,   -15,    63,    63,    63,    63,
-      63,    63,    63,    63,    63,    63,    63,    63,    60,   234,
-     230,    25,   -96,   316,   177,   163,   164,   165,   166,   167,
-     168,   169,   170,   171,   172,   173,   174,    63,   345,   138,
-      81,   348,   138,    81,    85,   255,   186,   317,   318,    86,
-     190,    84,  -114,   152,    19,   -97,   183,   301,   112,   113,
-     128,   303,    79,   160,   286,    79,   223,   225,    85,   221,
-      56,   134,   135,   253,    19,    87,   127,    76,   322,     4,
-     137,   325,   129,   103,    48,    49,     5,    19,   122,   122,
-    -106,    92,    93,   153,    44,   162,   -92,   176,    81,    81,
-     117,   276,    81,   188,    81,   283,   284,   139,    81,   347,
-     187,   231,   349,   250,   270,    92,    93,   243,   297,  -115,
-      79,    79,   235,   236,    79,   238,    79,    50,    51,   252,
-      79,  -106,   281,   299,   288,   138,    76,    81,   259,   282,
-     256,   243,   305,   285,   260,   261,   289,   331,  -106,   311,
-     309,    52,    81,   281,  -106,   192,   124,   296,   194,    79,
-     287,    98,    99,   100,   101,   102,  -115,  -115,   103,   337,
-     333,   110,   111,   237,    79,   210,    71,   302,   326,   327,
-     117,   342,   245,   104,   105,   106,   107,   108,   338,   339,
-     109,   251,    82,   307,   330,    85,   257,   308,    67,   222,
-      86,   313,   112,   113,   340,   304,     0,   306,    63,     0,
-     293,   114,     0,   239,   240,     0,    63,   241,     0,   244,
-       0,   272,     0,   246,    20,   273,    87,    88,    89,     0,
-     328,   329,     0,    23,     0,    97,   100,   101,   102,    90,
-       0,   103,    92,    93,     0,     0,     0,     0,   291,     0,
-       0,     0,   266,     0,     0,   294,   295,     0,     0,   298,
-      76,     0,     0,     0,     0,     0,     0,   277,     0,    85,
-       0,     0,     0,     0,    86,     0,     0,   312,     0,   314,
-       0,   315,   320,   321,     0,   323,     2,     3,     0,     4,
-       5,     0,     0,     6,     7,     0,     0,     0,     0,     0,
-      87,    88,    89,     0,     8,     9,   341,     0,     0,   343,
-       0,     0,   344,    90,   346,     0,    92,    93,     0,     0,
-       0,     0,    10,    11,    12,    13,     0,     0,   139,     0,
-      14,    15,    16,    17,    18,     0,     0,     0,    19,    20,
-       0,     0,     0,     0,     0,    21,    22,     0,    23,     0,
-      24,     0,     0,    25,    26,     0,    27,     0,     0,   -18,
-     195,   -18,     4,     5,     0,     0,     6,     7,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   196,
-       0,   197,   198,   199,   -74,   -74,   200,   201,   202,   203,
-     204,   205,   206,   207,   208,     0,     0,     0,    13,   209,
-       0,     0,     0,    14,    15,    16,    17,     0,     0,     0,
-       0,   -74,    20,     0,     0,     0,     0,     0,    21,    22,
-       0,    23,     0,    24,     0,     0,    25,    26,     0,    61,
-       0,     0,    75,   -74,    76,   195,     0,     4,     5,     0,
-       0,     6,     7,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   196,     0,   197,   198,   199,   -73,
-     -73,   200,   201,   202,   203,   204,   205,   206,   207,   208,
-       0,     0,     0,    13,   209,     0,     0,     0,    14,    15,
-      16,    17,     0,     0,     0,     0,   -73,    20,     0,     0,
-       0,     0,     0,    21,    22,     0,    23,     0,    24,     0,
-       0,    25,    26,     0,    61,     0,     0,    75,   -73,    76,
-     195,     0,     4,     5,     0,     0,     6,     7,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,   196,
-       0,   197,   198,   199,     0,     0,   200,   201,   202,   203,
-     204,   205,   206,   207,   208,     0,     0,     0,    13,   209,
-       0,     0,     0,    14,    15,    16,    17,    69,     0,     4,
-       5,     0,    20,     6,     7,     0,     0,  -105,    21,    22,
-       0,    23,     0,    24,     0,     0,    25,    26,     0,    61,
-       0,     0,    75,   210,    76,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    13,     0,     0,     0,     0,
-      14,    15,    16,    17,     0,     0,     0,     0,  -105,    20,
-       0,     0,     0,     0,     0,    21,    22,     0,    23,     0,
-      24,     0,     0,    25,   267,  -105,    61,     0,     4,     5,
-       0,  -105,     6,     7,     0,     0,     0,     0,     0,     0,
+      56,    57,    58,    81,   126,   180,   123,    33,    63,    63,
+     156,    63,    68,   140,   250,   154,   137,   266,    80,    80,
+      62,    64,    63,    65,   289,   125,   300,    19,    19,    85,
+     341,    74,   143,    43,    97,    79,   344,   144,   274,   146,
+     175,   100,   101,   102,   147,    59,   103,    60,    75,   277,
+      76,    76,   278,    44,    44,    84,   264,    75,   137,   137,
+     127,   227,   178,   234,   228,    74,   112,   113,  -107,   191,
+     179,   138,   193,   128,   184,   185,    92,    93,   192,    44,
+      44,   194,     5,   316,   139,    63,    63,    63,    63,    63,
+      63,    63,    63,    63,    63,    63,    63,   163,   164,   165,
+     166,   167,   168,   169,   170,   171,   172,   173,   174,  -107,
+      34,   231,   266,   138,   138,   257,    63,   319,   266,    81,
+     -12,   320,    81,   -15,   336,   138,  -107,   235,   183,   -97,
+     181,   342,  -107,   129,   152,    71,   240,   241,  -115,   256,
+     242,   103,   245,   -12,   160,    25,   -15,   248,     4,    56,
+     339,    79,   122,   124,    79,   343,    98,    99,   100,   101,
+     102,   134,   135,   103,    19,   349,   350,   153,   122,   122,
+     131,   132,   255,   224,   226,   133,   268,    81,    81,     5,
+     162,    81,   117,    81,   176,    48,    49,   139,    81,   188,
+       4,   187,   280,   252,   138,   155,  -116,   157,   158,   159,
+     247,   279,   291,   232,   161,   286,   287,   -98,   236,    79,
+      79,   273,   305,    79,   237,    79,   261,    81,   284,   239,
+      79,   312,    76,   285,   177,   288,   292,   293,    50,    51,
+      85,   304,   296,    81,   297,    86,    72,   325,    73,   317,
+     284,   290,   210,  -116,  -116,   314,   186,   326,   322,    79,
+     190,    85,    52,    19,   238,   330,    86,    82,   311,   259,
+     329,    87,    88,   246,   331,    79,   307,   308,   117,   222,
+      67,     0,   223,   253,   301,   -93,   327,    92,    93,     0,
+     324,     0,    87,     0,   345,     0,     0,   346,   122,   122,
+       0,     0,     0,   110,   111,     0,     0,   333,    92,    93,
+       0,     0,     0,     0,   275,    63,     4,     5,   276,     0,
+       6,     7,    20,     0,     0,     0,    63,   244,   309,   310,
+       0,    23,   295,     0,   112,   113,     0,     0,    97,     0,
+     254,     0,   299,   114,     0,     0,     0,     0,     0,   302,
+     303,   258,   244,   306,     0,   262,   263,    14,    15,    16,
+      17,     0,     0,     0,     0,     0,    20,     0,   124,     0,
+       0,     0,    21,    22,     0,    23,     0,    24,   328,     0,
+      25,    66,     0,    61,     0,   332,     0,   334,     0,    71,
+     335,     0,     0,   337,   338,     0,   340,     2,     3,     0,
+       4,     5,     0,     0,     6,     7,     0,     0,   347,   348,
+     104,   105,   106,   107,   108,     8,     9,   109,     0,     0,
+       0,     0,     0,   321,     0,   323,     0,     0,     0,     0,
+       0,     0,     0,    10,    11,    12,    13,     0,     0,     0,
+       0,    14,    15,    16,    17,    18,     0,     0,     0,    19,
+      20,     0,     0,     0,     0,     0,    21,    22,     0,    23,
+       0,    24,     0,     0,    25,    26,     0,    27,     0,     0,
+     -18,   195,   -18,     4,     5,     0,     0,     6,     7,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     196,     0,   197,   198,   199,   -75,   -75,   200,   201,   202,
+     203,   204,   205,   206,   207,   208,     0,     0,     0,    13,
+     209,     0,     0,     0,    14,    15,    16,    17,     0,     0,
+       0,     0,   -75,    20,     0,     0,     0,     0,     0,    21,
+      22,     0,    23,     0,    24,     0,     0,    25,    26,     0,
+      61,     0,     0,    75,   -75,    76,   195,     0,     4,     5,
+       0,     0,     6,     7,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,   196,     0,   197,   198,   199,
-       0,     0,   200,   201,   202,   203,   204,   205,   206,   207,
+     -74,   -74,   200,   201,   202,   203,   204,   205,   206,   207,
      208,     0,     0,     0,    13,   209,     0,     0,     0,    14,
-      15,    16,    17,     0,     0,     4,     5,     0,    20,     6,
-       7,     0,     0,     0,    21,    22,     0,    23,     0,    24,
-       0,     0,    25,    26,     0,    61,     0,     0,    75,     0,
-      76,     0,     0,     0,     0,     0,   116,     0,     4,     5,
-       0,    13,     6,     7,   117,     0,    14,    15,    16,    17,
-       0,     0,     0,     0,     0,    20,     0,     0,     0,     0,
-       0,    21,    22,     0,    23,     0,    24,     0,     0,    25,
-      26,     0,    61,     0,    13,     0,     0,    76,     0,    14,
-      15,    16,    17,   224,     0,     4,     5,     0,    20,     6,
-       7,   117,     0,     0,    21,    22,     0,    23,     0,    24,
-       0,     0,    25,    26,  -113,    61,     0,     0,     0,     0,
-      69,     0,     4,     5,     0,     0,     6,     7,     0,     0,
-       0,    13,     0,     0,     0,     0,    14,    15,    16,    17,
-       0,     0,     0,     0,    85,    20,     0,     0,     0,    86,
-       0,    21,    22,     0,    23,     0,    24,     0,    13,    25,
-      26,     0,    61,    14,    15,    16,    17,   189,     0,     4,
-       5,     0,    20,     6,     7,    87,    88,    89,    21,    22,
-       0,    23,     0,    24,     0,     0,    25,    26,    90,    61,
-      91,    92,    93,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     4,   263,     0,    13,     6,     7,     0,     0,
-      14,    15,    16,    17,     0,     0,     0,     0,     0,    20,
-       0,     0,   198,     0,     0,    21,    22,     0,    23,     0,
-      24,   205,   206,    25,    26,     0,    61,     0,    13,     0,
-       0,     0,     0,    14,    15,    16,    17,     0,     0,     0,
-       4,     5,    20,     0,     6,     7,     0,     0,    21,    22,
-       0,    23,     0,    24,     0,     0,    25,    26,     0,    61,
-     198,     0,     0,     0,     0,     0,     0,     0,     0,   205,
-     206,     0,     0,     0,     0,     0,    13,     0,     0,     0,
-       0,    14,    15,    16,    17,     0,     0,     0,     0,     0,
-      20,     0,     0,     0,     0,     0,    21,    22,    85,    23,
-       0,    24,     0,    86,    25,    26,     0,    61,     4,     5,
-       0,     0,     6,     7,     0,     0,     0,    96,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    87,
-      88,    89,     0,     0,     0,     4,     5,     0,     0,     6,
-       7,   117,    90,   220,    13,    92,    93,     0,     0,    14,
-      15,    16,    17,     0,     0,     0,     0,    85,    20,     0,
-       0,     0,    86,     0,    21,    22,     0,    23,     0,    24,
-       0,    13,    25,    26,     0,    61,    14,    15,    16,    17,
-       0,     0,     4,     5,     0,    20,     6,     7,    87,    88,
-      89,    21,    22,     0,    23,     0,    24,     0,     0,    25,
-      26,    90,    61,     0,    92,    93,     0,     0,     0,     4,
-       5,     0,     0,     6,     7,     0,     0,     0,    13,     0,
-       0,     0,     0,    14,    15,    16,    17,     0,     0,     0,
-       0,     0,    20,     0,     0,     0,     0,     0,    21,    22,
-       0,    23,     0,    24,     0,     0,    25,    26,     0,    61,
-      14,    15,    16,    17,     0,     0,     0,     0,     0,    20,
+      15,    16,    17,     0,     0,     0,     0,   -74,    20,     0,
+       0,     0,     0,     0,    21,    22,     0,    23,     0,    24,
+       0,     0,    25,    26,     0,    61,     0,     0,    75,   -74,
+      76,   195,     0,     4,     5,     0,     0,     6,     7,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     196,     0,   197,   198,   199,     0,     0,   200,   201,   202,
+     203,   204,   205,   206,   207,   208,     0,     0,     0,    13,
+     209,     0,     0,     0,    14,    15,    16,    17,    69,     0,
+       4,     5,     0,    20,     6,     7,     0,     0,  -106,    21,
+      22,     0,    23,     0,    24,     0,     0,    25,    26,     0,
+      61,     0,     0,    75,   210,    76,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    13,     0,     0,     0,
+       0,    14,    15,    16,    17,     0,     0,     0,     0,  -106,
+      20,     0,     0,     0,     0,     0,    21,    22,     0,    23,
+       0,    24,     0,     0,    25,   270,  -106,    61,     0,     4,
+       5,     0,  -106,     6,     7,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   196,     0,   197,   198,
+     199,     0,     0,   200,   201,   202,   203,   204,   205,   206,
+     207,   208,     0,     0,     0,    13,   209,     0,     0,     0,
+      14,    15,    16,    17,     0,     0,     4,     5,     0,    20,
+       6,     7,     0,     0,     0,    21,    22,     0,    23,     0,
+      24,     0,     0,    25,    26,     0,    61,     0,     0,    75,
+       0,    76,     0,     0,     0,     0,     0,   116,     0,     4,
+       5,     0,    13,     6,     7,   117,     0,    14,    15,    16,
+      17,     0,     0,     0,     0,     0,    20,     0,     0,     0,
+       0,     0,    21,    22,     0,    23,     0,    24,     0,     0,
+      25,    26,     0,    61,     0,    13,     0,     0,    76,     0,
+      14,    15,    16,    17,   225,     0,     4,     5,     0,    20,
+       6,     7,   117,     0,     0,    21,    22,     0,    23,     0,
+      24,     0,     0,    25,    26,  -114,    61,     0,     0,     0,
+       0,    69,     0,     4,     5,     0,     0,     6,     7,     0,
+       0,     0,    13,     0,     0,     0,     0,    14,    15,    16,
+      17,     0,     0,     0,     0,    85,    20,     0,     0,     0,
+      86,     0,    21,    22,     0,    23,     0,    24,     0,    13,
+      25,    26,     0,    61,    14,    15,    16,    17,   189,     0,
+       4,     5,     0,    20,     6,     7,    87,    88,    89,    21,
+      22,     0,    23,     0,    24,     0,     0,    25,    26,    90,
+      61,     0,    92,    93,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     4,   265,     0,    13,     6,     7,     0,
+      76,    14,    15,    16,    17,     0,     0,     0,     0,     0,
+      20,     0,     0,   198,     0,     0,    21,    22,     0,    23,
+       0,    24,   205,   206,    25,    26,     0,    61,     0,    13,
+       0,     0,     0,     0,    14,    15,    16,    17,     0,     0,
+       0,     4,     5,    20,     0,     6,     7,     0,     0,    21,
+      22,     0,    23,     0,    24,     0,     0,    25,    26,     0,
+      61,   198,     0,     0,     0,     0,     0,     0,     0,     0,
+     205,   206,     0,     0,     0,     0,     0,    13,     0,     0,
+       0,     0,    14,    15,    16,    17,     0,     0,     0,     0,
+       0,    20,     0,     0,     0,     0,     0,    21,    22,    85,
+      23,     0,    24,     0,    86,    25,    26,     0,    61,     4,
+       5,     0,     0,     6,     7,     0,     0,     0,    96,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      87,    88,    89,     0,     0,     0,     4,     5,     0,     0,
+       6,     7,   117,    90,     0,    13,    92,    93,     0,     0,
+      14,    15,    16,    17,     0,     0,     0,     0,   139,    20,
        0,     0,     0,     0,     0,    21,    22,     0,    23,     0,
-      24,     0,     0,    25,    66,     0,    61
+      24,     0,    13,    25,    26,     0,    61,    14,    15,    16,
+      17,     0,     0,     4,     5,     0,    20,     6,     7,     0,
+       0,     0,    21,    22,     0,    23,     0,    24,     0,     0,
+      25,    26,     0,    61,     0,    85,     0,     0,     0,     0,
+      86,     0,     0,     0,     0,     0,     0,     0,     0,    13,
+       0,     0,     0,    85,    14,    15,    16,    17,    86,    85,
+       0,     0,     0,    20,    86,     0,    87,    88,    89,    21,
+      22,     0,    23,     0,    24,     0,     0,    25,    26,    90,
+      61,    91,    92,    93,    87,    88,    89,     0,     0,     0,
+      87,    88,    89,     0,     0,     0,     0,    90,   221,     0,
+      92,    93,     0,    90,     0,     0,    92,    93
 };
 
 static const yytype_int16 yycheck[] =
 {
-       1,    44,    29,    30,   217,    70,    86,   238,     1,    87,
-      46,    13,    14,    15,    29,     1,     1,     1,   248,    21,
-      22,     1,    24,    25,     1,    26,   120,    17,    17,     6,
-       3,   111,    10,    35,    52,    27,    29,    15,    21,    22,
-     314,    24,    43,    44,     1,     4,     1,     4,     4,   323,
-       1,     6,    35,     4,   119,    73,    68,    75,    59,    60,
-      59,    60,    71,    41,    42,    66,   131,   132,    52,    61,
-      56,    56,    52,    68,     1,    73,    49,     1,    51,    57,
-      58,    71,    71,   314,    69,    86,    72,    88,    89,    90,
-     320,    75,   323,   237,    95,    75,    98,    99,   100,   101,
-     102,   103,   104,   105,   106,   107,   108,   109,    68,    68,
-     188,    67,    69,     1,   115,    98,    99,   100,   101,   102,
-     103,   104,   105,   106,   107,   108,   109,   129,   341,    56,
-     145,   344,    56,   148,    10,   229,   137,    25,    26,    15,
-     141,    52,    69,    81,    52,    69,   129,   291,    44,    45,
-      68,   295,   145,    91,    41,   148,   179,   180,    10,   160,
-     162,    44,    45,   228,    52,    41,    50,    75,   312,     3,
-       1,   315,    57,    66,     3,     4,     4,    52,   179,   180,
-      11,    57,    58,     5,    71,    39,    74,    14,   203,   204,
-       9,   256,   207,    41,   209,   260,   261,    69,   213,   343,
-     138,    68,   346,   218,   247,    57,    58,   208,   286,    10,
-     203,   204,    68,    68,   207,    68,   209,    46,    47,   220,
-     213,    52,   258,   288,   267,    56,    75,   242,     4,    69,
-     231,   232,   297,    27,   235,   236,    11,   317,    69,   304,
-      21,    70,   257,   279,    75,   145,   247,    68,   148,   242,
-     265,    59,    60,    61,    62,    63,    57,    58,    66,   324,
-      55,    13,    14,   201,   257,    74,   267,   294,     7,     8,
-       9,   336,   210,    59,    60,    61,    62,    63,     7,     7,
-      66,   219,    30,   298,   317,    10,   232,   300,    25,   162,
-      15,   306,    44,    45,   332,   296,    -1,   298,   300,    -1,
-     279,    53,    -1,   203,   204,    -1,   308,   207,    -1,   209,
-      -1,   249,    -1,   213,    53,   253,    41,    42,    43,    -1,
-      59,    60,    -1,    62,    -1,   308,    61,    62,    63,    54,
-      -1,    66,    57,    58,    -1,    -1,    -1,    -1,   276,    -1,
-      -1,    -1,   242,    -1,    -1,   283,   284,    -1,    -1,   287,
-      75,    -1,    -1,    -1,    -1,    -1,    -1,   257,    -1,    10,
-      -1,    -1,    -1,    -1,    15,    -1,    -1,   305,    -1,   307,
-      -1,   309,   310,   311,    -1,   313,     0,     1,    -1,     3,
-       4,    -1,    -1,     7,     8,    -1,    -1,    -1,    -1,    -1,
-      41,    42,    43,    -1,    18,    19,   334,    -1,    -1,   337,
-      -1,    -1,   340,    54,   342,    -1,    57,    58,    -1,    -1,
-      -1,    -1,    36,    37,    38,    39,    -1,    -1,    69,    -1,
-      44,    45,    46,    47,    48,    -1,    -1,    -1,    52,    53,
-      -1,    -1,    -1,    -1,    -1,    59,    60,    -1,    62,    -1,
-      64,    -1,    -1,    67,    68,    -1,    70,    -1,    -1,    73,
-       1,    75,     3,     4,    -1,    -1,     7,     8,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    20,
-      -1,    22,    23,    24,    25,    26,    27,    28,    29,    30,
-      31,    32,    33,    34,    35,    -1,    -1,    -1,    39,    40,
-      -1,    -1,    -1,    44,    45,    46,    47,    -1,    -1,    -1,
-      -1,    52,    53,    -1,    -1,    -1,    -1,    -1,    59,    60,
-      -1,    62,    -1,    64,    -1,    -1,    67,    68,    -1,    70,
-      -1,    -1,    73,    74,    75,     1,    -1,     3,     4,    -1,
-      -1,     7,     8,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    20,    -1,    22,    23,    24,    25,
-      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
-      -1,    -1,    -1,    39,    40,    -1,    -1,    -1,    44,    45,
-      46,    47,    -1,    -1,    -1,    -1,    52,    53,    -1,    -1,
-      -1,    -1,    -1,    59,    60,    -1,    62,    -1,    64,    -1,
-      -1,    67,    68,    -1,    70,    -1,    -1,    73,    74,    75,
-       1,    -1,     3,     4,    -1,    -1,     7,     8,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    20,
-      -1,    22,    23,    24,    -1,    -1,    27,    28,    29,    30,
-      31,    32,    33,    34,    35,    -1,    -1,    -1,    39,    40,
-      -1,    -1,    -1,    44,    45,    46,    47,     1,    -1,     3,
-       4,    -1,    53,     7,     8,    -1,    -1,    11,    59,    60,
-      -1,    62,    -1,    64,    -1,    -1,    67,    68,    -1,    70,
-      -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,    -1,
-      44,    45,    46,    47,    -1,    -1,    -1,    -1,    52,    53,
-      -1,    -1,    -1,    -1,    -1,    59,    60,    -1,    62,    -1,
-      64,    -1,    -1,    67,    68,    69,    70,    -1,     3,     4,
-      -1,    75,     7,     8,    -1,    -1,    -1,    -1,    -1,    -1,
+      13,    14,    15,    29,    46,   120,    44,     1,    21,    22,
+      87,    24,    25,    70,   218,    86,     1,   239,    29,    30,
+      21,    22,    35,    24,    41,    17,    17,    52,    52,    10,
+     334,    27,     1,    68,    35,    29,   340,     6,   250,     1,
+     111,    61,    62,    63,     6,    68,    66,    68,    73,     1,
+      75,    75,     4,    71,    71,    52,   238,    73,     1,     1,
+      50,     1,   119,     4,     4,    61,    44,    45,    11,     1,
+       1,    56,     1,    68,   131,   132,    57,    58,   145,    71,
+      71,   148,     4,   295,    69,    98,    99,   100,   101,   102,
+     103,   104,   105,   106,   107,   108,   109,    98,    99,   100,
+     101,   102,   103,   104,   105,   106,   107,   108,   109,    52,
+       1,   188,   334,    56,    56,   230,   129,   299,   340,   145,
+      52,   303,   148,    52,   328,    56,    69,    68,   129,    69,
+      72,   335,    75,    57,    81,    26,   203,   204,    69,     1,
+     207,    66,   209,    75,    91,    67,    75,   214,     3,   162,
+     332,   145,    43,    44,   148,   337,    59,    60,    61,    62,
+      63,    44,    45,    66,    52,   347,   348,     5,    59,    60,
+      59,    60,   229,   179,   180,    66,   243,   203,   204,     4,
+      39,   207,     9,   209,    14,     3,     4,    69,   214,    41,
+       3,   138,   259,   219,    56,    86,    10,    88,    89,    90,
+     211,   258,     1,    68,    95,   262,   263,    69,    68,   203,
+     204,   249,   289,   207,    68,   209,     4,   243,   260,    68,
+     214,   292,    75,    69,   115,    27,    25,    26,    46,    47,
+      10,    68,   270,   259,    11,    15,    49,     7,    51,   296,
+     282,   267,    74,    57,    58,    55,   137,     7,   305,   243,
+     141,    10,    70,    52,   201,    21,    15,    30,   292,   233,
+     318,    41,    42,   210,   321,   259,     7,     8,     9,   160,
+      25,    -1,   162,   220,   282,    74,   313,    57,    58,    -1,
+     306,    -1,    41,    -1,   341,    -1,    -1,   344,   179,   180,
+      -1,    -1,    -1,    13,    14,    -1,    -1,   323,    57,    58,
+      -1,    -1,    -1,    -1,   251,   318,     3,     4,   255,    -1,
+       7,     8,    53,    -1,    -1,    -1,   329,   208,    59,    60,
+      -1,    62,   269,    -1,    44,    45,    -1,    -1,   329,    -1,
+     221,    -1,   279,    53,    -1,    -1,    -1,    -1,    -1,   286,
+     287,   232,   233,   290,    -1,   236,   237,    44,    45,    46,
+      47,    -1,    -1,    -1,    -1,    -1,    53,    -1,   249,    -1,
+      -1,    -1,    59,    60,    -1,    62,    -1,    64,   315,    -1,
+      67,    68,    -1,    70,    -1,   322,    -1,   324,    -1,   270,
+     327,    -1,    -1,   330,   331,    -1,   333,     0,     1,    -1,
+       3,     4,    -1,    -1,     7,     8,    -1,    -1,   345,   346,
+      59,    60,    61,    62,    63,    18,    19,    66,    -1,    -1,
+      -1,    -1,    -1,   304,    -1,   306,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    36,    37,    38,    39,    -1,    -1,    -1,
+      -1,    44,    45,    46,    47,    48,    -1,    -1,    -1,    52,
+      53,    -1,    -1,    -1,    -1,    -1,    59,    60,    -1,    62,
+      -1,    64,    -1,    -1,    67,    68,    -1,    70,    -1,    -1,
+      73,     1,    75,     3,     4,    -1,    -1,     7,     8,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      20,    -1,    22,    23,    24,    25,    26,    27,    28,    29,
+      30,    31,    32,    33,    34,    35,    -1,    -1,    -1,    39,
+      40,    -1,    -1,    -1,    44,    45,    46,    47,    -1,    -1,
+      -1,    -1,    52,    53,    -1,    -1,    -1,    -1,    -1,    59,
+      60,    -1,    62,    -1,    64,    -1,    -1,    67,    68,    -1,
+      70,    -1,    -1,    73,    74,    75,     1,    -1,     3,     4,
+      -1,    -1,     7,     8,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    20,    -1,    22,    23,    24,
-      -1,    -1,    27,    28,    29,    30,    31,    32,    33,    34,
+      25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
       35,    -1,    -1,    -1,    39,    40,    -1,    -1,    -1,    44,
-      45,    46,    47,    -1,    -1,     3,     4,    -1,    53,     7,
-       8,    -1,    -1,    -1,    59,    60,    -1,    62,    -1,    64,
-      -1,    -1,    67,    68,    -1,    70,    -1,    -1,    73,    -1,
-      75,    -1,    -1,    -1,    -1,    -1,     1,    -1,     3,     4,
-      -1,    39,     7,     8,     9,    -1,    44,    45,    46,    47,
-      -1,    -1,    -1,    -1,    -1,    53,    -1,    -1,    -1,    -1,
-      -1,    59,    60,    -1,    62,    -1,    64,    -1,    -1,    67,
-      68,    -1,    70,    -1,    39,    -1,    -1,    75,    -1,    44,
-      45,    46,    47,     1,    -1,     3,     4,    -1,    53,     7,
-       8,     9,    -1,    -1,    59,    60,    -1,    62,    -1,    64,
-      -1,    -1,    67,    68,    69,    70,    -1,    -1,    -1,    -1,
-       1,    -1,     3,     4,    -1,    -1,     7,     8,    -1,    -1,
-      -1,    39,    -1,    -1,    -1,    -1,    44,    45,    46,    47,
-      -1,    -1,    -1,    -1,    10,    53,    -1,    -1,    -1,    15,
-      -1,    59,    60,    -1,    62,    -1,    64,    -1,    39,    67,
-      68,    -1,    70,    44,    45,    46,    47,     1,    -1,     3,
-       4,    -1,    53,     7,     8,    41,    42,    43,    59,    60,
-      -1,    62,    -1,    64,    -1,    -1,    67,    68,    54,    70,
-      56,    57,    58,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,     3,     4,    -1,    39,     7,     8,    -1,    -1,
-      44,    45,    46,    47,    -1,    -1,    -1,    -1,    -1,    53,
-      -1,    -1,    23,    -1,    -1,    59,    60,    -1,    62,    -1,
-      64,    32,    33,    67,    68,    -1,    70,    -1,    39,    -1,
-      -1,    -1,    -1,    44,    45,    46,    47,    -1,    -1,    -1,
-       3,     4,    53,    -1,     7,     8,    -1,    -1,    59,    60,
-      -1,    62,    -1,    64,    -1,    -1,    67,    68,    -1,    70,
-      23,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    32,
-      33,    -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,
-      -1,    44,    45,    46,    47,    -1,    -1,    -1,    -1,    -1,
-      53,    -1,    -1,    -1,    -1,    -1,    59,    60,    10,    62,
-      -1,    64,    -1,    15,    67,    68,    -1,    70,     3,     4,
-      -1,    -1,     7,     8,    -1,    -1,    -1,    12,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    41,
-      42,    43,    -1,    -1,    -1,     3,     4,    -1,    -1,     7,
-       8,     9,    54,    55,    39,    57,    58,    -1,    -1,    44,
-      45,    46,    47,    -1,    -1,    -1,    -1,    10,    53,    -1,
-      -1,    -1,    15,    -1,    59,    60,    -1,    62,    -1,    64,
-      -1,    39,    67,    68,    -1,    70,    44,    45,    46,    47,
-      -1,    -1,     3,     4,    -1,    53,     7,     8,    41,    42,
-      43,    59,    60,    -1,    62,    -1,    64,    -1,    -1,    67,
-      68,    54,    70,    -1,    57,    58,    -1,    -1,    -1,     3,
-       4,    -1,    -1,     7,     8,    -1,    -1,    -1,    39,    -1,
-      -1,    -1,    -1,    44,    45,    46,    47,    -1,    -1,    -1,
-      -1,    -1,    53,    -1,    -1,    -1,    -1,    -1,    59,    60,
-      -1,    62,    -1,    64,    -1,    -1,    67,    68,    -1,    70,
-      44,    45,    46,    47,    -1,    -1,    -1,    -1,    -1,    53,
+      45,    46,    47,    -1,    -1,    -1,    -1,    52,    53,    -1,
+      -1,    -1,    -1,    -1,    59,    60,    -1,    62,    -1,    64,
+      -1,    -1,    67,    68,    -1,    70,    -1,    -1,    73,    74,
+      75,     1,    -1,     3,     4,    -1,    -1,     7,     8,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      20,    -1,    22,    23,    24,    -1,    -1,    27,    28,    29,
+      30,    31,    32,    33,    34,    35,    -1,    -1,    -1,    39,
+      40,    -1,    -1,    -1,    44,    45,    46,    47,     1,    -1,
+       3,     4,    -1,    53,     7,     8,    -1,    -1,    11,    59,
+      60,    -1,    62,    -1,    64,    -1,    -1,    67,    68,    -1,
+      70,    -1,    -1,    73,    74,    75,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,    -1,
+      -1,    44,    45,    46,    47,    -1,    -1,    -1,    -1,    52,
+      53,    -1,    -1,    -1,    -1,    -1,    59,    60,    -1,    62,
+      -1,    64,    -1,    -1,    67,    68,    69,    70,    -1,     3,
+       4,    -1,    75,     7,     8,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    20,    -1,    22,    23,
+      24,    -1,    -1,    27,    28,    29,    30,    31,    32,    33,
+      34,    35,    -1,    -1,    -1,    39,    40,    -1,    -1,    -1,
+      44,    45,    46,    47,    -1,    -1,     3,     4,    -1,    53,
+       7,     8,    -1,    -1,    -1,    59,    60,    -1,    62,    -1,
+      64,    -1,    -1,    67,    68,    -1,    70,    -1,    -1,    73,
+      -1,    75,    -1,    -1,    -1,    -1,    -1,     1,    -1,     3,
+       4,    -1,    39,     7,     8,     9,    -1,    44,    45,    46,
+      47,    -1,    -1,    -1,    -1,    -1,    53,    -1,    -1,    -1,
+      -1,    -1,    59,    60,    -1,    62,    -1,    64,    -1,    -1,
+      67,    68,    -1,    70,    -1,    39,    -1,    -1,    75,    -1,
+      44,    45,    46,    47,     1,    -1,     3,     4,    -1,    53,
+       7,     8,     9,    -1,    -1,    59,    60,    -1,    62,    -1,
+      64,    -1,    -1,    67,    68,    69,    70,    -1,    -1,    -1,
+      -1,     1,    -1,     3,     4,    -1,    -1,     7,     8,    -1,
+      -1,    -1,    39,    -1,    -1,    -1,    -1,    44,    45,    46,
+      47,    -1,    -1,    -1,    -1,    10,    53,    -1,    -1,    -1,
+      15,    -1,    59,    60,    -1,    62,    -1,    64,    -1,    39,
+      67,    68,    -1,    70,    44,    45,    46,    47,     1,    -1,
+       3,     4,    -1,    53,     7,     8,    41,    42,    43,    59,
+      60,    -1,    62,    -1,    64,    -1,    -1,    67,    68,    54,
+      70,    -1,    57,    58,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,     3,     4,    -1,    39,     7,     8,    -1,
+      75,    44,    45,    46,    47,    -1,    -1,    -1,    -1,    -1,
+      53,    -1,    -1,    23,    -1,    -1,    59,    60,    -1,    62,
+      -1,    64,    32,    33,    67,    68,    -1,    70,    -1,    39,
+      -1,    -1,    -1,    -1,    44,    45,    46,    47,    -1,    -1,
+      -1,     3,     4,    53,    -1,     7,     8,    -1,    -1,    59,
+      60,    -1,    62,    -1,    64,    -1,    -1,    67,    68,    -1,
+      70,    23,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      32,    33,    -1,    -1,    -1,    -1,    -1,    39,    -1,    -1,
+      -1,    -1,    44,    45,    46,    47,    -1,    -1,    -1,    -1,
+      -1,    53,    -1,    -1,    -1,    -1,    -1,    59,    60,    10,
+      62,    -1,    64,    -1,    15,    67,    68,    -1,    70,     3,
+       4,    -1,    -1,     7,     8,    -1,    -1,    -1,    12,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      41,    42,    43,    -1,    -1,    -1,     3,     4,    -1,    -1,
+       7,     8,     9,    54,    -1,    39,    57,    58,    -1,    -1,
+      44,    45,    46,    47,    -1,    -1,    -1,    -1,    69,    53,
       -1,    -1,    -1,    -1,    -1,    59,    60,    -1,    62,    -1,
-      64,    -1,    -1,    67,    68,    -1,    70
+      64,    -1,    39,    67,    68,    -1,    70,    44,    45,    46,
+      47,    -1,    -1,     3,     4,    -1,    53,     7,     8,    -1,
+      -1,    -1,    59,    60,    -1,    62,    -1,    64,    -1,    -1,
+      67,    68,    -1,    70,    -1,    10,    -1,    -1,    -1,    -1,
+      15,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    39,
+      -1,    -1,    -1,    10,    44,    45,    46,    47,    15,    10,
+      -1,    -1,    -1,    53,    15,    -1,    41,    42,    43,    59,
+      60,    -1,    62,    -1,    64,    -1,    -1,    67,    68,    54,
+      70,    56,    57,    58,    41,    42,    43,    -1,    -1,    -1,
+      41,    42,    43,    -1,    -1,    -1,    -1,    54,    55,    -1,
+      57,    58,    -1,    54,    -1,    -1,    57,    58
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -1128,38 +1134,39 @@ static const yytype_uint8 yystos[] =
        0,    77,     0,     1,     3,     4,     7,     8,    18,    19,
       36,    37,    38,    39,    44,    45,    46,    47,    48,    52,
       53,    59,    60,    62,    64,    67,    68,    70,    78,    81,
-      85,    87,    90,   108,   119,   123,   124,   125,   126,   127,
-     128,   136,   137,    68,    71,   133,   134,   135,     3,     4,
-      46,    47,    70,    83,    84,   129,   137,   137,   137,    68,
-      68,    70,   124,   137,   124,   124,    68,   126,   137,     1,
-     115,   119,    49,    51,   128,    73,    75,    82,    92,   108,
-     139,   143,    82,    88,    52,    10,    15,    41,    42,    43,
-      54,    56,    57,    58,   121,   122,    12,   124,    59,    60,
+      85,    87,    90,   109,   120,   124,   125,   126,   127,   128,
+     129,   137,   138,    68,    71,   134,   135,   136,     3,     4,
+      46,    47,    70,    83,    84,   130,   138,   138,   138,    68,
+      68,    70,   125,   138,   125,   125,    68,   127,   138,     1,
+     116,   120,    49,    51,   129,    73,    75,    82,    92,   109,
+     140,   144,    82,    88,    52,    10,    15,    41,    42,    43,
+      54,    56,    57,    58,   122,   123,    12,   125,    59,    60,
       61,    62,    63,    66,    59,    60,    61,    62,    63,    66,
-      13,    14,    44,    45,    53,   120,     1,     9,    89,   116,
-     117,   118,   119,   115,   119,    17,   133,    50,    68,    57,
-     110,   116,   116,   119,    44,    45,   138,     1,    56,    69,
-     141,   145,   141,     1,     6,    79,     1,     6,    80,   108,
-     109,    91,   109,     5,    89,   119,   136,   119,   119,   119,
-     109,   119,    39,   124,   124,   124,   124,   124,   124,   124,
-     124,   124,   124,   124,   124,    89,    14,   119,   141,     1,
-     145,    72,    86,   124,   141,   141,   119,   109,    41,     1,
-     119,     1,    92,     1,    92,     1,    20,    22,    23,    24,
+      13,    14,    44,    45,    53,   121,     1,     9,    89,   117,
+     118,   119,   120,   116,   120,    17,   134,    50,    68,    57,
+     111,   117,   117,   120,    44,    45,   139,     1,    56,    69,
+     142,   146,   142,     1,     6,    79,     1,     6,    80,   109,
+     110,    91,   110,     5,    89,   120,   137,   120,   120,   120,
+     110,   120,    39,   125,   125,   125,   125,   125,   125,   125,
+     125,   125,   125,   125,   125,    89,    14,   120,   142,     1,
+     146,    72,    86,   125,   142,   142,   120,   110,    41,     1,
+     120,     1,    92,     1,    92,     1,    20,    22,    23,    24,
       27,    28,    29,    30,    31,    32,    33,    34,    35,    40,
-      74,    93,    94,    96,   103,   107,   119,   139,   140,   143,
-      55,   119,   129,   118,     1,   118,     1,     4,   111,   112,
-     136,    68,    95,     4,    68,    68,    68,   109,    68,    92,
-      92,    92,   113,   119,    92,   109,    92,    97,    91,   142,
-     143,   109,   119,   141,     1,   145,   119,   113,    98,     4,
-     119,   119,    93,     4,    96,    99,    92,    68,   104,   114,
-     115,   140,   109,   109,     1,     4,   141,    92,   130,   131,
-     132,   133,    69,   141,   141,    27,    41,   143,   115,    11,
-     105,   109,    17,   132,   109,   109,    68,   136,   109,   141,
-     106,    93,   139,    93,   119,   141,   119,   143,   123,    21,
-     100,   141,   109,   143,   109,   109,     1,    25,    26,   101,
-     109,   109,    93,   109,    99,    93,     7,     8,    59,    60,
-      87,    89,   102,    55,   144,   140,    99,   141,     7,     7,
-     144,   109,   141,   109,   109,    91,   109,    93,    91,    93
+      74,    93,    94,    95,    97,   104,   108,   120,   140,   141,
+     144,    55,   120,   130,   119,     1,   119,     1,     4,   112,
+     113,   137,    68,    96,     4,    68,    68,    68,   110,    68,
+      92,    92,    92,   114,   120,    92,   110,   140,    92,    98,
+      91,   143,   144,   110,   120,   142,     1,   146,   120,   114,
+      99,     4,   120,   120,    94,     4,    97,   100,    92,   101,
+      68,   105,   115,   116,   141,   110,   110,     1,     4,   142,
+      92,   131,   132,   133,   134,    69,   142,   142,    27,    41,
+     144,     1,    25,    26,   102,   110,   116,    11,   106,   110,
+      17,   133,   110,   110,    68,   137,   110,     7,     8,    59,
+      60,    87,    89,   103,    55,   145,   141,   142,   107,    94,
+      94,   120,   142,   120,   144,     7,     7,   145,   110,   124,
+      21,   142,   110,   144,   110,   110,    91,   110,   110,    94,
+     110,   100,    91,    94,   100,   142,   142,   110,   110,    94,
+      94
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
@@ -1169,23 +1176,23 @@ static const yytype_uint8 yyr1[] =
       78,    78,    79,    79,    79,    80,    80,    80,    81,    81,
       81,    81,    81,    81,    81,    82,    83,    83,    83,    83,
       84,    84,    86,    85,    88,    87,    89,    90,    90,    91,
-      91,    91,    92,    92,    93,    93,    93,    93,    93,    93,
-      93,    93,    93,    93,    94,    94,    94,    94,    94,    95,
-      94,    94,    97,    96,    98,    96,    96,    96,    99,    99,
-     100,   100,   100,   101,   101,   102,   102,   102,   102,   102,
-     102,   103,   103,   104,   104,   105,   106,   105,   107,   107,
-     108,   108,   109,   109,   110,   110,   111,   111,   112,   112,
-     112,   112,   112,   113,   113,   114,   114,   115,   115,   115,
-     115,   115,   115,   116,   116,   117,   117,   117,   117,   117,
-     117,   118,   118,   119,   119,   119,   119,   119,   119,   119,
-     119,   119,   119,   120,   120,   120,   121,   121,   122,   122,
-     123,   123,   123,   124,   124,   124,   124,   124,   124,   124,
-     124,   124,   124,   124,   125,   125,   125,   125,   125,   125,
-     125,   126,   126,   126,   126,   126,   126,   126,   126,   126,
-     126,   126,   126,   126,   126,   127,   127,   128,   129,   129,
-     130,   130,   131,   131,   132,   133,   134,   134,   135,   136,
-     136,   137,   137,   138,   138,   138,   139,   140,   141,   142,
-     142,   143,   144,   145
+      91,    91,    92,    92,    93,    94,    94,    94,    94,    94,
+      94,    94,    94,    94,    94,    95,    95,    95,    95,    95,
+      96,    95,    95,    98,    97,    99,    97,    97,    97,   100,
+     100,   101,   101,   101,   102,   102,   103,   103,   103,   103,
+     103,   103,   104,   104,   105,   105,   106,   107,   106,   108,
+     108,   109,   109,   110,   110,   111,   111,   112,   112,   113,
+     113,   113,   113,   113,   114,   114,   115,   115,   116,   116,
+     116,   116,   116,   116,   117,   117,   118,   118,   118,   118,
+     118,   118,   119,   119,   120,   120,   120,   120,   120,   120,
+     120,   120,   120,   120,   121,   121,   121,   122,   122,   123,
+     123,   124,   124,   124,   125,   125,   125,   125,   125,   125,
+     125,   125,   125,   125,   125,   126,   126,   126,   126,   126,
+     126,   126,   127,   127,   127,   127,   127,   127,   127,   127,
+     127,   127,   127,   127,   127,   127,   128,   128,   129,   130,
+     130,   131,   131,   132,   132,   133,   134,   135,   135,   136,
+     137,   137,   138,   138,   139,   139,   139,   140,   141,   142,
+     143,   143,   144,   145,   146
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -1195,23 +1202,23 @@ static const yytype_uint8 yyr2[] =
        4,     4,     1,     2,     1,     1,     2,     1,     0,     1,
        4,     1,     1,     1,     1,     5,     1,     1,     1,     2,
        1,     1,     0,     7,     0,     3,     1,     1,     1,     0,
-       2,     2,     1,     2,     2,     3,     1,     9,     6,     8,
-       8,    12,    11,     1,     2,     2,     2,     2,     3,     0,
-       4,     2,     0,     4,     0,     4,     4,     1,     0,     1,
-       0,     2,     2,     5,     4,     1,     2,     2,     1,     1,
-       1,     1,     1,     1,     3,     0,     0,     3,     6,     9,
-       1,     2,     0,     1,     0,     2,     0,     1,     1,     3,
-       1,     2,     3,     0,     1,     0,     1,     1,     3,     1,
-       2,     3,     3,     0,     1,     1,     3,     1,     2,     3,
-       3,     1,     1,     3,     3,     3,     3,     3,     3,     3,
-       3,     5,     1,     1,     1,     2,     1,     1,     1,     1,
-       1,     1,     2,     1,     3,     3,     3,     3,     3,     3,
-       3,     2,     2,     5,     4,     3,     3,     3,     3,     3,
-       3,     1,     2,     3,     4,     4,     1,     1,     1,     2,
-       2,     1,     1,     2,     2,     1,     2,     4,     0,     1,
-       0,     2,     1,     2,     1,     3,     1,     2,     2,     1,
-       2,     1,     3,     1,     1,     0,     2,     2,     1,     0,
-       1,     1,     1,     2
+       2,     2,     1,     2,     5,     2,     3,     1,     5,     6,
+       8,     8,    12,    11,     1,     2,     2,     2,     2,     3,
+       0,     4,     2,     0,     4,     0,     4,     4,     1,     0,
+       1,     0,     2,     2,     5,     4,     1,     2,     2,     1,
+       1,     1,     1,     1,     1,     3,     0,     0,     3,     6,
+       9,     1,     2,     0,     1,     0,     2,     0,     1,     1,
+       3,     1,     2,     3,     0,     1,     0,     1,     1,     3,
+       1,     2,     3,     3,     0,     1,     1,     3,     1,     2,
+       3,     3,     1,     1,     3,     3,     3,     3,     3,     3,
+       3,     3,     5,     1,     1,     1,     2,     1,     1,     1,
+       1,     1,     1,     2,     1,     3,     3,     3,     3,     3,
+       3,     3,     2,     2,     5,     4,     3,     3,     3,     3,
+       3,     3,     1,     2,     3,     4,     4,     1,     1,     1,
+       2,     2,     1,     1,     2,     2,     1,     2,     4,     0,
+       1,     0,     2,     1,     2,     1,     3,     1,     2,     2,
+       1,     2,     1,     3,     1,     1,     0,     2,     2,     1,
+       0,     1,     1,     1,     2
 };
 
 
@@ -1893,7 +1900,7 @@ yyreduce:
                rule = 0;
                yyerrok;
          }
-#line 1897 "awkgram.c" /* yacc.c:1646  */
+#line 1904 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 5:
@@ -1901,7 +1908,7 @@ yyreduce:
     {
                next_sourcefile();
          }
-#line 1905 "awkgram.c" /* yacc.c:1646  */
+#line 1912 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 6:
@@ -1914,7 +1921,7 @@ yyreduce:
                 */
                /* yyerrok; */
          }
-#line 1918 "awkgram.c" /* yacc.c:1646  */
+#line 1925 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 7:
@@ -1923,7 +1930,7 @@ yyreduce:
                (void) append_rule((yyvsp[-1]), (yyvsp[0]));
                first_rule = false;
          }
-#line 1927 "awkgram.c" /* yacc.c:1646  */
+#line 1934 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 8:
@@ -1938,7 +1945,7 @@ yyreduce:
                } else          /* pattern rule with non-empty pattern */
                        (void) append_rule((yyvsp[-1]), NULL);
          }
-#line 1942 "awkgram.c" /* yacc.c:1646  */
+#line 1949 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 9:
@@ -1949,7 +1956,7 @@ yyreduce:
                want_param_names = DONT_CHECK;
                yyerrok;
          }
-#line 1953 "awkgram.c" /* yacc.c:1646  */
+#line 1960 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 10:
@@ -1959,7 +1966,7 @@ yyreduce:
                at_seen = false;
                yyerrok;
          }
-#line 1963 "awkgram.c" /* yacc.c:1646  */
+#line 1970 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 11:
@@ -1969,7 +1976,7 @@ yyreduce:
                at_seen = false;
                yyerrok;
          }
-#line 1973 "awkgram.c" /* yacc.c:1646  */
+#line 1980 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 12:
@@ -1981,19 +1988,19 @@ yyreduce:
                bcfree((yyvsp[0]));
                (yyval) = NULL;
          }
-#line 1985 "awkgram.c" /* yacc.c:1646  */
+#line 1992 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 13:
 #line 286 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 1991 "awkgram.c" /* yacc.c:1646  */
+#line 1998 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 14:
 #line 288 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 1997 "awkgram.c" /* yacc.c:1646  */
+#line 2004 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 15:
@@ -2005,19 +2012,19 @@ yyreduce:
                bcfree((yyvsp[0]));
                (yyval) = NULL;
          }
-#line 2009 "awkgram.c" /* yacc.c:1646  */
+#line 2016 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 16:
 #line 301 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 2015 "awkgram.c" /* yacc.c:1646  */
+#line 2022 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 17:
 #line 303 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 2021 "awkgram.c" /* yacc.c:1646  */
+#line 2028 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 18:
@@ -2030,7 +2037,7 @@ yyreduce:
                } else
                        (yyval) = NULL;
          }
-#line 2034 "awkgram.c" /* yacc.c:1646  */
+#line 2041 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 19:
@@ -2043,7 +2050,7 @@ yyreduce:
                } else
                        (yyval) = (yyvsp[0]);
          }
-#line 2047 "awkgram.c" /* yacc.c:1646  */
+#line 2054 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 20:
@@ -2077,7 +2084,7 @@ yyreduce:
                        (yyval) = list_append(list_merge((yyvsp[-3]), 
(yyvsp[0])), tp);
                rule = Rule;
          }
-#line 2081 "awkgram.c" /* yacc.c:1646  */
+#line 2088 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 21:
@@ -2095,7 +2102,7 @@ yyreduce:
                check_comment();
                (yyval) = (yyvsp[0]);
          }
-#line 2099 "awkgram.c" /* yacc.c:1646  */
+#line 2106 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 22:
@@ -2113,7 +2120,7 @@ yyreduce:
                check_comment();
                (yyval) = (yyvsp[0]);
          }
-#line 2117 "awkgram.c" /* yacc.c:1646  */
+#line 2124 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 23:
@@ -2125,7 +2132,7 @@ yyreduce:
                check_comment();
                (yyval) = (yyvsp[0]);
          }
-#line 2129 "awkgram.c" /* yacc.c:1646  */
+#line 2136 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 24:
@@ -2137,7 +2144,7 @@ yyreduce:
                check_comment();
                (yyval) = (yyvsp[0]);
          }
-#line 2141 "awkgram.c" /* yacc.c:1646  */
+#line 2148 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 25:
@@ -2150,19 +2157,19 @@ yyreduce:
                        ip = (yyvsp[-3]);
                (yyval) = ip;
          }
-#line 2154 "awkgram.c" /* yacc.c:1646  */
+#line 2161 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 26:
 #line 416 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 2160 "awkgram.c" /* yacc.c:1646  */
+#line 2167 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 27:
 #line 418 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 2166 "awkgram.c" /* yacc.c:1646  */
+#line 2173 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 28:
@@ -2172,7 +2179,7 @@ yyreduce:
                                        tokstart);
                YYABORT;
          }
-#line 2176 "awkgram.c" /* yacc.c:1646  */
+#line 2183 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 29:
@@ -2181,13 +2188,13 @@ yyreduce:
                (yyval) = (yyvsp[0]);
                at_seen = false;
          }
-#line 2185 "awkgram.c" /* yacc.c:1646  */
+#line 2192 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 32:
 #line 438 "awkgram.y" /* yacc.c:1646  */
     { want_param_names = FUNC_HEADER; }
-#line 2191 "awkgram.c" /* yacc.c:1646  */
+#line 2198 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 33:
@@ -2229,13 +2236,13 @@ yyreduce:
                (yyval) = (yyvsp[-6]);
                want_param_names = FUNC_BODY;
          }
-#line 2233 "awkgram.c" /* yacc.c:1646  */
+#line 2240 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 34:
 #line 484 "awkgram.y" /* yacc.c:1646  */
     { want_regexp = true; }
-#line 2239 "awkgram.c" /* yacc.c:1646  */
+#line 2246 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 35:
@@ -2268,7 +2275,7 @@ yyreduce:
                  (yyval)->opcode = Op_match_rec;
                  (yyval)->memory = n;
                }
-#line 2272 "awkgram.c" /* yacc.c:1646  */
+#line 2279 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 36:
@@ -2299,13 +2306,13 @@ yyreduce:
                  (yyval)->opcode = Op_push_re;
                  (yyval)->memory = n2;
                }
-#line 2303 "awkgram.c" /* yacc.c:1646  */
+#line 2310 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 37:
 #line 547 "awkgram.y" /* yacc.c:1646  */
     { bcfree((yyvsp[0])); }
-#line 2309 "awkgram.c" /* yacc.c:1646  */
+#line 2316 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 39:
@@ -2320,7 +2327,7 @@ yyreduce:
                } else
                        (yyval) = NULL;
          }
-#line 2324 "awkgram.c" /* yacc.c:1646  */
+#line 2331 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 40:
@@ -2371,40 +2378,57 @@ yyreduce:
                }
                yyerrok;
          }
-#line 2375 "awkgram.c" /* yacc.c:1646  */
+#line 2382 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 41:
 #line 611 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = NULL; }
-#line 2381 "awkgram.c" /* yacc.c:1646  */
+#line 2388 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 44:
 #line 621 "awkgram.y" /* yacc.c:1646  */
-    { (yyval) = NULL; }
-#line 2387 "awkgram.c" /* yacc.c:1646  */
+    {
+               INSTRUCTION *ip;
+
+               ip = (yyvsp[-2]);
+               if (do_pretty_print) {
+                       (void) list_prepend(ip, (yyvsp[-4]));
+                       (void) list_prepend(ip, instruction(Op_exec_count));
+               }
+               /* else
+                       $1 is NULL */
+               (yyval) = ip;
+         }
+#line 2405 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 45:
-#line 623 "awkgram.y" /* yacc.c:1646  */
-    { (yyval) = (yyvsp[-1]); }
-#line 2393 "awkgram.c" /* yacc.c:1646  */
+#line 637 "awkgram.y" /* yacc.c:1646  */
+    { (yyval) = NULL; }
+#line 2411 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 46:
-#line 625 "awkgram.y" /* yacc.c:1646  */
+#line 639 "awkgram.y" /* yacc.c:1646  */
+    { (yyval) = (yyvsp[-1]); }
+#line 2417 "awkgram.c" /* yacc.c:1646  */
+    break;
+
+  case 47:
+#line 641 "awkgram.y" /* yacc.c:1646  */
     {
                if (do_pretty_print)
                        (yyval) = list_prepend((yyvsp[0]), 
instruction(Op_exec_count));
                else
                        (yyval) = (yyvsp[0]);
          }
-#line 2404 "awkgram.c" /* yacc.c:1646  */
+#line 2428 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 47:
-#line 632 "awkgram.y" /* yacc.c:1646  */
+  case 48:
+#line 648 "awkgram.y" /* yacc.c:1646  */
     {
                INSTRUCTION *dflt, *curr = NULL, *cexp, *cstmt;
                INSTRUCTION *ip, *nextc, *tbreak;
@@ -2422,8 +2446,9 @@ yyreduce:
                if ((yyvsp[-2]) != NULL) {
                        curr = (yyvsp[-2])->nexti;
                        bcfree((yyvsp[-2]));    /* Op_list */
-               } /*  else
-                               curr = NULL; */
+               }
+               /*  else
+                       curr = NULL; */
 
                for (; curr != NULL; curr = nextc) {
                        INSTRUCTION *caseexp = curr->case_exp;
@@ -2477,15 +2502,15 @@ yyreduce:
                if (case_values != NULL)
                        efree(case_values);
 
-               ip = (yyvsp[-6]);
+               ip = (yyvsp[-4]);
                if (do_pretty_print) {
-                       (void) list_prepend(ip, (yyvsp[-8]));
-                       (void) list_prepend(ip, instruction(Op_exec_count));
-                       (yyvsp[-8])->target_break = tbreak;
-                       ((yyvsp[-8]) + 1)->switch_start = cexp->nexti;
-                       ((yyvsp[-8]) + 1)->switch_end = cexp->lasti;
-               }/* else
-                               $1 is NULL */
+                       INSTRUCTION *exp = (yyvsp[-4])->nexti->nexti;
+                       exp->target_break = tbreak;
+                       (exp + 1)->switch_start = cexp->nexti;
+                       (exp + 1)->switch_end = cexp->lasti;
+               }
+               /* else
+                       $1 is NULL */
 
                (void) list_append(cexp, dflt);
                (void) list_merge(ip, cexp);
@@ -2494,11 +2519,11 @@ yyreduce:
                break_allowed--;
                fix_break_continue(ip, tbreak, NULL);
          }
-#line 2498 "awkgram.c" /* yacc.c:1646  */
+#line 2523 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 48:
-#line 722 "awkgram.y" /* yacc.c:1646  */
+  case 49:
+#line 739 "awkgram.y" /* yacc.c:1646  */
     {
                /*
                 *    -----------------
@@ -2540,11 +2565,11 @@ yyreduce:
                continue_allowed--;
                fix_break_continue(ip, tbreak, tcont);
          }
-#line 2544 "awkgram.c" /* yacc.c:1646  */
+#line 2569 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 49:
-#line 764 "awkgram.y" /* yacc.c:1646  */
+  case 50:
+#line 781 "awkgram.y" /* yacc.c:1646  */
     {
                /*
                 *    -----------------
@@ -2586,11 +2611,11 @@ yyreduce:
                } /* else
                        $1 and $4 are NULLs */
          }
-#line 2590 "awkgram.c" /* yacc.c:1646  */
+#line 2615 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 50:
-#line 806 "awkgram.y" /* yacc.c:1646  */
+  case 51:
+#line 823 "awkgram.y" /* yacc.c:1646  */
     {
                INSTRUCTION *ip;
                char *var_name = (yyvsp[-5])->lextok;
@@ -2703,33 +2728,33 @@ regular_loop:
                break_allowed--;
                continue_allowed--;
          }
-#line 2707 "awkgram.c" /* yacc.c:1646  */
+#line 2732 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 51:
-#line 919 "awkgram.y" /* yacc.c:1646  */
+  case 52:
+#line 936 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = mk_for_loop((yyvsp[-11]), (yyvsp[-9]), (yyvsp[-6]), 
(yyvsp[-3]), (yyvsp[0]));
 
                break_allowed--;
                continue_allowed--;
          }
-#line 2718 "awkgram.c" /* yacc.c:1646  */
+#line 2743 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 52:
-#line 926 "awkgram.y" /* yacc.c:1646  */
+  case 53:
+#line 943 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = mk_for_loop((yyvsp[-10]), (yyvsp[-8]), (INSTRUCTION 
*) NULL, (yyvsp[-3]), (yyvsp[0]));
 
                break_allowed--;
                continue_allowed--;
          }
-#line 2729 "awkgram.c" /* yacc.c:1646  */
+#line 2754 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 53:
-#line 933 "awkgram.y" /* yacc.c:1646  */
+  case 54:
+#line 950 "awkgram.y" /* yacc.c:1646  */
     {
                if (do_pretty_print)
                        (yyval) = list_prepend((yyvsp[0]), 
instruction(Op_exec_count));
@@ -2737,11 +2762,11 @@ regular_loop:
                        (yyval) = (yyvsp[0]);
                (yyval) = add_pending_comment((yyval));
          }
-#line 2741 "awkgram.c" /* yacc.c:1646  */
+#line 2766 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 54:
-#line 944 "awkgram.y" /* yacc.c:1646  */
+  case 55:
+#line 961 "awkgram.y" /* yacc.c:1646  */
     {
                if (! break_allowed)
                        error_ln((yyvsp[-1])->source_line,
@@ -2751,11 +2776,11 @@ regular_loop:
                (yyval) = add_pending_comment((yyval));
 
          }
-#line 2755 "awkgram.c" /* yacc.c:1646  */
+#line 2780 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 55:
-#line 954 "awkgram.y" /* yacc.c:1646  */
+  case 56:
+#line 971 "awkgram.y" /* yacc.c:1646  */
     {
                if (! continue_allowed)
                        error_ln((yyvsp[-1])->source_line,
@@ -2765,11 +2790,11 @@ regular_loop:
                (yyval) = add_pending_comment((yyval));
 
          }
-#line 2769 "awkgram.c" /* yacc.c:1646  */
+#line 2794 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 56:
-#line 964 "awkgram.y" /* yacc.c:1646  */
+  case 57:
+#line 981 "awkgram.y" /* yacc.c:1646  */
     {
                /* if inside function (rule = 0), resolve context at run-time */
                if (rule && rule != Rule)
@@ -2779,11 +2804,11 @@ regular_loop:
                (yyval) = list_create((yyvsp[-1]));
                (yyval) = add_pending_comment((yyval));
          }
-#line 2783 "awkgram.c" /* yacc.c:1646  */
+#line 2808 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 57:
-#line 974 "awkgram.y" /* yacc.c:1646  */
+  case 58:
+#line 991 "awkgram.y" /* yacc.c:1646  */
     {
                /* if inside function (rule = 0), resolve context at run-time */
                if (rule == BEGIN || rule == END || rule == ENDFILE)
@@ -2795,11 +2820,11 @@ regular_loop:
                (yyval) = list_create((yyvsp[-1]));
                (yyval) = add_pending_comment((yyval));
          }
-#line 2799 "awkgram.c" /* yacc.c:1646  */
+#line 2824 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 58:
-#line 986 "awkgram.y" /* yacc.c:1646  */
+  case 59:
+#line 1003 "awkgram.y" /* yacc.c:1646  */
     {
                /* Initialize the two possible jump targets, the actual target
                 * is resolved at run-time.
@@ -2815,20 +2840,20 @@ regular_loop:
                        (yyval) = list_append((yyvsp[-1]), (yyvsp[-2]));
                (yyval) = add_pending_comment((yyval));
          }
-#line 2819 "awkgram.c" /* yacc.c:1646  */
+#line 2844 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 59:
-#line 1002 "awkgram.y" /* yacc.c:1646  */
+  case 60:
+#line 1019 "awkgram.y" /* yacc.c:1646  */
     {
                if (! in_function)
                        yyerror(_("`return' used outside function context"));
          }
-#line 2828 "awkgram.c" /* yacc.c:1646  */
+#line 2853 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 60:
-#line 1005 "awkgram.y" /* yacc.c:1646  */
+  case 61:
+#line 1022 "awkgram.y" /* yacc.c:1646  */
     {
                if ((yyvsp[-1]) == NULL) {
                        (yyval) = list_create((yyvsp[-3]));
@@ -2850,17 +2875,17 @@ regular_loop:
                }
                (yyval) = add_pending_comment((yyval));
          }
-#line 2854 "awkgram.c" /* yacc.c:1646  */
+#line 2879 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 62:
-#line 1038 "awkgram.y" /* yacc.c:1646  */
+  case 63:
+#line 1055 "awkgram.y" /* yacc.c:1646  */
     { in_print = true; in_parens = 0; }
-#line 2860 "awkgram.c" /* yacc.c:1646  */
+#line 2885 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 63:
-#line 1039 "awkgram.y" /* yacc.c:1646  */
+  case 64:
+#line 1056 "awkgram.y" /* yacc.c:1646  */
     {
                /*
                 * Optimization: plain `print' has no expression list, so $3 is 
null.
@@ -2958,17 +2983,17 @@ regular_print:
                }
                (yyval) = add_pending_comment((yyval));
          }
-#line 2962 "awkgram.c" /* yacc.c:1646  */
+#line 2987 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 64:
-#line 1137 "awkgram.y" /* yacc.c:1646  */
+  case 65:
+#line 1154 "awkgram.y" /* yacc.c:1646  */
     { sub_counter = 0; }
-#line 2968 "awkgram.c" /* yacc.c:1646  */
+#line 2993 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 65:
-#line 1138 "awkgram.y" /* yacc.c:1646  */
+  case 66:
+#line 1155 "awkgram.y" /* yacc.c:1646  */
     {
                char *arr = (yyvsp[-2])->lextok;
 
@@ -3002,11 +3027,11 @@ regular_print:
                }
                (yyval) = add_pending_comment((yyval));
          }
-#line 3006 "awkgram.c" /* yacc.c:1646  */
+#line 3031 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 66:
-#line 1176 "awkgram.y" /* yacc.c:1646  */
+  case 67:
+#line 1193 "awkgram.y" /* yacc.c:1646  */
     {
                static bool warned = false;
                char *arr = (yyvsp[-1])->lextok;
@@ -3033,55 +3058,55 @@ regular_print:
                }
                (yyval) = add_pending_comment((yyval));
          }
-#line 3037 "awkgram.c" /* yacc.c:1646  */
+#line 3062 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 67:
-#line 1203 "awkgram.y" /* yacc.c:1646  */
+  case 68:
+#line 1220 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = optimize_assignment((yyvsp[0]));
                (yyval) = add_pending_comment((yyval));
          }
-#line 3046 "awkgram.c" /* yacc.c:1646  */
+#line 3071 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 68:
-#line 1211 "awkgram.y" /* yacc.c:1646  */
+  case 69:
+#line 1228 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3052 "awkgram.c" /* yacc.c:1646  */
+#line 3077 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 69:
-#line 1213 "awkgram.y" /* yacc.c:1646  */
+  case 70:
+#line 1230 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3058 "awkgram.c" /* yacc.c:1646  */
+#line 3083 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 70:
-#line 1218 "awkgram.y" /* yacc.c:1646  */
+  case 71:
+#line 1235 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3064 "awkgram.c" /* yacc.c:1646  */
+#line 3089 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 71:
-#line 1220 "awkgram.y" /* yacc.c:1646  */
+  case 72:
+#line 1237 "awkgram.y" /* yacc.c:1646  */
     {
                if ((yyvsp[-1]) == NULL)
                        (yyval) = list_create((yyvsp[0]));
                else
                        (yyval) = list_prepend((yyvsp[-1]), (yyvsp[0]));
          }
-#line 3075 "awkgram.c" /* yacc.c:1646  */
+#line 3100 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 72:
-#line 1227 "awkgram.y" /* yacc.c:1646  */
+  case 73:
+#line 1244 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3081 "awkgram.c" /* yacc.c:1646  */
+#line 3106 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 73:
-#line 1232 "awkgram.y" /* yacc.c:1646  */
+  case 74:
+#line 1249 "awkgram.y" /* yacc.c:1646  */
     {
                INSTRUCTION *casestmt = (yyvsp[0]);
                if ((yyvsp[0]) == NULL)
@@ -3093,11 +3118,11 @@ regular_print:
                bcfree((yyvsp[-2]));
                (yyval) = (yyvsp[-4]);
          }
-#line 3097 "awkgram.c" /* yacc.c:1646  */
+#line 3122 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 74:
-#line 1244 "awkgram.y" /* yacc.c:1646  */
+  case 75:
+#line 1261 "awkgram.y" /* yacc.c:1646  */
     {
                INSTRUCTION *casestmt = (yyvsp[0]);
                if ((yyvsp[0]) == NULL)
@@ -3108,17 +3133,17 @@ regular_print:
                (yyvsp[-3])->case_stmt = casestmt;
                (yyval) = (yyvsp[-3]);
          }
-#line 3112 "awkgram.c" /* yacc.c:1646  */
+#line 3137 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 75:
-#line 1258 "awkgram.y" /* yacc.c:1646  */
+  case 76:
+#line 1275 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = (yyvsp[0]); }
-#line 3118 "awkgram.c" /* yacc.c:1646  */
+#line 3143 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 76:
-#line 1260 "awkgram.y" /* yacc.c:1646  */
+  case 77:
+#line 1277 "awkgram.y" /* yacc.c:1646  */
     {
                NODE *n = (yyvsp[0])->memory;
                (void) force_number(n);
@@ -3126,28 +3151,28 @@ regular_print:
                bcfree((yyvsp[-1]));
                (yyval) = (yyvsp[0]);
          }
-#line 3130 "awkgram.c" /* yacc.c:1646  */
+#line 3155 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 77:
-#line 1268 "awkgram.y" /* yacc.c:1646  */
+  case 78:
+#line 1285 "awkgram.y" /* yacc.c:1646  */
     {
                NODE *n = (yyvsp[0])->lasti->memory;
                bcfree((yyvsp[-1]));
                add_sign_to_num(n, '+');
                (yyval) = (yyvsp[0]);
          }
-#line 3141 "awkgram.c" /* yacc.c:1646  */
+#line 3166 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 78:
-#line 1275 "awkgram.y" /* yacc.c:1646  */
+  case 79:
+#line 1292 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = (yyvsp[0]); }
-#line 3147 "awkgram.c" /* yacc.c:1646  */
+#line 3172 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 79:
-#line 1277 "awkgram.y" /* yacc.c:1646  */
+  case 80:
+#line 1294 "awkgram.y" /* yacc.c:1646  */
     {
                if ((yyvsp[0])->memory->type == Node_regex)
                        (yyvsp[0])->opcode = Op_push_re;
@@ -3155,57 +3180,57 @@ regular_print:
                        (yyvsp[0])->opcode = Op_push;
                (yyval) = (yyvsp[0]);
          }
-#line 3159 "awkgram.c" /* yacc.c:1646  */
+#line 3184 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 80:
-#line 1285 "awkgram.y" /* yacc.c:1646  */
+  case 81:
+#line 1302 "awkgram.y" /* yacc.c:1646  */
     {
                assert(((yyvsp[0])->memory->flags & REGEX) == REGEX);
                (yyvsp[0])->opcode = Op_push_re;
                (yyval) = (yyvsp[0]);
          }
-#line 3169 "awkgram.c" /* yacc.c:1646  */
+#line 3194 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 81:
-#line 1294 "awkgram.y" /* yacc.c:1646  */
+  case 82:
+#line 1311 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3175 "awkgram.c" /* yacc.c:1646  */
+#line 3200 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 82:
-#line 1296 "awkgram.y" /* yacc.c:1646  */
+  case 83:
+#line 1313 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3181 "awkgram.c" /* yacc.c:1646  */
+#line 3206 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 84:
-#line 1306 "awkgram.y" /* yacc.c:1646  */
+  case 85:
+#line 1323 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = (yyvsp[-1]);
          }
-#line 3189 "awkgram.c" /* yacc.c:1646  */
+#line 3214 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 85:
-#line 1313 "awkgram.y" /* yacc.c:1646  */
+  case 86:
+#line 1330 "awkgram.y" /* yacc.c:1646  */
     {
                in_print = false;
                in_parens = 0;
                (yyval) = NULL;
          }
-#line 3199 "awkgram.c" /* yacc.c:1646  */
+#line 3224 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 86:
-#line 1318 "awkgram.y" /* yacc.c:1646  */
+  case 87:
+#line 1335 "awkgram.y" /* yacc.c:1646  */
     { in_print = false; in_parens = 0; }
-#line 3205 "awkgram.c" /* yacc.c:1646  */
+#line 3230 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 87:
-#line 1319 "awkgram.y" /* yacc.c:1646  */
+  case 88:
+#line 1336 "awkgram.y" /* yacc.c:1646  */
     {
                if ((yyvsp[-2])->redir_type == redirect_twoway
                        && (yyvsp[0])->lasti->opcode == Op_K_getline_redir
@@ -3213,63 +3238,63 @@ regular_print:
                        yyerror(_("multistage two-way pipelines don't work"));
                (yyval) = list_prepend((yyvsp[0]), (yyvsp[-2]));
          }
-#line 3217 "awkgram.c" /* yacc.c:1646  */
+#line 3242 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 88:
-#line 1330 "awkgram.y" /* yacc.c:1646  */
+  case 89:
+#line 1347 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = mk_condition((yyvsp[-3]), (yyvsp[-5]), (yyvsp[0]), 
NULL, NULL);
          }
-#line 3225 "awkgram.c" /* yacc.c:1646  */
+#line 3250 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 89:
-#line 1335 "awkgram.y" /* yacc.c:1646  */
+  case 90:
+#line 1352 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = mk_condition((yyvsp[-6]), (yyvsp[-8]), (yyvsp[-3]), 
(yyvsp[-2]), (yyvsp[0]));
          }
-#line 3233 "awkgram.c" /* yacc.c:1646  */
+#line 3258 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 94:
-#line 1352 "awkgram.y" /* yacc.c:1646  */
+  case 95:
+#line 1369 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3239 "awkgram.c" /* yacc.c:1646  */
+#line 3264 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 95:
-#line 1354 "awkgram.y" /* yacc.c:1646  */
+  case 96:
+#line 1371 "awkgram.y" /* yacc.c:1646  */
     {
                bcfree((yyvsp[-1]));
                (yyval) = (yyvsp[0]);
          }
-#line 3248 "awkgram.c" /* yacc.c:1646  */
+#line 3273 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 96:
-#line 1362 "awkgram.y" /* yacc.c:1646  */
+  case 97:
+#line 1379 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3254 "awkgram.c" /* yacc.c:1646  */
+#line 3279 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 97:
-#line 1364 "awkgram.y" /* yacc.c:1646  */
+  case 98:
+#line 1381 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3260 "awkgram.c" /* yacc.c:1646  */
+#line 3285 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 98:
-#line 1369 "awkgram.y" /* yacc.c:1646  */
+  case 99:
+#line 1386 "awkgram.y" /* yacc.c:1646  */
     {
                (yyvsp[0])->param_count = 0;
                (yyval) = list_create((yyvsp[0]));
          }
-#line 3269 "awkgram.c" /* yacc.c:1646  */
+#line 3294 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 99:
-#line 1374 "awkgram.y" /* yacc.c:1646  */
+  case 100:
+#line 1391 "awkgram.y" /* yacc.c:1646  */
     {
                if ((yyvsp[-2]) != NULL && (yyvsp[0]) != NULL) {
                        (yyvsp[0])->param_count =  
(yyvsp[-2])->lasti->param_count + 1;
@@ -3278,74 +3303,74 @@ regular_print:
                } else
                        (yyval) = NULL;
          }
-#line 3282 "awkgram.c" /* yacc.c:1646  */
+#line 3307 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 100:
-#line 1383 "awkgram.y" /* yacc.c:1646  */
+  case 101:
+#line 1400 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3288 "awkgram.c" /* yacc.c:1646  */
+#line 3313 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 101:
-#line 1385 "awkgram.y" /* yacc.c:1646  */
+  case 102:
+#line 1402 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[-1]); }
-#line 3294 "awkgram.c" /* yacc.c:1646  */
+#line 3319 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 102:
-#line 1387 "awkgram.y" /* yacc.c:1646  */
+  case 103:
+#line 1404 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[-2]); }
-#line 3300 "awkgram.c" /* yacc.c:1646  */
+#line 3325 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 103:
-#line 1393 "awkgram.y" /* yacc.c:1646  */
+  case 104:
+#line 1410 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3306 "awkgram.c" /* yacc.c:1646  */
+#line 3331 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 104:
-#line 1395 "awkgram.y" /* yacc.c:1646  */
+  case 105:
+#line 1412 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3312 "awkgram.c" /* yacc.c:1646  */
+#line 3337 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 105:
-#line 1400 "awkgram.y" /* yacc.c:1646  */
+  case 106:
+#line 1417 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3318 "awkgram.c" /* yacc.c:1646  */
+#line 3343 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 106:
-#line 1402 "awkgram.y" /* yacc.c:1646  */
+  case 107:
+#line 1419 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3324 "awkgram.c" /* yacc.c:1646  */
+#line 3349 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 107:
-#line 1407 "awkgram.y" /* yacc.c:1646  */
+  case 108:
+#line 1424 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = mk_expression_list(NULL, (yyvsp[0])); }
-#line 3330 "awkgram.c" /* yacc.c:1646  */
+#line 3355 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 108:
-#line 1409 "awkgram.y" /* yacc.c:1646  */
+  case 109:
+#line 1426 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0]));
                yyerrok;
          }
-#line 3339 "awkgram.c" /* yacc.c:1646  */
+#line 3364 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 109:
-#line 1414 "awkgram.y" /* yacc.c:1646  */
+  case 110:
+#line 1431 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3345 "awkgram.c" /* yacc.c:1646  */
+#line 3370 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 110:
-#line 1416 "awkgram.y" /* yacc.c:1646  */
+  case 111:
+#line 1433 "awkgram.y" /* yacc.c:1646  */
     {
                /*
                 * Returning the expression list instead of NULL lets
@@ -3353,62 +3378,62 @@ regular_print:
                 */
                (yyval) = (yyvsp[-1]);
          }
-#line 3357 "awkgram.c" /* yacc.c:1646  */
+#line 3382 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 111:
-#line 1424 "awkgram.y" /* yacc.c:1646  */
+  case 112:
+#line 1441 "awkgram.y" /* yacc.c:1646  */
     {
                /* Ditto */
                (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0]));
          }
-#line 3366 "awkgram.c" /* yacc.c:1646  */
+#line 3391 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 112:
-#line 1429 "awkgram.y" /* yacc.c:1646  */
+  case 113:
+#line 1446 "awkgram.y" /* yacc.c:1646  */
     {
                /* Ditto */
                (yyval) = (yyvsp[-2]);
          }
-#line 3375 "awkgram.c" /* yacc.c:1646  */
+#line 3400 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 113:
-#line 1437 "awkgram.y" /* yacc.c:1646  */
+  case 114:
+#line 1454 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3381 "awkgram.c" /* yacc.c:1646  */
+#line 3406 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 114:
-#line 1439 "awkgram.y" /* yacc.c:1646  */
+  case 115:
+#line 1456 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3387 "awkgram.c" /* yacc.c:1646  */
+#line 3412 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 115:
-#line 1444 "awkgram.y" /* yacc.c:1646  */
+  case 116:
+#line 1461 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = mk_expression_list(NULL, (yyvsp[0])); }
-#line 3393 "awkgram.c" /* yacc.c:1646  */
+#line 3418 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 116:
-#line 1446 "awkgram.y" /* yacc.c:1646  */
+  case 117:
+#line 1463 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0]));
                yyerrok;
          }
-#line 3402 "awkgram.c" /* yacc.c:1646  */
+#line 3427 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 117:
-#line 1451 "awkgram.y" /* yacc.c:1646  */
+  case 118:
+#line 1468 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 3408 "awkgram.c" /* yacc.c:1646  */
+#line 3433 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 118:
-#line 1453 "awkgram.y" /* yacc.c:1646  */
+  case 119:
+#line 1470 "awkgram.y" /* yacc.c:1646  */
     {
                /*
                 * Returning the expression list instead of NULL lets
@@ -3416,72 +3441,72 @@ regular_print:
                 */
                (yyval) = (yyvsp[-1]);
          }
-#line 3420 "awkgram.c" /* yacc.c:1646  */
+#line 3445 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 119:
-#line 1461 "awkgram.y" /* yacc.c:1646  */
+  case 120:
+#line 1478 "awkgram.y" /* yacc.c:1646  */
     {
                /* Ditto */
                (yyval) = mk_expression_list((yyvsp[-2]), (yyvsp[0]));
          }
-#line 3429 "awkgram.c" /* yacc.c:1646  */
+#line 3454 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 120:
-#line 1466 "awkgram.y" /* yacc.c:1646  */
+  case 121:
+#line 1483 "awkgram.y" /* yacc.c:1646  */
     {
                /* Ditto */
                (yyval) = (yyvsp[-2]);
          }
-#line 3438 "awkgram.c" /* yacc.c:1646  */
+#line 3463 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 121:
-#line 1473 "awkgram.y" /* yacc.c:1646  */
+  case 122:
+#line 1490 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3444 "awkgram.c" /* yacc.c:1646  */
+#line 3469 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 122:
-#line 1474 "awkgram.y" /* yacc.c:1646  */
+  case 123:
+#line 1491 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = list_create((yyvsp[0])); }
-#line 3450 "awkgram.c" /* yacc.c:1646  */
+#line 3475 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 123:
-#line 1480 "awkgram.y" /* yacc.c:1646  */
+  case 124:
+#line 1497 "awkgram.y" /* yacc.c:1646  */
     {
                if (do_lint && (yyvsp[0])->lasti->opcode == Op_match_rec)
                        lintwarn_ln((yyvsp[-1])->source_line,
                                _("regular expression on right of assignment"));
                (yyval) = mk_assignment((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1]));
          }
-#line 3461 "awkgram.c" /* yacc.c:1646  */
+#line 3486 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 124:
-#line 1487 "awkgram.y" /* yacc.c:1646  */
+  case 125:
+#line 1504 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = mk_assignment((yyvsp[-2]), list_create((yyvsp[0])), 
(yyvsp[-1]));
          }
-#line 3469 "awkgram.c" /* yacc.c:1646  */
+#line 3494 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 125:
-#line 1491 "awkgram.y" /* yacc.c:1646  */
+  case 126:
+#line 1508 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = mk_boolean((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3475 "awkgram.c" /* yacc.c:1646  */
+#line 3500 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 126:
-#line 1493 "awkgram.y" /* yacc.c:1646  */
+  case 127:
+#line 1510 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = mk_boolean((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3481 "awkgram.c" /* yacc.c:1646  */
+#line 3506 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 127:
-#line 1495 "awkgram.y" /* yacc.c:1646  */
+  case 128:
+#line 1512 "awkgram.y" /* yacc.c:1646  */
     {
                if ((yyvsp[-2])->lasti->opcode == Op_match_rec)
                        warning_ln((yyvsp[-1])->source_line,
@@ -3494,11 +3519,11 @@ regular_print:
                bcfree((yyvsp[0]));
                (yyval) = list_append((yyvsp[-2]), (yyvsp[-1]));
          }
-#line 3498 "awkgram.c" /* yacc.c:1646  */
+#line 3523 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 128:
-#line 1508 "awkgram.y" /* yacc.c:1646  */
+  case 129:
+#line 1525 "awkgram.y" /* yacc.c:1646  */
     {
                if ((yyvsp[-2])->lasti->opcode == Op_match_rec)
                        warning_ln((yyvsp[-1])->source_line,
@@ -3515,11 +3540,11 @@ regular_print:
                        (yyval) = list_append(list_merge((yyvsp[-2]), 
(yyvsp[0])), (yyvsp[-1]));
                }
          }
-#line 3519 "awkgram.c" /* yacc.c:1646  */
+#line 3544 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 129:
-#line 1525 "awkgram.y" /* yacc.c:1646  */
+  case 130:
+#line 1542 "awkgram.y" /* yacc.c:1646  */
     {
                if (do_lint_old)
                        warning_ln((yyvsp[-1])->source_line,
@@ -3529,91 +3554,91 @@ regular_print:
                (yyvsp[-1])->expr_count = 1;
                (yyval) = list_append(list_merge((yyvsp[-2]), (yyvsp[0])), 
(yyvsp[-1]));
          }
-#line 3533 "awkgram.c" /* yacc.c:1646  */
+#line 3558 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 130:
-#line 1535 "awkgram.y" /* yacc.c:1646  */
+  case 131:
+#line 1552 "awkgram.y" /* yacc.c:1646  */
     {
                if (do_lint && (yyvsp[0])->lasti->opcode == Op_match_rec)
                        lintwarn_ln((yyvsp[-1])->source_line,
                                _("regular expression on right of comparison"));
                (yyval) = list_append(list_merge((yyvsp[-2]), (yyvsp[0])), 
(yyvsp[-1]));
          }
-#line 3544 "awkgram.c" /* yacc.c:1646  */
-    break;
-
-  case 131:
-#line 1542 "awkgram.y" /* yacc.c:1646  */
-    { (yyval) = mk_condition((yyvsp[-4]), (yyvsp[-3]), (yyvsp[-2]), 
(yyvsp[-1]), (yyvsp[0])); }
-#line 3550 "awkgram.c" /* yacc.c:1646  */
+#line 3569 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 132:
-#line 1544 "awkgram.y" /* yacc.c:1646  */
-    { (yyval) = (yyvsp[0]); }
-#line 3556 "awkgram.c" /* yacc.c:1646  */
+#line 1559 "awkgram.y" /* yacc.c:1646  */
+    { (yyval) = mk_condition((yyvsp[-4]), (yyvsp[-3]), (yyvsp[-2]), 
(yyvsp[-1]), (yyvsp[0])); }
+#line 3575 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 133:
-#line 1549 "awkgram.y" /* yacc.c:1646  */
+#line 1561 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3562 "awkgram.c" /* yacc.c:1646  */
+#line 3581 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 134:
-#line 1551 "awkgram.y" /* yacc.c:1646  */
+#line 1566 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3568 "awkgram.c" /* yacc.c:1646  */
+#line 3587 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 135:
-#line 1553 "awkgram.y" /* yacc.c:1646  */
+#line 1568 "awkgram.y" /* yacc.c:1646  */
+    { (yyval) = (yyvsp[0]); }
+#line 3593 "awkgram.c" /* yacc.c:1646  */
+    break;
+
+  case 136:
+#line 1570 "awkgram.y" /* yacc.c:1646  */
     {
                (yyvsp[0])->opcode = Op_assign_quotient;
                (yyval) = (yyvsp[0]);
          }
-#line 3577 "awkgram.c" /* yacc.c:1646  */
-    break;
-
-  case 136:
-#line 1561 "awkgram.y" /* yacc.c:1646  */
-    { (yyval) = (yyvsp[0]); }
-#line 3583 "awkgram.c" /* yacc.c:1646  */
+#line 3602 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 137:
-#line 1563 "awkgram.y" /* yacc.c:1646  */
+#line 1578 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3589 "awkgram.c" /* yacc.c:1646  */
+#line 3608 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 138:
-#line 1568 "awkgram.y" /* yacc.c:1646  */
+#line 1580 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3595 "awkgram.c" /* yacc.c:1646  */
+#line 3614 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 139:
-#line 1570 "awkgram.y" /* yacc.c:1646  */
+#line 1585 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3601 "awkgram.c" /* yacc.c:1646  */
+#line 3620 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 140:
-#line 1575 "awkgram.y" /* yacc.c:1646  */
+#line 1587 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3607 "awkgram.c" /* yacc.c:1646  */
+#line 3626 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 141:
-#line 1577 "awkgram.y" /* yacc.c:1646  */
+#line 1592 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 3613 "awkgram.c" /* yacc.c:1646  */
+#line 3632 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 142:
-#line 1579 "awkgram.y" /* yacc.c:1646  */
+#line 1594 "awkgram.y" /* yacc.c:1646  */
+    { (yyval) = (yyvsp[0]); }
+#line 3638 "awkgram.c" /* yacc.c:1646  */
+    break;
+
+  case 143:
+#line 1596 "awkgram.y" /* yacc.c:1646  */
     {
                int count = 2;
                bool is_simple_var = false;
@@ -3666,47 +3691,47 @@ regular_print:
                                max_args = count;
                }
          }
-#line 3670 "awkgram.c" /* yacc.c:1646  */
-    break;
-
-  case 144:
-#line 1637 "awkgram.y" /* yacc.c:1646  */
-    { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3676 "awkgram.c" /* yacc.c:1646  */
+#line 3695 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 145:
-#line 1639 "awkgram.y" /* yacc.c:1646  */
+#line 1654 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3682 "awkgram.c" /* yacc.c:1646  */
+#line 3701 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 146:
-#line 1641 "awkgram.y" /* yacc.c:1646  */
+#line 1656 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3688 "awkgram.c" /* yacc.c:1646  */
+#line 3707 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 147:
-#line 1643 "awkgram.y" /* yacc.c:1646  */
+#line 1658 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3694 "awkgram.c" /* yacc.c:1646  */
+#line 3713 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 148:
-#line 1645 "awkgram.y" /* yacc.c:1646  */
+#line 1660 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3700 "awkgram.c" /* yacc.c:1646  */
+#line 3719 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 149:
-#line 1647 "awkgram.y" /* yacc.c:1646  */
+#line 1662 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3706 "awkgram.c" /* yacc.c:1646  */
+#line 3725 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 150:
-#line 1649 "awkgram.y" /* yacc.c:1646  */
+#line 1664 "awkgram.y" /* yacc.c:1646  */
+    { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
+#line 3731 "awkgram.c" /* yacc.c:1646  */
+    break;
+
+  case 151:
+#line 1666 "awkgram.y" /* yacc.c:1646  */
     {
                /*
                 * In BEGINFILE/ENDFILE, allow `getline [var] < file'
@@ -3720,29 +3745,29 @@ regular_print:
                                _("non-redirected `getline' undefined inside 
END action"));
                (yyval) = mk_getline((yyvsp[-2]), (yyvsp[-1]), (yyvsp[0]), 
redirect_input);
          }
-#line 3724 "awkgram.c" /* yacc.c:1646  */
+#line 3749 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 151:
-#line 1663 "awkgram.y" /* yacc.c:1646  */
+  case 152:
+#line 1680 "awkgram.y" /* yacc.c:1646  */
     {
                (yyvsp[0])->opcode = Op_postincrement;
                (yyval) = mk_assignment((yyvsp[-1]), NULL, (yyvsp[0]));
          }
-#line 3733 "awkgram.c" /* yacc.c:1646  */
+#line 3758 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 152:
-#line 1668 "awkgram.y" /* yacc.c:1646  */
+  case 153:
+#line 1685 "awkgram.y" /* yacc.c:1646  */
     {
                (yyvsp[0])->opcode = Op_postdecrement;
                (yyval) = mk_assignment((yyvsp[-1]), NULL, (yyvsp[0]));
          }
-#line 3742 "awkgram.c" /* yacc.c:1646  */
+#line 3767 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 153:
-#line 1673 "awkgram.y" /* yacc.c:1646  */
+  case 154:
+#line 1690 "awkgram.y" /* yacc.c:1646  */
     {
                if (do_lint_old) {
                    warning_ln((yyvsp[-1])->source_line,
@@ -3762,64 +3787,64 @@ regular_print:
                        (yyval) = list_append(list_merge(t, (yyvsp[0])), 
(yyvsp[-1]));
                }
          }
-#line 3766 "awkgram.c" /* yacc.c:1646  */
+#line 3791 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 154:
-#line 1698 "awkgram.y" /* yacc.c:1646  */
+  case 155:
+#line 1715 "awkgram.y" /* yacc.c:1646  */
     {
                  (yyval) = mk_getline((yyvsp[-1]), (yyvsp[0]), (yyvsp[-3]), 
(yyvsp[-2])->redir_type);
                  bcfree((yyvsp[-2]));
                }
-#line 3775 "awkgram.c" /* yacc.c:1646  */
-    break;
-
-  case 155:
-#line 1704 "awkgram.y" /* yacc.c:1646  */
-    { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3781 "awkgram.c" /* yacc.c:1646  */
+#line 3800 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 156:
-#line 1706 "awkgram.y" /* yacc.c:1646  */
+#line 1721 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3787 "awkgram.c" /* yacc.c:1646  */
+#line 3806 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 157:
-#line 1708 "awkgram.y" /* yacc.c:1646  */
+#line 1723 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3793 "awkgram.c" /* yacc.c:1646  */
+#line 3812 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 158:
-#line 1710 "awkgram.y" /* yacc.c:1646  */
+#line 1725 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3799 "awkgram.c" /* yacc.c:1646  */
+#line 3818 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 159:
-#line 1712 "awkgram.y" /* yacc.c:1646  */
+#line 1727 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3805 "awkgram.c" /* yacc.c:1646  */
+#line 3824 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 160:
-#line 1714 "awkgram.y" /* yacc.c:1646  */
+#line 1729 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
-#line 3811 "awkgram.c" /* yacc.c:1646  */
+#line 3830 "awkgram.c" /* yacc.c:1646  */
     break;
 
   case 161:
-#line 1719 "awkgram.y" /* yacc.c:1646  */
+#line 1731 "awkgram.y" /* yacc.c:1646  */
+    { (yyval) = mk_binary((yyvsp[-2]), (yyvsp[0]), (yyvsp[-1])); }
+#line 3836 "awkgram.c" /* yacc.c:1646  */
+    break;
+
+  case 162:
+#line 1736 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = list_create((yyvsp[0]));
          }
-#line 3819 "awkgram.c" /* yacc.c:1646  */
+#line 3844 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 162:
-#line 1723 "awkgram.y" /* yacc.c:1646  */
+  case 163:
+#line 1740 "awkgram.y" /* yacc.c:1646  */
     {
                if ((yyvsp[0])->opcode == Op_match_rec) {
                        (yyvsp[0])->opcode = Op_nomatch;
@@ -3851,37 +3876,37 @@ regular_print:
                        }
                }
           }
-#line 3855 "awkgram.c" /* yacc.c:1646  */
+#line 3880 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 163:
-#line 1755 "awkgram.y" /* yacc.c:1646  */
+  case 164:
+#line 1772 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[-1]); }
-#line 3861 "awkgram.c" /* yacc.c:1646  */
+#line 3886 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 164:
-#line 1757 "awkgram.y" /* yacc.c:1646  */
+  case 165:
+#line 1774 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = snode((yyvsp[-1]), (yyvsp[-3]));
                if ((yyval) == NULL)
                        YYABORT;
          }
-#line 3871 "awkgram.c" /* yacc.c:1646  */
+#line 3896 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 165:
-#line 1763 "awkgram.y" /* yacc.c:1646  */
+  case 166:
+#line 1780 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = snode((yyvsp[-1]), (yyvsp[-3]));
                if ((yyval) == NULL)
                        YYABORT;
          }
-#line 3881 "awkgram.c" /* yacc.c:1646  */
+#line 3906 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 166:
-#line 1769 "awkgram.y" /* yacc.c:1646  */
+  case 167:
+#line 1786 "awkgram.y" /* yacc.c:1646  */
     {
                static bool warned = false;
 
@@ -3894,45 +3919,45 @@ regular_print:
                if ((yyval) == NULL)
                        YYABORT;
          }
-#line 3898 "awkgram.c" /* yacc.c:1646  */
+#line 3923 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 169:
-#line 1784 "awkgram.y" /* yacc.c:1646  */
+  case 170:
+#line 1801 "awkgram.y" /* yacc.c:1646  */
     {
                (yyvsp[-1])->opcode = Op_preincrement;
                (yyval) = mk_assignment((yyvsp[0]), NULL, (yyvsp[-1]));
          }
-#line 3907 "awkgram.c" /* yacc.c:1646  */
+#line 3932 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 170:
-#line 1789 "awkgram.y" /* yacc.c:1646  */
+  case 171:
+#line 1806 "awkgram.y" /* yacc.c:1646  */
     {
                (yyvsp[-1])->opcode = Op_predecrement;
                (yyval) = mk_assignment((yyvsp[0]), NULL, (yyvsp[-1]));
          }
-#line 3916 "awkgram.c" /* yacc.c:1646  */
+#line 3941 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 171:
-#line 1794 "awkgram.y" /* yacc.c:1646  */
+  case 172:
+#line 1811 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = list_create((yyvsp[0]));
          }
-#line 3924 "awkgram.c" /* yacc.c:1646  */
+#line 3949 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 172:
-#line 1798 "awkgram.y" /* yacc.c:1646  */
+  case 173:
+#line 1815 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = list_create((yyvsp[0]));
          }
-#line 3932 "awkgram.c" /* yacc.c:1646  */
+#line 3957 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 173:
-#line 1802 "awkgram.y" /* yacc.c:1646  */
+  case 174:
+#line 1819 "awkgram.y" /* yacc.c:1646  */
     {
                if ((yyvsp[0])->lasti->opcode == Op_push_i
                        && ((yyvsp[0])->lasti->memory->flags & STRING) == 0
@@ -3947,11 +3972,11 @@ regular_print:
                        (yyval) = list_append((yyvsp[0]), (yyvsp[-1]));
                }
          }
-#line 3951 "awkgram.c" /* yacc.c:1646  */
+#line 3976 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 174:
-#line 1817 "awkgram.y" /* yacc.c:1646  */
+  case 175:
+#line 1834 "awkgram.y" /* yacc.c:1646  */
     {
                if ((yyvsp[0])->lasti->opcode == Op_push_i
                        && ((yyvsp[0])->lasti->memory->flags & STRING) == 0
@@ -3969,20 +3994,20 @@ regular_print:
                        (yyval) = list_append((yyvsp[0]), (yyvsp[-1]));
                }
          }
-#line 3973 "awkgram.c" /* yacc.c:1646  */
+#line 3998 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 175:
-#line 1838 "awkgram.y" /* yacc.c:1646  */
+  case 176:
+#line 1855 "awkgram.y" /* yacc.c:1646  */
     {
                func_use((yyvsp[0])->lasti->func_name, FUNC_USE);
                (yyval) = (yyvsp[0]);
          }
-#line 3982 "awkgram.c" /* yacc.c:1646  */
+#line 4007 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 176:
-#line 1843 "awkgram.y" /* yacc.c:1646  */
+  case 177:
+#line 1860 "awkgram.y" /* yacc.c:1646  */
     {
                /* indirect function call */
                INSTRUCTION *f, *t;
@@ -4016,11 +4041,11 @@ regular_print:
                (yyval) = list_prepend((yyvsp[0]), t);
                at_seen = false;
          }
-#line 4020 "awkgram.c" /* yacc.c:1646  */
+#line 4045 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 177:
-#line 1880 "awkgram.y" /* yacc.c:1646  */
+  case 178:
+#line 1897 "awkgram.y" /* yacc.c:1646  */
     {
                NODE *n;
 
@@ -4045,49 +4070,49 @@ regular_print:
                        (yyval) = list_append(t, (yyvsp[-3]));
                }
          }
-#line 4049 "awkgram.c" /* yacc.c:1646  */
+#line 4074 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 178:
-#line 1908 "awkgram.y" /* yacc.c:1646  */
+  case 179:
+#line 1925 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 4055 "awkgram.c" /* yacc.c:1646  */
+#line 4080 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 179:
-#line 1910 "awkgram.y" /* yacc.c:1646  */
+  case 180:
+#line 1927 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); }
-#line 4061 "awkgram.c" /* yacc.c:1646  */
+#line 4086 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 180:
-#line 1915 "awkgram.y" /* yacc.c:1646  */
+  case 181:
+#line 1932 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 4067 "awkgram.c" /* yacc.c:1646  */
+#line 4092 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 181:
-#line 1917 "awkgram.y" /* yacc.c:1646  */
+  case 182:
+#line 1934 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[-1]); }
-#line 4073 "awkgram.c" /* yacc.c:1646  */
+#line 4098 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 182:
-#line 1922 "awkgram.y" /* yacc.c:1646  */
+  case 183:
+#line 1939 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = (yyvsp[0]); }
-#line 4079 "awkgram.c" /* yacc.c:1646  */
+#line 4104 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 183:
-#line 1924 "awkgram.y" /* yacc.c:1646  */
+  case 184:
+#line 1941 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = list_merge((yyvsp[-1]), (yyvsp[0]));
          }
-#line 4087 "awkgram.c" /* yacc.c:1646  */
+#line 4112 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 184:
-#line 1931 "awkgram.y" /* yacc.c:1646  */
+  case 185:
+#line 1948 "awkgram.y" /* yacc.c:1646  */
     {
                INSTRUCTION *ip = (yyvsp[0])->lasti;
                int count = ip->sub_count;      /* # of SUBSEP-seperated 
expressions */
@@ -4101,11 +4126,11 @@ regular_print:
                sub_counter++;  /* count # of dimensions */
                (yyval) = (yyvsp[0]);
          }
-#line 4105 "awkgram.c" /* yacc.c:1646  */
+#line 4130 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 185:
-#line 1948 "awkgram.y" /* yacc.c:1646  */
+  case 186:
+#line 1965 "awkgram.y" /* yacc.c:1646  */
     {
                INSTRUCTION *t = (yyvsp[-1]);
                if ((yyvsp[-1]) == NULL) {
@@ -4119,31 +4144,31 @@ regular_print:
                        (yyvsp[0])->sub_count = count_expressions(&t, false);
                (yyval) = list_append(t, (yyvsp[0]));
          }
-#line 4123 "awkgram.c" /* yacc.c:1646  */
+#line 4148 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 186:
-#line 1965 "awkgram.y" /* yacc.c:1646  */
+  case 187:
+#line 1982 "awkgram.y" /* yacc.c:1646  */
     {  (yyval) = (yyvsp[0]); }
-#line 4129 "awkgram.c" /* yacc.c:1646  */
+#line 4154 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 187:
-#line 1967 "awkgram.y" /* yacc.c:1646  */
+  case 188:
+#line 1984 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = list_merge((yyvsp[-1]), (yyvsp[0]));
          }
-#line 4137 "awkgram.c" /* yacc.c:1646  */
+#line 4162 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 188:
-#line 1974 "awkgram.y" /* yacc.c:1646  */
+  case 189:
+#line 1991 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[-1]); }
-#line 4143 "awkgram.c" /* yacc.c:1646  */
+#line 4168 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 189:
-#line 1979 "awkgram.y" /* yacc.c:1646  */
+  case 190:
+#line 1996 "awkgram.y" /* yacc.c:1646  */
     {
                char *var_name = (yyvsp[0])->lextok;
 
@@ -4151,22 +4176,22 @@ regular_print:
                (yyvsp[0])->memory = variable((yyvsp[0])->source_line, 
var_name, Node_var_new);
                (yyval) = list_create((yyvsp[0]));
          }
-#line 4155 "awkgram.c" /* yacc.c:1646  */
+#line 4180 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 190:
-#line 1987 "awkgram.y" /* yacc.c:1646  */
+  case 191:
+#line 2004 "awkgram.y" /* yacc.c:1646  */
     {
                char *arr = (yyvsp[-1])->lextok;
                (yyvsp[-1])->memory = variable((yyvsp[-1])->source_line, arr, 
Node_var_new);
                (yyvsp[-1])->opcode = Op_push_array;
                (yyval) = list_prepend((yyvsp[0]), (yyvsp[-1]));
          }
-#line 4166 "awkgram.c" /* yacc.c:1646  */
+#line 4191 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 191:
-#line 1997 "awkgram.y" /* yacc.c:1646  */
+  case 192:
+#line 2014 "awkgram.y" /* yacc.c:1646  */
     {
                INSTRUCTION *ip = (yyvsp[0])->nexti;
                if (ip->opcode == Op_push
@@ -4178,73 +4203,73 @@ regular_print:
                } else
                        (yyval) = (yyvsp[0]);
          }
-#line 4182 "awkgram.c" /* yacc.c:1646  */
+#line 4207 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 192:
-#line 2009 "awkgram.y" /* yacc.c:1646  */
+  case 193:
+#line 2026 "awkgram.y" /* yacc.c:1646  */
     {
                (yyval) = list_append((yyvsp[-1]), (yyvsp[-2]));
                if ((yyvsp[0]) != NULL)
                        mk_assignment((yyvsp[-1]), NULL, (yyvsp[0]));
          }
-#line 4192 "awkgram.c" /* yacc.c:1646  */
+#line 4217 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 193:
-#line 2018 "awkgram.y" /* yacc.c:1646  */
+  case 194:
+#line 2035 "awkgram.y" /* yacc.c:1646  */
     {
                (yyvsp[0])->opcode = Op_postincrement;
          }
-#line 4200 "awkgram.c" /* yacc.c:1646  */
+#line 4225 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 194:
-#line 2022 "awkgram.y" /* yacc.c:1646  */
+  case 195:
+#line 2039 "awkgram.y" /* yacc.c:1646  */
     {
                (yyvsp[0])->opcode = Op_postdecrement;
          }
-#line 4208 "awkgram.c" /* yacc.c:1646  */
+#line 4233 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 195:
-#line 2025 "awkgram.y" /* yacc.c:1646  */
+  case 196:
+#line 2042 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = NULL; }
-#line 4214 "awkgram.c" /* yacc.c:1646  */
+#line 4239 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 197:
-#line 2033 "awkgram.y" /* yacc.c:1646  */
+  case 198:
+#line 2050 "awkgram.y" /* yacc.c:1646  */
     { yyerrok; }
-#line 4220 "awkgram.c" /* yacc.c:1646  */
+#line 4245 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 198:
-#line 2037 "awkgram.y" /* yacc.c:1646  */
+  case 199:
+#line 2054 "awkgram.y" /* yacc.c:1646  */
     { yyerrok; }
-#line 4226 "awkgram.c" /* yacc.c:1646  */
+#line 4251 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 201:
-#line 2046 "awkgram.y" /* yacc.c:1646  */
+  case 202:
+#line 2063 "awkgram.y" /* yacc.c:1646  */
     { yyerrok; }
-#line 4232 "awkgram.c" /* yacc.c:1646  */
+#line 4257 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 202:
-#line 2050 "awkgram.y" /* yacc.c:1646  */
+  case 203:
+#line 2067 "awkgram.y" /* yacc.c:1646  */
     { (yyval) = (yyvsp[0]); yyerrok; }
-#line 4238 "awkgram.c" /* yacc.c:1646  */
+#line 4263 "awkgram.c" /* yacc.c:1646  */
     break;
 
-  case 203:
-#line 2054 "awkgram.y" /* yacc.c:1646  */
+  case 204:
+#line 2071 "awkgram.y" /* yacc.c:1646  */
     { yyerrok; }
-#line 4244 "awkgram.c" /* yacc.c:1646  */
+#line 4269 "awkgram.c" /* yacc.c:1646  */
     break;
 
 
-#line 4248 "awkgram.c" /* yacc.c:1646  */
+#line 4273 "awkgram.c" /* yacc.c:1646  */
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -4472,7 +4497,7 @@ yyreturn:
 #endif
   return yyresult;
 }
-#line 2056 "awkgram.y" /* yacc.c:1906  */
+#line 2073 "awkgram.y" /* yacc.c:1906  */
 
 
 struct token {
diff --git a/awkgram.y b/awkgram.y
index 3a9c929..89f1fe1 100644
--- a/awkgram.y
+++ b/awkgram.y
@@ -616,6 +616,22 @@ statement_term
        | semi opt_nls
        ;
 
+switch_head
+       : LEX_SWITCH '(' exp r_paren opt_nls
+         {
+               INSTRUCTION *ip;
+
+               ip = $3;
+               if (do_pretty_print) {
+                       (void) list_prepend(ip, $1);
+                       (void) list_prepend(ip, instruction(Op_exec_count));
+               }
+               /* else
+                       $1 is NULL */
+               $$ = ip;
+         }
+       ;
+
 statement
        : semi opt_nls
          { $$ = NULL; }
@@ -628,7 +644,7 @@ statement
                else
                        $$ = $1;
          }
-       | LEX_SWITCH '(' exp r_paren opt_nls l_brace case_statements opt_nls 
r_brace
+       | switch_head l_brace case_statements opt_nls r_brace
          {
                INSTRUCTION *dflt, *curr = NULL, *cexp, *cstmt;
                INSTRUCTION *ip, *nextc, *tbreak;
@@ -643,11 +659,12 @@ statement
                dflt = instruction(Op_jmp);
                dflt->target_jmp = tbreak;      /* if no case match and no 
explicit default */
 
-               if ($7 != NULL) {
-                       curr = $7->nexti;
-                       bcfree($7);     /* Op_list */
-               } /*  else
-                               curr = NULL; */
+               if ($3 != NULL) {
+                       curr = $3->nexti;
+                       bcfree($3);     /* Op_list */
+               }
+               /*  else
+                       curr = NULL; */
 
                for (; curr != NULL; curr = nextc) {
                        INSTRUCTION *caseexp = curr->case_exp;
@@ -701,15 +718,15 @@ statement
                if (case_values != NULL)
                        efree(case_values);
 
-               ip = $3;
+               ip = $1;
                if (do_pretty_print) {
-                       (void) list_prepend(ip, $1);
-                       (void) list_prepend(ip, instruction(Op_exec_count));
-                       $1->target_break = tbreak;
-                       ($1 + 1)->switch_start = cexp->nexti;
-                       ($1 + 1)->switch_end = cexp->lasti;
-               }/* else
-                               $1 is NULL */
+                       INSTRUCTION *exp = $1->nexti->nexti;
+                       exp->target_break = tbreak;
+                       (exp + 1)->switch_start = cexp->nexti;
+                       (exp + 1)->switch_end = cexp->lasti;
+               }
+               /* else
+                       $1 is NULL */
 
                (void) list_append(cexp, dflt);
                (void) list_merge(ip, cexp);

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog |    6 +
 awkgram.c | 1833 +++++++++++++++++++++++++++++++------------------------------
 awkgram.y |   45 +-
 3 files changed, 966 insertions(+), 918 deletions(-)


hooks/post-receive
-- 
gawk



reply via email to

[Prev in Thread] Current Thread [Next in Thread]