我希望能够使用 Ragel => Parsing error found at position line:col, Integer 来打印此错误消息。
拉格尔有可能吗?
此致
我还没有深入了解 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);
当然,以上内容可能需要根据您正在做的事情进行一些调整,但至少这是一个起点。