src/Tools/conv-theory-files.pl
changeset 3750 0e74b6b7f66f
parent 3749 8a8ed98bd2ca
child 3751 7f33a2015381
equal deleted inserted replaced
3749:8a8ed98bd2ca 3750:0e74b6b7f66f
     1 #!/usr/bin/perl -s-	 # -*-Perl-*-
       
     2 
       
     3 #---------------------------------------------------------------------
       
     4 #The following script file is useful to convert old theory files into a
       
     5 #style consistent with new naming conventions. Now, the names of the
       
     6 #files must be the same as the names of the theories they define (with
       
     7 #a ".thy" suffix) and corresponding ML files must also be renamed.
       
     8 #
       
     9 #To make this renaming easier, the following perl script can be used.
       
    10 #It traverses the given directory recursively.  For each file of the
       
    11 #form abc.thy, this script does the following steps:
       
    12 #
       
    13 #1. Reads the file and grabs the first identifier, say Abc (skipping comments
       
    14 #   (*...*) and white space).
       
    15 #2. Outputs the commands needed to rename the file abc.thy to Abc.thy,
       
    16 #   including the appropriate CVS commands.
       
    17 #3. If abc.ML also exists, it outputs appropriate commands to rename it
       
    18 #   to Abc.ML.
       
    19 #
       
    20 #These commands can be put into a file, which can then be executed.
       
    21 #If you are not using cvs, use "grep" to extract just the "mv" commands.
       
    22 #
       
    23 #						- Sara Kalvala
       
    24 #						  (sk@cl.cam.ac.uk)
       
    25 #---------------------------------------------------------------------
       
    26 
       
    27 open(MATCH_FILES, "find . -name \"*thy\" -print |");
       
    28 
       
    29 foreach $each_match (<MATCH_FILES>) {
       
    30  chop($each_match);
       
    31  if($each_match =~ /(.*\/)(\w*)\.thy/) {$dirpart = $1;}
       
    32  else {print "something wrong with finding path!\n";
       
    33        $dirpart = "";}
       
    34  open (CONTENTS, $each_match);
       
    35  @readit = <CONTENTS>;
       
    36  chop(@readit); $oneline = join(" ",@readit);
       
    37  $oneline =~ s/\(\*([^\*]|(\*[^\)]))*\*\)//g ;
       
    38 # comments: have to remove strings of anything but stars or stars
       
    39 # followed by anything but right parenthesis 
       
    40  if($oneline =~ /\s*([^ ]*)\s*=.*/)
       
    41  {$th_name = $1;
       
    42   $new_name = $dirpart . $th_name . ".thy";
       
    43   print "mv -i $each_match $new_name \n";
       
    44   print "cvs rm $each_match ; cvs add $new_name \n";
       
    45 # for ML files
       
    46   $each_ML = $each_match;
       
    47   $each_ML =~ s/.thy/.ML/;
       
    48   if (-e $each_ML) { $new_ML = $dirpart . $th_name . ".ML";
       
    49 		     print "mv -i $each_ML $new_ML \n";
       
    50 		     print "cvs rm $each_ML ; cvs add $new_ML \n";}}
       
    51  else {print "something wrong with format of theory file!\n";}
       
    52 }
       
    53