package mopsa

  1. Overview
  2. Docs
On This Page
  1. Graph conversion
Legend:
Page
Library
Module
Module type
Parameter
Class
Class type
Source

Module Cfg.Frontend

Converts a Universal program AST into a CFG.

val name : string
val debug : ('a, Format.formatter, unit, unit) format4 -> 'a
val dump_dot : bool

dump CFG in dot file (for debugging)

Graph conversion

val extract_calls_expr : MopsaLib.expr -> (MopsaLib.var * MopsaLib.range) list * MopsaLib.stmt list * MopsaLib.expr
val extract_calls_stmt : MopsaLib.stmt -> (MopsaLib.var * MopsaLib.range) list * MopsaLib.stmt list * MopsaLib.stmt
val mk_add_tmps : (MopsaLib.var * MopsaLib.range) list -> MopsaLib.stmt list
val mk_remove_tmps : (MopsaLib.var * MopsaLib.range) list -> MopsaLib.stmt list
type ctx = {
  1. ctx_cfg : Ast.graph;
  2. ctx_return : Ast.node;
  3. ctx_break : Ast.node list;
  4. ctx_continue : Ast.node list;
  5. ctx_return_var : MopsaLib.var option;
}
val add_node : ctx -> Ast.node_id -> Ast.node
val add_edge : ctx -> Mopsa_utils.Core.Location.range -> (Ast.port * Ast.node) list -> (Ast.port * Ast.node) list -> MopsaLib.stmt list -> unit
val add_block_after : ctx -> Mopsa_utils.Core.Location.range -> Ast.node -> MopsaLib.stmt list -> Ast.node
val add_block_before : ctx -> Mopsa_utils.Core.Location.range -> Ast.node -> MopsaLib.stmt list -> Ast.node
val add_stmt : ctx -> Ast.node -> Ast.node -> MopsaLib.stmt -> unit
val convert_stmt : ?name:string -> ?ret:MopsaLib.var -> MopsaLib.stmt -> MopsaLib.stmt

Creates a new graph and fill-in with the given statement.

val convert_fundec : Universal.Lang.Ast.fundec -> unit

Converts a function AST to a CFG.

val convert_program : MopsaLib.program -> MopsaLib.program

Converts a full universal program.

val parse_program : string list -> MopsaLib.program

From source to CFG.

OCaml

Innovation. Community. Security.