package lrgrep

  1. Overview
  2. Docs
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/fix/Fix/DataFlow/index.html

Module Fix.DataFlowSource

This module performs a forward data flow analysis over a (possibly cyclic) directed graph. Like Fix.Fix, it computes the least function of type variable -> property that satisfies a fixed point equation. It is less widely applicable than Fix.Fix, but, when it is applicable, it can be both easier to use and more efficient. It does not perform dynamic dependency discovery. The submodule Fix.DataFlow.ForCustomMaps is particularly tuned for performance.

Sourcemodule Run (M : sig ... end) (P : sig ... end) (G : sig ... end) : sig ... end

Run requires a type variable that is equipped with an implementation of imperative maps, a type property that is equipped with leq and join functions, and a data flow graph whose edges describe the propagation of properties. It performs a forward data flow analysis and returns its result.

Sourcemodule ForOrderedType (T : sig ... end) (P : sig ... end) (G : sig ... end) : sig ... end

ForOrderedType is a special case of Run where it suffices to pass an ordered type T as an argument. A reference to a persistent map is used to hold the memoization table.

Sourcemodule ForHashedType (T : sig ... end) (P : sig ... end) (G : sig ... end) : sig ... end

ForHashedType is a special case of Run where it suffices to pass a hashed type T as an argument. A hash table is used to hold the memoization table.

Sourcemodule ForType (T : sig ... end) (P : sig ... end) (G : sig ... end) : sig ... end

ForType is a special case of Run where it suffices to pass an arbitrary type T as an argument. A hash table is used to hold the memoization table. OCaml's built-in generic equality and hash functions are used.

Sourcemodule ForIntSegment (K : sig ... end) (P : sig ... end) (G : sig ... end) : sig ... end

ForIntSegment is a special case of Run where the type of variables is the integer segment [0..n). An array is used to hold the table.

Sourcemodule ForCustomMaps (P : sig ... end) (G : sig ... end) (V : sig ... end) (B : sig ... end) : sig ... end

ForCustomMaps is a forward data flow analysis that is tuned for greater performance. It internally relies on CompactQueue, instead of Queue. Furthermore, instead of relying on a full-fledged implementation of maps as described by MINIMAL_IMPERATIVE_MAPS, it expects the user to create and initialize two maps V and B that satisfy the signature ARRAY. This typically allows the user to choose an efficient, specialized data representation.