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