-' drop , ' LIT , ' LIT , ' , , ' EXECUTE-NUM , ' , , ' ; ,
-
-: i ' LIT , ' MODE , ' LIT , ' IWRITE-MODE , ' ! , ' ; ,
-
-\i
-\: e LIT MODE LIT EXECUTE-MODE ! ;
-\: :> word find here define-does ;
-\' :> \dup \define-does
-\: FINISH-" DROP STRING-END ;
-\: " STRING-START \: KLOOP KEY 34 =? JNZ: FINISH-" STRING-PUT JMP: KLOOP
-\:> " " swap lit lit , , lit lit , , ;
-\: IF JZ: \here \8 \+ \, ; word 2drop ;
-\:> IF \: DOIF LIT JZ: , HERE DUP , ;
-\: ELSE ;
-\:> ELSE \: DOELSE LIT JMP: , HERE DUP , SWAP HERE ! ;
-\: THEN ;
-\:> THEN \: DOTHEN HERE ! ;
-\: COMPILE-MODE dup
-\doif 2dup find dup
- \doif dup find-does dup
- \doif swap drop rot 2drop execute ;
- \dothen drop , 2drop ;
+' drop , ' lit , ' lit , ' , , ' execute-num , ' , , ' ; ,
+
+\ change interpreter semantics to "memorize-word"
+: memorizing ' lit , ' mode , ' lit , ' memorize-word , ' ! , ' ; ,
+
+\ memorize the compiler
+\memorizing
+\: executing lit mode lit execute-word ! ;
+\: FINISH-" drop string-end ;
+\: " string-start \: KLOOP key 34 =? JNZ: finish-" string-put JMP: KLOOP
+\: DO" \:> " " swap lit lit , , lit lit , , ;
+\: DOIF \:> IF lit JZ: , here dup , ;
+\: DOELSE \:> ELSE lit JMP: , here dup , swap here ! ;
+\: DOTHEN \:> THEN here ! ;
+\: COMPILE-WORD dup
+\doif 2dup find-does dup
+ \doif rot 2drop execute ;
+ \dothen drop 2dup find dup
+ \doif , 2drop ;