它不會讓你開心,但你應該花時間學習編寫解析器(龍書很好)。解析器任務的事情是,如果你知道如何去做,那麼它們很容易,如果你不知道它們幾乎是不可能的。 我會寫一個標記器,它可以識別令牌,如<start_underline, "_">
和<end_underline, "_">
,用於在編輯器中使用的格式指示器和其他所有格式指示器。結果可能是這樣的:
文字:Hello _world_, /how are you?/
令牌:<text, "Hello ">,<start_underline, "_">,<text, "world">,<end_underline, "_">,<text, ", ">,<start_bold, "/">,<text, "how are you?">,<end_bold, "/">,
的開始和結束,可以跟蹤與布爾變量相當容易,因爲它是沒有意義的巢他們。這就是爲什麼我會在tokenizer中進行跟蹤。
之後,我會編寫一個解析器類,它接受這些標記並相應地將輸出配置爲textarea。
你看,這實際上只是應用了原理divide and conquer
。 How do I do everything I want with my text?
的任務分爲3個部分:
- 根據一個有用的結構,這個字符串是什麼? (Tokenizer答覆)
- 如何處理特定文本部分
x
所有可能的x
? (解析器解答)
- 如何表示該字符串的解析器解釋?(JTextpane或其他人的答覆)
Tokenizer和Parser都不需要額外的類。因爲上下文並不複雜,所以它們只能是您喜歡的Textarea類型的擴展類中的方法。
給出更詳細的建議是沒有幫助的我認爲,下一步最好的步驟是您可能最好自己做的實現。儘管如此,請不要猶豫,詢問您是否找不到某個特定部件的良好解決方案。
肖恩指出,SO使用標記。我建議你*重新使用*格式**和**執行它,因爲有很多令人討厭的角落案例可能會引入微妙和難以修復的錯誤。 – 2011-03-21 13:27:19