Страница 2 из 2

Re: Парсер математических операций

Добавлено: 31 мар 2009, 10:07
atavin-ta
&quot писал(а):А реальное построение дерева - это обязательное условие?
У меня, например, есть рекурсивная функция, которая интерпретирует даже гораздо более сложные выражения. Она не использует деревьев. Но само рекурсивное её выполнение как раз происходит в соответствии с иерархией операций в выражении.
То есть дерево неявно подразумевается?
А зачем вообще мучиться с инфиксом? Не проще ли транслировать его в суфикс?

Re: Парсер математических операций

Добавлено: 20 апр 2009, 15:21
dr.Jekill
Что за суффикс?

Re: Парсер математических операций

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

Re: Парсер математических операций

Добавлено: 21 апр 2009, 14:59
dr.Jekill
Я знаю три формы: обычную инфиксную, префиксную, когда знаки операций указываются перед аргументами, и постфиксную, когда все наоборот, если сравнивать с префиксом. Насколько я понял, суффикс - это постфикс. Или как?

Re: Парсер математических операций

Добавлено: 22 апр 2009, 13:12
atavin-ta
&quot писал(а):постфиксную
Суффиксная форма - другое название постфиксной. В принципе, применяются оба названия, но я не знаю, сколько из них правильные, и если одно одно, то какое.

Re: Парсер математических операций

Добавлено: 06 июн 2013, 23:47
timka23
Так всетаки как до конца были реализованы процедуры? Есть листинг конечного варианта?

Re: Парсер математических операций

Добавлено: 07 июн 2013, 10:31
dr.Jekill
timka23 писал(а):Так всетаки как до конца были реализованы процедуры? Есть листинг конечного варианта?
http://forum.codenet.ru/q53858

Re: Парсер математических операций

Добавлено: 07 июн 2013, 23:05
timka23
dr.Jekill писал(а):http://forum.codenet.ru/q53858
Thank you!