lib/scripts/fixdatatype.pl
changeset 5213 0aa62210e67c
child 8444 8f8eb220d9aa
equal deleted inserted replaced
5212:2bc5b5cf0516 5213:0aa62210e67c
       
     1 #
       
     2 # $Id$
       
     3 #
       
     4 # fixdatatype.pl - adapt theories and proof scripts to new datatype package
       
     5 #
       
     6 
       
     7 sub fixdatatype {
       
     8     my ($file) = @_;
       
     9 
       
    10     open (FILE, $file) || die $!;
       
    11     undef $/; $text = <FILE>; $/ = "\n";         # slurp whole file
       
    12     close FILE || die $!;
       
    13 
       
    14     $_ = $text;
       
    15 
       
    16     ## convert split_type_case[_asm] to type.split[_asm]
       
    17     s/([^"])\bsplit_([\w]+)_case\b/$1$2.split/sg;
       
    18     s/([^"])\bsplit_([\w]+)_case_asm\b/$1$2.split_asm/sg;
       
    19 
       
    20     ## delete function name and type after "primrec"
       
    21     s/\bprimrec\b\s+([\w]+|"[^"]+")\s+([\w\.]+)/primrec/sg;
       
    22 
       
    23     ## replace specific induct_tac by generic induct_tac
       
    24     s/[\w\.]+\.induct_tac/induct_tac/sg;
       
    25 
       
    26     ## replace res_inst_tac ... natE by exhaust_tac
       
    27     s/\bres_inst_tac\b\s*\[\s*\(\s*"[^"]+"\s*,\s*("[^"]+")\s*\)\s*\]\s*natE\b/exhaust_tac $1/sg;
       
    28 
       
    29     $result = $_;
       
    30 
       
    31     if ($text ne $result) {
       
    32         print STDERR "fixing $file\n";
       
    33         if (! -f "$file~~") {
       
    34             rename $file, "$file~~" || die $!;
       
    35         }
       
    36         open (FILE, "> $file") || die $!;
       
    37         print FILE $result;
       
    38         close FILE || die $!;
       
    39     }
       
    40 }
       
    41 
       
    42 
       
    43 ## main
       
    44 
       
    45 foreach $file (@ARGV) {
       
    46   eval { &fixdatatype($file); };
       
    47   if ($@) { print STDERR "*** fixdatatype $file: ", $@, "\n"; }
       
    48 }