ANTLR 是否提供这些功能?

Does ANTLR provide these features?

我创建了一个通用解析器,它的代码行数相当小,但我已经能够成功地用于我的目的。它可以处理递归语法,表现良好,支持正则表达式,允许正常标记化模式或上下文特定标记化,这反过来又允许冲突的标记在语法中工作得很好等等。

由于 ANTLR 的整体流行度,我认为可能值得更多地了解它(也许我一直在重新发明轮子)但在投入时间之前我想知道它是否可以做一些我的解析器目前提供给我的是同样的东西。不幸的是,我找不到足够全面的功能列表,至少没有一个能回答我在下面提出的问题。

ANTRL 是否提供以下功能?

  1. ANTLR 报告可能的标记不匹配,因此您可以将其用于自动完成
  2. ANTLR 访问者模式非常通用。 ANTLR 生成接口,你必须实现它,所以你可以提供你想要的功能
  3. ANTLR 严格区分词法分析和语法分析。因此不可能将不同的令牌类型分配给同一个令牌
  4. 您可能会使用 ANTLR 实现搜索模式,但效率不高(除非您另外添加一个单独的高效搜索)

我认为 PEG-Parser 更适合您的要求。但请记住,解析和词法分析的严格分离性能更高。

如果您还没有使用 DFA 正则表达式来进行词法分析,并且如果性能是一个问题,那么转换技术(转换为 ANTLR 或转换为 PEG-Parsers)可能是一个很好的下一步。