package sail

  1. Overview
  2. Docs
type name =
  1. | Name of Ast.id * int
  2. | Global of Ast.id * int
  3. | Have_exception of int
  4. | Current_exception of int
  5. | Throw_location of int
  6. | Return of int
type op =
  1. | Bnot
  2. | Bor
  3. | Band
  4. | List_hd
  5. | List_tl
  6. | Eq
  7. | Neq
  8. | Ilt
  9. | Ilteq
  10. | Igt
  11. | Igteq
  12. | Iadd
  13. | Isub
  14. | Unsigned of int
  15. | Signed of int
  16. | Bvnot
  17. | Bvor
  18. | Bvand
  19. | Bvxor
  20. | Bvadd
  21. | Bvsub
  22. | Bvaccess
  23. | Concat
  24. | Zero_extend of int
  25. | Sign_extend of int
  26. | Slice of int
  27. | Sslice of int
  28. | Set_slice
  29. | Replicate of int
type ctyp =
  1. | CT_lint
  2. | CT_fint of int
  3. | CT_constant of Nat_big_num.num
  4. | CT_lbits of bool
  5. | CT_sbits of int * bool
  6. | CT_fbits of int * bool
  7. | CT_unit
  8. | CT_bool
  9. | CT_bit
  10. | CT_string
  11. | CT_real
  12. | CT_tup of ctyp list
  13. | CT_enum of Ast.id * Ast.id list
  14. | CT_struct of Ast.id * ((Ast.id * ctyp list) * ctyp) list
  15. | CT_variant of Ast.id * ((Ast.id * ctyp list) * ctyp) list
  16. | CT_fvector of int * bool * ctyp
  17. | CT_vector of bool * ctyp
  18. | CT_list of ctyp
  19. | CT_ref of ctyp
  20. | CT_poly
type cval =
  1. | V_id of name * ctyp
  2. | V_lit of Value2.vl * ctyp
  3. | V_struct of ((Ast.id * ctyp list) * cval) list * ctyp
  4. | V_ctor_kind of cval * Ast.id * ctyp list * ctyp
  5. | V_ctor_unwrap of Ast.id * cval * ctyp list * ctyp
  6. | V_tuple_member of cval * int * int
  7. | V_call of op * cval list
  8. | V_field of cval * Ast.id * ctyp list
  9. | V_poly of cval * ctyp
type clexp =
  1. | CL_id of name * ctyp
  2. | CL_rmw of name * name * ctyp
  3. | CL_field of clexp * Ast.id * ctyp list
  4. | CL_addr of clexp
  5. | CL_tuple of clexp * int
  6. | CL_void
type iannot = int * Parse_ast.l
type ctype_def =
  1. | CTD_enum of Ast.id * Ast.id list
  2. | CTD_struct of Ast.id * ((Ast.id * ctyp list) * ctyp) list
  3. | CTD_variant of Ast.id * ((Ast.id * ctyp list) * ctyp) list
type instr_aux =
  1. | I_decl of ctyp * name
  2. | I_init of ctyp * name * cval
  3. | I_jump of cval * string
  4. | I_goto of string
  5. | I_label of string
  6. | I_funcall of clexp * bool * Ast.id * ctyp list * cval list
  7. | I_copy of clexp * cval
  8. | I_clear of ctyp * name
  9. | I_undefined of ctyp
  10. | I_match_failure
  11. | I_end of name
  12. | I_if of cval * instr list * instr list * ctyp
  13. | I_block of instr list
  14. | I_try_block of instr list
  15. | I_throw of cval
  16. | I_comment of string
  17. | I_raw of string
  18. | I_return of cval
  19. | I_reset of ctyp * name
  20. | I_reinit of ctyp * name * cval
and instr =
  1. | I_aux of instr_aux * iannot
type cdef =
  1. | CDEF_reg_dec of Ast.id * ctyp * instr list
  2. | CDEF_type of ctype_def
  3. | CDEF_let of int * (Ast.id * ctyp) list * instr list
  4. | CDEF_spec of Ast.id * string option * ctyp list * ctyp
  5. | CDEF_fundef of Ast.id * Ast.id option * Ast.id list * instr list
  6. | CDEF_startup of Ast.id * instr list
  7. | CDEF_finish of Ast.id * instr list