package zelus

  1. Overview
  2. Docs
type name = string
type exp =
  1. | Oconst of immediate
  2. | Oconstr0 of Lident.t
  3. | Oconstr1 of Lident.t * exp list
  4. | Oglobal of Lident.t
  5. | Olocal of Zident.t
  6. | Ovar of is_mutable * Zident.t
  7. | Ostate of left_state_value
  8. | Oaccess of exp * exp
  9. | Oupdate of size * exp * exp * exp
  10. | Oslice of exp * size * size
  11. | Oconcat of exp * size * exp * size
  12. | Ovec of exp * size
  13. | Otuple of exp list
  14. | Oapp of exp * exp list
  15. | Orecord of (Lident.t * exp) list
  16. | Orecord_access of exp * Lident.t
  17. | Orecord_with of exp * (Lident.t * exp) list
  18. | Otypeconstraint of exp * type_expression
  19. | Oifthenelse of exp * exp * exp
  20. | Omethodcall of method_call
  21. | Oinst of inst
and is_mutable = bool
and inst =
  1. | Olet of pattern * exp * inst
  2. | Oletvar of Zident.t * is_mutable * Deftypes.typ * exp option * inst
  3. | Ofor of bool * Zident.t * exp * exp * inst
  4. | Owhile of exp * inst
  5. | Omatch of exp * inst match_handler list
  6. | Oif of exp * inst * inst option
  7. | Oassign of left_value * exp
  8. | Oassign_state of left_state_value * exp
  9. | Osequence of inst list
  10. | Oexp of exp
and is_shared = bool
and left_value =
  1. | Oleft_name of Zident.t
  2. | Oleft_record_access of left_value * Lident.t
  3. | Oleft_index of left_value * exp
and left_state_value =
  1. | Oself
  2. | Oleft_state_global of Lident.t
  3. | Oleft_instance_name of Zident.t
  4. | Oleft_state_name of Zident.t
  5. | Oleft_state_record_access of left_state_value * Lident.t
  6. | Oleft_state_index of left_state_value * exp
  7. | Oleft_state_primitive_access of left_state_value * primitive_access
and primitive_access =
  1. | Oder
  2. | Ocont
  3. | Ozero_out
  4. | Ozero_in
and immediate =
  1. | Oint of int
  2. | Oint32 of int
  3. | Obool of bool
  4. | Ofloat of float
  5. | Ochar of char
  6. | Ostring of string
  7. | Ovoid
  8. | Oany
and pattern =
  1. | Owildpat
  2. | Otuplepat of pattern list
  3. | Ovarpat of Zident.t * type_expression
  4. | Oconstpat of immediate
  5. | Oaliaspat of pattern * Zident.t
  6. | Oconstr0pat of Lident.t
  7. | Oconstr1pat of Lident.t * pattern list
  8. | Oorpat of pattern * pattern
  9. | Otypeconstraintpat of pattern * type_expression
  10. | Orecordpat of (Lident.t * pattern) list
and 'a match_handler = {
  1. w_pat : pattern;
  2. w_body : 'a;
}
and machine = {
  1. ma_kind : Deftypes.kind;
  2. ma_params : pattern list;
  3. ma_initialize : inst option;
  4. ma_memories : mentry list;
  5. ma_instances : ientry list;
  6. ma_methods : method_desc list;
}
and mentry = {
  1. m_name : Zident.t;
  2. m_value : exp option;
  3. m_typ : Deftypes.typ;
  4. m_kind : Deftypes.mkind option;
  5. m_size : exp path;
}
and ientry = {
  1. i_name : Zident.t;
  2. i_machine : exp;
  3. i_kind : Deftypes.kind;
  4. i_params : exp path;
  5. i_size : exp list;
}
and method_desc = {
  1. me_name : method_name;
  2. me_params : pattern list;
  3. me_body : inst;
  4. me_typ : Deftypes.typ;
}
and method_call = {
  1. met_machine : Lident.t option;
  2. met_name : method_name;
  3. met_instance : (Zident.t * exp path) option;
  4. met_args : exp list;
}
and method_name = name
and 'a path = 'a list
and implementation_list = implementation list
and implementation =
  1. | Oletvalue of name * inst
  2. | Oletfun of name * pattern list * inst
  3. | Oletmachine of name * machine
  4. | Oopen of string
  5. | Otypedecl of (string * string list * type_decl) list
and type_expression =
  1. | Otypevar of string
  2. | Otypefun of kind * Zident.t option * type_expression * type_expression
  3. | Otypetuple of type_expression list
  4. | Otypeconstr of Lident.t * type_expression list
  5. | Otypevec of type_expression * size
and size =
  1. | Sconst of int
  2. | Sname of Zident.t
  3. | Sglobal of Lident.t
  4. | Sop of size_op * size * size
and size_op =
  1. | Splus
  2. | Sminus
and kind =
  1. | Ofun
  2. | Onode
and type_decl =
  1. | Oabstract_type
  2. | Oabbrev of type_expression
  3. | Ovariant_type of constr_decl list
  4. | Orecord_type of (string * type_expression) list
and constr_decl =
  1. | Oconstr0decl of string
  2. | Oconstr1decl of string * type_expression list