关于python:是否可以用yacc打印表达式(x和(y或z))的所有位置?

Is possible to print all the posibilities of an expression like (x AND ( y OR z)) with yacc?

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

1
2
3
4
5
6
a, b, e, f
a, c, e, f
a, d, e, f
a, b, e, g
a, c, e, g
a, d, e, g

等,

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

我找不到一种方法以正确的方式打印所有的可能性,所以我想也许PLY它不是这个任务的正确工具。

您建议我编写自己的解析器来解决这类问题吗?


我建议您根据应用程序的需要处理结果分析树。解析器只是一个前端,它根据您给出的操作规则返回一个语法组织;它不会神奇地完成您的应用程序。

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