remove unreadable symbol names from sources;
authorwenzelm
Mon, 18 Sep 2000 23:43:56 +0200
changeset 10026 dfa85ba2295a
parent 10025 a281d157ccdf
child 10027 65ab57cff787
remove unreadable symbol names from sources;
lib/Tools/unsymbolize
lib/scripts/unsymbolize.pl
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/Tools/unsymbolize	Mon Sep 18 23:43:56 2000 +0200
@@ -0,0 +1,42 @@
+#!/bin/bash
+#
+# $Id$
+# Author: Markus Wenzel, TU Muenchen
+# License: GPL (GNU GENERAL PUBLIC LICENSE)
+#
+# DESCRIPTION: remove unreadable symbol names from sources
+
+
+## diagnostics
+
+PRG=$(basename "$0")
+
+function usage()
+{
+  echo
+  echo "Usage: $PRG [FILES|DIRS...]"
+  echo
+  echo "  Recursively find .thy/.ML files, removing unreadable symbol names."
+  echo "  Note: this is an ad-hoc script; there is no systematic way to replace"
+  echo "  symbols independently of the inner syntax of a theory!"
+  echo
+  echo "  Renames old versions of FILES by appending \"~~\"."
+  echo
+  exit 1
+}
+
+
+## process command line
+
+[ "$#" -eq 0 -o "$1" = "-?" ] && usage
+
+SPECS="$@"; shift "$#"
+
+
+## main
+
+#set by configure
+AUTO_PERL=perl
+
+find $SPECS \( -name \*.ML -o -name \*.thy \) -print | \
+  xargs "$AUTO_PERL" -w "$ISABELLE_HOME/lib/scripts/unsymbolize.pl"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/scripts/unsymbolize.pl	Mon Sep 18 23:43:56 2000 +0200
@@ -0,0 +1,52 @@
+#
+# $Id$
+# Author: Markus Wenzel, TU Muenchen
+# License: GPL (GNU GENERAL PUBLIC LICENSE)
+#
+# unsymbolize.pl - remove unreadable symbol names from sources
+#
+
+sub unsymbolize {
+    my ($file) = @_;
+
+    open (FILE, $file) || die $!;
+    undef $/; $text = <FILE>; $/ = "\n";         # slurp whole file
+    close FILE || die $!;
+
+    $_ = $text;
+
+    # Pure
+    s/\\?\\<And>/!!/g;
+    s/\\?\\<Colon>/::/g;
+    s/\\?\\<Longrightarrow>/==>/g;
+    s/\\?\\<Midarrow>\\?\\<Rightarrow>/==>/g;
+    s/\\?\\<Rightarrow>/=>/g;
+    s/\\?\\<equiv>/==/g;
+    s/\\?\\<lbrakk>/[|/g;
+    s/\\?\\<rbrakk>/|]/g;
+    # HOL
+    s/\\?\\<longrightarrow>/-->/g;
+    s/\\?\\<midarrow>\\?\\<rightarrow>/-->/g;
+    s/\\?\\<rightarrow>/->/g;
+    s/\\?\\<epsilon>\s*/SOME /g;
+
+    $result = $_;
+
+    if ($text ne $result) {
+	print STDERR "fixing $file\n";
+        if (! -f "$file~~") {
+	    rename $file, "$file~~" || die $!;
+        }
+	open (FILE, "> $file") || die $!;
+	print FILE $result;
+	close FILE || die $!;
+    }
+}
+
+
+## main
+
+foreach $file (@ARGV) {
+  eval { &unsymbolize($file); };
+  if ($@) { print STDERR "*** unsymbolize $file: ", $@, "\n"; }
+}