上下文无关语法的排列

时间:2015-03-17 22:08:26

标签: context-free-grammar

我目前正在编写需要识别的语法 字符串abc,acb,bac,bca等。“abc”的所有排列。

我只是遗漏了什么,或者我是否必须编写所有可能的组合,例如: S - > abc | acb | ... 实现全面覆盖。

1 个答案:

答案 0 :(得分:0)

基本上,您需要独立识别每种可能的顺序。没有标准BNF表示法的捷径。使用正则表达式,您可以考虑减少正则表达式的长度,但它对您没有多大帮助。 (例如,如果您想要abcd的所有组合,则可以写(ab|ba)(cd|dc)而不是稍长{{1}但是它不会太多帮助。

对于三个或四个不太糟糕的元素,但它不会扩展。通常的解决方案是允许任何元素序列,并在结束时或在您使用时检查重复项,具体取决于您正在使用的解析器生成器的功能。