2008-11-11 88 views
0

我目前使用AntLR來解析某些專有語言的文件。 我需要在編輯器上突出顯示它的各個部分(例如,突出顯示Java類中的方法)。使用AntLR獲取開始和結束位置

有沒有人有提示如何讓他們? 說我有這樣的代碼:

function test(param1, param2) { 
} 

作爲函數是一個關鍵字,所述第一位置I在分析器得到的是標識符「測試」中的一個。我怎樣才能從那裏獲得職位直到結束大括號?正如人們所期望的那樣,參數列表是動態的,所以您不會提前知道它的長度。

謝謝!

回答

1

如果我明白你的問題,我想你可以使用屬性「POS」每個令牌

func: FUNCTION ID '(' ID (',' ID)* ')' { 
     System.out.println("Position = " + $FUNCTION.pos); 
} 

它指的是行從零開始計數中的字符位置。

0

不太理解你爲什麼第一個職位是測試的位置。如果正確設計了模式規範,則應該很容易獲得「函數」標記的字符偏移量。你能列出規範的相關部分嗎?

+0

你是對的,我會重新解釋這個問題。 – pgb 2008-11-11 17:30:17

相關問題