我想使用扩展巴科斯-诺尔形式 (EBNF) 上下文无关语法定义一组无序的值。在 EBNF 中定义一个无序列表的值很容易,例如:
value = 'A' | 'B' | 'C';
list = value, {',', value};
Run Code Online (Sandbox Code Playgroud)
但是,我怀疑它是否可以用于无序集合。
以下是有效的无序值集的示例:
A, B, C, D
A, B, D, C
A, D, C, B
...
D, C, B, A
Run Code Online (Sandbox Code Playgroud)
虽然无效列表将是:
A, A, C, D
B, C, C, B
A, A, A, A
...
Run Code Online (Sandbox Code Playgroud)
或任意长度的列表。
A, A, B, C, D, A
A, B, C, D, A, B, C, D
...
Run Code Online (Sandbox Code Playgroud) parsing ebnf context-free-grammar context-free-language ebnf-syntactic-exception