cw4_marking/c2.sc
author Christian Urban <christian.urban@kcl.ac.uk>
Fri, 05 Sep 2025 16:59:48 +0100
changeset 980 4f422766763f
parent 977 7a02c5b9e0df
permissions -rw-r--r--
updated
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
977
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     1
// for testing compilation
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     2
import scala.util.{Try, Success, Failure}
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     3
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     4
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     5
val res = {
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     6
  if (os.exists(os.pwd / "for.class")) 
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     7
    os.proc("java", "for").call(cwd = os.pwd)
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     8
  else if (os.exists(os.pwd / "for" / "for.class")) 
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
     9
    os.proc("java", "for.for").call(cwd = os.pwd)
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    10
  else throw new Exception("No CLASS file found")
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    11
}
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    12
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    13
/*
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    14
Try(test_string(ffile, "for")) match {
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    15
  case Success(v) => Console.println(s"   Generated a j-file.")
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    16
  case Failure(e) => Console.println(s"   Exception raised.") ; throw(e)
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    17
}
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    18
*/
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    19
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    20
if (res.exitCode != 0) {
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    21
  throw new Exception("Unsuccessful call")
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    22
}
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    23
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    24
Try(res.out.text().replace("\n", "") == "234") match {
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    25
  case Success(v) => Console.println(s"   Success. Printed ${res.out.text().replace("\n", "")}.")
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    26
  case Failure(e) => Console.println(s"   Fail. Printed ${res.out.text()} instead of \"2,3,4\"\n") ; throw(e)
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    27
}
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    28
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    29
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    30
//println(res.out.text())
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    31
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    32
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    33
/*
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    34
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    35
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    36
// for testing compilation
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    37
import scala.util.{Try, Success, Failure}
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    38
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    39
import $file.cw041_add
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    40
import cw041_add._
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    41
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    42
val res = 
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    43
  if (os.exists(os.pwd / "for.class")) {
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    44
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    45
  } else if (os.exists(os.pwd / for" / "for.class")) {
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    46
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    47
  } else 
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    48
    
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    49
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    50
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    51
val ffile = os.read(os.pwd / "for.while")
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    52
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    53
Try(test_string(ffile, "for")) match {
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    54
  case Success(v) => Console.println(s"   Generated a j-file.")
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    55
  case Failure(e) => Console.println(s"   Exception raised.") ; throw(e)
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    56
}
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    57
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    58
7a02c5b9e0df updated marking scripts
Christian Urban <christian.urban@kcl.ac.uk>
parents:
diff changeset
    59
*/