如何解决从文本实现逻辑
| 我有一个程序可以接收文本形式的输入,例如: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 or FALSE
的变量。到目前为止,我已经将文本解析为上述示例的逻辑部分,我有一个看起来像这样的列表:
[\'IF\',\'(\',\'A.4.1-1/1\',\'OR\',\'A.4.1-1/2\',\')\',\'AND\',\'A.4.4-1/9\',\'A.4.4-1/12\',\'A.4.4-1/13\',\'A.4.4-1/14\',\'A.4.4-1/15\',\'THEN\',\'R\',\'ELSE\',\'N/A\']
我只是想知道是否有可能在此列表上实际执行逻辑,例如将所有这些结合到所需的python语句中并提供结果。我不确定是否要开始阅读某些站点上应该使用自上而下的解析器的内容??
解决方法
这听起来像是Pyparsing的任务:
pyparsing模块是一个替代方案
创建和执行的方法
简单语法与传统语法
lex / yacc方法,或使用
常用表达。 pyparsing
模块提供了一个类库
客户代码用来构造
语法直接在Python代码中进行。
您将能够快速定义语法(而不是使用正则表达式)和特定的解析动作。我在不到300行代码中使用Pyparsing构建了非常丰富的迷你语言。
, 我不是Python专家,但是我使用JavaCC在Java中做过类似的事情。您要做的是为您的语言编写语法(采用EBNF之类的格式,但取决于解析器生成器),然后使用JavaCC之类的程序为其生成解析器,这将为您提供一个语法解析树,更便于操作。
您应该能够找到许多有用的示例,因为输入的语法看起来并不太奇怪(布尔运算符,带括号的表达式以及if-then-else语句可能是最常见的用例) 。
您可能会发现此页面上列出的Python库之一很有用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。