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/valmari/Valmari/Minimize_with_custom_decomposition/argument-1-In/index.html

Parameter Minimize_with_custom_decomposition.In

include INPUT
include DFA
type states

The set of DFA nodes

type transitions

The set of DFA transitions

type label

The type of labels that annotate transitions

Get the label associated with a transition

Get the source state of the transition

Get the target state of the transition

val initials : (states Fix.Indexing.index -> unit) -> unit

Iterate on initial states

val finals : (states Fix.Indexing.index -> unit) -> unit

Iterate final states

val refinements : ((add:(states Fix.Indexing.index -> unit) -> unit) -> unit) -> unit

The minimization algorithms operate on a DFA plus an optional initial refinement (state that must be distinguished, because of some external properties not observable from the labelled transitions alone).

If no refinements are needed, the minimum implementation is just: let refinements ~refine:_ = ()

Otherwise, the refinements function should invoke the refine function for each set of equivalent states and call the iter for each equivalent state.

E.g if our automata has 5 states, and states 2 and 3 have tag A while states 4 and 5 have tag B, we will do:

let refinements ~refine = refine (fun ~iter -> iter 2; 3); refine (fun ~iter -> iter 4; 5)

val decomposition : ((add:(transitions Fix.Indexing.index -> unit) -> unit) -> unit) -> unit