Zubr
Вот я не пойму как в строке EXPRESION проверить числа там или нет
можешь разделить на лексемы (по пробелу) через .split()
потом брать по лексеме и проверять её на пригодность (сделай функцию)
надо учесть, что числа могуть быть дробными
Singularity
мне лень это делать. Погугли наверно кто-то уже такое делал
это развивает базовые навыки по обработке грамматик
у меня в книжке, по которой занимаюсь, есть пример аналогичный, но там через рекурсию сделано, и есть вес у операций
для разработки своего транслятора чего-нибудь во что-нибудь очень пригодится