Я хочу узнать, как работают калькуляторы. Например, предположим, что у нас есть входные данные в инфиксной нотации, например:
1 + 2 x 10 - 2
Синтаксический анализатор должен соблюдать общепринятые математические правила. В приведенном выше примере это означает:
1 + (2 x 10) - 2 = 19 (а не 3 x 10 - 2 = 28)
А затем рассмотрим следующее:
1 + 2 x ((2 / 9) + 7) - 2
Включает ли это абстрактное синтаксическое дерево? Бинарное дерево? Как обеспечивается математически правильный порядок операций? Должен ли я использовать алгоритм маневровой станции, чтобы преобразовать это в постфиксную нотацию? И потом, как бы я разобрал его в постфиксной нотации? Зачем конвертировать в первую очередь?
Есть ли руководство, показывающее, как устроены эти относительно простые калькуляторы? Или может кто объяснит?