我有一个程序可以接收文本形式的输入,例如:
IF (A.4.1-1/1 OR A.4.1-1/2) AND A.4.4-1/9 AND (A.4.4-1/12 OR A.4.4-1/13 OR A.4.4-1/14 OR A.4.4-1/15) THEN R ELSE N/A
其中 A.4.1-1/1
等是值为 TRUE 或 FALSE
的变量。到目前为止,我已经将上面示例的文本解析为逻辑部分,我有一个如下所示的列表:
['IF', '(', 'A.4.1-1/1', 'OR', 'A.4.1-1/2', ')', 'AND', 'A.4.4-1/9', 'AND', '(', 'A.4.4-1/12', 'OR', 'A.4.4-1/13', 'OR', 'A.4.4-1/14', 'OR', 'A.4.4-1/15', ')', 'THEN', 'R', 'ELSE', 'N/A']
我只是想知道是否有可能实际执行此列表上的逻辑,例如将所有这些组合到所需的 python 语句中并提供结果。我不确定是否要开始我在一些网站上读到我应该使用自上而下的解析器??
最佳答案
这听起来像是 Pyparsing 的任务:
The pyparsing module is an alternative approach to creating and executing simple grammars, vs. the traditional lex/yacc approach, or the use of regular expressions. The pyparsing module provides a library of classes that client code uses to construct the grammar directly in Python code.
您将能够快速定义语法(而不是使用正则表达式)和特定的解析操作。我使用 Pyparsing 在不到 300 行代码中构建了非常丰富的迷你语言。
关于python - 从文本实现逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6430904/