diff options
author | Dagfinn Ilmari Mannsåker <ilmari@ilmari.org> | 2020-07-28 14:06:34 +0100 |
---|---|---|
committer | Dagfinn Ilmari Mannsåker <ilmari@ilmari.org> | 2020-08-06 14:55:10 +0100 |
commit | 0a2b3d8846bc5c68e42def5b83d657754b4d07ce (patch) | |
tree | 7390a273af73b7e68802aa755c4c029985b7ba72 | |
parent | 68932db140076f5a7aa243f78fc4fc963acc09b5 (diff) | |
download | perl-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.act | 4 | ||||
-rw-r--r-- | perly.h | 4 | ||||
-rw-r--r-- | perly.tab | 4 | ||||
-rw-r--r-- | perly.y | 2 | ||||
-rw-r--r-- | pod/perldelta.pod | 2 | ||||
-rw-r--r-- | regen_perly.pl | 13 |
6 files changed, 14 insertions, 15 deletions
@@ -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: */ @@ -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: */ @@ -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: */ @@ -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"; |