| ' no.extensions dup dup Create r:fail A, A, A, |
' no.extensions dup dup Create r:fail A, A, A, |
| |
|
| : lit, ( n -- ) postpone Literal ; |
: lit, ( n -- ) postpone Literal ; |
| : 2lit, ( n -- ) postpone 2Literal ; |
|
| : nt, ( nt -- ) name>comp execute ; |
: nt, ( nt -- ) name>comp execute ; |
| |
: nt-ex ( nt -- ) r> >l name>int execute @local0 >r lp+ ; |
| |
|
| ' name>int |
' nt-ex |
| :noname ( ... nt -- ... xt ) ['] nt, ; |
' nt, |
| :noname ( ... nt -- xt ) ['] lit, ; |
' lit, |
| Create r:word rot A, swap A, A, |
Create r:word rot A, swap A, A, |
| |
|
| : word-recognizer ( addr u -- nt r:word | addr u r:fail ) |
: word-recognizer ( addr u -- nt r:word | addr u r:fail ) |
| 2dup find-name [ [IFDEF] prelude-mask ] run-prelude [ [THEN] ] dup |
2dup find-name [ [IFDEF] prelude-mask ] run-prelude [ [THEN] ] dup |
| IF nip nip r:word ELSE drop r:fail THEN ; |
IF nip nip r:word ELSE drop r:fail THEN ; |
| |
|
| :noname ['] noop ; |
' noop |
| :noname ['] lit, ; |
' lit, |
| dup |
dup |
| Create r:num rot A, swap A, A, |
Create r:num rot A, swap A, A, |
| |
|
| :noname ['] noop ; |
' noop |
| :noname ['] 2lit, ; |
:noname ( n -- ) postpone 2Literal ; |
| dup |
dup |
| Create r:2num rot A, swap A, A, |
Create r:2num rot A, swap A, A, |
| |
|
| \ xxx-recognizer do-recognizer ; |
\ xxx-recognizer do-recognizer ; |
| |
|
| : interpreter-r ( addr u -- ... xt ) |
: interpreter-r ( addr u -- ... xt ) |
| forth-recognizer do-recognizer r>int perform ; |
forth-recognizer do-recognizer r>int @ ; |
| |
|
| ' interpreter-r IS parser1 |
' interpreter-r IS parser1 |
| |
|
| : compiler-r ( addr u -- ... xt ) |
: compiler-r ( addr u -- ... xt ) |
| forth-recognizer do-recognizer r>comp perform ; |
forth-recognizer do-recognizer r>comp @ ; |
| |
|
| : [ ( -- ) \ core left-bracket |
: [ ( -- ) \ core left-bracket |
| \G Enter interpretation state. Immediate word. |
\G Enter interpretation state. Immediate word. |
| \G Enter compilation state. |
\G Enter compilation state. |
| ['] compiler-r IS parser1 state on ; |
['] compiler-r IS parser1 state on ; |
| |
|
| : >int ( token table -- ) r>int perform execute ; |
: >int ( token table -- ) r>int perform ; |
| : >comp ( token table -- ) r>comp perform execute ; |
: >comp ( token table -- ) r>comp perform ; |
| : >postpone ( token table -- ) |
: >postpone ( token table -- ) |
| >r r@ r>lit perform execute r> r>comp perform compile, ; |
>r r@ r>lit perform r> r>comp @ compile, ; |
| |
|
| : postpone ( "name" -- ) \ core |
: postpone ( "name" -- ) \ core |
| \g Compiles the compilation semantics of @i{name}. |
\g Compiles the compilation semantics of @i{name}. |