equal
deleted
inserted
replaced
|
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 } |