Go to the first, previous, next, last section, table of contents.


The Pxp_dfa module

module Graph : sig
  type graph
  type vertex

A directed graph whose edges are marked with strings (= element types) and with the constraint that for a given vertex and a given element type the edge must be unique.

  exception Edge_not_unique

  val create : unit -> graph

Creates an empty graph

  val new_vertex : graph -> vertex

Adds a new vertex to the graph, and returns the vertex

  val new_edge : vertex -> string -> vertex -> unit

new_edge v_from etype v_to: Adds a new edge from vertex v_from to vertex v_to, marked with etype. Raises Edge_not_unique if there is already an edge etype starting at v_from to a different vertex than v_to.

  val graph_of_vertex : vertex -> graph

Returns the graph the passed vertex is contained in.

  val union : graph -> graph -> unit

union g1 g2: Moves the vertexes and edged found in g2 to g1. After that, g2 is empty again.

  val outgoing_edges : vertex -> (string * vertex) list

Returns the list of outgoing edges starting in the passed vertex

  val follow_edge : vertex -> string -> vertex

Follows the edge starting in the passed vertex which is marked with the passed element type. Raises Not_found if there is no such edge.

  val ingoing_edges : vertex -> (vertex * string) list

Returns the list of ingoing edges ending in the passed vertex

end
module VertexSet : Set.S with
 type elt = Graph.vertex
type dfa_definition =
    { dfa_graph : Graph.graph;
      dfa_start : Graph.vertex;   (* Where the automaton starts *)
      dfa_stops : VertexSet.t;    (* Where the automaton may stop *)
      dfa_null  : bool;           (* Whether dfa_start member of dfa_stops *)
    }

val dfa_of_regexp_content_model : Pxp_types.regexp_spec -> dfa_definition

Computes the DFA or raises Not_found if it does not exist


Go to the first, previous, next, last section, table of contents.