summaryrefslogblamecommitdiff
path: root/interpret/interface.ml
blob: 7b843965c90c71f38516c7c99c732897bb99721d (plain) (tree)







































                                                                    
open Ast


module type INTERPRET = sig


  exception Bad_datatype
  type value

  val int_value : int -> value
  val bool_value : bool -> value
  val real_value : float -> value

  val as_int : value -> int
  val as_bool : value -> bool
  val as_real : value -> float

  val str_repr_of_val : value -> string

  type state

  val print_state : Format.formatter -> state -> unit

  type io = (id * value) list

  (*
    Construct initial state for a program.
    The id is the root node of the program evaluation.
  *)
  val init_state : prog -> id -> state

  (*
    Run a step of the program (not necessary to specify the program,
      it should be encoded in the state).
    State -> Inputs -> Next state, Outputs
  *)
  val step : state -> io -> (state * io)

end