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),它使用的是
我找不到一种方法以正确的方式打印所有的可能性,所以我想也许PLY它不是这个任务的正确工具。
您建议我编写自己的解析器来解决这类问题吗?
我建议您根据应用程序的需要处理结果分析树。解析器只是一个前端,它根据您给出的操作规则返回一个语法组织;它不会神奇地完成您的应用程序。
您仍然需要进行编码:您需要遍历生成的数据结构(在您的控制下),并为您解析的表达式提供所有子可能性(和节点)或任何正数量的可能性(或节点)。