]> git.ipfire.org Git - thirdparty/bash.git/blobdiff - y.tab.c
Bash-5.2 patch 26: fix typo when specifying readline's custom color prefix
[thirdparty/bash.git] / y.tab.c
diff --git a/y.tab.c b/y.tab.c
index 0e516e6dedf5f1ee783ef349f8cb449e3a44a824..78c793065928f2d93ff63f72c89ef703788d28c2 100644 (file)
--- a/y.tab.c
+++ b/y.tab.c
@@ -175,7 +175,7 @@ do { \
 } while (0)
 
 #if defined (EXTENDED_GLOB)
-extern int extended_glob;
+extern int extended_glob, extglob_flag;
 #endif
 
 #if defined (TRANSLATABLE_STRINGS)
@@ -992,7 +992,7 @@ union yyalloc
 #endif /* !YYCOPY_NEEDED */
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  121
+#define YYFINAL  122
 /* YYLAST -- Last index in YYTABLE.  */
 #define YYLAST   740
 
@@ -1001,9 +1001,9 @@ union yyalloc
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  38
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  174
+#define YYNRULES  175
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  349
+#define YYNSTATES  350
 
 /* YYMAXUTOK -- Last valid token kind.  */
 #define YYMAXUTOK   305
@@ -1057,24 +1057,24 @@ static const yytype_int8 yytranslate[] =
 /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_int16 yyrline[] =
 {
-       0,   395,   395,   406,   414,   423,   438,   455,   465,   467,
-     471,   477,   483,   489,   495,   501,   507,   513,   519,   525,
-     531,   537,   543,   549,   555,   561,   568,   575,   582,   589,
-     596,   603,   609,   615,   621,   627,   633,   639,   645,   651,
-     657,   663,   669,   675,   681,   687,   693,   699,   705,   711,
-     717,   723,   729,   735,   743,   745,   747,   751,   755,   766,
-     768,   772,   774,   776,   792,   794,   798,   800,   802,   804,
-     806,   808,   810,   812,   814,   816,   818,   822,   827,   832,
-     837,   842,   847,   852,   857,   864,   870,   876,   882,   890,
-     895,   900,   905,   910,   915,   920,   925,   932,   937,   942,
-     949,   951,   953,   955,   959,   961,   992,   999,  1003,  1009,
-    1014,  1031,  1036,  1053,  1060,  1062,  1064,  1069,  1073,  1077,
-    1081,  1083,  1085,  1089,  1090,  1094,  1096,  1098,  1100,  1104,
-    1106,  1108,  1110,  1112,  1114,  1118,  1120,  1129,  1135,  1141,
-    1142,  1149,  1153,  1155,  1157,  1164,  1166,  1173,  1177,  1178,
-    1181,  1183,  1185,  1189,  1190,  1199,  1214,  1232,  1249,  1251,
-    1253,  1260,  1263,  1267,  1269,  1275,  1281,  1301,  1324,  1326,
-    1349,  1353,  1355,  1357,  1359
+       0,   395,   395,   406,   414,   423,   438,   455,   470,   480,
+     482,   486,   492,   498,   504,   510,   516,   522,   528,   534,
+     540,   546,   552,   558,   564,   570,   576,   583,   590,   597,
+     604,   611,   618,   624,   630,   636,   642,   648,   654,   660,
+     666,   672,   678,   684,   690,   696,   702,   708,   714,   720,
+     726,   732,   738,   744,   750,   758,   760,   762,   766,   770,
+     781,   783,   787,   789,   791,   807,   809,   813,   815,   817,
+     819,   821,   823,   825,   827,   829,   831,   833,   837,   842,
+     847,   852,   857,   862,   867,   872,   879,   885,   891,   897,
+     905,   910,   915,   920,   925,   930,   935,   940,   947,   952,
+     957,   964,   966,   968,   970,   974,   976,  1007,  1014,  1018,
+    1024,  1029,  1046,  1051,  1068,  1075,  1077,  1079,  1084,  1088,
+    1092,  1096,  1098,  1100,  1104,  1105,  1109,  1111,  1113,  1115,
+    1119,  1121,  1123,  1125,  1127,  1129,  1133,  1135,  1144,  1150,
+    1156,  1157,  1164,  1168,  1170,  1172,  1179,  1181,  1188,  1192,
+    1193,  1196,  1198,  1200,  1204,  1205,  1214,  1229,  1247,  1264,
+    1266,  1268,  1275,  1278,  1282,  1284,  1290,  1296,  1316,  1339,
+    1341,  1364,  1368,  1370,  1372,  1374
 };
 #endif
 
@@ -1119,7 +1119,7 @@ yysymbol_name (yysymbol_kind_t yysymbol)
 }
 #endif
 
-#define YYPACT_NINF (-152)
+#define YYPACT_NINF (-125)
 
 #define yypact_value_is_default(Yyn) \
   ((Yyn) == YYPACT_NINF)
@@ -1133,41 +1133,41 @@ yysymbol_name (yysymbol_kind_t yysymbol)
    STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-     328,    80,  -152,   -11,    -1,     3,  -152,  -152,    15,   637,
-      -5,   433,   149,   -28,  -152,   187,   684,  -152,    18,    28,
-     130,    38,   139,    50,    52,    60,    65,    74,  -152,  -152,
-    -152,    89,   104,  -152,  -152,    97,  -152,  -152,   246,  -152,
-     670,  -152,  -152,  -152,  -152,  -152,  -152,  -152,  -152,  -152,
-    -152,  -152,  -152,   146,   211,  -152,     1,   433,  -152,  -152,
-     135,   484,  -152,    59,    61,    90,   167,   171,    10,    71,
-     246,   670,   144,  -152,  -152,  -152,  -152,  -152,   165,  -152,
-     142,   179,   192,   140,   194,   160,   227,   245,   252,   253,
-     260,   261,   262,   162,   269,   178,   270,   272,   273,   274,
-     277,  -152,  -152,  -152,  -152,  -152,  -152,  -152,  -152,  -152,
-    -152,  -152,  -152,  -152,  -152,   168,   379,  -152,  -152,   173,
-     244,  -152,  -152,  -152,  -152,   670,  -152,  -152,  -152,  -152,
-    -152,   535,   535,  -152,  -152,  -152,  -152,  -152,  -152,  -152,
-     205,  -152,    14,  -152,    36,  -152,  -152,  -152,  -152,    84,
-    -152,  -152,  -152,   249,   670,  -152,   670,   670,  -152,  -152,
-    -152,  -152,  -152,  -152,  -152,  -152,  -152,  -152,  -152,  -152,
-    -152,  -152,  -152,  -152,  -152,  -152,  -152,  -152,  -152,  -152,
-    -152,  -152,  -152,  -152,  -152,  -152,  -152,  -152,  -152,  -152,
-    -152,  -152,  -152,  -152,   484,   484,   203,   203,   586,   586,
-     145,  -152,  -152,  -152,  -152,  -152,  -152,     0,  -152,   119,
-    -152,   291,   248,    66,    88,  -152,   119,  -152,   296,   297,
-      35,  -152,   670,   670,    35,  -152,  -152,     1,     1,  -152,
-    -152,  -152,   306,   484,   484,   484,   484,   484,   305,   169,
-    -152,     7,  -152,  -152,   302,  -152,   131,  -152,   265,  -152,
-    -152,  -152,  -152,  -152,  -152,   304,   131,  -152,   266,  -152,
-    -152,  -152,    35,  -152,   313,   317,  -152,  -152,  -152,   225,
-     225,   225,  -152,  -152,  -152,  -152,   206,    25,  -152,  -152,
-     307,   -42,   319,   276,  -152,  -152,  -152,    95,  -152,   322,
-     283,   332,   284,  -152,  -152,   102,  -152,  -152,  -152,  -152,
-    -152,  -152,  -152,  -152,    45,   323,  -152,  -152,  -152,   106,
-    -152,  -152,  -152,  -152,  -152,  -152,   109,  -152,  -152,   264,
-    -152,  -152,  -152,   484,  -152,  -152,   333,   293,  -152,  -152,
-     338,   300,  -152,  -152,  -152,   484,   345,   303,  -152,  -152,
-     346,   309,  -152,  -152,  -152,  -152,  -152,  -152,  -152
+     329,    27,  -125,     8,    81,    10,  -125,  -125,    16,    38,
+       0,   434,    -5,   -16,  -125,   670,   684,  -125,    33,    43,
+      62,    63,    71,    69,    94,   105,   108,   116,  -125,  -125,
+    -125,   125,   139,  -125,  -125,   111,  -125,  -125,   626,  -125,
+     648,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,     5,   -21,  -125,   -15,   434,  -125,  -125,
+    -125,   196,   485,  -125,   157,     2,   180,   207,   222,   227,
+     638,   626,   648,   224,  -125,  -125,  -125,  -125,  -125,   219,
+    -125,   185,   223,   228,   140,   230,   161,   232,   233,   234,
+     236,   241,   248,   249,   162,   250,   163,   251,   254,   256,
+     257,   258,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,   225,   380,  -125,  -125,
+     229,   231,  -125,  -125,  -125,  -125,   648,  -125,  -125,  -125,
+    -125,  -125,   536,   536,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,   214,  -125,    -7,  -125,    85,  -125,  -125,  -125,  -125,
+      89,  -125,  -125,  -125,   235,   648,  -125,   648,   648,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,   485,   485,   138,   138,   587,
+     587,    17,  -125,  -125,  -125,  -125,  -125,  -125,    88,  -125,
+     122,  -125,   274,   238,   100,   101,  -125,   122,  -125,   276,
+     278,   260,  -125,   648,   648,   260,  -125,  -125,   -15,   -15,
+    -125,  -125,  -125,   287,   485,   485,   485,   485,   485,   290,
+     164,  -125,    26,  -125,  -125,   285,  -125,   131,  -125,   242,
+    -125,  -125,  -125,  -125,  -125,  -125,   288,   131,  -125,   243,
+    -125,  -125,  -125,   260,  -125,   297,   302,  -125,  -125,  -125,
+     152,   152,   152,  -125,  -125,  -125,  -125,   170,    61,  -125,
+    -125,   281,   -36,   293,   252,  -125,  -125,  -125,   102,  -125,
+     298,   255,   300,   262,  -125,  -125,   103,  -125,  -125,  -125,
+    -125,  -125,  -125,  -125,  -125,   -33,   296,  -125,  -125,  -125,
+     110,  -125,  -125,  -125,  -125,  -125,  -125,   112,  -125,  -125,
+     189,  -125,  -125,  -125,   485,  -125,  -125,   310,   267,  -125,
+    -125,   314,   275,  -125,  -125,  -125,   485,   318,   277,  -125,
+    -125,   320,   279,  -125,  -125,  -125,  -125,  -125,  -125,  -125
 };
 
 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -1175,59 +1175,59 @@ static const yytype_int16 yypact[] =
    means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
-       0,     0,   153,     0,     0,     0,   153,   153,     0,     0,
-       0,     0,   171,    54,    55,     0,     0,   118,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   153,     4,
-       7,     0,     0,   153,   153,     0,    56,    59,    61,   170,
-      62,    66,    76,    70,    67,    64,    72,     3,    65,    71,
-      73,    74,    75,     0,   155,   162,   163,     0,     5,     6,
-       0,     0,   153,   153,     0,   153,     0,     0,     0,    54,
-     113,   109,     0,   151,   150,   152,   167,   164,   172,   173,
+       0,     0,   154,     0,     0,     0,   154,   154,     0,     0,
+       0,     0,   172,    55,    56,     0,     0,   119,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   154,     4,
+       8,     0,     0,   154,   154,     0,    57,    60,    62,   171,
+      63,    67,    77,    71,    68,    65,    73,     3,    66,    72,
+      74,    75,    76,     0,   156,   163,   164,     0,     7,     5,
+       6,     0,     0,   154,   154,     0,   154,     0,     0,     0,
+      55,   114,   110,     0,   152,   151,   153,   168,   165,   173,
+     174,     0,     0,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    16,    25,    40,    34,    49,    31,    43,    37,    46,
-      28,    52,    53,    22,    19,     0,     0,    10,    11,     0,
-       0,     1,    54,    60,    57,    63,   148,   149,     2,   153,
-     153,   156,   157,   153,   153,   166,   165,   153,   154,   137,
-     138,   147,     0,   153,     0,   153,   153,   153,   153,     0,
-     153,   153,   153,   153,   104,   102,   111,   110,   119,   174,
-     153,    18,    27,    42,    36,    51,    33,    45,    39,    48,
-      30,    24,    21,    14,    15,    17,    26,    41,    35,    50,
-      32,    44,    38,    47,    29,    23,    20,    12,    13,   107,
-     108,   117,   106,    58,     0,     0,   160,   161,     0,     0,
-       0,   153,   153,   153,   153,   153,   153,     0,   153,     0,
-     153,     0,     0,     0,     0,   153,     0,   153,     0,     0,
-       0,   153,   105,   112,     0,   158,   159,   169,   168,   153,
-     153,   114,     0,     0,     0,   140,   141,   139,     0,   123,
-     153,     0,   153,   153,     0,     8,     0,   153,     0,    87,
-      88,   153,   153,   153,   153,     0,     0,   153,     0,    68,
-      69,   103,     0,   100,     0,     0,   116,   142,   143,   144,
-     145,   146,    99,   129,   131,   133,   124,     0,    97,   135,
-       0,     0,     0,     0,    77,     9,   153,     0,    78,     0,
-       0,     0,     0,    89,   153,     0,    90,   101,   115,   153,
-     130,   132,   134,    98,     0,     0,   153,    79,    80,     0,
-     153,   153,    85,    86,    91,    92,     0,   153,   153,   120,
-     153,   136,   125,   126,   153,   153,     0,     0,   153,   153,
-       0,     0,   153,   122,   127,   128,     0,     0,    83,    84,
-       0,     0,    95,    96,   121,    81,    82,    93,    94
+       0,     0,    17,    26,    41,    35,    50,    32,    44,    38,
+      47,    29,    53,    54,    23,    20,     0,     0,    11,    12,
+       0,     0,     1,    55,    61,    58,    64,   149,   150,     2,
+     154,   154,   157,   158,   154,   154,   167,   166,   154,   155,
+     138,   139,   148,     0,   154,     0,   154,   154,   154,   154,
+       0,   154,   154,   154,   154,   105,   103,   112,   111,   120,
+     175,   154,    19,    28,    43,    37,    52,    34,    46,    40,
+      49,    31,    25,    22,    15,    16,    18,    27,    42,    36,
+      51,    33,    45,    39,    48,    30,    24,    21,    13,    14,
+     108,   109,   118,   107,    59,     0,     0,   161,   162,     0,
+       0,     0,   154,   154,   154,   154,   154,   154,     0,   154,
+       0,   154,     0,     0,     0,     0,   154,     0,   154,     0,
+       0,     0,   154,   106,   113,     0,   159,   160,   170,   169,
+     154,   154,   115,     0,     0,     0,   141,   142,   140,     0,
+     124,   154,     0,   154,   154,     0,     9,     0,   154,     0,
+      88,    89,   154,   154,   154,   154,     0,     0,   154,     0,
+      69,    70,   104,     0,   101,     0,     0,   117,   143,   144,
+     145,   146,   147,   100,   130,   132,   134,   125,     0,    98,
+     136,     0,     0,     0,     0,    78,    10,   154,     0,    79,
+       0,     0,     0,     0,    90,   154,     0,    91,   102,   116,
+     154,   131,   133,   135,    99,     0,     0,   154,    80,    81,
+       0,   154,   154,    86,    87,    92,    93,     0,   154,   154,
+     121,   154,   137,   126,   127,   154,   154,     0,     0,   154,
+     154,     0,     0,   154,   123,   128,   129,     0,     0,    84,
+      85,     0,     0,    96,    97,   122,    82,    83,    94,    95
 };
 
 /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -152,  -152,   112,   -29,   -14,   -64,   360,  -152,    -8,  -152,
-    -152,  -152,  -152,  -152,  -151,  -152,  -152,  -152,  -152,  -152,
-    -152,  -152,    13,  -152,   136,  -152,    98,    -2,  -152,    30,
-    -152,   -54,   -26,  -152,  -123,     6,    78,  -152
+    -125,  -125,   126,   -25,   -28,   -65,   335,  -125,    -8,  -125,
+    -125,  -125,  -125,  -125,   -96,  -125,  -125,  -125,  -125,  -125,
+    -125,  -125,    28,  -125,   109,  -125,    68,    -2,  -125,   -11,
+    -125,   -54,   -26,  -125,  -124,     6,    34,  -125
 };
 
 /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-       0,    35,   246,    36,    37,   125,    38,    39,    40,    41,
-      42,    43,    44,    45,   155,    46,    47,    48,    49,    50,
-      51,    52,   232,   238,   239,   240,   281,   120,   139,   140,
-     128,    76,    61,    53,    54,   141,    56,    57
+       0,    35,   247,    36,    37,   126,    38,    39,    40,    41,
+      42,    43,    44,    45,   156,    46,    47,    48,    49,    50,
+      51,    52,   233,   239,   240,   241,   282,   121,   140,   141,
+     129,    77,    62,    53,    54,   142,    56,    57
 };
 
 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -1235,157 +1235,157 @@ static const yytype_int16 yydefgoto[] =
    number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      60,    71,   116,   135,    66,    67,    55,   157,   196,   197,
-     147,   124,   305,     2,   242,    62,   278,    77,     3,   306,
-       4,     5,     6,     7,   123,    63,   115,    72,    10,    65,
-      64,   119,    80,   279,   303,   206,   142,   144,     2,   149,
-      17,    68,   124,     3,   101,     4,     5,     6,     7,   133,
-     208,   279,   138,    10,   102,   134,   123,   209,   243,   138,
-     154,   156,   152,   136,   106,    17,   138,   280,    33,   261,
-     153,   225,   226,   263,     2,   145,   110,   138,   111,     3,
-     251,     4,     5,     6,     7,   280,   112,   138,   138,    10,
-     222,   113,   223,    33,   210,    34,   193,   121,   215,   305,
-     114,    17,   253,   194,   195,   216,   320,   198,   199,   310,
-     143,   297,    73,    74,    75,   117,   317,   207,   138,   146,
-     324,   213,   214,   328,   252,   124,   220,   124,   193,    33,
-     118,    34,    58,    59,   224,   200,   138,    55,    55,   137,
-     138,   148,   217,   211,   212,   245,   254,   138,   218,   219,
-     229,   230,   231,   311,   138,   247,   103,   285,   138,   104,
-     318,   138,   257,   158,   325,   107,   163,   329,   108,   164,
-      73,    74,    75,    78,    79,   233,   234,   235,   236,   237,
-     241,   150,    73,    74,    75,   151,   167,   105,   177,   168,
-     159,   178,   286,   193,   193,   262,   109,   165,   126,   127,
-      55,    55,   294,   160,   181,   161,   244,   182,   248,   273,
-     274,   275,   154,   255,   277,   258,   154,   169,   162,   179,
-     166,   287,    81,    82,    83,    84,    85,   264,   265,   189,
-      86,   295,   191,    87,    88,   183,   129,   130,   201,   202,
-     282,   283,    89,    90,   129,   130,   300,   301,   302,   289,
-     290,   291,   292,   170,   154,   203,   204,   205,   201,   202,
-     309,   131,   132,   267,   268,   269,   270,   271,   316,   332,
-     230,   171,   122,    14,    15,    16,   227,   228,   172,   173,
-     323,    18,    19,    20,    21,    22,   174,   175,   176,    23,
-      24,    25,    26,    27,   335,   180,   184,   319,   185,   186,
-     187,    31,    32,   188,   322,   192,   249,   250,   326,   327,
-     221,   259,   260,   266,   272,   330,   331,   284,   334,   293,
-     298,   299,   336,   337,   288,   296,   340,   341,   256,     1,
-     344,     2,   333,   279,   307,   308,     3,   312,     4,     5,
-       6,     7,   313,   315,     8,     9,    10,   314,   338,   321,
-      11,    12,   339,   342,    13,    14,    15,    16,    17,   343,
-     345,   347,   346,    18,    19,    20,    21,    22,   348,    70,
-       0,    23,    24,    25,    26,    27,   276,    28,   304,     0,
-      29,    30,     2,    31,    32,     0,    33,     3,    34,     4,
-       5,     6,     7,     0,     0,     8,     9,    10,     0,     0,
-       0,    11,    12,     0,     0,    13,    14,    15,    16,    17,
+      61,    72,   117,   136,    67,    68,    55,   158,   197,   198,
+     124,   148,   130,   131,   207,   125,   146,    78,   306,    79,
+      80,   306,   230,   231,   232,   307,   116,    58,   321,   132,
+     133,   120,    73,   134,    63,   279,    66,   143,   145,   135,
+     150,     2,    69,   124,    81,   139,     3,   125,     4,     5,
+       6,     7,   280,    74,    75,    76,    10,   127,   128,   102,
+     147,   155,   157,   137,    70,    14,    15,    16,    17,   103,
+     304,   226,   227,    18,    19,    20,    21,    22,   139,    59,
+      60,    23,    24,    25,    26,    27,   281,   280,   104,   107,
+     223,   105,   224,    31,    32,   111,    33,   108,    34,   209,
+     109,   194,   243,   216,   195,   196,   210,    64,   199,   200,
+     217,   122,    65,   139,   252,   254,   311,   318,   208,   106,
+     112,   281,   214,   215,   325,   262,   329,   221,   110,   264,
+     125,   113,   125,   194,   114,   225,   201,   139,    55,    55,
+     139,   139,   115,   211,   212,   213,   244,   218,   246,   219,
+     220,   118,   139,   139,   139,   139,   248,   286,   253,   255,
+     312,   319,   139,   258,   139,   119,   164,   298,   326,   165,
+     330,   130,   131,    74,    75,    76,   234,   235,   236,   237,
+     238,   242,    74,    75,    76,   202,   203,   168,   178,   182,
+     169,   179,   183,   287,   333,   231,   263,   166,   194,   194,
+     138,    55,    55,   295,   274,   275,   276,   245,   144,   249,
+     301,   302,   303,   155,   256,   278,   259,   155,   170,   180,
+     184,   151,   288,   268,   269,   270,   271,   272,   265,   266,
+       2,   149,   296,   228,   229,     3,   152,     4,     5,     6,
+       7,   283,   284,   159,   160,    10,   161,   202,   203,   162,
+     290,   291,   292,   293,   163,   155,   167,    17,   171,   172,
+     173,   310,   174,     2,   204,   205,   206,   175,     3,   317,
+       4,     5,     6,     7,   176,   177,   181,   185,    10,   153,
+     186,   324,   187,   188,   189,    33,   190,   154,   192,   250,
+      17,   260,   193,   261,   267,   336,   222,   251,   320,   273,
+     285,   289,   297,   294,   299,   323,   300,   280,   308,   327,
+     328,   309,   139,   313,   314,   315,   331,   332,    33,   335,
+      34,   316,   322,   337,   338,   339,   340,   341,   342,   343,
+       1,   345,     2,   346,   344,   348,   347,     3,   349,     4,
+       5,     6,     7,   257,    71,     8,     9,    10,   334,   305,
+     277,    11,    12,     0,     0,    13,    14,    15,    16,    17,
        0,     0,     0,     0,    18,    19,    20,    21,    22,     0,
-       0,     0,    23,    24,    25,    26,    27,     0,     0,     0,
-       0,   138,     0,     0,    31,    32,     2,    33,     0,    34,
-     190,     3,     0,     4,     5,     6,     7,     0,     0,     8,
-       9,    10,     0,     0,     0,    11,    12,     0,     0,    13,
-      14,    15,    16,    17,     0,     0,     0,     0,    18,    19,
-      20,    21,    22,     0,     0,     0,    23,    24,    25,    26,
-      27,     0,     0,     0,    73,    74,    75,     2,    31,    32,
-       0,    33,     3,    34,     4,     5,     6,     7,     0,     0,
+       0,     0,    23,    24,    25,    26,    27,     0,    28,     0,
+       0,    29,    30,     2,    31,    32,     0,    33,     3,    34,
+       4,     5,     6,     7,     0,     0,     8,     9,    10,     0,
+       0,     0,    11,    12,     0,     0,    13,    14,    15,    16,
+      17,     0,     0,     0,     0,    18,    19,    20,    21,    22,
+       0,     0,     0,    23,    24,    25,    26,    27,     0,     0,
+       0,     0,   139,     0,     0,    31,    32,     2,    33,     0,
+      34,   191,     3,     0,     4,     5,     6,     7,     0,     0,
        8,     9,    10,     0,     0,     0,    11,    12,     0,     0,
       13,    14,    15,    16,    17,     0,     0,     0,     0,    18,
       19,    20,    21,    22,     0,     0,     0,    23,    24,    25,
-      26,    27,     0,     0,     0,     0,   138,     0,     2,    31,
+      26,    27,     0,     0,     0,    74,    75,    76,     2,    31,
       32,     0,    33,     3,    34,     4,     5,     6,     7,     0,
        0,     8,     9,    10,     0,     0,     0,    11,    12,     0,
        0,    13,    14,    15,    16,    17,     0,     0,     0,     0,
       18,    19,    20,    21,    22,     0,     0,     0,    23,    24,
-      25,    26,    27,     0,     0,     0,     0,     0,     0,     2,
+      25,    26,    27,     0,     0,     0,     0,   139,     0,     2,
       31,    32,     0,    33,     3,    34,     4,     5,     6,     7,
-       0,     0,     8,     9,    10,     0,     0,     0,     0,     0,
+       0,     0,     8,     9,    10,     0,     0,     0,    11,    12,
        0,     0,    13,    14,    15,    16,    17,     0,     0,     0,
        0,    18,    19,    20,    21,    22,     0,     0,     0,    23,
-      24,    25,    26,    27,     0,     0,     0,     0,   138,     0,
+      24,    25,    26,    27,     0,     0,     0,     0,     0,     0,
        2,    31,    32,     0,    33,     3,    34,     4,     5,     6,
-       7,     0,     0,     0,     0,    10,     0,     0,     0,     0,
-       0,     0,     0,    69,    14,    15,    16,    17,     0,     0,
+       7,     0,     0,     8,     9,    10,     0,     0,     0,     0,
+       0,     0,     0,    13,    14,    15,    16,    17,     0,     0,
        0,     0,    18,    19,    20,    21,    22,     0,     0,     0,
-      23,    24,    25,    26,    27,     0,     0,     0,     0,     0,
-       0,     0,    31,    32,     0,    33,     0,    34,    15,    16,
-       0,     0,     0,     0,     0,    18,    19,    20,    21,    22,
-       0,     0,     0,    23,    24,    25,    26,    27,     0,    91,
-      92,    93,    94,    95,     0,    31,    32,    96,     0,     0,
-      97,    98,     0,     0,     0,     0,     0,     0,     0,    99,
-     100
+      23,    24,    25,    26,    27,     0,     0,     0,     0,   139,
+       0,     2,    31,    32,     0,    33,     3,    34,     4,     5,
+       6,     7,   123,    14,    15,    16,    10,     0,     0,     0,
+       0,    18,    19,    20,    21,    22,     0,     0,    17,    23,
+      24,    25,    26,    27,     0,     0,    15,    16,     0,     0,
+       0,    31,    32,    18,    19,    20,    21,    22,     0,     0,
+       0,    23,    24,    25,    26,    27,    33,     0,    34,     0,
+       0,     0,     0,    31,    32,    82,    83,    84,    85,    86,
+       0,     0,     0,    87,     0,     0,    88,    89,     0,    92,
+      93,    94,    95,    96,     0,    90,    91,    97,     0,     0,
+      98,    99,     0,     0,     0,     0,     0,     0,     0,   100,
+     101
 };
 
 static const yytype_int16 yycheck[] =
 {
-       2,     9,    28,    57,     6,     7,     0,    71,   131,   132,
-      64,    40,    54,     3,    14,    26,     9,    11,     8,    61,
-      10,    11,    12,    13,    38,    26,    28,    32,    18,    26,
-      31,    33,    60,    26,     9,    21,    62,    63,     3,    65,
-      30,    26,    71,     8,    26,    10,    11,    12,    13,    48,
-      14,    26,    52,    18,    26,    54,    70,    21,    58,    52,
-      68,    69,    52,    57,    26,    30,    52,    60,    58,   220,
-      60,   194,   195,   224,     3,    14,    26,    52,    26,     8,
-      14,    10,    11,    12,    13,    60,    26,    52,    52,    18,
-     154,    26,   156,    58,    58,    60,   125,     0,    14,    54,
-      26,    30,    14,   129,   130,    21,    61,   133,   134,    14,
-      51,   262,    51,    52,    53,    26,    14,   143,    52,    58,
-      14,   147,   148,    14,    58,   154,   152,   156,   157,    58,
-      26,    60,    52,    53,   160,   137,    52,   131,   132,     4,
-      52,    51,    58,   145,   146,    26,    58,    52,   150,   151,
-       5,     6,     7,    58,    52,   209,    26,    26,    52,    29,
-      58,    52,   216,    19,    58,    26,    26,    58,    29,    29,
-      51,    52,    53,    24,    25,   201,   202,   203,   204,   205,
-     206,    14,    51,    52,    53,    14,    26,    57,    26,    29,
-      25,    29,   246,   222,   223,   221,    57,    57,    52,    53,
-     194,   195,   256,    61,    26,    26,   208,    29,   210,    40,
-      41,    42,   220,   215,   240,   217,   224,    57,    26,    57,
-      26,   247,    35,    36,    37,    38,    39,   229,   230,    61,
-      43,   257,    59,    46,    47,    57,    33,    34,    33,    34,
-     242,   243,    55,    56,    33,    34,    40,    41,    42,   251,
-     252,   253,   254,    26,   262,    50,    51,    52,    33,    34,
-     286,    50,    51,   233,   234,   235,   236,   237,   294,     5,
-       6,    26,    26,    27,    28,    29,   198,   199,    26,    26,
-     306,    35,    36,    37,    38,    39,    26,    26,    26,    43,
-      44,    45,    46,    47,   320,    26,    26,   299,    26,    26,
-      26,    55,    56,    26,   306,    61,    15,    59,   310,   311,
-      61,    15,    15,     7,     9,   317,   318,    15,   320,    15,
-       7,     4,   324,   325,    59,    59,   328,   329,   216,     1,
-     332,     3,   319,    26,    15,    59,     8,    15,    10,    11,
-      12,    13,    59,    59,    16,    17,    18,    15,    15,    26,
-      22,    23,    59,    15,    26,    27,    28,    29,    30,    59,
-      15,    15,    59,    35,    36,    37,    38,    39,    59,     9,
-      -1,    43,    44,    45,    46,    47,   240,    49,   280,    -1,
-      52,    53,     3,    55,    56,    -1,    58,     8,    60,    10,
-      11,    12,    13,    -1,    -1,    16,    17,    18,    -1,    -1,
-      -1,    22,    23,    -1,    -1,    26,    27,    28,    29,    30,
+       2,     9,    28,    57,     6,     7,     0,    72,   132,   133,
+      38,    65,    33,    34,    21,    40,    14,    11,    54,    24,
+      25,    54,     5,     6,     7,    61,    28,     0,    61,    50,
+      51,    33,    32,    48,    26,     9,    26,    63,    64,    54,
+      66,     3,    26,    71,    60,    52,     8,    72,    10,    11,
+      12,    13,    26,    51,    52,    53,    18,    52,    53,    26,
+      58,    69,    70,    57,    26,    27,    28,    29,    30,    26,
+       9,   195,   196,    35,    36,    37,    38,    39,    52,    52,
+      53,    43,    44,    45,    46,    47,    60,    26,    26,    26,
+     155,    29,   157,    55,    56,    26,    58,    26,    60,    14,
+      29,   126,    14,    14,   130,   131,    21,    26,   134,   135,
+      21,     0,    31,    52,    14,    14,    14,    14,   144,    57,
+      26,    60,   148,   149,    14,   221,    14,   153,    57,   225,
+     155,    26,   157,   158,    26,   161,   138,    52,   132,   133,
+      52,    52,    26,    58,   146,   147,    58,    58,    26,   151,
+     152,    26,    52,    52,    52,    52,   210,    26,    58,    58,
+      58,    58,    52,   217,    52,    26,    26,   263,    58,    29,
+      58,    33,    34,    51,    52,    53,   202,   203,   204,   205,
+     206,   207,    51,    52,    53,    33,    34,    26,    26,    26,
+      29,    29,    29,   247,     5,     6,   222,    57,   223,   224,
+       4,   195,   196,   257,    40,    41,    42,   209,    51,   211,
+      40,    41,    42,   221,   216,   241,   218,   225,    57,    57,
+      57,    14,   248,   234,   235,   236,   237,   238,   230,   231,
+       3,    51,   258,   199,   200,     8,    14,    10,    11,    12,
+      13,   243,   244,    19,    25,    18,    61,    33,    34,    26,
+     252,   253,   254,   255,    26,   263,    26,    30,    26,    26,
+      26,   287,    26,     3,    50,    51,    52,    26,     8,   295,
+      10,    11,    12,    13,    26,    26,    26,    26,    18,    52,
+      26,   307,    26,    26,    26,    58,    61,    60,    59,    15,
+      30,    15,    61,    15,     7,   321,    61,    59,   300,     9,
+      15,    59,    59,    15,     7,   307,     4,    26,    15,   311,
+     312,    59,    52,    15,    59,    15,   318,   319,    58,   321,
+      60,    59,    26,   325,   326,    15,    59,   329,   330,    15,
+       1,   333,     3,    15,    59,    15,    59,     8,    59,    10,
+      11,    12,    13,   217,     9,    16,    17,    18,   320,   281,
+     241,    22,    23,    -1,    -1,    26,    27,    28,    29,    30,
       -1,    -1,    -1,    -1,    35,    36,    37,    38,    39,    -1,
-      -1,    -1,    43,    44,    45,    46,    47,    -1,    -1,    -1,
-      -1,    52,    -1,    -1,    55,    56,     3,    58,    -1,    60,
-      61,     8,    -1,    10,    11,    12,    13,    -1,    -1,    16,
-      17,    18,    -1,    -1,    -1,    22,    23,    -1,    -1,    26,
-      27,    28,    29,    30,    -1,    -1,    -1,    -1,    35,    36,
-      37,    38,    39,    -1,    -1,    -1,    43,    44,    45,    46,
-      47,    -1,    -1,    -1,    51,    52,    53,     3,    55,    56,
-      -1,    58,     8,    60,    10,    11,    12,    13,    -1,    -1,
+      -1,    -1,    43,    44,    45,    46,    47,    -1,    49,    -1,
+      -1,    52,    53,     3,    55,    56,    -1,    58,     8,    60,
+      10,    11,    12,    13,    -1,    -1,    16,    17,    18,    -1,
+      -1,    -1,    22,    23,    -1,    -1,    26,    27,    28,    29,
+      30,    -1,    -1,    -1,    -1,    35,    36,    37,    38,    39,
+      -1,    -1,    -1,    43,    44,    45,    46,    47,    -1,    -1,
+      -1,    -1,    52,    -1,    -1,    55,    56,     3,    58,    -1,
+      60,    61,     8,    -1,    10,    11,    12,    13,    -1,    -1,
       16,    17,    18,    -1,    -1,    -1,    22,    23,    -1,    -1,
       26,    27,    28,    29,    30,    -1,    -1,    -1,    -1,    35,
       36,    37,    38,    39,    -1,    -1,    -1,    43,    44,    45,
-      46,    47,    -1,    -1,    -1,    -1,    52,    -1,     3,    55,
+      46,    47,    -1,    -1,    -1,    51,    52,    53,     3,    55,
       56,    -1,    58,     8,    60,    10,    11,    12,    13,    -1,
       -1,    16,    17,    18,    -1,    -1,    -1,    22,    23,    -1,
       -1,    26,    27,    28,    29,    30,    -1,    -1,    -1,    -1,
       35,    36,    37,    38,    39,    -1,    -1,    -1,    43,    44,
-      45,    46,    47,    -1,    -1,    -1,    -1,    -1,    -1,     3,
+      45,    46,    47,    -1,    -1,    -1,    -1,    52,    -1,     3,
       55,    56,    -1,    58,     8,    60,    10,    11,    12,    13,
-      -1,    -1,    16,    17,    18,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    16,    17,    18,    -1,    -1,    -1,    22,    23,
       -1,    -1,    26,    27,    28,    29,    30,    -1,    -1,    -1,
       -1,    35,    36,    37,    38,    39,    -1,    -1,    -1,    43,
-      44,    45,    46,    47,    -1,    -1,    -1,    -1,    52,    -1,
+      44,    45,    46,    47,    -1,    -1,    -1,    -1,    -1,    -1,
        3,    55,    56,    -1,    58,     8,    60,    10,    11,    12,
-      13,    -1,    -1,    -1,    -1,    18,    -1,    -1,    -1,    -1,
+      13,    -1,    -1,    16,    17,    18,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    26,    27,    28,    29,    30,    -1,    -1,
       -1,    -1,    35,    36,    37,    38,    39,    -1,    -1,    -1,
-      43,    44,    45,    46,    47,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    55,    56,    -1,    58,    -1,    60,    28,    29,
-      -1,    -1,    -1,    -1,    -1,    35,    36,    37,    38,    39,
-      -1,    -1,    -1,    43,    44,    45,    46,    47,    -1,    35,
+      43,    44,    45,    46,    47,    -1,    -1,    -1,    -1,    52,
+      -1,     3,    55,    56,    -1,    58,     8,    60,    10,    11,
+      12,    13,    26,    27,    28,    29,    18,    -1,    -1,    -1,
+      -1,    35,    36,    37,    38,    39,    -1,    -1,    30,    43,
+      44,    45,    46,    47,    -1,    -1,    28,    29,    -1,    -1,
+      -1,    55,    56,    35,    36,    37,    38,    39,    -1,    -1,
+      -1,    43,    44,    45,    46,    47,    58,    -1,    60,    -1,
+      -1,    -1,    -1,    55,    56,    35,    36,    37,    38,    39,
+      -1,    -1,    -1,    43,    -1,    -1,    46,    47,    -1,    35,
       36,    37,    38,    39,    -1,    55,    56,    43,    -1,    -1,
       46,    47,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    55,
       56
@@ -1400,82 +1400,82 @@ static const yytype_int8 yystos[] =
       37,    38,    39,    43,    44,    45,    46,    47,    49,    52,
       53,    55,    56,    58,    60,    63,    65,    66,    68,    69,
       70,    71,    72,    73,    74,    75,    77,    78,    79,    80,
-      81,    82,    83,    95,    96,    97,    98,    99,    52,    53,
-      89,    94,    26,    26,    31,    26,    89,    89,    26,    26,
-      68,    70,    32,    51,    52,    53,    93,    97,    24,    25,
-      60,    35,    36,    37,    38,    39,    43,    46,    47,    55,
-      56,    35,    36,    37,    38,    39,    43,    46,    47,    55,
-      56,    26,    26,    26,    29,    57,    26,    26,    29,    57,
-      26,    26,    26,    26,    26,    89,    94,    26,    26,    89,
-      89,     0,    26,    66,    65,    67,    52,    53,    92,    33,
-      34,    50,    51,    48,    54,    93,    97,     4,    52,    90,
-      91,    97,    94,    51,    94,    14,    58,    93,    51,    94,
-      14,    14,    52,    60,    70,    76,    70,    67,    19,    25,
-      61,    26,    26,    26,    29,    57,    26,    26,    29,    57,
-      26,    26,    26,    26,    26,    26,    26,    26,    29,    57,
-      26,    26,    29,    57,    26,    26,    26,    26,    26,    61,
-      61,    59,    61,    65,    94,    94,    96,    96,    94,    94,
-      89,    33,    34,    50,    51,    52,    21,    94,    14,    21,
-      58,    89,    89,    94,    94,    14,    21,    58,    89,    89,
-      94,    61,    67,    67,    94,    96,    96,    98,    98,     5,
-       6,     7,    84,    94,    94,    94,    94,    94,    85,    86,
-      87,    94,    14,    58,    89,    26,    64,    93,    89,    15,
-      59,    14,    58,    14,    58,    89,    64,    93,    89,    15,
-      15,    76,    94,    76,    89,    89,     7,    91,    91,    91,
-      91,    91,     9,    40,    41,    42,    86,    94,     9,    26,
-      60,    88,    89,    89,    15,    26,    93,    94,    59,    89,
-      89,    89,    89,    15,    93,    94,    59,    76,     7,     4,
-      40,    41,    42,     9,    88,    54,    61,    15,    59,    94,
-      14,    58,    15,    59,    15,    59,    94,    14,    58,    89,
-      61,    26,    89,    94,    14,    58,    89,    89,    14,    58,
-      89,    89,     5,    84,    89,    94,    89,    89,    15,    59,
-      89,    89,    15,    59,    89,    15,    59,    15,    59
+      81,    82,    83,    95,    96,    97,    98,    99,     0,    52,
+      53,    89,    94,    26,    26,    31,    26,    89,    89,    26,
+      26,    68,    70,    32,    51,    52,    53,    93,    97,    24,
+      25,    60,    35,    36,    37,    38,    39,    43,    46,    47,
+      55,    56,    35,    36,    37,    38,    39,    43,    46,    47,
+      55,    56,    26,    26,    26,    29,    57,    26,    26,    29,
+      57,    26,    26,    26,    26,    26,    89,    94,    26,    26,
+      89,    89,     0,    26,    66,    65,    67,    52,    53,    92,
+      33,    34,    50,    51,    48,    54,    93,    97,     4,    52,
+      90,    91,    97,    94,    51,    94,    14,    58,    93,    51,
+      94,    14,    14,    52,    60,    70,    76,    70,    67,    19,
+      25,    61,    26,    26,    26,    29,    57,    26,    26,    29,
+      57,    26,    26,    26,    26,    26,    26,    26,    26,    29,
+      57,    26,    26,    29,    57,    26,    26,    26,    26,    26,
+      61,    61,    59,    61,    65,    94,    94,    96,    96,    94,
+      94,    89,    33,    34,    50,    51,    52,    21,    94,    14,
+      21,    58,    89,    89,    94,    94,    14,    21,    58,    89,
+      89,    94,    61,    67,    67,    94,    96,    96,    98,    98,
+       5,     6,     7,    84,    94,    94,    94,    94,    94,    85,
+      86,    87,    94,    14,    58,    89,    26,    64,    93,    89,
+      15,    59,    14,    58,    14,    58,    89,    64,    93,    89,
+      15,    15,    76,    94,    76,    89,    89,     7,    91,    91,
+      91,    91,    91,     9,    40,    41,    42,    86,    94,     9,
+      26,    60,    88,    89,    89,    15,    26,    93,    94,    59,
+      89,    89,    89,    89,    15,    93,    94,    59,    76,     7,
+       4,    40,    41,    42,     9,    88,    54,    61,    15,    59,
+      94,    14,    58,    15,    59,    15,    59,    94,    14,    58,
+      89,    61,    26,    89,    94,    14,    58,    89,    89,    14,
+      58,    89,    89,     5,    84,    89,    94,    89,    89,    15,
+      59,    89,    89,    15,    59,    89,    15,    59,    15,    59
 };
 
 /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM.  */
 static const yytype_int8 yyr1[] =
 {
-       0,    62,    63,    63,    63,    63,    63,    63,    64,    64,
-      65,    65,    65,    65,    65,    65,    65,    65,    65,    65,
+       0,    62,    63,    63,    63,    63,    63,    63,    63,    64,
+      64,    65,    65,    65,    65,    65,    65,    65,    65,    65,
       65,    65,    65,    65,    65,    65,    65,    65,    65,    65,
       65,    65,    65,    65,    65,    65,    65,    65,    65,    65,
       65,    65,    65,    65,    65,    65,    65,    65,    65,    65,
-      65,    65,    65,    65,    66,    66,    66,    67,    67,    68,
-      68,    69,    69,    69,    69,    69,    70,    70,    70,    70,
-      70,    70,    70,    70,    70,    70,    70,    71,    71,    71,
-      71,    71,    71,    71,    71,    72,    72,    72,    72,    73,
-      73,    73,    73,    73,    73,    73,    73,    74,    74,    74,
-      75,    75,    75,    75,    76,    76,    77,    78,    78,    79,
-      79,    79,    79,    79,    80,    80,    80,    81,    82,    83,
-      84,    84,    84,    85,    85,    86,    86,    86,    86,    87,
-      87,    87,    87,    87,    87,    88,    88,    89,    89,    90,
-      90,    90,    91,    91,    91,    91,    91,    91,    92,    92,
-      93,    93,    93,    94,    94,    95,    95,    95,    96,    96,
-      96,    96,    96,    97,    97,    97,    97,    97,    98,    98,
-      98,    99,    99,    99,    99
+      65,    65,    65,    65,    65,    66,    66,    66,    67,    67,
+      68,    68,    69,    69,    69,    69,    69,    70,    70,    70,
+      70,    70,    70,    70,    70,    70,    70,    70,    71,    71,
+      71,    71,    71,    71,    71,    71,    72,    72,    72,    72,
+      73,    73,    73,    73,    73,    73,    73,    73,    74,    74,
+      74,    75,    75,    75,    75,    76,    76,    77,    78,    78,
+      79,    79,    79,    79,    79,    80,    80,    80,    81,    82,
+      83,    84,    84,    84,    85,    85,    86,    86,    86,    86,
+      87,    87,    87,    87,    87,    87,    88,    88,    89,    89,
+      90,    90,    90,    91,    91,    91,    91,    91,    91,    92,
+      92,    93,    93,    93,    94,    94,    95,    95,    95,    96,
+      96,    96,    96,    96,    97,    97,    97,    97,    97,    98,
+      98,    98,    99,    99,    99,    99
 };
 
 /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM.  */
 static const yytype_int8 yyr2[] =
 {
-       0,     2,     2,     1,     1,     2,     2,     1,     1,     2,
-       2,     2,     3,     3,     3,     3,     2,     3,     3,     2,
+       0,     2,     2,     1,     1,     2,     2,     2,     1,     1,
+       2,     2,     2,     3,     3,     3,     3,     2,     3,     3,
+       2,     3,     3,     2,     3,     3,     2,     3,     3,     2,
        3,     3,     2,     3,     3,     2,     3,     3,     2,     3,
        3,     2,     3,     3,     2,     3,     3,     2,     3,     3,
-       2,     3,     3,     2,     3,     3,     2,     3,     3,     2,
-       3,     3,     2,     2,     1,     1,     1,     1,     2,     1,
-       2,     1,     1,     2,     1,     1,     1,     1,     5,     5,
-       1,     1,     1,     1,     1,     1,     1,     6,     6,     7,
-       7,    10,    10,     9,     9,     7,     7,     5,     5,     6,
-       6,     7,     7,    10,    10,     9,     9,     6,     7,     6,
-       5,     6,     3,     5,     1,     2,     3,     3,     3,     2,
-       3,     3,     4,     2,     5,     7,     6,     3,     1,     3,
-       4,     6,     5,     1,     2,     4,     4,     5,     5,     2,
-       3,     2,     3,     2,     3,     1,     3,     2,     2,     3,
-       3,     3,     4,     4,     4,     4,     4,     1,     1,     1,
-       1,     1,     1,     0,     2,     1,     2,     2,     4,     4,
-       3,     3,     1,     1,     2,     2,     2,     2,     4,     4,
-       1,     1,     2,     2,     3
+       2,     3,     3,     2,     2,     1,     1,     1,     1,     2,
+       1,     2,     1,     1,     2,     1,     1,     1,     1,     5,
+       5,     1,     1,     1,     1,     1,     1,     1,     6,     6,
+       7,     7,    10,    10,     9,     9,     7,     7,     5,     5,
+       6,     6,     7,     7,    10,    10,     9,     9,     6,     7,
+       6,     5,     6,     3,     5,     1,     2,     3,     3,     3,
+       2,     3,     3,     4,     2,     5,     7,     6,     3,     1,
+       3,     4,     6,     5,     1,     2,     4,     4,     5,     5,
+       2,     3,     2,     3,     2,     3,     1,     3,     2,     2,
+       3,     3,     3,     4,     4,     4,     4,     4,     1,     1,
+       1,     1,     1,     1,     0,     2,     1,     2,     2,     4,
+       4,     3,     3,     1,     1,     2,     2,     2,     2,     4,
+       4,     1,     1,     2,     2,     3
 };
 
 
@@ -2018,8 +2018,27 @@ yyreduce:
 #line 2019 "y.tab.c"
     break;
 
-  case 7: /* inputunit: yacc_EOF  */
+  case 7: /* inputunit: error $end  */
 #line 456 "/usr/local/src/chet/src/bash/src/parse.y"
+                        {
+                         global_command = (COMMAND *)NULL;
+                         if (last_command_exit_value == 0)
+                           last_command_exit_value = EX_BADUSAGE;      /* force error return */
+                         if (interactive && parse_and_execute_level == 0)
+                           {
+                             handle_eof_input_unit ();
+                             YYACCEPT;
+                           }
+                         else
+                           {
+                             YYABORT;
+                           }
+                       }
+#line 2038 "y.tab.c"
+    break;
+
+  case 8: /* inputunit: yacc_EOF  */
+#line 471 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          /* Case of EOF seen by itself.  Do ignoreeof or
                             not. */
@@ -2027,495 +2046,495 @@ yyreduce:
                          handle_eof_input_unit ();
                          YYACCEPT;
                        }
-#line 2031 "y.tab.c"
+#line 2050 "y.tab.c"
     break;
 
-  case 8: /* word_list: WORD  */
-#line 466 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 9: /* word_list: WORD  */
+#line 481 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.word_list) = make_word_list ((yyvsp[0].word), (WORD_LIST *)NULL); }
-#line 2037 "y.tab.c"
+#line 2056 "y.tab.c"
     break;
 
-  case 9: /* word_list: word_list WORD  */
-#line 468 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 10: /* word_list: word_list WORD  */
+#line 483 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.word_list) = make_word_list ((yyvsp[0].word), (yyvsp[-1].word_list)); }
-#line 2043 "y.tab.c"
+#line 2062 "y.tab.c"
     break;
 
-  case 10: /* redirection: '>' WORD  */
-#line 472 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 11: /* redirection: '>' WORD  */
+#line 487 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          source.dest = 1;
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_output_direction, redir, 0);
                        }
-#line 2053 "y.tab.c"
+#line 2072 "y.tab.c"
     break;
 
-  case 11: /* redirection: '<' WORD  */
-#line 478 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 12: /* redirection: '<' WORD  */
+#line 493 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          source.dest = 0;
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_input_direction, redir, 0);
                        }
-#line 2063 "y.tab.c"
+#line 2082 "y.tab.c"
     break;
 
-  case 12: /* redirection: NUMBER '>' WORD  */
-#line 484 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 13: /* redirection: NUMBER '>' WORD  */
+#line 499 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          source.dest = (yyvsp[-2].number);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_output_direction, redir, 0);
                        }
-#line 2073 "y.tab.c"
+#line 2092 "y.tab.c"
     break;
 
-  case 13: /* redirection: NUMBER '<' WORD  */
-#line 490 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 14: /* redirection: NUMBER '<' WORD  */
+#line 505 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          source.dest = (yyvsp[-2].number);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_input_direction, redir, 0);
                        }
-#line 2083 "y.tab.c"
+#line 2102 "y.tab.c"
     break;
 
-  case 14: /* redirection: REDIR_WORD '>' WORD  */
-#line 496 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 15: /* redirection: REDIR_WORD '>' WORD  */
+#line 511 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          source.filename = (yyvsp[-2].word);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_output_direction, redir, REDIR_VARASSIGN);
                        }
-#line 2093 "y.tab.c"
+#line 2112 "y.tab.c"
     break;
 
-  case 15: /* redirection: REDIR_WORD '<' WORD  */
-#line 502 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 16: /* redirection: REDIR_WORD '<' WORD  */
+#line 517 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          source.filename = (yyvsp[-2].word);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_input_direction, redir, REDIR_VARASSIGN);
                        }
-#line 2103 "y.tab.c"
+#line 2122 "y.tab.c"
     break;
 
-  case 16: /* redirection: GREATER_GREATER WORD  */
-#line 508 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 17: /* redirection: GREATER_GREATER WORD  */
+#line 523 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          source.dest = 1;
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_appending_to, redir, 0);
                        }
-#line 2113 "y.tab.c"
+#line 2132 "y.tab.c"
     break;
 
-  case 17: /* redirection: NUMBER GREATER_GREATER WORD  */
-#line 514 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 18: /* redirection: NUMBER GREATER_GREATER WORD  */
+#line 529 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          source.dest = (yyvsp[-2].number);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_appending_to, redir, 0);
                        }
-#line 2123 "y.tab.c"
+#line 2142 "y.tab.c"
     break;
 
-  case 18: /* redirection: REDIR_WORD GREATER_GREATER WORD  */
-#line 520 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 19: /* redirection: REDIR_WORD GREATER_GREATER WORD  */
+#line 535 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          source.filename = (yyvsp[-2].word);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_appending_to, redir, REDIR_VARASSIGN);
                        }
-#line 2133 "y.tab.c"
+#line 2152 "y.tab.c"
     break;
 
-  case 19: /* redirection: GREATER_BAR WORD  */
-#line 526 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 20: /* redirection: GREATER_BAR WORD  */
+#line 541 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          source.dest = 1;
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_output_force, redir, 0);
                        }
-#line 2143 "y.tab.c"
+#line 2162 "y.tab.c"
     break;
 
-  case 20: /* redirection: NUMBER GREATER_BAR WORD  */
-#line 532 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 21: /* redirection: NUMBER GREATER_BAR WORD  */
+#line 547 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          source.dest = (yyvsp[-2].number);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_output_force, redir, 0);
                        }
-#line 2153 "y.tab.c"
+#line 2172 "y.tab.c"
     break;
 
-  case 21: /* redirection: REDIR_WORD GREATER_BAR WORD  */
-#line 538 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 22: /* redirection: REDIR_WORD GREATER_BAR WORD  */
+#line 553 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          source.filename = (yyvsp[-2].word);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_output_force, redir, REDIR_VARASSIGN);
                        }
-#line 2163 "y.tab.c"
+#line 2182 "y.tab.c"
     break;
 
-  case 22: /* redirection: LESS_GREATER WORD  */
-#line 544 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 23: /* redirection: LESS_GREATER WORD  */
+#line 559 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          source.dest = 0;
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_input_output, redir, 0);
                        }
-#line 2173 "y.tab.c"
+#line 2192 "y.tab.c"
     break;
 
-  case 23: /* redirection: NUMBER LESS_GREATER WORD  */
-#line 550 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 24: /* redirection: NUMBER LESS_GREATER WORD  */
+#line 565 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          source.dest = (yyvsp[-2].number);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_input_output, redir, 0);
                        }
-#line 2183 "y.tab.c"
+#line 2202 "y.tab.c"
     break;
 
-  case 24: /* redirection: REDIR_WORD LESS_GREATER WORD  */
-#line 556 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 25: /* redirection: REDIR_WORD LESS_GREATER WORD  */
+#line 571 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          source.filename = (yyvsp[-2].word);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_input_output, redir, REDIR_VARASSIGN);
                        }
-#line 2193 "y.tab.c"
+#line 2212 "y.tab.c"
     break;
 
-  case 25: /* redirection: LESS_LESS WORD  */
-#line 562 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 26: /* redirection: LESS_LESS WORD  */
+#line 577 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          source.dest = 0;
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_reading_until, redir, 0);
                          push_heredoc ((yyval.redirect));
                        }
-#line 2204 "y.tab.c"
+#line 2223 "y.tab.c"
     break;
 
-  case 26: /* redirection: NUMBER LESS_LESS WORD  */
-#line 569 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 27: /* redirection: NUMBER LESS_LESS WORD  */
+#line 584 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          source.dest = (yyvsp[-2].number);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_reading_until, redir, 0);
                          push_heredoc ((yyval.redirect));
                        }
-#line 2215 "y.tab.c"
+#line 2234 "y.tab.c"
     break;
 
-  case 27: /* redirection: REDIR_WORD LESS_LESS WORD  */
-#line 576 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 28: /* redirection: REDIR_WORD LESS_LESS WORD  */
+#line 591 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          source.filename = (yyvsp[-2].word);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN);
                          push_heredoc ((yyval.redirect));
                        }
-#line 2226 "y.tab.c"
+#line 2245 "y.tab.c"
     break;
 
-  case 28: /* redirection: LESS_LESS_MINUS WORD  */
-#line 583 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 29: /* redirection: LESS_LESS_MINUS WORD  */
+#line 598 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          source.dest = 0;
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0);
                          push_heredoc ((yyval.redirect));
                        }
-#line 2237 "y.tab.c"
+#line 2256 "y.tab.c"
     break;
 
-  case 29: /* redirection: NUMBER LESS_LESS_MINUS WORD  */
-#line 590 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 30: /* redirection: NUMBER LESS_LESS_MINUS WORD  */
+#line 605 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          source.dest = (yyvsp[-2].number);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0);
                          push_heredoc ((yyval.redirect));
                        }
-#line 2248 "y.tab.c"
+#line 2267 "y.tab.c"
     break;
 
-  case 30: /* redirection: REDIR_WORD LESS_LESS_MINUS WORD  */
-#line 597 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 31: /* redirection: REDIR_WORD LESS_LESS_MINUS WORD  */
+#line 612 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          source.filename = (yyvsp[-2].word);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN);
                          push_heredoc ((yyval.redirect));
                        }
-#line 2259 "y.tab.c"
+#line 2278 "y.tab.c"
     break;
 
-  case 31: /* redirection: LESS_LESS_LESS WORD  */
-#line 604 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 32: /* redirection: LESS_LESS_LESS WORD  */
+#line 619 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          source.dest = 0;
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_reading_string, redir, 0);
                        }
-#line 2269 "y.tab.c"
+#line 2288 "y.tab.c"
     break;
 
-  case 32: /* redirection: NUMBER LESS_LESS_LESS WORD  */
-#line 610 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 33: /* redirection: NUMBER LESS_LESS_LESS WORD  */
+#line 625 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          source.dest = (yyvsp[-2].number);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_reading_string, redir, 0);
                        }
-#line 2279 "y.tab.c"
+#line 2298 "y.tab.c"
     break;
 
-  case 33: /* redirection: REDIR_WORD LESS_LESS_LESS WORD  */
-#line 616 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 34: /* redirection: REDIR_WORD LESS_LESS_LESS WORD  */
+#line 631 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          source.filename = (yyvsp[-2].word);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_reading_string, redir, REDIR_VARASSIGN);
                        }
-#line 2289 "y.tab.c"
+#line 2308 "y.tab.c"
     break;
 
-  case 34: /* redirection: LESS_AND NUMBER  */
-#line 622 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 35: /* redirection: LESS_AND NUMBER  */
+#line 637 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          source.dest = 0;
                          redir.dest = (yyvsp[0].number);
                          (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, 0);
                        }
-#line 2299 "y.tab.c"
+#line 2318 "y.tab.c"
     break;
 
-  case 35: /* redirection: NUMBER LESS_AND NUMBER  */
-#line 628 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 36: /* redirection: NUMBER LESS_AND NUMBER  */
+#line 643 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          source.dest = (yyvsp[-2].number);
                          redir.dest = (yyvsp[0].number);
                          (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, 0);
                        }
-#line 2309 "y.tab.c"
+#line 2328 "y.tab.c"
     break;
 
-  case 36: /* redirection: REDIR_WORD LESS_AND NUMBER  */
-#line 634 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 37: /* redirection: REDIR_WORD LESS_AND NUMBER  */
+#line 649 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          source.filename = (yyvsp[-2].word);
                          redir.dest = (yyvsp[0].number);
                          (yyval.redirect) = make_redirection (source, r_duplicating_input, redir, REDIR_VARASSIGN);
                        }
-#line 2319 "y.tab.c"
+#line 2338 "y.tab.c"
     break;
 
-  case 37: /* redirection: GREATER_AND NUMBER  */
-#line 640 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 38: /* redirection: GREATER_AND NUMBER  */
+#line 655 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          source.dest = 1;
                          redir.dest = (yyvsp[0].number);
                          (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, 0);
                        }
-#line 2329 "y.tab.c"
+#line 2348 "y.tab.c"
     break;
 
-  case 38: /* redirection: NUMBER GREATER_AND NUMBER  */
-#line 646 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 39: /* redirection: NUMBER GREATER_AND NUMBER  */
+#line 661 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          source.dest = (yyvsp[-2].number);
                          redir.dest = (yyvsp[0].number);
                          (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, 0);
                        }
-#line 2339 "y.tab.c"
+#line 2358 "y.tab.c"
     break;
 
-  case 39: /* redirection: REDIR_WORD GREATER_AND NUMBER  */
-#line 652 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 40: /* redirection: REDIR_WORD GREATER_AND NUMBER  */
+#line 667 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          source.filename = (yyvsp[-2].word);
                          redir.dest = (yyvsp[0].number);
                          (yyval.redirect) = make_redirection (source, r_duplicating_output, redir, REDIR_VARASSIGN);
                        }
-#line 2349 "y.tab.c"
+#line 2368 "y.tab.c"
     break;
 
-  case 40: /* redirection: LESS_AND WORD  */
-#line 658 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 41: /* redirection: LESS_AND WORD  */
+#line 673 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          source.dest = 0;
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, 0);
                        }
-#line 2359 "y.tab.c"
+#line 2378 "y.tab.c"
     break;
 
-  case 41: /* redirection: NUMBER LESS_AND WORD  */
-#line 664 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 42: /* redirection: NUMBER LESS_AND WORD  */
+#line 679 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          source.dest = (yyvsp[-2].number);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, 0);
                        }
-#line 2369 "y.tab.c"
+#line 2388 "y.tab.c"
     break;
 
-  case 42: /* redirection: REDIR_WORD LESS_AND WORD  */
-#line 670 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 43: /* redirection: REDIR_WORD LESS_AND WORD  */
+#line 685 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          source.filename = (yyvsp[-2].word);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_duplicating_input_word, redir, REDIR_VARASSIGN);
                        }
-#line 2379 "y.tab.c"
+#line 2398 "y.tab.c"
     break;
 
-  case 43: /* redirection: GREATER_AND WORD  */
-#line 676 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 44: /* redirection: GREATER_AND WORD  */
+#line 691 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          source.dest = 1;
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, 0);
                        }
-#line 2389 "y.tab.c"
+#line 2408 "y.tab.c"
     break;
 
-  case 44: /* redirection: NUMBER GREATER_AND WORD  */
-#line 682 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 45: /* redirection: NUMBER GREATER_AND WORD  */
+#line 697 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          source.dest = (yyvsp[-2].number);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, 0);
                        }
-#line 2399 "y.tab.c"
+#line 2418 "y.tab.c"
     break;
 
-  case 45: /* redirection: REDIR_WORD GREATER_AND WORD  */
-#line 688 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 46: /* redirection: REDIR_WORD GREATER_AND WORD  */
+#line 703 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          source.filename = (yyvsp[-2].word);
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_duplicating_output_word, redir, REDIR_VARASSIGN);
                        }
-#line 2409 "y.tab.c"
+#line 2428 "y.tab.c"
     break;
 
-  case 46: /* redirection: GREATER_AND '-'  */
-#line 694 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 47: /* redirection: GREATER_AND '-'  */
+#line 709 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          source.dest = 1;
                          redir.dest = 0;
                          (yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
                        }
-#line 2419 "y.tab.c"
+#line 2438 "y.tab.c"
     break;
 
-  case 47: /* redirection: NUMBER GREATER_AND '-'  */
-#line 700 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 48: /* redirection: NUMBER GREATER_AND '-'  */
+#line 715 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          source.dest = (yyvsp[-2].number);
                          redir.dest = 0;
                          (yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
                        }
-#line 2429 "y.tab.c"
+#line 2448 "y.tab.c"
     break;
 
-  case 48: /* redirection: REDIR_WORD GREATER_AND '-'  */
-#line 706 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 49: /* redirection: REDIR_WORD GREATER_AND '-'  */
+#line 721 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          source.filename = (yyvsp[-2].word);
                          redir.dest = 0;
                          (yyval.redirect) = make_redirection (source, r_close_this, redir, REDIR_VARASSIGN);
                        }
-#line 2439 "y.tab.c"
+#line 2458 "y.tab.c"
     break;
 
-  case 49: /* redirection: LESS_AND '-'  */
-#line 712 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 50: /* redirection: LESS_AND '-'  */
+#line 727 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          source.dest = 0;
                          redir.dest = 0;
                          (yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
                        }
-#line 2449 "y.tab.c"
+#line 2468 "y.tab.c"
     break;
 
-  case 50: /* redirection: NUMBER LESS_AND '-'  */
-#line 718 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 51: /* redirection: NUMBER LESS_AND '-'  */
+#line 733 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          source.dest = (yyvsp[-2].number);
                          redir.dest = 0;
                          (yyval.redirect) = make_redirection (source, r_close_this, redir, 0);
                        }
-#line 2459 "y.tab.c"
+#line 2478 "y.tab.c"
     break;
 
-  case 51: /* redirection: REDIR_WORD LESS_AND '-'  */
-#line 724 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 52: /* redirection: REDIR_WORD LESS_AND '-'  */
+#line 739 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          source.filename = (yyvsp[-2].word);
                          redir.dest = 0;
                          (yyval.redirect) = make_redirection (source, r_close_this, redir, REDIR_VARASSIGN);
                        }
-#line 2469 "y.tab.c"
+#line 2488 "y.tab.c"
     break;
 
-  case 52: /* redirection: AND_GREATER WORD  */
-#line 730 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 53: /* redirection: AND_GREATER WORD  */
+#line 745 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          source.dest = 1;
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_err_and_out, redir, 0);
                        }
-#line 2479 "y.tab.c"
+#line 2498 "y.tab.c"
     break;
 
-  case 53: /* redirection: AND_GREATER_GREATER WORD  */
-#line 736 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 54: /* redirection: AND_GREATER_GREATER WORD  */
+#line 751 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          source.dest = 1;
                          redir.filename = (yyvsp[0].word);
                          (yyval.redirect) = make_redirection (source, r_append_err_and_out, redir, 0);
                        }
-#line 2489 "y.tab.c"
+#line 2508 "y.tab.c"
     break;
 
-  case 54: /* simple_command_element: WORD  */
-#line 744 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 55: /* simple_command_element: WORD  */
+#line 759 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.element).word = (yyvsp[0].word); (yyval.element).redirect = 0; }
-#line 2495 "y.tab.c"
+#line 2514 "y.tab.c"
     break;
 
-  case 55: /* simple_command_element: ASSIGNMENT_WORD  */
-#line 746 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 56: /* simple_command_element: ASSIGNMENT_WORD  */
+#line 761 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.element).word = (yyvsp[0].word); (yyval.element).redirect = 0; }
-#line 2501 "y.tab.c"
+#line 2520 "y.tab.c"
     break;
 
-  case 56: /* simple_command_element: redirection  */
-#line 748 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 57: /* simple_command_element: redirection  */
+#line 763 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.element).redirect = (yyvsp[0].redirect); (yyval.element).word = 0; }
-#line 2507 "y.tab.c"
+#line 2526 "y.tab.c"
     break;
 
-  case 57: /* redirection_list: redirection  */
-#line 752 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 58: /* redirection_list: redirection  */
+#line 767 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          (yyval.redirect) = (yyvsp[0].redirect);
                        }
-#line 2515 "y.tab.c"
+#line 2534 "y.tab.c"
     break;
 
-  case 58: /* redirection_list: redirection_list redirection  */
-#line 756 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 59: /* redirection_list: redirection_list redirection  */
+#line 771 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          register REDIRECT *t;
 
@@ -2524,35 +2543,35 @@ yyreduce:
                          t->next = (yyvsp[0].redirect);
                          (yyval.redirect) = (yyvsp[-1].redirect);
                        }
-#line 2528 "y.tab.c"
+#line 2547 "y.tab.c"
     break;
 
-  case 59: /* simple_command: simple_command_element  */
-#line 767 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 60: /* simple_command: simple_command_element  */
+#line 782 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.command) = make_simple_command ((yyvsp[0].element), (COMMAND *)NULL); }
-#line 2534 "y.tab.c"
+#line 2553 "y.tab.c"
     break;
 
-  case 60: /* simple_command: simple_command simple_command_element  */
-#line 769 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 61: /* simple_command: simple_command simple_command_element  */
+#line 784 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.command) = make_simple_command ((yyvsp[0].element), (yyvsp[-1].command)); }
-#line 2540 "y.tab.c"
+#line 2559 "y.tab.c"
     break;
 
-  case 61: /* command: simple_command  */
-#line 773 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 62: /* command: simple_command  */
+#line 788 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.command) = clean_simple_command ((yyvsp[0].command)); }
-#line 2546 "y.tab.c"
+#line 2565 "y.tab.c"
     break;
 
-  case 62: /* command: shell_command  */
-#line 775 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 63: /* command: shell_command  */
+#line 790 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.command) = (yyvsp[0].command); }
-#line 2552 "y.tab.c"
+#line 2571 "y.tab.c"
     break;
 
-  case 63: /* command: shell_command redirection_list  */
-#line 777 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 64: /* command: shell_command redirection_list  */
+#line 792 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          COMMAND *tc;
 
@@ -2568,330 +2587,330 @@ yyreduce:
                            tc->redirects = (yyvsp[0].redirect);
                          (yyval.command) = (yyvsp[-1].command);
                        }
-#line 2572 "y.tab.c"
+#line 2591 "y.tab.c"
     break;
 
-  case 64: /* command: function_def  */
-#line 793 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 65: /* command: function_def  */
+#line 808 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.command) = (yyvsp[0].command); }
-#line 2578 "y.tab.c"
+#line 2597 "y.tab.c"
     break;
 
-  case 65: /* command: coproc  */
-#line 795 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 66: /* command: coproc  */
+#line 810 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.command) = (yyvsp[0].command); }
-#line 2584 "y.tab.c"
+#line 2603 "y.tab.c"
     break;
 
-  case 66: /* shell_command: for_command  */
-#line 799 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 67: /* shell_command: for_command  */
+#line 814 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.command) = (yyvsp[0].command); }
-#line 2590 "y.tab.c"
+#line 2609 "y.tab.c"
     break;
 
-  case 67: /* shell_command: case_command  */
-#line 801 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 68: /* shell_command: case_command  */
+#line 816 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.command) = (yyvsp[0].command); }
-#line 2596 "y.tab.c"
+#line 2615 "y.tab.c"
     break;
 
-  case 68: /* shell_command: WHILE compound_list DO compound_list DONE  */
-#line 803 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 69: /* shell_command: WHILE compound_list DO compound_list DONE  */
+#line 818 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.command) = make_while_command ((yyvsp[-3].command), (yyvsp[-1].command)); }
-#line 2602 "y.tab.c"
+#line 2621 "y.tab.c"
     break;
 
-  case 69: /* shell_command: UNTIL compound_list DO compound_list DONE  */
-#line 805 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 70: /* shell_command: UNTIL compound_list DO compound_list DONE  */
+#line 820 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.command) = make_until_command ((yyvsp[-3].command), (yyvsp[-1].command)); }
-#line 2608 "y.tab.c"
+#line 2627 "y.tab.c"
     break;
 
-  case 70: /* shell_command: select_command  */
-#line 807 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 71: /* shell_command: select_command  */
+#line 822 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.command) = (yyvsp[0].command); }
-#line 2614 "y.tab.c"
+#line 2633 "y.tab.c"
     break;
 
-  case 71: /* shell_command: if_command  */
-#line 809 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 72: /* shell_command: if_command  */
+#line 824 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.command) = (yyvsp[0].command); }
-#line 2620 "y.tab.c"
+#line 2639 "y.tab.c"
     break;
 
-  case 72: /* shell_command: subshell  */
-#line 811 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 73: /* shell_command: subshell  */
+#line 826 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.command) = (yyvsp[0].command); }
-#line 2626 "y.tab.c"
+#line 2645 "y.tab.c"
     break;
 
-  case 73: /* shell_command: group_command  */
-#line 813 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 74: /* shell_command: group_command  */
+#line 828 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.command) = (yyvsp[0].command); }
-#line 2632 "y.tab.c"
+#line 2651 "y.tab.c"
     break;
 
-  case 74: /* shell_command: arith_command  */
-#line 815 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 75: /* shell_command: arith_command  */
+#line 830 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.command) = (yyvsp[0].command); }
-#line 2638 "y.tab.c"
+#line 2657 "y.tab.c"
     break;
 
-  case 75: /* shell_command: cond_command  */
-#line 817 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 76: /* shell_command: cond_command  */
+#line 832 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.command) = (yyvsp[0].command); }
-#line 2644 "y.tab.c"
+#line 2663 "y.tab.c"
     break;
 
-  case 76: /* shell_command: arith_for_command  */
-#line 819 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 77: /* shell_command: arith_for_command  */
+#line 834 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.command) = (yyvsp[0].command); }
-#line 2650 "y.tab.c"
+#line 2669 "y.tab.c"
     break;
 
-  case 77: /* for_command: FOR WORD newline_list DO compound_list DONE  */
-#line 823 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 78: /* for_command: FOR WORD newline_list DO compound_list DONE  */
+#line 838 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          (yyval.command) = make_for_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2659 "y.tab.c"
+#line 2678 "y.tab.c"
     break;
 
-  case 78: /* for_command: FOR WORD newline_list '{' compound_list '}'  */
-#line 828 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 79: /* for_command: FOR WORD newline_list '{' compound_list '}'  */
+#line 843 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          (yyval.command) = make_for_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2668 "y.tab.c"
+#line 2687 "y.tab.c"
     break;
 
-  case 79: /* for_command: FOR WORD ';' newline_list DO compound_list DONE  */
-#line 833 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 80: /* for_command: FOR WORD ';' newline_list DO compound_list DONE  */
+#line 848 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          (yyval.command) = make_for_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2677 "y.tab.c"
+#line 2696 "y.tab.c"
     break;
 
-  case 80: /* for_command: FOR WORD ';' newline_list '{' compound_list '}'  */
-#line 838 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 81: /* for_command: FOR WORD ';' newline_list '{' compound_list '}'  */
+#line 853 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          (yyval.command) = make_for_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2686 "y.tab.c"
+#line 2705 "y.tab.c"
     break;
 
-  case 81: /* for_command: FOR WORD newline_list IN word_list list_terminator newline_list DO compound_list DONE  */
-#line 843 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 82: /* for_command: FOR WORD newline_list IN word_list list_terminator newline_list DO compound_list DONE  */
+#line 858 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          (yyval.command) = make_for_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2695 "y.tab.c"
+#line 2714 "y.tab.c"
     break;
 
-  case 82: /* for_command: FOR WORD newline_list IN word_list list_terminator newline_list '{' compound_list '}'  */
-#line 848 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 83: /* for_command: FOR WORD newline_list IN word_list list_terminator newline_list '{' compound_list '}'  */
+#line 863 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          (yyval.command) = make_for_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2704 "y.tab.c"
+#line 2723 "y.tab.c"
     break;
 
-  case 83: /* for_command: FOR WORD newline_list IN list_terminator newline_list DO compound_list DONE  */
-#line 853 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 84: /* for_command: FOR WORD newline_list IN list_terminator newline_list DO compound_list DONE  */
+#line 868 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          (yyval.command) = make_for_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2713 "y.tab.c"
+#line 2732 "y.tab.c"
     break;
 
-  case 84: /* for_command: FOR WORD newline_list IN list_terminator newline_list '{' compound_list '}'  */
-#line 858 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 85: /* for_command: FOR WORD newline_list IN list_terminator newline_list '{' compound_list '}'  */
+#line 873 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          (yyval.command) = make_for_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2722 "y.tab.c"
+#line 2741 "y.tab.c"
     break;
 
-  case 85: /* arith_for_command: FOR ARITH_FOR_EXPRS list_terminator newline_list DO compound_list DONE  */
-#line 865 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 86: /* arith_for_command: FOR ARITH_FOR_EXPRS list_terminator newline_list DO compound_list DONE  */
+#line 880 "/usr/local/src/chet/src/bash/src/parse.y"
                                 {
                                  (yyval.command) = make_arith_for_command ((yyvsp[-5].word_list), (yyvsp[-1].command), arith_for_lineno);
                                  if ((yyval.command) == 0) YYERROR;
                                  if (word_top > 0) word_top--;
                                }
-#line 2732 "y.tab.c"
+#line 2751 "y.tab.c"
     break;
 
-  case 86: /* arith_for_command: FOR ARITH_FOR_EXPRS list_terminator newline_list '{' compound_list '}'  */
-#line 871 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 87: /* arith_for_command: FOR ARITH_FOR_EXPRS list_terminator newline_list '{' compound_list '}'  */
+#line 886 "/usr/local/src/chet/src/bash/src/parse.y"
                                 {
                                  (yyval.command) = make_arith_for_command ((yyvsp[-5].word_list), (yyvsp[-1].command), arith_for_lineno);
                                  if ((yyval.command) == 0) YYERROR;
                                  if (word_top > 0) word_top--;
                                }
-#line 2742 "y.tab.c"
+#line 2761 "y.tab.c"
     break;
 
-  case 87: /* arith_for_command: FOR ARITH_FOR_EXPRS DO compound_list DONE  */
-#line 877 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 88: /* arith_for_command: FOR ARITH_FOR_EXPRS DO compound_list DONE  */
+#line 892 "/usr/local/src/chet/src/bash/src/parse.y"
                                 {
                                  (yyval.command) = make_arith_for_command ((yyvsp[-3].word_list), (yyvsp[-1].command), arith_for_lineno);
                                  if ((yyval.command) == 0) YYERROR;
                                  if (word_top > 0) word_top--;
                                }
-#line 2752 "y.tab.c"
+#line 2771 "y.tab.c"
     break;
 
-  case 88: /* arith_for_command: FOR ARITH_FOR_EXPRS '{' compound_list '}'  */
-#line 883 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 89: /* arith_for_command: FOR ARITH_FOR_EXPRS '{' compound_list '}'  */
+#line 898 "/usr/local/src/chet/src/bash/src/parse.y"
                                 {
                                  (yyval.command) = make_arith_for_command ((yyvsp[-3].word_list), (yyvsp[-1].command), arith_for_lineno);
                                  if ((yyval.command) == 0) YYERROR;
                                  if (word_top > 0) word_top--;
                                }
-#line 2762 "y.tab.c"
+#line 2781 "y.tab.c"
     break;
 
-  case 89: /* select_command: SELECT WORD newline_list DO compound_list DONE  */
-#line 891 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 90: /* select_command: SELECT WORD newline_list DO compound_list DONE  */
+#line 906 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          (yyval.command) = make_select_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2771 "y.tab.c"
+#line 2790 "y.tab.c"
     break;
 
-  case 90: /* select_command: SELECT WORD newline_list '{' compound_list '}'  */
-#line 896 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 91: /* select_command: SELECT WORD newline_list '{' compound_list '}'  */
+#line 911 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          (yyval.command) = make_select_command ((yyvsp[-4].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2780 "y.tab.c"
+#line 2799 "y.tab.c"
     break;
 
-  case 91: /* select_command: SELECT WORD ';' newline_list DO compound_list DONE  */
-#line 901 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 92: /* select_command: SELECT WORD ';' newline_list DO compound_list DONE  */
+#line 916 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          (yyval.command) = make_select_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2789 "y.tab.c"
+#line 2808 "y.tab.c"
     break;
 
-  case 92: /* select_command: SELECT WORD ';' newline_list '{' compound_list '}'  */
-#line 906 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 93: /* select_command: SELECT WORD ';' newline_list '{' compound_list '}'  */
+#line 921 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          (yyval.command) = make_select_command ((yyvsp[-5].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2798 "y.tab.c"
+#line 2817 "y.tab.c"
     break;
 
-  case 93: /* select_command: SELECT WORD newline_list IN word_list list_terminator newline_list DO compound_list DONE  */
-#line 911 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 94: /* select_command: SELECT WORD newline_list IN word_list list_terminator newline_list DO compound_list DONE  */
+#line 926 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          (yyval.command) = make_select_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2807 "y.tab.c"
+#line 2826 "y.tab.c"
     break;
 
-  case 94: /* select_command: SELECT WORD newline_list IN word_list list_terminator newline_list '{' compound_list '}'  */
-#line 916 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 95: /* select_command: SELECT WORD newline_list IN word_list list_terminator newline_list '{' compound_list '}'  */
+#line 931 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          (yyval.command) = make_select_command ((yyvsp[-8].word), REVERSE_LIST ((yyvsp[-5].word_list), WORD_LIST *), (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2816 "y.tab.c"
+#line 2835 "y.tab.c"
     break;
 
-  case 95: /* select_command: SELECT WORD newline_list IN list_terminator newline_list DO compound_list DONE  */
-#line 921 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 96: /* select_command: SELECT WORD newline_list IN list_terminator newline_list DO compound_list DONE  */
+#line 936 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          (yyval.command) = make_select_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2825 "y.tab.c"
+#line 2844 "y.tab.c"
     break;
 
-  case 96: /* select_command: SELECT WORD newline_list IN list_terminator newline_list '{' compound_list '}'  */
-#line 926 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 97: /* select_command: SELECT WORD newline_list IN list_terminator newline_list '{' compound_list '}'  */
+#line 941 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          (yyval.command) = make_select_command ((yyvsp[-7].word), (WORD_LIST *)NULL, (yyvsp[-1].command), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2834 "y.tab.c"
+#line 2853 "y.tab.c"
     break;
 
-  case 97: /* case_command: CASE WORD newline_list IN newline_list ESAC  */
-#line 933 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 98: /* case_command: CASE WORD newline_list IN newline_list ESAC  */
+#line 948 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          (yyval.command) = make_case_command ((yyvsp[-4].word), (PATTERN_LIST *)NULL, word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2843 "y.tab.c"
+#line 2862 "y.tab.c"
     break;
 
-  case 98: /* case_command: CASE WORD newline_list IN case_clause_sequence newline_list ESAC  */
-#line 938 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 99: /* case_command: CASE WORD newline_list IN case_clause_sequence newline_list ESAC  */
+#line 953 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          (yyval.command) = make_case_command ((yyvsp[-5].word), (yyvsp[-2].pattern), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2852 "y.tab.c"
+#line 2871 "y.tab.c"
     break;
 
-  case 99: /* case_command: CASE WORD newline_list IN case_clause ESAC  */
-#line 943 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 100: /* case_command: CASE WORD newline_list IN case_clause ESAC  */
+#line 958 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          (yyval.command) = make_case_command ((yyvsp[-4].word), (yyvsp[-1].pattern), word_lineno[word_top]);
                          if (word_top > 0) word_top--;
                        }
-#line 2861 "y.tab.c"
+#line 2880 "y.tab.c"
     break;
 
-  case 100: /* function_def: WORD '(' ')' newline_list function_body  */
-#line 950 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 101: /* function_def: WORD '(' ')' newline_list function_body  */
+#line 965 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); }
-#line 2867 "y.tab.c"
+#line 2886 "y.tab.c"
     break;
 
-  case 101: /* function_def: FUNCTION WORD '(' ')' newline_list function_body  */
-#line 952 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 102: /* function_def: FUNCTION WORD '(' ')' newline_list function_body  */
+#line 967 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.command) = make_function_def ((yyvsp[-4].word), (yyvsp[0].command), function_dstart, function_bstart); }
-#line 2873 "y.tab.c"
+#line 2892 "y.tab.c"
     break;
 
-  case 102: /* function_def: FUNCTION WORD function_body  */
-#line 954 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 103: /* function_def: FUNCTION WORD function_body  */
+#line 969 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.command) = make_function_def ((yyvsp[-1].word), (yyvsp[0].command), function_dstart, function_bstart); }
-#line 2879 "y.tab.c"
+#line 2898 "y.tab.c"
     break;
 
-  case 103: /* function_def: FUNCTION WORD '\n' newline_list function_body  */
-#line 956 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 104: /* function_def: FUNCTION WORD '\n' newline_list function_body  */
+#line 971 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.command) = make_function_def ((yyvsp[-3].word), (yyvsp[0].command), function_dstart, function_bstart); }
-#line 2885 "y.tab.c"
+#line 2904 "y.tab.c"
     break;
 
-  case 104: /* function_body: shell_command  */
-#line 960 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 105: /* function_body: shell_command  */
+#line 975 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.command) = (yyvsp[0].command); }
-#line 2891 "y.tab.c"
+#line 2910 "y.tab.c"
     break;
 
-  case 105: /* function_body: shell_command redirection_list  */
-#line 962 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 106: /* function_body: shell_command redirection_list  */
+#line 977 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          COMMAND *tc;
 
@@ -2920,45 +2939,45 @@ yyreduce:
                            tc->redirects = (yyvsp[0].redirect);
                          (yyval.command) = (yyvsp[-1].command);
                        }
-#line 2924 "y.tab.c"
+#line 2943 "y.tab.c"
     break;
 
-  case 106: /* subshell: '(' compound_list ')'  */
-#line 993 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 107: /* subshell: '(' compound_list ')'  */
+#line 1008 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          (yyval.command) = make_subshell_command ((yyvsp[-1].command));
                          (yyval.command)->flags |= CMD_WANT_SUBSHELL;
                        }
-#line 2933 "y.tab.c"
+#line 2952 "y.tab.c"
     break;
 
-  case 107: /* comsub: DOLPAREN compound_list ')'  */
-#line 1000 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 108: /* comsub: DOLPAREN compound_list ')'  */
+#line 1015 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          (yyval.command) = (yyvsp[-1].command);
                        }
-#line 2941 "y.tab.c"
+#line 2960 "y.tab.c"
     break;
 
-  case 108: /* comsub: DOLPAREN newline_list ')'  */
-#line 1004 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 109: /* comsub: DOLPAREN newline_list ')'  */
+#line 1019 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          (yyval.command) = (COMMAND *)NULL;
                        }
-#line 2949 "y.tab.c"
+#line 2968 "y.tab.c"
     break;
 
-  case 109: /* coproc: COPROC shell_command  */
-#line 1010 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 110: /* coproc: COPROC shell_command  */
+#line 1025 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          (yyval.command) = make_coproc_command ("COPROC", (yyvsp[0].command));
                          (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
                        }
-#line 2958 "y.tab.c"
+#line 2977 "y.tab.c"
     break;
 
-  case 110: /* coproc: COPROC shell_command redirection_list  */
-#line 1015 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 111: /* coproc: COPROC shell_command redirection_list  */
+#line 1030 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          COMMAND *tc;
 
@@ -2975,20 +2994,20 @@ yyreduce:
                          (yyval.command) = make_coproc_command ("COPROC", (yyvsp[-1].command));
                          (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
                        }
-#line 2979 "y.tab.c"
+#line 2998 "y.tab.c"
     break;
 
-  case 111: /* coproc: COPROC WORD shell_command  */
-#line 1032 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 112: /* coproc: COPROC WORD shell_command  */
+#line 1047 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          (yyval.command) = make_coproc_command ((yyvsp[-1].word)->word, (yyvsp[0].command));
                          (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
                        }
-#line 2988 "y.tab.c"
+#line 3007 "y.tab.c"
     break;
 
-  case 112: /* coproc: COPROC WORD shell_command redirection_list  */
-#line 1037 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 113: /* coproc: COPROC WORD shell_command redirection_list  */
+#line 1052 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          COMMAND *tc;
 
@@ -3005,245 +3024,245 @@ yyreduce:
                          (yyval.command) = make_coproc_command ((yyvsp[-2].word)->word, (yyvsp[-1].command));
                          (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
                        }
-#line 3009 "y.tab.c"
+#line 3028 "y.tab.c"
     break;
 
-  case 113: /* coproc: COPROC simple_command  */
-#line 1054 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 114: /* coproc: COPROC simple_command  */
+#line 1069 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          (yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[0].command)));
                          (yyval.command)->flags |= CMD_WANT_SUBSHELL|CMD_COPROC_SUBSHELL;
                        }
-#line 3018 "y.tab.c"
+#line 3037 "y.tab.c"
     break;
 
-  case 114: /* if_command: IF compound_list THEN compound_list FI  */
-#line 1061 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 115: /* if_command: IF compound_list THEN compound_list FI  */
+#line 1076 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.command) = make_if_command ((yyvsp[-3].command), (yyvsp[-1].command), (COMMAND *)NULL); }
-#line 3024 "y.tab.c"
+#line 3043 "y.tab.c"
     break;
 
-  case 115: /* if_command: IF compound_list THEN compound_list ELSE compound_list FI  */
-#line 1063 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 116: /* if_command: IF compound_list THEN compound_list ELSE compound_list FI  */
+#line 1078 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.command) = make_if_command ((yyvsp[-5].command), (yyvsp[-3].command), (yyvsp[-1].command)); }
-#line 3030 "y.tab.c"
+#line 3049 "y.tab.c"
     break;
 
-  case 116: /* if_command: IF compound_list THEN compound_list elif_clause FI  */
-#line 1065 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 117: /* if_command: IF compound_list THEN compound_list elif_clause FI  */
+#line 1080 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.command) = make_if_command ((yyvsp[-4].command), (yyvsp[-2].command), (yyvsp[-1].command)); }
-#line 3036 "y.tab.c"
+#line 3055 "y.tab.c"
     break;
 
-  case 117: /* group_command: '{' compound_list '}'  */
-#line 1070 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 118: /* group_command: '{' compound_list '}'  */
+#line 1085 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.command) = make_group_command ((yyvsp[-1].command)); }
-#line 3042 "y.tab.c"
+#line 3061 "y.tab.c"
     break;
 
-  case 118: /* arith_command: ARITH_CMD  */
-#line 1074 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 119: /* arith_command: ARITH_CMD  */
+#line 1089 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.command) = make_arith_command ((yyvsp[0].word_list)); }
-#line 3048 "y.tab.c"
+#line 3067 "y.tab.c"
     break;
 
-  case 119: /* cond_command: COND_START COND_CMD COND_END  */
-#line 1078 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 120: /* cond_command: COND_START COND_CMD COND_END  */
+#line 1093 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.command) = (yyvsp[-1].command); }
-#line 3054 "y.tab.c"
+#line 3073 "y.tab.c"
     break;
 
-  case 120: /* elif_clause: ELIF compound_list THEN compound_list  */
-#line 1082 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 121: /* elif_clause: ELIF compound_list THEN compound_list  */
+#line 1097 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.command) = make_if_command ((yyvsp[-2].command), (yyvsp[0].command), (COMMAND *)NULL); }
-#line 3060 "y.tab.c"
+#line 3079 "y.tab.c"
     break;
 
-  case 121: /* elif_clause: ELIF compound_list THEN compound_list ELSE compound_list  */
-#line 1084 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 122: /* elif_clause: ELIF compound_list THEN compound_list ELSE compound_list  */
+#line 1099 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.command) = make_if_command ((yyvsp[-4].command), (yyvsp[-2].command), (yyvsp[0].command)); }
-#line 3066 "y.tab.c"
+#line 3085 "y.tab.c"
     break;
 
-  case 122: /* elif_clause: ELIF compound_list THEN compound_list elif_clause  */
-#line 1086 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 123: /* elif_clause: ELIF compound_list THEN compound_list elif_clause  */
+#line 1101 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.command) = make_if_command ((yyvsp[-3].command), (yyvsp[-1].command), (yyvsp[0].command)); }
-#line 3072 "y.tab.c"
+#line 3091 "y.tab.c"
     break;
 
-  case 124: /* case_clause: case_clause_sequence pattern_list  */
-#line 1091 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 125: /* case_clause: case_clause_sequence pattern_list  */
+#line 1106 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyvsp[0].pattern)->next = (yyvsp[-1].pattern); (yyval.pattern) = (yyvsp[0].pattern); }
-#line 3078 "y.tab.c"
+#line 3097 "y.tab.c"
     break;
 
-  case 125: /* pattern_list: newline_list pattern ')' compound_list  */
-#line 1095 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 126: /* pattern_list: newline_list pattern ')' compound_list  */
+#line 1110 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (yyvsp[0].command)); }
-#line 3084 "y.tab.c"
+#line 3103 "y.tab.c"
     break;
 
-  case 126: /* pattern_list: newline_list pattern ')' newline_list  */
-#line 1097 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 127: /* pattern_list: newline_list pattern ')' newline_list  */
+#line 1112 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (COMMAND *)NULL); }
-#line 3090 "y.tab.c"
+#line 3109 "y.tab.c"
     break;
 
-  case 127: /* pattern_list: newline_list '(' pattern ')' compound_list  */
-#line 1099 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 128: /* pattern_list: newline_list '(' pattern ')' compound_list  */
+#line 1114 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (yyvsp[0].command)); }
-#line 3096 "y.tab.c"
+#line 3115 "y.tab.c"
     break;
 
-  case 128: /* pattern_list: newline_list '(' pattern ')' newline_list  */
-#line 1101 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 129: /* pattern_list: newline_list '(' pattern ')' newline_list  */
+#line 1116 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.pattern) = make_pattern_list ((yyvsp[-2].word_list), (COMMAND *)NULL); }
-#line 3102 "y.tab.c"
+#line 3121 "y.tab.c"
     break;
 
-  case 129: /* case_clause_sequence: pattern_list SEMI_SEMI  */
-#line 1105 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 130: /* case_clause_sequence: pattern_list SEMI_SEMI  */
+#line 1120 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.pattern) = (yyvsp[-1].pattern); }
-#line 3108 "y.tab.c"
+#line 3127 "y.tab.c"
     break;
 
-  case 130: /* case_clause_sequence: case_clause_sequence pattern_list SEMI_SEMI  */
-#line 1107 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 131: /* case_clause_sequence: case_clause_sequence pattern_list SEMI_SEMI  */
+#line 1122 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); }
-#line 3114 "y.tab.c"
+#line 3133 "y.tab.c"
     break;
 
-  case 131: /* case_clause_sequence: pattern_list SEMI_AND  */
-#line 1109 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 132: /* case_clause_sequence: pattern_list SEMI_AND  */
+#line 1124 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyvsp[-1].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[-1].pattern); }
-#line 3120 "y.tab.c"
+#line 3139 "y.tab.c"
     break;
 
-  case 132: /* case_clause_sequence: case_clause_sequence pattern_list SEMI_AND  */
-#line 1111 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 133: /* case_clause_sequence: case_clause_sequence pattern_list SEMI_AND  */
+#line 1126 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyvsp[-1].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); }
-#line 3126 "y.tab.c"
+#line 3145 "y.tab.c"
     break;
 
-  case 133: /* case_clause_sequence: pattern_list SEMI_SEMI_AND  */
-#line 1113 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 134: /* case_clause_sequence: pattern_list SEMI_SEMI_AND  */
+#line 1128 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyvsp[-1].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[-1].pattern); }
-#line 3132 "y.tab.c"
+#line 3151 "y.tab.c"
     break;
 
-  case 134: /* case_clause_sequence: case_clause_sequence pattern_list SEMI_SEMI_AND  */
-#line 1115 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 135: /* case_clause_sequence: case_clause_sequence pattern_list SEMI_SEMI_AND  */
+#line 1130 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyvsp[-1].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[-1].pattern)->next = (yyvsp[-2].pattern); (yyval.pattern) = (yyvsp[-1].pattern); }
-#line 3138 "y.tab.c"
+#line 3157 "y.tab.c"
     break;
 
-  case 135: /* pattern: WORD  */
-#line 1119 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 136: /* pattern: WORD  */
+#line 1134 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.word_list) = make_word_list ((yyvsp[0].word), (WORD_LIST *)NULL); }
-#line 3144 "y.tab.c"
+#line 3163 "y.tab.c"
     break;
 
-  case 136: /* pattern: pattern '|' WORD  */
-#line 1121 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 137: /* pattern: pattern '|' WORD  */
+#line 1136 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.word_list) = make_word_list ((yyvsp[0].word), (yyvsp[-2].word_list)); }
-#line 3150 "y.tab.c"
+#line 3169 "y.tab.c"
     break;
 
-  case 137: /* compound_list: newline_list list0  */
-#line 1130 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 138: /* compound_list: newline_list list0  */
+#line 1145 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          (yyval.command) = (yyvsp[0].command);
                          if (need_here_doc && last_read_token == '\n')
                            gather_here_documents ();
                         }
-#line 3160 "y.tab.c"
+#line 3179 "y.tab.c"
     break;
 
-  case 138: /* compound_list: newline_list list1  */
-#line 1136 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 139: /* compound_list: newline_list list1  */
+#line 1151 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          (yyval.command) = (yyvsp[0].command);
                        }
-#line 3168 "y.tab.c"
+#line 3187 "y.tab.c"
     break;
 
-  case 140: /* list0: list1 '&' newline_list  */
-#line 1143 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 141: /* list0: list1 '&' newline_list  */
+#line 1158 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          if ((yyvsp[-2].command)->type == cm_connection)
                            (yyval.command) = connect_async_list ((yyvsp[-2].command), (COMMAND *)NULL, '&');
                          else
                            (yyval.command) = command_connect ((yyvsp[-2].command), (COMMAND *)NULL, '&');
                        }
-#line 3179 "y.tab.c"
+#line 3198 "y.tab.c"
     break;
 
-  case 142: /* list1: list1 AND_AND newline_list list1  */
-#line 1154 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 143: /* list1: list1 AND_AND newline_list list1  */
+#line 1169 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), AND_AND); }
-#line 3185 "y.tab.c"
+#line 3204 "y.tab.c"
     break;
 
-  case 143: /* list1: list1 OR_OR newline_list list1  */
-#line 1156 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 144: /* list1: list1 OR_OR newline_list list1  */
+#line 1171 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), OR_OR); }
-#line 3191 "y.tab.c"
+#line 3210 "y.tab.c"
     break;
 
-  case 144: /* list1: list1 '&' newline_list list1  */
-#line 1158 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 145: /* list1: list1 '&' newline_list list1  */
+#line 1173 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          if ((yyvsp[-3].command)->type == cm_connection)
                            (yyval.command) = connect_async_list ((yyvsp[-3].command), (yyvsp[0].command), '&');
                          else
                            (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '&');
                        }
-#line 3202 "y.tab.c"
+#line 3221 "y.tab.c"
     break;
 
-  case 145: /* list1: list1 ';' newline_list list1  */
-#line 1165 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 146: /* list1: list1 ';' newline_list list1  */
+#line 1180 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), ';'); }
-#line 3208 "y.tab.c"
+#line 3227 "y.tab.c"
     break;
 
-  case 146: /* list1: list1 '\n' newline_list list1  */
-#line 1167 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 147: /* list1: list1 '\n' newline_list list1  */
+#line 1182 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          if (parser_state & PST_CMDSUBST)
                            (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '\n');
                          else
                            (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), ';');
                        }
-#line 3219 "y.tab.c"
+#line 3238 "y.tab.c"
     break;
 
-  case 147: /* list1: pipeline_command  */
-#line 1174 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 148: /* list1: pipeline_command  */
+#line 1189 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.command) = (yyvsp[0].command); }
-#line 3225 "y.tab.c"
+#line 3244 "y.tab.c"
     break;
 
-  case 150: /* list_terminator: '\n'  */
-#line 1182 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 151: /* list_terminator: '\n'  */
+#line 1197 "/usr/local/src/chet/src/bash/src/parse.y"
                 { (yyval.number) = '\n'; }
-#line 3231 "y.tab.c"
+#line 3250 "y.tab.c"
     break;
 
-  case 151: /* list_terminator: ';'  */
-#line 1184 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 152: /* list_terminator: ';'  */
+#line 1199 "/usr/local/src/chet/src/bash/src/parse.y"
                 { (yyval.number) = ';'; }
-#line 3237 "y.tab.c"
+#line 3256 "y.tab.c"
     break;
 
-  case 152: /* list_terminator: yacc_EOF  */
-#line 1186 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 153: /* list_terminator: yacc_EOF  */
+#line 1201 "/usr/local/src/chet/src/bash/src/parse.y"
                 { (yyval.number) = yacc_EOF; }
-#line 3243 "y.tab.c"
+#line 3262 "y.tab.c"
     break;
 
-  case 155: /* simple_list: simple_list1  */
-#line 1200 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 156: /* simple_list: simple_list1  */
+#line 1215 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          (yyval.command) = (yyvsp[0].command);
                          if (need_here_doc)
@@ -3258,11 +3277,11 @@ INTERNAL_DEBUG (("LEGACY: parser: command substitution simple_list1 -> simple_li
                              YYACCEPT;
                            }
                        }
-#line 3262 "y.tab.c"
+#line 3281 "y.tab.c"
     break;
 
-  case 156: /* simple_list: simple_list1 '&'  */
-#line 1215 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 157: /* simple_list: simple_list1 '&'  */
+#line 1230 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          if ((yyvsp[-1].command)->type == cm_connection)
                            (yyval.command) = connect_async_list ((yyvsp[-1].command), (COMMAND *)NULL, '&');
@@ -3280,11 +3299,11 @@ INTERNAL_DEBUG (("LEGACY: parser: command substitution simple_list1 '&' -> simpl
                              YYACCEPT;
                            }
                        }
-#line 3284 "y.tab.c"
+#line 3303 "y.tab.c"
     break;
 
-  case 157: /* simple_list: simple_list1 ';'  */
-#line 1233 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 158: /* simple_list: simple_list1 ';'  */
+#line 1248 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          (yyval.command) = (yyvsp[-1].command);
                          if (need_here_doc)
@@ -3299,72 +3318,72 @@ INTERNAL_DEBUG (("LEGACY: parser: command substitution simple_list1 ';' -> simpl
                              YYACCEPT;
                            }
                        }
-#line 3303 "y.tab.c"
+#line 3322 "y.tab.c"
     break;
 
-  case 158: /* simple_list1: simple_list1 AND_AND newline_list simple_list1  */
-#line 1250 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 159: /* simple_list1: simple_list1 AND_AND newline_list simple_list1  */
+#line 1265 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), AND_AND); }
-#line 3309 "y.tab.c"
+#line 3328 "y.tab.c"
     break;
 
-  case 159: /* simple_list1: simple_list1 OR_OR newline_list simple_list1  */
-#line 1252 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 160: /* simple_list1: simple_list1 OR_OR newline_list simple_list1  */
+#line 1267 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), OR_OR); }
-#line 3315 "y.tab.c"
+#line 3334 "y.tab.c"
     break;
 
-  case 160: /* simple_list1: simple_list1 '&' simple_list1  */
-#line 1254 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 161: /* simple_list1: simple_list1 '&' simple_list1  */
+#line 1269 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          if ((yyvsp[-2].command)->type == cm_connection)
                            (yyval.command) = connect_async_list ((yyvsp[-2].command), (yyvsp[0].command), '&');
                          else
                            (yyval.command) = command_connect ((yyvsp[-2].command), (yyvsp[0].command), '&');
                        }
-#line 3326 "y.tab.c"
+#line 3345 "y.tab.c"
     break;
 
-  case 161: /* simple_list1: simple_list1 ';' simple_list1  */
-#line 1261 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 162: /* simple_list1: simple_list1 ';' simple_list1  */
+#line 1276 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.command) = command_connect ((yyvsp[-2].command), (yyvsp[0].command), ';'); }
-#line 3332 "y.tab.c"
+#line 3351 "y.tab.c"
     break;
 
-  case 162: /* simple_list1: pipeline_command  */
-#line 1264 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 163: /* simple_list1: pipeline_command  */
+#line 1279 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.command) = (yyvsp[0].command); }
-#line 3338 "y.tab.c"
+#line 3357 "y.tab.c"
     break;
 
-  case 163: /* pipeline_command: pipeline  */
-#line 1268 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 164: /* pipeline_command: pipeline  */
+#line 1283 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.command) = (yyvsp[0].command); }
-#line 3344 "y.tab.c"
+#line 3363 "y.tab.c"
     break;
 
-  case 164: /* pipeline_command: BANG pipeline_command  */
-#line 1270 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 165: /* pipeline_command: BANG pipeline_command  */
+#line 1285 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          if ((yyvsp[0].command))
                            (yyvsp[0].command)->flags ^= CMD_INVERT_RETURN;     /* toggle */
                          (yyval.command) = (yyvsp[0].command);
                        }
-#line 3354 "y.tab.c"
+#line 3373 "y.tab.c"
     break;
 
-  case 165: /* pipeline_command: timespec pipeline_command  */
-#line 1276 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 166: /* pipeline_command: timespec pipeline_command  */
+#line 1291 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          if ((yyvsp[0].command))
                            (yyvsp[0].command)->flags |= (yyvsp[-1].number);
                          (yyval.command) = (yyvsp[0].command);
                        }
-#line 3364 "y.tab.c"
+#line 3383 "y.tab.c"
     break;
 
-  case 166: /* pipeline_command: timespec list_terminator  */
-#line 1282 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 167: /* pipeline_command: timespec list_terminator  */
+#line 1297 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          ELEMENT x;
 
@@ -3384,11 +3403,11 @@ INTERNAL_DEBUG (("LEGACY: parser: command substitution simple_list1 ';' -> simpl
                            token_to_read = ';';
                          parser_state &= ~PST_REDIRLIST;       /* make_simple_command sets this */
                        }
-#line 3388 "y.tab.c"
+#line 3407 "y.tab.c"
     break;
 
-  case 167: /* pipeline_command: BANG list_terminator  */
-#line 1302 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 168: /* pipeline_command: BANG list_terminator  */
+#line 1317 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          ELEMENT x;
 
@@ -3409,17 +3428,17 @@ INTERNAL_DEBUG (("LEGACY: parser: command substitution simple_list1 ';' -> simpl
                            token_to_read = ';';
                          parser_state &= ~PST_REDIRLIST;       /* make_simple_command sets this */
                        }
-#line 3413 "y.tab.c"
+#line 3432 "y.tab.c"
     break;
 
-  case 168: /* pipeline: pipeline '|' newline_list pipeline  */
-#line 1325 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 169: /* pipeline: pipeline '|' newline_list pipeline  */
+#line 1340 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '|'); }
-#line 3419 "y.tab.c"
+#line 3438 "y.tab.c"
     break;
 
-  case 169: /* pipeline: pipeline BAR_AND newline_list pipeline  */
-#line 1327 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 170: /* pipeline: pipeline BAR_AND newline_list pipeline  */
+#line 1342 "/usr/local/src/chet/src/bash/src/parse.y"
                         {
                          /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */
                          COMMAND *tc;
@@ -3442,41 +3461,41 @@ INTERNAL_DEBUG (("LEGACY: parser: command substitution simple_list1 ';' -> simpl
 
                          (yyval.command) = command_connect ((yyvsp[-3].command), (yyvsp[0].command), '|');
                        }
-#line 3446 "y.tab.c"
+#line 3465 "y.tab.c"
     break;
 
-  case 170: /* pipeline: command  */
-#line 1350 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 171: /* pipeline: command  */
+#line 1365 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.command) = (yyvsp[0].command); }
-#line 3452 "y.tab.c"
+#line 3471 "y.tab.c"
     break;
 
-  case 171: /* timespec: TIME  */
-#line 1354 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 172: /* timespec: TIME  */
+#line 1369 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.number) = CMD_TIME_PIPELINE; }
-#line 3458 "y.tab.c"
+#line 3477 "y.tab.c"
     break;
 
-  case 172: /* timespec: TIME TIMEOPT  */
-#line 1356 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 173: /* timespec: TIME TIMEOPT  */
+#line 1371 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
-#line 3464 "y.tab.c"
+#line 3483 "y.tab.c"
     break;
 
-  case 173: /* timespec: TIME TIMEIGN  */
-#line 1358 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 174: /* timespec: TIME TIMEIGN  */
+#line 1373 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
-#line 3470 "y.tab.c"
+#line 3489 "y.tab.c"
     break;
 
-  case 174: /* timespec: TIME TIMEOPT TIMEIGN  */
-#line 1360 "/usr/local/src/chet/src/bash/src/parse.y"
+  case 175: /* timespec: TIME TIMEOPT TIMEIGN  */
+#line 1375 "/usr/local/src/chet/src/bash/src/parse.y"
                         { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; }
-#line 3476 "y.tab.c"
+#line 3495 "y.tab.c"
     break;
 
 
-#line 3480 "y.tab.c"
+#line 3499 "y.tab.c"
 
       default: break;
     }
@@ -3669,7 +3688,7 @@ yyreturnlab:
   return yyresult;
 }
 
-#line 1362 "/usr/local/src/chet/src/bash/src/parse.y"
+#line 1377 "/usr/local/src/chet/src/bash/src/parse.y"
 
 
 /* Initial size to allocate for tokens, and the
@@ -5138,7 +5157,7 @@ execute_variable_command (command, vname)
   if (last_lastarg)
     last_lastarg = savestring (last_lastarg);
 
-  parse_and_execute (savestring (command), vname, SEVAL_NONINT|SEVAL_NOHIST);
+  parse_and_execute (savestring (command), vname, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_NOOPTIMIZE);
 
   restore_parser_state (&ps);
   bind_variable ("_", last_lastarg, 0);
@@ -5208,9 +5227,9 @@ yylex ()
 
   if (current_token < 0)
 #if defined (YYERRCODE) && !defined (YYUNDEF)
-    current_token = YYERRCODE;
+    current_token = EOF_Reached ? YYEOF : YYERRCODE;
 #else
-    current_token = YYerror;
+    current_token = EOF_Reached ? YYEOF : YYUNDEF;
 #endif
 
   return (current_token);
@@ -5446,6 +5465,7 @@ time_command_acceptable ()
     case TIME:         /* time time pipeline */
     case TIMEOPT:      /* time -p time pipeline */
     case TIMEIGN:      /* time -p -- ... */
+    case DOLPAREN:
       return 1;
     default:
       return 0;
@@ -5615,7 +5635,7 @@ reset_parser ()
 #if defined (EXTENDED_GLOB)
   /* Reset to global value of extended glob */
   if (parser_state & (PST_EXTPAT|PST_CMDSUBST))
-    extended_glob = global_extglob;
+    extended_glob = extglob_flag;
 #endif
   if (parser_state & (PST_CMDSUBST|PST_STRING))
     expand_aliases = expaliases_flag;
@@ -5923,6 +5943,7 @@ tokword:
 #define P_BACKQUOTE    0x0010  /* parsing a backquoted command substitution */
 #define P_ARRAYSUB     0x0020  /* parsing a [...] array subscript for assignment */
 #define P_DOLBRACE     0x0040  /* parsing a ${...} construct */
+#define P_ARITH                0x0080  /* parsing a $(( )) arithmetic expansion */
 
 /* Lexical state while parsing a grouping construct or $(...). */
 #define LEX_WASDOL     0x0001
@@ -6004,6 +6025,7 @@ parse_matched_pair (qc, open, close, lenp, flags)
          free (ret);
          parser_error (start_lineno, _("unexpected EOF while looking for matching `%c'"), close);
          EOF_Reached = 1;      /* XXX */
+         parser_state |= PST_NOERROR;  /* avoid redundant error message */
          return (&matched_pair_error);
        }
 
@@ -6221,6 +6243,9 @@ parse_matched_pair (qc, open, close, lenp, flags)
            }
          else if ((flags & (P_ARRAYSUB|P_DOLBRACE)) && (tflags & LEX_WASDOL) && (ch == '(' || ch == '{' || ch == '[')) /* ) } ] */
            goto parse_dollar_word;
+         else if ((flags & P_ARITH) && (tflags & LEX_WASDOL) && ch == '(') /*)*/
+           /* $() inside $(( ))/$[ ] */
+           goto parse_dollar_word;
 #if defined (PROCESS_SUBSTITUTION)
          /* XXX - technically this should only be recognized at the start of
             a word */
@@ -6251,7 +6276,7 @@ parse_dollar_word:
          else if (ch == '{')           /* } */
            nestret = parse_matched_pair (0, '{', '}', &nestlen, P_FIRSTCLOSE|P_DOLBRACE|rflags);
          else if (ch == '[')           /* ] */
-           nestret = parse_matched_pair (0, '[', ']', &nestlen, rflags);
+           nestret = parse_matched_pair (0, '[', ']', &nestlen, rflags|P_ARITH);
 
          CHECK_NESTRET_ERROR ();
          APPEND_NESTRET ();
@@ -6390,7 +6415,7 @@ parse_comsub (qc, open, close, lenp, flags)
       peekc = shell_getc (1);
       shell_ungetc (peekc);
       if (peekc == '(')                /*)*/
-       return (parse_matched_pair (qc, open, close, lenp, 0));
+       return (parse_matched_pair (qc, open, close, lenp, P_ARITH));
     }
 
 /*itrace("parse_comsub: qc = `%c' open = %c close = %c", qc, open, close);*/
@@ -6431,10 +6456,10 @@ parse_comsub (qc, open, close, lenp, flags)
     expand_aliases = posixly_correct != 0;
 #if defined (EXTENDED_GLOB)
   /* If (parser_state & PST_EXTPAT), we're parsing an extended pattern for a
-     conditional command and have already set global_extglob appropriately. */
+     conditional command and have already set extended_glob appropriately. */
   if (shell_compatibility_level <= 51 && was_extpat == 0)
     {
-      local_extglob = global_extglob = extended_glob;
+      local_extglob = extended_glob;
       extended_glob = 1;
     }
 #endif
@@ -6463,6 +6488,7 @@ parse_comsub (qc, open, close, lenp, flags)
       expand_aliases = ps.expand_aliases;
 
       /* yyparse() has already called yyerror() and reset_parser() */
+      parser_state |= PST_NOERROR;
       return (&matched_pair_error);
     }
   else if (r != 0)
@@ -6542,7 +6568,7 @@ xparse_dolparen (base, string, indp, flags)
 {
   sh_parser_state_t ps;
   sh_input_line_state_t ls;
-  int orig_ind, nc, sflags, start_lineno;
+  int orig_ind, nc, sflags, start_lineno, local_extglob;
   char *ret, *ep, *ostring;
 
 /*debug_parser(1);*/
@@ -6585,7 +6611,7 @@ xparse_dolparen (base, string, indp, flags)
      old value will be restored by restore_parser_state(). */
   expand_aliases = 0;
 #if defined (EXTENDED_GLOB)
-  global_extglob = extended_glob;              /* for reset_parser() */
+  local_extglob = extended_glob;
 #endif
 
   token_to_read = DOLPAREN;                    /* let's trick the parser */
@@ -6603,6 +6629,9 @@ xparse_dolparen (base, string, indp, flags)
   restore_input_line_state (&ls);
   restore_parser_state (&ps);
 
+#if defined (EXTENDED_GLOB)
+  extended_glob = local_extglob;
+#endif
   token_to_read = 0;
 
   /* If parse_string returns < 0, we need to jump to top level with the
@@ -6811,7 +6840,7 @@ parse_arith_cmd (ep, adddq)
   int ttoklen;
 
   exp_lineno = line_number;
-  ttok = parse_matched_pair (0, '(', ')', &ttoklen, 0);
+  ttok = parse_matched_pair (0, '(', ')', &ttoklen, P_ARITH);
   rval = 1;
   if (ttok == &matched_pair_error)
     return -1;
@@ -7038,12 +7067,16 @@ cond_term ()
        }
 
       /* rhs */
+#if defined (EXTENDED_GLOB)
       local_extglob = extended_glob;
       if (parser_state & PST_EXTPAT)
        extended_glob = 1;
+#endif
       tok = read_token (READ);
+#if defined (EXTENDED_GLOB)
       if (parser_state & PST_EXTPAT)
        extended_glob = local_extglob;
+#endif
       parser_state &= ~(PST_REGEXP|PST_EXTPAT);
 
       if (tok == WORD)
@@ -7090,7 +7123,6 @@ parse_cond_command ()
 {
   COND_COM *cexp;
 
-  global_extglob = extended_glob;
   cexp = cond_expr ();
   return (make_cond_command (cexp));
 }
@@ -7326,7 +7358,7 @@ read_token_word (character)
                  pop_delimiter (dstack);
                }
              else
-               ttok = parse_matched_pair (cd, '[', ']', &ttoklen, 0);
+               ttok = parse_matched_pair (cd, '[', ']', &ttoklen, P_ARITH);
              if (ttok == &matched_pair_error)
                return -1;              /* Bail immediately. */
              RESIZE_MALLOCED_BUFFER (token, token_index, ttoklen + 3,