Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.18;
Скачать: CL | DM;

Вниз

Нужно в одном интерпретаторе добавить функцию   Найти похожие ветки 

 
cyborg ©   (2006-05-23 09:40) [0]

На одном сайте набрёл на интерпретатор паскаля - http://alexboiko.chat.ru/prod.html или этот же сайт на народе http://alexboiko.narod.ru/resume.html

Уже встроил в свой самопальный веб сервер для обработки pas-скриптов, всё работает, только не хватает одной функции по проверке существования переменной как в РНР - IsSet( переменная );.
Перед выполнением скрипта в интерпретатор добавляю переменные из GET и POST. В интерпретаторе, если сделать, к примеру:
WriteLn( PostVar );
и такой переменной нет, то выполнение скрипта завершится с ошибкой.

Хотельсь бы, чтобы можно было обработать так:

if IsSet( PostVar ) then WriteLn( PostVar );

Как я понял, для ввода такой функции нужно:
в TToken добавить tIsSet
в ResWords добавить имя функции ISSET
в процедуру TPasCalc.Exec добавить case t of ... tIsSet : DoIsSet(CmdLine,s); ...
создать процедуру TPasCalc.DoIsSet(CmdLine,Line:string);

только что писать в этой процедуре я так и не понял :)

Если кто знаком в теории компиляторов/интерпретаторов помогите пожалуйста! Я сам плохо знаю эти вещи.


 
cyborg ©   (2006-05-23 09:47) [1]

Забыл название и версию упомянуть
PASCALC Версия 3.0 b


 
wicked ©   (2006-05-23 12:15) [2]

я, конечно не помощник, но идею могу подбросить.....
на самом деле вещи типа IsSet - не в паскалевском стиле....
в паскалевском стиле было бы логичней завести глобальный хеш-массив (на уровне интерпретатора, конечно), к которому уже обращаться встроенными (дописанными в интерпретатор) функциями... набор функций прост - получить значение (2 версии: с подстановкой дефолтного значения в случае отсутствия и с выбросом ошибки), проверить, есть ли такое значение, установить значение, удалить значение....


 
cyborg ©   (2006-05-23 15:07) [3]

Спасибо. В общем сделал как ты сказал, функцию объявил и ищу переменную по названию. Вопрос, можно сказать, закрыт :)



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

Текущий архив: 2006.06.18;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.049 c
15-1148137010
YurikGL
2006-05-20 18:56
2006.06.18
Remote desktop в win200 Server потеря сеанса...


2-1149247422
XTD
2006-06-02 15:23
2006.06.18
Объясните как написать функцию с возвратом ?


2-1148978422
De
2006-05-30 12:40
2006.06.18
динамические массивы


15-1148563350
Pger
2006-05-25 17:22
2006.06.18
Работа через прокси


2-1148284846
SHAB
2006-05-22 12:00
2006.06.18
duplicatehanle() - getlast error()=6 ((