Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2005.06.06;
Скачать: [xml.tar.bz2];

Вниз

Люди помогите   Найти похожие ветки 

 
IceMan   (2004-10-20 12:04) [0]

Я описал тип
type
TFunction:function(x:real):real;
Мне надо написать функцию перевода строки в этот тип.
function StrToFunction(s:string):TFunction;

Например:
var
  S:string;
...
Begin
 S:="cos(x)+5*sin(2+3*x)";
Как Сделать так что-бы эту фигню прога воспринимала как функцию


 
Андрей ©   (2004-10-20 12:55) [1]

Вообще-то вопрос не по теме конференции...
И удалит его модератор...
Но я отвечу, т.к. настроение у меня сегодня хорошее :)

Как ты думаешь, зачем нужен компилятор?
Ну, собственно, неважно, что ты думаешь, суть в следующем

Если ты напишешь в программе

y:=cos(x)+5*sin(2+3*x);

то компилятор проанализирует синтаксис этой конструкции на соответствие правилам своего языка, и, если все правильно,
откомпилирует это в следующую цепочку действий (примерно,
поэтому прошу ногами не пинать)

1. Взять значение X и поместить его в стек сопроцессора
2. Поместить 3 в стек сопроцессора
3. Перемножить два верхних числа и результат поместить обратно в стек сопроцессора
4. Поместить 2 в стек сопроцессора
5. Сложить два верхних числа и результат поместить обратно в стек сопроцессора
6. Взять значение X и занести его в регистры или обычный стек
7. Вызвать функцию cos
8. Полученный результат поместить из регистров в стек сопроцессора
9. Сложить два верхних числа и результат поместить обратно в стек сопроцессора
10. Взять верхнее число из стека сопроцессора и поместить его в ячейку Y

Причем это будет ФИКСИРОВАНЫЙ порядок действий, и если ты захочешь его изменить, программу надо перекомпилировать.

Интрепретатор поступает немного иначе, он может проверить синтаксис и перевести код во внутреннее предстваление, а на момент исполнения брать каждую команду и выполнять ее.

Теперь о твоей конструкции
S:="cos(x)+5*sin(2+3*x)";

Это просто строковая константа, которую компилятор
сохранит в область данных, а в коде будет присвоение и ничего более.
-------
Значит, чтобы реализовать свою задачу, ты должен написать СВОЙ синтаксический анализатор и, например, интерпретатор.
Или взять готовый и встроить в свою программу.

В любом случае, ни Delphi ни KOL тебе не помогут.
Если хочешь поручить разбор такой конструкции компилятору своего кода, пиши программу на FoxPro


 
Gandalf ©   (2004-10-30 13:01) [2]

Тебе нужн парсер. Это оффтоп. Иди на torry.



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

Форум: "KOL";
Текущий архив: 2005.06.06;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.017 c
4-1113818560
Vyacheslav
2005-04-18 14:02
2005.06.06
Как выбрать директорию с помощю Dialog - a ???


4-1113834123
Nomolos
2005-04-18 18:22
2005.06.06
Проблема с ловушкой для мыши


1-1116657594
seregka
2005-05-21 10:39
2005.06.06
Параграфы в Richedit


9-1105379372
Trof
2005-01-10 20:49
2005.06.06
Glscene


3-1114773445
Шурик
2005-04-29 15:17
2005.06.06
Сервисные функции с БД





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский