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:

2 comments:

This is really fantastic stuff! I'm also very, very excited about leveraging core.logic for parsing. One hurdle we have to surmount is very large inputs - Prolog has some tricks that we haven't implemented yet. Looking forward to watching this series evolve and any feedback you may have about core.logic.

Cool to hear that. I haven't been looking at complexity yet, just trying to get used to this paradigm and looking for what it can offer over Prolog. Just being able to prototype and experiment this fast is great already. But absolutely, it would be pretty neat if this actually scaled up.