gpt4 book ai didi

context-free-grammar - 是否有铁路图的扩展来捕获异常?

转载 作者:行者123 更新时间:2023-12-04 20:22:29 25 4
gpt4 key购买 nike

铁路图是可视化上下文无关语法的一种流行方法,您可以将 Backus-Naur 表格映射到这些图表。但是some variants of BNF ,例如 W3C-BNF允许异常(因为上下文无关语言在差异下没有关闭,这些异常必须是常规的)。我想在铁路图中可视化一个有异常(exception)的语法。我应该发明我自己的图形符号扩展还是有人已经尝试过这个?

这是一个异常(exception)规则的例子(是的,你也可以毫无异常(exception)地表达这个特定的语法,但这不是重点):

comment := "<!--" (string - "--") "-->"

异常(exception)可以是任何常规语法。我想通过某种特殊类型的箭头或线(此处用感叹号表示)添加连接到非终结符的异常:
[<] → [!] → [-] → [-] → (string) → [-] → [-] → [>]
!
! → [-] → [-] → ↯

附注:语法错了,应该是
comment := "<!--" (string - (string "--" string | string "-")) "-->"

也许否定的非直观使用是它在形式语法中很少使用的原因之一?

最佳答案

在写 Railroad Diagram Generator 时最近对于 W3C 语法,我想了一段时间如何表示它,但我无法想出一个我满意的解决方案。也没有找到任何可以遵循的示例。

它不仅是集差算子,在传统的铁路图中没有图形等价物。代码点、范围和补码的表示法也不太适合。

最后,我没有以图形方式扩展模型。我所做的是画一个接线盒来保存原始符号中没有铁路等效物的语法片段。为了将其与文字框区分开来,它设置为斜体。以下是 XML 建议中的示例:

XML comment railroad diagram

EBNF 产量为:

Comment ::= '<!--' ((Char - '-') | ('-' (Char - '-')))* '-->'

编辑 :

遵循 Jakob 对不同形状的建议,未解析的 EBNF 表达式现在显示在六边形中:

enter image description here

关于context-free-grammar - 是否有铁路图的扩展来捕获异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4869167/

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