#!/usr/bin/env bash # # make_mlyacclib - Generates Isabelle-friendly version of ML-Yacc's library. # # This code is based on that used in src/Tools/Metis to adapt Metis for # use in Isabelle. MLYACCDIR=./ml-yacc MLYACCLIB_FILES="base.sig join.sml lrtable.sml stream.sml parser2.sml" echo "Cleaning" rm -f ml_yacc_lib.ML echo "Generating ml_yacc_lib.ML" ( cat <&2 perl -p -e 's/\bref\b/Unsynchronized.ref/g;' \ -e 's/Unsafe\.(.*)/\1/g;' \ -e 's/\bconcat\b/String.concat/g;' \ -e 's/(? TextIO\.output\(TextIO\.stdOut,s\)$//g;' \ -e 's/\bprint\b/TextIO.print/g;' \ $MLYACCDIR/lib/$FILE done cat < ml_yacc_lib.ML