2024-06-28 20:47:34 发布
网友
作为一个练习,我对用python编写一个小解析器很感兴趣,它可以使用一组潜在的标记、运算符和括号,这样我就可以指定如下内容:
(DP>10) & (LowMQ[0] < 0.05) & (SPV < 0.05)
我需要解析出标记DP、LowMQ和SPV以及操作符和操作顺序。我在Java中经常看到这种情况,但在python中没有看到。关于从哪里开始或者一些示例代码有什么建议吗?你知道吗
亚普斯看起来很有希望。http://theory.stanford.edu/~amitp/yapps/
由于您的语法是Python语法的一个子集,因此可以使用Python的内置^{}:
>>> import ast, textwrap >>> src = "(DP>10) & (LowMQ[0] < 0.05) & (SPV < 0.05)" >>> print '\n'.join(textwrap.wrap(ast.dump(ast.parse(src)), width=80)) Module(body=[Expr(value=BinOp(left=BinOp(left=Compare(left=Name(id='DP', ctx=Load()), ops=[Gt()], comparators=[Num(n=10)]), op=BitAnd(), right=Compare(left=Subscript(value=Name(id='LowMQ', ctx=Load()), slice=Index(value=Num(n=0)), ctx=Load()), ops=[Lt()], comparators=[Num(n=0.050000000000000003)])), op=BitAnd(), right=Compare(left=Name(id='SPV', ctx=Load()), ops=[Lt()], comparators=[Num(n=0.050000000000000003)])))])
不能解决一般情况,但很简单。你知道吗
亚普斯看起来很有希望。http://theory.stanford.edu/~amitp/yapps/
由于您的语法是Python语法的一个子集,因此可以使用Python的内置^{} :
不能解决一般情况,但很简单。你知道吗
相关问题 更多 >
编程相关推荐