Blob Blame History Raw
From 1d1ce7c6bc5cc90b78e8231319dab65f969e7682 Mon Sep 17 00:00:00 2001
From: Zefram <zefram@fysh.org>
Date: Tue, 16 Jan 2018 08:04:08 +0000
Subject: [PATCH] fix parsing of braced subscript after parens
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Where an arrow is omitted between subscripts, if a parenthesised
subscript is followed by a braced one, PL_expect was getting set to
XBLOCK due to code intended for "foreach (...) {...}".  This broke
bareword autoquotation, and the parsing of operators following the
braced subscript.  Alter PL_expect from XBLOCK to XOPERATOR following
a parenthesised subscript.  Fixes [perl #8045].

Petr Písař: Ported to 5.24.3.

Signed-off-by: Petr Písař <ppisar@redhat.com>
---
 perly.act           | 1256 ++++++++++++++++++++++++++++-------------------
 perly.h             |  297 ++++-------
 perly.tab           | 1352 +++++++++++++++++++++++----------------------------
 perly.y             |   20 +-
 t/op/postfixderef.t |   25 +-
 5 files changed, 1502 insertions(+), 1448 deletions(-)

diff --git a/perly.act b/perly.act
index 0d1d5fc..b1457f8 100644
--- a/perly.act
+++ b/perly.act
@@ -1,223 +1,250 @@
 /* -*- buffer-read-only: t -*-
    !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
-   This file is built by regen_perly.pl from perly.y.
+   This file is built by ./regen_perly.pl from perly.y.
    Any changes made here will be lost!
  */
 
 case 2:
-#line 115 "perly.y"
+#line 115 "perly.y" /* yacc.c:1646  */
     {
 			  parser->expect = XSTATE;
 			}
+
     break;
 
   case 3:
-#line 119 "perly.y"
+#line 119 "perly.y" /* yacc.c:1646  */
     {
-			  newPROG(block_end((ps[(3) - (4)].val.ival),(ps[(4) - (4)].val.opval)));
+			  newPROG(block_end((ps[-1].val.ival),(ps[0].val.opval)));
 			  PL_compiling.cop_seq = 0;
 			  (yyval.ival) = 0;
 			}
+
     break;
 
   case 4:
-#line 125 "perly.y"
+#line 125 "perly.y" /* yacc.c:1646  */
     {
 			  parser->expect = XTERM;
 			}
+
     break;
 
   case 5:
-#line 129 "perly.y"
+#line 129 "perly.y" /* yacc.c:1646  */
     {
-			  PL_eval_root = (ps[(3) - (3)].val.opval);
+			  PL_eval_root = (ps[0].val.opval);
 			  (yyval.ival) = 0;
 			}
+
     break;
 
   case 6:
-#line 134 "perly.y"
+#line 134 "perly.y" /* yacc.c:1646  */
     {
 			  parser->expect = XBLOCK;
 			}
+
     break;
 
   case 7:
-#line 138 "perly.y"
+#line 138 "perly.y" /* yacc.c:1646  */
     {
 			  PL_pad_reset_pending = TRUE;
-			  PL_eval_root = (ps[(3) - (3)].val.opval);
+			  PL_eval_root = (ps[0].val.opval);
 			  (yyval.ival) = 0;
 			  yyunlex();
 			  parser->yychar = YYEOF;
 			}
+
     break;
 
   case 8:
-#line 146 "perly.y"
+#line 146 "perly.y" /* yacc.c:1646  */
     {
 			  parser->expect = XSTATE;
 			}
+
     break;
 
   case 9:
-#line 150 "perly.y"
+#line 150 "perly.y" /* yacc.c:1646  */
     {
 			  PL_pad_reset_pending = TRUE;
-			  PL_eval_root = (ps[(3) - (3)].val.opval);
+			  PL_eval_root = (ps[0].val.opval);
 			  (yyval.ival) = 0;
 			  yyunlex();
 			  parser->yychar = YYEOF;
 			}
+
     break;
 
   case 10:
-#line 158 "perly.y"
+#line 158 "perly.y" /* yacc.c:1646  */
     {
 			  parser->expect = XSTATE;
 			}
+
     break;
 
   case 11:
-#line 162 "perly.y"
+#line 162 "perly.y" /* yacc.c:1646  */
     {
 			  PL_pad_reset_pending = TRUE;
-			  PL_eval_root = (ps[(3) - (3)].val.opval);
+			  PL_eval_root = (ps[0].val.opval);
 			  (yyval.ival) = 0;
 			  yyunlex();
 			  parser->yychar = YYEOF;
 			}
+
     break;
 
   case 12:
-#line 170 "perly.y"
+#line 170 "perly.y" /* yacc.c:1646  */
     {
 			  parser->expect = XSTATE;
 			}
+
     break;
 
   case 13:
-#line 174 "perly.y"
+#line 174 "perly.y" /* yacc.c:1646  */
     {
-			  PL_eval_root = (ps[(3) - (3)].val.opval);
+			  PL_eval_root = (ps[0].val.opval);
 			  (yyval.ival) = 0;
 			}
+
     break;
 
   case 14:
-#line 182 "perly.y"
-    { if (parser->copline > (line_t)(ps[(1) - (4)].val.ival))
-			      parser->copline = (line_t)(ps[(1) - (4)].val.ival);
-			  (yyval.opval) = block_end((ps[(2) - (4)].val.ival), (ps[(3) - (4)].val.opval));
+#line 182 "perly.y" /* yacc.c:1646  */
+    { if (parser->copline > (line_t)(ps[-3].val.ival))
+			      parser->copline = (line_t)(ps[-3].val.ival);
+			  (yyval.opval) = block_end((ps[-2].val.ival), (ps[-1].val.opval));
 			}
+
     break;
 
   case 15:
-#line 190 "perly.y"
-    { if (parser->copline > (line_t)(ps[(1) - (7)].val.ival))
-			      parser->copline = (line_t)(ps[(1) - (7)].val.ival);
-			  (yyval.opval) = block_end((ps[(2) - (7)].val.ival), (ps[(5) - (7)].val.opval));
+#line 190 "perly.y" /* yacc.c:1646  */
+    { if (parser->copline > (line_t)(ps[-6].val.ival))
+			      parser->copline = (line_t)(ps[-6].val.ival);
+			  (yyval.opval) = block_end((ps[-5].val.ival), (ps[-2].val.opval));
 			}
+
     break;
 
   case 16:
-#line 197 "perly.y"
+#line 197 "perly.y" /* yacc.c:1646  */
     { (yyval.ival) = block_start(TRUE);
 			  parser->parsed_sub = 0; }
+
     break;
 
   case 17:
-#line 202 "perly.y"
-    { if (parser->copline > (line_t)(ps[(1) - (4)].val.ival))
-			      parser->copline = (line_t)(ps[(1) - (4)].val.ival);
-			  (yyval.opval) = block_end((ps[(2) - (4)].val.ival), (ps[(3) - (4)].val.opval));
+#line 202 "perly.y" /* yacc.c:1646  */
+    { if (parser->copline > (line_t)(ps[-3].val.ival))
+			      parser->copline = (line_t)(ps[-3].val.ival);
+			  (yyval.opval) = block_end((ps[-2].val.ival), (ps[-1].val.opval));
 			}
+
     break;
 
   case 18:
-#line 209 "perly.y"
+#line 209 "perly.y" /* yacc.c:1646  */
     { (yyval.ival) = block_start(FALSE);
 			  parser->parsed_sub = 0; }
+
     break;
 
   case 19:
-#line 215 "perly.y"
+#line 215 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = (OP*)NULL; }
+
     break;
 
   case 20:
-#line 217 "perly.y"
-    {   (yyval.opval) = op_append_list(OP_LINESEQ, (ps[(1) - (2)].val.opval), (ps[(2) - (2)].val.opval));
+#line 217 "perly.y" /* yacc.c:1646  */
+    {   (yyval.opval) = op_append_list(OP_LINESEQ, (ps[-1].val.opval), (ps[0].val.opval));
 			    PL_pad_reset_pending = TRUE;
-			    if ((ps[(1) - (2)].val.opval) && (ps[(2) - (2)].val.opval))
+			    if ((ps[-1].val.opval) && (ps[0].val.opval))
 				PL_hints |= HINT_BLOCK_SCOPE;
 			}
+
     break;
 
   case 21:
-#line 226 "perly.y"
+#line 226 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = (OP*)NULL; }
+
     break;
 
   case 22:
-#line 228 "perly.y"
-    {   (yyval.opval) = op_append_list(OP_LINESEQ, (ps[(1) - (2)].val.opval), (ps[(2) - (2)].val.opval));
+#line 228 "perly.y" /* yacc.c:1646  */
+    {   (yyval.opval) = op_append_list(OP_LINESEQ, (ps[-1].val.opval), (ps[0].val.opval));
 			    PL_pad_reset_pending = TRUE;
-			    if ((ps[(1) - (2)].val.opval) && (ps[(2) - (2)].val.opval))
+			    if ((ps[-1].val.opval) && (ps[0].val.opval))
 				PL_hints |= HINT_BLOCK_SCOPE;
 			}
+
     break;
 
   case 23:
-#line 237 "perly.y"
+#line 237 "perly.y" /* yacc.c:1646  */
     {
-			  (yyval.opval) = (ps[(1) - (1)].val.opval) ? newSTATEOP(0, NULL, (ps[(1) - (1)].val.opval)) : NULL;
+			  (yyval.opval) = (ps[0].val.opval) ? newSTATEOP(0, NULL, (ps[0].val.opval)) : NULL;
 			}
+
     break;
 
   case 24:
-#line 241 "perly.y"
-    { (yyval.opval) = (ps[(1) - (1)].val.opval); }
+#line 241 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
+
     break;
 
   case 25:
-#line 245 "perly.y"
+#line 245 "perly.y" /* yacc.c:1646  */
     {
-			  (yyval.opval) = newSTATEOP(SVf_UTF8 * (ps[(1) - (2)].val.pval)[strlen((ps[(1) - (2)].val.pval))+1], (ps[(1) - (2)].val.pval), (ps[(2) - (2)].val.opval));
+			  (yyval.opval) = newSTATEOP(SVf_UTF8 * (ps[-1].val.pval)[strlen((ps[-1].val.pval))+1], (ps[-1].val.pval), (ps[0].val.opval));
 			}
+
     break;
 
   case 26:
-#line 249 "perly.y"
+#line 249 "perly.y" /* yacc.c:1646  */
     {
-			  (yyval.opval) = newSTATEOP(SVf_UTF8 * (ps[(1) - (2)].val.pval)[strlen((ps[(1) - (2)].val.pval))+1], (ps[(1) - (2)].val.pval), (ps[(2) - (2)].val.opval));
+			  (yyval.opval) = newSTATEOP(SVf_UTF8 * (ps[-1].val.pval)[strlen((ps[-1].val.pval))+1], (ps[-1].val.pval), (ps[0].val.opval));
 			}
+
     break;
 
   case 27:
-#line 256 "perly.y"
-    { (yyval.opval) = (ps[(1) - (1)].val.opval); }
+#line 256 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
+
     break;
 
   case 28:
-#line 258 "perly.y"
+#line 258 "perly.y" /* yacc.c:1646  */
     {
 			  CV *fmtcv = PL_compcv;
-			  newFORM((ps[(2) - (4)].val.ival), (ps[(3) - (4)].val.opval), (ps[(4) - (4)].val.opval));
+			  newFORM((ps[-2].val.ival), (ps[-1].val.opval), (ps[0].val.opval));
 			  (yyval.opval) = (OP*)NULL;
 			  if (CvOUTSIDE(fmtcv) && !CvEVAL(CvOUTSIDE(fmtcv))) {
 			      pad_add_weakref(fmtcv);
 			  }
 			  parser->parsed_sub = 1;
 			}
+
     break;
 
   case 29:
-#line 268 "perly.y"
+#line 268 "perly.y" /* yacc.c:1646  */
     {
-			  if ((ps[(2) - (3)].val.opval)->op_type == OP_CONST) {
+			  if ((ps[-1].val.opval)->op_type == OP_CONST) {
 			    const char *const name =
-				SvPV_nolen_const(((SVOP*)(ps[(2) - (3)].val.opval))->op_sv);
+				SvPV_nolen_const(((SVOP*)(ps[-1].val.opval))->op_sv);
 			    if (strEQ(name, "BEGIN") || strEQ(name, "END")
 			      || strEQ(name, "INIT") || strEQ(name, "CHECK")
 			      || strEQ(name, "UNITCHECK"))
@@ -230,33 +257,35 @@ case 2:
 			   || CvCLONE(CvOUTSIDE(PL_compcv))
 			   || !PadnameIsSTATE(PadlistNAMESARRAY(CvPADLIST(
 						CvOUTSIDE(PL_compcv)
-					     ))[(ps[(2) - (3)].val.opval)->op_targ]))
+					     ))[(ps[-1].val.opval)->op_targ]))
 			      CvCLONE_on(PL_compcv);
 			  parser->in_my = 0;
 			  parser->in_my_stash = NULL;
 			}
+
     break;
 
   case 30:
-#line 290 "perly.y"
+#line 290 "perly.y" /* yacc.c:1646  */
     {
 			  SvREFCNT_inc_simple_void(PL_compcv);
-			  (ps[(2) - (7)].val.opval)->op_type == OP_CONST
-			      ? newATTRSUB((ps[(3) - (7)].val.ival), (ps[(2) - (7)].val.opval), (ps[(5) - (7)].val.opval), (ps[(6) - (7)].val.opval), (ps[(7) - (7)].val.opval))
-			      : newMYSUB((ps[(3) - (7)].val.ival), (ps[(2) - (7)].val.opval), (ps[(5) - (7)].val.opval), (ps[(6) - (7)].val.opval), (ps[(7) - (7)].val.opval))
+			  (ps[-5].val.opval)->op_type == OP_CONST
+			      ? newATTRSUB((ps[-4].val.ival), (ps[-5].val.opval), (ps[-2].val.opval), (ps[-1].val.opval), (ps[0].val.opval))
+			      : newMYSUB((ps[-4].val.ival), (ps[-5].val.opval), (ps[-2].val.opval), (ps[-1].val.opval), (ps[0].val.opval))
 			  ;
 			  (yyval.opval) = (OP*)NULL;
 			  intro_my();
 			  parser->parsed_sub = 1;
 			}
+
     break;
 
   case 31:
-#line 301 "perly.y"
+#line 301 "perly.y" /* yacc.c:1646  */
     {
-			  if ((ps[(2) - (3)].val.opval)->op_type == OP_CONST) {
+			  if ((ps[-1].val.opval)->op_type == OP_CONST) {
 			    const char *const name =
-				SvPV_nolen_const(((SVOP*)(ps[(2) - (3)].val.opval))->op_sv);
+				SvPV_nolen_const(((SVOP*)(ps[-1].val.opval))->op_sv);
 			    if (strEQ(name, "BEGIN") || strEQ(name, "END")
 			      || strEQ(name, "INIT") || strEQ(name, "CHECK")
 			      || strEQ(name, "UNITCHECK"))
@@ -269,130 +298,144 @@ case 2:
 			   || CvCLONE(CvOUTSIDE(PL_compcv))
 			   || !PadnameIsSTATE(PadlistNAMESARRAY(CvPADLIST(
 						CvOUTSIDE(PL_compcv)
-					     ))[(ps[(2) - (3)].val.opval)->op_targ]))
+					     ))[(ps[-1].val.opval)->op_targ]))
 			      CvCLONE_on(PL_compcv);
 			  parser->in_my = 0;
 			  parser->in_my_stash = NULL;
 			}
+
     break;
 
   case 32:
-#line 323 "perly.y"
+#line 323 "perly.y" /* yacc.c:1646  */
     {
 			  OP *body;
-			  if (parser->copline > (line_t)(ps[(8) - (10)].val.ival))
-			      parser->copline = (line_t)(ps[(8) - (10)].val.ival);
-			  body = block_end((ps[(5) - (10)].val.ival),
-				op_append_list(OP_LINESEQ, (ps[(6) - (10)].val.opval), (ps[(9) - (10)].val.opval)));
+			  if (parser->copline > (line_t)(ps[-2].val.ival))
+			      parser->copline = (line_t)(ps[-2].val.ival);
+			  body = block_end((ps[-5].val.ival),
+				op_append_list(OP_LINESEQ, (ps[-4].val.opval), (ps[-1].val.opval)));
 
 			  SvREFCNT_inc_simple_void(PL_compcv);
-			  (ps[(2) - (10)].val.opval)->op_type == OP_CONST
-			      ? newATTRSUB((ps[(3) - (10)].val.ival), (ps[(2) - (10)].val.opval), NULL, (ps[(7) - (10)].val.opval), body)
-			      : newMYSUB((ps[(3) - (10)].val.ival), (ps[(2) - (10)].val.opval), NULL, (ps[(7) - (10)].val.opval), body)
+			  (ps[-8].val.opval)->op_type == OP_CONST
+			      ? newATTRSUB((ps[-7].val.ival), (ps[-8].val.opval), NULL, (ps[-3].val.opval), body)
+			      : newMYSUB((ps[-7].val.ival), (ps[-8].val.opval), NULL, (ps[-3].val.opval), body)
 			  ;
 			  (yyval.opval) = (OP*)NULL;
 			  intro_my();
 			  parser->parsed_sub = 1;
 			}
+
     break;
 
   case 33:
-#line 340 "perly.y"
+#line 340 "perly.y" /* yacc.c:1646  */
     {
-			  package((ps[(3) - (4)].val.opval));
-			  if ((ps[(2) - (4)].val.opval))
-			      package_version((ps[(2) - (4)].val.opval));
+			  package((ps[-1].val.opval));
+			  if ((ps[-2].val.opval))
+			      package_version((ps[-2].val.opval));
 			  (yyval.opval) = (OP*)NULL;
 			}
+
     break;
 
   case 34:
-#line 347 "perly.y"
+#line 347 "perly.y" /* yacc.c:1646  */
     { CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ }
+
     break;
 
   case 35:
-#line 349 "perly.y"
+#line 349 "perly.y" /* yacc.c:1646  */
     {
 			  SvREFCNT_inc_simple_void(PL_compcv);
-			  utilize((ps[(1) - (7)].val.ival), (ps[(2) - (7)].val.ival), (ps[(4) - (7)].val.opval), (ps[(5) - (7)].val.opval), (ps[(6) - (7)].val.opval));
+			  utilize((ps[-6].val.ival), (ps[-5].val.ival), (ps[-3].val.opval), (ps[-2].val.opval), (ps[-1].val.opval));
 			  parser->parsed_sub = 1;
 			  (yyval.opval) = (OP*)NULL;
 			}
+
     break;
 
   case 36:
-#line 356 "perly.y"
+#line 356 "perly.y" /* yacc.c:1646  */
     {
-			  (yyval.opval) = block_end((ps[(3) - (7)].val.ival),
-			      newCONDOP(0, (ps[(4) - (7)].val.opval), op_scope((ps[(6) - (7)].val.opval)), (ps[(7) - (7)].val.opval)));
-			  parser->copline = (line_t)(ps[(1) - (7)].val.ival);
+			  (yyval.opval) = block_end((ps[-4].val.ival),
+			      newCONDOP(0, (ps[-3].val.opval), op_scope((ps[-1].val.opval)), (ps[0].val.opval)));
+			  parser->copline = (line_t)(ps[-6].val.ival);
 			}
+
     break;
 
   case 37:
-#line 362 "perly.y"
+#line 362 "perly.y" /* yacc.c:1646  */
     {
-			  (yyval.opval) = block_end((ps[(3) - (7)].val.ival),
-                              newCONDOP(0, (ps[(4) - (7)].val.opval), (ps[(7) - (7)].val.opval), op_scope((ps[(6) - (7)].val.opval))));
-			  parser->copline = (line_t)(ps[(1) - (7)].val.ival);
+			  (yyval.opval) = block_end((ps[-4].val.ival),
+                              newCONDOP(0, (ps[-3].val.opval), (ps[0].val.opval), op_scope((ps[-1].val.opval))));
+			  parser->copline = (line_t)(ps[-6].val.ival);
 			}
+
     break;
 
   case 38:
-#line 368 "perly.y"
+#line 368 "perly.y" /* yacc.c:1646  */
     {
-			  (yyval.opval) = block_end((ps[(3) - (6)].val.ival), newGIVENOP((ps[(4) - (6)].val.opval), op_scope((ps[(6) - (6)].val.opval)), 0));
-			  parser->copline = (line_t)(ps[(1) - (6)].val.ival);
+			  (yyval.opval) = block_end((ps[-3].val.ival), newGIVENOP((ps[-2].val.opval), op_scope((ps[0].val.opval)), 0));
+			  parser->copline = (line_t)(ps[-5].val.ival);
 			}
+
     break;
 
   case 39:
-#line 373 "perly.y"
-    { (yyval.opval) = block_end((ps[(3) - (6)].val.ival), newWHENOP((ps[(4) - (6)].val.opval), op_scope((ps[(6) - (6)].val.opval)))); }
+#line 373 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = block_end((ps[-3].val.ival), newWHENOP((ps[-2].val.opval), op_scope((ps[0].val.opval)))); }
+
     break;
 
   case 40:
-#line 375 "perly.y"
-    { (yyval.opval) = newWHENOP(0, op_scope((ps[(2) - (2)].val.opval))); }
+#line 375 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newWHENOP(0, op_scope((ps[0].val.opval))); }
+
     break;
 
   case 41:
-#line 377 "perly.y"
+#line 377 "perly.y" /* yacc.c:1646  */
     {
-			  (yyval.opval) = block_end((ps[(3) - (8)].val.ival),
+			  (yyval.opval) = block_end((ps[-5].val.ival),
 				  newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
-				      (ps[(4) - (8)].val.opval), (ps[(7) - (8)].val.opval), (ps[(8) - (8)].val.opval), (ps[(6) - (8)].val.ival)));
-			  parser->copline = (line_t)(ps[(1) - (8)].val.ival);
+				      (ps[-4].val.opval), (ps[-1].val.opval), (ps[0].val.opval), (ps[-2].val.ival)));
+			  parser->copline = (line_t)(ps[-7].val.ival);
 			}
+
     break;
 
   case 42:
-#line 384 "perly.y"
+#line 384 "perly.y" /* yacc.c:1646  */
     {
-			  (yyval.opval) = block_end((ps[(3) - (8)].val.ival),
+			  (yyval.opval) = block_end((ps[-5].val.ival),
 				  newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
-				      (ps[(4) - (8)].val.opval), (ps[(7) - (8)].val.opval), (ps[(8) - (8)].val.opval), (ps[(6) - (8)].val.ival)));
-			  parser->copline = (line_t)(ps[(1) - (8)].val.ival);
+				      (ps[-4].val.opval), (ps[-1].val.opval), (ps[0].val.opval), (ps[-2].val.ival)));
+			  parser->copline = (line_t)(ps[-7].val.ival);
 			}
+
     break;
 
   case 43:
-#line 391 "perly.y"
+#line 391 "perly.y" /* yacc.c:1646  */
     { parser->expect = XTERM; }
+
     break;
 
   case 44:
-#line 393 "perly.y"
+#line 393 "perly.y" /* yacc.c:1646  */
     { parser->expect = XTERM; }
+
     break;
 
   case 45:
-#line 396 "perly.y"
+#line 396 "perly.y" /* yacc.c:1646  */
     {
-			  OP *initop = (ps[(4) - (13)].val.opval);
+			  OP *initop = (ps[-9].val.opval);
 			  OP *forop = newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
-				      scalar((ps[(7) - (13)].val.opval)), (ps[(13) - (13)].val.opval), (ps[(11) - (13)].val.opval), (ps[(10) - (13)].val.ival));
+				      scalar((ps[-6].val.opval)), (ps[0].val.opval), (ps[-2].val.opval), (ps[-3].val.ival));
 			  if (initop) {
 			      forop = op_prepend_elem(OP_LINESEQ, initop,
 				  op_append_elem(OP_LINESEQ,
@@ -400,123 +443,135 @@ case 2:
 				      forop));
 			  }
 			  PL_hints |= HINT_BLOCK_SCOPE;
-			  (yyval.opval) = block_end((ps[(3) - (13)].val.ival), forop);
-			  parser->copline = (line_t)(ps[(1) - (13)].val.ival);
+			  (yyval.opval) = block_end((ps[-10].val.ival), forop);
+			  parser->copline = (line_t)(ps[-12].val.ival);
 			}
+
     break;
 
   case 46:
-#line 411 "perly.y"
+#line 411 "perly.y" /* yacc.c:1646  */
     {
-			  (yyval.opval) = block_end((ps[(3) - (9)].val.ival), newFOROP(0, (ps[(4) - (9)].val.opval), (ps[(6) - (9)].val.opval), (ps[(8) - (9)].val.opval), (ps[(9) - (9)].val.opval)));
-			  parser->copline = (line_t)(ps[(1) - (9)].val.ival);
+			  (yyval.opval) = block_end((ps[-6].val.ival), newFOROP(0, (ps[-5].val.opval), (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval)));
+			  parser->copline = (line_t)(ps[-8].val.ival);
 			}
+
     break;
 
   case 47:
-#line 416 "perly.y"
+#line 416 "perly.y" /* yacc.c:1646  */
     {
-			  (yyval.opval) = block_end((ps[(4) - (8)].val.ival), newFOROP(0,
-				      op_lvalue((ps[(2) - (8)].val.opval), OP_ENTERLOOP), (ps[(5) - (8)].val.opval), (ps[(7) - (8)].val.opval), (ps[(8) - (8)].val.opval)));
-			  parser->copline = (line_t)(ps[(1) - (8)].val.ival);
+			  (yyval.opval) = block_end((ps[-4].val.ival), newFOROP(0,
+				      op_lvalue((ps[-6].val.opval), OP_ENTERLOOP), (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval)));
+			  parser->copline = (line_t)(ps[-7].val.ival);
 			}
+
     break;
 
   case 48:
-#line 422 "perly.y"
-    { parser->in_my = 0; (yyval.opval) = my((ps[(5) - (5)].val.opval)); }
+#line 422 "perly.y" /* yacc.c:1646  */
+    { parser->in_my = 0; (yyval.opval) = my((ps[0].val.opval)); }
+
     break;
 
   case 49:
-#line 424 "perly.y"
+#line 424 "perly.y" /* yacc.c:1646  */
     {
 			  (yyval.opval) = block_end(
-				(ps[(4) - (11)].val.ival),
+				(ps[-7].val.ival),
 				newFOROP(0,
 					 op_lvalue(
 					    newUNOP(OP_REFGEN, 0,
-						    (ps[(6) - (11)].val.opval)),
+						    (ps[-5].val.opval)),
 					    OP_ENTERLOOP),
-					 (ps[(8) - (11)].val.opval), (ps[(10) - (11)].val.opval), (ps[(11) - (11)].val.opval))
+					 (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval))
 			  );
-			  parser->copline = (line_t)(ps[(1) - (11)].val.ival);
+			  parser->copline = (line_t)(ps[-10].val.ival);
 			}
+
     break;
 
   case 50:
-#line 437 "perly.y"
+#line 437 "perly.y" /* yacc.c:1646  */
     {
-			  (yyval.opval) = block_end((ps[(5) - (9)].val.ival), newFOROP(
+			  (yyval.opval) = block_end((ps[-4].val.ival), newFOROP(
 				0, op_lvalue(newUNOP(OP_REFGEN, 0,
-						     (ps[(3) - (9)].val.opval)),
-					     OP_ENTERLOOP), (ps[(6) - (9)].val.opval), (ps[(8) - (9)].val.opval), (ps[(9) - (9)].val.opval)));
-			  parser->copline = (line_t)(ps[(1) - (9)].val.ival);
+						     (ps[-6].val.opval)),
+					     OP_ENTERLOOP), (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval)));
+			  parser->copline = (line_t)(ps[-8].val.ival);
 			}
+
     break;
 
   case 51:
-#line 445 "perly.y"
+#line 445 "perly.y" /* yacc.c:1646  */
     {
-			  (yyval.opval) = block_end((ps[(3) - (7)].val.ival),
-				  newFOROP(0, (OP*)NULL, (ps[(4) - (7)].val.opval), (ps[(6) - (7)].val.opval), (ps[(7) - (7)].val.opval)));
-			  parser->copline = (line_t)(ps[(1) - (7)].val.ival);
+			  (yyval.opval) = block_end((ps[-4].val.ival),
+				  newFOROP(0, (OP*)NULL, (ps[-3].val.opval), (ps[-1].val.opval), (ps[0].val.opval)));
+			  parser->copline = (line_t)(ps[-6].val.ival);
 			}
+
     break;
 
   case 52:
-#line 451 "perly.y"
+#line 451 "perly.y" /* yacc.c:1646  */
     {
 			  /* a block is a loop that happens once */
 			  (yyval.opval) = newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
-				  (OP*)NULL, (ps[(1) - (2)].val.opval), (ps[(2) - (2)].val.opval), 0);
+				  (OP*)NULL, (ps[-1].val.opval), (ps[0].val.opval), 0);
 			}
+
     break;
 
   case 53:
-#line 457 "perly.y"
+#line 457 "perly.y" /* yacc.c:1646  */
     {
-			  package((ps[(3) - (5)].val.opval));
-			  if ((ps[(2) - (5)].val.opval)) {
-			      package_version((ps[(2) - (5)].val.opval));
+			  package((ps[-2].val.opval));
+			  if ((ps[-3].val.opval)) {
+			      package_version((ps[-3].val.opval));
 			  }
 			}
+
     break;
 
   case 54:
-#line 464 "perly.y"
+#line 464 "perly.y" /* yacc.c:1646  */
     {
 			  /* a block is a loop that happens once */
 			  (yyval.opval) = newWHILEOP(0, 1, (LOOP*)(OP*)NULL,
-				  (OP*)NULL, block_end((ps[(5) - (8)].val.ival), (ps[(7) - (8)].val.opval)), (OP*)NULL, 0);
-			  if (parser->copline > (line_t)(ps[(4) - (8)].val.ival))
-			      parser->copline = (line_t)(ps[(4) - (8)].val.ival);
+				  (OP*)NULL, block_end((ps[-3].val.ival), (ps[-1].val.opval)), (OP*)NULL, 0);
+			  if (parser->copline > (line_t)(ps[-4].val.ival))
+			      parser->copline = (line_t)(ps[-4].val.ival);
 			}
+
     break;
 
   case 55:
-#line 472 "perly.y"
+#line 472 "perly.y" /* yacc.c:1646  */
     {
-			  (yyval.opval) = (ps[(1) - (2)].val.opval);
+			  (yyval.opval) = (ps[-1].val.opval);
 			}
+
     break;
 
   case 56:
-#line 476 "perly.y"
+#line 476 "perly.y" /* yacc.c:1646  */
     {
 			  (yyval.opval) = (OP*)NULL;
 			  parser->copline = NOLINE;
 			}
+
     break;
 
   case 57:
-#line 484 "perly.y"
+#line 484 "perly.y" /* yacc.c:1646  */
     { OP *list;
-			  if ((ps[(2) - (2)].val.opval)) {
-			      OP *term = (ps[(2) - (2)].val.opval);
-			      list = op_append_elem(OP_LIST, (ps[(1) - (2)].val.opval), term);
+			  if ((ps[0].val.opval)) {
+			      OP *term = (ps[0].val.opval);
+			      list = op_append_elem(OP_LIST, (ps[-1].val.opval), term);
 			  }
 			  else {
-			      list = (ps[(1) - (2)].val.opval);
+			      list = (ps[-1].val.opval);
 			  }
 			  if (parser->copline == NOLINE)
 			       parser->copline = CopLINE(PL_curcop)-1;
@@ -524,186 +579,219 @@ case 2:
 			  (yyval.opval) = newSTATEOP(0, NULL,
 					  op_convert_list(OP_FORMLINE, 0, list));
 			}
+
     break;
 
   case 58:
-#line 501 "perly.y"
+#line 501 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = NULL; }
+
     break;
 
   case 59:
-#line 503 "perly.y"
-    { (yyval.opval) = op_unscope((ps[(2) - (3)].val.opval)); }
+#line 503 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = op_unscope((ps[-1].val.opval)); }
+
     break;
 
   case 60:
-#line 508 "perly.y"
+#line 508 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = (OP*)NULL; }
+
     break;
 
   case 61:
-#line 510 "perly.y"
-    { (yyval.opval) = (ps[(1) - (1)].val.opval); }
+#line 510 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
+
     break;
 
   case 62:
-#line 512 "perly.y"
-    { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval)); }
+#line 512 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[0].val.opval), (ps[-2].val.opval)); }
+
     break;
 
   case 63:
-#line 514 "perly.y"
-    { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval)); }
+#line 514 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[0].val.opval), (ps[-2].val.opval)); }
+
     break;
 
   case 64:
-#line 516 "perly.y"
-    { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, scalar((ps[(3) - (3)].val.opval)), (ps[(1) - (3)].val.opval)); }
+#line 516 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, scalar((ps[0].val.opval)), (ps[-2].val.opval)); }
+
     break;
 
   case 65:
-#line 518 "perly.y"
-    { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval)); }
+#line 518 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newLOOPOP(OPf_PARENS, 1, (ps[0].val.opval), (ps[-2].val.opval)); }
+
     break;
 
   case 66:
-#line 520 "perly.y"
-    { (yyval.opval) = newFOROP(0, (OP*)NULL, (ps[(3) - (3)].val.opval), (ps[(1) - (3)].val.opval), (OP*)NULL);
-			  parser->copline = (line_t)(ps[(2) - (3)].val.ival); }
+#line 520 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newFOROP(0, (OP*)NULL, (ps[0].val.opval), (ps[-2].val.opval), (OP*)NULL);
+			  parser->copline = (line_t)(ps[-1].val.ival); }
+
     break;
 
   case 67:
-#line 523 "perly.y"
-    { (yyval.opval) = newWHENOP((ps[(3) - (3)].val.opval), op_scope((ps[(1) - (3)].val.opval))); }
+#line 523 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newWHENOP((ps[0].val.opval), op_scope((ps[-2].val.opval))); }
+
     break;
 
   case 68:
-#line 528 "perly.y"
+#line 528 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = (OP*)NULL; }
+
     break;
 
   case 69:
-#line 530 "perly.y"
+#line 530 "perly.y" /* yacc.c:1646  */
     {
-			  ((ps[(2) - (2)].val.opval))->op_flags |= OPf_PARENS;
-			  (yyval.opval) = op_scope((ps[(2) - (2)].val.opval));
+			  ((ps[0].val.opval))->op_flags |= OPf_PARENS;
+			  (yyval.opval) = op_scope((ps[0].val.opval));
 			}
+
     break;
 
   case 70:
-#line 535 "perly.y"
-    { parser->copline = (line_t)(ps[(1) - (6)].val.ival);
+#line 535 "perly.y" /* yacc.c:1646  */
+    { parser->copline = (line_t)(ps[-5].val.ival);
 			    (yyval.opval) = newCONDOP(0,
-				newSTATEOP(OPf_SPECIAL,NULL,(ps[(3) - (6)].val.opval)),
-				op_scope((ps[(5) - (6)].val.opval)), (ps[(6) - (6)].val.opval));
+				newSTATEOP(OPf_SPECIAL,NULL,(ps[-3].val.opval)),
+				op_scope((ps[-1].val.opval)), (ps[0].val.opval));
 			  PL_hints |= HINT_BLOCK_SCOPE;
 			}
+
     break;
 
   case 71:
-#line 545 "perly.y"
+#line 545 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = (OP*)NULL; }
+
     break;
 
   case 72:
-#line 547 "perly.y"
-    { (yyval.opval) = op_scope((ps[(2) - (2)].val.opval)); }
+#line 547 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = op_scope((ps[0].val.opval)); }
+
     break;
 
   case 73:
-#line 552 "perly.y"
+#line 552 "perly.y" /* yacc.c:1646  */
     { (yyval.ival) = (PL_min_intro_pending &&
 			    PL_max_intro_pending >=  PL_min_intro_pending);
 			  intro_my(); }
+
     break;
 
   case 74:
-#line 558 "perly.y"
+#line 558 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = (OP*)NULL; }
+
     break;
 
   case 76:
-#line 564 "perly.y"
+#line 564 "perly.y" /* yacc.c:1646  */
     { YYSTYPE tmplval;
 			  (void)scan_num("1", &tmplval);
 			  (yyval.opval) = tmplval.opval; }
+
     break;
 
   case 78:
-#line 572 "perly.y"
-    { (yyval.opval) = invert(scalar((ps[(1) - (1)].val.opval))); }
+#line 572 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = invert(scalar((ps[0].val.opval))); }
+
     break;
 
   case 79:
-#line 577 "perly.y"
-    { (yyval.opval) = (ps[(1) - (1)].val.opval); intro_my(); }
+#line 577 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); intro_my(); }
+
     break;
 
   case 80:
-#line 581 "perly.y"
-    { (yyval.opval) = (ps[(1) - (1)].val.opval); intro_my(); }
+#line 581 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); intro_my(); }
+
     break;
 
   case 81:
-#line 584 "perly.y"
-    { (yyval.opval) = (ps[(1) - (1)].val.opval); }
+#line 584 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
+
     break;
 
   case 82:
-#line 585 "perly.y"
+#line 585 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = (OP*)NULL; }
+
     break;
 
   case 83:
-#line 589 "perly.y"
+#line 589 "perly.y" /* yacc.c:1646  */
     { (yyval.ival) = start_subparse(FALSE, 0);
 			    SAVEFREESV(PL_compcv); }
+
     break;
 
   case 84:
-#line 595 "perly.y"
+#line 595 "perly.y" /* yacc.c:1646  */
     { (yyval.ival) = start_subparse(FALSE, CVf_ANON);
 			    SAVEFREESV(PL_compcv); }
+
     break;
 
   case 85:
-#line 600 "perly.y"
+#line 600 "perly.y" /* yacc.c:1646  */
     { (yyval.ival) = start_subparse(TRUE, 0);
 			    SAVEFREESV(PL_compcv); }
+
     break;
 
   case 88:
-#line 611 "perly.y"
+#line 611 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = (OP*)NULL; }
+
     break;
 
   case 90:
-#line 617 "perly.y"
+#line 617 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = (OP*)NULL; }
+
     break;
 
   case 91:
-#line 619 "perly.y"
-    { (yyval.opval) = (ps[(2) - (2)].val.opval); }
+#line 619 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
+
     break;
 
   case 92:
-#line 621 "perly.y"
+#line 621 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = (OP*)NULL; }
+
     break;
 
   case 93:
-#line 626 "perly.y"
-    { (yyval.opval) = (ps[(2) - (2)].val.opval); }
+#line 626 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
+
     break;
 
   case 94:
-#line 628 "perly.y"
+#line 628 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = (OP*)NULL; }
+
     break;
 
   case 95:
-#line 633 "perly.y"
+#line 633 "perly.y" /* yacc.c:1646  */
     {
 			  /* We shouldn't get here otherwise */
 			  assert(FEATURE_SIGNATURES_IS_ENABLED);
@@ -713,318 +801,382 @@ case 2:
 				"The signatures feature is experimental");
 			  (yyval.opval) = parse_subsignature();
 			}
+
     break;
 
   case 96:
-#line 643 "perly.y"
+#line 643 "perly.y" /* yacc.c:1646  */
     {
-			  (yyval.opval) = op_append_list(OP_LINESEQ, (ps[(2) - (3)].val.opval),
+			  (yyval.opval) = op_append_list(OP_LINESEQ, (ps[-1].val.opval),
 				newSTATEOP(0, NULL, sawparens(newNULLLIST())));
 			  parser->expect = XATTRBLOCK;
 			}
+
     break;
 
   case 98:
-#line 652 "perly.y"
+#line 652 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = (OP*)NULL; }
+
     break;
 
   case 99:
-#line 657 "perly.y"
-    { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); }
+#line 657 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
+
     break;
 
   case 100:
-#line 659 "perly.y"
-    { (yyval.opval) = newLOGOP((ps[(2) - (3)].val.ival), 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); }
+#line 659 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newLOGOP((ps[-1].val.ival), 0, (ps[-2].val.opval), (ps[0].val.opval)); }
+
     break;
 
   case 101:
-#line 661 "perly.y"
-    { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); }
+#line 661 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
+
     break;
 
   case 103:
-#line 667 "perly.y"
-    { (yyval.opval) = (ps[(1) - (2)].val.opval); }
+#line 667 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[-1].val.opval); }
+
     break;
 
   case 104:
-#line 669 "perly.y"
+#line 669 "perly.y" /* yacc.c:1646  */
     {
-			  OP* term = (ps[(3) - (3)].val.opval);
-			  (yyval.opval) = op_append_elem(OP_LIST, (ps[(1) - (3)].val.opval), term);
+			  OP* term = (ps[0].val.opval);
+			  (yyval.opval) = op_append_elem(OP_LIST, (ps[-2].val.opval), term);
 			}
+
     break;
 
   case 106:
-#line 678 "perly.y"
-    { (yyval.opval) = op_convert_list((ps[(1) - (3)].val.ival), OPf_STACKED,
-				op_prepend_elem(OP_LIST, newGVREF((ps[(1) - (3)].val.ival),(ps[(2) - (3)].val.opval)), (ps[(3) - (3)].val.opval)) );
+#line 678 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = op_convert_list((ps[-2].val.ival), OPf_STACKED,
+				op_prepend_elem(OP_LIST, newGVREF((ps[-2].val.ival),(ps[-1].val.opval)), (ps[0].val.opval)) );
 			}
+
     break;
 
   case 107:
-#line 682 "perly.y"
-    { (yyval.opval) = op_convert_list((ps[(1) - (5)].val.ival), OPf_STACKED,
-				op_prepend_elem(OP_LIST, newGVREF((ps[(1) - (5)].val.ival),(ps[(3) - (5)].val.opval)), (ps[(4) - (5)].val.opval)) );
+#line 682 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = op_convert_list((ps[-4].val.ival), OPf_STACKED,
+				op_prepend_elem(OP_LIST, newGVREF((ps[-4].val.ival),(ps[-2].val.opval)), (ps[-1].val.opval)) );
 			}
+
     break;
 
   case 108:
-#line 686 "perly.y"
+#line 686 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,
 				op_append_elem(OP_LIST,
-				    op_prepend_elem(OP_LIST, scalar((ps[(1) - (6)].val.opval)), (ps[(5) - (6)].val.opval)),
-				    newMETHOP(OP_METHOD, 0, (ps[(3) - (6)].val.opval))));
+				    op_prepend_elem(OP_LIST, scalar((ps[-5].val.opval)), (ps[-1].val.opval)),
+				    newMETHOP(OP_METHOD, 0, (ps[-3].val.opval))));
 			}
+
     break;
 
   case 109:
-#line 692 "perly.y"
+#line 692 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,
-				op_append_elem(OP_LIST, scalar((ps[(1) - (3)].val.opval)),
-				    newMETHOP(OP_METHOD, 0, (ps[(3) - (3)].val.opval))));
+				op_append_elem(OP_LIST, scalar((ps[-2].val.opval)),
+				    newMETHOP(OP_METHOD, 0, (ps[0].val.opval))));
 			}
+
     break;
 
   case 110:
-#line 697 "perly.y"
+#line 697 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,
 				op_append_elem(OP_LIST,
-				    op_prepend_elem(OP_LIST, (ps[(2) - (3)].val.opval), (ps[(3) - (3)].val.opval)),
-				    newMETHOP(OP_METHOD, 0, (ps[(1) - (3)].val.opval))));
+				    op_prepend_elem(OP_LIST, (ps[-1].val.opval), (ps[0].val.opval)),
+				    newMETHOP(OP_METHOD, 0, (ps[-2].val.opval))));
 			}
+
     break;
 
   case 111:
-#line 703 "perly.y"
+#line 703 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = op_convert_list(OP_ENTERSUB, OPf_STACKED,
 				op_append_elem(OP_LIST,
-				    op_prepend_elem(OP_LIST, (ps[(2) - (5)].val.opval), (ps[(4) - (5)].val.opval)),
-				    newMETHOP(OP_METHOD, 0, (ps[(1) - (5)].val.opval))));
+				    op_prepend_elem(OP_LIST, (ps[-3].val.opval), (ps[-1].val.opval)),
+				    newMETHOP(OP_METHOD, 0, (ps[-4].val.opval))));
 			}
+
     break;
 
   case 112:
-#line 709 "perly.y"
-    { (yyval.opval) = op_convert_list((ps[(1) - (2)].val.ival), 0, (ps[(2) - (2)].val.opval)); }
+#line 709 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = op_convert_list((ps[-1].val.ival), 0, (ps[0].val.opval)); }
+
     break;
 
   case 113:
-#line 711 "perly.y"
-    { (yyval.opval) = op_convert_list((ps[(1) - (4)].val.ival), 0, (ps[(3) - (4)].val.opval)); }
+#line 711 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = op_convert_list((ps[-3].val.ival), 0, (ps[-1].val.opval)); }
+
     break;
 
   case 114:
-#line 713 "perly.y"
+#line 713 "perly.y" /* yacc.c:1646  */
     { SvREFCNT_inc_simple_void(PL_compcv);
-			  (yyval.opval) = newANONATTRSUB((ps[(2) - (3)].val.ival), 0, (OP*)NULL, (ps[(3) - (3)].val.opval)); }
+			  (yyval.opval) = newANONATTRSUB((ps[-1].val.ival), 0, (OP*)NULL, (ps[0].val.opval)); }
+
     break;
 
   case 115:
-#line 716 "perly.y"
+#line 716 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
 				 op_append_elem(OP_LIST,
-				   op_prepend_elem(OP_LIST, (ps[(4) - (5)].val.opval), (ps[(5) - (5)].val.opval)), (ps[(1) - (5)].val.opval)));
+				   op_prepend_elem(OP_LIST, (ps[-1].val.opval), (ps[0].val.opval)), (ps[-4].val.opval)));
 			}
+
     break;
 
   case 118:
-#line 731 "perly.y"
-    { (yyval.opval) = newBINOP(OP_GELEM, 0, (ps[(1) - (5)].val.opval), scalar((ps[(3) - (5)].val.opval))); }
+#line 731 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newBINOP(OP_GELEM, 0, (ps[-4].val.opval), scalar((ps[-2].val.opval))); }
+
     break;
 
   case 119:
-#line 733 "perly.y"
-    { (yyval.opval) = newBINOP(OP_AELEM, 0, oopsAV((ps[(1) - (4)].val.opval)), scalar((ps[(3) - (4)].val.opval)));
+#line 733 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newBINOP(OP_AELEM, 0, oopsAV((ps[-3].val.opval)), scalar((ps[-1].val.opval)));
 			}
+
     break;
 
   case 120:
-#line 736 "perly.y"
+#line 736 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newBINOP(OP_AELEM, 0,
-					ref(newAVREF((ps[(1) - (5)].val.opval)),OP_RV2AV),
-					scalar((ps[(4) - (5)].val.opval)));
+					ref(newAVREF((ps[-4].val.opval)),OP_RV2AV),
+					scalar((ps[-1].val.opval)));
 			}
+
     break;
 
   case 121:
-#line 741 "perly.y"
+#line 741 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newBINOP(OP_AELEM, 0,
-					ref(newAVREF((ps[(1) - (4)].val.opval)),OP_RV2AV),
-					scalar((ps[(3) - (4)].val.opval)));
+					ref(newAVREF((ps[-3].val.opval)),OP_RV2AV),
+					scalar((ps[-1].val.opval)));
 			}
+
     break;
 
   case 122:
-#line 746 "perly.y"
-    { (yyval.opval) = newBINOP(OP_HELEM, 0, oopsHV((ps[(1) - (5)].val.opval)), jmaybe((ps[(3) - (5)].val.opval)));
+#line 746 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newBINOP(OP_HELEM, 0, oopsHV((ps[-4].val.opval)), jmaybe((ps[-2].val.opval)));
 			}
+
     break;
 
   case 123:
-#line 749 "perly.y"
+#line 749 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newBINOP(OP_HELEM, 0,
-					ref(newHVREF((ps[(1) - (6)].val.opval)),OP_RV2HV),
-					jmaybe((ps[(4) - (6)].val.opval))); }
+					ref(newHVREF((ps[-5].val.opval)),OP_RV2HV),
+					jmaybe((ps[-2].val.opval))); }
+
     break;
 
   case 124:
-#line 753 "perly.y"
+#line 753 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newBINOP(OP_HELEM, 0,
-					ref(newHVREF((ps[(1) - (5)].val.opval)),OP_RV2HV),
-					jmaybe((ps[(3) - (5)].val.opval))); }
+					ref(newHVREF((ps[-4].val.opval)),OP_RV2HV),
+					jmaybe((ps[-2].val.opval))); }
+
     break;
 
   case 125:
-#line 757 "perly.y"
+#line 757 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
-				   newCVREF(0, scalar((ps[(1) - (4)].val.opval)))); }
+				   newCVREF(0, scalar((ps[-3].val.opval))));
+			  if (parser->expect == XBLOCK)
+			      parser->expect = XOPERATOR;
+			}
+
     break;
 
   case 126:
-#line 760 "perly.y"
+#line 763 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
-				   op_append_elem(OP_LIST, (ps[(4) - (5)].val.opval),
-				       newCVREF(0, scalar((ps[(1) - (5)].val.opval))))); }
+				   op_append_elem(OP_LIST, (ps[-1].val.opval),
+				       newCVREF(0, scalar((ps[-4].val.opval)))));
+			  if (parser->expect == XBLOCK)
+			      parser->expect = XOPERATOR;
+			}
+
     break;
 
   case 127:
-#line 765 "perly.y"
+#line 771 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
-				   op_append_elem(OP_LIST, (ps[(3) - (4)].val.opval),
-					       newCVREF(0, scalar((ps[(1) - (4)].val.opval))))); }
+				   op_append_elem(OP_LIST, (ps[-1].val.opval),
+					       newCVREF(0, scalar((ps[-3].val.opval)))));
+			  if (parser->expect == XBLOCK)
+			      parser->expect = XOPERATOR;
+			}
+
     break;
 
   case 128:
-#line 769 "perly.y"
+#line 778 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
-				   newCVREF(0, scalar((ps[(1) - (3)].val.opval)))); }
+				   newCVREF(0, scalar((ps[-2].val.opval))));
+			  if (parser->expect == XBLOCK)
+			      parser->expect = XOPERATOR;
+			}
+
     break;
 
   case 129:
-#line 772 "perly.y"
-    { (yyval.opval) = newSLICEOP(0, (ps[(5) - (6)].val.opval), (ps[(2) - (6)].val.opval)); }
+#line 784 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), (ps[-4].val.opval)); }
+
     break;
 
   case 130:
-#line 774 "perly.y"
-    { (yyval.opval) = newSLICEOP(0, (ps[(3) - (4)].val.opval), (ps[(1) - (4)].val.opval)); }
+#line 786 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), (ps[-3].val.opval)); }
+
     break;
 
   case 131:
-#line 776 "perly.y"
-    { (yyval.opval) = newSLICEOP(0, (ps[(4) - (5)].val.opval), (OP*)NULL); }
+#line 788 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newSLICEOP(0, (ps[-1].val.opval), (OP*)NULL); }
+
     break;
 
   case 132:
-#line 781 "perly.y"
-    { (yyval.opval) = newASSIGNOP(OPf_STACKED, (ps[(1) - (3)].val.opval), (ps[(2) - (3)].val.ival), (ps[(3) - (3)].val.opval)); }
+#line 793 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newASSIGNOP(OPf_STACKED, (ps[-2].val.opval), (ps[-1].val.ival), (ps[0].val.opval)); }
+
     break;
 
   case 133:
-#line 783 "perly.y"
-    { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); }
+#line 795 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
+
     break;
 
   case 134:
-#line 785 "perly.y"
-    {   if ((ps[(2) - (3)].val.ival) != OP_REPEAT)
-				scalar((ps[(1) - (3)].val.opval));
-			    (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, (ps[(1) - (3)].val.opval), scalar((ps[(3) - (3)].val.opval)));
+#line 797 "perly.y" /* yacc.c:1646  */
+    {   if ((ps[-1].val.ival) != OP_REPEAT)
+				scalar((ps[-2].val.opval));
+			    (yyval.opval) = newBINOP((ps[-1].val.ival), 0, (ps[-2].val.opval), scalar((ps[0].val.opval)));
 			}
+
     break;
 
   case 135:
-#line 790 "perly.y"
-    { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); }
+#line 802 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
+
     break;
 
   case 136:
-#line 792 "perly.y"
-    { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); }
+#line 804 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
+
     break;
 
   case 137:
-#line 794 "perly.y"
-    { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); }
+#line 806 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
+
     break;
 
   case 138:
-#line 796 "perly.y"
-    { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); }
+#line 808 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
+
     break;
 
   case 139:
-#line 798 "perly.y"
-    { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); }
+#line 810 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
+
     break;
 
   case 140:
-#line 800 "perly.y"
-    { (yyval.opval) = newBINOP((ps[(2) - (3)].val.ival), 0, scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); }
+#line 812 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newBINOP((ps[-1].val.ival), 0, scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
+
     break;
 
   case 141:
-#line 802 "perly.y"
-    { (yyval.opval) = newRANGE((ps[(2) - (3)].val.ival), scalar((ps[(1) - (3)].val.opval)), scalar((ps[(3) - (3)].val.opval))); }
+#line 814 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newRANGE((ps[-1].val.ival), scalar((ps[-2].val.opval)), scalar((ps[0].val.opval))); }
+
     break;
 
   case 142:
-#line 804 "perly.y"
-    { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); }
+#line 816 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newLOGOP(OP_AND, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
+
     break;
 
   case 143:
-#line 806 "perly.y"
-    { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); }
+#line 818 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newLOGOP(OP_OR, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
+
     break;
 
   case 144:
-#line 808 "perly.y"
-    { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); }
+#line 820 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newLOGOP(OP_DOR, 0, (ps[-2].val.opval), (ps[0].val.opval)); }
+
     break;
 
   case 145:
-#line 810 "perly.y"
-    { (yyval.opval) = bind_match((ps[(2) - (3)].val.ival), (ps[(1) - (3)].val.opval), (ps[(3) - (3)].val.opval)); }
+#line 822 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = bind_match((ps[-1].val.ival), (ps[-2].val.opval), (ps[0].val.opval)); }
+
     break;
 
   case 146:
-#line 815 "perly.y"
-    { (yyval.opval) = newUNOP(OP_NEGATE, 0, scalar((ps[(2) - (2)].val.opval))); }
+#line 827 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newUNOP(OP_NEGATE, 0, scalar((ps[0].val.opval))); }
+
     break;
 
   case 147:
-#line 817 "perly.y"
-    { (yyval.opval) = (ps[(2) - (2)].val.opval); }
+#line 829 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
+
     break;
 
   case 148:
-#line 820 "perly.y"
-    { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[(2) - (2)].val.opval))); }
+#line 832 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[0].val.opval))); }
+
     break;
 
   case 149:
-#line 822 "perly.y"
-    { (yyval.opval) = newUNOP((ps[(1) - (2)].val.ival), 0, scalar((ps[(2) - (2)].val.opval))); }
+#line 834 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newUNOP((ps[-1].val.ival), 0, scalar((ps[0].val.opval))); }
+
     break;
 
   case 150:
-#line 824 "perly.y"
+#line 836 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newUNOP(OP_POSTINC, 0,
-					op_lvalue(scalar((ps[(1) - (2)].val.opval)), OP_POSTINC)); }
+					op_lvalue(scalar((ps[-1].val.opval)), OP_POSTINC)); }
+
     break;
 
   case 151:
-#line 827 "perly.y"
+#line 839 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newUNOP(OP_POSTDEC, 0,
-					op_lvalue(scalar((ps[(1) - (2)].val.opval)), OP_POSTDEC));}
+					op_lvalue(scalar((ps[-1].val.opval)), OP_POSTDEC));}
+
     break;
 
   case 152:
-#line 830 "perly.y"
+#line 842 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = op_convert_list(OP_JOIN, 0,
 				       op_append_elem(
 					OP_LIST,
@@ -1032,510 +1184,598 @@ case 2:
 					    newSVOP(OP_CONST,0,
 						    newSVpvs("\""))
 					)),
-					(ps[(1) - (2)].val.opval)
+					(ps[-1].val.opval)
 				       ));
 			}
+
     break;
 
   case 153:
-#line 841 "perly.y"
+#line 853 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newUNOP(OP_PREINC, 0,
-					op_lvalue(scalar((ps[(2) - (2)].val.opval)), OP_PREINC)); }
+					op_lvalue(scalar((ps[0].val.opval)), OP_PREINC)); }
+
     break;
 
   case 154:
-#line 844 "perly.y"
+#line 856 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newUNOP(OP_PREDEC, 0,
-					op_lvalue(scalar((ps[(2) - (2)].val.opval)), OP_PREDEC)); }
+					op_lvalue(scalar((ps[0].val.opval)), OP_PREDEC)); }
+
     break;
 
   case 155:
-#line 851 "perly.y"
-    { (yyval.opval) = newANONLIST((ps[(2) - (3)].val.opval)); }
+#line 863 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newANONLIST((ps[-1].val.opval)); }
+
     break;
 
   case 156:
-#line 853 "perly.y"
+#line 865 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newANONLIST((OP*)NULL);}
+
     break;
 
   case 157:
-#line 855 "perly.y"
-    { (yyval.opval) = newANONHASH((ps[(2) - (4)].val.opval)); }
+#line 867 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newANONHASH((ps[-2].val.opval)); }
+
     break;
 
   case 158:
-#line 857 "perly.y"
+#line 869 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newANONHASH((OP*)NULL); }
+
     break;
 
   case 159:
-#line 859 "perly.y"
+#line 871 "perly.y" /* yacc.c:1646  */
     { SvREFCNT_inc_simple_void(PL_compcv);
-			  (yyval.opval) = newANONATTRSUB((ps[(2) - (5)].val.ival), (ps[(3) - (5)].val.opval), (ps[(4) - (5)].val.opval), (ps[(5) - (5)].val.opval)); }
+			  (yyval.opval) = newANONATTRSUB((ps[-3].val.ival), (ps[-2].val.opval), (ps[-1].val.opval), (ps[0].val.opval)); }
+
     break;
 
   case 160:
-#line 862 "perly.y"
+#line 874 "perly.y" /* yacc.c:1646  */
     {
 			  OP *body;
-			  if (parser->copline > (line_t)(ps[(6) - (8)].val.ival))
-			      parser->copline = (line_t)(ps[(6) - (8)].val.ival);
-			  body = block_end((ps[(3) - (8)].val.ival),
-				op_append_list(OP_LINESEQ, (ps[(4) - (8)].val.opval), (ps[(7) - (8)].val.opval)));
+			  if (parser->copline > (line_t)(ps[-2].val.ival))
+			      parser->copline = (line_t)(ps[-2].val.ival);
+			  body = block_end((ps[-5].val.ival),
+				op_append_list(OP_LINESEQ, (ps[-4].val.opval), (ps[-1].val.opval)));
 			  SvREFCNT_inc_simple_void(PL_compcv);
-			  (yyval.opval) = newANONATTRSUB((ps[(2) - (8)].val.ival), NULL, (ps[(5) - (8)].val.opval), body);
+			  (yyval.opval) = newANONATTRSUB((ps[-6].val.ival), NULL, (ps[-3].val.opval), body);
 			}
+
     break;
 
   case 161:
-#line 876 "perly.y"
-    { (yyval.opval) = dofile((ps[(2) - (2)].val.opval), (ps[(1) - (2)].val.ival));}
+#line 888 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = dofile((ps[0].val.opval), (ps[-1].val.ival));}
+
     break;
 
   case 162:
-#line 878 "perly.y"
-    { (yyval.opval) = newUNOP(OP_NULL, OPf_SPECIAL, op_scope((ps[(2) - (2)].val.opval)));}
+#line 890 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newUNOP(OP_NULL, OPf_SPECIAL, op_scope((ps[0].val.opval)));}
+
     break;
 
   case 167:
-#line 886 "perly.y"
-    { (yyval.opval) = newCONDOP(0, (ps[(1) - (5)].val.opval), (ps[(3) - (5)].val.opval), (ps[(5) - (5)].val.opval)); }
+#line 898 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newCONDOP(0, (ps[-4].val.opval), (ps[-2].val.opval), (ps[0].val.opval)); }
+
     break;
 
   case 168:
-#line 888 "perly.y"
-    { (yyval.opval) = newUNOP(OP_REFGEN, 0, (ps[(2) - (2)].val.opval)); }
+#line 900 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newUNOP(OP_REFGEN, 0, (ps[0].val.opval)); }
+
     break;
 
   case 169:
-#line 890 "perly.y"
-    { (yyval.opval) = (ps[(1) - (1)].val.opval); }
+#line 902 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
+
     break;
 
   case 170:
-#line 892 "perly.y"
-    { (yyval.opval) = localize((ps[(2) - (2)].val.opval),(ps[(1) - (2)].val.ival)); }
+#line 904 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = localize((ps[0].val.opval),(ps[-1].val.ival)); }
+
     break;
 
   case 171:
-#line 894 "perly.y"
-    { (yyval.opval) = sawparens((ps[(2) - (3)].val.opval)); }
+#line 906 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = sawparens((ps[-1].val.opval)); }
+
     break;
 
   case 172:
-#line 896 "perly.y"
-    { (yyval.opval) = (ps[(1) - (1)].val.opval); }
+#line 908 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
+
     break;
 
   case 173:
-#line 898 "perly.y"
+#line 910 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = sawparens(newNULLLIST()); }
+
     break;
 
   case 174:
-#line 900 "perly.y"
-    { (yyval.opval) = (ps[(1) - (1)].val.opval); }
+#line 912 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
+
     break;
 
   case 175:
-#line 902 "perly.y"
-    { (yyval.opval) = (ps[(1) - (1)].val.opval); }
+#line 914 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
+
     break;
 
   case 176:
-#line 904 "perly.y"
-    { (yyval.opval) = (ps[(1) - (1)].val.opval); }
+#line 916 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
+
     break;
 
   case 177:
-#line 906 "perly.y"
-    { (yyval.opval) = (ps[(1) - (1)].val.opval); }
+#line 918 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
+
     break;
 
   case 178:
-#line 908 "perly.y"
-    { (yyval.opval) = newUNOP(OP_AV2ARYLEN, 0, ref((ps[(1) - (1)].val.opval), OP_AV2ARYLEN));}
+#line 920 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newUNOP(OP_AV2ARYLEN, 0, ref((ps[0].val.opval), OP_AV2ARYLEN));}
+
     break;
 
   case 179:
-#line 910 "perly.y"
-    { (yyval.opval) = (ps[(1) - (1)].val.opval); }
+#line 922 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
+
     break;
 
   case 180:
-#line 912 "perly.y"
+#line 924 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = op_prepend_elem(OP_ASLICE,
 				newOP(OP_PUSHMARK, 0),
 				    newLISTOP(OP_ASLICE, 0,
-					list((ps[(3) - (4)].val.opval)),
-					ref((ps[(1) - (4)].val.opval), OP_ASLICE)));
-			  if ((yyval.opval) && (ps[(1) - (4)].val.opval))
+					list((ps[-1].val.opval)),
+					ref((ps[-3].val.opval), OP_ASLICE)));
+			  if ((yyval.opval) && (ps[-3].val.opval))
 			      (yyval.opval)->op_private |=
-				  (ps[(1) - (4)].val.opval)->op_private & OPpSLICEWARNING;
+				  (ps[-3].val.opval)->op_private & OPpSLICEWARNING;
 			}
+
     break;
 
   case 181:
-#line 922 "perly.y"
+#line 934 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = op_prepend_elem(OP_KVASLICE,
 				newOP(OP_PUSHMARK, 0),
 				    newLISTOP(OP_KVASLICE, 0,
-					list((ps[(3) - (4)].val.opval)),
-					ref(oopsAV((ps[(1) - (4)].val.opval)), OP_KVASLICE)));
-			  if ((yyval.opval) && (ps[(1) - (4)].val.opval))
+					list((ps[-1].val.opval)),
+					ref(oopsAV((ps[-3].val.opval)), OP_KVASLICE)));
+			  if ((yyval.opval) && (ps[-3].val.opval))
 			      (yyval.opval)->op_private |=
-				  (ps[(1) - (4)].val.opval)->op_private & OPpSLICEWARNING;
+				  (ps[-3].val.opval)->op_private & OPpSLICEWARNING;
 			}
+
     break;
 
   case 182:
-#line 932 "perly.y"
+#line 944 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = op_prepend_elem(OP_HSLICE,
 				newOP(OP_PUSHMARK, 0),
 				    newLISTOP(OP_HSLICE, 0,
-					list((ps[(3) - (5)].val.opval)),
-					ref(oopsHV((ps[(1) - (5)].val.opval)), OP_HSLICE)));
-			  if ((yyval.opval) && (ps[(1) - (5)].val.opval))
+					list((ps[-2].val.opval)),
+					ref(oopsHV((ps[-4].val.opval)), OP_HSLICE)));
+			  if ((yyval.opval) && (ps[-4].val.opval))
 			      (yyval.opval)->op_private |=
-				  (ps[(1) - (5)].val.opval)->op_private & OPpSLICEWARNING;
+				  (ps[-4].val.opval)->op_private & OPpSLICEWARNING;
 			}
+
     break;
 
   case 183:
-#line 942 "perly.y"
+#line 954 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = op_prepend_elem(OP_KVHSLICE,
 				newOP(OP_PUSHMARK, 0),
 				    newLISTOP(OP_KVHSLICE, 0,
-					list((ps[(3) - (5)].val.opval)),
-					ref((ps[(1) - (5)].val.opval), OP_KVHSLICE)));
-			  if ((yyval.opval) && (ps[(1) - (5)].val.opval))
+					list((ps[-2].val.opval)),
+					ref((ps[-4].val.opval), OP_KVHSLICE)));
+			  if ((yyval.opval) && (ps[-4].val.opval))
 			      (yyval.opval)->op_private |=
-				  (ps[(1) - (5)].val.opval)->op_private & OPpSLICEWARNING;
+				  (ps[-4].val.opval)->op_private & OPpSLICEWARNING;
 			}
+
     break;
 
   case 184:
-#line 952 "perly.y"
-    { (yyval.opval) = (ps[(1) - (1)].val.opval); }
+#line 964 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
+
     break;
 
   case 185:
-#line 954 "perly.y"
-    { (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar((ps[(1) - (1)].val.opval))); }
+#line 966 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newUNOP(OP_ENTERSUB, 0, scalar((ps[0].val.opval))); }
+
     break;
 
   case 186:
-#line 956 "perly.y"
-    { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[(1) - (3)].val.opval)));
+#line 968 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[-2].val.opval)));
 			}
+
     break;
 
   case 187:
-#line 959 "perly.y"
+#line 971 "perly.y" /* yacc.c:1646  */
     {
 			  (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
-				op_append_elem(OP_LIST, (ps[(3) - (4)].val.opval), scalar((ps[(1) - (4)].val.opval))));
+				op_append_elem(OP_LIST, (ps[-1].val.opval), scalar((ps[-3].val.opval))));
 			}
+
     break;
 
   case 188:
-#line 964 "perly.y"
+#line 976 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
-			    op_append_elem(OP_LIST, (ps[(3) - (3)].val.opval), scalar((ps[(2) - (3)].val.opval))));
+			    op_append_elem(OP_LIST, (ps[0].val.opval), scalar((ps[-1].val.opval))));
 			}
+
     break;
 
   case 189:
-#line 968 "perly.y"
-    { (yyval.opval) = newSVREF((ps[(1) - (4)].val.opval)); }
+#line 980 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newSVREF((ps[-3].val.opval)); }
+
     break;
 
   case 190:
-#line 970 "perly.y"
-    { (yyval.opval) = newAVREF((ps[(1) - (4)].val.opval)); }
+#line 982 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newAVREF((ps[-3].val.opval)); }
+
     break;
 
   case 191:
-#line 972 "perly.y"
-    { (yyval.opval) = newHVREF((ps[(1) - (4)].val.opval)); }
+#line 984 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newHVREF((ps[-3].val.opval)); }
+
     break;
 
   case 192:
-#line 974 "perly.y"
+#line 986 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newUNOP(OP_ENTERSUB, 0,
-				       scalar(newCVREF((ps[(3) - (4)].val.ival),(ps[(1) - (4)].val.opval)))); }
+				       scalar(newCVREF((ps[-1].val.ival),(ps[-3].val.opval)))); }
+
     break;
 
   case 193:
-#line 977 "perly.y"
-    { (yyval.opval) = newGVREF(0,(ps[(1) - (4)].val.opval)); }
+#line 989 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newGVREF(0,(ps[-3].val.opval)); }
+
     break;
 
   case 194:
-#line 979 "perly.y"
-    { (yyval.opval) = newOP((ps[(1) - (1)].val.ival), OPf_SPECIAL);
+#line 991 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newOP((ps[0].val.ival), OPf_SPECIAL);
 			    PL_hints |= HINT_BLOCK_SCOPE; }
+
     break;
 
   case 195:
-#line 982 "perly.y"
-    { (yyval.opval) = newLOOPEX((ps[(1) - (2)].val.ival),(ps[(2) - (2)].val.opval)); }
+#line 994 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newLOOPEX((ps[-1].val.ival),(ps[0].val.opval)); }
+
     break;
 
   case 196:
-#line 984 "perly.y"
-    { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[(2) - (2)].val.opval))); }
+#line 996 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newUNOP(OP_NOT, 0, scalar((ps[0].val.opval))); }
+
     break;
 
   case 197:
-#line 986 "perly.y"
-    { (yyval.opval) = newOP((ps[(1) - (1)].val.ival), 0); }
+#line 998 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newOP((ps[0].val.ival), 0); }
+
     break;
 
   case 198:
-#line 988 "perly.y"
-    { (yyval.opval) = newUNOP((ps[(1) - (2)].val.ival), 0, (ps[(2) - (2)].val.opval)); }
+#line 1000 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newUNOP((ps[-1].val.ival), 0, (ps[0].val.opval)); }
+
     break;
 
   case 199:
-#line 990 "perly.y"
-    { (yyval.opval) = newUNOP((ps[(1) - (2)].val.ival), 0, (ps[(2) - (2)].val.opval)); }
+#line 1002 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newUNOP((ps[-1].val.ival), 0, (ps[0].val.opval)); }
+
     break;
 
   case 200:
-#line 992 "perly.y"
-    { (yyval.opval) = newOP(OP_REQUIRE, (ps[(1) - (1)].val.ival) ? OPf_SPECIAL : 0); }
+#line 1004 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newOP(OP_REQUIRE, (ps[0].val.ival) ? OPf_SPECIAL : 0); }
+
     break;
 
   case 201:
-#line 994 "perly.y"
-    { (yyval.opval) = newUNOP(OP_REQUIRE, (ps[(1) - (2)].val.ival) ? OPf_SPECIAL : 0, (ps[(2) - (2)].val.opval)); }
+#line 1006 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newUNOP(OP_REQUIRE, (ps[-1].val.ival) ? OPf_SPECIAL : 0, (ps[0].val.opval)); }
+
     break;
 
   case 202:
-#line 996 "perly.y"
-    { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[(1) - (1)].val.opval))); }
+#line 1008 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[0].val.opval))); }
+
     break;
 
   case 203:
-#line 998 "perly.y"
+#line 1010 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED,
-			    op_append_elem(OP_LIST, (ps[(2) - (2)].val.opval), scalar((ps[(1) - (2)].val.opval)))); }
+			    op_append_elem(OP_LIST, (ps[0].val.opval), scalar((ps[-1].val.opval)))); }
+
     break;
 
   case 204:
-#line 1001 "perly.y"
-    { (yyval.opval) = newOP((ps[(1) - (1)].val.ival), 0); }
+#line 1013 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newOP((ps[0].val.ival), 0); }
+
     break;
 
   case 205:
-#line 1003 "perly.y"
-    { (yyval.opval) = newOP((ps[(1) - (3)].val.ival), 0);}
+#line 1015 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newOP((ps[-2].val.ival), 0);}
+
     break;
 
   case 206:
-#line 1005 "perly.y"
-    { (yyval.opval) = (ps[(1) - (1)].val.opval); }
+#line 1017 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
+
     break;
 
   case 207:
-#line 1007 "perly.y"
-    { (yyval.opval) = (ps[(1) - (3)].val.opval); }
+#line 1019 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[-2].val.opval); }
+
     break;
 
   case 208:
-#line 1009 "perly.y"
-    { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[(1) - (1)].val.opval))); }
+#line 1021 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newUNOP(OP_ENTERSUB, OPf_STACKED, scalar((ps[0].val.opval))); }
+
     break;
 
   case 209:
-#line 1011 "perly.y"
-    { (yyval.opval) = ((ps[(1) - (3)].val.ival) == OP_NOT)
-                          ? newUNOP((ps[(1) - (3)].val.ival), 0, newSVOP(OP_CONST, 0, newSViv(0)))
-                          : newOP((ps[(1) - (3)].val.ival), OPf_SPECIAL); }
+#line 1023 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = ((ps[-2].val.ival) == OP_NOT)
+                          ? newUNOP((ps[-2].val.ival), 0, newSVOP(OP_CONST, 0, newSViv(0)))
+                          : newOP((ps[-2].val.ival), OPf_SPECIAL); }
+
     break;
 
   case 210:
-#line 1015 "perly.y"
-    { (yyval.opval) = newUNOP((ps[(1) - (4)].val.ival), 0, (ps[(3) - (4)].val.opval)); }
+#line 1027 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newUNOP((ps[-3].val.ival), 0, (ps[-1].val.opval)); }
+
     break;
 
   case 211:
-#line 1017 "perly.y"
+#line 1029 "perly.y" /* yacc.c:1646  */
     {
-			    if (   (ps[(1) - (1)].val.opval)->op_type != OP_TRANS
-			        && (ps[(1) - (1)].val.opval)->op_type != OP_TRANSR
-				&& (((PMOP*)(ps[(1) - (1)].val.opval))->op_pmflags & PMf_HAS_CV))
+			    if (   (ps[0].val.opval)->op_type != OP_TRANS
+			        && (ps[0].val.opval)->op_type != OP_TRANSR
+				&& (((PMOP*)(ps[0].val.opval))->op_pmflags & PMf_HAS_CV))
 			    {
 				(yyval.ival) = start_subparse(FALSE, CVf_ANON);
 				SAVEFREESV(PL_compcv);
 			    } else
 				(yyval.ival) = 0;
 			}
+
     break;
 
   case 212:
-#line 1028 "perly.y"
-    { (yyval.opval) = pmruntime((ps[(1) - (6)].val.opval), (ps[(4) - (6)].val.opval), (ps[(5) - (6)].val.opval), 1, (ps[(2) - (6)].val.ival)); }
+#line 1040 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = pmruntime((ps[-5].val.opval), (ps[-2].val.opval), (ps[-1].val.opval), 1, (ps[-4].val.ival)); }
+
     break;
 
   case 215:
-#line 1032 "perly.y"
+#line 1044 "perly.y" /* yacc.c:1646  */
     {
 			  (yyval.opval) = newLISTOP(OP_DIE, 0, newOP(OP_PUSHMARK, 0),
 				newSVOP(OP_CONST, 0, newSVpvs("Unimplemented")));
 			}
+
     break;
 
   case 217:
-#line 1041 "perly.y"
-    { (yyval.opval) = my_attrs((ps[(2) - (3)].val.opval),(ps[(3) - (3)].val.opval)); }
+#line 1053 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = my_attrs((ps[-1].val.opval),(ps[0].val.opval)); }
+
     break;
 
   case 218:
-#line 1043 "perly.y"
-    { (yyval.opval) = localize((ps[(2) - (2)].val.opval),(ps[(1) - (2)].val.ival)); }
+#line 1055 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = localize((ps[0].val.opval),(ps[-1].val.ival)); }
+
     break;
 
   case 219:
-#line 1048 "perly.y"
-    { (yyval.opval) = sawparens((ps[(2) - (3)].val.opval)); }
+#line 1060 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = sawparens((ps[-1].val.opval)); }
+
     break;
 
   case 220:
-#line 1050 "perly.y"
+#line 1062 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = sawparens(newNULLLIST()); }
+
     break;
 
   case 221:
-#line 1053 "perly.y"
-    { (yyval.opval) = (ps[(1) - (1)].val.opval); }
+#line 1065 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
+
     break;
 
   case 222:
-#line 1055 "perly.y"
-    { (yyval.opval) = (ps[(1) - (1)].val.opval); }
+#line 1067 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
+
     break;
 
   case 223:
-#line 1057 "perly.y"
-    { (yyval.opval) = (ps[(1) - (1)].val.opval); }
+#line 1069 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
+
     break;
 
   case 224:
-#line 1062 "perly.y"
+#line 1074 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = (OP*)NULL; }
+
     break;
 
   case 225:
-#line 1064 "perly.y"
-    { (yyval.opval) = (ps[(1) - (1)].val.opval); }
+#line 1076 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
+
     break;
 
   case 226:
-#line 1068 "perly.y"
+#line 1080 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = (OP*)NULL; }
+
     break;
 
   case 227:
-#line 1070 "perly.y"
-    { (yyval.opval) = (ps[(1) - (1)].val.opval); }
+#line 1082 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
+
     break;
 
   case 228:
-#line 1074 "perly.y"
+#line 1086 "perly.y" /* yacc.c:1646  */
     { (yyval.opval) = (OP*)NULL; }
+
     break;
 
   case 229:
-#line 1076 "perly.y"
-    { (yyval.opval) = (ps[(2) - (2)].val.opval); }
+#line 1088 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
+
     break;
 
   case 230:
-#line 1082 "perly.y"
-    { parser->in_my = 0; (yyval.opval) = my((ps[(1) - (1)].val.opval)); }
+#line 1094 "perly.y" /* yacc.c:1646  */
+    { parser->in_my = 0; (yyval.opval) = my((ps[0].val.opval)); }
+
     break;
 
   case 236:
-#line 1095 "perly.y"
-    { (yyval.opval) = newCVREF((ps[(1) - (2)].val.ival),(ps[(2) - (2)].val.opval)); }
+#line 1107 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newCVREF((ps[-1].val.ival),(ps[0].val.opval)); }
+
     break;
 
   case 237:
-#line 1099 "perly.y"
-    { (yyval.opval) = newSVREF((ps[(2) - (2)].val.opval)); }
+#line 1111 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newSVREF((ps[0].val.opval)); }
+
     break;
 
   case 238:
-#line 1103 "perly.y"
-    { (yyval.opval) = newAVREF((ps[(2) - (2)].val.opval));
-			  if ((yyval.opval)) (yyval.opval)->op_private |= (ps[(1) - (2)].val.ival);
+#line 1115 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newAVREF((ps[0].val.opval));
+			  if ((yyval.opval)) (yyval.opval)->op_private |= (ps[-1].val.ival);
 			}
+
     break;
 
   case 239:
-#line 1109 "perly.y"
-    { (yyval.opval) = newHVREF((ps[(2) - (2)].val.opval));
-			  if ((yyval.opval)) (yyval.opval)->op_private |= (ps[(1) - (2)].val.ival);
+#line 1121 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newHVREF((ps[0].val.opval));
+			  if ((yyval.opval)) (yyval.opval)->op_private |= (ps[-1].val.ival);
 			}
+
     break;
 
   case 240:
-#line 1115 "perly.y"
-    { (yyval.opval) = newAVREF((ps[(2) - (2)].val.opval)); }
+#line 1127 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newAVREF((ps[0].val.opval)); }
+
     break;
 
   case 241:
-#line 1117 "perly.y"
-    { (yyval.opval) = newAVREF((ps[(1) - (4)].val.opval)); }
+#line 1129 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newAVREF((ps[-3].val.opval)); }
+
     break;
 
   case 242:
-#line 1121 "perly.y"
-    { (yyval.opval) = newGVREF(0,(ps[(2) - (2)].val.opval)); }
+#line 1133 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newGVREF(0,(ps[0].val.opval)); }
+
     break;
 
   case 244:
-#line 1126 "perly.y"
-    { (yyval.opval) = newAVREF((ps[(1) - (3)].val.opval)); }
+#line 1138 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newAVREF((ps[-2].val.opval)); }
+
     break;
 
   case 246:
-#line 1131 "perly.y"
-    { (yyval.opval) = newHVREF((ps[(1) - (3)].val.opval)); }
+#line 1143 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newHVREF((ps[-2].val.opval)); }
+
     break;
 
   case 248:
-#line 1136 "perly.y"
-    { (yyval.opval) = newGVREF(0,(ps[(1) - (3)].val.opval)); }
+#line 1148 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = newGVREF(0,(ps[-2].val.opval)); }
+
     break;
 
   case 249:
-#line 1141 "perly.y"
-    { (yyval.opval) = scalar((ps[(1) - (1)].val.opval)); }
+#line 1153 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = scalar((ps[0].val.opval)); }
+
     break;
 
   case 250:
-#line 1143 "perly.y"
-    { (yyval.opval) = scalar((ps[(1) - (1)].val.opval)); }
+#line 1155 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = scalar((ps[0].val.opval)); }
+
     break;
 
   case 251:
-#line 1145 "perly.y"
-    { (yyval.opval) = op_scope((ps[(1) - (1)].val.opval)); }
+#line 1157 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = op_scope((ps[0].val.opval)); }
+
     break;
 
   case 252:
-#line 1148 "perly.y"
-    { (yyval.opval) = (ps[(1) - (1)].val.opval); }
+#line 1160 "perly.y" /* yacc.c:1646  */
+    { (yyval.opval) = (ps[0].val.opval); }
+
     break;
 
+
+
       default: break;
     
 
 /* Generated from:
- * 703ebd267cf8ca45f9dee9bc0f4b21511117a0c1dca1c8bc9438ce91950217ae perly.y
+ * 4fd37fdbff6285ba6e9096c2229255ecc6264d2f26835e535cf1c38f387ceae6 perly.y
  * a4923588f219644801577c514014847e1e5240f49413fa3b89d3306fa4874d07 regen_perly.pl
  * ex: set ro: */
diff --git a/perly.h b/perly.h
index acbdaae..4ecd16e 100644
--- a/perly.h
+++ b/perly.h
@@ -1,28 +1,28 @@
 /* -*- buffer-read-only: t -*-
    !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
-   This file is built by regen_perly.pl from perly.y.
+   This file is built by ./regen_perly.pl from perly.y.
    Any changes made here will be lost!
  */
 
-#define PERL_BISON_VERSION  20007
+#define PERL_BISON_VERSION  30000
 
 #ifdef PERL_CORE
-/* A Bison parser, made by GNU Bison 2.7.  */
+/* A Bison parser, made by GNU Bison 3.0.4.  */
 
 /* Bison interface for Yacc-like parsers in C
-   
-      Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
-   
+
+   Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
+
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
-   
+
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-   
+
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
@@ -35,11 +35,11 @@
    special exception, which will cause the skeleton and the resulting
    Bison output files to be licensed under the GNU General Public
    License without this special exception.
-   
+
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
-/* Enabling traces.  */
+/* Debug traces.  */
 #ifndef YYDEBUG
 # define YYDEBUG 0
 #endif
@@ -47,178 +47,95 @@
 extern int yydebug;
 #endif
 
-/* Tokens.  */
+/* Token type.  */
 #ifndef YYTOKENTYPE
 # define YYTOKENTYPE
-   /* Put the tokens into the symbol table, so that GDB and other debuggers
-      know about them.  */
-   enum yytokentype {
-     GRAMPROG = 258,
-     GRAMEXPR = 259,
-     GRAMBLOCK = 260,
-     GRAMBARESTMT = 261,
-     GRAMFULLSTMT = 262,
-     GRAMSTMTSEQ = 263,
-     WORD = 264,
-     METHOD = 265,
-     FUNCMETH = 266,
-     THING = 267,
-     PMFUNC = 268,
-     PRIVATEREF = 269,
-     QWLIST = 270,
-     FUNC0OP = 271,
-     FUNC0SUB = 272,
-     UNIOPSUB = 273,
-     LSTOPSUB = 274,
-     PLUGEXPR = 275,
-     PLUGSTMT = 276,
-     LABEL = 277,
-     FORMAT = 278,
-     SUB = 279,
-     ANONSUB = 280,
-     PACKAGE = 281,
-     USE = 282,
-     WHILE = 283,
-     UNTIL = 284,
-     IF = 285,
-     UNLESS = 286,
-     ELSE = 287,
-     ELSIF = 288,
-     CONTINUE = 289,
-     FOR = 290,
-     GIVEN = 291,
-     WHEN = 292,
-     DEFAULT = 293,
-     LOOPEX = 294,
-     DOTDOT = 295,
-     YADAYADA = 296,
-     FUNC0 = 297,
-     FUNC1 = 298,
-     FUNC = 299,
-     UNIOP = 300,
-     LSTOP = 301,
-     RELOP = 302,
-     EQOP = 303,
-     MULOP = 304,
-     ADDOP = 305,
-     DOLSHARP = 306,
-     DO = 307,
-     HASHBRACK = 308,
-     NOAMP = 309,
-     LOCAL = 310,
-     MY = 311,
-     REQUIRE = 312,
-     COLONATTR = 313,
-     FORMLBRACK = 314,
-     FORMRBRACK = 315,
-     PREC_LOW = 316,
-     DOROP = 317,
-     OROP = 318,
-     ANDOP = 319,
-     NOTOP = 320,
-     ASSIGNOP = 321,
-     DORDOR = 322,
-     OROR = 323,
-     ANDAND = 324,
-     BITOROP = 325,
-     BITANDOP = 326,
-     SHIFTOP = 327,
-     MATCHOP = 328,
-     REFGEN = 329,
-     UMINUS = 330,
-     POWOP = 331,
-     POSTJOIN = 332,
-     POSTDEC = 333,
-     POSTINC = 334,
-     PREDEC = 335,
-     PREINC = 336,
-     ARROW = 337
-   };
+  enum yytokentype
+  {
+    GRAMPROG = 258,
+    GRAMEXPR = 259,
+    GRAMBLOCK = 260,
+    GRAMBARESTMT = 261,
+    GRAMFULLSTMT = 262,
+    GRAMSTMTSEQ = 263,
+    WORD = 264,
+    METHOD = 265,
+    FUNCMETH = 266,
+    THING = 267,
+    PMFUNC = 268,
+    PRIVATEREF = 269,
+    QWLIST = 270,
+    FUNC0OP = 271,
+    FUNC0SUB = 272,
+    UNIOPSUB = 273,
+    LSTOPSUB = 274,
+    PLUGEXPR = 275,
+    PLUGSTMT = 276,
+    LABEL = 277,
+    FORMAT = 278,
+    SUB = 279,
+    ANONSUB = 280,
+    PACKAGE = 281,
+    USE = 282,
+    WHILE = 283,
+    UNTIL = 284,
+    IF = 285,
+    UNLESS = 286,
+    ELSE = 287,
+    ELSIF = 288,
+    CONTINUE = 289,
+    FOR = 290,
+    GIVEN = 291,
+    WHEN = 292,
+    DEFAULT = 293,
+    LOOPEX = 294,
+    DOTDOT = 295,
+    YADAYADA = 296,
+    FUNC0 = 297,
+    FUNC1 = 298,
+    FUNC = 299,
+    UNIOP = 300,
+    LSTOP = 301,
+    RELOP = 302,
+    EQOP = 303,
+    MULOP = 304,
+    ADDOP = 305,
+    DOLSHARP = 306,
+    DO = 307,
+    HASHBRACK = 308,
+    NOAMP = 309,
+    LOCAL = 310,
+    MY = 311,
+    REQUIRE = 312,
+    COLONATTR = 313,
+    FORMLBRACK = 314,
+    FORMRBRACK = 315,
+    PREC_LOW = 316,
+    OROP = 317,
+    DOROP = 318,
+    ANDOP = 319,
+    NOTOP = 320,
+    ASSIGNOP = 321,
+    OROR = 322,
+    DORDOR = 323,
+    ANDAND = 324,
+    BITOROP = 325,
+    BITANDOP = 326,
+    SHIFTOP = 327,
+    MATCHOP = 328,
+    UMINUS = 329,
+    REFGEN = 330,
+    POWOP = 331,
+    PREINC = 332,
+    PREDEC = 333,
+    POSTINC = 334,
+    POSTDEC = 335,
+    POSTJOIN = 336,
+    ARROW = 337
+  };
 #endif
 
-/* Tokens.  */
-#define GRAMPROG 258
-#define GRAMEXPR 259
-#define GRAMBLOCK 260
-#define GRAMBARESTMT 261
-#define GRAMFULLSTMT 262
-#define GRAMSTMTSEQ 263
-#define WORD 264
-#define METHOD 265
-#define FUNCMETH 266
-#define THING 267
-#define PMFUNC 268
-#define PRIVATEREF 269
-#define QWLIST 270
-#define FUNC0OP 271
-#define FUNC0SUB 272
-#define UNIOPSUB 273
-#define LSTOPSUB 274
-#define PLUGEXPR 275
-#define PLUGSTMT 276
-#define LABEL 277
-#define FORMAT 278
-#define SUB 279
-#define ANONSUB 280
-#define PACKAGE 281
-#define USE 282
-#define WHILE 283
-#define UNTIL 284
-#define IF 285
-#define UNLESS 286
-#define ELSE 287
-#define ELSIF 288
-#define CONTINUE 289
-#define FOR 290
-#define GIVEN 291
-#define WHEN 292
-#define DEFAULT 293
-#define LOOPEX 294
-#define DOTDOT 295
-#define YADAYADA 296
-#define FUNC0 297
-#define FUNC1 298
-#define FUNC 299
-#define UNIOP 300
-#define LSTOP 301
-#define RELOP 302
-#define EQOP 303
-#define MULOP 304
-#define ADDOP 305
-#define DOLSHARP 306
-#define DO 307
-#define HASHBRACK 308
-#define NOAMP 309
-#define LOCAL 310
-#define MY 311
-#define REQUIRE 312
-#define COLONATTR 313
-#define FORMLBRACK 314
-#define FORMRBRACK 315
-#define PREC_LOW 316
-#define DOROP 317
-#define OROP 318
-#define ANDOP 319
-#define NOTOP 320
-#define ASSIGNOP 321
-#define DORDOR 322
-#define OROR 323
-#define ANDAND 324
-#define BITOROP 325
-#define BITANDOP 326
-#define SHIFTOP 327
-#define MATCHOP 328
-#define REFGEN 329
-#define UMINUS 330
-#define POWOP 331
-#define POSTJOIN 332
-#define POSTDEC 333
-#define POSTINC 334
-#define PREDEC 335
-#define PREINC 336
-#define ARROW 337
-
-
+/* Value type.  */
 #ifdef PERL_IN_TOKE_C
 static bool
 S_is_opval_token(int type) {
@@ -243,9 +160,9 @@ S_is_opval_token(int type) {
 #endif /* PERL_IN_TOKE_C */
 #endif /* PERL_CORE */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE
+
+union YYSTYPE
 {
-/* Line 2058 of yacc.c  */
 
     I32	ival; /* __DEFAULT__ (marker for regen_perly.pl;
 				must always be 1st union member) */
@@ -253,31 +170,19 @@ typedef union YYSTYPE
     OP *opval;
     GV *gvval;
 
+};
 
-/* Line 2058 of yacc.c  */
-} YYSTYPE;
+typedef union YYSTYPE YYSTYPE;
 # define YYSTYPE_IS_TRIVIAL 1
-# define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
 #endif
 
 
-#ifdef YYPARSE_PARAM
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void *YYPARSE_PARAM);
-#else
-int yyparse ();
-#endif
-#else /* ! YYPARSE_PARAM */
-#if defined __STDC__ || defined __cplusplus
+
 int yyparse (void);
-#else
-int yyparse ();
-#endif
-#endif /* ! YYPARSE_PARAM */
 
 
 /* Generated from:
- * 703ebd267cf8ca45f9dee9bc0f4b21511117a0c1dca1c8bc9438ce91950217ae perly.y
+ * 4fd37fdbff6285ba6e9096c2229255ecc6264d2f26835e535cf1c38f387ceae6 perly.y
  * a4923588f219644801577c514014847e1e5240f49413fa3b89d3306fa4874d07 regen_perly.pl
  * ex: set ro: */
diff --git a/perly.tab b/perly.tab
index f5a9580..ac88c85 100644
--- a/perly.tab
+++ b/perly.tab
@@ -1,12 +1,12 @@
 /* -*- buffer-read-only: t -*-
    !!!!!!!   DO NOT EDIT THIS FILE   !!!!!!!
-   This file is built by regen_perly.pl from perly.y.
+   This file is built by ./regen_perly.pl from perly.y.
    Any changes made here will be lost!
  */
 
 #define YYFINAL  14
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   2913
+#define YYLAST   2896
 
 /* YYNTOKENS -- Number of terminals.  */
 #define YYNTOKENS  105
@@ -14,17 +14,19 @@
 #define YYNNTS  77
 /* YYNRULES -- Number of rules.  */
 #define YYNRULES  252
-/* YYNRULES -- Number of states.  */
+/* YYNSTATES -- Number of states.  */
 #define YYNSTATES  508
 
-/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
+/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
+   by yylex, with out-of-bounds checking.  */
 #define YYUNDEFTOK  2
 #define YYMAXUTOK   337
 
-#define YYTRANSLATE(YYX)						\
+#define YYTRANSLATE(YYX)                                                \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
 
-/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
+/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
+   as returned by yylex, without out-of-bounds checking.  */
 static const yytype_uint8 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -64,133 +66,7 @@ static const yytype_uint8 yytranslate[] =
 };
 
 #if YYDEBUG
-/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
-   YYRHS.  */
-static const yytype_uint16 yyprhs[] =
-{
-       0,     0,     3,     4,     9,    10,    14,    15,    19,    20,
-      24,    25,    29,    30,    34,    39,    47,    48,    53,    54,
-      55,    58,    59,    62,    64,    66,    69,    72,    74,    79,
-      80,    88,    89,   100,   105,   106,   114,   122,   130,   137,
-     144,   147,   156,   165,   166,   167,   181,   191,   200,   201,
-     213,   223,   231,   234,   235,   244,   247,   249,   252,   253,
-     257,   259,   261,   265,   269,   273,   277,   281,   285,   286,
-     289,   296,   297,   300,   301,   302,   304,   305,   307,   309,
-     311,   313,   315,   316,   317,   318,   319,   321,   323,   324,
-     326,   327,   330,   332,   335,   337,   338,   342,   344,   346,
-     350,   354,   358,   360,   363,   367,   369,   373,   379,   386,
-     390,   394,   400,   403,   408,   409,   415,   417,   419,   425,
-     430,   436,   441,   447,   454,   460,   465,   471,   476,   480,
-     487,   492,   498,   502,   506,   510,   514,   518,   522,   526,
-     530,   534,   538,   542,   546,   550,   554,   557,   560,   563,
-     566,   569,   572,   575,   578,   581,   585,   588,   593,   597,
-     603,   612,   615,   618,   620,   622,   624,   626,   632,   635,
-     637,   640,   644,   646,   649,   651,   653,   655,   657,   659,
-     661,   666,   671,   677,   683,   685,   687,   691,   696,   700,
-     705,   710,   715,   720,   725,   727,   730,   733,   735,   738,
-     741,   743,   746,   748,   751,   753,   757,   759,   763,   765,
-     769,   774,   775,   782,   784,   786,   788,   790,   794,   797,
-     801,   804,   806,   808,   810,   811,   813,   814,   816,   817,
-     820,   822,   824,   826,   828,   830,   832,   835,   838,   841,
-     844,   847,   852,   855,   857,   861,   863,   867,   869,   873,
-     875,   877,   879
-};
-
-/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
-static const yytype_int16 yyrhs[] =
-{
-     106,     0,    -1,    -1,     3,   107,   115,   118,    -1,    -1,
-       4,   108,   167,    -1,    -1,     5,   109,   113,    -1,    -1,
-       6,   110,   122,    -1,    -1,     7,   111,   120,    -1,    -1,
-       8,   112,   118,    -1,     9,   115,   118,    10,    -1,    18,
-     115,   101,    71,   119,   101,    19,    -1,    -1,     9,   117,
-     118,    10,    -1,    -1,    -1,   118,   120,    -1,    -1,   119,
-     130,    -1,   122,    -1,   121,    -1,    33,   122,    -1,    33,
-     121,    -1,    32,    -1,    34,   144,   141,   114,    -1,    -1,
-      35,   145,   142,   123,   146,   147,   151,    -1,    -1,    35,
-     145,   142,   124,   115,   149,   147,     9,   118,    10,    -1,
-      37,    20,    20,   101,    -1,    -1,    38,   142,   125,    20,
-      20,   166,   101,    -1,    41,   100,   115,   139,    99,   116,
-     133,    -1,    42,   100,   115,   139,    99,   116,   133,    -1,
-      47,   100,   115,   139,    99,   116,    -1,    48,   100,   115,
-     139,    99,   116,    -1,    49,   113,    -1,    39,   100,   115,
-     137,    99,   135,   116,   134,    -1,    40,   100,   115,   138,
-      99,   135,   116,   134,    -1,    -1,    -1,    46,   100,   115,
-     140,   101,   126,   137,   101,   127,   135,   140,    99,   116,
-      -1,    46,    67,   115,   169,   100,   139,    99,   116,   134,
-      -1,    46,   173,   100,   115,   139,    99,   116,   134,    -1,
-      -1,    46,    90,    67,   115,   170,   128,   100,   139,    99,
-     116,   134,    -1,    46,    90,   171,   100,   115,   139,    99,
-     116,   134,    -1,    46,   100,   115,   139,    99,   116,   134,
-      -1,   113,   134,    -1,    -1,    37,    20,    20,     9,   115,
-     129,   118,    10,    -1,   132,   101,    -1,   101,    -1,    23,
-     131,    -1,    -1,    70,   118,    71,    -1,     1,    -1,   152,
-      -1,   152,    41,   152,    -1,   152,    42,   152,    -1,   152,
-      39,   152,    -1,   152,    40,   138,    -1,   152,    46,   152,
-      -1,   152,    48,   152,    -1,    -1,    43,   116,    -1,    44,
-     100,   139,    99,   116,   133,    -1,    -1,    45,   113,    -1,
-      -1,    -1,   132,    -1,    -1,   152,    -1,   152,    -1,   152,
-      -1,   136,    -1,    20,    -1,    -1,    -1,    -1,    -1,    20,
-      -1,    25,    -1,    -1,    23,    -1,    -1,    69,    23,    -1,
-      69,    -1,    69,    23,    -1,    69,    -1,    -1,   100,   150,
-      99,    -1,   113,    -1,   101,    -1,   152,    75,   152,    -1,
-     152,    74,   152,    -1,   152,    73,   152,    -1,   153,    -1,
-     153,    77,    -1,   153,    77,   162,    -1,   162,    -1,    57,
-     181,   153,    -1,    55,   100,   181,   152,    99,    -1,   162,
-      98,   156,   100,   167,    99,    -1,   162,    98,   156,    -1,
-      21,   181,   166,    -1,    22,   181,   100,   167,    99,    -1,
-      57,   166,    -1,    55,   100,   167,    99,    -1,    -1,    30,
-     143,   113,   155,   166,    -1,    21,    -1,   173,    -1,   180,
-       9,   152,   101,    10,    -1,   173,    11,   152,    12,    -1,
-     162,    98,    11,   152,    12,    -1,   157,    11,   152,    12,
-      -1,   173,     9,   152,   101,    10,    -1,   162,    98,     9,
-     152,   101,    10,    -1,   157,     9,   152,   101,    10,    -1,
-     162,    98,   100,    99,    -1,   162,    98,   100,   152,    99,
-      -1,   157,   100,   152,    99,    -1,   157,   100,    99,    -1,
-     100,   152,    99,    11,   152,    12,    -1,    26,    11,   152,
-      12,    -1,   100,    99,    11,   152,    12,    -1,   162,    78,
-     162,    -1,   162,    92,   162,    -1,   162,    60,   162,    -1,
-     162,    61,   162,    -1,   162,    86,   162,    -1,   162,    58,
-     162,    -1,   162,    59,   162,    -1,   162,    85,   162,    -1,
-     162,    84,   162,    -1,   162,    51,   162,    -1,   162,    83,
-     162,    -1,   162,    82,   162,    -1,   162,    81,   162,    -1,
-     162,    87,   162,    -1,    13,   162,    -1,    14,   162,    -1,
-      88,   162,    -1,    89,   162,    -1,   162,    95,    -1,   162,
-      94,    -1,   162,    93,    -1,    97,   162,    -1,    96,   162,
-      -1,    11,   152,    12,    -1,    11,    12,    -1,    64,   152,
-     101,    10,    -1,    64,   101,    10,    -1,    36,   143,   146,
-     147,   113,    -1,    36,   143,   115,   149,   147,     9,   118,
-      10,    -1,    63,   162,    -1,    63,   113,    -1,   158,    -1,
-     159,    -1,   160,    -1,   161,    -1,   162,    79,   162,    80,
-     162,    -1,    90,   162,    -1,   164,    -1,    66,   162,    -1,
-     100,   152,    99,    -1,    26,    -1,   100,    99,    -1,   173,
-      -1,   177,    -1,   175,    -1,   174,    -1,   176,    -1,   157,
-      -1,   178,    11,   152,    12,    -1,   179,    11,   152,    12,
-      -1,   178,     9,   152,   101,    10,    -1,   179,     9,   152,
-     101,    10,    -1,    23,    -1,   172,    -1,   172,   100,    99,
-      -1,   172,   100,   152,    99,    -1,    65,   145,   166,    -1,
-     162,    98,   102,   103,    -1,   162,    98,    15,   103,    -1,
-     162,    98,    16,   103,    -1,   162,    98,    17,   103,    -1,
-     162,    98,   103,   103,    -1,    50,    -1,    50,   162,    -1,
-      76,   153,    -1,    56,    -1,    56,   113,    -1,    56,   162,
-      -1,    68,    -1,    68,   162,    -1,    29,    -1,    29,   162,
-      -1,    53,    -1,    53,   100,    99,    -1,    27,    -1,    27,
-     100,    99,    -1,    28,    -1,    54,   100,    99,    -1,    54,
-     100,   152,    99,    -1,    -1,    24,   163,   100,   153,   168,
-      99,    -1,    20,    -1,   154,    -1,    52,    -1,    31,    -1,
-      67,   165,   148,    -1,    67,   165,    -1,   100,   152,    99,
-      -1,   100,    99,    -1,   173,    -1,   175,    -1,   174,    -1,
-      -1,   153,    -1,    -1,   152,    -1,    -1,   104,   152,    -1,
-     173,    -1,   173,    -1,   174,    -1,   175,    -1,   170,    -1,
-     172,    -1,    17,   181,    -1,   102,   181,    -1,    15,   181,
-      -1,    16,   181,    -1,    62,   181,    -1,   162,    98,    62,
-     103,    -1,   103,   181,    -1,   174,    -1,   162,    98,    15,
-      -1,   175,    -1,   162,    98,    16,    -1,   177,    -1,   162,
-      98,   103,    -1,    20,    -1,   173,    -1,   113,    -1,    25,
-      -1
-};
-
-/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
+  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
        0,   115,   115,   114,   125,   124,   134,   133,   146,   145,
@@ -205,20 +81,20 @@ static const yytype_uint16 yyrline[] =
      617,   618,   620,   625,   627,   633,   632,   651,   652,   656,
      658,   660,   662,   666,   668,   673,   677,   681,   685,   691,
      696,   702,   708,   710,   713,   712,   723,   724,   728,   732,
-     735,   740,   745,   748,   752,   756,   759,   764,   768,   771,
-     773,   775,   780,   782,   784,   789,   791,   793,   795,   797,
-     799,   801,   803,   805,   807,   809,   814,   816,   819,   821,
-     823,   826,   829,   840,   843,   850,   852,   854,   856,   858,
-     861,   875,   877,   881,   882,   883,   884,   885,   887,   889,
-     891,   893,   895,   897,   899,   901,   903,   905,   907,   909,
-     911,   921,   931,   941,   951,   953,   955,   958,   963,   967,
-     969,   971,   973,   976,   978,   981,   983,   985,   987,   989,
-     991,   993,   995,   997,  1000,  1002,  1004,  1006,  1008,  1010,
-    1014,  1017,  1016,  1029,  1030,  1031,  1036,  1040,  1042,  1047,
-    1049,  1052,  1054,  1056,  1061,  1063,  1068,  1069,  1074,  1075,
-    1081,  1085,  1086,  1087,  1090,  1091,  1094,  1098,  1102,  1108,
-    1114,  1116,  1120,  1124,  1125,  1129,  1130,  1134,  1135,  1140,
-    1142,  1144,  1147
+     735,   740,   745,   748,   752,   756,   762,   770,   777,   783,
+     785,   787,   792,   794,   796,   801,   803,   805,   807,   809,
+     811,   813,   815,   817,   819,   821,   826,   828,   831,   833,
+     835,   838,   841,   852,   855,   862,   864,   866,   868,   870,
+     873,   887,   889,   893,   894,   895,   896,   897,   899,   901,
+     903,   905,   907,   909,   911,   913,   915,   917,   919,   921,
+     923,   933,   943,   953,   963,   965,   967,   970,   975,   979,
+     981,   983,   985,   988,   990,   993,   995,   997,   999,  1001,
+    1003,  1005,  1007,  1009,  1012,  1014,  1016,  1018,  1020,  1022,
+    1026,  1029,  1028,  1041,  1042,  1043,  1048,  1052,  1054,  1059,
+    1061,  1064,  1066,  1068,  1073,  1075,  1080,  1081,  1086,  1087,
+    1093,  1097,  1098,  1099,  1102,  1103,  1106,  1110,  1114,  1120,
+    1126,  1128,  1132,  1136,  1137,  1141,  1142,  1146,  1147,  1152,
+    1154,  1156,  1159
 };
 #endif
 
@@ -237,10 +113,10 @@ static const char *const yytname[] =
   "LOOPEX", "DOTDOT", "YADAYADA", "FUNC0", "FUNC1", "FUNC", "UNIOP",
   "LSTOP", "RELOP", "EQOP", "MULOP", "ADDOP", "DOLSHARP", "DO",
   "HASHBRACK", "NOAMP", "LOCAL", "MY", "REQUIRE", "COLONATTR",
-  "FORMLBRACK", "FORMRBRACK", "PREC_LOW", "DOROP", "OROP", "ANDOP",
-  "NOTOP", "','", "ASSIGNOP", "'?'", "':'", "DORDOR", "OROR", "ANDAND",
-  "BITOROP", "BITANDOP", "SHIFTOP", "MATCHOP", "'!'", "'~'", "REFGEN",
-  "UMINUS", "POWOP", "POSTJOIN", "POSTDEC", "POSTINC", "PREDEC", "PREINC",
+  "FORMLBRACK", "FORMRBRACK", "PREC_LOW", "OROP", "DOROP", "ANDOP",
+  "NOTOP", "','", "ASSIGNOP", "'?'", "':'", "OROR", "DORDOR", "ANDAND",
+  "BITOROP", "BITANDOP", "SHIFTOP", "MATCHOP", "'!'", "'~'", "UMINUS",
+  "REFGEN", "POWOP", "PREINC", "PREDEC", "POSTINC", "POSTDEC", "POSTJOIN",
   "ARROW", "')'", "'('", "';'", "'$'", "'*'", "'/'", "$accept", "grammar",
   "$@1", "$@2", "$@3", "$@4", "$@5", "$@6", "block", "formblock",
   "remember", "mblock", "mremember", "stmtseq", "formstmtseq", "fullstmt",
@@ -253,13 +129,13 @@ static const char *const yytname[] =
   "anonymous", "termdo", "term", "@16", "myattrterm", "myterm",
   "optlistexpr", "optexpr", "optrepl", "my_scalar", "my_var",
   "refgen_topic", "amper", "scalar", "ary", "hsh", "arylen", "star",
-  "sliceme", "kvslice", "gelem", "indirob", YY_NULL
+  "sliceme", "kvslice", "gelem", "indirob", YY_NULLPTR
 };
 #endif
 
 # ifdef YYPRINT
-/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
-   token YYLEX-NUM.  */
+/* YYTOKNUM[NUM] -- (External) token number corresponding to the
+   (internal) symbol number NUM (which must be that of a token).  */
 static const yytype_uint16 yytoknum[] =
 {
        0,   256,   257,   258,   259,   260,   261,   262,   263,   123,
@@ -276,71 +152,76 @@ static const yytype_uint16 yytoknum[] =
 };
 # endif
 
-/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
-static const yytype_uint8 yyr1[] =
-{
-       0,   105,   107,   106,   108,   106,   109,   106,   110,   106,
-     111,   106,   112,   106,   113,   114,   115,   116,   117,   118,
-     118,   119,   119,   120,   120,   121,   121,   122,   122,   123,
-     122,   124,   122,   122,   125,   122,   122,   122,   122,   122,
-     122,   122,   122,   126,   127,   122,   122,   122,   128,   122,
-     122,   122,   122,   129,   122,   122,   122,   130,   131,   131,
-     132,   132,   132,   132,   132,   132,   132,   132,   133,   133,
-     133,   134,   134,   135,   136,   136,   137,   137,   138,   139,
-     140,   141,   141,   142,   143,   144,   145,   145,   146,   146,
-     147,   147,   147,   148,   148,   150,   149,   151,   151,   152,
-     152,   152,   152,   153,   153,   153,   154,   154,   154,   154,
-     154,   154,   154,   154,   155,   154,   156,   156,   157,   157,
-     157,   157,   157,   157,   157,   157,   157,   157,   157,   157,
-     157,   157,   158,   158,   158,   158,   158,   158,   158,   158,
-     158,   158,   158,   158,   158,   158,   159,   159,   159,   159,
-     159,   159,   159,   159,   159,   160,   160,   160,   160,   160,
-     160,   161,   161,   162,   162,   162,   162,   162,   162,   162,
-     162,   162,   162,   162,   162,   162,   162,   162,   162,   162,
-     162,   162,   162,   162,   162,   162,   162,   162,   162,   162,
-     162,   162,   162,   162,   162,   162,   162,   162,   162,   162,
-     162,   162,   162,   162,   162,   162,   162,   162,   162,   162,
-     162,   163,   162,   162,   162,   162,   162,   164,   164,   165,
-     165,   165,   165,   165,   166,   166,   167,   167,   168,   168,
-     169,   170,   170,   170,   171,   171,   172,   173,   174,   175,
-     176,   176,   177,   178,   178,   179,   179,   180,   180,   181,
-     181,   181,   181
-};
+#define YYPACT_NINF -400
 
-/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
-static const yytype_uint8 yyr2[] =
+#define yypact_value_is_default(Yystate) \
+  (!!((Yystate) == (-400)))
+
+#define YYTABLE_NINF -248
+
+#define yytable_value_is_error(Yytable_value) \
+  (!!((Yytable_value) == (-248)))
+
+  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+     STATE-NUM.  */
+static const yytype_int16 yypact[] =
 {
-       0,     2,     0,     4,     0,     3,     0,     3,     0,     3,
-       0,     3,     0,     3,     4,     7,     0,     4,     0,     0,
-       2,     0,     2,     1,     1,     2,     2,     1,     4,     0,
-       7,     0,    10,     4,     0,     7,     7,     7,     6,     6,
-       2,     8,     8,     0,     0,    13,     9,     8,     0,    11,
-       9,     7,     2,     0,     8,     2,     1,     2,     0,     3,
-       1,     1,     3,     3,     3,     3,     3,     3,     0,     2,
-       6,     0,     2,     0,     0,     1,     0,     1,     1,     1,
-       1,     1,     0,     0,     0,     0,     1,     1,     0,     1,
-       0,     2,     1,     2,     1,     0,     3,     1,     1,     3,
-       3,     3,     1,     2,     3,     1,     3,     5,     6,     3,
-       3,     5,     2,     4,     0,     5,     1,     1,     5,     4,
-       5,     4,     5,     6,     5,     4,     5,     4,     3,     6,
-       4,     5,     3,     3,     3,     3,     3,     3,     3,     3,
-       3,     3,     3,     3,     3,     3,     2,     2,     2,     2,
-       2,     2,     2,     2,     2,     3,     2,     4,     3,     5,
-       8,     2,     2,     1,     1,     1,     1,     5,     2,     1,
-       2,     3,     1,     2,     1,     1,     1,     1,     1,     1,
-       4,     4,     5,     5,     1,     1,     3,     4,     3,     4,
-       4,     4,     4,     4,     1,     2,     2,     1,     2,     2,
-       1,     2,     1,     2,     1,     3,     1,     3,     1,     3,
-       4,     0,     6,     1,     1,     1,     1,     3,     2,     3,
-       2,     1,     1,     1,     0,     1,     0,     1,     0,     2,
-       1,     1,     1,     1,     1,     1,     2,     2,     2,     2,
-       2,     4,     2,     1,     3,     1,     3,     1,     3,     1,
-       1,     1,     1
+     365,  -400,  -400,  -400,  -400,  -400,  -400,    73,  -400,  2688,
+      78,  1473,  1378,  -400,  -400,  -400,  1944,  2688,  2688,    49,
+      49,    49,  -400,    49,    49,  -400,  -400,    68,    -8,  -400,
+    2688,  -400,  -400,  -400,  2688,  -400,    -3,     8,    11,  1851,
+    1756,    49,  1851,  2037,    22,  2688,     1,  2688,  2688,  2688,
+    2688,  2688,  2688,  2688,  2130,    49,    49,   -19,    14,  -400,
+       9,  -400,  -400,  -400,  -400,  2756,  -400,  -400,    24,    67,
+      72,   106,  -400,   105,   118,   165,   109,  -400,  -400,  -400,
+    -400,  -400,    22,   111,  -400,    39,    50,    62,    65,   -14,
+      69,    77,    78,  -400,    87,  -400,    48,   506,  1378,  -400,
+    -400,  -400,   618,   713,  -400,    70,   398,   398,  -400,  -400,
+    -400,  -400,  -400,  -400,  -400,  2688,    95,    96,  2688,   102,
+     368,    78,    16,  2756,   107,  2223,  1756,  -400,   368,   516,
+      14,  -400,   440,  2688,  -400,  -400,   368,   195,    93,  -400,
+    -400,  2688,   368,  2316,   150,  -400,  -400,  -400,   368,    14,
+     398,   398,   398,   414,   414,   210,   152,  -400,  -400,  2688,
+    2688,  2688,  2688,  2688,  2688,  2409,  2688,  2688,  2688,  2688,
+    2688,  2688,  2688,  2688,  2688,  2688,  2688,  2688,  2688,  2688,
+    2688,  -400,  -400,  -400,   131,  2502,  2688,  2688,  2688,  2688,
+    2688,  2688,  2688,  -400,   200,  -400,   223,  -400,  -400,  -400,
+    -400,  -400,  -400,    55,  -400,   146,  -400,  -400,  -400,    78,
+    -400,  -400,  2688,  2688,  2688,  2688,  2688,  2688,  -400,  -400,
+    -400,  -400,  -400,  2688,  2688,    98,  -400,  -400,  -400,   148,
+     160,  -400,  -400,   163,   151,  2688,    14,  -400,   239,  -400,
+    -400,   292,   232,  -400,  2688,   245,   192,   192,  -400,  2756,
+     209,   125,  -400,   531,  1555,   473,  1927,   349,   203,  2756,
+    2714,  1647,  1647,  1741,  1836,  2020,   410,   398,   398,  2688,
+    2688,   170,   172,   182,  -400,   183,  2595,    32,   184,   168,
+    -400,  -400,   588,   249,   129,   273,   141,   278,   149,   357,
+     808,  -400,   252,   189,    -6,   276,  2688,  2688,  2688,  2688,
+     205,  -400,  -400,   197,  -400,  -400,  -400,  -400,  1567,  -400,
+    2688,  2688,  -400,   -19,  -400,   -19,   -19,   -19,   -19,   -19,
+     217,   -29,  -400,  2688,  -400,   160,   279,    78,  -400,  -400,
+     603,  -400,  -400,  -400,   167,  2688,   298,  -400,  -400,  2688,
+     509,   179,  -400,  -400,  -400,  -400,  -400,   616,  -400,  -400,
+    2688,  -400,   299,  -400,   308,  -400,   319,  -400,   328,  -400,
+    -400,  -400,   316,  -400,  -400,  -400,   322,   244,   -19,   250,
+     257,   -19,   258,   262,  -400,    21,  -400,  -400,  -400,   259,
+     275,   286,  2688,   264,   281,  -400,  2688,   284,  -400,   287,
+     378,  -400,  -400,  -400,  -400,   185,  -400,  2798,   380,  -400,
+    -400,   289,  -400,  -400,  -400,  -400,   291,   160,   148,  -400,
+    2688,  -400,  -400,   399,   399,  2688,  -400,  2688,   399,  -400,
+     318,   399,   399,   -19,  -400,  -400,  -400,  -400,  -400,  -400,
+     344,     6,   160,  -400,   320,   399,   399,  -400,    18,    18,
+     321,   323,   325,    87,  2688,   399,  -400,  -400,   903,  -400,
+    -400,  -400,  -400,   424,   998,  -400,    87,    87,  -400,   399,
+     334,  -400,  -400,   399,  2688,   399,  -400,   336,    87,  -400,
+       3,  -400,  -400,  -400,  -400,  1093,  -400,  2688,    87,   343,
+      87,  -400,  -400,   383,   438,  -400,  1188,  -400,   362,  -400,
+     399,  -400,  -400,  -400,  -400,  -400,  -400,   399,    87,  1661,
+    1283,    18,  -400,   363,  -400,  -400,   399,  -400
 };
 
-/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
-   Performed when YYTABLE doesn't specify something else to do.  Zero
-   means the default is an error.  */
+  /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
+     Performed when YYTABLE does not specify something else to do.  Zero
+     means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
        0,     2,     4,     6,     8,    10,    12,     0,    16,   226,
@@ -358,18 +239,18 @@ static const yytype_uint8 yydefact[] =
      203,     0,    88,   195,     0,     0,   226,   198,   199,   249,
      225,   112,   250,     0,   240,   162,   161,     0,     0,    86,
       87,   224,   170,     0,   218,   221,   223,   222,   201,   196,
-     148,   149,   168,   154,   153,   173,     0,   237,   242,     0,
+     148,   149,   168,   153,   154,   173,     0,   237,   242,     0,
        0,     0,   103,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,   152,   151,   150,     0,     0,     0,     0,     0,     0,
+       0,   150,   151,   152,     0,     0,     0,     0,     0,     0,
        0,     0,     0,    19,    82,    83,     0,    34,    16,    16,
       16,    16,    16,     0,    16,     0,    16,    16,    40,     0,
       52,    55,     0,     0,     0,     0,     0,     0,    26,    25,
       20,   155,   110,   226,     0,     0,   207,   114,    89,     0,
       90,   205,   209,     0,     0,     0,   106,   158,     0,   188,
-     220,     0,    94,   217,     0,   171,   101,   100,    99,   104,
+     220,     0,    94,   217,     0,   171,   100,   101,    99,   104,
        0,     0,   128,     0,   141,   137,   138,   134,   135,   132,
-       0,   144,   143,   142,   140,   139,   136,   145,   133,     0,
+       0,   143,   144,   142,   140,   139,   136,   145,   133,     0,
        0,   244,   246,     0,   116,     0,     0,     0,   248,   109,
      117,   186,     0,     0,     0,     0,     0,     0,     0,     0,
        0,    81,     0,    29,     0,     0,    76,     0,     0,     0,
@@ -396,7 +277,20 @@ static const yytype_uint8 yydefact[] =
        0,    68,    49,     0,    59,    70,     0,    45
 };
 
-/* YYDEFGOTO[NTERM-NUM].  */
+  /* YYPGOTO[NTERM-NUM].  */
+static const yytype_int16 yypgoto[] =
+{
+    -400,  -400,  -400,  -400,  -400,  -400,  -400,  -400,     4,  -400,
+     113,   -81,  -400,   -15,  -400,   455,   371,    -9,  -400,  -400,
+    -400,  -400,  -400,  -400,  -400,  -400,  -400,  -307,  -399,   -30,
+    -380,  -400,    30,   178,  -289,   -16,  -400,   290,   451,  -400,
+     405,   130,  -313,  -400,   121,  -400,  -400,    -5,   -35,  -400,
+    -400,  -400,  -400,  -400,  -400,  -400,  -400,   227,  -400,  -400,
+    -400,  -106,  -118,  -400,  -400,   128,  -400,   301,    44,   -40,
+     -39,  -400,  -400,  -400,  -400,  -400,    10
+};
+
+  /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
       -1,     7,     8,     9,    10,    11,    12,    13,    94,   361,
@@ -409,81 +303,9 @@ static const yytype_int16 yydefgoto[] =
       71,    72,    73,    74,    75,    76,   157
 };
 
-/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-   STATE-NUM.  */
-#define YYPACT_NINF -400
-static const yytype_int16 yypact[] =
-{
-     565,  -400,  -400,  -400,  -400,  -400,  -400,    73,  -400,  2699,
-      69,  1486,  1389,  -400,  -400,  -400,  1955,  2699,  2699,    49,
-      49,    49,  -400,    49,    49,  -400,  -400,    76,    -8,  -400,
-    2699,  -400,  -400,  -400,  2699,  -400,    -3,     8,    11,  1862,
-    1767,    49,  1862,  2048,    22,  2699,     1,  2699,  2699,  2699,
-    2699,  2699,  2699,  2699,  2141,    49,    49,   -19,    14,  -400,
-       9,  -400,  -400,  -400,  -400,  2770,  -400,  -400,    24,    68,
-      72,   106,  -400,   105,   118,   165,   109,  -400,  -400,  -400,
-    -400,  -400,    22,   111,  -400,    39,    50,    62,    65,   -14,
-      77,    95,    69,  -400,    87,  -400,    48,   506,  1389,  -400,
-    -400,  -400,   612,   710,  -400,    70,   490,   490,  -400,  -400,
-    -400,  -400,  -400,  -400,  -400,  2699,    96,   101,  2699,   107,
-     410,    69,    16,  2770,   120,  2234,  1767,  -400,   410,   516,
-      14,  -400,   440,  2699,  -400,  -400,   410,   159,    93,  -400,
-    -400,  2699,   410,  2327,   136,  -400,  -400,  -400,   410,    14,
-     490,   490,   490,   258,   258,   210,   152,  -400,  -400,  2699,
-    2699,  2699,  2699,  2699,  2699,  2420,  2699,  2699,  2699,  2699,
-    2699,  2699,  2699,  2699,  2699,  2699,  2699,  2699,  2699,  2699,
-    2699,  -400,  -400,  -400,   131,  2513,  2699,  2699,  2699,  2699,
-    2699,  2699,  2699,  -400,   200,  -400,   223,  -400,  -400,  -400,
-    -400,  -400,  -400,    55,  -400,   146,  -400,  -400,  -400,    69,
-    -400,  -400,  2699,  2699,  2699,  2699,  2699,  2699,  -400,  -400,
-    -400,  -400,  -400,  2699,  2699,    98,  -400,  -400,  -400,   148,
-     160,  -400,  -400,   163,   150,  2699,    14,  -400,   240,  -400,
-    -400,   293,   232,  -400,  2699,   245,   192,   192,  -400,  2770,
-     209,   125,  -400,   531,  1567,  2033,   371,   695,   203,  2770,
-    2725,  1658,  1658,  1752,  1847,  1940,   278,   490,   490,  2699,
-    2699,   170,   172,   182,  -400,   183,  2606,    32,   184,   168,
-    -400,  -400,   597,   249,   129,   273,   141,   436,   149,   486,
-     807,  -400,   252,   189,    -6,   279,  2699,  2699,  2699,  2699,
-     198,  -400,  -400,   202,  -400,  -400,  -400,  -400,  1579,  -400,
-    2699,  2699,  -400,   -19,  -400,   -19,   -19,   -19,   -19,   -19,
-     208,   -29,  -400,  2699,  -400,   160,   285,    69,  -400,  -400,
-     617,  -400,  -400,  -400,   167,  2699,   299,  -400,  -400,  2699,
-     582,   179,  -400,  -400,  -400,  -400,  -400,   630,  -400,  -400,
-    2699,  -400,   306,  -400,   308,  -400,   319,  -400,   332,  -400,
-    -400,  -400,   320,  -400,  -400,  -400,   329,   259,   -19,   263,
-     264,   -19,   270,   257,  -400,    21,  -400,  -400,  -400,   280,
-     282,   286,  2699,   281,   287,  -400,  2699,   288,  -400,   289,
-     381,  -400,  -400,  -400,  -400,   185,  -400,  2815,   398,  -400,
-    -400,   292,  -400,  -400,  -400,  -400,   314,   160,   148,  -400,
-    2699,  -400,  -400,   408,   408,  2699,  -400,  2699,   408,  -400,
-     321,   408,   408,   -19,  -400,  -400,  -400,  -400,  -400,  -400,
-     350,     6,   160,  -400,   322,   408,   408,  -400,    18,    18,
-     325,   328,   334,    87,  2699,   408,  -400,  -400,   904,  -400,
-    -400,  -400,  -400,   425,  1001,  -400,    87,    87,  -400,   408,
-     336,  -400,  -400,   408,  2699,   408,  -400,   340,    87,  -400,
-       3,  -400,  -400,  -400,  -400,  1098,  -400,  2699,    87,   338,
-      87,  -400,  -400,   372,   426,  -400,  1195,  -400,   345,  -400,
-     408,  -400,  -400,  -400,  -400,  -400,  -400,   408,    87,  1672,
-    1292,    18,  -400,   347,  -400,  -400,   408,  -400
-};
-
-/* YYPGOTO[NTERM-NUM].  */
-static const yytype_int16 yypgoto[] =
-{
-    -400,  -400,  -400,  -400,  -400,  -400,  -400,  -400,     4,  -400,
-     113,   -81,  -400,   -15,  -400,   435,   355,    -9,  -400,  -400,
-    -400,  -400,  -400,  -400,  -400,  -400,  -400,  -307,  -399,   -30,
-    -380,  -400,    17,   157,  -289,   -44,  -400,   265,   429,  -400,
-     385,   112,  -313,  -400,    67,  -400,  -400,    -5,   -35,  -400,
-    -400,  -400,  -400,  -400,  -400,  -400,  -400,   227,  -400,  -400,
-    -400,  -106,  -118,  -400,  -400,   108,  -400,   284,    44,   -40,
-     -39,  -400,  -400,  -400,  -400,  -400,    10
-};
-
-/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
-   positive, shift that token.  If negative, reduce the rule which
-   number is the opposite.  If YYTABLE_NINF, syntax error.  */
-#define YYTABLE_NINF -248
+  /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
+     positive, shift that token.  If negative, reduce the rule whose
+     number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
      103,   377,    95,   364,    57,   130,   146,   147,   234,   222,
@@ -493,8 +315,8 @@ static const yytype_int16 yytable[] =
      462,    77,   139,   127,   110,   110,   135,   140,   162,   156,
      133,   134,   108,   202,   159,   160,   161,   109,    77,   110,
      110,   459,   460,   111,   111,   111,   158,   111,   111,   108,
-      19,    20,    21,    14,   109,   386,   203,   186,    77,   187,
-     130,  -243,   221,  -243,   132,   111,   204,   118,    55,   219,
+      19,    20,    21,    14,   109,   386,   186,   203,   187,   118,
+     130,  -243,   221,  -243,   132,   111,   204,    77,    55,   219,
      145,   162,   119,   420,   431,   365,   208,   124,   236,   111,
      111,   143,   505,    55,   484,   320,   130,   450,   125,   165,
      322,   126,   499,   225,  -247,  -245,   -16,  -245,   192,   453,
@@ -502,101 +324,72 @@ static const yytype_int16 yytable[] =
      110,   196,   209,   205,    55,   348,   235,   337,   241,   198,
      269,   353,   270,   159,   160,   161,   271,   272,   273,   211,
      199,    55,   274,   355,   246,   247,   248,    55,   250,   251,
-     253,   357,   200,   306,   307,   201,   159,   160,   161,   237,
-     132,   159,   160,   161,   190,   479,   191,   206,   290,   394,
+     253,   357,   200,   306,   307,   201,   159,   160,   161,   206,
+     132,   159,   160,   161,   190,   479,   191,   207,   290,   394,
      282,   283,   284,   285,   286,   287,   288,   289,   488,   321,
-     193,   399,   377,   275,   238,   207,   223,   427,   159,   160,
-     161,   224,   159,   160,   161,   242,   226,   313,   315,   316,
-     317,   318,   319,   312,   159,   160,   161,   388,    57,   231,
+     193,   399,   377,   275,   238,   223,   224,   427,   159,   160,
+     161,   226,   159,   160,   161,   237,   231,   313,   315,   316,
+     317,   318,   319,   312,   159,   160,   161,   388,    57,   242,
      291,   244,   159,   160,   161,   159,   160,   161,   280,   326,
      330,   276,   401,   277,   278,   229,   159,   160,   161,   334,
-     159,   160,   161,   294,   106,   107,   309,   305,   324,   329,
-     331,   245,   159,   160,   161,   333,   335,   120,   159,   160,
+     159,   160,   161,   294,   106,   107,   309,   305,   324,   331,
+     329,   245,   159,   160,   161,   333,   335,   120,   159,   160,
      161,   123,   328,   169,   340,   341,   128,   161,   350,   136,
      360,   347,   142,   342,   148,   343,   150,   151,   152,   153,
      154,   110,   159,   160,   161,   344,   345,   349,   130,   -31,
-     179,   368,   315,   371,   371,   180,   181,   182,   183,   366,
-      55,   184,   376,   381,   434,   371,   371,   385,   391,   396,
-     336,   296,   297,   298,   299,   300,   402,   308,   403,   310,
+     179,   368,   315,   371,   371,   180,   366,   376,   181,   182,
+     183,   184,   391,   381,   434,   371,   371,    55,   396,   402,
+     336,   296,   297,   298,   299,   300,   385,   308,   403,   310,
      311,   111,   159,   160,   161,   212,   213,   214,   215,   404,
-     395,   392,   216,   439,   217,   306,   307,   443,   169,   170,
-     446,   447,   405,   228,   374,    57,   159,   160,   161,   410,
-     352,  -248,  -248,  -248,   456,   457,   184,   415,   411,   159,
-     160,   161,   412,   413,   468,   179,   159,   160,   161,   414,
-     180,   181,   182,   183,   354,   130,   184,   371,   476,   418,
-     421,   423,   478,   419,   480,   -79,   422,   424,   425,   249,
-     426,   429,   332,   254,   255,   256,   257,   258,   259,   260,
-     261,   262,   263,   264,   265,   266,   267,   268,   428,   498,
-     371,   448,   371,   466,   375,   430,   501,   437,   454,   305,
-     445,   449,   382,   455,   463,   507,   473,   474,   464,   167,
-    -248,   169,   170,   465,   471,   451,   477,   490,   482,   368,
-    -174,   481,   493,   475,   497,   495,   506,    99,   489,   186,
-     491,   187,  -174,   218,   369,   503,   486,   178,   179,   371,
-     293,   467,   122,   180,   181,   182,   183,   195,   502,   184,
-     169,   170,   371,   406,   407,   432,   408,   409,   500,  -174,
-    -174,  -174,  -174,   416,     0,     0,  -174,   304,  -174,   417,
-       0,  -174,     0,     0,     0,     0,   178,   179,  -174,  -174,
-    -174,  -174,   180,   181,   182,   183,     0,     0,   184,   159,
-     160,   161,     0,  -174,  -174,  -174,  -213,  -174,  -174,  -174,
-    -174,  -174,  -174,  -174,  -174,  -174,  -174,  -174,  -213,     0,
-       0,     0,  -174,  -174,  -174,  -174,     0,   356,  -174,  -174,
+     395,   392,   216,   439,   217,   306,   307,   443,   405,   228,
+     446,   447,   410,   411,   374,    57,   159,   160,   161,   412,
+     352,   159,   160,   161,   456,   457,   413,   414,   418,   159,
+     160,   161,   415,   421,   468,   159,   160,   161,     1,     2,
+       3,     4,     5,     6,   354,   130,   419,   371,   476,   356,
+     422,   423,   478,   424,   480,   -79,   425,   426,   429,   249,
+     428,   332,   430,   254,   255,   256,   257,   258,   259,   260,
+     261,   262,   263,   264,   265,   266,   267,   268,   437,   498,
+     371,   448,   371,   466,   375,   449,   501,   445,   454,   305,
+     463,   455,   382,   464,   465,   507,   473,   474,   169,   170,
+     159,   160,   161,   471,   477,   451,   179,   481,   482,   368,
+    -174,   180,   490,   475,   181,   182,   183,   184,   489,   186,
+     491,   187,  -174,   493,   178,   179,   486,   495,   358,   371,
+     180,   497,   506,   181,   182,   183,   184,    99,   502,   218,
+     169,   170,   371,   406,   467,   369,   408,   409,   500,  -174,
+    -174,  -174,  -174,   503,   122,   293,  -174,   195,  -174,   417,
+     180,  -174,   407,   181,   182,   183,   184,   179,  -174,  -174,
+    -174,  -174,   180,   416,   304,   181,   182,   183,   184,  -248,
+    -248,  -248,   184,  -174,  -174,  -174,  -213,  -174,  -174,  -174,
+    -174,  -174,  -174,  -174,  -174,  -174,  -174,  -174,  -213,   432,
+       0,  -248,  -174,   169,   170,  -174,  -174,  -174,  -174,  -174,
        0,  -174,     0,     0,  -174,   212,   213,   214,   215,     0,
-       0,     0,   216,     0,   217,  -213,  -213,  -213,  -213,   159,
-     160,   161,  -213,     0,  -213,     0,   397,  -213,     1,     2,
-       3,     4,     5,     6,  -213,  -213,  -213,  -213,     0,   159,
-     160,   161,   180,   181,   182,   183,     0,   358,   184,  -213,
+       0,     0,   216,     0,   217,  -213,  -213,  -213,  -213,   178,
+     179,     0,  -213,     0,  -213,   180,   397,  -213,   181,   182,
+     183,   184,     0,     0,  -213,  -213,  -213,  -213,     0,   159,
+     160,   161,   159,   160,   161,     0,     0,     0,     0,  -213,
     -213,  -213,     0,  -213,  -213,  -213,  -213,  -213,  -213,  -213,
-    -213,  -213,  -213,  -213,   159,   160,   161,     0,  -213,  -213,
-    -213,  -213,   -13,    79,  -213,  -213,     0,  -213,     0,     0,
-    -213,    77,     0,    16,     0,    17,    18,    19,    20,    21,
-     338,     0,    22,    23,    24,    25,    26,     0,    27,    28,
-      29,    30,    31,    32,    80,    98,    81,    82,    33,    83,
-      84,    85,    86,    87,    88,   159,   160,   161,    89,    90,
-      91,    92,    34,     0,    35,    36,    37,    38,    39,    40,
-     159,   160,   161,     0,    41,    42,    43,    44,    45,    46,
-      47,     0,     0,   398,     0,     0,     0,     0,    48,     0,
-     159,   160,   161,     0,     0,     0,   351,     0,     0,     0,
-      49,    50,    51,   159,   160,   161,     0,     0,    52,    53,
-      -3,    79,    54,    93,    55,    56,   393,     0,     0,    77,
-       0,    16,     0,    17,    18,    19,    20,    21,     0,   400,
-      22,    23,    24,    25,    26,     0,    27,    28,    29,    30,
-      31,    32,    80,    98,    81,    82,    33,    83,    84,    85,
-      86,    87,    88,     0,     0,     0,    89,    90,    91,    92,
-      34,     0,    35,    36,    37,    38,    39,    40,     0,     0,
-       0,     0,    41,    42,    43,    44,    45,    46,    47,     0,
-       0,     0,   179,     0,     0,     0,    48,   180,   181,   182,
-     183,     0,     0,   184,     0,     0,     0,     0,    49,    50,
-      51,     0,     0,     0,     0,     0,    52,    53,    79,     0,
-      54,    93,    55,    56,     0,     0,    77,   359,    16,     0,
-      17,    18,    19,    20,    21,     0,     0,    22,    23,    24,
-      25,    26,     0,    27,    28,    29,    30,    31,    32,    80,
-      98,    81,    82,    33,    83,    84,    85,    86,    87,    88,
-       0,     0,     0,    89,    90,    91,    92,    34,     0,    35,
-      36,    37,    38,    39,    40,     0,     0,     0,     0,    41,
-      42,    43,    44,    45,    46,    47,     0,     0,     0,     0,
-       0,     0,     0,    48,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    49,    50,    51,     0,     0,
-       0,     0,     0,    52,    53,    79,     0,    54,    93,    55,
-      56,     0,     0,    77,   469,    16,     0,    17,    18,    19,
-      20,    21,     0,     0,    22,    23,    24,    25,    26,     0,
-      27,    28,    29,    30,    31,    32,    80,    98,    81,    82,
-      33,    83,    84,    85,    86,    87,    88,     0,     0,     0,
-      89,    90,    91,    92,    34,     0,    35,    36,    37,    38,
-      39,    40,     0,     0,     0,     0,    41,    42,    43,    44,
-      45,    46,    47,     0,     0,     0,     0,     0,     0,     0,
-      48,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    49,    50,    51,     0,     0,     0,     0,     0,
-      52,    53,    79,     0,    54,    93,    55,    56,     0,     0,
-      77,   472,    16,     0,    17,    18,    19,    20,    21,     0,
-       0,    22,    23,    24,    25,    26,     0,    27,    28,    29,
-      30,    31,    32,    80,    98,    81,    82,    33,    83,    84,
-      85,    86,    87,    88,     0,     0,     0,    89,    90,    91,
-      92,    34,     0,    35,    36,    37,    38,    39,    40,     0,
-       0,     0,     0,    41,    42,    43,    44,    45,    46,    47,
-       0,     0,     0,     0,     0,     0,     0,    48,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    49,
-      50,    51,     0,     0,     0,     0,     0,    52,    53,    79,
-       0,    54,    93,    55,    56,     0,     0,    77,   487,    16,
+    -213,  -213,  -213,  -213,   159,   160,   161,     0,  -213,     0,
+     398,  -213,  -213,  -213,  -213,  -213,     0,  -213,   -13,    79,
+    -213,     0,     0,     0,     0,     0,     0,    77,     0,    16,
+     338,    17,    18,    19,    20,    21,     0,     0,    22,    23,
+      24,    25,    26,     0,    27,    28,    29,    30,    31,    32,
+      80,    98,    81,    82,    33,    83,    84,    85,    86,    87,
+      88,   159,   160,   161,    89,    90,    91,    92,    34,     0,
+      35,    36,    37,    38,    39,    40,   159,   160,   161,     0,
+      41,    42,    43,    44,    45,    46,    47,   351,     0,   159,
+     160,   161,     0,     0,    48,     0,     0,     0,     0,     0,
+       0,     0,   393,     0,     0,     0,    49,    50,     0,    51,
+       0,    52,    53,    -3,    79,   400,     0,     0,    54,    93,
+      55,    56,    77,     0,    16,     0,    17,    18,    19,    20,
+      21,     0,     0,    22,    23,    24,    25,    26,     0,    27,
+      28,    29,    30,    31,    32,    80,    98,    81,    82,    33,
+      83,    84,    85,    86,    87,    88,     0,     0,     0,    89,
+      90,    91,    92,    34,     0,    35,    36,    37,    38,    39,
+      40,     0,     0,     0,     0,    41,    42,    43,    44,    45,
+      46,    47,     0,     0,     0,     0,     0,     0,     0,    48,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    49,    50,     0,    51,     0,    52,    53,     0,    79,
+       0,     0,     0,    54,    93,    55,    56,    77,   359,    16,
        0,    17,    18,    19,    20,    21,     0,     0,    22,    23,
       24,    25,    26,     0,    27,    28,    29,    30,    31,    32,
       80,    98,    81,    82,    33,    83,    84,    85,    86,    87,
@@ -604,131 +397,131 @@ static const yytype_int16 yytable[] =
       35,    36,    37,    38,    39,    40,     0,     0,     0,     0,
       41,    42,    43,    44,    45,    46,    47,     0,     0,     0,
        0,     0,     0,     0,    48,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,    49,    50,    51,     0,
-       0,     0,     0,     0,    52,    53,    79,     0,    54,    93,
-      55,    56,     0,     0,    77,   496,    16,     0,    17,    18,
-      19,    20,    21,     0,     0,    22,    23,    24,    25,    26,
-       0,    27,    28,    29,    30,    31,    32,    80,    98,    81,
-      82,    33,    83,    84,    85,    86,    87,    88,     0,     0,
-       0,    89,    90,    91,    92,    34,     0,    35,    36,    37,
-      38,    39,    40,     0,     0,     0,     0,    41,    42,    43,
-      44,    45,    46,    47,     0,     0,     0,     0,     0,     0,
-       0,    48,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,    49,    50,    51,     0,     0,     0,     0,
-       0,    52,    53,    79,     0,    54,    93,    55,    56,     0,
-       0,    77,     0,    16,     0,    17,    18,    19,    20,    21,
-       0,     0,    22,    23,    24,    25,    26,     0,    27,    28,
-      29,    30,    31,    32,    80,    98,    81,    82,    33,    83,
-      84,    85,    86,    87,    88,     0,     0,     0,    89,    90,
-      91,    92,    34,     0,    35,    36,    37,    38,    39,    40,
-       0,     0,     0,     0,    41,    42,    43,    44,    45,    46,
-      47,     0,     0,   504,     0,     0,     0,     0,    48,     0,
+       0,     0,     0,     0,     0,     0,    49,    50,     0,    51,
+       0,    52,    53,     0,    79,     0,     0,     0,    54,    93,
+      55,    56,    77,   469,    16,     0,    17,    18,    19,    20,
+      21,     0,     0,    22,    23,    24,    25,    26,     0,    27,
+      28,    29,    30,    31,    32,    80,    98,    81,    82,    33,
+      83,    84,    85,    86,    87,    88,     0,     0,     0,    89,
+      90,    91,    92,    34,     0,    35,    36,    37,    38,    39,
+      40,     0,     0,     0,     0,    41,    42,    43,    44,    45,
+      46,    47,     0,     0,     0,     0,     0,     0,     0,    48,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-      49,    50,    51,     0,     0,     0,     0,     0,    52,    53,
-      79,     0,    54,    93,    55,    56,     0,     0,    77,     0,
-      16,     0,    17,    18,    19,    20,    21,     0,     0,    22,
-      23,    24,    25,    26,     0,    27,    28,    29,    30,    31,
-      32,    80,    98,    81,    82,    33,    83,    84,    85,    86,
-      87,    88,     0,     0,     0,    89,    90,    91,    92,    34,
-       0,    35,    36,    37,    38,    39,    40,     0,     0,     0,
-       0,    41,    42,    43,    44,    45,    46,    47,     0,     0,
-       0,     0,     0,     0,     0,    48,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    49,    50,    51,
-       0,     0,     0,     0,     0,    52,    53,    79,     0,    54,
-      93,    55,    56,     0,     0,    77,     0,    16,     0,    17,
-      18,    19,    20,    21,     0,     0,    22,    23,    24,    25,
-      26,     0,    27,    28,    29,    30,    31,    32,    80,     0,
-      81,    82,    33,    83,    84,    85,    86,    87,    88,     0,
-       0,     0,    89,    90,    91,    92,    34,     0,    35,    36,
-      37,    38,    39,    40,     0,     0,     0,     0,    41,    42,
-      43,    44,    45,    46,    47,     0,     0,     0,     0,     0,
-       0,     0,    48,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    49,    50,    51,     0,     0,     0,
-      79,     0,    52,    53,     0,     0,    54,    93,    55,    56,
-      16,     0,    17,    18,    19,    20,    21,     0,     0,    22,
-      23,    24,    25,    26,     0,    27,    28,    29,    30,    31,
-      32,     0,     0,     0,     0,    33,     0,     0,  -248,     0,
-       0,     0,     0,     0,     0,   167,   168,   169,   170,    34,
-       0,    35,    36,    37,    38,    39,    40,     0,     0,     0,
-       0,    41,    42,    43,    44,    45,    46,    47,   173,   174,
-     175,   176,   177,   178,   179,    48,     0,     0,     0,   180,
-     181,   182,   183,     0,     0,   184,     0,    49,    50,    51,
-       0,     0,     0,    79,     0,    52,    53,     0,     0,    54,
-     -74,    55,    56,    16,     0,    17,    18,    19,    20,    21,
-       0,     0,    22,    23,    24,    25,    26,     0,    27,    28,
-      29,    30,    31,    32,     0,     0,     0,     0,    33,     0,
-       0,     0,     0,     0,     0,     0,   167,   168,   169,   170,
-       0,     0,    34,     0,    35,    36,    37,    38,    39,    40,
-       0,     0,     0,     0,    41,    42,    43,    44,    45,    46,
-      47,   175,   176,   177,   178,   179,     0,     0,    48,     0,
-     180,   181,   182,   183,     0,     0,   184,     0,     0,     0,
-      49,    50,    51,     0,     0,     0,     0,     0,    52,    53,
-       0,   -74,    54,     0,    55,    56,    77,     0,    16,     0,
-      17,    18,    19,    20,    21,     0,     0,   129,    23,    24,
-      25,    26,   109,    27,    28,    29,    30,    31,    32,     0,
-       0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
-     167,   168,   169,   170,     0,     0,     0,    34,     0,    35,
-      36,    37,    38,    39,    40,     0,     0,     0,     0,    41,
-      42,    43,    44,    45,    46,    47,   176,   177,   178,   179,
-       0,     0,     0,    48,   180,   181,   182,   183,     0,     0,
-     184,     0,     0,     0,     0,    49,    50,    51,     0,     0,
-       0,     0,     0,    52,    53,     0,     0,    54,     0,    55,
-      56,    77,     0,    16,     0,    17,    18,    19,    20,    21,
-       0,     0,    22,    23,    24,    25,    26,     0,    27,    28,
-      29,    30,    31,    32,     0,     0,     0,     0,    33,     0,
-       0,     0,     0,     0,     0,   167,   168,   169,   170,     0,
-       0,     0,    34,     0,    35,    36,    37,    38,    39,    40,
-       0,     0,     0,     0,    41,    42,    43,    44,    45,    46,
-      47,     0,   177,   178,   179,     0,     0,     0,    48,   180,
-     181,   182,   183,     0,     0,   184,     0,     0,     0,     0,
-      49,    50,    51,     0,     0,     0,     0,     0,    52,    53,
-       0,     0,    54,     0,    55,    56,    16,   104,    17,    18,
-      19,    20,    21,     0,     0,    22,    23,    24,    25,    26,
-       0,    27,    28,    29,    30,    31,    32,     0,     0,     0,
-       0,    33,     0,     0,     0,     0,     0,     0,   167,   168,
-     169,   170,     0,     0,     0,    34,     0,    35,    36,    37,
-      38,    39,    40,     0,     0,     0,     0,    41,    42,    43,
-      44,    45,    46,    47,     0,     0,   178,   179,     0,     0,
-       0,    48,   180,   181,   182,   183,     0,     0,   184,     0,
-       0,     0,     0,    49,    50,    51,     0,     0,     0,     0,
-       0,    52,    53,     0,     0,    54,     0,    55,    56,    16,
+       0,    49,    50,     0,    51,     0,    52,    53,     0,    79,
+       0,     0,     0,    54,    93,    55,    56,    77,   472,    16,
        0,    17,    18,    19,    20,    21,     0,     0,    22,    23,
       24,    25,    26,     0,    27,    28,    29,    30,    31,    32,
-       0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
-       0,  -248,     0,   169,   170,     0,     0,     0,    34,     0,
+      80,    98,    81,    82,    33,    83,    84,    85,    86,    87,
+      88,     0,     0,     0,    89,    90,    91,    92,    34,     0,
+      35,    36,    37,    38,    39,    40,     0,     0,     0,     0,
+      41,    42,    43,    44,    45,    46,    47,     0,     0,     0,
+       0,     0,     0,     0,    48,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    49,    50,     0,    51,
+       0,    52,    53,     0,    79,     0,     0,     0,    54,    93,
+      55,    56,    77,   487,    16,     0,    17,    18,    19,    20,
+      21,     0,     0,    22,    23,    24,    25,    26,     0,    27,
+      28,    29,    30,    31,    32,    80,    98,    81,    82,    33,
+      83,    84,    85,    86,    87,    88,     0,     0,     0,    89,
+      90,    91,    92,    34,     0,    35,    36,    37,    38,    39,
+      40,     0,     0,     0,     0,    41,    42,    43,    44,    45,
+      46,    47,     0,     0,     0,     0,     0,     0,     0,    48,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    49,    50,     0,    51,     0,    52,    53,     0,    79,
+       0,     0,     0,    54,    93,    55,    56,    77,   496,    16,
+       0,    17,    18,    19,    20,    21,     0,     0,    22,    23,
+      24,    25,    26,     0,    27,    28,    29,    30,    31,    32,
+      80,    98,    81,    82,    33,    83,    84,    85,    86,    87,
+      88,     0,     0,     0,    89,    90,    91,    92,    34,     0,
       35,    36,    37,    38,    39,    40,     0,     0,     0,     0,
-      41,    42,    43,    44,    45,    46,    47,     0,     0,   178,
-     179,     0,     0,     0,    48,   180,   181,   182,   183,     0,
-       0,   184,     0,     0,     0,     0,    49,    50,    51,     0,
-       0,     0,     0,     0,    52,    53,     0,     0,    54,   137,
-      55,    56,    16,     0,    17,    18,    19,    20,    21,     0,
+      41,    42,    43,    44,    45,    46,    47,     0,     0,     0,
+       0,     0,     0,     0,    48,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    49,    50,     0,    51,
+       0,    52,    53,     0,    79,     0,     0,     0,    54,    93,
+      55,    56,    77,     0,    16,     0,    17,    18,    19,    20,
+      21,     0,     0,    22,    23,    24,    25,    26,     0,    27,
+      28,    29,    30,    31,    32,    80,    98,    81,    82,    33,
+      83,    84,    85,    86,    87,    88,     0,     0,     0,    89,
+      90,    91,    92,    34,     0,    35,    36,    37,    38,    39,
+      40,     0,     0,     0,     0,    41,    42,    43,    44,    45,
+      46,    47,     0,     0,   504,     0,     0,     0,     0,    48,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    49,    50,     0,    51,     0,    52,    53,     0,    79,
+       0,     0,     0,    54,    93,    55,    56,    77,     0,    16,
+       0,    17,    18,    19,    20,    21,     0,     0,    22,    23,
+      24,    25,    26,     0,    27,    28,    29,    30,    31,    32,
+      80,    98,    81,    82,    33,    83,    84,    85,    86,    87,
+      88,     0,     0,     0,    89,    90,    91,    92,    34,     0,
+      35,    36,    37,    38,    39,    40,     0,     0,     0,     0,
+      41,    42,    43,    44,    45,    46,    47,     0,     0,     0,
+       0,     0,     0,     0,    48,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,    49,    50,     0,    51,
+       0,    52,    53,     0,    79,     0,     0,     0,    54,    93,
+      55,    56,    77,     0,    16,     0,    17,    18,    19,    20,
+      21,     0,     0,    22,    23,    24,    25,    26,     0,    27,
+      28,    29,    30,    31,    32,    80,     0,    81,    82,    33,
+      83,    84,    85,    86,    87,    88,     0,     0,     0,    89,
+      90,    91,    92,    34,     0,    35,    36,    37,    38,    39,
+      40,     0,     0,     0,     0,    41,    42,    43,    44,    45,
+      46,    47,     0,     0,     0,     0,     0,     0,     0,    48,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,    49,    50,     0,    51,     0,    52,    53,    79,     0,
+       0,     0,     0,    54,    93,    55,    56,     0,    16,     0,
+      17,    18,    19,    20,    21,     0,     0,    22,    23,    24,
+      25,    26,     0,    27,    28,    29,    30,    31,    32,     0,
+       0,     0,     0,    33,     0,     0,  -248,     0,     0,     0,
+       0,     0,     0,   167,   168,   169,   170,    34,     0,    35,
+      36,    37,    38,    39,    40,     0,     0,     0,     0,    41,
+      42,    43,    44,    45,    46,    47,   173,   174,   175,   176,
+     177,   178,   179,    48,     0,     0,     0,   180,     0,     0,
+     181,   182,   183,   184,     0,    49,    50,     0,    51,     0,
+      52,    53,    79,     0,     0,     0,     0,    54,   -74,    55,
+      56,     0,    16,     0,    17,    18,    19,    20,    21,     0,
        0,    22,    23,    24,    25,    26,     0,    27,    28,    29,
       30,    31,    32,     0,     0,     0,     0,    33,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   167,   168,   169,   170,     0,
        0,    34,     0,    35,    36,    37,    38,    39,    40,     0,
        0,     0,     0,    41,    42,    43,    44,    45,    46,    47,
-       0,     0,     0,     0,     0,     0,     0,    48,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,     0,    49,
-      50,    51,     0,     0,     0,     0,     0,    52,    53,     0,
-     155,    54,     0,    55,    56,    16,     0,    17,    18,    19,
+     175,   176,   177,   178,   179,     0,     0,    48,     0,   180,
+       0,     0,   181,   182,   183,   184,     0,     0,     0,    49,
+      50,     0,    51,     0,    52,    53,     0,     0,     0,     0,
+     -74,    54,     0,    55,    56,    77,     0,    16,     0,    17,
+      18,    19,    20,    21,     0,     0,   129,    23,    24,    25,
+      26,   109,    27,    28,    29,    30,    31,    32,     0,     0,
+       0,     0,    33,     0,     0,     0,     0,     0,     0,   167,
+     168,   169,   170,     0,     0,     0,    34,     0,    35,    36,
+      37,    38,    39,    40,     0,     0,     0,     0,    41,    42,
+      43,    44,    45,    46,    47,   176,   177,   178,   179,     0,
+       0,     0,    48,   180,     0,     0,   181,   182,   183,   184,
+       0,     0,     0,     0,    49,    50,     0,    51,     0,    52,
+      53,     0,     0,     0,     0,     0,    54,     0,    55,    56,
+      77,     0,    16,     0,    17,    18,    19,    20,    21,     0,
+       0,    22,    23,    24,    25,    26,     0,    27,    28,    29,
+      30,    31,    32,     0,     0,     0,     0,    33,     0,     0,
+       0,     0,     0,     0,   167,   168,   169,   170,     0,     0,
+       0,    34,     0,    35,    36,    37,    38,    39,    40,     0,
+       0,     0,     0,    41,    42,    43,    44,    45,    46,    47,
+       0,   177,   178,   179,     0,     0,     0,    48,   180,     0,
+       0,   181,   182,   183,   184,     0,     0,     0,     0,    49,
+      50,     0,    51,     0,    52,    53,     0,     0,     0,     0,
+       0,    54,     0,    55,    56,    16,   104,    17,    18,    19,
       20,    21,     0,     0,    22,    23,    24,    25,    26,     0,
       27,    28,    29,    30,    31,    32,     0,     0,     0,     0,
-      33,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      33,     0,     0,     0,     0,   167,  -248,   169,   170,     0,
        0,     0,     0,     0,    34,     0,    35,    36,    37,    38,
       39,    40,     0,     0,     0,     0,    41,    42,    43,    44,
-      45,    46,    47,     0,     0,     0,     0,     0,     0,     0,
-      48,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    49,    50,    51,     0,     0,     0,     0,     0,
-      52,    53,     0,   232,    54,     0,    55,    56,    16,     0,
+      45,    46,    47,   178,   179,     0,     0,     0,     0,   180,
+      48,     0,   181,   182,   183,   184,     0,     0,     0,     0,
+       0,     0,    49,    50,     0,    51,     0,    52,    53,     0,
+       0,     0,     0,     0,    54,     0,    55,    56,    16,     0,
       17,    18,    19,    20,    21,     0,     0,    22,    23,    24,
       25,    26,     0,    27,    28,    29,    30,    31,    32,     0,
-       0,     0,     0,    33,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,    34,     0,    35,
+       0,     0,     0,    33,     0,     0,     0,     0,   167,   168,
+     169,   170,     0,     0,     0,     0,     0,    34,     0,    35,
       36,    37,    38,    39,    40,     0,     0,     0,     0,    41,
-      42,    43,    44,    45,    46,    47,     0,     0,     0,     0,
-       0,     0,     0,    48,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,    49,    50,    51,     0,     0,
-       0,     0,     0,    52,    53,     0,   240,    54,     0,    55,
+      42,    43,    44,    45,    46,    47,   178,   179,     0,     0,
+       0,     0,   180,    48,     0,   181,   182,   183,   184,     0,
+       0,     0,     0,     0,     0,    49,    50,     0,    51,     0,
+      52,    53,     0,     0,     0,     0,     0,    54,   137,    55,
       56,    16,     0,    17,    18,    19,    20,    21,     0,     0,
       22,    23,    24,    25,    26,     0,    27,    28,    29,    30,
       31,    32,     0,     0,     0,     0,    33,     0,     0,     0,
@@ -737,7 +530,7 @@ static const yytype_int16 yytable[] =
        0,     0,    41,    42,    43,    44,    45,    46,    47,     0,
        0,     0,     0,     0,     0,     0,    48,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,    49,    50,
-      51,     0,     0,     0,     0,     0,    52,    53,     0,   252,
+       0,    51,     0,    52,    53,     0,     0,     0,     0,   155,
       54,     0,    55,    56,    16,     0,    17,    18,    19,    20,
       21,     0,     0,    22,    23,    24,    25,    26,     0,    27,
       28,    29,    30,    31,    32,     0,     0,     0,     0,    33,
@@ -746,8 +539,8 @@ static const yytype_int16 yytable[] =
       40,     0,     0,     0,     0,    41,    42,    43,    44,    45,
       46,    47,     0,     0,     0,     0,     0,     0,     0,    48,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    49,    50,    51,     0,     0,     0,     0,     0,    52,
-      53,     0,   281,    54,     0,    55,    56,    16,     0,    17,
+       0,    49,    50,     0,    51,     0,    52,    53,     0,     0,
+       0,     0,   232,    54,     0,    55,    56,    16,     0,    17,
       18,    19,    20,    21,     0,     0,    22,    23,    24,    25,
       26,     0,    27,    28,    29,    30,    31,    32,     0,     0,
        0,     0,    33,     0,     0,     0,     0,     0,     0,     0,
@@ -755,37 +548,58 @@ static const yytype_int16 yytable[] =
       37,    38,    39,    40,     0,     0,     0,     0,    41,    42,
       43,    44,    45,    46,    47,     0,     0,     0,     0,     0,
        0,     0,    48,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,    49,    50,    51,     0,     0,     0,
-       0,     0,    52,    53,     0,   346,    54,     0,    55,    56,
+       0,     0,     0,     0,    49,    50,     0,    51,     0,    52,
+      53,     0,     0,     0,     0,   240,    54,     0,    55,    56,
       16,     0,    17,    18,    19,    20,    21,     0,     0,    22,
       23,    24,    25,    26,     0,    27,    28,    29,    30,    31,
       32,     0,     0,     0,     0,    33,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,    34,
        0,    35,    36,    37,    38,    39,    40,     0,     0,     0,
        0,    41,    42,    43,    44,    45,    46,    47,     0,     0,
-       0,     0,     0,     0,     0,    48,   166,     0,     0,     0,
-       0,     0,     0,   167,   168,   169,   170,    49,    50,    51,
-       0,     0,     0,     0,     0,    52,    53,     0,     0,    54,
-       0,    55,    56,   171,   172,   339,   173,   174,   175,   176,
-     177,   178,   179,     0,     0,     0,     0,   180,   181,   182,
-     183,   166,     0,   184,     0,     0,     0,     0,   167,   168,
-     169,   170,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,     0,   171,   172,
-       0,   173,   174,   175,   176,   177,   178,   179,     0,     0,
-       0,     0,   180,   181,   182,   183,   166,     0,   184,     0,
-       0,     0,     0,   167,   168,   169,   170,     0,     0,     0,
+       0,     0,     0,     0,     0,    48,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,    49,    50,     0,
+      51,     0,    52,    53,     0,     0,     0,     0,   252,    54,
+       0,    55,    56,    16,     0,    17,    18,    19,    20,    21,
+       0,     0,    22,    23,    24,    25,    26,     0,    27,    28,
+      29,    30,    31,    32,     0,     0,     0,     0,    33,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,     0,   172,     0,   173,   174,   175,   176,
-     177,   178,   179,     0,     0,     0,     0,   180,   181,   182,
-     183,     0,     0,   184
+       0,     0,    34,     0,    35,    36,    37,    38,    39,    40,
+       0,     0,     0,     0,    41,    42,    43,    44,    45,    46,
+      47,     0,     0,     0,     0,     0,     0,     0,    48,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+      49,    50,     0,    51,     0,    52,    53,     0,     0,     0,
+       0,   281,    54,     0,    55,    56,    16,     0,    17,    18,
+      19,    20,    21,     0,     0,    22,    23,    24,    25,    26,
+       0,    27,    28,    29,    30,    31,    32,     0,     0,     0,
+       0,    33,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,    34,     0,    35,    36,    37,
+      38,    39,    40,     0,     0,     0,     0,    41,    42,    43,
+      44,    45,    46,    47,     0,     0,     0,     0,     0,     0,
+       0,    48,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,    49,    50,     0,    51,     0,    52,    53,
+       0,     0,     0,     0,   346,    54,     0,    55,    56,    16,
+       0,    17,    18,    19,    20,    21,     0,     0,    22,    23,
+      24,    25,    26,     0,    27,    28,    29,    30,    31,    32,
+       0,     0,     0,     0,    33,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,    34,     0,
+      35,    36,    37,    38,    39,    40,     0,     0,     0,     0,
+      41,    42,    43,    44,    45,    46,    47,     0,     0,     0,
+       0,     0,     0,     0,    48,   166,     0,     0,     0,     0,
+       0,     0,   167,   168,   169,   170,    49,    50,     0,    51,
+       0,    52,    53,     0,     0,     0,     0,     0,    54,     0,
+      55,    56,   171,   172,   339,   173,   174,   175,   176,   177,
+     178,   179,     0,     0,     0,     0,   180,   166,     0,   181,
+     182,   183,   184,     0,   167,   168,   169,   170,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   171,   172,     0,   173,   174,   175,
+     176,   177,   178,   179,     0,     0,     0,     0,   180,   166,
+       0,   181,   182,   183,   184,     0,   167,   168,   169,   170,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   172,     0,   173,
+     174,   175,   176,   177,   178,   179,     0,     0,     0,     0,
+     180,     0,     0,   181,   182,   183,   184
 };
 
-#define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-400)))
-
-#define yytable_value_is_error(Yytable_value) \
-  (!!((Yytable_value) == (-248)))
-
 static const yytype_int16 yycheck[] =
 {
       15,   308,    11,     9,     9,    40,    46,    46,   126,   115,
@@ -795,8 +609,8 @@ static const yytype_int16 yycheck[] =
      439,     9,    20,    39,    40,    41,    42,    25,    77,    54,
       40,    41,    20,    67,    73,    74,    75,    25,     9,    55,
       56,    43,    44,    19,    20,    21,    56,    23,    24,    20,
-      15,    16,    17,     0,    25,   104,    90,     9,     9,    11,
-     115,     9,    12,    11,    40,    41,   100,    11,   102,    98,
+      15,    16,    17,     0,    25,   104,     9,    91,    11,    11,
+     115,     9,    12,    11,    40,    41,   100,     9,   102,    98,
       46,    77,   100,   382,   407,   101,    92,   100,   133,    55,
       56,   100,   501,   102,   101,   223,   141,   101,   100,   100,
       12,   100,   492,   118,     9,     9,   100,    11,     9,   432,
@@ -804,101 +618,72 @@ static const yytype_int16 yycheck[] =
      126,    20,    45,    89,   102,   103,   126,    12,   143,   100,
        9,    12,    11,    73,    74,    75,    15,    16,    17,   101,
      100,   102,    21,    12,   159,   160,   161,   102,   163,   164,
-     165,    12,   100,   203,   203,   100,    73,    74,    75,    10,
+     165,    12,   100,   203,   203,   100,    73,    74,    75,   100,
      126,    73,    74,    75,     9,   464,    11,   100,   193,    12,
      185,   186,   187,   188,   189,   190,   191,   192,   477,   224,
       77,    12,   499,    62,   101,   100,   100,    12,    73,    74,
-      75,   100,    73,    74,    75,    69,    99,   212,   213,   214,
-     215,   216,   217,   209,    73,    74,    75,   323,   223,    99,
+      75,    99,    73,    74,    75,    10,    99,   212,   213,   214,
+     215,   216,   217,   209,    73,    74,    75,   323,   223,    69,
       20,    11,    73,    74,    75,    73,    74,    75,   184,    69,
      235,   100,   350,   102,   103,   122,    73,    74,    75,   244,
-      73,    74,    75,    20,    17,    18,   100,   203,   100,    99,
-      10,    99,    73,    74,    75,    23,    11,    30,    73,    74,
+      73,    74,    75,    20,    17,    18,   100,   203,   100,    10,
+      99,    99,    73,    74,    75,    23,    11,    30,    73,    74,
       75,    34,    99,    60,   269,   270,    39,    75,   100,    42,
       18,   276,    45,   103,    47,   103,    49,    50,    51,    52,
       53,   277,    73,    74,    75,   103,   103,   103,   323,   100,
-      87,   296,   297,   298,   299,    92,    93,    94,    95,    20,
-     102,    98,   100,   308,   410,   310,   311,    99,    23,    10,
-     101,   198,   199,   200,   201,   202,    10,   204,    10,   206,
+      87,   296,   297,   298,   299,    92,    20,   100,    95,    96,
+      97,    98,    23,   308,   410,   310,   311,   102,    10,    10,
+     101,   198,   199,   200,   201,   202,    99,   204,    10,   206,
      207,   277,    73,    74,    75,    39,    40,    41,    42,    10,
-     335,   327,    46,   414,    48,   375,   375,   418,    60,    61,
-     421,   422,    10,    23,   300,   350,    73,    74,    75,    20,
-     101,    93,    94,    95,   435,   436,    98,   100,    99,    73,
-      74,    75,    99,    99,   445,    87,    73,    74,    75,    99,
-      92,    93,    94,    95,   101,   410,    98,   382,   459,    99,
-      99,   386,   463,   101,   465,    99,    99,    99,    99,   162,
-       9,    99,    99,   166,   167,   168,   169,   170,   171,   172,
-     173,   174,   175,   176,   177,   178,   179,   180,    10,   490,
-     415,   426,   417,   443,   301,   101,   497,     9,   433,   375,
-      99,    71,   309,   101,    99,   506,   456,   457,   100,    58,
-      59,    60,    61,    99,     9,   431,   100,    99,   468,   444,
-       0,   101,    70,   458,    99,    19,    99,    12,   478,     9,
-     480,    11,    12,    98,   297,   499,   471,    86,    87,   464,
-     195,   444,    33,    92,    93,    94,    95,    82,   498,    98,
-      60,    61,   477,   360,   362,   408,   363,   364,   493,    39,
-      40,    41,    42,   375,    -1,    -1,    46,   203,    48,   376,
-      -1,    51,    -1,    -1,    -1,    -1,    86,    87,    58,    59,
-      60,    61,    92,    93,    94,    95,    -1,    -1,    98,    73,
-      74,    75,    -1,    73,    74,    75,     0,    77,    78,    79,
-      80,    81,    82,    83,    84,    85,    86,    87,    12,    -1,
-      -1,    -1,    92,    93,    94,    95,    -1,   101,    98,    99,
+     335,   327,    46,   414,    48,   375,   375,   418,    10,    23,
+     421,   422,    20,    99,   300,   350,    73,    74,    75,    99,
+     101,    73,    74,    75,   435,   436,    99,    99,    99,    73,
+      74,    75,   100,    99,   445,    73,    74,    75,     3,     4,
+       5,     6,     7,     8,   101,   410,   101,   382,   459,   101,
+      99,   386,   463,    99,   465,    99,    99,     9,    99,   162,
+      10,    99,   101,   166,   167,   168,   169,   170,   171,   172,
+     173,   174,   175,   176,   177,   178,   179,   180,     9,   490,
+     415,   426,   417,   443,   301,    71,   497,    99,   433,   375,
+      99,   101,   309,   100,    99,   506,   456,   457,    60,    61,
+      73,    74,    75,     9,   100,   431,    87,   101,   468,   444,
+       0,    92,    99,   458,    95,    96,    97,    98,   478,     9,
+     480,    11,    12,    70,    86,    87,   471,    19,   101,   464,
+      92,    99,    99,    95,    96,    97,    98,    12,   498,    98,
+      60,    61,   477,   360,   444,   297,   363,   364,   493,    39,
+      40,    41,    42,   499,    33,   195,    46,    82,    48,   376,
+      92,    51,   362,    95,    96,    97,    98,    87,    58,    59,
+      60,    61,    92,   375,   203,    95,    96,    97,    98,    95,
+      96,    97,    98,    73,    74,    75,     0,    77,    78,    79,
+      80,    81,    82,    83,    84,    85,    86,    87,    12,   408,
+      -1,    58,    92,    60,    61,    95,    96,    97,    98,    99,
       -1,   101,    -1,    -1,   104,    39,    40,    41,    42,    -1,
-      -1,    -1,    46,    -1,    48,    39,    40,    41,    42,    73,
-      74,    75,    46,    -1,    48,    -1,   339,    51,     3,     4,
-       5,     6,     7,     8,    58,    59,    60,    61,    -1,    73,
-      74,    75,    92,    93,    94,    95,    -1,   101,    98,    73,
+      -1,    -1,    46,    -1,    48,    39,    40,    41,    42,    86,
+      87,    -1,    46,    -1,    48,    92,   339,    51,    95,    96,
+      97,    98,    -1,    -1,    58,    59,    60,    61,    -1,    73,
+      74,    75,    73,    74,    75,    -1,    -1,    -1,    -1,    73,
       74,    75,    -1,    77,    78,    79,    80,    81,    82,    83,
-      84,    85,    86,    87,    73,    74,    75,    -1,    92,    93,
-      94,    95,     0,     1,    98,    99,    -1,   101,    -1,    -1,
-     104,     9,    -1,    11,    -1,    13,    14,    15,    16,    17,
-      99,    -1,    20,    21,    22,    23,    24,    -1,    26,    27,
-      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
-      38,    39,    40,    41,    42,    73,    74,    75,    46,    47,
-      48,    49,    50,    -1,    52,    53,    54,    55,    56,    57,
-      73,    74,    75,    -1,    62,    63,    64,    65,    66,    67,
-      68,    -1,    -1,   101,    -1,    -1,    -1,    -1,    76,    -1,
-      73,    74,    75,    -1,    -1,    -1,    99,    -1,    -1,    -1,
-      88,    89,    90,    73,    74,    75,    -1,    -1,    96,    97,
-       0,     1,   100,   101,   102,   103,    99,    -1,    -1,     9,
-      -1,    11,    -1,    13,    14,    15,    16,    17,    -1,    99,
-      20,    21,    22,    23,    24,    -1,    26,    27,    28,    29,
-      30,    31,    32,    33,    34,    35,    36,    37,    38,    39,
-      40,    41,    42,    -1,    -1,    -1,    46,    47,    48,    49,
-      50,    -1,    52,    53,    54,    55,    56,    57,    -1,    -1,
-      -1,    -1,    62,    63,    64,    65,    66,    67,    68,    -1,
-      -1,    -1,    87,    -1,    -1,    -1,    76,    92,    93,    94,
-      95,    -1,    -1,    98,    -1,    -1,    -1,    -1,    88,    89,
-      90,    -1,    -1,    -1,    -1,    -1,    96,    97,     1,    -1,
-     100,   101,   102,   103,    -1,    -1,     9,    10,    11,    -1,
-      13,    14,    15,    16,    17,    -1,    -1,    20,    21,    22,
-      23,    24,    -1,    26,    27,    28,    29,    30,    31,    32,
-      33,    34,    35,    36,    37,    38,    39,    40,    41,    42,
-      -1,    -1,    -1,    46,    47,    48,    49,    50,    -1,    52,
-      53,    54,    55,    56,    57,    -1,    -1,    -1,    -1,    62,
-      63,    64,    65,    66,    67,    68,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    88,    89,    90,    -1,    -1,
-      -1,    -1,    -1,    96,    97,     1,    -1,   100,   101,   102,
-     103,    -1,    -1,     9,    10,    11,    -1,    13,    14,    15,
-      16,    17,    -1,    -1,    20,    21,    22,    23,    24,    -1,
-      26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
-      36,    37,    38,    39,    40,    41,    42,    -1,    -1,    -1,
-      46,    47,    48,    49,    50,    -1,    52,    53,    54,    55,
-      56,    57,    -1,    -1,    -1,    -1,    62,    63,    64,    65,
-      66,    67,    68,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      76,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    88,    89,    90,    -1,    -1,    -1,    -1,    -1,
-      96,    97,     1,    -1,   100,   101,   102,   103,    -1,    -1,
-       9,    10,    11,    -1,    13,    14,    15,    16,    17,    -1,
-      -1,    20,    21,    22,    23,    24,    -1,    26,    27,    28,
-      29,    30,    31,    32,    33,    34,    35,    36,    37,    38,
-      39,    40,    41,    42,    -1,    -1,    -1,    46,    47,    48,
-      49,    50,    -1,    52,    53,    54,    55,    56,    57,    -1,
-      -1,    -1,    -1,    62,    63,    64,    65,    66,    67,    68,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    76,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    88,
-      89,    90,    -1,    -1,    -1,    -1,    -1,    96,    97,     1,
-      -1,   100,   101,   102,   103,    -1,    -1,     9,    10,    11,
+      84,    85,    86,    87,    73,    74,    75,    -1,    92,    -1,
+     101,    95,    96,    97,    98,    99,    -1,   101,     0,     1,
+     104,    -1,    -1,    -1,    -1,    -1,    -1,     9,    -1,    11,
+      99,    13,    14,    15,    16,    17,    -1,    -1,    20,    21,
+      22,    23,    24,    -1,    26,    27,    28,    29,    30,    31,
+      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
+      42,    73,    74,    75,    46,    47,    48,    49,    50,    -1,
+      52,    53,    54,    55,    56,    57,    73,    74,    75,    -1,
+      62,    63,    64,    65,    66,    67,    68,    99,    -1,    73,
+      74,    75,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    99,    -1,    -1,    -1,    88,    89,    -1,    91,
+      -1,    93,    94,     0,     1,    99,    -1,    -1,   100,   101,
+     102,   103,     9,    -1,    11,    -1,    13,    14,    15,    16,
+      17,    -1,    -1,    20,    21,    22,    23,    24,    -1,    26,
+      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
+      37,    38,    39,    40,    41,    42,    -1,    -1,    -1,    46,
+      47,    48,    49,    50,    -1,    52,    53,    54,    55,    56,
+      57,    -1,    -1,    -1,    -1,    62,    63,    64,    65,    66,
+      67,    68,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    76,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    88,    89,    -1,    91,    -1,    93,    94,    -1,     1,
+      -1,    -1,    -1,   100,   101,   102,   103,     9,    10,    11,
       -1,    13,    14,    15,    16,    17,    -1,    -1,    20,    21,
       22,    23,    24,    -1,    26,    27,    28,    29,    30,    31,
       32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
@@ -906,131 +691,131 @@ static const yytype_int16 yycheck[] =
       52,    53,    54,    55,    56,    57,    -1,    -1,    -1,    -1,
       62,    63,    64,    65,    66,    67,    68,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    90,    -1,
-      -1,    -1,    -1,    -1,    96,    97,     1,    -1,   100,   101,
-     102,   103,    -1,    -1,     9,    10,    11,    -1,    13,    14,
-      15,    16,    17,    -1,    -1,    20,    21,    22,    23,    24,
-      -1,    26,    27,    28,    29,    30,    31,    32,    33,    34,
-      35,    36,    37,    38,    39,    40,    41,    42,    -1,    -1,
-      -1,    46,    47,    48,    49,    50,    -1,    52,    53,    54,
-      55,    56,    57,    -1,    -1,    -1,    -1,    62,    63,    64,
-      65,    66,    67,    68,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    76,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    88,    89,    90,    -1,    -1,    -1,    -1,
-      -1,    96,    97,     1,    -1,   100,   101,   102,   103,    -1,
-      -1,     9,    -1,    11,    -1,    13,    14,    15,    16,    17,
-      -1,    -1,    20,    21,    22,    23,    24,    -1,    26,    27,
-      28,    29,    30,    31,    32,    33,    34,    35,    36,    37,
-      38,    39,    40,    41,    42,    -1,    -1,    -1,    46,    47,
-      48,    49,    50,    -1,    52,    53,    54,    55,    56,    57,
-      -1,    -1,    -1,    -1,    62,    63,    64,    65,    66,    67,
-      68,    -1,    -1,    71,    -1,    -1,    -1,    -1,    76,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    -1,    91,
+      -1,    93,    94,    -1,     1,    -1,    -1,    -1,   100,   101,
+     102,   103,     9,    10,    11,    -1,    13,    14,    15,    16,
+      17,    -1,    -1,    20,    21,    22,    23,    24,    -1,    26,
+      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
+      37,    38,    39,    40,    41,    42,    -1,    -1,    -1,    46,
+      47,    48,    49,    50,    -1,    52,    53,    54,    55,    56,
+      57,    -1,    -1,    -1,    -1,    62,    63,    64,    65,    66,
+      67,    68,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    76,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      88,    89,    90,    -1,    -1,    -1,    -1,    -1,    96,    97,
-       1,    -1,   100,   101,   102,   103,    -1,    -1,     9,    -1,
-      11,    -1,    13,    14,    15,    16,    17,    -1,    -1,    20,
-      21,    22,    23,    24,    -1,    26,    27,    28,    29,    30,
-      31,    32,    33,    34,    35,    36,    37,    38,    39,    40,
-      41,    42,    -1,    -1,    -1,    46,    47,    48,    49,    50,
-      -1,    52,    53,    54,    55,    56,    57,    -1,    -1,    -1,
-      -1,    62,    63,    64,    65,    66,    67,    68,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    90,
-      -1,    -1,    -1,    -1,    -1,    96,    97,     1,    -1,   100,
-     101,   102,   103,    -1,    -1,     9,    -1,    11,    -1,    13,
-      14,    15,    16,    17,    -1,    -1,    20,    21,    22,    23,
-      24,    -1,    26,    27,    28,    29,    30,    31,    32,    -1,
-      34,    35,    36,    37,    38,    39,    40,    41,    42,    -1,
-      -1,    -1,    46,    47,    48,    49,    50,    -1,    52,    53,
-      54,    55,    56,    57,    -1,    -1,    -1,    -1,    62,    63,
-      64,    65,    66,    67,    68,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    88,    89,    90,    -1,    -1,    -1,
-       1,    -1,    96,    97,    -1,    -1,   100,   101,   102,   103,
-      11,    -1,    13,    14,    15,    16,    17,    -1,    -1,    20,
-      21,    22,    23,    24,    -1,    26,    27,    28,    29,    30,
-      31,    -1,    -1,    -1,    -1,    36,    -1,    -1,    51,    -1,
-      -1,    -1,    -1,    -1,    -1,    58,    59,    60,    61,    50,
-      -1,    52,    53,    54,    55,    56,    57,    -1,    -1,    -1,
-      -1,    62,    63,    64,    65,    66,    67,    68,    81,    82,
-      83,    84,    85,    86,    87,    76,    -1,    -1,    -1,    92,
-      93,    94,    95,    -1,    -1,    98,    -1,    88,    89,    90,
-      -1,    -1,    -1,     1,    -1,    96,    97,    -1,    -1,   100,
-     101,   102,   103,    11,    -1,    13,    14,    15,    16,    17,
-      -1,    -1,    20,    21,    22,    23,    24,    -1,    26,    27,
-      28,    29,    30,    31,    -1,    -1,    -1,    -1,    36,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    58,    59,    60,    61,
-      -1,    -1,    50,    -1,    52,    53,    54,    55,    56,    57,
-      -1,    -1,    -1,    -1,    62,    63,    64,    65,    66,    67,
-      68,    83,    84,    85,    86,    87,    -1,    -1,    76,    -1,
-      92,    93,    94,    95,    -1,    -1,    98,    -1,    -1,    -1,
-      88,    89,    90,    -1,    -1,    -1,    -1,    -1,    96,    97,
-      -1,    99,   100,    -1,   102,   103,     9,    -1,    11,    -1,
-      13,    14,    15,    16,    17,    -1,    -1,    20,    21,    22,
-      23,    24,    25,    26,    27,    28,    29,    30,    31,    -1,
-      -1,    -1,    -1,    36,    -1,    -1,    -1,    -1,    -1,    -1,
-      58,    59,    60,    61,    -1,    -1,    -1,    50,    -1,    52,
-      53,    54,    55,    56,    57,    -1,    -1,    -1,    -1,    62,
-      63,    64,    65,    66,    67,    68,    84,    85,    86,    87,
-      -1,    -1,    -1,    76,    92,    93,    94,    95,    -1,    -1,
-      98,    -1,    -1,    -1,    -1,    88,    89,    90,    -1,    -1,
-      -1,    -1,    -1,    96,    97,    -1,    -1,   100,    -1,   102,
-     103,     9,    -1,    11,    -1,    13,    14,    15,    16,    17,
-      -1,    -1,    20,    21,    22,    23,    24,    -1,    26,    27,
-      28,    29,    30,    31,    -1,    -1,    -1,    -1,    36,    -1,
-      -1,    -1,    -1,    -1,    -1,    58,    59,    60,    61,    -1,
-      -1,    -1,    50,    -1,    52,    53,    54,    55,    56,    57,
-      -1,    -1,    -1,    -1,    62,    63,    64,    65,    66,    67,
-      68,    -1,    85,    86,    87,    -1,    -1,    -1,    76,    92,
-      93,    94,    95,    -1,    -1,    98,    -1,    -1,    -1,    -1,
-      88,    89,    90,    -1,    -1,    -1,    -1,    -1,    96,    97,
-      -1,    -1,   100,    -1,   102,   103,    11,    12,    13,    14,
-      15,    16,    17,    -1,    -1,    20,    21,    22,    23,    24,
-      -1,    26,    27,    28,    29,    30,    31,    -1,    -1,    -1,
-      -1,    36,    -1,    -1,    -1,    -1,    -1,    -1,    58,    59,
-      60,    61,    -1,    -1,    -1,    50,    -1,    52,    53,    54,
-      55,    56,    57,    -1,    -1,    -1,    -1,    62,    63,    64,
-      65,    66,    67,    68,    -1,    -1,    86,    87,    -1,    -1,
-      -1,    76,    92,    93,    94,    95,    -1,    -1,    98,    -1,
-      -1,    -1,    -1,    88,    89,    90,    -1,    -1,    -1,    -1,
-      -1,    96,    97,    -1,    -1,   100,    -1,   102,   103,    11,
+      -1,    88,    89,    -1,    91,    -1,    93,    94,    -1,     1,
+      -1,    -1,    -1,   100,   101,   102,   103,     9,    10,    11,
       -1,    13,    14,    15,    16,    17,    -1,    -1,    20,    21,
       22,    23,    24,    -1,    26,    27,    28,    29,    30,    31,
-      -1,    -1,    -1,    -1,    36,    -1,    -1,    -1,    -1,    -1,
-      -1,    58,    -1,    60,    61,    -1,    -1,    -1,    50,    -1,
+      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
+      42,    -1,    -1,    -1,    46,    47,    48,    49,    50,    -1,
+      52,    53,    54,    55,    56,    57,    -1,    -1,    -1,    -1,
+      62,    63,    64,    65,    66,    67,    68,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    -1,    91,
+      -1,    93,    94,    -1,     1,    -1,    -1,    -1,   100,   101,
+     102,   103,     9,    10,    11,    -1,    13,    14,    15,    16,
+      17,    -1,    -1,    20,    21,    22,    23,    24,    -1,    26,
+      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
+      37,    38,    39,    40,    41,    42,    -1,    -1,    -1,    46,
+      47,    48,    49,    50,    -1,    52,    53,    54,    55,    56,
+      57,    -1,    -1,    -1,    -1,    62,    63,    64,    65,    66,
+      67,    68,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    76,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    88,    89,    -1,    91,    -1,    93,    94,    -1,     1,
+      -1,    -1,    -1,   100,   101,   102,   103,     9,    10,    11,
+      -1,    13,    14,    15,    16,    17,    -1,    -1,    20,    21,
+      22,    23,    24,    -1,    26,    27,    28,    29,    30,    31,
+      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
+      42,    -1,    -1,    -1,    46,    47,    48,    49,    50,    -1,
+      52,    53,    54,    55,    56,    57,    -1,    -1,    -1,    -1,
+      62,    63,    64,    65,    66,    67,    68,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    -1,    91,
+      -1,    93,    94,    -1,     1,    -1,    -1,    -1,   100,   101,
+     102,   103,     9,    -1,    11,    -1,    13,    14,    15,    16,
+      17,    -1,    -1,    20,    21,    22,    23,    24,    -1,    26,
+      27,    28,    29,    30,    31,    32,    33,    34,    35,    36,
+      37,    38,    39,    40,    41,    42,    -1,    -1,    -1,    46,
+      47,    48,    49,    50,    -1,    52,    53,    54,    55,    56,
+      57,    -1,    -1,    -1,    -1,    62,    63,    64,    65,    66,
+      67,    68,    -1,    -1,    71,    -1,    -1,    -1,    -1,    76,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    88,    89,    -1,    91,    -1,    93,    94,    -1,     1,
+      -1,    -1,    -1,   100,   101,   102,   103,     9,    -1,    11,
+      -1,    13,    14,    15,    16,    17,    -1,    -1,    20,    21,
+      22,    23,    24,    -1,    26,    27,    28,    29,    30,    31,
+      32,    33,    34,    35,    36,    37,    38,    39,    40,    41,
+      42,    -1,    -1,    -1,    46,    47,    48,    49,    50,    -1,
       52,    53,    54,    55,    56,    57,    -1,    -1,    -1,    -1,
-      62,    63,    64,    65,    66,    67,    68,    -1,    -1,    86,
-      87,    -1,    -1,    -1,    76,    92,    93,    94,    95,    -1,
-      -1,    98,    -1,    -1,    -1,    -1,    88,    89,    90,    -1,
-      -1,    -1,    -1,    -1,    96,    97,    -1,    -1,   100,   101,
-     102,   103,    11,    -1,    13,    14,    15,    16,    17,    -1,
+      62,    63,    64,    65,    66,    67,    68,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    -1,    91,
+      -1,    93,    94,    -1,     1,    -1,    -1,    -1,   100,   101,
+     102,   103,     9,    -1,    11,    -1,    13,    14,    15,    16,
+      17,    -1,    -1,    20,    21,    22,    23,    24,    -1,    26,
+      27,    28,    29,    30,    31,    32,    -1,    34,    35,    36,
+      37,    38,    39,    40,    41,    42,    -1,    -1,    -1,    46,
+      47,    48,    49,    50,    -1,    52,    53,    54,    55,    56,
+      57,    -1,    -1,    -1,    -1,    62,    63,    64,    65,    66,
+      67,    68,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    76,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    88,    89,    -1,    91,    -1,    93,    94,     1,    -1,
+      -1,    -1,    -1,   100,   101,   102,   103,    -1,    11,    -1,
+      13,    14,    15,    16,    17,    -1,    -1,    20,    21,    22,
+      23,    24,    -1,    26,    27,    28,    29,    30,    31,    -1,
+      -1,    -1,    -1,    36,    -1,    -1,    51,    -1,    -1,    -1,
+      -1,    -1,    -1,    58,    59,    60,    61,    50,    -1,    52,
+      53,    54,    55,    56,    57,    -1,    -1,    -1,    -1,    62,
+      63,    64,    65,    66,    67,    68,    81,    82,    83,    84,
+      85,    86,    87,    76,    -1,    -1,    -1,    92,    -1,    -1,
+      95,    96,    97,    98,    -1,    88,    89,    -1,    91,    -1,
+      93,    94,     1,    -1,    -1,    -1,    -1,   100,   101,   102,
+     103,    -1,    11,    -1,    13,    14,    15,    16,    17,    -1,
       -1,    20,    21,    22,    23,    24,    -1,    26,    27,    28,
       29,    30,    31,    -1,    -1,    -1,    -1,    36,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    58,    59,    60,    61,    -1,
+      -1,    50,    -1,    52,    53,    54,    55,    56,    57,    -1,
+      -1,    -1,    -1,    62,    63,    64,    65,    66,    67,    68,
+      83,    84,    85,    86,    87,    -1,    -1,    76,    -1,    92,
+      -1,    -1,    95,    96,    97,    98,    -1,    -1,    -1,    88,
+      89,    -1,    91,    -1,    93,    94,    -1,    -1,    -1,    -1,
+      99,   100,    -1,   102,   103,     9,    -1,    11,    -1,    13,
+      14,    15,    16,    17,    -1,    -1,    20,    21,    22,    23,
+      24,    25,    26,    27,    28,    29,    30,    31,    -1,    -1,
+      -1,    -1,    36,    -1,    -1,    -1,    -1,    -1,    -1,    58,
+      59,    60,    61,    -1,    -1,    -1,    50,    -1,    52,    53,
+      54,    55,    56,    57,    -1,    -1,    -1,    -1,    62,    63,
+      64,    65,    66,    67,    68,    84,    85,    86,    87,    -1,
+      -1,    -1,    76,    92,    -1,    -1,    95,    96,    97,    98,
+      -1,    -1,    -1,    -1,    88,    89,    -1,    91,    -1,    93,
+      94,    -1,    -1,    -1,    -1,    -1,   100,    -1,   102,   103,
+       9,    -1,    11,    -1,    13,    14,    15,    16,    17,    -1,
+      -1,    20,    21,    22,    23,    24,    -1,    26,    27,    28,
+      29,    30,    31,    -1,    -1,    -1,    -1,    36,    -1,    -1,
+      -1,    -1,    -1,    -1,    58,    59,    60,    61,    -1,    -1,
       -1,    50,    -1,    52,    53,    54,    55,    56,    57,    -1,
       -1,    -1,    -1,    62,    63,    64,    65,    66,    67,    68,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    76,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    88,
-      89,    90,    -1,    -1,    -1,    -1,    -1,    96,    97,    -1,
-      99,   100,    -1,   102,   103,    11,    -1,    13,    14,    15,
+      -1,    85,    86,    87,    -1,    -1,    -1,    76,    92,    -1,
+      -1,    95,    96,    97,    98,    -1,    -1,    -1,    -1,    88,
+      89,    -1,    91,    -1,    93,    94,    -1,    -1,    -1,    -1,
+      -1,   100,    -1,   102,   103,    11,    12,    13,    14,    15,
       16,    17,    -1,    -1,    20,    21,    22,    23,    24,    -1,
       26,    27,    28,    29,    30,    31,    -1,    -1,    -1,    -1,
-      36,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      36,    -1,    -1,    -1,    -1,    58,    59,    60,    61,    -1,
       -1,    -1,    -1,    -1,    50,    -1,    52,    53,    54,    55,
       56,    57,    -1,    -1,    -1,    -1,    62,    63,    64,    65,
-      66,    67,    68,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      76,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    88,    89,    90,    -1,    -1,    -1,    -1,    -1,
-      96,    97,    -1,    99,   100,    -1,   102,   103,    11,    -1,
+      66,    67,    68,    86,    87,    -1,    -1,    -1,    -1,    92,
+      76,    -1,    95,    96,    97,    98,    -1,    -1,    -1,    -1,
+      -1,    -1,    88,    89,    -1,    91,    -1,    93,    94,    -1,
+      -1,    -1,    -1,    -1,   100,    -1,   102,   103,    11,    -1,
       13,    14,    15,    16,    17,    -1,    -1,    20,    21,    22,
       23,    24,    -1,    26,    27,    28,    29,    30,    31,    -1,
-      -1,    -1,    -1,    36,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,    52,
+      -1,    -1,    -1,    36,    -1,    -1,    -1,    -1,    58,    59,
+      60,    61,    -1,    -1,    -1,    -1,    -1,    50,    -1,    52,
       53,    54,    55,    56,    57,    -1,    -1,    -1,    -1,    62,
-      63,    64,    65,    66,    67,    68,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    88,    89,    90,    -1,    -1,
-      -1,    -1,    -1,    96,    97,    -1,    99,   100,    -1,   102,
+      63,    64,    65,    66,    67,    68,    86,    87,    -1,    -1,
+      -1,    -1,    92,    76,    -1,    95,    96,    97,    98,    -1,
+      -1,    -1,    -1,    -1,    -1,    88,    89,    -1,    91,    -1,
+      93,    94,    -1,    -1,    -1,    -1,    -1,   100,   101,   102,
      103,    11,    -1,    13,    14,    15,    16,    17,    -1,    -1,
       20,    21,    22,    23,    24,    -1,    26,    27,    28,    29,
       30,    31,    -1,    -1,    -1,    -1,    36,    -1,    -1,    -1,
@@ -1039,7 +824,7 @@ static const yytype_int16 yycheck[] =
       -1,    -1,    62,    63,    64,    65,    66,    67,    68,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    76,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,
-      90,    -1,    -1,    -1,    -1,    -1,    96,    97,    -1,    99,
+      -1,    91,    -1,    93,    94,    -1,    -1,    -1,    -1,    99,
      100,    -1,   102,   103,    11,    -1,    13,    14,    15,    16,
       17,    -1,    -1,    20,    21,    22,    23,    24,    -1,    26,
       27,    28,    29,    30,    31,    -1,    -1,    -1,    -1,    36,
@@ -1048,8 +833,8 @@ static const yytype_int16 yycheck[] =
       57,    -1,    -1,    -1,    -1,    62,    63,    64,    65,    66,
       67,    68,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    76,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    88,    89,    90,    -1,    -1,    -1,    -1,    -1,    96,
-      97,    -1,    99,   100,    -1,   102,   103,    11,    -1,    13,
+      -1,    88,    89,    -1,    91,    -1,    93,    94,    -1,    -1,
+      -1,    -1,    99,   100,    -1,   102,   103,    11,    -1,    13,
       14,    15,    16,    17,    -1,    -1,    20,    21,    22,    23,
       24,    -1,    26,    27,    28,    29,    30,    31,    -1,    -1,
       -1,    -1,    36,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
@@ -1057,33 +842,60 @@ static const yytype_int16 yycheck[] =
       54,    55,    56,    57,    -1,    -1,    -1,    -1,    62,    63,
       64,    65,    66,    67,    68,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    76,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    88,    89,    90,    -1,    -1,    -1,
-      -1,    -1,    96,    97,    -1,    99,   100,    -1,   102,   103,
+      -1,    -1,    -1,    -1,    88,    89,    -1,    91,    -1,    93,
+      94,    -1,    -1,    -1,    -1,    99,   100,    -1,   102,   103,
       11,    -1,    13,    14,    15,    16,    17,    -1,    -1,    20,
       21,    22,    23,    24,    -1,    26,    27,    28,    29,    30,
       31,    -1,    -1,    -1,    -1,    36,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    50,
       -1,    52,    53,    54,    55,    56,    57,    -1,    -1,    -1,
       -1,    62,    63,    64,    65,    66,    67,    68,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    76,    51,    -1,    -1,    -1,
-      -1,    -1,    -1,    58,    59,    60,    61,    88,    89,    90,
-      -1,    -1,    -1,    -1,    -1,    96,    97,    -1,    -1,   100,
-      -1,   102,   103,    78,    79,    80,    81,    82,    83,    84,
-      85,    86,    87,    -1,    -1,    -1,    -1,    92,    93,    94,
-      95,    51,    -1,    98,    -1,    -1,    -1,    -1,    58,    59,
-      60,    61,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    78,    79,
-      -1,    81,    82,    83,    84,    85,    86,    87,    -1,    -1,
-      -1,    -1,    92,    93,    94,    95,    51,    -1,    98,    -1,
-      -1,    -1,    -1,    58,    59,    60,    61,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    76,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    88,    89,    -1,
+      91,    -1,    93,    94,    -1,    -1,    -1,    -1,    99,   100,
+      -1,   102,   103,    11,    -1,    13,    14,    15,    16,    17,
+      -1,    -1,    20,    21,    22,    23,    24,    -1,    26,    27,
+      28,    29,    30,    31,    -1,    -1,    -1,    -1,    36,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    50,    -1,    52,    53,    54,    55,    56,    57,
+      -1,    -1,    -1,    -1,    62,    63,    64,    65,    66,    67,
+      68,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    76,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      88,    89,    -1,    91,    -1,    93,    94,    -1,    -1,    -1,
+      -1,    99,   100,    -1,   102,   103,    11,    -1,    13,    14,
+      15,    16,    17,    -1,    -1,    20,    21,    22,    23,    24,
+      -1,    26,    27,    28,    29,    30,    31,    -1,    -1,    -1,
+      -1,    36,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    50,    -1,    52,    53,    54,
+      55,    56,    57,    -1,    -1,    -1,    -1,    62,    63,    64,
+      65,    66,    67,    68,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    76,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    88,    89,    -1,    91,    -1,    93,    94,
+      -1,    -1,    -1,    -1,    99,   100,    -1,   102,   103,    11,
+      -1,    13,    14,    15,    16,    17,    -1,    -1,    20,    21,
+      22,    23,    24,    -1,    26,    27,    28,    29,    30,    31,
+      -1,    -1,    -1,    -1,    36,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    50,    -1,
+      52,    53,    54,    55,    56,    57,    -1,    -1,    -1,    -1,
+      62,    63,    64,    65,    66,    67,    68,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    76,    51,    -1,    -1,    -1,    -1,
+      -1,    -1,    58,    59,    60,    61,    88,    89,    -1,    91,
+      -1,    93,    94,    -1,    -1,    -1,    -1,    -1,   100,    -1,
+     102,   103,    78,    79,    80,    81,    82,    83,    84,    85,
+      86,    87,    -1,    -1,    -1,    -1,    92,    51,    -1,    95,
+      96,    97,    98,    -1,    58,    59,    60,    61,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    78,    79,    -1,    81,    82,    83,
+      84,    85,    86,    87,    -1,    -1,    -1,    -1,    92,    51,
+      -1,    95,    96,    97,    98,    -1,    58,    59,    60,    61,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    79,    -1,    81,    82,    83,    84,
-      85,    86,    87,    -1,    -1,    -1,    -1,    92,    93,    94,
-      95,    -1,    -1,    98
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    79,    -1,    81,
+      82,    83,    84,    85,    86,    87,    -1,    -1,    -1,    -1,
+      92,    -1,    -1,    95,    96,    97,    98
 };
 
-/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-   symbol of state STATE-NUM.  */
+  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+     symbol of state STATE-NUM.  */
 static const yytype_uint8 yystos[] =
 {
        0,     3,     4,     5,     6,     7,     8,   106,   107,   108,
@@ -1091,7 +903,7 @@ static const yytype_uint8 yystos[] =
       16,    17,    20,    21,    22,    23,    24,    26,    27,    28,
       29,    30,    31,    36,    50,    52,    53,    54,    55,    56,
       57,    62,    63,    64,    65,    66,    67,    68,    76,    88,
-      89,    90,    96,    97,   100,   102,   103,   152,   153,   154,
+      89,    91,    93,    94,   100,   102,   103,   152,   153,   154,
      157,   158,   159,   160,   161,   162,   164,   167,   172,   173,
      174,   175,   176,   177,   178,   179,   180,     9,   113,     1,
       32,    34,    35,    37,    38,    39,    40,    41,    42,    46,
@@ -1104,9 +916,9 @@ static const yytype_uint8 yystos[] =
      162,   162,   162,   162,   162,    99,   152,   181,   181,    73,
       74,    75,    77,     9,    11,   100,    51,    58,    59,    60,
       61,    78,    79,    81,    82,    83,    84,    85,    86,    87,
-      92,    93,    94,    95,    98,   100,     9,    11,     9,    11,
+      92,    95,    96,    97,    98,   100,     9,    11,     9,    11,
        9,    11,     9,   115,   144,   145,    20,   142,   100,   100,
-     100,   100,    67,    90,   100,   173,   100,   100,   113,    45,
+     100,   100,    67,    91,   100,   173,   100,   100,   113,    45,
      134,   101,    39,    40,    41,    42,    46,    48,   121,   122,
      120,    12,   166,   100,   100,   152,    99,   113,    23,   115,
      146,    99,    99,   152,   167,   181,   153,    10,   101,   166,
@@ -1139,6 +951,68 @@ static const yytype_uint8 yystos[] =
      118,   116,   134,   140,    71,   133,    99,   116
 };
 
+  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+static const yytype_uint8 yyr1[] =
+{
+       0,   105,   107,   106,   108,   106,   109,   106,   110,   106,
+     111,   106,   112,   106,   113,   114,   115,   116,   117,   118,
+     118,   119,   119,   120,   120,   121,   121,   122,   122,   123,
+     122,   124,   122,   122,   125,   122,   122,   122,   122,   122,
+     122,   122,   122,   126,   127,   122,   122,   122,   128,   122,
+     122,   122,   122,   129,   122,   122,   122,   130,   131,   131,
+     132,   132,   132,   132,   132,   132,   132,   132,   133,   133,
+     133,   134,   134,   135,   136,   136,   137,   137,   138,   139,
+     140,   141,   141,   142,   143,   144,   145,   145,   146,   146,
+     147,   147,   147,   148,   148,   150,   149,   151,   151,   152,
+     152,   152,   152,   153,   153,   153,   154,   154,   154,   154,
+     154,   154,   154,   154,   155,   154,   156,   156,   157,   157,
+     157,   157,   157,   157,   157,   157,   157,   157,   157,   157,
+     157,   157,   158,   158,   158,   158,   158,   158,   158,   158,
+     158,   158,   158,   158,   158,   158,   159,   159,   159,   159,
+     159,   159,   159,   159,   159,   160,   160,   160,   160,   160,
+     160,   161,   161,   162,   162,   162,   162,   162,   162,   162,
+     162,   162,   162,   162,   162,   162,   162,   162,   162,   162,
+     162,   162,   162,   162,   162,   162,   162,   162,   162,   162,
+     162,   162,   162,   162,   162,   162,   162,   162,   162,   162,
+     162,   162,   162,   162,   162,   162,   162,   162,   162,   162,
+     162,   163,   162,   162,   162,   162,   162,   164,   164,   165,
+     165,   165,   165,   165,   166,   166,   167,   167,   168,   168,
+     169,   170,   170,   170,   171,   171,   172,   173,   174,   175,
+     176,   176,   177,   178,   178,   179,   179,   180,   180,   181,
+     181,   181,   181
+};
+
+  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
+static const yytype_uint8 yyr2[] =
+{
+       0,     2,     0,     4,     0,     3,     0,     3,     0,     3,
+       0,     3,     0,     3,     4,     7,     0,     4,     0,     0,
+       2,     0,     2,     1,     1,     2,     2,     1,     4,     0,
+       7,     0,    10,     4,     0,     7,     7,     7,     6,     6,
+       2,     8,     8,     0,     0,    13,     9,     8,     0,    11,
+       9,     7,     2,     0,     8,     2,     1,     2,     0,     3,
+       1,     1,     3,     3,     3,     3,     3,     3,     0,     2,
+       6,     0,     2,     0,     0,     1,     0,     1,     1,     1,
+       1,     1,     0,     0,     0,     0,     1,     1,     0,     1,
+       0,     2,     1,     2,     1,     0,     3,     1,     1,     3,
+       3,     3,     1,     2,     3,     1,     3,     5,     6,     3,
+       3,     5,     2,     4,     0,     5,     1,     1,     5,     4,
+       5,     4,     5,     6,     5,     4,     5,     4,     3,     6,
+       4,     5,     3,     3,     3,     3,     3,     3,     3,     3,
+       3,     3,     3,     3,     3,     3,     2,     2,     2,     2,
+       2,     2,     2,     2,     2,     3,     2,     4,     3,     5,
+       8,     2,     2,     1,     1,     1,     1,     5,     2,     1,
+       2,     3,     1,     2,     1,     1,     1,     1,     1,     1,
+       4,     4,     5,     5,     1,     1,     3,     4,     3,     4,
+       4,     4,     4,     4,     1,     2,     2,     1,     2,     2,
+       1,     2,     1,     2,     1,     3,     1,     3,     1,     3,
+       4,     0,     6,     1,     1,     1,     1,     3,     2,     3,
+       2,     1,     1,     1,     0,     1,     0,     1,     0,     2,
+       1,     1,     1,     1,     1,     1,     2,     2,     2,     2,
+       2,     4,     2,     1,     3,     1,     3,     1,     3,     1,
+       1,     1,     1
+};
+
 typedef enum {
 	toketype_ival, toketype_opval, toketype_pval
 } toketypes;
@@ -1176,6 +1050,6 @@ static const toketypes yy_type_tab[] =
 };
 
 /* Generated from:
- * 703ebd267cf8ca45f9dee9bc0f4b21511117a0c1dca1c8bc9438ce91950217ae perly.y
+ * 4fd37fdbff6285ba6e9096c2229255ecc6264d2f26835e535cf1c38f387ceae6 perly.y
  * a4923588f219644801577c514014847e1e5240f49413fa3b89d3306fa4874d07 regen_perly.pl
  * ex: set ro: */
diff --git a/perly.y b/perly.y
index 200964d..8717258 100644
--- a/perly.y
+++ b/perly.y
@@ -755,19 +755,31 @@ subscripted:    gelem '{' expr ';' '}'        /* *main::{something} */
 					jmaybe($3)); }
 	|	term ARROW '(' ')'          /* $subref->() */
 			{ $$ = newUNOP(OP_ENTERSUB, OPf_STACKED,
-				   newCVREF(0, scalar($1))); }
+				   newCVREF(0, scalar($1)));
+			  if (parser->expect == XBLOCK)
+			      parser->expect = XOPERATOR;
+			}
 	|	term ARROW '(' expr ')'     /* $subref->(@args) */
 			{ $$ = newUNOP(OP_ENTERSUB, OPf_STACKED,
 				   op_append_elem(OP_LIST, $4,
-				       newCVREF(0, scalar($1)))); }
+				       newCVREF(0, scalar($1))));
+			  if (parser->expect == XBLOCK)
+			      parser->expect = XOPERATOR;
+			}
 
 	|	subscripted '(' expr ')'   /* $foo->{bar}->(@args) */
 			{ $$ = newUNOP(OP_ENTERSUB, OPf_STACKED,
 				   op_append_elem(OP_LIST, $3,
-					       newCVREF(0, scalar($1)))); }
+					       newCVREF(0, scalar($1))));
+			  if (parser->expect == XBLOCK)
+			      parser->expect = XOPERATOR;
+			}
 	|	subscripted '(' ')'        /* $foo->{bar}->() */
 			{ $$ = newUNOP(OP_ENTERSUB, OPf_STACKED,
-				   newCVREF(0, scalar($1))); }
+				   newCVREF(0, scalar($1)));
+			  if (parser->expect == XBLOCK)
+			      parser->expect = XOPERATOR;
+			}
 	|	'(' expr ')' '[' expr ']'            /* list slice */
 			{ $$ = newSLICEOP(0, $5, $2); }
 	|	QWLIST '[' expr ']'            /* list literal slice */
diff --git a/t/op/postfixderef.t b/t/op/postfixderef.t
index 77988bf..fa066aa 100644
--- a/t/op/postfixderef.t
+++ b/t/op/postfixderef.t
@@ -16,7 +16,7 @@ BEGIN {
 
 use strict qw(refs subs);
 
-plan(115);
+plan(129);
 
 {
     no strict 'refs';
@@ -353,3 +353,26 @@ is "$_->@{foo}", "foo->7 8 9", '->@{ does not interpolate without feature';
     is "@{[foo->@[0,1]]}", "7 8", '->@[ inside "@{...}"';
     is "@{[foo->@{foo}]}", "oof", '->@{ inside "@{...}"';
 }
+
+# parsing of {} subscript as subscript rather than block
+{
+    sub ppp { "qqq" }
+    my $h = { ppp => "pp", qqq => "qq", rrr => 7 };
+    is ${$h}{ppp}, "pp";
+    is ${$h}{"rrr"} - 2, 5;
+    my $ar = [$h];
+    is $ar->[0]->{ppp}, "pp";
+    is $ar->[0]->{"rrr"} - 2, 5;
+    is $ar->[0]{ppp}, "pp";
+    is $ar->[0]{"rrr"} - 2, 5;
+    my $hr = {h=>$h};
+    is $hr->{"h"}->{ppp}, "pp";
+    is $hr->{"h"}->{"rrr"} - 2, 5;
+    is $hr->{"h"}{ppp}, "pp";
+    is $hr->{"h"}{"rrr"} - 2, 5;
+    my $cr = sub { $h };
+    is $cr->()->{ppp}, "pp";
+    is $cr->()->{"rrr"} - 2, 5;
+    is $cr->(){ppp}, "pp";
+    is $cr->(){"rrr"} - 2, 5;
+}
-- 
2.13.6