open Ast
open Sast
(*
module VarMap : Map.S with type key = string
*)
module Semantic :
    sig
        val type_to_expr: c_type -> expr
        val type_to_xexpr: c_type -> xexpr
        val get_type: xexpr -> c_type

        val check_expr: c_type VarMap.t -> expr -> xexpr * c_type VarMap.t
        val check_clip: c_type VarMap.t -> clip -> xclip * c_type VarMap.t

        val check_ast: program -> xprogram
    end
