4

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

示例输入:

 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'
4

1 回答 1

4

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

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

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

于 2011-05-26T12:55:27.733 回答