我希望能够使用Ragel打印此错误消息 =>在位置线找到解析错误:col,而不是预期的整数。
Ragel有可能吗?
祝你好运
答案 0 :(得分:1)
我还没有进入Ragel中的错误处理,但我希望如果您使用Ragel 6.9指南第3.2.3节中指定的错误操作嵌入运算符,那将覆盖默认消息
您可以通过在每个换行符处递增计数器来获取行号,并通过获取当前位置并减去上一个换行符的位置来获取列,如下所示:
newline = '\n' %{ ++lineCounter; linePosition = p; }
action ErrorHandler {
column = p - linePosition + 1;
// Print error message here using lineCounter and column
}
main := (allsortsofstuff | newline)* <>err(ErrorHandler);
当然,上述内容可能需要根据你正在做的事情进行一些调整,但至少它是一个起点。