diff options
-rw-r--r-- | MANIFEST | 1 | ||||
-rw-r--r-- | Makefile.SH | 2 | ||||
-rwxr-xr-x | regen_madly.pl | 186 | ||||
-rw-r--r-- | regen_perly.pl | 4 |
4 files changed, 3 insertions, 190 deletions
@@ -3035,7 +3035,6 @@ regcomp.h Private declarations for above regcomp.pl Builder of regnodes.h regcomp.sym Data for regnodes.h regen_lib.pl Common file routines for generator scripts -regen_madly.pl generate madly.{act,h,tab} from madly.y regen_perly.pl generate perly.{act,h,tab} from perly.y regen.pl Run all scripts that (re)generate files regexec.c Regular expression evaluator diff --git a/Makefile.SH b/Makefile.SH index da28a661a3..8039664227 100644 --- a/Makefile.SH +++ b/Makefile.SH @@ -892,7 +892,7 @@ run_byacc: # this outputs perly.h, perly.act, perly.tab, madly.h, madly.act and madly.tab regen_perly: perl regen_perly.pl - perl regen_madly.pl + perl regen_perly.pl madly.y # We don't want to regenerate perly.c and perly.h, but they might # appear out-of-date after a patch is applied or a new distribution is diff --git a/regen_madly.pl b/regen_madly.pl deleted file mode 100755 index e87169903b..0000000000 --- a/regen_madly.pl +++ /dev/null @@ -1,186 +0,0 @@ -#!/usr/bin/perl -# -# regen_madly.pl, DAPM 12-Feb-04 -# -# Copyright (c) 2004, 2005 Larry Wall -# -# Given an input file madly.y, run bison on it and produce -# the following output files: -# -# madly.h standard bison header file with minor doctoring of -# #line directives plus adding a #ifdef PERL_CORE -# -# madly.tab the parser table C definitions extracted from the bison output -# -# madly.act the action case statements extracted from the bison output -# -# Note that madly.c is *not* regenerated - this is now a static file which -# is not dependent on madly.y any more. -# -# If a filename of the form foo.y is given on the command line, then -# this is used instead as the basename for all the files mentioned -# above. -# -# Note that temporary files of the form madlytmp.h and madlytmp.c are -# created and then deleted during this process -# -# Note also that this script is intended to be run on a UNIX system; -# it may work elsewhere but no specific attempt has been made to make it -# portable. - -sub usage { die "usage: $0 [ -b bison_executable ] [ file.y ]\n" } - -use warnings; -use strict; - -my $bison = 'bison'; - -if (@ARGV >= 2 and $ARGV[0] eq '-b') { - shift; - $bison = shift; -} - -my $y_file = shift || 'madly.y'; - -usage unless @ARGV==0 && $y_file =~ /\.y$/; - -(my $h_file = $y_file) =~ s/\.y$/.h/; -(my $act_file = $y_file) =~ s/\.y$/.act/; -(my $tab_file = $y_file) =~ s/\.y$/.tab/; -(my $tmpc_file = $y_file) =~ s/\.y$/tmp.c/; -(my $tmph_file = $y_file) =~ s/\.y$/tmp.h/; - -# the yytranslate[] table generated by bison is ASCII/EBCDIC sensitive - -die "$0: must be run on an ASCII system\n" unless ord 'A' == 65; - -# check for correct version number. The constraints are: -# * must be >= 1.24 to avoid licensing issues. -# * it must generate the yystos[] table. Version 1.28 doesn't generate -# this; 1.35+ does -# * Must produce output which is extractable by the regexes below -# * Must produce the right values. -# These last two contstraints may well be met by earlier versions, but -# I simply haven't tested them yet. If it works for you, then modify -# the test below to allow that version too. DAPM Feb 04. - -my $version = `$bison -V`; -unless ($version =~ /\b(1\.875[a-z]?|2\.[01])\b/) { die <<EOF; } - -You have the wrong version of bison in your path; currently 1.875, -2.0 or 2.1 is required. Try installing - http://ftp.gnu.org/gnu/bison/bison-2.0.tar.gz -or - http://ftp.gnu.org/gnu/bison/bison-1.875.tar.bz2 -or similar. Your bison identifies itself as: - -$version -EOF - -# creates $tmpc_file and $tmph_file -my_system("$bison -d -o $tmpc_file $y_file"); - -open CTMPFILE, $tmpc_file or die "Can't open $tmpc_file: $!\n"; -my $clines; -{ local $/; $clines = <CTMPFILE>; } -die "failed to read $tmpc_file: length mismatch\n" - unless length $clines == -s $tmpc_file; -close CTMPFILE; - -my ($actlines, $tablines) = extract($clines); - -chmod 0644, $act_file; -open ACTFILE, ">$act_file" or die "can't open $act_file: $!\n"; -print ACTFILE $actlines; -close ACTFILE; -chmod 0444, $act_file; - -chmod 0644, $tab_file; -open TABFILE, ">$tab_file" or die "can't open $tab_file: $!\n"; -print TABFILE $tablines; -close TABFILE; -chmod 0444, $tab_file; - -unlink $tmpc_file; - -# Wrap PERL_CORE round the symbol definitions. Also, the -# C<#line 123 "madlytmp.h"> gets picked up by make depend, so change it. - -open TMPH_FILE, $tmph_file or die "Can't open $tmph_file: $!\n"; -chmod 0644, $h_file; -open H_FILE, ">$h_file" or die "Can't open $h_file: $!\n"; -my $endcore_done = 0; -while (<TMPH_FILE>) { - print H_FILE "#ifdef PERL_CORE\n" if $. == 1; - if (!$endcore_done and /YYSTYPE_IS_DECLARED/) { - print H_FILE "#endif /* PERL_CORE */\n"; - $endcore_done = 1; - } - s/"madlytmp.h"/"madly.h"/; - print H_FILE $_; -} -close TMPH_FILE; -close H_FILE; -chmod 0444, $h_file; -unlink $tmph_file; - -print "rebuilt: $h_file $tab_file $act_file\n"; - -exit 0; - - -sub extract { - my $clines = shift; - my $tablines; - my $actlines; - - $clines =~ m@ - (?: - ^/* YYFINAL[^\n]+\n #optional comment - )? - \# \s* define \s* YYFINAL # first #define - .*? # other defines + most tables - yystos\[\]\s*= # start of last table - .*? - }\s*; # end of last table - @xms - or die "Can't extract tables from $tmpc_file\n"; - $tablines = $&; - - - $clines =~ m@ - switch \s* \( \s* \w+ \s* \) \s* { \s* - ( - case \s* \d+ \s* : \s* - \#line [^\n]+"madly\.y" - .*? - ) - } - \s* - ( \s* /\* .*? \*/ \s* )* # optional C-comments - \s* - ( - \#line[^\n]+\.c" - | - \#line[^\n]+\.simple" - ) - @xms - or die "Can't extract actions from $tmpc_file\n"; - $actlines = $1; - - return $actlines. "\n", $tablines. "\n"; -} - -sub my_system { - system(@_); - if ($? == -1) { - die "failed to execute comamnd '@_': $!\n"; - } - elsif ($? & 127) { - die sprintf "command '@_' died with signal %d\n", - ($? & 127); - } - elsif ($? >> 8) { - die sprintf "command '@_' exited with value %d\n", $? >> 8; - } -} diff --git a/regen_perly.pl b/regen_perly.pl index 67f763f455..af92aa890c 100644 --- a/regen_perly.pl +++ b/regen_perly.pl @@ -114,7 +114,7 @@ while (<TMPH_FILE>) { print H_FILE "#endif /* PERL_CORE */\n"; $endcore_done = 1; } - s/"perlytmp.h"/"perly.h"/; + s/"$tmph_file"/"$h_file"/; print H_FILE $_; } close TMPH_FILE; @@ -150,7 +150,7 @@ sub extract { switch \s* \( \s* \w+ \s* \) \s* { \s* ( case \s* \d+ \s* : \s* - \#line [^\n]+"perly\.y" + \#line [^\n]+"\Q$y_file\E" .*? ) } |