gpt4 book ai didi

c++ - Boost Spirit X3局部变量和获取综合属性

转载 作者:行者123 更新时间:2023-11-30 03:44:51 27 4
gpt4 key购买 nike

我正在尝试将解析器从 Spirit V2 移植到 X3。总体体验还是不错的,但是有两个问题。

第一个是局部变量不见了,这对我来说很不方便,因为我经常使用它们来跟踪事物。因此,我要求做一些可以在 V2 中完成本地人工作的东西。

另一个最好用这个虚拟示例来说明:我想将逗号分隔的整数列表解析为 vector<int>。 ,但它应该只在列表总和为零时解析:

auto const int_list = rule<class int_list, vector<int>>("int_list")
= int_ % ','
>> eps(/* How to extract the attribute? */);

我在这里进行最后一次检查,因为我不知道如何获得 vector<int>规则正在综合。

最佳答案

我也有同样的发现!

“locals”的技巧是使用 with<>指令。

因为你没有给出使用场景,所以我认为不值得举出例子,尽管你可以搜索我的答案*

第二个技巧是只使用语义操作(可以是 lambda)并分配 _pass : Boost Spirit X3 cannot compile repeat directive with variable factor也显示了这一点:

auto zerosum = [](auto &ctx) { 
auto& v = x3::_attr(ctx);
_pass(ctx) = std::accumulate(v.begin(), v.end(), 0) == 0;
};

关于c++ - Boost Spirit X3局部变量和获取综合属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35208162/

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