> type_sp-6ren">
gpt4 book ai didi

boost-spirit - 增强 qi::rule 上的精神语义 Action

转载 作者:行者123 更新时间:2023-12-03 01:16:43 25 4
gpt4 key购买 nike

我一直在阅读语义操作,我有一个如下所示的规则:

  property_rule %=
identifier_rule % ','
>> lit(L":")
>> type_specification_rule
>> -(lit(L":=") >> +(alnum - ';'))
>> lit(L";");

property_rule 定义为

qi::rule<Iterator, property(), space_type> property_rule;

现在,我也想支持运算符 i 所以我想要的是将规则更改为类似的内容

...
>> -(( lit(L":=") || lit(L"≡")[SEMANTIC_ACTION_HERE]) >> +(alnum - ';'))
...

在语义操作中,我想更改正在解析的property,特别是将其字段is_constant设置为true。该属性适用于 Fusion。我该怎么做?

最佳答案

我会一如既往地避免语义操作(Boost Spirit: "Semantic actions are evil"?)

我只需在替代方案的两个分支上综合 is_constant 的值即可:

>> -(( lit(L":=") || lit(L"≡")[SEMANTIC_ACTION_HERE]) >> +(alnum - ';'))

会变成:

>> -(
(L":=" >> attr(false) | L"≡" >> ::attr(true)) >> +(alnum - ';')
)

注释:

  1. 暗示了点亮
  2. 您可能不需要||解析器运算符
  3. 这假设 is_constant 字段在融合序列中进行了调整

关于boost-spirit - 增强 qi::rule 上的精神语义 Action ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43958088/

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