Java的开源ABNF Parser实现?

时间:2011-03-14 18:03:28

标签: java parsing

我需要Java中的Augmented Backus-Naur Form Parser(RFC 5234)来验证某些语言。

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

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

是否有人知道存在的任何内容?

2 个答案:

答案 0 :(得分:3)

我已经发现Parse2(见拉尔夫的答案)有一些限制:

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

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

如果您自己指定ABNF语法并牢记这些限制,则此库应该适合您。如果您必须使用现有的ABNF语法,则可能需要在代码生成之前为语法付出额外的努力。

PS:即使编译的二进制文件(java字节代码)可以自由使用,Parse2库源代码目前也不可用。

答案 1 :(得分:2)

Parse2从ABNF为解析器生成源java。