Sara\'s perl script for renaming theory files
authorlcp
Thu, 23 Jun 1994 16:44:57 +0200
changeset 436 0cdc840297bb
parent 435 ca5356bd315a
child 437 435875e4b21d
Sara\'s perl script for renaming theory files
conv-theory-files.pl
src/Tools/conv-theory-files.pl
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/conv-theory-files.pl	Thu Jun 23 16:44:57 1994 +0200
@@ -0,0 +1,53 @@
+#!/usr/bin/perl -s-	 # -*-Perl-*-
+
+#---------------------------------------------------------------------
+#The following script file is useful to convert old theory files into a
+#style consistent with new naming conventions. Now, the names of the
+#files must be the same as the names of the theories they define (with
+#a ".thy" suffix) and corresponding ML files must also be renamed.
+#
+#To make this renaming easier, the following perl script can be used.
+#It traverses the given directory recursively.  For each file of the
+#form abc.thy, this script does the following steps:
+#
+#1. Reads the file and grabs the first identifier, say Abc (skipping comments
+#   (*...*) and white space).
+#2. Outputs the commands needed to rename the file abc.thy to Abc.thy,
+#   including the appropriate CVS commands.
+#3. If abc.ML also exists, it outputs appropriate commands to rename it
+#   to Abc.ML.
+#
+#These commands can be put into a file, which can then be executed.
+#If you are not using cvs, use "grep" to extract just the "mv" commands.
+#
+#						- Sara Kalvala
+#						  (sk@cl.cam.ac.uk)
+#---------------------------------------------------------------------
+
+open(MATCH_FILES, "find . -name \"*thy\" -print |");
+
+foreach $each_match (<MATCH_FILES>) {
+ chop($each_match);
+ if($each_match =~ /(.*\/)(\w*)\.thy/) {$dirpart = $1;}
+ else {print "something wrong with finding path!\n";
+       $dirpart = "";}
+ open (CONTENTS, $each_match);
+ @readit = <CONTENTS>;
+ chop(@readit); $oneline = join(" ",@readit);
+ $oneline =~ s/\(\*([^\*]|(\*[^\)]))*\*\)//g ;
+# comments: have to remove strings of anything but stars or stars
+# followed by anything but right parenthesis 
+ if($oneline =~ /\s*([^ ]*)\s*=.*/)
+ {$th_name = $1;
+  $new_name = $dirpart . $th_name . ".thy";
+  print "mv -i $each_match $new_name \n";
+  print "cvs rm $each_match ; cvs add $new_name \n";
+# for ML files
+  $each_ML = $each_match;
+  $each_ML =~ s/.thy/.ML/;
+  if (-e $each_ML) { $new_ML = $dirpart . $th_name . ".ML";
+		     print "mv -i $each_ML $new_ML \n";
+		     print "cvs rm $each_ML ; cvs add $new_ML \n";}}
+ else {print "something wrong with format of theory file!\n";}
+}
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/Tools/conv-theory-files.pl	Thu Jun 23 16:44:57 1994 +0200
@@ -0,0 +1,53 @@
+#!/usr/bin/perl -s-	 # -*-Perl-*-
+
+#---------------------------------------------------------------------
+#The following script file is useful to convert old theory files into a
+#style consistent with new naming conventions. Now, the names of the
+#files must be the same as the names of the theories they define (with
+#a ".thy" suffix) and corresponding ML files must also be renamed.
+#
+#To make this renaming easier, the following perl script can be used.
+#It traverses the given directory recursively.  For each file of the
+#form abc.thy, this script does the following steps:
+#
+#1. Reads the file and grabs the first identifier, say Abc (skipping comments
+#   (*...*) and white space).
+#2. Outputs the commands needed to rename the file abc.thy to Abc.thy,
+#   including the appropriate CVS commands.
+#3. If abc.ML also exists, it outputs appropriate commands to rename it
+#   to Abc.ML.
+#
+#These commands can be put into a file, which can then be executed.
+#If you are not using cvs, use "grep" to extract just the "mv" commands.
+#
+#						- Sara Kalvala
+#						  (sk@cl.cam.ac.uk)
+#---------------------------------------------------------------------
+
+open(MATCH_FILES, "find . -name \"*thy\" -print |");
+
+foreach $each_match (<MATCH_FILES>) {
+ chop($each_match);
+ if($each_match =~ /(.*\/)(\w*)\.thy/) {$dirpart = $1;}
+ else {print "something wrong with finding path!\n";
+       $dirpart = "";}
+ open (CONTENTS, $each_match);
+ @readit = <CONTENTS>;
+ chop(@readit); $oneline = join(" ",@readit);
+ $oneline =~ s/\(\*([^\*]|(\*[^\)]))*\*\)//g ;
+# comments: have to remove strings of anything but stars or stars
+# followed by anything but right parenthesis 
+ if($oneline =~ /\s*([^ ]*)\s*=.*/)
+ {$th_name = $1;
+  $new_name = $dirpart . $th_name . ".thy";
+  print "mv -i $each_match $new_name \n";
+  print "cvs rm $each_match ; cvs add $new_name \n";
+# for ML files
+  $each_ML = $each_match;
+  $each_ML =~ s/.thy/.ML/;
+  if (-e $each_ML) { $new_ML = $dirpart . $th_name . ".ML";
+		     print "mv -i $each_ML $new_ML \n";
+		     print "cvs rm $each_ML ; cvs add $new_ML \n";}}
+ else {print "something wrong with format of theory file!\n";}
+}
+