gpt4 book ai didi

syntax - BNF vs EBNF vs ABNF:选择哪个?

转载 作者:行者123 更新时间:2023-12-03 10:00:12 29 4
gpt4 key购买 nike

我想提出一种语言语法。我已经阅读了这三个方面的内容,并且看不到一个人能做的事而另一个人却做不到的事。有什么理由要使用另一个?还是只是偏爱问题?

最佳答案

您必须考虑将 EBNF ABNF 作为扩展,可以帮助您在开发语法时更加简洁明了。

例如,考虑一个可选的非终结符,在 BNF 语法中,您可以使用以下中间符号来定义它:

A        ::= OPTIONAL OTHER
OPTIONAL ::= opt_part | epsilon

而使用 EBNF 时,您可以直接使用可选语法:
A ::= [opt_part] OTHER

然后,由于无法在 BNF 中表达优先级,因此您还必须对嵌套选择始终使用中间符号:
BNF
A ::= B C
B ::= a | b | c

EBNF
A ::= (a | b | c) C

对于 EBNF ABNF 语法中允许的许多语法问题,这都是正确的,这要归功于语法糖,但不是正常的 BNF ABNF 扩展了 EBNF ,允许您做更复杂的事情,例如指定可以一起找到一个符号的次数(即 4*DIGIT)

因此,选择 ABNF EBNF 作为语法的选择语言将使您的工作更加轻松,因为您无需在语法上填充语法分析器生成的无用符号,就可以提高表达能力,但您获得了成功不在乎他们!

关于syntax - BNF vs EBNF vs ABNF:选择哪个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2575044/

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