gpt4 book ai didi

c++ - 精神可以使用工厂而不是 ADAPT_STRUCT 来处理规则吗?

转载 作者:行者123 更新时间:2023-11-30 04:03:00 25 4
gpt4 key购买 nike

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

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

object = type_identifier >> arg_list;

我想让 Fusion 执行类似的操作:

object = Factory(type_identifier)(arg_list)

而不是使用 BOOST_FUSION_ADAPT_STRUCT 创建包含 type_identifierarg_list 的结构。

这样的事情怎么办?谢谢。

最佳答案

是的。原则上有以下三种方法:

  1. 依赖公共(public)构造函数
  2. 使用语义 Action (例如 qi::int_ [ qi::_val = boost::phoenix::construct<type_identifier>(qi::_1) ])
  3. 使用属性转换特征 [参见 Customization of Spirit's Attribute Handling在文档中)。在这种情况下,您只需

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

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

关于c++ - 精神可以使用工厂而不是 ADAPT_STRUCT 来处理规则吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24770387/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com