What are the disadvantages of the Spirit parser-generator framework from boost.org?

后端 未结 5 1954
情歌与酒
情歌与酒 2021-01-30 10:48

In several questions I\'ve seen recommendations for the Spirit parser-generator framework from boost.org, but then in the comments there is grumbling from people using Spirit wh

5条回答
  •  太阳男子
    2021-01-30 11:24

    For me, the biggest problem is that expressions in Spirit, as seen by compiler or debugger, are rather long (I copied below a part of one expression in Spirit Classic). These expressions scare me. When I work on a program that uses Spirit, I'm afraid to use valgrind or to print backtrace in gdb.

    boost::spirit::classic::parser_result, boost::spirit::classic::ref_actor >, boost::spirit::classic::clear_action> >, boost::spirit::classic::ref_actor >, boost::spirit::classic::clear_action> >, boost::spirit::classic::sequence, boost::spirit::classic::chlit >, boost::spirit::classic::positive >, boost::spirit::classic::chlit > > > >, boost::spirit::classic::ref_value_actor >, boost::spirit::classic::push_back_action> >, boost::spirit::classic::action, boost::spirit::classic::match_policy, boost::spirit::classic::action_policy> >, boost::spirit::classic::nil_t, boost::spirit::classic::nil_t>, boost::spirit::classic::ref_const_ref_actor >, std::string, boost::spirit::classic::push_back_action> > >, boost::spirit::classic::contiguous, boost::spirit::classic::action, boost::spirit::classic::ref_value_actor >, boost::spirit::classic::push_back_action> > > > >, boost::spirit::classic::kleene_star, boost::spirit::classic::alternative, boost::spirit::classic::chlit >, boost::spirit::classic::positive >, boost::spirit::classic::chlit > > > >, boost::spirit::classic::ref_value_actor >, boost::spirit::classic::push_back_action> >, boost::spirit::classic::action, boost::spirit::classic::match_policy, boost::spirit::classic::action_policy> >, boost::spirit::classic::nil_t, boost::spirit::classic::nil_t>, boost::spirit::classic::ref_const_ref_actor >, std::string, boost::spirit::classic::push_back_action> > >, boost::spirit::classic::contiguous, boost::spirit::classic::action, boost::spirit::classic::ref_value_actor >, boost::spirit::classic::push_back_action> > > > > > > > >, void ()(char const, char const*)>, boost::spirit::classic::scanner, boost::spirit::classic::match_policy, boost::spirit::classic::action_policy> > >::type boost::spirit::classic::action

提交回复
热议问题