I want to tokenize a given mathematical expression into a parse tree like this:
((3 + 4 - 1) * 5 + 6 * -7) / 2
'/'
/ \
+ 2
/ \
* *
/ \ / \
- 5 6 -7
/ \
+ 1
/ \
3 4
Is there any pure Python way to do this? Like passing as a string to Python and then get back as a tree like mentioned above.
Thanks.
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 theast
module seems to change regularly.In particular, the
ast.parse()
method will be helpful for your application: