EXIT
[ IMMEDIATE
-: / /MOD DROP ;
-: MOD /MOD SWAP DROP ;
-: NEG 0 SWAP - ;
-
: IF IMMEDIATE
' 0BRANCH ,
HERE @
HERE @
;
+: AGAIN IMMEDIATE
+ ' BRANCH ,
+ HERE @ - , ;
+
+: ( IMMEDIATE
+ BEGIN
+ READ-WORD
+ 1 = IF
+ C@ 41 = IF
+ EXIT
+ THEN
+ ELSE
+ DROP
+ THEN
+ AGAIN ;
+
: UNTIL IMMEDIATE
' 0BRANCH ,
HERE @ - ,
;
-: FIB
- 0 1
- 0
- BEGIN
- ROT
- DUP ROT +
- ROT ROT
+( Compile a literal value into the current word. )
+: LIT, IMMEDIATE ( x -- )
+ ' LIT , , ;
- 1 +
- DUP 4 PICK = UNTIL
- DROP SWAP DROP SWAP DROP
-;
+: / /MOD DROP ;
+: MOD /MOD SWAP DROP ;
+: NEG 0 SWAP - ;
+
+: C,
+ HERE @ C!
+ HERE @ 1 +
+ HERE ! ;
-S" 10 FIB = " TELL
-10 FIB .U
-S" (Expected: 59)" TELL NEWLINE
+: OVER ( a b -- a b a ) SWAP DUP ROT ;
+( Compile the given string into the current word directly. )
+: STORE-STRING ( str len -- )
+ BEGIN
+ OVER C@ C,
+ SWAP 1 + SWAP
+ 1 - DUP 0 = UNTIL
+ DROP DROP ;