| 0 |      1 | #!/bin/sh
 | 
|  |      2 | #   Title: 	make-rulenames
 | 
|  |      3 | #   Author: 	Larry Paulson, Cambridge University Computer Laboratory
 | 
|  |      4 | #   Copyright   1990  University of Cambridge
 | 
|  |      5 | #
 | 
|  |      6 | #shell script for adding signature and val declarations to a rules file
 | 
|  |      7 | #  usage:  make-rulenames <directory>
 | 
|  |      8 | #
 | 
|  |      9 | #Input is the file ruleshell.ML, which defines a theory.
 | 
|  |     10 | #Output is .rules.ML
 | 
|  |     11 | #
 | 
|  |     12 | #
 | 
|  |     13 | #Rule lines begin with a line containing the word "extend_theory"
 | 
|  |     14 | #       and end   with a line containing the word "get_axiom"
 | 
|  |     15 | #
 | 
|  |     16 | #Each rule name xyz must appear on a line that begins
 | 
|  |     17 | #           <spaces> ("xyz"
 | 
|  |     18 | # ENSURE THAT THE FIRST RULE LINE DOES NOT CONTAIN A "[" CHARACTER!
 | 
|  |     19 | #The file RULESIG gets lines like	val Eq_comp: thm
 | 
|  |     20 | #    These are inserted after the line containing the string INSERT-RULESIG
 | 
|  |     21 | #
 | 
|  |     22 | #The file RULENAMES gets lines like	val Eq_comp = ax"Eq_comp";
 | 
|  |     23 | #    These are inserted after the line containing the string INSERT-RULENAMES
 | 
|  |     24 | #The input file should define the function "ax" above this point.
 | 
|  |     25 | #
 | 
|  |     26 | set -eu		#terminate if error or unset variable
 | 
|  |     27 | if [ ! '(' -d $1 -a -f $1/ruleshell.ML ')' ]; \
 | 
|  |     28 |            then echo $1 is not a suitable directory; exit 1; \
 | 
|  |     29 |            fi
 | 
|  |     30 | sed -n -e '/extend_theory/,/get_axiom/ s/^ *("\([^"]*\)".*$/  val \1: thm/p' $1/ruleshell.ML > RULESIG
 | 
|  |     31 | sed -n -e '/extend_theory/,/get_axiom/ s/^ *("\([^"]*\)".*$/val \1 = ax"\1";/p' $1/ruleshell.ML > RULENAMES
 | 
|  |     32 | sed -e '/INSERT-RULESIG/ r RULESIG
 | 
|  |     33 | /INSERT-RULENAMES/ r RULENAMES' $1/ruleshell.ML > $1/.rules.ML
 | 
|  |     34 | #WARNING: there must be no spaces after the filename in the "r" command!!
 | 
|  |     35 | rm RULESIG RULENAMES
 | 
|  |     36 | 
 |