src/Tools/Metis/make_metis
author blanchet
Wed, 15 Sep 2010 15:49:43 +0200
changeset 39413 c70a6c169a16
parent 39412 7e8f49d412d6
child 39415 8ebe8dbe16ba
permissions -rwxr-xr-x
tuning
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
23442
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
     1
#!/usr/bin/env bash
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
     2
#
39413
blanchet
parents: 39412
diff changeset
     3
# make_metis - turn original Metis files into Isabelle ML source.
23442
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
     4
#
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
     5
# Structure declarations etc. are made local by wrapping into a
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
     6
# collective structure Metis.  Signature and functor definitions are
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
     7
# global!
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
     8
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
     9
THIS=$(cd "$(dirname "$0")"; echo $PWD)
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
    10
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
    11
(
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
    12
  cat <<EOF
39411
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    13
(*
39413
blanchet
parents: 39412
diff changeset
    14
   This file was generated by the "make_metis" script. The BSD License is used
39411
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    15
   with Joe Hurd's kind permission. Extract from a September 13, 2010 email
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    16
   written by Joe Hurd:
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    17
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    18
       I hereby give permission to the Isabelle team to release Metis as part
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    19
       of Isabelle, with the Metis code covered under the Isabelle BSD
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    20
       license.
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    21
*)
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    22
23442
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
    23
(******************************************************************)
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
    24
(* GENERATED FILE -- DO NOT EDIT -- GENERATED FILE -- DO NOT EDIT *)
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
    25
(* GENERATED FILE -- DO NOT EDIT -- GENERATED FILE -- DO NOT EDIT *)
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
    26
(* GENERATED FILE -- DO NOT EDIT -- GENERATED FILE -- DO NOT EDIT *)
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
    27
(******************************************************************)
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
    28
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
    29
print_depth 0;
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
    30
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
    31
EOF
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
    32
39411
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    33
  for FILE in $(cat "$THIS/FILES")
23442
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
    34
  do
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
    35
    echo
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
    36
    echo "(**** Original file: $FILE ****)"
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
    37
    echo
39411
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    38
    echo -e "$FILE" >&2
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    39
    "$THIS/scripts/mlpp" -c polyml "src/$FILE" | \
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    40
    perl -p -e \
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    41
's/type name$/type name = string/;'\
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    42
's/\bref\b/Unsynchronized.ref/g;'\
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    43
's/\bPolyML.pointerEq\b/pointer_eq/g;'\
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    44
's/(?<!\.)\bexplode\b/String.explode/g;'\
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    45
's/(?<!\.)\bimplode\b/String.implode/g;'\
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    46
's/(?<!\.)\bprint\b/TextIO.print/g;'\
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    47
's/\bRL\b/Metis_RL/g;'\
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    48
"`grep "^\(signature\|structure\|functor\)" src/*.{sig,sml} | \
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    49
  sed "s/[^:]*:[a-z]* \([A-Za-z0-9_]*\).*/\1/" | \
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    50
  tr " " "\n" | \
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    51
  sort | \
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    52
  uniq | \
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    53
  sed 's/\(.*\)/s\/\\\\b\1\\\\b\/Metis_\1\/g;/'`"
23442
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
    54
  done
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
    55
39411
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    56
  cat <<EOF
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    57
;
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    58
print_depth 10;
ec989bd98fc8 use "Metis_" prefix rather than "Metis" structure;
blanchet
parents: 39350
diff changeset
    59
EOF
23442
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
    60
028e39e5e8f3 The Metis prover (slightly modified version from Larry);
wenzelm
parents:
diff changeset
    61
) > metis.ML