Подтвердить что ты не робот

Зачем нам нужен префикс, постфиксная нотация

Я знаю, как каждый из них может быть преобразован друг в друга, но никогда не понимал, что такое их приложения. Обычная операция инфикса вполне читаема, но где она терпит неудачу, что привело к созданию префиксной и постфиксной нотации

4b9b3361

Ответ 1

Инфиксная нотация легко читается для людей, в то время как пред-/постфиксная нотация легче анализировать для машины. Большим преимуществом в пред-/постфиксной нотации является то, что никогда не возникает вопросов, таких как приоритет оператора.

Например, рассмотрим выражение infix 1 # 2 $ 3. Теперь мы не знаем, что означают эти операторы, поэтому возможны два возможных постфиксных выражения: 1 2 # 3 $ и 1 2 3 $ #. Не зная правил, регулирующих использование этих операторов, выражение infix практически бесполезно.

Или, говоря проще: можно восстановить исходное (синтаксическое) дерево из пред-/постфиксного выражения без каких-либо дополнительных знаний, но то же самое не верно для инфиксных выражений.

Ответ 2

По крайней мере, для обозначения префикса: Преимущество использования префиксного оператора заключается в том, что синтаксически он читается так, как будто оператор является вызовом функции

Ответ 3

Постфиксная нотация, также известная как RPN, очень проста в обработке слева направо. Операнд помещается в стек; оператор выталкивает свой операнд из стека и выталкивает результат. Мало или вообще не требуется синтаксический анализ. Он используется Forth и некоторыми калькуляторами (калькуляторы HP отмечены для использования RPN).

Префиксная нотация почти легко обрабатывается; он используется в Lisp.

Ответ 4

Другой аспект префикса /postfix vs. infix состоит в том, что арность оператора (сколько аргументов, к которому он применяется) больше не должна ограничиваться точно двумя. Это может быть больше или иногда меньше (0 или 1 когда значения по умолчанию подразумеваются естественным образом, например, ноль для сложения/вычитания, один для умножения/деления).