Привет всем.
Есть идея получить возможность расширять семантику
выполнения части TO VALUE переменных.
Набросок реализации:
REQUIRE LAMBDA{ ~pinka\lib\lambda.f
WARNING @
WARNING 0!
: VALUE VALUE LAST-CFA @ @ DOES>A ! ;
WARNING !
: (does) \ offs -- xt f offs
?COMP >R
POSTPONE LAMBDA{
POSTPONE R>
R@ IF
R@ LIT,
POSTPONE -
THEN R>
;
: does> 0 (does) ; IMMEDIATE
: doesto> 9 (does) ; IMMEDIATE
: ;does \ xt f offs --
?COMP
>R POSTPONE }
R> LIT,
LAMBDA{
DOES>A @ +
TUCK CFL + -
SWAP 1+ !
} COMPILE,
; IMMEDIATE
Для примера, реализация элементов структуры в стиле
VALUE переменных может выглядеть следующим образом:
: _--- @ + ;
: _--@ _--- @ ;
: <_--AT doesat> _--- ;does ;
: (--) OVER VAR + <_--AT ;
: <_--C-TO doesto> _--- ! ;does ;
: <_--C+TO does> _--@ ;does <_--C-TO ;
: <_--W+TO does> _--- W@ ;does doesto> _--- W! ;does ;
: B-- 1 (--) does> _--- C@ ;does doesto> _--- C! ;does ; \ Байт
: W-- 2 (--) <_--W+TO ; \ Слово
: C-- CELL (--) <_--C+TO ; \ Ячейка CELL
: D-- 2 CELLS (--) \ Двойная ячейка
does> _--- 2@ ;does
doesto> _--- 2! ;does
;
С уважением, Олег.
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/_______________________________________________
Spf-dev mailing list
Spf-dev@...
https://lists.sourceforge.net/lists/listinfo/spf-dev