【发布时间】:2014-06-04 06:03:02
【问题描述】:
我想使用扩展巴科斯-瑙尔形式 (EBNF) 上下文无关语法定义一组无序的值。在 EBNF 中定义值的无序列表很容易,例如:
value = 'A' | 'B' | 'C';
list = value, {',', value};
但是,我怀疑它是否可以用于无序集。
以下是有效无序值集的示例:
A, B, C, D
A, B, D, C
A, D, C, B
...
D, C, B, A
虽然无效列表是:
A, A, C, D
B, C, C, B
A, A, A, A
...
或任意长度的列表。
A, A, B, C, D, A
A, B, C, D, A, B, C, D
...
【问题讨论】:
-
您可以通过为集合的每个可能状态定义多个非终结产生式来定义集合,但这意味着 n! (或更糟糕的)作品:)
标签: parsing context-free-grammar ebnf context-free-language ebnf-syntactic-exception