可以使用Factory而不是ADAPT_STRUCT来处理规则

Can spirit use a Factory instead of ADAPT_STRUCT to process rule?

本文关键字:STRUCT 处理 规则 ADAPT Factory 可以使      更新时间:2023-10-16

我想在语义操作中使用工厂函数,但我无法使用phoenix或fusion找到正确的配方。

我的精神气规则看起来像:

object = type_identifier >> arg_list;

,我想让Fusion表演一些东西:

object = Factory(type_identifier)(arg_list)

代替使用BOOST_FUSION_ADAPT_STRUCT来创建包含type_identifierarg_list的结构。

这样的事情怎么能做到呢?谢谢。

是。原则上有三种方法:

  1. 依赖于公共构造器
  2. 使用语义动作(例如qi::int_ [ qi::_val = boost::phoenix::construct<type_identifier>(qi::_1) ])
  3. 使用属性转换特性(参见文档中的自定义Spirit的属性处理)。在本例中,您只需输入

     qi::rule<It, Mytype()> r = qi::_int;
    

    和相应的性状(assign_to_attribute_from_value<MyType, imt>)处理分配