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
astmodule provides facilities to do this. You'll have to look up the exact interface for your version of Python, since theastmodule seems to change regularly.In particular, the
ast.parse()method will be helpful for your application: