Упрощает обработку порядка операций, например:
+ * - 4 2 5 3
Может означать только
((4 - 2) * 5) + 3
Что может быть более читабельным для нас, но нам нужно знатьпорядок операций и соответствующие скобки, чтобы понять это.
Что касается реализации: если бы у вас был стек, вы могли бы обработать приведенное выше выражение следующим образом:
- Read
+
(операция), поместите его в стек, - Read
*
(операция), вставьте его в стек, - Read
-
(операция), вставьте его встек, - чтение
4
(число), вершина стека не является числом, поэтому поместите его в стек. - чтение
2
(число),вершина стека - это число, поэтому дважды выскочите из стека, вы получите 4 - 2
, вычислите его (2
) и поместите результат (2
) в стек. - Read
5
(число), вершина стека - это число, поэтому дважды выскочите из стека, и вы получите 2 * 5
, поместите результат (10
) в стек. - Read
3
(число), вершина стека - это число, поэтому дважды выскочите из стека, и вы получите 3 + 10
, поместите результат (13
) в стек. - НичегоОсталось прочитать, выскочить из стека и вернуть результат (
13
).
Итак, как вы можете видеть, выражение было оценено с использованием нескольких простых правил и без необходимости поиска по всемустрока для скобок или необходимость решить, имеет ли умножение приоритет над сложением и вычитанием.