Символьный анализатор алгебраических выражений работает на основе стековых методов трансляции. 4 Для этого используются два стека (стек транслятора и стек для исполнения) и таблица переходов, которая определяет старшинство выполняемых операций и связывает последовательность действий. 4
Пример работы на примере выражения 2*3+2: 1
- Читается первый символ — 2. 1 Видится, что это цифра, но ещё не известно, кончилось число или нет, поэтому 2 сохраняется в память и читается следующий символ. 1
- Получен символ *. Видится, что полученный символ не цифра, делается вывод, что 2, сохранённая в памяти ранее, — число. 1 Поэтому 2 кладётся в стек чисел, чтобы воспользоваться позже. 1
- Получен символ *. Видится, что полученный символ не цифра, делается вывод, что 2, сохранённая в памяти ранее, — число. 1 Поэтому 2 кладётся в стек чисел, чтобы воспользоваться позже. 1
- Получен символ +. Понимается, что сохранённая в памяти 2 продолжаться не будет и кладётся в стек чисел. 1
- Операция сложения бинарная, поэтому проверяется глубина стека чисел в предположении, что хватит чисел, чтобы её выполнить. 1
Таким образом, символьный анализатор, получив на вход строку с математическим выражением, выводит на экран его результат или сообщение об ошибке в случае некорректности выражения. 1