41 lines
1.4 KiB
OCaml
41 lines
1.4 KiB
OCaml
|
|
type simpleStatements =
|
||
|
|
| SimpleSkip
|
||
|
|
| SimpleAssignment of Types.variable * simpleArithmetic
|
||
|
|
| SimpleGuard of simpleBoolean
|
||
|
|
and simpleBoolean =
|
||
|
|
| SimpleBoolean of bool
|
||
|
|
| SimpleBAnd of simpleBoolean * simpleBoolean
|
||
|
|
| SimpleBOr of simpleBoolean * simpleBoolean
|
||
|
|
| SimpleBNot of simpleBoolean
|
||
|
|
| SimpleBCmp of simpleArithmetic * simpleArithmetic
|
||
|
|
| SimpleBCmpLess of simpleArithmetic * simpleArithmetic
|
||
|
|
| SimpleBCmpLessEq of simpleArithmetic * simpleArithmetic
|
||
|
|
| SimpleBCmpGreater of simpleArithmetic * simpleArithmetic
|
||
|
|
| SimpleBCmpGreaterEq of simpleArithmetic * simpleArithmetic
|
||
|
|
and simpleArithmetic =
|
||
|
|
| SimpleVariable of Types.variable
|
||
|
|
| SimpleInteger of int
|
||
|
|
| SimplePlus of simpleArithmetic * simpleArithmetic
|
||
|
|
| SimpleMinus of simpleArithmetic * simpleArithmetic
|
||
|
|
| SimpleTimes of simpleArithmetic * simpleArithmetic
|
||
|
|
| SimpleDivision of simpleArithmetic * simpleArithmetic
|
||
|
|
| SimpleModulo of simpleArithmetic * simpleArithmetic
|
||
|
|
| SimplePower of simpleArithmetic * simpleArithmetic
|
||
|
|
| SimplePowerMod of simpleArithmetic * simpleArithmetic * simpleArithmetic
|
||
|
|
| SimpleRand of simpleArithmetic
|
||
|
|
|
||
|
|
module Node : sig
|
||
|
|
type t
|
||
|
|
val compare : t -> t -> int
|
||
|
|
end
|
||
|
|
|
||
|
|
module NodeMap : Map.S with type key = Node.t
|
||
|
|
module NodeSet : Set.S with type elt = Node.t
|
||
|
|
|
||
|
|
module Cfg : sig
|
||
|
|
type t
|
||
|
|
val pp : out_channel -> t -> unit
|
||
|
|
end
|
||
|
|
|
||
|
|
val convert : Types.p_exp -> Cfg.t
|