version 1.9, 2011/10/06 20:47:38
|
version 1.10, 2011/10/06 21:02:57
|
Line 24
|
Line 24
|
:noname ( ... nt -- ) name>int execute ; |
:noname ( ... nt -- ) name>int execute ; |
:noname ( ... nt -- ) name>comp execute ; |
:noname ( ... nt -- ) name>comp execute ; |
:noname ( ... nt -- ) postpone Literal ; |
:noname ( ... nt -- ) postpone Literal ; |
Create r:interpreter rot A, swap A, A, |
Create r:word rot A, swap A, A, |
|
|
: int-recognizer ( addr u -- nt int-table true | addr u false ) |
: word-recognizer ( 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:interpreter true EXIT |
nip nip r:word true EXIT |
THEN ; |
THEN ; |
|
|
' noop |
' noop |
:noname postpone Literal ; |
:noname postpone Literal ; |
dup |
dup |
Create r:number rot A, swap A, A, |
Create r:num rot A, swap A, A, |
|
|
' noop |
' noop |
:noname postpone 2Literal ; |
:noname postpone 2Literal ; |
dup |
dup |
Create r:2number rot A, swap A, A, |
Create r:2num rot A, swap A, A, |
|
|
\ snumber? should be implemented as recognizer stack |
\ snumber? should be implemented as recognizer stack |
|
|
: num-recognizer ( addr u -- n/d int-table true | addr u false ) |
: num-recognizer ( addr u -- n/d int-table true | addr u false ) |
2dup 2>r snumber? dup |
2dup 2>r snumber? dup |
IF |
IF |
2rdrop 0> IF r:2number ELSE r:number THEN true EXIT |
2rdrop 0> IF r:2num ELSE r:num THEN true EXIT |
THEN |
THEN |
drop 2r> false ; |
drop 2r> false ; |
|
|
Line 70 $10 Constant max-rec#
|
Line 70 $10 Constant max-rec#
|
|
|
Variable forth-recognizer |
Variable forth-recognizer |
|
|
' int-recognizer A, ' num-recognizer A, max-rec# 2 - cells allot |
' word-recognizer A, ' num-recognizer A, max-rec# 2 - cells allot |
2 forth-recognizer ! |
2 forth-recognizer ! |
\ ' num-recognizer ' int-recognizer 2 forth-recognizer set-recognizers |
\ ' num-recognizer ' word-recognizer 2 forth-recognizer set-recognizers |
|
|
\ recognizer loop |
\ recognizer loop |
|
|