1
29
你得考虑一下 EBNF 和 阿布纳夫 作为扩展,它可以帮助您在开发语法时更加简洁和表达。 例如,考虑一个可选的非终端符号, 脑钠肽 语法您可以使用中间符号来定义它,例如:
同时 电子束荧光 您可以使用可选语法直接执行此操作:
既然没有办法在 BNF公司 嵌套选项也必须使用中间符号:
对于在
EBNF
或
阿布纳夫
语法,多亏了句法上的糖分,但不符合标准
BNF公司
.
ABNF公司
延伸
EBNF
,允许您执行更复杂的操作,例如指定可以在一起找到多少个符号(即
所以选择一个 阿布纳夫 或 EBNF 因为您的语法选择的语言将使您的工作更容易,因为您将更具表现力,而不会用语法分析器生成器生成的无用符号填充语法,但您不会关心它们! |
2
5
根据维基百科,ABNF的双引号字符串文本不区分大小写,并且区分大小写的匹配必须定义为数字ASCII值。我认为这是一个缺点。
https://en.wikipedia.org/wiki/Augmented_Backus%E2%80%93Naur_Form#Terminal_values 然而,RFC7405似乎向ABNF添加了区分大小写的字符串文本。 |
3
2
ebnf是bnf的扩展/更新版本,因此问题变得更简单:ebnf与abnf。我不是专家,但我认为它应该取决于一种语言,你想定义它的语法。还有一些ebnf的可视化工具( http://www.google.co.il/search?sourceid=chrome&ie=UTF-8&q=Ebnf-Visualizer 但是没有看到任何关于ABNF的信息, |
4
1
一个合理的选择建议使用EBNF,因为它是一个ISO标准: ISO/IEC 14977Â : 1996(E) [PDF]。例如,它用于OMG UML Human-Usable Textual Notation . |
5
0
|