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

标签 parsing rdf w3c ebnf

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

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

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

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

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

最佳答案

REx Parser Generator根据 W3C 风格的 EBNF 语法进行工作,并且 Railroad Diagram Generator可以直接从W3C文档中提取语法。

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

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

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

关于parsing - 如何使用 W3C EBNF-Notation 并生成解析器生成器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56047642/

相关文章:

parsing - Scrapy:将列表项解析到单独的行上

python - 解析 defaultdict 字符串

graph - 如何使用 Neo4j 图数据库获取语句源?

css - 我们可以在 <ul> 中与 <li> 一起使用任何其他 TAG 吗?

c# - 在 C# 中解析十六进制字符串

parsing - 是否可以使用applicative来表达chainl1?

prolog - 如何使用SWI-Prolog的语义Web库查询RDF/OWL?

docker - 具有Blazegraph Triple Store的Docker容器可能由于联网而无法正常工作

svg - SVG 中文本元素的垂直对齐方式

javascript - 根据 W3C,我应该如何将 Canvas 放入剪贴板?