我想在语义动作中使用工厂功能,但我无法使用凤凰或融合找到合适的配方。
我的精神气质规则看起来像:
object = type_identifier >> arg_list;
我希望Fusion能够执行以下操作:
object = Factory(type_identifier)(arg_list)
而非使用BOOST_FUSION_ADAPT_STRUCT
创建包含type_identifier
和arg_list
的结构。
这样的事情怎么办?感谢。
答案 0 :(得分:2)
是。原则上有三种方法:
qi::int_ [ qi::_val = boost::phoenix::construct<type_identifier>(qi::_1) ]
)使用属性转换特征[请参阅文档中的Customization of Spirit's Attribute Handling)。在这种情况下,你只需要
qi::rule<It, Mytype()> r = qi::_int;
并且相应的特征(assign_to_attribute_from_value<MyType, imt>
)处理分配