Augmented Backus-Naur Form 中的替代运算符 ( / ) 是可交换的吗?

例如, s = a / b 是否与 s = b / a 相同?

最佳答案

我还没有在 BNF 或 ABNF 上找到任何主要来源,它们在双方都产生有效匹配时明确指定 / 语义。他们也没有提到上下文无关文法和他们对非确定性的允许。如果有人知道澄清引用文献,请分享。

编辑 :Tony 的 answer 指出 2003 年的 RFC 3501 指定了 ABNF 交替的语义,至少在该文档中使用了它。

RFC 5234: Augmented BNF for Syntax Specifications: ABNF (2008)

介绍对比了 BNF 和 ABNF(此处添加了重点):



“选择性引用”和“顺序无关”可能与交替排序语义有关,但尚不清楚。

RFC 822: Standard for the Format of ARPA Internet Text Messages (1982)

除非我遗漏了什么,否则引用的 RFC 也没有指定 / 语义。 2.2 节回避了这个问题。



各种规则定义表明他们认识到避免歧义的实际重要性。例如,以下是 RFC 822 定义 optional-field 及其依赖项的方式:

 optional-field =
             /  "Message-ID"        ":"   msg-id
             /  "Resent-Message-ID" ":"   msg-id
             /  "In-Reply-To"       ":"  *(phrase / msg-id)
             /  "References"        ":"  *(phrase / msg-id)
             /  "Keywords"          ":"  #phrase
             /  "Subject"           ":"  *text
             /  "Comments"          ":"  *text
             /  "Encrypted"         ":" 1#2word
             /  extension-field              ; To be defined
             /  user-defined-field           ; May be pre-empted

 extension-field =
               <Any field which is defined in a document
                published as a formal extension to this
                specification; none will have names beginning
                with the string "X-">

 user-defined-field =
               <Any field which has not been defined
                in this specification or published as an
                extension to this specification; names for
                such fields must be unique and may be
                pre-empted by published extensions>

The Syntax and Semantics of the Proposed International Algebraic Language of the Zurich ACM-GAMM Conference(巴科斯 1958)

BNF 来自 IAL 符号。论文中引入了̅o̅r“元语言连接词”,直观上与/相关。然而,它也避免了二义性选择问题,大概只是小心翼翼地使用它。

推荐

由于未指定的语义,我的建议是将 alternation 规则中的每个可能匹配视为有效。当语法没有精心设计以避免歧义时,这种解释可能会导致同一输入的多个有效解析树。在发生歧义解析时解决它们比使用无意中有效的解析树更安全。

或者,如果您对语法的指定方式有影响,则可以考虑使用语义更清晰的符号。例如,Parsing Expression Grammar: A Recognition-Based Syntactic Foundation (Ford 2004) 给出了替代确定性优先选择语义(最左边的比赛获胜)。

10-08 15:10