: C@ @ ;
: C, , ;
+\ Retrieve stack depth
: DEPTH PSP@ PSP0 - ;
+\ Words for whitespace
: '\n' 10 ;
: BL 32 ;
+: CR '\n' emit ;
+: SPACE BL emit ;
-: LITERAL IMMEDIATE ['] LIT , , ;
-
+\ CFA retrieval
: ' BL WORD FIND DROP ;
+: ['] IMMEDIATE
+ LIT LIT , ' , ;
+
+\ Compilation
+
+: [COMPILE] IMMEDIATE ' , ;
+: COMPILE IMMEDIATE
+ LIT LIT , ' , LIT , , ;
+
+: LITERAL IMMEDIATE ['] LIT , , ;
: CHAR BL WORD 1+ @ ;
: [CHAR] IMMEDIATE
['] LIT , ,
;
-: CR '\n' emit ;
-: SPACE BL emit ;
-
-: [COMPILE] IMMEDIATE
- BL WORD \ get the next word
- FIND DROP \ find it in the dictionary
- , \ and compile that
+\ Convert vocabulary CFA to link addr it contains
+: VOCAB>LATEST
+ 1+ @
;
+\ Compile in recursive call to current word
: RECURSE IMMEDIATE
- LATEST @ \ LATEST points to the word being compiled at the moment
- >CFA \ get the codeword
+ CURRENT @ VOCAB>LATEST
+ LINK> \ get the codeword
, \ compile it
;
-