gpt4 book ai didi

ebnf - 更大粒度的铁路图生成器?

转载 作者:行者123 更新时间:2023-12-01 08:04:15 29 4
gpt4 key购买 nike

是否有一个 EBNF 铁路生成器可以创建更大的 block ,而不是每个语法生成一个图表?

我试过了 http://bottlecaps.de/rr/ui它非常好:可以从 W3C 规范(例如 http://www.w3.org/TR/sparql11-query/)中提取 EBNF 语法,生成带有嵌入式 SVG 的单个 XHTML,或带有许多 PNG 的 zip,交叉链接定义和用法。

但是,SPARQL 1.1 语法有 173 个产生式。当每个作品只有一张图表时,很难理解。我正在寻找像这样分块的东西:http://ontologicalengineering.blogspot.com/2008/12/sparql-railroad-diagram-from-hell.html

最佳答案

我也遇到了这个问题。我最终写了一个快速而肮脏的 vim 脚本来将我的整个语法压缩成一个产品。

粒度较小的铁路图的问题在于,它们会丢失一些粒度较大的铁路图赋予它们的标签。

对于 EBNF 的任何常规(即:无递归)子集,您只需将左侧“查找并替换”为右侧,直到它成为所需的形式。例如我压缩了:

Identifier ::= Letter AlphaNum*
Letter ::= [a-zA-Z]|[_]
NonZeroDigit ::= [1-9]
Digit ::= NonZeroDigit | [0]
AlphaNum ::= Letter|Digit

进入:

Identifier ::= ([a-zA-Z]|[_]) (([a-zA-Z]|[_])|(([1-9])|[0]))*

达到了预期的效果。

过程:

  1. 查找仅包含终端的规则(例如:Letter::= [a-zA-Z]|[_])编辑:如果找不到任何规则,请选择任何规则,它仍然有效,但会导致过程稍微困惑
  2. 将所有出现的左侧替换为括在方括号中的右侧。
  3. 重复直到达到所需的粒度。

希望这对您有所帮助!

关于ebnf - 更大粒度的铁路图生成器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15758282/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com