( «®¢ ¥¬¥¤«¥®£® ¢ë¯®«¥¨ï, ¨á¯®«ì§ã¥¬ë¥ ¢ ०¨¬¥ ª®¬¯¨«ï樨.
-¥§ ¢¨á¨¬ë¥ ®¯à¥¤¥«¥¨ï.
Copyright [C] 1992-1999 A.Cherezov ac@forth.org
८¡à §®¢ ¨¥ ¨§ 16-à §à冷£® ¢ 32-à §àï¤ë© ª®¤ - 1995-96££
¥¢¨§¨ï - á¥âï¡àì 1999
®¤¨ä¨æ¨à®¢ ® ªá¨¬®¢ë¬ ..
email:mak@mail.rtc.neva.ru
http://informer.rtc.neva.ru/
â ¤ {812}105-92-03
â à {812}552-47-64
)
: TO \ 94 CORE EXT
\ â¥à¯à¥â æ¨ï: ( x "<spaces>name" -- )
\ யãáâ¨âì ¢¥¤ã騥 ¯à®¡¥«ë ¨ ¢ë¤¥«¨âì name, ®£à ¨ç¥®¥ ¯à®¡¥«®¬.
\ ¯¨á âì x ¢ name. ¥®¯à¥¤¥«¥ ï á¨âã æ¨ï ¢®§¨ª ¥â, ¥á«¨ name ¥
\ ®¯à¥¤¥«¥® ç¥à¥§ VALUE.
\ ®¬¯¨«ïæ¨ï: ( "<spaces>name" -- )
\ யãáâ¨âì ¢¥¤ã騥 ¯à®¡¥«ë ¨ ¢ë¤¥«¨âì name, ®£à ¨ç¥®¥ ¯à®¡¥«®¬.
\ ®¡ ¢¨âì ᥬ ⨪㠢६¥¨ ¢ë¯®«¥¨ï, ¤ ãî ¨¦¥, ª ⥪ã饬㠮¯à¥¤¥«¥¨î.
\ ¥®¯à¥¤¥«¥ ï á¨âã æ¨ï ¢®§¨ª ¥â, ¥á«¨ name ¥ ®¯à¥¤¥«¥® ç¥à¥§ VALUE.
\ à¥¬ï ¢ë¯®«¥¨ï: ( x -- )
\ ¯¨á âì x ¢ name.
\ ਬ¥ç ¨¥: ¥®¯à¥¤¥«¥ ï á¨âã æ¨ï ¢®§¨ª ¥â, ¥á«¨ POSTPONE ¨«¨ [COMPILE]
\ ¯à¨¬¥ïîâáï ª TO.
'
>BODY CELL+ STATE @
IF COMPILE, ELSE EXECUTE THEN
; IMMEDIATE
: COMPILE,_M COMPILE, ;
: POSTPONE \ 94
\ â¥à¯à¥â æ¨ï: ᥬ ⨪ ¥ ®¯à¥¤¥«¥ .
\ ®¬¯¨«ïæ¨ï: ( "<spaces>name" -- )
\ யãáâ¨âì ¢¥¤ã騥 à §¤¥«¨â¥«¨. 뤥«¨âì ¨¬ï, ®£à ¨ç¥®¥ ¯à®¡¥« ¬¨.
\ ©â¨ ¨¬ï. ®¡ ¢¨âì ᥬ ⨪㠪®¬¯¨«ï樨 ¨¬¥¨ ¢ ⥪ã饥 ®¯à¥¤¥«¥¨¥.
?COMP
PARSE-WORD SFIND DUP
0= IF -321 THROW THEN
1 = IF COMPILE,
ELSE LIT, ['] COMPILE,_M COMPILE, THEN
; IMMEDIATE
: \ \ 94 CORE EXT
\ ®¬¯¨«ïæ¨ï: 믮«¨âì ᥬ ⨪㠢믮«¥¨ï, ¤ ãî ¨¦¥.
\ 믮«¥¨¥: ( "ccc<eol>" -- )
\ 뤥«¨âì ¨ ®â¡à®á¨âì ®áâ ⮪ à §¡¨à ¥¬®© ®¡« áâ¨.
\ \ - á«®¢® ¥¬¥¤«¥®£® ¨á¯®«¥¨ï.
1 PARSE 2DROP
; IMMEDIATE
: .( \ 94 CORE EXT
\ ®¬¯¨«ïæ¨ï: 믮«¨âì ᥬ ⨪㠢믮«¥¨ï, ¤ ãî ¨¦¥.
\ 믮«¥¨¥: ( "ccc<paren>" -- )
\ 뤥«¨âì ¨ ¢ë¢¥á⨠¤¨á¯«¥© ccc, ®£à ¨ç¥ë¥ ¯à ¢®© ᪮¡ª®© ")".
\ .( - á«®¢® ¥¬¥¤«¥®£® ¨á¯®«¥¨ï.
[CHAR] ) PARSE TYPE
; IMMEDIATE
: ( ( "ccc<paren>" -- ) \ 94 FILE
\ áè¨à¨âì ᥬ ⨪ã CORE (, ¢ª«î稢:
\ ®£¤ à §¡¨à ¥âáï ⥪áâ®¢ë© ä ©«, ¥á«¨ ª®¥æ à §¡¨à ¥¬®© ®¡« á⨠¤®á⨣ãâ
\ à ìè¥, 祬 ©¤¥ ¯à ¢ ï ᪮¡ª , ᮢ § ¯®«¨âì ¢å®¤®© ¡ãä¥à á«¥¤ãî饩
\ áâப®© ¨§ ä ©« , ãáâ ®¢¨âì >IN ¢ ®«ì ¨ ¯à®¤®«¦ âì à §¡®à, ¯®¢â®àïï
\ íâ®â ¯à®æ¥áá ¤® â¥å ¯®à, ¯®ª ¥ ¡ã¤¥â ©¤¥ ¯à ¢ ï ᪮¡ª ¨«¨ ¥
\ ¡ã¤¥â ¤®á⨣ãâ ª®¥æ ä ©« .
BEGIN
[CHAR] ) DUP PARSE + C@ = 0=
WHILE
REFILL 0= IF EXIT THEN
REPEAT
; IMMEDIATE
: [COMPILE] \ 94 CORE EXT
\ â¥à¯à¥â æ¨ï: ᥬ ⨪ ¥®¯à¥¤¥«¥ .
\ ®¬¯¨«ïæ¨ï: ( "<spaces>name" -- )
\ யãáâ¨âì ¢¥¤ã騥 ¯à®¡¥«ë. 뤥«¨âì name, ®£à ¨ç¥®¥ ¯à®¡¥« ¬¨.
\ ©â¨ name.
᫨ ¨¬ï ¨¬¥¥â ¨ãî ᥬ ⨪㠪®¬¯¨«ï樨, 祬 "¯®-㬮«ç ¨î",
\ ¤®¡ ¢¨âì ¥¥ ¢ ⥪ã饥 ®¯à¥¤¥«¥¨¥; ¨ ç¥ ¤®¡ ¢¨âì ᥬ ⨪㠢믮«¥¨ï name.
\ ¥®¯à¥¤¥«¥ ï á¨âã æ¨ï ¢®§¨ª ¥â, ¥á«¨ name ¥ ©¤¥®.
?COMP
'
COMPILE,
; IMMEDIATE
: ; [;] ; IMMEDIATE
: [;] ( -- )
RET, [COMPILE] [ REVEAL
ClearJpBuff
0 TO LAST-NON
;
: EXIT
RET,
; IMMEDIATE
: \EOF ( -- )
\ ª 稢 ¥â âà á«ïæ¨î ⥪ã饣® ¯®â®ª
BEGIN REFILL 0= UNTIL
POSTPONE \
;
: FIELD ( offset size "new-name< >" -- offset+size )
: OVER
DUP IF DUP LIT, ['] + COMPILE,
THEN DROP
POSTPONE ;
+ ;
0 [IF]
: --
CREATE OVER , +
(DOES1) (DOES2) @ +
;
[ELSE]
: -- FIELD ;
[THEN]