version 1.2, 2011/10/05 20:56:45
|
version 1.5, 2011/10/05 21:09:05
|
Line 26
|
Line 26
|
:noname ( ... nt -- ) name>int compile, ; |
:noname ( ... nt -- ) name>int compile, ; |
:noname ( ... nt -- ) name>comp execute ; |
:noname ( ... nt -- ) name>comp execute ; |
:noname ( ... nt -- ) postpone Literal ; |
:noname ( ... nt -- ) postpone Literal ; |
recognizer: r:int-table |
recognizer: r:interpreter |
|
|
:noname ( addr u -- nt int-table true | addr u false ) |
:noname ( addr u -- nt int-table true | addr u false ) |
2dup find-name [ [IFDEF] prelude-mask ] run-prelude [ [THEN] ] dup |
2dup find-name [ [IFDEF] prelude-mask ] run-prelude [ [THEN] ] dup |
IF |
IF |
nip nip r:int-table true EXIT |
nip nip r:interpreter true EXIT |
THEN ; Constant int-recognizer |
THEN ; Constant int-recognizer |
|
|
' noop |
' noop |
Line 53 recognizer: r:2number
|
Line 53 recognizer: r:2number
|
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# |
Line 77 num-recognizer int-recognizer 2 forth-re
|
Line 79 num-recognizer int-recognizer 2 forth-re
|
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 @ ; |
Line 93 num-recognizer int-recognizer 2 forth-re
|
Line 95 num-recognizer int-recognizer 2 forth-re
|
\G Enter compilation state. |
\G Enter compilation state. |
['] compiler-r IS parser1 state on ; |
['] compiler-r IS parser1 state on ; |
|
|
|
: postpone ( "name" -- ) \ core |
|
\g Compiles the compilation semantics of @i{name}. |
|
parse-name forth-recognizer do-recognizer >r |
|
r@ r>lit perform r> r>comp @ compile, ; immediate |
|
|