Форум: "Основная";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];
ВнизСоздание интерпретатора Найти похожие ветки
← →
Юкс (2004-03-04 10:28) [0]В текстовом файле находится несколько формул. Например:
сумма = переменная1 * переменная2 + переменная3
Переменная1 = 2 + переменная3
Переменная2 = 5 * переменная1
Переменная3 = Переменная2 / 4
ну и так далее. еще заданы начальные значения. надо проделать несколько шагов, на каждом шаге вычисляя значения. Подскажите, как бы вы это сделали? Я не могу придумать, как делать макроподстановку, как применять нужную арифметическую операцию... Ведь выражения могут быть сложные, и операции могут быть не только +-*/, а еще и всякие синусы...
← →
Тимохов © (2004-03-04 10:30) [1]Интересно как в данном случае вообще что-то можно посчитать
3 зависит от 2, 2 от 1, 1 от 3.
На лица цикл...
← →
Юкс (2004-03-04 10:39) [2]Ну и пусть цикл. На каждом шаге при вычислении берутся значения предыдущего шага.
← →
pasha_golub © (2004-03-04 10:42) [3]Ну, ваапще-то, задача нетривиальная. И действительно нужно писать интерпретатор или взять готовый. Например, с www.torry.net
Там их есть, потому как я уже использовал компонент оттуда. Правда, не помню как называется.
← →
Тимохов © (2004-03-04 10:45) [4]Т.е. это цикл.
Значения переменных надо хранить в списке пар (НазваниеПеременной, Значение). Бежать в цикле по формулам и счиать.
В чем собственно проблема? Как парсер написать? Если да, то их до фига в сети. Особенно таких простых как ваш пример. Надо искать парсер с переменными.
← →
Юкс (2004-03-04 11:06) [5]А что такое парсер?
← →
wicked © (2004-03-04 11:51) [6]названия парсеров навскидку -
1. lua (http://www.lua.org/, для Це, но где то видел я паскалевский порт),
2. Innerfusion Pascal Script (полнеценный интерпретатор, адреса не знаю)
также, если есть желание, можно поиграться с Pascal lex и yacc - http://www.musikwissenschaft.uni-mainz.de/~ag/tply/tply.html - удовольствие и прилив опыта гарантированы.... :)
по теории - найти алгоритм Дийкстры по переводу нормальной записи выражений в обратную польскую нотацию - http://algolist.manual.ru/syntax/revpn.php - отпадет необходимость разбираться с yacc....
← →
Юкс (2004-03-04 12:53) [7]Спасибо большое!
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.03.28;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.035 c