| \G Save the current input source specification. Store @i{n} in |
\G Save the current input source specification. Store @i{n} in |
| \G @code{BLK}, set @code{>IN} to 0 and interpret. When the parse |
\G @code{BLK}, set @code{>IN} to 0 and interpret. When the parse |
| \G area is exhausted, restore the input source specification. |
\G area is exhausted, restore the input source specification. |
| block-input 0 new-tib dup loadline ! blk ! 2 loadfilename# ! |
block-input 0 new-tib dup loadline ! blk ! s" * a block*" loadfilename 2! |
| ['] interpret catch pop-file throw ; |
['] interpret catch pop-file throw ; |
| [ELSE] |
[ELSE] |
| : (source) ( -- c-addr u ) |
: (source) ( -- c-addr u ) |
| \G Save the current input source specification. Store @i{n} in |
\G Save the current input source specification. Store @i{n} in |
| \G @code{BLK}, set @code{>IN} to 0 and interpret. When the parse |
\G @code{BLK}, set @code{>IN} to 0 and interpret. When the parse |
| \G area is exhausted, restore the input source specification. |
\G area is exhausted, restore the input source specification. |
| loadfilename# @ >r |
loadfilename 2@ 2>r |
| 2 loadfilename# ! \ "*a block*" |
s" * a block*" loadfilename 2! |
| push-file |
push-file |
| dup loadline ! blk ! >in off ['] interpret catch |
dup loadline ! blk ! >in off ['] interpret catch |
| pop-file |
pop-file |
| r> loadfilename# ! |
2r> loadfilename 2! |
| throw ; |
throw ; |
| [THEN] |
[THEN] |
| |
|