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

Общие вопросы: версии и диалекты, синтаксис языка, cтруктуры и типы данных (массивы, строки, списки...), обработка данных и т.д.
atavin-ta
Сообщения: 572
Зарегистрирован: 30 янв 2009, 06:38

31 мар 2009, 10:07

&quot писал(а):А реальное построение дерева - это обязательное условие?
У меня, например, есть рекурсивная функция, которая интерпретирует даже гораздо более сложные выражения. Она не использует деревьев. Но само рекурсивное её выполнение как раз происходит в соответствии с иерархией операций в выражении.
То есть дерево неявно подразумевается?
А зачем вообще мучиться с инфиксом? Не проще ли транслировать его в суфикс?
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
dr.Jekill
Сообщения: 509
Зарегистрирован: 03 янв 2009, 23:17
Откуда: Voronezh
Контактная информация:

20 апр 2009, 15:21

Что за суффикс?
Нет религии выше истины
atavin-ta
Сообщения: 572
Зарегистрирован: 30 янв 2009, 06:38

21 апр 2009, 06:57

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

21 апр 2009, 14:59

Я знаю три формы: обычную инфиксную, префиксную, когда знаки операций указываются перед аргументами, и постфиксную, когда все наоборот, если сравнивать с префиксом. Насколько я понял, суффикс - это постфикс. Или как?
Нет религии выше истины
atavin-ta
Сообщения: 572
Зарегистрирован: 30 янв 2009, 06:38

22 апр 2009, 13:12

&quot писал(а):постфиксную
Суффиксная форма - другое название постфиксной. В принципе, применяются оба названия, но я не знаю, сколько из них правильные, и если одно одно, то какое.
Вопрос: "Почему вы все сионисты? Нельзя ли писать на чём то другом?".
Ответ: "Писать можно на чём угодно. Но зачем же так себя ограничивать? Пиши на С!".
timka23
Сообщения: 2
Зарегистрирован: 13 дек 2010, 15:23

06 июн 2013, 23:47

Так всетаки как до конца были реализованы процедуры? Есть листинг конечного варианта?
dr.Jekill
Сообщения: 509
Зарегистрирован: 03 янв 2009, 23:17
Откуда: Voronezh
Контактная информация:

07 июн 2013, 10:31

timka23 писал(а):Так всетаки как до конца были реализованы процедуры? Есть листинг конечного варианта?
http://forum.codenet.ru/q53858
Нет религии выше истины
timka23
Сообщения: 2
Зарегистрирован: 13 дек 2010, 15:23

07 июн 2013, 23:05

dr.Jekill писал(а):http://forum.codenet.ru/q53858
Thank you!
Ответить