Module Fixpoint.Regex

This implements a regular expression suitable for forward dataflow analysis (concat has been replaced by append), where the regular expression is represented using a term graph.

module type Letter = sig ... end
module type S = sig ... end

Generic signature for a regex interface.

type 'l tagged_regex = private
  1. | Empty
  2. | Epsilon
  3. | Join of int * 'l tagged_regex * 'l tagged_regex
  4. | Append of int * 'l tagged_regex * 'l
  5. | AppendStar of int * 'l tagged_regex * 'l tagged_regex

Tagged regular expressions. The tag is used for cons-hashing and share as many data structures as possibles. Tags should not be used outside of the implementation.

module Make (L : Letter) : S with type letter = L.t and type t = L.t tagged_regex