从文本实现逻辑

fra*_*son 5 python logic parsing

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

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
Run Code Online (Sandbox Code Playgroud)

where A.4.1-1/1等是具有值的变量TRUE or 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']
Run Code Online (Sandbox Code Playgroud)

我只是想知道是否有可能实际执行此列表中的逻辑,例如将所有这些组合到rquired python语句中并提供结果.我不确定是否开始我在一些网站上读过我应该使用自上而下的解析器?

Esc*_*alo 6

这听起来像是Pyparsing的任务:

与传统的lex/yacc方法或正则表达式的使用相比,pyparsing模块是创建和执行简单语法的另一种方法.pyparsing模块提供了一个类库,客户端代码使用这些类直接在Python代码中构造语法.

您将能够快速定义语法(而不是使用正则表达式)和特定的解析操作.我使用Pyparsing在300行代码中构建了非常丰富的迷你语言.