Tweak it, beautify it
authoruho <uho@xlerb.de>
Sat, 2 Nov 2019 08:47:32 +0000 (09:47 +0100)
committeruho <uho@xlerb.de>
Sat, 2 Nov 2019 08:47:32 +0000 (09:47 +0100)
preForth/seedForth-i386.pre
preForth/seedForth-tokenizer.fs
preForth/seedForthDemo.seedsource

index 5c463f5..ad0483b 100644 (file)
@@ -366,10 +366,10 @@ code rp! ( x -- )
    h@ invoke ;
 
 : interpreter ( -- )
-   key execute   tail interpreter ;
+   key ?dup 0= ?exit  execute   tail interpreter ;
 
-: num ( -- x )
-   key ?dup 0= ?exit execute tail num ;
+: num ( -- x ) 
+   tail interpreter ;
 
 : ?lit ( xt -- xt )  
    h@ lit num - ?exit drop       \ not num token: exit i.e. normal compile action
@@ -465,7 +465,7 @@ code rp! ( x -- )
    lit rp!         h, \ 49  31
    lit $lit        h, \ 50  32
    lit num         h, \ 51  33
-   tail interpreter ;
+   interpreter bye ;
 
 pre
  _start: DB 43
index 625d78b..05d9aa6 100644 (file)
@@ -41,7 +41,7 @@ VARIABLE OUTFILE
 : <name> ( -- c-addr u )  bl word count ;
 
 Variable #tokens  0 #tokens !
-: Token ( <name> -- )
+: Token ( <name> -- )  cr #tokens @ base @ >r hex 3 u.r r> base ! space >in @ <name> type >in !
    :noname  
    #tokens @  postpone LITERAL  postpone SUBMIT  postpone ;  
    <name> 
@@ -59,19 +59,19 @@ Variable #tokens  0 #tokens !
     <name> token@ dup 0= Abort" is undefined"    postpone LITERAL   postpone EXECUTE ; immediate
 
 
-Token bye       Token emit          Token key        Token dup
-Token swap      Token drop          Token 0<         Token ?exit
-Token >r        Token r>            Token -          Token exit
-Token lit       Token @             Token c@         Token !
-Token c!        Token execute       Token branch     Token ?branch
-Token negate    Token +             Token 0=         Token ?dup
-Token cells     Token +!            Token h@         Token h,
-Token here      Token allot         Token ,          Token c,  
-Token fun       Token interpreter   Token compiler   Token create
-Token does>     Token cold          Token depth      Token compile,
-Token new       Token couple        Token and        Token or
-Token catch     Token throw         Token sp@        Token sp!
-Token rp@       Token rp!           Token $lit       Token num
+(  0 $00 ) Token bye       Token emit          Token key        Token dup
+(  4 $04 ) Token swap      Token drop          Token 0<         Token ?exit
+(  8 $08 ) Token >r        Token r>            Token -          Token exit
+( 12 $0C ) Token lit       Token @             Token c@         Token !
+( 16 $10 ) Token c!        Token execute       Token branch     Token ?branch
+( 20 $14 ) Token negate    Token +             Token 0=         Token ?dup
+( 24 $18 ) Token cells     Token +!            Token h@         Token h,
+( 28 $1C ) Token here      Token allot         Token ,          Token c,  
+( 32 $20 ) Token fun       Token interpreter   Token compiler   Token create
+( 36 $24 ) Token does>     Token cold          Token depth      Token compile,
+( 40 $28 ) Token new       Token couple        Token and        Token or
+( 44 $2C ) Token catch     Token throw         Token sp@        Token sp!
+( 48 $30 ) Token rp@       Token rp!           Token $lit       Token num
 
 
 \ generate token sequences for numbers
@@ -121,7 +121,7 @@ Token rp@       Token rp!           Token $lit       Token num
 Macro END ( -- )
    .S CR 0 SUBMIT OUTFILE @ CLOSE-FILE THROW BYE end-macro
 
-Macro [ ( -- )  0 SUBMIT end-macro  \ bye
+Macro [ ( -- )  seed bye      end-macro  \ bye
 Macro ] ( -- )  seed compiler end-macro  \ compiler
 
 Macro : ( <name> -- ) seed fun  Token  end-macro
index d808d3b..b8bb746 100644 (file)
@@ -395,6 +395,10 @@ t{ 60 5 a !  0 a @  1 a @  2 a @  3 a @  4 a @   5 a @  -> 10 20 30 40 50 60 }t
 
 
 : done ( -- )  cr ." done" cr ; done
+
+\ How to compile bye that normally exits the compile and interpret loop
+\ : goodbye  lit [ key bye , ] execute ; 
+
 \ cr  'd'  emit 'o'  emit 'n'  emit 'e'  emit cr
 
 \ hi