misc/parser.sh
author Christian Urban <christian.urban@kcl.ac.uk>
Thu, 10 Nov 2022 09:52:40 +0000
changeset 438 a02e9efd7bc9
parent 342 3779dd003077
permissions -rwxr-xr-x
updated
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
342
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     1
#!/bin/bash
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     2
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     3
# to make the script fail safely
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     4
set -euo pipefail
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     5
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     6
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     7
out=${1:-output}
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     8
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     9
# compilation tests
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    10
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    11
function scala_compile {
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    12
  (ulimit -t 60; JAVA_OPTS="-Xmx1g" scala -Xprint:parser "$1" 2> ptmp 1> ptmp)
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    13
}
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    14
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    15
# purity test
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    16
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    17
function scala_vars {
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    18
   (egrep '\bvar\b|\breturn\b|\.par\.|\.par |ListBuffer|mutable|new Array' ptmp 2> /dev/null 1> /dev/null)
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    19
}
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    20
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    21
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    22
### compilation test
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    23
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    24
echo "collatz.scala runs?" | tee -a $out
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    25
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    26
if (scala_compile collatz.scala)
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    27
then
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    28
  echo "  --> success" | tee -a $out
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    29
  tsts0=$(( 0 ))
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    30
else
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    31
  echo "  --> scala collatz.scala did not run successfully" | tee -a $out
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    32
  tsts0=$(( 1 )) 
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    33
fi
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    34
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    35
# var, .par return, ListBuffer test
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    36
#
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    37
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    38
if  [ $tsts0 -eq 0 ]
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    39
then
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    40
  echo "collatz.scala does not contain var, return etc?" | tee -a $out
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    41
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    42
  if (scala_vars tmp)
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    43
  then
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    44
    echo "  --> test failed" | tee -a $out
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    45
    tsts=$(( 1 ))
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    46
  else
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    47
    echo "  --> success" | tee -a $out
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    48
    tsts=$(( 0 )) 
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    49
  fi
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    50
fi  
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    51
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    52
###rm tmp
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    53
3779dd003077 updated
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    54