On Tue, Oct 22, 2019 at 3:13 PM Robert Ramey via Boost < boost@lists.boost.org> wrote:
Now this particular case - providing a provable correct parser for a simple language - IS a toy problem.
It does not follow that the only valid reason to do it is to play games.
Implementing a parser derived from a formal grammar CAN be done quite easily with boost spirit - if only for the the testing portion of the project. (Of course if spirit were used in the main product, much less testing would be required!).
both Vinnies method and your method create huge amount of extra work for various persons involved in the process. I'm not over thinking it, you're not thinking big enough. It's not just use cranking up some code it's sucking in all the other participants to do our work for us.
I get your point that it's easier to reason about correctness if you can trust the individual components. This reflects a "white box testing" mentality. But if Spirit is bug-free, logically it does not follow that a library that uses it has better chance of being bug-free, compared to a library that does not. Either way, you ought to test, ignoring any and all knowledge of its internals. Consider also even if using tested components can get you to bug-free implementation quicker (which isn't proven in this case), on balance it is better if you don't depend on another library. I'd be surprised if you think otherwise.