diff -r 478461d77e88 -r 0caedb36900d lib/scripts/fixdots.pl --- a/lib/scripts/fixdots.pl Thu Oct 09 18:01:27 1997 +0200 +++ b/lib/scripts/fixdots.pl Fri Oct 10 14:51:58 1997 +0200 @@ -3,40 +3,52 @@ # # fixdots.pl - ensure that dots in formulas are followed by non-idents # +# tries to be smart; may produce garbage if nested comments and +# solitary quotes (") are intermixed badly; +# + +sub fixdots { + my ($file) = @_; + + open (FILE, $file) || die $!; + undef $/; $text = ; $/ = "\n"; # slurp whole file + close FILE || die $!; + + + $result = ""; + $rest = $text; + + while (1) { + $_ = $rest; + ($pre, $str, $rest) = + m/^((?: \(\*.*?\*\) | [^"] )*) # pre: text or (non-nested!) comments + "((?: [^"\\] | \\\S | \\\s+\\ )*)" # quoted string + (.*)$/sx; # rest of file + if ($str) { + $_ = $str; + if (!m/^[a-zA-Z0-9_\/\.]*$/s && !m/\.ML/s && !m/\.thy/s) { # exclude filenames! + s/([a-zA-Z][a-zA-Z0-9_']*)\.([a-zA-Z])/$1\. $2/sg; + } + $result = $result . $pre . '"' . $_ . '"'; + } else { + $result = $result . $_; + last; + } + } + + if ($text ne $result) { + print STDERR "fixing $file\n"; + rename $file, "$file~~" || die $!; + open (FILE, "> $file") || die $!; + print FILE $result; + close FILE || die $!; + } +} + + +## main foreach $file (@ARGV) { - - if (open (FILE, $file)) { - undef $/; - $text = ; - close FILE; - - $result = ""; - $rest = $text; - - while (1) { - $_ = $rest; - ($pre, $str, $rest) = m/^([^"]*)"((?:[^"\\]|\\.)*)"(.*)$/s; - if ($str) { - $_ = $str; - if (!m/^[a-zA-Z0-9_\/\.]*$/s && !m/\.ML$/s && !m/\.thy/) { # Exclude filenames! - s/([a-zA-Z][a-zA-Z0-9_']*)\.([a-zA-Z])/$1\. $2/g; - } - $result = $result . $pre . '"' . $_ . '"'; - } else { - $result = $result . $_; - last; - } - } - - if ($text ne $result) { - print STDERR "fixing $file\n"; - open (FILE, "> $file") || die $!; - print FILE $result; - close FILE || die $!; - } - - } else { - print STDERR "Can't open file $file: $!\n"; - } + eval { &fixdots($file); }; + if ($@) { print STDERR "*** fixdots $file: ", $@, "\n"; } }