【问题标题】:Boost Spirit: force an attribute on a no-attribute parserBoost Spirit:在无属性解析器上强制属性
【发布时间】:2016-04-21 15:35:26
【问题描述】:

我目前有:

start_ %= listrule_ | primrule_ ;

start_ 的属性是 boost::variant,T>,primrule_ 的属性是 T,listrule_ 的属性是 std::vector。

我相信这是因为精神的“属性传播规则”。

我想添加第三种可能性:

start_ %= listrule_ | primrule_ | '*';

我希望“*”也有 std::vector,我会找到一种方法来用枚举 T 的所有可能值填充该向量。

赋予'*'的语法是什么?

这是精神 2,使用 c++11,boost 1.58

【问题讨论】:

    标签: boost boost-spirit


    【解决方案1】:

    使用qi::attr 指令

    enum MyEnum { A, B, C, D, E };
    
    start_ %= listrule_ 
            | primrule_ 
            | ('*' >> qi::attr(std::vector<MyEnum> { A, B, C, D, E })
            ;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多