Another good resource is this talk by Saša Jurić on Parsing from First Principles (https://www.youtube.com/watch?v=xNzoerDljjo) where he talks about parser combinators and live-codes a simple Elixir PC library.
That inspired me to build my own alternative to NimbleParsec . Partly because my use case makes error handling very important and I couldn't get a grip on how to do that with NP and partly as a decent problem to get to grips with Elixir. I'm currently figuring out lookahead.
This is a great area to play in that has a lot of useful applications.