/monoid-parser

Parsing regex with monoids

Primary LanguageHaskell

Implementation of algorithms from the paper

Monoid machines: a O(log n) parser for regular languages
Armando B. Matos
2006

Supplies parse functions which convert the input DFA into its 
corresponding transitional monoid representation and parses the input string
according to the algorithms outlined in the paper.

p prefixes indicate paralell methods

The sequential algorithm runs in linear time in the input word size and the 
parallel algorithm approaches logarithmic time as the number of processes increases.

See the file for a write up including an example and pertinent definitions from the paper.

Use:
    Use either the parse or pparse functions to parse an input word by converting the input DFA to its 
    transitional monoid and running the algorithm.

    Can create DFA accept function on input, or use supplied createAccept' finals start to create one for you.

Enjoy!

*Idiomatic Haskell edits and parallel implementation by Samuel Schlesinger.

----------------------------------------------------------------------------
An OCaml implementation of sequential algorithm has been added as well.