词法分析和解析工具

5 投票
3 回答
1445 浏览
提问于 2025-04-16 11:44

我在寻找一些词法分析和解析器生成工具,但不想用Flex或Bison。以下是我的要求:

  • 解析器需要使用上下文无关的LL(*)或GLR语法来指定。我也会考虑PEG语法。
  • 这个工具要能和一种编程语言紧密结合,这种语言可以用来写脚本和开发应用。希望这门语言能方便地和C语言对接。好的例子有Python、Ruby和Guile。不要C、Java或Perl。我希望语言是统一的;我希望解析器生成的代码也用同一种语言。
  • 文档要写得很好,质量要过关。
  • 开源的。如果是免费的那就更好了(虽然不是必须的)。
  • 要兼容Linux发行版或者某个开源的BSD系统。我也会考虑OpenSolaris。
  • 快速开发比效率更重要。
  • 适合解析自然语言和正式语言。自然语言解析只限于短小简单的句子,且歧义很少。

我对ANTLR很感兴趣,虽然我从未使用过。欢迎对此发表意见。请告诉我你最喜欢的符合这些要求的工具,以及你推荐它们的理由。

3 个回答

0

Guile 2.0(大约在几天后发布)有一个LALR(1) 解析库

1

自然语言(NL)通常有很多模糊的地方。如果你想解析自然语言,我觉得传统的编译器类型的解析器生成工具(比如LALR、LL,包括ANTLR)对你帮助不大,因为这些工具通常根本不处理模糊性。

一个可以处理模糊性的GLR解析器可能会对你有一些帮助;bison提供了这个选项。

2

这里有一个现代Packrat解析器的列表,你可以在这里查看

撰写回答