是的,Pythonast
模块提供了执行此操作的工具。您必须为您的Python版本查找确切的接口,因为该ast
模块似乎定期更改。
特别地,该ast.parse()
方法将对您的应用程序有帮助:
>>> 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)))'