This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
[ID 19990613.003 linklibperl set incorrectly in Makefile.SH for OpenBSD]
[perl5.git] / perly.y
diff --git a/perly.y b/perly.y
index 5c7e6f7..f1de7c7 100644 (file)
--- a/perly.y
+++ b/perly.y
 
 %{
 #include "EXTERN.h"
+#define PERL_IN_PERLY_C
 #include "perl.h"
 
-static void
-dep(void)
-{
-    deprecate("\"do\" to call subroutines");
-}
+#define dep() deprecate("\"do\" to call subroutines")
 
 %}
 
@@ -42,7 +39,7 @@ dep(void)
 #endif /* !OEMVS && !__OPEN_VM && !POSIX_BC */
 
 #ifdef USE_PURE_BISON
-#define YYLEXPARAM (&yychar)
+#define YYLEX_PARAM (&yychar)
 #endif
 %}
 
@@ -304,10 +301,10 @@ startformsub:     /* NULL */      /* start a format subroutine scope */
                        { $$ = start_subparse(TRUE, 0); }
        ;
 
-subname        :       WORD    { char *name = SvPV(((SVOP*)$1)->op_sv, PL_na);
+subname        :       WORD    { STRLEN n_a; char *name = SvPV(((SVOP*)$1)->op_sv,n_a);
                          if (strEQ(name, "BEGIN") || strEQ(name, "END")
                              || strEQ(name, "INIT"))
-                             CvUNIQUE_on(PL_compcv);
+                             CvSPECIAL_on(PL_compcv);
                          $$ = $1; }
        ;
 
@@ -327,7 +324,7 @@ package :   PACKAGE WORD ';'
        ;
 
 use    :       USE startsub
-                       { CvUNIQUE_on(PL_compcv); /* It's a BEGIN {} */ }
+                       { CvSPECIAL_on(PL_compcv); /* It's a BEGIN {} */ }
                    WORD WORD listexpr ';'
                        { utilize($1, $2, $4, $5, $6); }
        ;
@@ -357,6 +354,10 @@ listop     :       LSTOP indirob argexpr
                                append_elem(OP_LIST,
                                    prepend_elem(OP_LIST, scalar($1), $5),
                                    newUNOP(OP_METHOD, 0, $3))); }
+       |       term ARROW method
+                       { $$ = convert(OP_ENTERSUB, OPf_STACKED,
+                               append_elem(OP_LIST, scalar($1),
+                                   newUNOP(OP_METHOD, 0, $3))); }
        |       METHOD indirob listexpr
                        { $$ = convert(OP_ENTERSUB, OPf_STACKED,
                                append_elem(OP_LIST,