Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。












想要改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。

4年前关闭。



Improve this question




我需要Java中的增强Backus-Naur表单解析器(RFC 5234)来验证某些语言。

为了不重新发明轮子,如果已有的话,我宁愿使用现有的ABNF Parser开源实现。

我需要开源,因为它允许我根据需要维护代码。

有人知道存在吗?

最佳答案

我已经观察到Parse2(请参阅Ralph的答案)存在一些局限性:

  • aparse不喜欢这些注释,因此必须在生成代码之前手动将其删除
  • 所有语句都需要在
  • 行的末尾以;结尾
  • aparse不会按照RFC 5234定义应用“核心” ABNF规则,因此,如果您的语法基于它们,则必须从RFC中复制它们
  • aparse不喜欢语法中的循环(例如S --> NT1 NT2 T1 ; NT1 --> S | T2 ; ...),并且可能会遇到无穷循环。

  • 这些观察已被Parse2的开发人员证实。简而言之:Parse2可以解析ABNF语法的子集,但是,如果您找到现有的ABNF语法并将其提供给软件,则很有可能会出现问题。

    如果您自己指定ABNF语法并牢记这些限制,则该库将为您工作。如果必须使用现有的ABNF语法,则可能必须在代码生成之前对语法进行更多的工作。

    PS:即使可以免费获得已编译的二进制文件(Java字节代码),Parse2库源代码当前也不可用。

    10-07 12:24