version 1.19, 2007/12/31 19:02:24
|
version 1.20, 2009/05/10 19:07:21
|
Line 33
|
Line 33
|
r> loop |
r> loop |
drop 2drop 0 ; |
drop 2drop 0 ; |
|
|
: current-sourcepos ( -- nfile nline ) |
\ we encode line and character in one cell to keep the interface the same |
sourcefilename str>loadfilename# sourceline# ; |
: encode-pos ( nline nchar -- npos ) |
|
$ff min swap 8 lshift + ; |
|
|
: compile-sourcepos ( compile-time: -- ; run-time: -- nfile nline ) |
: decode-pos ( npos -- nline nchar ) |
|
dup 8 rshift swap $ff and ; |
|
|
|
: current-sourcepos ( -- nfile npos ) |
|
sourcefilename str>loadfilename# sourceline# >in @ encode-pos ; |
|
|
|
: compile-sourcepos ( compile-time: -- ; run-time: -- nfile npos ) |
\ compile the current source position as literals: nfile is the |
\ compile the current source position as literals: nfile is the |
\ source file index, nline the line number within the file. |
\ source file index, nline the line number within the file. |
current-sourcepos swap postpone literal postpone literal ; |
current-sourcepos |
|
swap postpone literal |
|
postpone literal ; |
|
|
: .sourcepos ( nfile nline -- ) |
: .sourcepos ( nfile npos -- ) |
\ print source position |
\ print source position |
swap loadfilename#>str type ." :" |
swap loadfilename#>str type ': emit |
base @ decimal swap 0 .r base ! ; |
base @ decimal |
|
swap decode-pos swap 0 .r ': emit 0 .r |
|
base ! ; |
|
|
|
|