44 lines
1007 B
Agda
44 lines
1007 B
Agda
{-# OPTIONS --guardedness #-}
|
||
module Main where
|
||
|
||
open import Language
|
||
open import Analysis.Sign
|
||
open import Data.Vec using (Vec; _∷_; [])
|
||
open import IO
|
||
open import Level using (0ℓ)
|
||
|
||
testCode : Stmt
|
||
testCode =
|
||
⟨ "zero" ← (# 0) ⟩ then
|
||
⟨ "pos" ← ((` "zero") Expr.+ (# 1)) ⟩ then
|
||
⟨ "neg" ← ((` "zero") Expr.- (# 1)) ⟩ then
|
||
⟨ "unknown" ← ((` "pos") Expr.+ (` "neg")) ⟩
|
||
|
||
testCodeCond₁ : Stmt
|
||
testCodeCond₁ =
|
||
⟨ "var" ← (# 1) ⟩ then
|
||
if (` "var") then (
|
||
⟨ "var" ← ((` "var") Expr.+ (# 1)) ⟩
|
||
) else (
|
||
⟨ "var" ← ((` "var") Expr.- (# 1)) ⟩ then
|
||
⟨ "var" ← (# 1) ⟩
|
||
)
|
||
|
||
testCodeCond₂ : Stmt
|
||
testCodeCond₂ =
|
||
⟨ "var" ← (# 1) ⟩ then
|
||
if (` "var") then (
|
||
⟨ "x" ← (# 1) ⟩
|
||
) else (
|
||
⟨ noop ⟩
|
||
)
|
||
|
||
testProgram : Program
|
||
testProgram = record
|
||
{ rootStmt = testCode
|
||
}
|
||
|
||
open WithProg testProgram using (output; analyze-correct)
|
||
|
||
main = run {0ℓ} (putStrLn output)
|