DOES для ТО

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

DOES для ТО

Oleg Shalyopa-2
Привет всем.

Есть идея получить возможность расширять семантику
выполнения части 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
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev