gpt4 book ai didi

c++ - boost::spirit:导致匹配失败与来自语义操作的特定消息?

转载 作者:太空狗 更新时间:2023-10-29 23:03:37 26 4
gpt4 key购买 nike

我正在尝试扩展 Boost::spirit 的现有使用,实现一种配置语言(使用 Boost 1.55.0)。

如果规则或标记不匹配,那么 Boost 系统会很高兴地抛出一个 expectation_failure 异常,我可以用它来提示在嵌套的配置文件集中的哪个位置遇到了错误.

但是,有几个子句的语义 Action 包含如下内容:

[ phx::bind(map_insert_table, qi::_1, ref(tbl), _val) ]

其中 map_insert_table() 是我定义的一个可能有异常条件的函数。如果我简单地抛出我自己的 C++ 异常,我将中止文件处理并显示一条有意义的错误消息,但我无法告诉用户他们的错误位置。如果我根据 boost spirit semantic action parameters 简单地将 _pass 设置为 false ,那么用户将知道错误发生的位置,但不会向我们提供有关实际错误的信息。

我很欣赏该链接问题中有关上下文的信息,但我看不到它在这里对我有何帮助,也看不到我如何从上述语义操作中访问它。

我也很感激有人告诉我我没有以最好的方式使用系统——这可能是真的,我可以进行增量更改,但是重写我们对 Boost::spirit 的整个使用将非常重要不得已的解决方案。

感谢所有回答。如果需要更多信息来回答我的问题(这是我潜伏多年后的第一篇文章),我一定会尽力提供。

最佳答案

您已经在 phoenix actor 中使用了引用。您可以使用相同的方法将错误信息存储在“带外”的某处。

或者,您可以将可选的诊断信息存储为属性类型的一部分。

关于c++ - boost::spirit:导致匹配失败与来自语义操作的特定消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25043424/

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