sig
type cmp = Imp_syntax.cmp = Lt | Gt | Eq | Lte | Gte
type aop = Imp_syntax.aop = Add | Sub | Mul
type aexp =
Imp_syntax.aexp =
AConst of int
| AVar of string
| AOp of Imp.aop * Imp.aexp * Imp.aexp
type bexp =
Imp_syntax.bexp =
BConst of bool
| BAnd of Imp.bexp * Imp.bexp
| BOr of Imp.bexp * Imp.bexp
| BNot of Imp.bexp
| BCmp of Imp.cmp * Imp.aexp * Imp.aexp
type cmd =
Imp_syntax.cmd =
CSkip
| CAbort
| CAssign of string * Imp.aexp
| CIf of Imp.bexp * Imp.cmd * Imp.cmd
| CWhile of Imp.bexp * Imp.bexp * Imp.cmd
| CSeq of Imp.cmd * Imp.cmd
val from_string : string -> Imp.bexp * Imp.cmd * Imp.bexp
val from_file : string -> Imp.bexp * Imp.cmd * Imp.bexp
val bexp_to_string : Imp.bexp -> string
end