2026-06-09 20:52:08 -07:00
|
|
|
import Spa.Analysis.Sign
|
|
|
|
|
import Spa.Analysis.Constant
|
2026-06-23 14:17:11 -05:00
|
|
|
import Spa.Language.Notation
|
2026-06-09 20:52:08 -07:00
|
|
|
|
|
|
|
|
namespace Spa
|
|
|
|
|
|
2026-06-23 14:17:11 -05:00
|
|
|
def testCode : Stmt := [obj_stmt|
|
|
|
|
|
zero := 0;
|
|
|
|
|
pos := zero + 1;
|
|
|
|
|
neg := zero - 1;
|
|
|
|
|
unknown := pos + neg
|
|
|
|
|
]
|
2026-06-09 20:52:08 -07:00
|
|
|
|
2026-06-23 14:17:11 -05:00
|
|
|
def testCodeCond₁ : Stmt := [obj_stmt|
|
|
|
|
|
var := 1;
|
|
|
|
|
if var {
|
|
|
|
|
var := var + 1
|
|
|
|
|
} else {
|
|
|
|
|
var := var - 1;
|
|
|
|
|
var := 1
|
|
|
|
|
}
|
|
|
|
|
]
|
2026-06-09 20:52:08 -07:00
|
|
|
|
2026-06-23 14:17:11 -05:00
|
|
|
def testCodeCond₂ : Stmt := [obj_stmt|
|
|
|
|
|
var := 1;
|
|
|
|
|
if var { x := 1 } else { noop }
|
|
|
|
|
]
|
2026-06-09 20:52:08 -07:00
|
|
|
|
|
|
|
|
def testProgram : Program := ⟨testCode⟩
|
|
|
|
|
|
|
|
|
|
end Spa
|
|
|
|
|
|
|
|
|
|
def main : IO Unit :=
|
|
|
|
|
IO.println (Spa.ConstAnalysis.output Spa.testProgram ++ "\n" ++
|
|
|
|
|
Spa.SignAnalysis.output Spa.testProgram)
|