擅长:python、mysql、java
<p>试试<a href="http://pyparsing.wikispaces.com/" rel="nofollow">pyparsing</a>。下面是一个语法分析器,它支持等式、布尔运算和嵌套方括号:</p>
<pre><code>from pyparsing import *
expr = Forward()
factor = Forward()
term = Forward()
iand = Literal("AND").suppress()
ior = Literal("OR").suppress()
ieq = Literal("=").suppress()
lpar = Literal("(").suppress()
rpar = Literal(")").suppress()
ident = Word(alphas)
atom = ident | lpar + expr + rpar
factor << Group(atom + ZeroOrMore(ieq + atom))("equal")
term << Group(factor + ZeroOrMore(iand + term))("and")
expr << Group(term + ZeroOrMore(ior + expr))("or")
</code></pre>
<p>您可以将其应用于公式,以获得类似于树的结构,您可以在稍后的某个时间对其进行计算,例如:</p>
<pre><code>formula = "(assignee=cdecker OR due=tomorrow) AND status=open"
tree = expr.parseString(formula, parseAll=True)
print tree.asXML()
</code></pre>