src/HOL/TPTP/TPTP_Parser/make_mlyacclib
author wenzelm
Tue, 10 Sep 2013 11:57:53 +0200
changeset 54635 05313b45a5ae
parent 47717 9e99afaade17
child 57623 03c3d1a7c3b8
permissions -rwxr-xr-x
more portable hash-bang;
wenzelm@54635
     1
#!/usr/bin/env bash
sultana@47717
     2
#
sultana@47717
     3
# make_mlyacclib - Generates Isabelle-friendly version of ML-Yacc's library.
sultana@47717
     4
#
sultana@47717
     5
# This code is based on that used in src/Tools/Metis to adapt Metis for
sultana@47717
     6
# use in Isabelle.
sultana@47717
     7
sultana@47717
     8
MLYACCDIR=./ml-yacc
sultana@47717
     9
MLYACCLIB_FILES="base.sig join.sml lrtable.sml stream.sml parser2.sml"
sultana@47717
    10
sultana@47717
    11
echo "Cleaning"
sultana@47717
    12
rm -f ml_yacc_lib.ML
sultana@47717
    13
echo "Generating ml_yacc_lib.ML"
sultana@47717
    14
(
sultana@47717
    15
  cat <<EOF
sultana@47717
    16
sultana@47717
    17
(******************************************************************)
sultana@47717
    18
(* GENERATED FILE -- DO NOT EDIT -- GENERATED FILE -- DO NOT EDIT *)
sultana@47717
    19
(* GENERATED FILE -- DO NOT EDIT -- GENERATED FILE -- DO NOT EDIT *)
sultana@47717
    20
(* GENERATED FILE -- DO NOT EDIT -- GENERATED FILE -- DO NOT EDIT *)
sultana@47717
    21
(******************************************************************)
sultana@47717
    22
sultana@47717
    23
print_depth 0;
sultana@47717
    24
sultana@47717
    25
(*
sultana@47717
    26
  This file is generated from the contents of ML-Yacc's lib directory.
sultana@47717
    27
  ML-Yacc's COPYRIGHT-file contents follow:
sultana@47717
    28
sultana@47717
    29
EOF
sultana@47717
    30
  perl -pe 'print "  ";' ml-yacc/COPYRIGHT
sultana@47717
    31
  echo "*)"
sultana@47717
    32
sultana@47717
    33
for FILE in $MLYACCLIB_FILES
sultana@47717
    34
do
sultana@47717
    35
  echo
sultana@47717
    36
  echo "(**** Original file: $FILE ****)"
sultana@47717
    37
  echo
sultana@47717
    38
  echo -e "  $FILE" >&2
sultana@47717
    39
  perl -p -e 's/\bref\b/Unsynchronized.ref/g;' \
sultana@47717
    40
          -e 's/Unsafe\.(.*)/\1/g;' \
sultana@47717
    41
          -e 's/\bconcat\b/String.concat/g;' \
sultana@47717
    42
          -e 's/(?<!List\.)foldr\b/List.foldr/g;' \
sultana@47717
    43
          -e 's/\bfoldl\b/List.foldl/g;' \
sultana@47717
    44
          -e 's/val print = fn s => TextIO\.output\(TextIO\.stdOut,s\)$//g;' \
sultana@47717
    45
          -e 's/\bprint\b/TextIO.print/g;' \
sultana@47717
    46
          $MLYACCDIR/lib/$FILE
sultana@47717
    47
  done
sultana@47717
    48
sultana@47717
    49
  cat <<EOF
sultana@47717
    50
;
sultana@47717
    51
print_depth 10;
sultana@47717
    52
EOF
sultana@47717
    53
sultana@47717
    54
) > ml_yacc_lib.ML