Я реализую алгоритм маневровой станции. У меня возникают проблемы с определением отсутствия аргументов для операторов. запись в Википедии очень плоха по этой теме, и их код также дает сбой для примера ниже.
Например, 3 - (5 + )
неверно, потому что +
отсутствует аргумент.
Непосредственно перед тем, как алгоритм достигает )
, стек операторов содержит - ( +
, а стек операндов содержит 3 5
. Тогда это выглядит так:
- он извлекает
+
из стека операторов - обнаруживает, что
+
является бинарным оператором - извлекает два операнда, применяет оператор и помещает результат (
8
) в стек операндов - затем он извлекает из стека соответствующий
(
и продолжает
Итак, как я могу определить, что в +
отсутствует аргумент? дополнительная похвала, если вы также обновите википедию :-)