Yes, the Python ast
module provides facilities to do this. You'll have to look up the exact interface for your version of Python, since the ast
module seems to change regularly.
In particular, the ast.parse()
method will be helpful for your application:
>>> import ast
>>> ast.parse("(1+2)*3", "", "eval")
<_ast.Expression object at 0x88950>
>>> ast.dump(_)
'Expression(body=BinOp(left=BinOp(left=Num(n=1), op=Add(), right=Num(n=2)), op=Mult(), right=Num(n=3)))'
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…