This is a continuation of the post Finite State Machines in Clojure core.logic.
This current plan for this series is to follow the book Algorithms for Computational Linguistics using Clojure core.logic instead of Prolog.
Jumps, wildcard transitions and parsing are natural and useful ways to extend and leverage finite state machines for text analysis. This was an opportunity to introduce extensions of fact databases and non-deterministic matching. Here's the code: