2011-10-26 40 views
0

我有一個令牌定義可以包含多行(類似多行註釋)。Antlr,從令牌獲得最後一行

我可以使用.line屬性來獲取令牌開始的那一行,但是我需要 知道令牌結束的地方。

是否有可能得到令牌的最後一行?

+0

可以將令牌的行更改爲結束的行。但是,你是否想要開始和結束?如果你想要它們,你想要什麼時候訪問這些信息(在解析器規則中,或者在多行註釋標記的詞法分析器規則中)? –

+0

嗨,我只需要終點線。 – gulyan

回答

1

您可以通過將(Java)代碼塊{$line=getLine();}置於規則的結尾來更改令牌的行號。

因此,對於多行註釋,這應該是這樣的:

COMMENT 
    : '/*' .* '*/' {$line=getLine();} 
    ; 

導致令牌COMMENT的方法getLine()返回的行號的子串"*/"發生了。