延遲編碼
符式是單次編碼器(One Pass Compiler).
因此;
它除了通常不容許前瞻參考(Forward Referencing),
即定義所用的詞,一定要用已經定義過的詞,不能用未定義過的詞
所以;
他需要一些特殊的功能,這就是在某些詞中,要有延遲編碼的功能.
延遲編碼的意思就是:
在定義這些詞本身的時候(即在第二時區中),沒有什麼特別的動作.
但在它的執行時(即在在第三時區中),要做編碼的動作.
延遲編碼的詞,有兩個,
一個給普通詞用 COMPILE ,一個給立即詞用 [COMPILE]
: 未來1+2 1 2 + ;
: 未來4+5 4 5 + ;
: 延遲編碼 compile 未來1+2 compile 未來4+5 ; immediate
\ 此時 將 未來1+2 未來4+5 兩詞 做 延遲編碼
: 現在 延遲編碼 ;
\ 此時 將 未來1+2 未來4+5 兩詞 編入 現在的定義中
現在
\ 執行 現在一詞
.s
\ 可以看到 資堆中 有 未來1+2的結果 3 跟 未來4+5的結果 9