package lrgrep

  1. Overview
  2. Docs
On This Page
  1. Decomposing sets
Analyse the stack of a Menhir-generated LR parser using regular expressions

Install

dune-project
 Dependency

Authors

Maintainers

Sources

lrgrep-0.3.tbz
sha256=84a1874d0c063da371e19c84243aac7c40bfcb9aaf204251e0eb0d1f077f2cde
sha512=5a16ff42a196fd741bc64a1bdd45b4dca0098633e73aa665829a44625ec15382891c3643fa210dbe3704336eab095d4024e093e37ae5313810f6754de6119d55

doc/utils/Utils/SetSig/module-type-S1/index.html

Module type SetSig.S1Source

type 'a element
type 'a t
val empty : 'a t
val is_empty : 'a t -> bool
val is_not_empty : 'a t -> bool
val singleton : 'a element -> 'a t
val is_singleton : 'a t -> bool
val cardinal : 'a t -> int
val choose : 'a t -> 'a element
val minimum : 'a t -> 'a element option
val maximum : 'a t -> 'a element option
val mem : 'a element -> 'a t -> bool
val add : 'a element -> 'a t -> 'a t
val remove : 'a element -> 'a t -> 'a t
val union : 'a t -> 'a t -> 'a t
val inter : 'a t -> 'a t -> 'a t
val disjoint : 'a t -> 'a t -> bool
val iter : ('a element -> unit) -> 'a t -> unit
val rev_iter : ('a element -> unit) -> 'a t -> unit
val fold : ('a element -> 'b -> 'b) -> 'a t -> 'b -> 'b
val fold_right : ('a -> 'b element -> 'a) -> 'a -> 'b t -> 'a
val map : ('a element -> 'b element) -> 'a t -> 'b t
val exists : ('a element -> bool) -> 'a t -> bool
val elements : 'a t -> 'a element list
val compare : 'a t -> 'a t -> int
val equal : 'a t -> 'a t -> bool
val subset : 'a t -> 'a t -> bool
val quick_subset : 'a t -> 'a t -> bool
val diff : 'a t -> 'a t -> 'a t

Decomposing sets

These functions implements the Refine.DECOMPOSABLE interface. We cannot reference it here as Refine is implemented using bitsets, that would create a reference cycle.

val compare_minimum : 'a t -> 'a t -> int
val extract_unique_prefix : 'a t -> 'a t -> 'a t * 'a t
val extract_shared_prefix : 'a t -> 'a t -> 'a t * ('a t * 'a t)
val sorted_union : 'a t list -> 'a t
val of_list : 'a element list -> 'a t
val init_interval : 'a element -> 'a element -> 'a t
val init_subset : 'a element -> 'a element -> ('a element -> bool) -> 'a t
val filter : ('a element -> bool) -> 'a t -> 'a t
val filter_map : ('a element -> 'b element option) -> 'a t -> 'b t
val split : 'a element -> 'a t -> 'a t * bool * 'a t
val find : ('a element -> bool) -> 'a t -> 'a element
val find_map : ('a element -> 'b option) -> 'a t -> 'b option
val to_seq : 'a t -> 'a element Stdlib.Seq.t
val bind : 'a t -> ('a element -> 'b t) -> 'b t
val split_by_run : ('a element -> 'b element) -> 'a t -> ('b element * 'a t) list

Split a set into consecutive “runs” of elements that share the same class.

Parameters

  • cls : 'a element → 'b element that assigns a class to each element.
  • xs : 'a t – the input set to be split.

Returns A list of pairs. Each pair is made of a class (the result of cls for the run) and the subset of the original elements that belong to that run (preserving the original order).

val fused_inter_union : 'a t -> 'a t -> acc:'a t -> 'a t
val rev_map_elements : 'a t -> ('a element -> 'b) -> 'b list