Здравствуйте, FR, Вы писали:
DK>>>Хотя, Форт — язык для создания прикладных языков...
VG>>...Вы не находите господа, что о чём бы ни начали разговор в этом форуме, всё в итоге сводится к DSL.
FR>Дык мода
FR>Хотя форт это совсем другая философия, ее современные любители DSL обычно не признают
Я вот сейчас ваяю конструктор со своим скриптом, редактором формочек, всё это в мскульной БД.
Пример:
Редактор записи вьюшки:
'ViewEditor.rec' uses
'ScriptList_VIEW.rec.form' form
'Form::Show' :
'Name' dataset.getfield 'text' 'edName' setprop
'Title' dataset.getfield 'text' 'edTitle' setprop
'Text' dataset.getfield 'text' 'mText' setprop
;
'btnOK::Click' :
dataset.edit
'text' 'edName' getprop 'Name' dataset.setfield
'text' 'edTitle' getprop 'Title' dataset.setfield
'text' 'mText' getprop 'Text' dataset.setfield
dataset.post
'close' 'Form' call
;
'btnCancel::Click' :
dataset.newcancel
'close' 'Form' call
;
'btnDesigner::Click' :
'text' 'mText' getprop designer.show
'text' 'mText' setprop
;
'btnTest::Click' :
'text' 'mText' getprop eval
'showmodal' 'Form' call drop
;
'edName::Change' :
'text' 'edName' getprop script.isform
dup 'enabled' 'btnDesigner' setprop
'enabled' 'btnTest' setprop
;
'show' 'Form' call
Форма редактора записи вьюшки:
'form' ctrl:
'Form' 'name' :prop
'Скрипт' 'text' :prop
8 'border' :prop
241 'left' :prop
107 'top' :prop
542 'width' :prop
553 'height' :prop
'label' ctrl:
'&Имя:' 'text' :prop
0 'left' :prop
0 'top' :prop
520 'width' :prop
16 'height' :prop
;ctrl
'label' ctrl:
'&Название:' 'text' :prop
0 'left' :prop
40 'top' :prop
520 'width' :prop
16 'height' :prop
;ctrl
'label' ctrl:
'&Текст:' 'text' :prop
0 'left' :prop
80 'top' :prop
520 'width' :prop
16 'height' :prop
;ctrl
'edit' ctrl:
'edName' 'name' :prop
'edName' 'text' :prop
0 'left' :prop
16 'top' :prop
520 'width' :prop
24 'height' :prop
;ctrl
'edit' ctrl:
'edTitle' 'name' :prop
'edTitle' 'text' :prop
0 'left' :prop
56 'top' :prop
520 'width' :prop
24 'height' :prop
;ctrl
'memo' ctrl:
'mText' 'name' :prop
'mText' 'text' :prop
3 'scrollbars' :prop
true 'fixedfont' :prop
0 'left' :prop
96 'top' :prop
520 'width' :prop
376 'height' :prop
;ctrl
'button' ctrl:
'btnOK' 'name' :prop
'OK' 'text' :prop
true 'default' :prop
352 'left' :prop
480 'top' :prop
80 'width' :prop
24 'height' :prop
;ctrl
'button' ctrl:
'btnCancel' 'name' :prop
'Отмена' 'text' :prop
true 'cancel' :prop
440 'left' :prop
480 'top' :prop
80 'width' :prop
24 'height' :prop
;ctrl
'button' ctrl:
'btnDesigner' 'name' :prop
'Дизайнер' 'text' :prop
0 'left' :prop
480 'top' :prop
64 'width' :prop
24 'height' :prop
;ctrl
'button' ctrl:
'btnTest' 'name' :prop
'Тест' 'text' :prop
72 'left' :prop
480 'top' :prop
64 'width' :prop
24 'height' :prop
;ctrl
;ctrl
Стековая машина на дельфях.
Пара тысяч строк кода.
Как основной тип данных Variant.
Удобно.
И скорость не особо низкая, т.к. компиляция + вызов не опкодов, а реальных процедур в виде методов объектов.