c++ - 提神气 : How to report parser warnings?

标签 c++ parsing warnings boost-spirit boost-spirit-qi

如何报告解析器警告? 类似于报告错误,但解析器不能停止。 仅记录警告消息和引起警告的子表达式。

示例输入:

 select * from table where row>='' && row<>'hello'

预期输出:

 Warning: expression is always true: row>=''
 Warning: && is deprecated, use AND: row>='' && row<>'hello'
 Warning: <> is deprecated, use !=: row<>'hello'

最佳答案

如果你想继续解析你可以像以前一样注册一个错误处理程序,除了你必须指定 accept 作为处理程序策略:

rule<Iterator> r = ... > !eps;
on_error<accept>(r, handler);

附加的 > !eps 在任何情况下都会强制错误并像往常一样调用 handler ,但它会在“错误”之后接受匹配,就像继续一样什么都没发生。

关于c++ - 提神气 : How to report parser warnings?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6135762/

相关文章:

java - 我的 JavaCC 文本解析器中缺少什么?

asp.net - 使用 R 将更多帖子从 RSS feed 提取到 CSV

c - 有没有办法在行为不当的指定初始化器时得到警告?

python - 一种将 C++ 对象传递给 cython 中另一个对象的方法的方法

c++ - std::lock_guard<std::unique_lock<std::mutex>> 有效还是推荐?

c++ - openMP的并行化效率

java - 解释 Java 类文件中十六进制值的访问标志

php - 引用 - 这个错误在 PHP 中意味着什么?

c++ - 禁用/W4 boost 警告

c++ - QHBoxLayout间距