From cd38db24e14132abfdf7b12bb517b6cc4defe681 Mon Sep 17 00:00:00 2001 From: Gidon Ernst Date: Thu, 8 Feb 2024 20:13:48 +0100 Subject: [PATCH] minor edits to the parsing --- examples/copy.c | 7 +++---- korn/src/korn/Main.scala | 8 ++++---- korn/src/korn/horn/Unit.scala | 2 ++ korn/src/korn/tool/Solve.scala | 2 ++ korn/src/korn/tool/Tool.scala | 13 +++++-------- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/examples/copy.c b/examples/copy.c index 6fad155..a3d9eab 100644 --- a/examples/copy.c +++ b/examples/copy.c @@ -3,18 +3,17 @@ void main() { int a[n]; int b[n]; int i=0; - int k; - assume(0 <= k && k < n); assume(0 <= n); while(i // built-in + case stmt @ FunDef(ret, name, formals, body) => val loc = korn.unpack(stmt.loc, "no location for while loop") define(loc, name, formals, ret, body) + case _ => // nothing to do } diff --git a/korn/src/korn/tool/Solve.scala b/korn/src/korn/tool/Solve.scala index 165a5d3..22621df 100644 --- a/korn/src/korn/tool/Solve.scala +++ b/korn/src/korn/tool/Solve.scala @@ -64,6 +64,8 @@ abstract class Solve extends Tool { } def check(unit: Unit, smt2: String) = { + unit.run() + val (in, err, proc) = if (write) { val out = new PrintStream(new File(smt2)) write(out, unit) diff --git a/korn/src/korn/tool/Tool.scala b/korn/src/korn/tool/Tool.scala index 448b24d..06b9841 100644 --- a/korn/src/korn/tool/Tool.scala +++ b/korn/src/korn/tool/Tool.scala @@ -4,11 +4,11 @@ import java.io.BufferedReader import java.io.InputStreamReader import java.io.PrintStream import korn.Main +import korn.horn.Unit import korn.smt.Model import scala.concurrent.duration.Duration import korn.smt.Scanner import korn.smt.Parser -import korn.horn.Unit sealed trait Result case class Unknown(status: String) extends Result @@ -72,15 +72,12 @@ object Tool { status == 0 } - def parse(file: String) { - val stmts = korn.c.parse(file) + def parse(file: String) = { + korn.c.parse(file) } - def translate(file: String) = { - val stmts = korn.c.parse(file) - object unit extends Unit(file, stmts) - unit.run() - unit + def translate(file: String, stmts: List[korn.c.Stmt]) = { + new korn.horn.Unit(file, stmts) } def model(in: BufferedReader): Model = {