author | wenzelm |
Tue, 10 Sep 2013 11:57:53 +0200 | |
changeset 54635 | 05313b45a5ae |
parent 47717 | 9e99afaade17 |
child 57623 | 03c3d1a7c3b8 |
permissions | -rwxr-xr-x |
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 |