可以使用 yacc 打印表达式的所有可能性,例如 (x AND ( y OR z))



我正在尝试打印形式((a AND (b OR c OR d)) AND e AND (f OR g))的复杂逻辑表达式的所有可能性。例如,输出应该是

a, b, e, f
a, c, e, f
a, d, e, f
a, b, e, g
a, c, e, g
a, d, e, g

我正在使用解析器(python的PLY),它使用LARL算法,但我不知道这是否是解决此类问题的正确方法。

我找不到以正确方式打印所有可能性的方法,所以我在想也许 PLY 它不是完成此任务的正确工具。

您是否建议我编写自己的解析器来解决此类问题?

我建议您根据应用程序的要求处理生成的解析树。 解析器只是一个前端,它根据您为其提供的操作规则返回语法组织;它不会神奇地完成您的申请。

您仍然需要编码:您需要遍历生成的数据结构(在您的控制下),并为已解析的表达式提供所有子可能性(AND 节点)或任何正数量的可能性(OR 节点)。

相关内容

最新更新