C目标 - 行号不正确

时间:2013-06-30 14:50:35

标签: antlr antlr3

我正在使用ANTLR3C v3.4,这是一个语法片段:

include_cmd
    : Include  Double_Quote  file_name  Double_Quote  
    {
        my_model->add_include($file_name.text, LT(0)->getLine(LT(0)));
    }
    ;

但我发现LT(0) - > getLine(LT(0))返回错误的行号,当它是第一行时,LT()返回3;当它是第3行时,返回5.似乎总有一些偏移。

这是ANTLR3c中的错误还是我的使用LT()错了?我假设LT(0)返回令牌“Include”,并从中得到行号。

谢谢!

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

第一行只有一个错误(根据我所知,只有C目标)。初始值可能未正确设置。我通常在文本前加上用空格char解析(因为通常忽略空格)。如果空间对您很重要,请选择其他字符。使用该前缀,第一个标记(带前缀的字符)的行号是错误的,但其他所有标记都是正确的。

请记住:行号是从一开始的(而字符偏移是从零开始的)。