Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.022 c
1-1078905860
Аноним
2004-03-10 11:04
2004.03.28
Threads


8-1069269825
IgorB
2003-11-19 22:23
2004.03.28
Coordinats


1-1078939007
$tranger
2004-03-10 20:16
2004.03.28
Загурузка параметров из файлов, в частности INI


1-1078647906
GrayFace
2004-03-07 11:25
2004.03.28
Объект (и компонент) в компоненте не редактирует Object Inspector


14-1077957069
Seldon
2004-02-28 11:31
2004.03.28
Кто с математикой дружит?




   Наверх