2011-07-19 76 views
1

我爲自己創建了一個Summer項目,並決定編寫一個簡單的文本/代碼編輯器。我認爲目前一切進展順利。我創建了一個基本的GUI,並可以執行簡單的操作,如打開,保存和創建文件。語法高亮

現在我正在通過閱讀單詞來進行語法突出顯示,因爲我打開了一個文件,但事實證明這是非常混亂的,並且如果有人只是在GUI中輸入,它不會突出顯示語法。

因此,我想了解如何進行語法突出顯示的一些想法,以便它可用於打開文件和在窗口中鍵入。

此外,如果任何人有任何時候,我很想聽到我的代碼的註釋,這是庫:https://mcmillhj.beanstalkapp.com/jtexteditor/browse

主要文件是JTextEditor.java和UI/JTextEditorUI.java

+1

你看過[熒光筆](http://download.oracle.com/javase/6/docs/api/javax/swing/text/Highlighter.html)和[HighlightP ainter](http://download.oracle.com/javase/6/docs/api/javax/swing/text/Highlighter.HighlightPainter.html)類?在[如何使用文本字段](http://download.oracle.com/javase/tutorial/uiswing/components/textfield.html)教程中有一個示例。 – Moonbeam

+1

也許我不應該使用「熒光筆」這個詞,現在我想起來似乎很模糊。這些類從字面上突出顯示您想要的文本。我只是想讓關鍵字與常規單詞不同。對困惑感到抱歉。感謝您的鏈接。 –

+0

我讚賞澄清! :) – Moonbeam

回答

5

我認爲你應該開始閱讀約lexical analysis,你也可以使用JLex從文件的內容獲取令牌......你也應該讀一些關於編譯器(這不會很容易)

+0

我已經使用了一些類似的JFlex來爲我寫的解釋器創建一個標記器。所以你說我應該標記我的文件的全部內容,然後通過令牌搜索關鍵字等。順便謝謝你的鏈接。 –

+2

是......或者如果您不喜歡在兩個不同的步驟中標記化並搜索標記,則可以在解析時告訴GUI有關標記的位置,以突出顯示它(使用觀察模式或其他方法,通知觀察者何時找到令牌),這可能比在不同步驟中花費更少的時間。 –

+0

嗯,我沒有考慮過這種方式,但這是一個非常好的主意。謝謝! –