src/Tools/Code/lib/Tools/codegen
author haftmann
Fri, 03 Sep 2010 16:08:09 +0200
changeset 39121 6f6a9c8abbac
parent 38967 b912278b719f
child 39646 64fdbee67135
permissions -rwxr-xr-x
QND_FLAG is a shell variable, not a string
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
21884
7df02627898e added isatool codegen
haftmann
parents:
diff changeset
     1
#!/usr/bin/env bash
7df02627898e added isatool codegen
haftmann
parents:
diff changeset
     2
#
7df02627898e added isatool codegen
haftmann
parents:
diff changeset
     3
# Author: Florian Haftmann, TUM
7df02627898e added isatool codegen
haftmann
parents:
diff changeset
     4
#
7df02627898e added isatool codegen
haftmann
parents:
diff changeset
     5
# DESCRIPTION: issue code generation from shell
7df02627898e added isatool codegen
haftmann
parents:
diff changeset
     6
7df02627898e added isatool codegen
haftmann
parents:
diff changeset
     7
7df02627898e added isatool codegen
haftmann
parents:
diff changeset
     8
PRG="$(basename "$0")"
7df02627898e added isatool codegen
haftmann
parents:
diff changeset
     9
7df02627898e added isatool codegen
haftmann
parents:
diff changeset
    10
function usage()
7df02627898e added isatool codegen
haftmann
parents:
diff changeset
    11
{
7df02627898e added isatool codegen
haftmann
parents:
diff changeset
    12
  echo
32483
522f04b719c8 added -q switch for run in qnd mode
haftmann
parents: 32482
diff changeset
    13
  echo "Usage: isabelle $PRG [OPTIONS] IMAGE THY CMD"
522f04b719c8 added -q switch for run in qnd mode
haftmann
parents: 32482
diff changeset
    14
  echo
522f04b719c8 added -q switch for run in qnd mode
haftmann
parents: 32482
diff changeset
    15
  echo "  Options are:"
522f04b719c8 added -q switch for run in qnd mode
haftmann
parents: 32482
diff changeset
    16
  echo "    -q    run in quick'n'dirty mode"
21884
7df02627898e added isatool codegen
haftmann
parents:
diff changeset
    17
  echo
7df02627898e added isatool codegen
haftmann
parents:
diff changeset
    18
  echo "  Issues code generation using image IMAGE,"
7df02627898e added isatool codegen
haftmann
parents:
diff changeset
    19
  echo "  theory THY,"
25611
c0deb7307732 isatool codegen now returns exit value
haftmann
parents: 25451
diff changeset
    20
  echo "  with Isar command 'export_code CMD'"
21884
7df02627898e added isatool codegen
haftmann
parents:
diff changeset
    21
  echo
7df02627898e added isatool codegen
haftmann
parents:
diff changeset
    22
  exit 1
7df02627898e added isatool codegen
haftmann
parents:
diff changeset
    23
}
7df02627898e added isatool codegen
haftmann
parents:
diff changeset
    24
7df02627898e added isatool codegen
haftmann
parents:
diff changeset
    25
## process command line
7df02627898e added isatool codegen
haftmann
parents:
diff changeset
    26
32483
522f04b719c8 added -q switch for run in qnd mode
haftmann
parents: 32482
diff changeset
    27
QUICK_AND_DIRTY=0
522f04b719c8 added -q switch for run in qnd mode
haftmann
parents: 32482
diff changeset
    28
522f04b719c8 added -q switch for run in qnd mode
haftmann
parents: 32482
diff changeset
    29
while getopts "q" OPT
522f04b719c8 added -q switch for run in qnd mode
haftmann
parents: 32482
diff changeset
    30
do
522f04b719c8 added -q switch for run in qnd mode
haftmann
parents: 32482
diff changeset
    31
  case "$OPT" in
522f04b719c8 added -q switch for run in qnd mode
haftmann
parents: 32482
diff changeset
    32
    q)
522f04b719c8 added -q switch for run in qnd mode
haftmann
parents: 32482
diff changeset
    33
      QUICK_AND_DIRTY=1
522f04b719c8 added -q switch for run in qnd mode
haftmann
parents: 32482
diff changeset
    34
      ;;
522f04b719c8 added -q switch for run in qnd mode
haftmann
parents: 32482
diff changeset
    35
    \?)
522f04b719c8 added -q switch for run in qnd mode
haftmann
parents: 32482
diff changeset
    36
      usage
522f04b719c8 added -q switch for run in qnd mode
haftmann
parents: 32482
diff changeset
    37
      ;;
522f04b719c8 added -q switch for run in qnd mode
haftmann
parents: 32482
diff changeset
    38
  esac
522f04b719c8 added -q switch for run in qnd mode
haftmann
parents: 32482
diff changeset
    39
done
522f04b719c8 added -q switch for run in qnd mode
haftmann
parents: 32482
diff changeset
    40
522f04b719c8 added -q switch for run in qnd mode
haftmann
parents: 32482
diff changeset
    41
shift $(($OPTIND - 1))
522f04b719c8 added -q switch for run in qnd mode
haftmann
parents: 32482
diff changeset
    42
522f04b719c8 added -q switch for run in qnd mode
haftmann
parents: 32482
diff changeset
    43
[ "$#" -ne 3 ] && usage
21884
7df02627898e added isatool codegen
haftmann
parents:
diff changeset
    44
7df02627898e added isatool codegen
haftmann
parents:
diff changeset
    45
IMAGE="$1"; shift
7df02627898e added isatool codegen
haftmann
parents:
diff changeset
    46
THY="$1"; shift
25611
c0deb7307732 isatool codegen now returns exit value
haftmann
parents: 25451
diff changeset
    47
CMD="$1"
21884
7df02627898e added isatool codegen
haftmann
parents:
diff changeset
    48
7df02627898e added isatool codegen
haftmann
parents:
diff changeset
    49
7df02627898e added isatool codegen
haftmann
parents:
diff changeset
    50
## main
7df02627898e added isatool codegen
haftmann
parents:
diff changeset
    51
30494
c150e6fa4e0d consider exit status of code generation direcitve
haftmann
parents: 30242
diff changeset
    52
CODE_CMD=$(echo $CMD | perl -pe 's/\\/\\\\/g; s/"/\\\"/g')
32483
522f04b719c8 added -q switch for run in qnd mode
haftmann
parents: 32482
diff changeset
    53
522f04b719c8 added -q switch for run in qnd mode
haftmann
parents: 32482
diff changeset
    54
if [ "$QUICK_AND_DIRTY" -eq 1 ]
522f04b719c8 added -q switch for run in qnd mode
haftmann
parents: 32482
diff changeset
    55
then
38967
b912278b719f repaired codegen tool
haftmann
parents: 37945
diff changeset
    56
  QND_FLAG="true"
32483
522f04b719c8 added -q switch for run in qnd mode
haftmann
parents: 32482
diff changeset
    57
else
38967
b912278b719f repaired codegen tool
haftmann
parents: 37945
diff changeset
    58
  QND_FLAG="false"
32483
522f04b719c8 added -q switch for run in qnd mode
haftmann
parents: 32482
diff changeset
    59
fi
522f04b719c8 added -q switch for run in qnd mode
haftmann
parents: 32482
diff changeset
    60
37945
32f9b7a70fc0 repaired tool invocation
haftmann
parents: 37244
diff changeset
    61
CTXT_CMD="ML_Context.eval_text_in (SOME (ProofContext.init_global (Thy_Info.get_theory \"HOL\"))) false Position.none \"Code_Target.shell_command thyname cmd\";"
32483
522f04b719c8 added -q switch for run in qnd mode
haftmann
parents: 32482
diff changeset
    62
39121
6f6a9c8abbac QND_FLAG is a shell variable, not a string
haftmann
parents: 38967
diff changeset
    63
FULL_CMD="quick_and_dirty := $QND_FLAG; val thyname = \"$THY\"; val cmd = \"$CODE_CMD\"; $CTXT_CMD"
21884
7df02627898e added isatool codegen
haftmann
parents:
diff changeset
    64
34271
70af06abb13d repaired legacy setting variable
haftmann
parents: 32806
diff changeset
    65
"$ISABELLE_PROCESS" -q -e "$FULL_CMD" "$IMAGE" || exit 1