Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
Скинуть анализатор? (первая версия - с исходным кодом. Дохловат пока, но переменные однобуквенные разбирает...)



Страницы: 1 вся ветка

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

Наверх





Память: 0.45 MB
Время: 0.004 c
14-79458
fliz
2002-01-04 16:19
2002.02.25
каким местом издает звук винчестер???


3-79277
Johnmen
2002-01-30 11:46
2002.02.25
Подключенные user а к IB DB


1-79336
ASV
2002-02-08 02:57
2002.02.25
Кодировка


3-79265
DmitryB
2002-01-31 00:17
2002.02.25
Как создать простейшую таблицу


1-79402
Loxly
2002-02-09 18:36
2002.02.25
Как узнать ширину (width) строки, отображаемой в TMemo?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский