As an update from me, I'm giving Boost.Spirit a shot.
It's super cool! This is my first time using a dedicated domain-specific embedded language in C++ and so far, the experience has been a little alien but overall, it's been pleasant. Spirit offers a lot of power for parsing things in C++ and I'm glad I took the time to learn it.