如何报告解析器警告? 与报告错误类似,但解析器不能停止。 仅记录警告消息和子表达式导致警告。
示例输入:
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'
答案 0 :(得分:4)
如果要继续解析,可以像以前一样注册错误处理程序,但必须指定accept
作为处理程序策略:
rule<Iterator> r = ... > !eps;
on_error<accept>(r, handler);
附加的> !eps
在任何情况下都会强制执行错误并像往常一样调用handler
,但它会在'错误'之后接受匹配,继续就好像什么也没发生一样。