Yes, you guessed it -- a typos fixed
[p5sagit/p5-mst-13.2.git] / vms / vms_yfix.pl
CommitLineData
4633a7c4 1# This script takes the output produced from perly.y by byacc and
2# the perly.fixer shell script (i.e. the perly.c and perly.h built
3# for Unix systems) and patches them to produce copies containing
4# appropriate declarations for VMS handling of global symbols.
5#
6# If it finds that the input files are already patches for VMS,
7# it just copies the input to the output.
8#
c07a80fd 9# Revised 29-Jan-1996 by Charles Bailey bailey@genetics.upenn.edu
10
11$VERSION = '1.1';
4633a7c4 12
13($cinfile,$hinfile,$coutfile,$houtfile) = @ARGV;
14
15open C,$cinfile or die "Can't read $cinfile: $!\n";
16open COUT, ">$coutfile" or die "Can't create $coutfile: $!\n";
c07a80fd 17print COUT <<EOH;
18/* Postprocessed by vms_yfix.pl $VERSION to add VMS declarations of globals */
19EOH
4633a7c4 20while (<C>) {
c07a80fd 21 # "y.tab.c" is illegal as a VMS filename; DECC 5.2/VAX preprocessor
22 # doesn't like this.
23 if ( s/^#line\s+(\d+)\s+"y.tab.c"/#line $1 "y_tab.c"/ ) { 1; }
24 else {
25 # add the dEXT tag to definitions of global vars, so we'll insert
26 # a globaldef when perly.c is compiled
27 s/^(short|int|YYSTYPE|char \*)\s*yy/dEXT $1 yy/;
4633a7c4 28 }
4633a7c4 29 print COUT;
30}
31close C;
32close COUT;
33
34open H,$hinfile or die "Can't read $hinfile: $!\n";
35open HOUT, ">$houtfile" or die "Can't create $houtfile: $!\n";
c07a80fd 36print HOUT <<EOH;
37/* Postprocessed by vms_yfix.pl $VERSION to add VMS declarations of globals */
38EOH
4633a7c4 39$hfixed = 0; # keep -w happy
40while (<H>) {
41 $hfixed = /globalref/ unless $hfixed; # we've already got a fixed copy
42 next if /^extern YYSTYPE yylval/; # we've got a Unix version, and this
43 # is what we want to replace
44 print HOUT;
45}
46close H;
47
48print HOUT <<'EODECL' unless $hfixed;
49#ifndef vax11c
50 extern YYSTYPE yylval;
51#else
52 globalref YYSTYPE yylval;
53#endif
54EODECL
55
56close HOUT;