哪个面向Java的lexer解析器用于简单项目(ANTLR,DIY等)

时间:2009-03-04 18:23:09

标签: java parsing antlr dsl ragel

我正在开发一个小型文本编辑器项目,并希望为几种语言添加基本语法高亮显示(Java,XML ......仅举几例)。作为一种学习经历,我想添加一个流行的或非流行的Java词法分析器。

您推荐什么项目? Antlr可能是最知名的,但它似乎相当复杂和沉重。

以下是我所知道的选项。

  1. 的Antlr
  2. Ragel(是的,它可以生成用于处理输入的Java源代码)
  3. 自己动手(我想我可以编写一个简单的令牌解析器并突出显示源代码)。

9 个答案:

答案 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)

JLexCUP分别是体面的词法分析器和解析器生成器。我目前正在使用它们为我正在开发的项目开发一种简单的脚本语言。

答案 8 :(得分:-1)

我认为你不需要词法分析器。您只需要首先读取文件扩展名以检测语言,然后从列出语言关键字的xml文件中轻松找到它们并突出显示它们。