2011-07-19 223 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

嗯,我没有考虑过这种方式,但这是一个非常好的主意。谢谢! –