For simple lexing/parsing it likely is overkill, that said for more complex things it can be nice. I have a lexer for Erlang written with Boost.Spirit on my Github. I found debugging no worse than the general Chutulu-horror that are C++ template errors, something you get used to, looking at the root of the spew is generally your best bet. Also they have built in debug nodes you can trivially add to your grammar that will spew every step of the lexing/parsing process so you can easily see where things are going off the rails if your grammar is wrong. Compile times are definitely increased in my experience, don't recall the binary bloat though it has been awhile since I played around with it, a good compiler should be able to fairly aggressively trim it down. Will it be as optimal as a hand written system (assuming you know what you are doing)? Unlikely, but it will be much quicker to get up and running if you know Boost.Spirit.