Module Ast.TypSource

Types

This modules allows extending Mopsa with new types. This is done by extending the type typ with new variants. For example

  type typ += T_int

extends Mopsa types with a new integer type. Registration is performed with

  let () = register_typ {
      compare = (fun next -> next);
      print = (fun next -> function
          | T_int -> Format.pp_print_string fmt "int"
          | t    -> next fmt t
        );
    }

Note that is this simple example where the type doesn't have an inner structure no comparison function is required as Stdlib.compare is sufficient to provide a total order.

Sourcetype typ = ..

Extensible types

Sourceval compare_typ : typ -> typ -> int

Compare two types

Sourceval pp_typ : Stdlib.Format.formatter -> typ -> unit

Pretty-print a type

Registration

Sourceval register_typ : typ Mopsa_utils.TypeExt.info -> unit

Register a new type

Sourceval register_typ_compare : typ Mopsa_utils.TypeExt.compare -> unit

Register a new type comparison

Sourceval register_typ_pp : typ Mopsa_utils.TypeExt.print -> unit

Register a new type pretty-printer

Common types

Sourcetype typ +=
  1. | T_any
    (*

    Generic unknown type

    *)
  2. | T_addr
    (*

    Heap addresses type

    *)
  3. | T_bool
    (*

    Boolean type

    *)