如何使用 W3C EBNF-Notation 并生成解析器生成器?

dai*_*i70 8 w3c parsing rdf ebnf

在整个 RDF 规范中,EBNF-NOTATION XML 规范用于指定文档的语法。所以我想知道如何使用 Antlr/bison/yacc (也许这些工具中的一些标志我不知道如何搜索) \xe2\x80\x94\xc2\xa0 或我不使用的其他工具\xe2\x80\ x99 还不知道 \xe2\x80\x94 来使用这些规范并生成一个解析器供我在尝试加载之前使用它来查看我的 RDF 是否格式良好。

\n\n

我的特定用例的示例语法是:\n https://www.w3.org/TR/n-quads/#sec-grammar

\n\n

我已经将此语法转换为 Antlr4 语法,并使用该工具创建了一个解析器,并尝试编写自己的递归下降解析器,但它非常耗时,如果必须再次执行此操作,我宁愿不重复该练习。

\n\n

实际上没有任何代码,这只是一个信息请求。

\n\n

我想要做的基本上是复制/粘贴此 XML EBNF-NOTATION 中指定的语法,并生成类似于 Antlr 提供的解析器生成器。

\n

Gun*_*her 11

REx 解析器生成器根据 W3C 风格 EBNF 中的语法进行工作,铁路图生成器可以直接从 W3C 文档中提取语法。

\n\n

以下是如何从示例语法创建一个工作解析器(在 Java 中 - 也支持一些其他目标语言):

\n\n
    \n
  • 浏览到铁路图生成器
  • \n
  • Get Grammar选项卡上,输入示例 URL https://www.w3.org/TR/n-quads
  • \n
  • 继续Edit Grammar
  • \n
  • 在语法末尾添加空格规则:\nWHITESPACE ::= [ #x9]+ /* ws: definition */
  • \n
  • 将语法保存到本地文件n-quads.ebnf
  • \n
  • 浏览到REx 解析器生成器
  • \n
  • 使用输入文件n-quads.ebnf和命令行-java -tree -main
  • \n
  • 保存生成的解析器n_quads.java并编译它
  • \n
  • 在示例文件上运行解析器:java n_quads -i a-sample-file
  • \n
\n\n

全面披露:我\xe2\x80\x99m 是 REx Parser Generator 的创建者和维护者。

\n