This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Bump minimum required Bison version to 2.4
authorDagfinn Ilmari Mannsåker <ilmari@ilmari.org>
Tue, 28 Jul 2020 13:06:34 +0000 (14:06 +0100)
committerDagfinn Ilmari Mannsåker <ilmari@ilmari.org>
Thu, 6 Aug 2020 13:55:10 +0000 (14:55 +0100)
This lets us replace the deprecated `%pure-parser` directive with
`%define api.pure`, and get rid of some other conditional code.

Bison is only required for developers hacking on the grammar, since we
check in the generated code.  Bison 2.4 was released in 2008, and is
included in operating systems as old as Red Hat Enterprise Linux 6.

perly.act
perly.h
perly.tab
perly.y
pod/perldelta.pod
regen_perly.pl

index b2d2e67..e2c91d4 100644 (file)
--- a/perly.act
+++ b/perly.act
@@ -2129,6 +2129,6 @@ case 2:
     
 
 /* Generated from:
- * e5b801fdebce5c77dd8e644fc5a489cbea6af33db180e771dd9d669b12bbe0cf perly.y
- * 0947213b55d0ed11693554bea04987e886cf285f5c14cf9075fa1e7acc3f4061 regen_perly.pl
+ * f83d884147747f2d8f5a62eebc4ccd07d71b6b34e5ba1a8d7559526ad864dc97 perly.y
+ * 1b401b34e1842dd8814919ea427f1b13abc479699495e6e88f8fe4c7ab2f838f regen_perly.pl
  * ex: set ro: */
diff --git a/perly.h b/perly.h
index 45cb6ba..5a3cef7 100644 (file)
--- a/perly.h
+++ b/perly.h
@@ -195,6 +195,6 @@ int yyparse (void);
 
 
 /* Generated from:
- * e5b801fdebce5c77dd8e644fc5a489cbea6af33db180e771dd9d669b12bbe0cf perly.y
- * 0947213b55d0ed11693554bea04987e886cf285f5c14cf9075fa1e7acc3f4061 regen_perly.pl
+ * f83d884147747f2d8f5a62eebc4ccd07d71b6b34e5ba1a8d7559526ad864dc97 perly.y
+ * 1b401b34e1842dd8814919ea427f1b13abc479699495e6e88f8fe4c7ab2f838f regen_perly.pl
  * ex: set ro: */
index 4152221..f4efa7a 100644 (file)
--- a/perly.tab
+++ b/perly.tab
@@ -1189,6 +1189,6 @@ static const toketypes yy_type_tab[] =
 };
 
 /* Generated from:
- * e5b801fdebce5c77dd8e644fc5a489cbea6af33db180e771dd9d669b12bbe0cf perly.y
- * 0947213b55d0ed11693554bea04987e886cf285f5c14cf9075fa1e7acc3f4061 regen_perly.pl
+ * f83d884147747f2d8f5a62eebc4ccd07d71b6b34e5ba1a8d7559526ad864dc97 perly.y
+ * 1b401b34e1842dd8814919ea427f1b13abc479699495e6e88f8fe4c7ab2f838f regen_perly.pl
  * ex: set ro: */
diff --git a/perly.y b/perly.y
index 191341f..843a3b1 100644 (file)
--- a/perly.y
+++ b/perly.y
@@ -31,7 +31,7 @@
 
 /*  Make the parser re-entrant. */
 
-%pure-parser
+%define api.pure
 
 %start grammar
 
index 13332c7..782457c 100644 (file)
@@ -254,7 +254,7 @@ L</Platform Support> section, instead.
 
 =item *
 
-XXX
+The minimum supported Bison version is now 2.4.
 
 =back
 
index ac5f13a..c8df5a3 100644 (file)
@@ -76,11 +76,11 @@ EOF
 
 # Don't change this to add new bison versions without testing that the generated
 # files actually work :-) Win32 in particular may not like them. :-(
-unless ($version =~ /\b(1\.875[a-z]?|2\.[0134567]|3\.[0-4])\b/) { die <<EOF; }
+unless ($version =~ /\b(2\.[4567]|3\.[0-4])\b/) { die <<EOF; }
 
 You have the wrong version of bison in your path; currently versions
-1.875, 2.0-2.7 or 3.0-3.4 are known to work.  Try installing
-    http://ftp.gnu.org/gnu/bison/bison-2.5.1.tar.gz
+2.4-2.7 or 3.0-3.4 are known to work.  Try installing
+    http://ftp.gnu.org/gnu/bison/bison-3.3.tar.gz
 or similar.  Your bison identifies itself as:
 
 $version
@@ -133,8 +133,7 @@ open my $tmph_fh, '<', $tmph_file or die "Can't open $tmph_file: $!\n";
 }
 
 my $endcore_done = 0;
-# Token macros need to be generated manually from bison 2.4 on
-my $gather_tokens = $version >= 2.4 ? undef : 0;
+my $gather_tokens = 0;
 my $tokens;
 while (<$tmph_fh>) {
     # bison 2.6 adds header guards, which break things because of where we
@@ -163,10 +162,10 @@ j
        $endcore_done = 1;
     }
     next if /^#line \d+ ".*"/;
-    if (not defined $gather_tokens) {
+    if (!$gather_tokens) {
        $gather_tokens = 1 if /^\s* enum \s* yytokentype \s* \{/x;
     }
-    elsif ($gather_tokens) {
+    else {
        if (/^\# \s* endif/x) { # The #endif just after the end of the token enum
            $gather_tokens = 0;
            $_ .= "\n/* Tokens.  */\n$tokens";