我正在开发一个小型文本编辑器项目,并希望为几种语言添加基本语法高亮显示(Java,XML ......仅举几例)。作为一种学习经历,我想添加一个流行的或非流行的Java词法分析器。
您推荐什么项目? Antlr可能是最知名的,但它似乎相当复杂和沉重。
以下是我所知道的选项。
答案 0 :(得分:8)
ANTLR或JavaCC将是我所知道的两个。我首先推荐ANTLR。
答案 1 :(得分:3)
ANTLR可能看起来既复杂又沉重,但您不需要使用它包含的所有功能;它很好地分层。我非常喜欢用它来开发解析器。对于初学者,您可以使用优秀的ANTLRWorks来可视化和测试您正在创建的语法。很高兴能够观察它捕获令牌,构建解析树并逐步完成整个过程。
对于您的文本编辑器项目,我会查看filter grammars,这可能很适合您的需求。对于过滤器语法,您不需要指定语言的整个词法结构,只需要指定您关注的部分(即需要突出显示,颜色或索引),并且您可以随时添加更多,直到您可以处理整个语言。
答案 2 :(得分:2)
Google代码有新项目acacia-lex。由我自己编写,使用javax注释看起来很简单(到目前为止)java lexer。
答案 3 :(得分:1)
SableCC
另一个有趣的选项(我还没试过)是Xtext,它使用Antlr,但也包含为您的语言创建Eclipse编辑器的工具。
答案 4 :(得分:1)
ANTLR是要走的路。我不会手工制作它。您还可以在ANTLR网站上查看grammars可用于Java,XML等的信息。
答案 5 :(得分:1)
另一种选择是Xtext。它不仅会为您的语法生成一个解析器,还会生成一个包含语法着色,错误标记,内容辅助和大纲视图的完整编辑器。
答案 6 :(得分:0)
之前我已经使用JFlex完成了它并且对此非常满意。但我突出的语言很简单,我不需要解析器生成器,所以你的里程可能会有所不同。
答案 7 :(得分:0)
答案 8 :(得分:-1)
我认为你不需要词法分析器。您只需要首先读取文件扩展名以检测语言,然后从列出语言关键字的xml文件中轻松找到它们并突出显示它们。