Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.28;
Скачать: CL | DM;

Вниз

Создание интерпретатора   Найти похожие ветки 

 
Юкс   (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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.061 c
3-1077839733
Rauf
2004-02-27 02:55
2004.03.28
Помогите с TDBComboBox


14-1077629077
raymond
2004-02-24 16:24
2004.03.28
Друзья, как мне скопировать копию рабочего стола в буфер?


14-1077711896
Mystic
2004-02-25 15:24
2004.03.28
Работы Р. Пенроуза (атака тайны разума, ИИ)


8-1069441364
Eagle Owl
2003-11-21 22:02
2004.03.28
Direct3DRM


7-1072511631
Evgeniy_K
2003-12-27 10:53
2004.03.28
Заголовок активного окна