summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDagfinn Ilmari Mannsåker <ilmari@ilmari.org>2020-07-28 14:06:34 +0100
committerDagfinn Ilmari Mannsåker <ilmari@ilmari.org>2020-08-06 14:55:10 +0100
commit0a2b3d8846bc5c68e42def5b83d657754b4d07ce (patch)
tree7390a273af73b7e68802aa755c4c029985b7ba72
parent68932db140076f5a7aa243f78fc4fc963acc09b5 (diff)
downloadperl-0a2b3d8846bc5c68e42def5b83d657754b4d07ce.tar.gz
Bump minimum required Bison version to 2.4
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.
-rw-r--r--perly.act4
-rw-r--r--perly.h4
-rw-r--r--perly.tab4
-rw-r--r--perly.y2
-rw-r--r--pod/perldelta.pod2
-rw-r--r--regen_perly.pl13
6 files changed, 14 insertions, 15 deletions
diff --git a/perly.act b/perly.act
index b2d2e673a3..e2c91d4851 100644
--- 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 45cb6ba121..5a3cef7cf5 100644
--- 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: */
diff --git a/perly.tab b/perly.tab
index 4152221b33..f4efa7a739 100644
--- 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 191341fbec..843a3b18bb 100644
--- a/perly.y
+++ b/perly.y
@@ -31,7 +31,7 @@
/* Make the parser re-entrant. */
-%pure-parser
+%define api.pure
%start grammar
diff --git a/pod/perldelta.pod b/pod/perldelta.pod
index 13332c75db..782457c697 100644
--- a/pod/perldelta.pod
+++ b/pod/perldelta.pod
@@ -254,7 +254,7 @@ L</Platform Support> section, instead.
=item *
-XXX
+The minimum supported Bison version is now 2.4.
=back
diff --git a/regen_perly.pl b/regen_perly.pl
index ac5f13a4ee..c8df5a3d15 100644
--- a/regen_perly.pl
+++ b/regen_perly.pl
@@ -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";