The SML of NJ Library
The `REGEXP_ENGINE` signature

The `REGEXP_ENGINE` signature …​

## Synopsis

    signature REGEXP_ENGINE

    structure BackTrackEngine : REGEXP_ENGINE
    structure DfaEngine : REGEXP_ENGINE
    structure ThompsonEngine : REGEXP_ENGINE

## Interface

    type regexp

    type 'a match = {pos : 'a, len : int} MatchTree.match_tree

    val compile : RegExpSyntax.syntax -> regexp

    val find : regexp -> (char,'a) StringCvt.reader -> ('a match, 'a) StringCvt.reader

    val prefix : regexp ->(char,'a) StringCvt.reader -> ('a match, 'a) StringCvt.reader

    val match : (RegExpSyntax.syntax * ('a match -> 'b)) list
    	      -> (char,'a) StringCvt.reader -> ('b, 'a) StringCvt.reader

## Description

`type regexp`

  something (* the type of a compiled regular expression *)

      (* a match specifies the position (as a stream) and the length of the match *)

`type 'a match = {pos : 'a, len : int} MatchTree.match_tree`

  something

`val compile : RegExpSyntax.syntax -> regexp`

  something (* compile a regular expression from the abstract syntax *)

`val find : regexp -> (char,'a) StringCvt.reader -> ('a match, 'a) StringCvt.reader`

  something (* scan the stream for the first occurence of the regular expression. The call *

  - find re getc strm *

  - returns NONE if the end of stream is reached without a match. Otherwise it

  - returns SOME(match, strm'), where match is the match-tree for the match and

  - strm' is the stream following the match. *)

`val prefix : regexp ->(char,'a) StringCvt.reader -> ('a match, 'a) StringCvt.reader`

  something (* attempt to match the stream at the current position with the

  - regular expression *)

`val match : (RegExpSyntax.syntax * ('a match -> 'b)) list -> (char,'a) StringCvt.reader -> ('b, 'a) StringCvt.reader`

  something (* attempt to the match the stream at the current position with one of

  - the abstract syntax representations of regular expressions and trigger

  - the corresponding action *)

## Instances

`structure BackTrackEngine`

  A backtracking interpreter for the regular-expression syntax. This implementation requires no extra compilation time, but backtracking can result in slow searches for some regular expressions.

`structure DfaEngine`

  This implementation compiles the regular expression to a nondeterministic finite-state machine and then coverts that to a deterministic machine. The resulting machine is fast, but can be exponential in size for some regular expressions.

`structure ThompsonEngine`

  An implementation of Ken Thompson’s famous Regular Expression Search Algorithm.

## See Also

The RegExp Library

SML/NJ Version 110.99.3 (August 1, 2023)
Last updated 2023-07-31 17:59:01 UTC