Главная страница
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.044 c
15-1148282530
АлексейК
2006-05-22 11:22
2006.06.18
К жителям Новосибирска


5-1133168076
DimaBr
2005-11-28 11:54
2006.06.18
ПодСвойство компонента


6-1139826721
BBCHa
2006-02-13 13:32
2006.06.18
Подмена IP и MAC адресов


2-1149175295
Asail
2006-06-01 19:21
2006.06.18
Как скопировать контрол в другой parent?


1-1146845274
Grihan
2006-05-05 20:07
2006.06.18
String to Date