01 標準輸入 (stdin)
並將第一個字節中的計數移動到詞緩衝區。
WORD在終端輸入緩衝區中查找給定的分隔符,
當您直接從終端執行WORD時,
WORD將從TIB開始掃描輸入緩衝區。
逐漸向前推移 >IN ,
以便每次執行WORD時,都會掃描輸入流中的下一個字,
當IN>大於#TIB @時,WORD知道停止掃描。
例如,在WORD掃描字符串“STAR”之後,>IN的值是五。
> IN是一個“相對指標”;
也就是說,它不包含實際的地址,
而是包含一個要添加到實際地址(在一般情況下是TIB)的偏移量。
: Word_TIB_>in
cr
begin
bl word
cr
." >in = " >in @ .
." #TIB = " #TIB @ .
." word =>" count type
>in @ #TIB @ =
until
;
Word_TIB_>in 123 456 789 abcdefghijk lmnopqr stuvwxyz
>in = 17 #TIB = 54 word =>123
>in = 21 #TIB = 54 word =>456
>in = 25 #TIB = 54 word =>789
>in = 37 #TIB = 54 word =>abcdefghijk
>in = 45 #TIB = 54 word =>lmnopqr
>in = 54 #TIB = 54 word =>stuvwxyz ok
\ query
: QUERY ( -- )
\ accept a line of input from the user to TIB
TIB DUP MAXSTRING ACCEPT (SOURCE) 2!
>IN OFF
0 TO SOURCE-ID
0 TO SOURCE-POSITION
;
: _c[
begin
bl word
>in @ #TIB @ =
until
;
: c[
cr
10 0 do
\ begin
query _c[ cr
\ until
loop
;
c[
int main()
{
printf("hello, word!");
return 0;
}
ok........
<註>
cr 換行
\ example
s" 1 2 3 + " temp$ place
: cyn
temp$ c@ #TIB !
temp$ count TIB place
0 >in !
bl word cr count type cr
s" 2 3 + is " type cr
;
cyn
1
2 3 + is
ok.
.s [1] 5 ok.