Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.25;
Скачать: [xml.tar.bz2];




Вниз

Нетривиальная задачка... 


Fellomena   (2002-02-08 13:52) [0]

Привет всем !
Укажите направление plz для того что бы реализовать следующую штуку:
есть некая ф-ия типа:

function MyMathFunc(i, j, k: extended): extended;
begin
Result:= i*j*k;
end;

Есть на моей форме Edit1 в который я ввожу следующее:
i/j*k
Мне необходимо, что бы в моей ф-ии MyMathFunc значение Result соответственно стало не i*j*k, а
то, которое я ввожу в Edit1, т.е. в данном случае i/j*k
Это на инторпретатор смахивает, но с фиксированным числом входящих данных и фиксированным типом.



Виктор Щербаков   (2002-02-08 14:01) [1]

Реализуй синтаксический разбор методом рекурсивного спуска.



wicked   (2002-02-08 14:03) [2]

всё равно интерпретатор... :)
хотя и не сложно.... для него нам потребуется:
1) сканнер (лексический анализатор)
2) собс-но парсер

в сканнерах я не силён, но есть прокрасный набор программ - tpLexYacc... Lex"ом из него можно сгенерировать недурственный сканнер....
а парсер - дело простое: 2 стека, алгоритм Дийкстры и час работы... :)



Fellomena   (2002-02-08 14:12) [3]

Это всё здорово конечно, но кто мне объяснит сам механизм перевода строки в код ?
Ведь моя программа в дальнейшем должна будет обращаться к моей ф-ии.
А как быть с адресом этой ф-ии ? Табличка адресов в проге формируется на этапе компановке, а при
изменении Result в ф-ии, в АП процесса наверняка произойдёт перераспределение адресов ?



wicked   (2002-02-08 14:20) [4]

2 Fellomena
так функция твоя и будет интерпретатором....
надо сначала разобрать введенное выражение во внутреннее представление, а потом, при вызове функции, интерпретировать его..



Виктор Щербаков   (2002-02-08 14:37) [5]

Берем книгу Б.Страуструпа "Язык программирования С++".
Смотрим пример "Калькулятор". Пишем нечто похожее на Delphi.



Fellomena   (2002-02-08 14:46) [6]

Ясно, спасибо.
Геморно это очень... но рано или поздно мне это придётся делать, хорошо хоть не сейчас...
будем знать 8\



kig   (2002-02-08 15:52) [7]

А может тогда проще подключить интерпретатор JScript?
Чтобы геммороя поменьше?



Ura   (2002-02-08 16:09) [8]

> Fellomena
Скинуть анализатор? (первая версия - с исходным кодом. Дохловат пока, но переменные однобуквенные разбирает...)




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.25;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.72 MB
Время: 0.021 c
1-79322           Mistery               2002-02-07 18:15  2002.02.25  
П - а - м - а - г - а - и - г - и - т - е .


1-79384           С_тоша                2002-02-06 18:05  2002.02.25  
Мастера Очень нужно


4-79510           Electric              2001-12-24 05:24  2002.02.25  
кнопкой превать цикл


1-79374           kingdom               2002-02-08 18:20  2002.02.25  
Где взять библиотеку чтобы SMSки посылать?


1-79342           MaxSit                2002-02-07 12:12  2002.02.25  
QuickReport: Сохранение отчета в файл (TXT,HTML,DOC,.....)