Существует большой путь к реализации языка, которого я не вижу в других ответах здесь. Если вы используете одну из «неперфорированных» форм Лукасевича (например, Forward Polish или Reverse Polish), вам вообще не нужен анализатор! При обратной полировке зависимости переходят справа налево, поэтому вы просто выполняете каждый токен во время его сканирования. С прямой полировкой все наоборот, так что вы фактически выполняете программу «назад», упрощая подвыражения до достижения начального токена.
Чтобы понять, почему это работает, вы должны исследовать 3 основных алгоритма обхода дерева: предварительный порядок, порядок, пост-порядок. Эти три обхода являются противоположностью задачи синтаксического анализа, которую должен выполнить читатель языка (т.е. парсер). Только нотация в порядке «требует» рекурсивного примитива для восстановления дерева выражений. С двумя другими вы можете получить только стек.
Это может потребовать больше «мышления» и меньше «реализации».
Кстати, если вы уже нашли ответ (этому вопросу год), вы можете опубликовать его и принять его.