(←) предыдущая запись ; следующая запись (→)

Обратите внимание, что при записи арифметических выражений при помощи AST, нам вообще не нужны скобки. И нам не нужно гадать, какая операция будет выполняться раньше: сложение или умножение: дерево само задаёт порядок.
Не только приоритет операций вычислений, но и скобочки тоже оказываются всего лишь артефактом записи арифметического выражения в строку. И в других формах кодирования выражений, их может и не быть.
*
Это на самом деле не единственный способ избавиться от скобок. Ещё бывает, например, обратная польская нотация (→). В ней наше выражение было бы записано так:
*```
1 2 3 * 4 + +

*Довольно полезно для компьютеров, но очень неудобно для людей. Впрочем, это уже совсем другая история.*


В чём для компьютера плюс представления арифметического выражения в виде Abstract Syntax Tree?
В том, что теперь нам очень легко производить разные манипуляции с выражением.

Например, чтобы переставить множители местами, нам достаточно в одной вершине поменять левую и правую ветки местами.
Не надо искать, где там скобка начинается, где кончается. Не надо гадать, что делать с минусом перед скобкой итд. Вообще снимается очень много головной боли.
Работать с математическими выражениями как с обычными текстовыми строками, на удивление, оооочень замороченно.

Разумеется, с такими деревьями можно проворачивать и куда более сложные манипуляции. Например, в вершины дерева можно добавить помимо сложения и произведения всякие возведения в степень, синусы, косинсы и логарифмы.

Если записать какую-нибудь сложную функцию в виде дерева, мы легко сможем посчитать её производную. Всевозможные движки для обучения нейросетей, кстати, примерно это и делают.

(8/n)