Which library are you using? I'm working on a parser combinator library myself and ran into the same problem. Once a parser gets to a certain complexity, the compile time exponentially increases. I can't tell from your gist alone if it's the exact same problem, but I'm guessing it is.
I actually just posted a topic about it a couple days ago, and it appears to be known issue.
I don't know if the library you're using has anything built-in to handle it, but the way I'm currently getting around it in my own library is by splitting up large parsers into chunks and boxing each chunk into a trait object. It's not a great solution because it adds unnecessary dynamic dispatch, but so far it's the only way I've found to reduce the compile time without drastically changing the code.
I'm also writing a simple language, and using this method I got the compile time down from many minutes to a few seconds.