Roadmap to the files in this directory: Fgrep.hs uses precompiled delta table FgrepIO.hs (ghc-0.19 -fglasgow-exts) IO monad and precompiled delta table FgrepIOWOTable.hs (ghc-0.19 -fglasgow-exts) IO monad without delta table FgrepWOTable.hs without delta table Grep.lhs uses combinator parser generated at runtime NFA.lhs generate non-deterministic finite automaton with epsilon transitions from input and interpret it (choice of using epsilon compression) NFA-multi.lhs non-deterministic finite automaton without epsilon transitions (see comments in NFA.lhs) MakeDeltaIO.lhs writes the text for module Delta to standard output necessary for Fgrep and FgrepIO. Compile and utter: ./MakeDeltaIO > Delta.hs You will have to rename the generated module to DeltaG in order to compile FgrepIO! Parsers.hs a simple library of combinator parsers StringMatch.hs a module containing a string match function combinator parser for regular expressions which generates combinator parsers for the language of the input expression