After asking this question, I'm now sold on trying to use a parser generator, where before I was going to write things manually.
However, I can't seem to find any such parser that generates C++ code, nor can I find a parser that correctly handles Unicode. (note that my input is in UCS-2 -- I don't care about supporting bits outside of the Basic Multilingual Plane if that makes building the parser more difficult)
There are some parsers which can generate C, but such parsers all seem to throw exception safety out the window, which would prevent me from using C++ inside any semantic actions.
Does a parser generator exist which meets these two tenets, or am I stuck doing everything by hand?
EDIT: Oh, and my project is BSL licensed, so there can't be many restrictions on use of the output of the parser generator itself.