1. Eerst een voorbeeld
- In dit voorbeeld zijn de GATE-woorden gemarkeerd.
- Typ KWIT en de zaak gaat lopen.
Je kunt KWIT weer verlaten door een fout te maken.
- Om niet in details te verzanden worden double numbers niet ondersteund.
: snumber ( a n -- x ) \ string -> single number
over c@ [char] - =
over 1 > and >r \ minteken?
r@ if 1 /string then
0 0 2swap >number
nip or abort" What's this? "
r> if negate then ;
: ?stack depth 0< if -4 throw then ;
gate interpred
gate compiling
gate executing
== interpred
state @ -if- goto compiling
goto executing
== executing
bl word dup c@ 0= -if- drop ?stack ." ok!" ready
find -if- execute goto interpred
count snumber
goto executing
== compiling
bl word dup c@ 0= -if- drop ?stack ." ok?" ready
find s>d -if- drop compile, goto compiling
( xt imm? ) -if- execute goto interpred
count snumber postpone literal
goto compiling
: kwit begin interpred refill 0= until ;