A New Normal-Form Theorem for Context-Free Phrase Structure Grammars
Journal of the ACM (JACM)
Programming Techniques: Regular expression search algorithm
Communications of the ACM
A history of Haskell: being lazy with class
Proceedings of the third ACM SIGPLAN conference on History of programming languages
Finite automata and their decision problems
IBM Journal of Research and Development
Handbook of Weighted Automata
From Glushkov WFAs to rational expressions
DLT'03 Proceedings of the 7th international conference on Developments in language theory
A unified construction of the glushkov, follow, and antimirov automata
MFCS'06 Proceedings of the 31st international conference on Mathematical Foundations of Computer Science
A functional program for regular expressions matching
DLT'11 Proceedings of the 15th international conference on Developments in language theory
Regular expression sub-matching using partial derivatives
Proceedings of the 14th symposium on Principles and practice of declarative programming
Verified decision procedures for MSO on words based on derivatives of regular expressions
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Two-Pass greedy regular expression parsing
CIAA'13 Proceedings of the 18th international conference on Implementation and Application of Automata
Hi-index | 0.00 |
Cody, Hazel, and Theo, two experienced Haskell programmers and an expert in automata theory, develop an elegant Haskell program for matching regular expressions: (i) the program is purely functional; (ii) it is overloaded over arbitrary semirings, which not only allows to solve the ordinary matching problem but also supports other applications like computing leftmost longest matchings or the number of matchings, all with a single algorithm; (iii) it is more powerful than other matchers, as it can be used for parsing every context-free language by taking advantage of laziness. The developed program is based on an old technique to turn regular expressions into finite automata which makes it efficient both in terms of worst-case time and space bounds and actual performance: despite its simplicity, the Haskell implementation can compete with a recently published professional C++ program for the same problem.