21 апр 2009, 06:57
Существует три основные формы математических выражений. Привычная нам нотация называется инфиксом и отличается расположением каждого оператора между его операндами, наличием приоритетов операторов и скобок для управления этим приоритетом. Бесприоритетная запись, в которой все операторы выполняются строгов порядке указания, а указываются перед операндами называется префикс. К сожалению эта форма сложна для понимания способов записи выражений., содержащих более одного оператора. Бесприоритетная форма, в которой все операторы выполняются в порядке их указания, а указываются после операндов называется суффикс. В суфиксе, если встретилось число или ссылка на переменную, то соотвтствющее значение (в виде числа) помещается в стек, если встретился бинаррный оператор, то он выполняется с двумя последними элементами стека и результат сохраняется в стек, если унарный, то он выполяется с последним элементом стека и результат сохраняется в стек, а если функция, то она выполняется с последними элементами стека в количестве, равном числу аргументов функции, и результат сохраняетсмя в стек.
Инфикное выражение:
x+y*z
То же самое в суфиксе:
x
y
z
*
+
Для того, чтобы можно было отличить унарный минус от бинарного, придётся в суфиксе операторы обозначать не символами, а кодами, причём коды бинарного и унарного минусов не должны совпадать.
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".