描述一些东西,我应该使用Backus-Naur表格吗?

4 scripting-language bnf

我想描述一个复杂的脚本和可能的编程语言.我想在做任何事情之前用Backus-Naur形式描述它(不包括虚拟/样本脚本代码)

还有另一种形式来描述Backus-Naur形式的语言吗?我应该考虑哪些替代方案?

jhe*_*iko 7

显而易见的替代方案是扩展Backus-Naur形式,但是很少有其他可以使用的形式,我发现了一些快速搜索的链接:

增强的BNF

Wirth语法表示法

Van Wijngaarden语法

我个人会坚持使用BNF/EBNF,因为在某种形式下使用它的信息和工具很普遍.像bisonyacc这样的工具可以帮助从这样的语法生成解析器,并使生成解释器变得非常简单.


Per*_*ing 5

这取决于你想要描述语言的正式程度.Backus-Naur Form用于描述无上下文的语法.因此,如果你想描述一个无上下文的语法,Backus-Naur Form可能就是这样,因为它是描述这些语言最广为人知的形式.

但是,如果您希望描述语义或更复杂的语法,则需要使用其他方法.如果您还想描述您的语义,则需要根据语言特征(如使用递归)在小步或大步语义之间进行选择.

请注意,如果您的语法不能使用无上下文语法表达,那么BNF根本不足以表达您的语言,您可能需要考虑用上下文敏感语法描述您的语言.