Welcome back! This is my second post in a series on Automata. I decided to do another theory post first on context-free languages, and only afterwards start on a more implementation-heavy post about implementing this kind of theory in Rust for practically useful stuff. There is of course still code in this post as well :) I’ll start with a quick refresher, but for more details read the first post. Finite Automata refresher Last time, we looked at deterministic and non-deterministic finite a...