如何使用W3CEBNF表示法并生成解析器生成器? [英] How to consume W3C EBNF-Notation and produce a parser generator?

查看:13
本文介绍了如何使用W3CEBNF表示法并生成解析器生成器?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

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

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

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

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

推荐答案

REx Parser Generator从W3C风格的eBNF中提取语法,Railroad Diagram Generator可以直接从W3C文档中提取语法。

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

  • 浏览到Railroad Diagram Generator
  • Get Grammar选项卡上,输入示例URLhttps://www.w3.org/TR/n-quads
  • 转到Edit Grammar
  • 在语法末尾添加一个空格规则: WHITESPACE ::= [ #x9]+ /* ws: definition */
  • 将语法保存到本地文件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的创建者和维护者。

这篇关于如何使用W3CEBNF表示法并生成解析器生成器?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆