Regular Expression Matching and Operational Semantics

Asiri Rathnayake
(University of Birmingham, United Kingdom)
Hayo Thielecke
(University of Birmingham, United Kingdom)

Many programming languages and tools, ranging from grep to the Java String library, contain regular expression matchers. Rather than first translating a regular expression into a deterministic finite automaton, such implementations typically match the regular expression on the fly. Thus they can be seen as virtual machines interpreting the regular expression much as if it were a program with some non-deterministic constructs such as the Kleene star. We formalize this implementation technique for regular expression matching using operational semantics. Specifically, we derive a series of abstract machines, moving from the abstract definition of matching to increasingly realistic machines. First a continuation is added to the operational semantics to describe what remains to be matched after the current expression. Next, we represent the expression as a data structure using pointers, which enables redundant searches to be eliminated via testing for pointer equality. From there, we arrive both at Thompson's lockstep construction and a machine that performs some operations in parallel, suitable for implementation on a large number of cores, such as a GPU. We formalize the parallel machine using process algebra and report some preliminary experiments with an implementation on a graphics processor using CUDA.

In M.A. Reniers and P. Sobocinski: Proceedings Eight Workshop on Structural Operational Semantics 2011 (SOS 2011), Aachen, Germany, 5th September 2011, Electronic Proceedings in Theoretical Computer Science 62, pp. 31–45.
Published: 13th August 2011.

ArXived at: https://dx.doi.org/10.4204/EPTCS.62.3 bibtex PDF
References in reconstructed bibtex, XML and HTML format (approximated).
Comments and questions to: eptcs@eptcs.org
For website issues: webmaster@eptcs.org