| |
|
| : recognizer: ( xt1 xt2 xt3 xt4 -- ) Create 2swap swap 2, swap 2, ; |
: recognizer: ( xt1 xt2 xt3 xt4 -- ) Create 2swap swap 2, swap 2, ; |
| |
|
| : r>int ( r-addr -- ) @ ; |
(field) r>int ( r-addr -- addr ) 0 cells , |
| : r>compint ( r-addr -- ) cell+ @ ; |
(field) r>compint ( r-addr -- ) 1 cells , |
| : r>comp ( r-addr -- ) cell+ cell+ @ ; |
(field) r>comp ( r-addr -- ) 2 cells , |
| : r>lit ( r-addr -- ) cell+ cell+ cell+ @ ; |
(field) r>lit ( r-addr -- ) 3 cells , |
| |
|
| :noname ( ... nt -- ) name>int execute ; |
:noname ( ... nt -- ) name>int execute ; |
| :noname ( ... nt -- ) name>int compile, ; |
:noname ( ... nt -- ) name>int compile, ; |
| THEN |
THEN |
| drop 2r> false ; Constant num-recognizer |
drop 2r> false ; Constant num-recognizer |
| |
|
| |
' no.extensions dup 2dup recognizer: r:fail |
| |
|
| \ recognizer stack |
\ recognizer stack |
| |
|
| $10 Constant max-rec# |
$10 Constant max-rec# |
| dup cell+ swap @ cells bounds ?DO |
dup cell+ swap @ cells bounds ?DO |
| I perform IF UNLOOP EXIT THEN |
I perform IF UNLOOP EXIT THEN |
| cell +LOOP |
cell +LOOP |
| no.extensions ; |
r:fail ; |
| |
|
| : interpreter-r ( addr u -- ... xt ) |
: interpreter-r ( addr u -- ... xt ) |
| forth-recognizer do-recognizer r>int ; |
forth-recognizer do-recognizer r>int @ ; |
| |
|
| : compiler-r ( addr u -- ... xt ) |
: compiler-r ( addr u -- ... xt ) |
| forth-recognizer do-recognizer r>comp ; |
forth-recognizer do-recognizer r>comp @ ; |
| |
|
| : [ ( -- ) \ core left-bracket |
: [ ( -- ) \ core left-bracket |
| \G Enter interpretation state. Immediate word. |
\G Enter interpretation state. Immediate word. |