我使用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;當它是第三行時,返回5.看起來總是有一些偏移量。
這是ANTLR3c中的錯誤還是我使用LT()錯誤?我假設LT(0)返回標記「包含」,並從中得到行號。
謝謝!
有第一和第三線之間什麼?是否有可能得到下一條語句開頭的行號,因爲antlr在符合解析規則之前轉到下一個標記? – Slartibartfast
其實我遇到的問題是行號,而不是字符位置。我發現在將LT(0) - > getLine(LT(0))更改爲LT(0) - >行之後,它很好。我不確定這是否是最佳解決方案,但感謝所有答覆。 –