| \ miscelleneous words |
\ miscelleneous words |
| |
|
| \ Copyright (C) 1996,1997,1998,2000,2003 Free Software Foundation, Inc. |
\ Copyright (C) 1996,1997,1998,2000,2003,2004 Free Software Foundation, Inc. |
| |
|
| \ This file is part of Gforth. |
\ This file is part of Gforth. |
| |
|
| : compile-literal ( n -- ) |
: compile-literal ( n -- ) |
| postpone literal ; |
postpone literal ; |
| |
|
| |
: compile-compile-literal ( n -- ) |
| |
compile-literal postpone compile-literal ; |
| |
|
| |
: compile-2literal ( n1 n2 -- ) |
| |
postpone 2literal ; |
| |
|
| |
: compile-compile-2literal ( n1 n2 -- ) |
| |
compile-2literal postpone compile-2literal ; |
| |
|
| : [[ ( -- ) |
: [[ ( -- ) |
| \G switch from postpone state to compile state |
\G switch from postpone state to compile state |
| \ this is only a marker; it is never really interpreted |
\ this is only a marker; it is never really interpreted |
| compile-only-error ; immediate |
compile-only-error ; immediate |
| |
|
| : postponer ( c-addr u -- ) |
: postponer1 ( c-addr u -- ... xt ) |
| 2dup find-name dup if ( c-addr u nt ) |
2dup find-name dup if ( c-addr u nt ) |
| nip nip name>comp |
nip nip name>comp |
| 2dup [comp'] [[ d= if |
2dup [comp'] [[ d= if |
| 2drop ['] compiler is parser |
2drop ['] compiler1 is parser1 |
| else |
else |
| postpone, |
['] postpone, |
| endif |
endif |
| else |
else |
| drop |
drop |
| 2dup snumber? dup if |
2dup 2>r snumber? dup if |
| 0> IF |
0> IF |
| swap postpone literal postpone compile-literal |
['] compile-compile-2literal |
| |
ELSE |
| |
['] compile-compile-literal |
| THEN |
THEN |
| postpone Literal postpone compile-literal |
2rdrop |
| 2drop |
|
| ELSE |
ELSE |
| drop no.extensions |
drop 2r> no.extensions |
| THEN |
THEN |
| then ; |
then ; |
| |
|
| : ]] ( -- ) |
: ]] ( -- ) |
| \ switch into postpone state |
\ switch into postpone state |
| ['] postponer is parser state on ; immediate restrict |
['] postponer1 is parser1 state on ; immediate restrict |
| |
|
| \ f.rdp |
\ f.rdp |
| |
|