发生解析错误时打印预期令牌类型XXX

时间:2015-05-22 09:19:53

标签: ragel

我希望能够使用Ragel打印此错误消息 =>在位置线找到解析错误:col,而不是预期的整数。

Ragel有可能吗?

祝你好运

1 个答案:

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

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