0

我希望能够使用 Ragel => Parsing error found at position line:col, Integer 来打印此错误消息。

拉格尔有可能吗?

此致

4

1 回答 1

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);

当然,以上内容可能需要根据您正在做的事情进行一些调整,但至少这是一个起点。

于 2016-01-07T01:07:57.297 回答