15-150: Principles of Functional Programming

Lecture 15: Regular Expression Matching with Combinators

Today we discussed the proof of correctness for our regular expression matcher. We break the proof into three parts: termination, soundness, and completeness. Please look at the lecture notes from last time for the full proof. We only do a small part of it in lecture.

We didn't get the chance to discuss rewriting our regular expression matcher using combinators. However, if that sounds interesting, then the topic is discussed in the lecture notes.

We could also apply what we learned about staging to regular expression matching. The regular expression pattern matching is in one stage, the character and continuation functions are in another.

For a review of staging see Lecture 11.

For the unstaged regular expression matcher see Lecture 14.

Sample Code

See Section 3 (on Kleene Algebra Homomorphisms) of these notes from last time.