FORGET works with vocabularies. Updated readme.
[forth.jl.git] / src / lib_1_basic.4th
index 1764723..b6f75e4 100644 (file)
 : 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
-;
+\ Address containing LFA of most recent definition
+: LATEST
+    CURRENT @ 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
+        LINK>           \ get the codeword
         ,               \ compile it
 ;