是否可以使用 yacc 打印表达式的所有可能性,例如 (x AND ( y OR z)) ?
Is possible to print all the posibilities of an expression like (x AND ( y OR z)) with yacc?
我正在尝试打印形式为 ((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 它不是完成这项任务的正确工具。
您是否推荐我编写自己的解析器来解决此类问题?
我建议您根据应用程序的需要处理生成的解析树。解析器只是一个前端,returns 根据你给它的动作规则进行句法组织;它不会神奇地完成您的申请。
您还有编码工作要做:您需要遍历生成的数据结构(在您的控制下)并提供所有子可能性(AND 节点)或任何正数的可能性(OR 节点)您已解析的表达式。
我正在尝试打印形式为 ((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 它不是完成这项任务的正确工具。
您是否推荐我编写自己的解析器来解决此类问题?
我建议您根据应用程序的需要处理生成的解析树。解析器只是一个前端,returns 根据你给它的动作规则进行句法组织;它不会神奇地完成您的申请。
您还有编码工作要做:您需要遍历生成的数据结构(在您的控制下)并提供所有子可能性(AND 节点)或任何正数的可能性(OR 节点)您已解析的表达式。