Автор | Вопрос по Delphi7 [2к голда] |
Каким образом можно выполнить процедуру/комманду записанную в переменной типа String или AnsiString.
Т.е. есть, к примеру, строчная переменная:
s:='var i:integer; for i:=1 to 10 do n=n*i;' ;
комманды в ней являются тупо текстом, а нужно их выполнить.
Есть ли такая возможность и как реализуется? |
3к |
4к |
На Паскале только переписать все команды) Т.е. Паскаль заново.
В Дельфи кажись была функция преобразующая тхт-файл в команды. Но память уже не та)
Тема следующая - заносишь эту строчную в текстовой файл и его закидываешь в функцию. |
для Йопсель:
Ну такой вариант тоже сойдет, знать бы как это сделать |
Вот может кто и вспомнит с подсказки.)
Хотя это быдлокодинг, наверняка есть способ и без создания тхт |
скажи что надо написать на делфи что за прога? |
для САНТИАГА:
Делаю интерпретатор+транслятор(позже и компилятор) другого малоизвестного языка программирования.
Именно для транслятора мне требуется динамически менять, переводить на язык Дэлфи и проверять на ошибки программы которые юзер будет писать на другом языке |
8+
Собственно можно и без такого хода обойтись, но прога будет втрое длиннее, а перевод получится более тупой.
(интерпретатор пишу для языков Brainf*ck, Brainfork, COW, думаю еще над интерпретатором Whitespace и Piet) |
5k(разорюсь с такими апами скоро) |
6к(я помогу тебя разорить))))))) |
6к |
7к |
Не понял самого вопроса.
Команды находятся в файле *.txt, оттуда их считываем и выполняем? В каком месте выполняем? Нужел ли блок обрабатывания ошибок и тд.?
for(int i=0; i<str.length(); i++) {} // цикл считывания введеных параметров |
Кхм) Прошу меня извинить) Недочитал)
По вопросу все ясно) |
для SunJava:
В общем команды находятся в строчной переменной, причем они заранее неизвестны, а появляются в процессе выполнения программы(поэтому и не могу их просто так прописать), другими словами - моя прога на ходу пишет другие проги либо в переменную либо в текстовый файл, а нужно чтобы она их еще выполнять могла.
for(int i=0; i<str.length(); i++) {}
в строке не параметры, а целая программа на паскале с условиями, циклами и т.д. |
хм, сам подожду ответа, ибо тож интересно) |
для Повешенный:
а вообще, можно написать интерпретатор, который бут посимвольно считывать текст и пытаццо выполнить чего-то там заданное заранее в случае чего) |
Если текст проги пишется в файл, то меняем у этого файла расширение на паскалевский и пытаемся вызвать прогу соответсвующей процедурой.
Давно уже паскаль изучал, но в принципе можно вызвать прогу из файла. |
алгоритм примерно такой:
Предварительно
- Создать набор класов операторов
- создать набор шаблонов для распознания операторов и их параметров
Распарсить текст на составляющие операторы с помощью шаблонов и выполнить их |