python - 从文本实现逻辑

标签 python parsing logic

我有一个程序可以接收文本形式的输入,例如:

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/

相关文章:

c++ - 从自然语言到C++表达式

python flask请求钩子(Hook)

python - IPython 笔记本将代码单元放入列中

python - 如何逐行读取多个文本文件并发送到Excel并在每个文件后移动到新列?

python - uint8 CIE Luv Mat 的取值范围是多少?

iphone - 检查字符串是否包含主题标签,然后更改主题标签颜色

embedded - <= 和 := in VHDL 之间有什么区别

java - 不使用数据库的 Java 动态 XML 分解

parsing - Yacc中是否定义了减少的顺序?

boolean 表达式