package libsail

  1. Overview
  2. Docs
type ctyp =
  1. | CT_lint
  2. | CT_fint of int
  3. | CT_constant of Nat_big_num.num
  4. | CT_lbits
  5. | CT_sbits of int
  6. | CT_fbits of int
  7. | CT_unit
  8. | CT_bool
  9. | CT_bit
  10. | CT_string
  11. | CT_real
  12. | CT_float of int
  13. | CT_rounding_mode
  14. | CT_tup of ctyp list
  15. | CT_enum of Ast.id * Ast.id list
  16. | CT_struct of Ast.id * (Ast.id * ctyp) list
  17. | CT_variant of Ast.id * (Ast.id * ctyp) list
  18. | CT_fvector of int * ctyp
  19. | CT_vector of ctyp
  20. | CT_list of ctyp
  21. | CT_ref of ctyp
  22. | CT_poly of Ast.kid
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. | List_is_empty
  7. | Eq
  8. | Neq
  9. | Ilt
  10. | Ilteq
  11. | Igt
  12. | Igteq
  13. | Iadd
  14. | Isub
  15. | Unsigned of int
  16. | Signed of int
  17. | Bvnot
  18. | Bvor
  19. | Bvand
  20. | Bvxor
  21. | Bvadd
  22. | Bvsub
  23. | Bvaccess
  24. | Concat
  25. | Zero_extend of int
  26. | Sign_extend of int
  27. | Slice of int
  28. | Sslice of int
  29. | Set_slice
  30. | Replicate of int
type cval =
  1. | V_id of name * ctyp
  2. | V_lit of Value2.vl * ctyp
  3. | V_tuple of cval list * ctyp
  4. | V_struct of (Ast.id * cval) list * ctyp
  5. | V_ctor_kind of cval * Ast.id * ctyp list * ctyp
  6. | V_ctor_unwrap of cval * Ast.id * ctyp list * ctyp
  7. | V_tuple_member of cval * int * int
  8. | V_call of op * cval list
  9. | V_field of cval * Ast.id
type clexp =
  1. | CL_id of name * ctyp
  2. | CL_rmw of name * name * ctyp
  3. | CL_field of clexp * Ast.id
  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
  3. | CTD_variant of Ast.id * (Ast.id * 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_exit of string
  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_register 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_val 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
  8. | CDEF_pragma of string * string