03 詞的生成
#01 編碼指示器 STATE 的兩種狀態
符式的INTERPRET(文字翻譯器)有兩種不同狀態的處理模式
即EXECUTE TIME(執行態)跟COMPILE TIME(編碼態)
由 STATE(狀態)之值是否為零而決定
如果 STATE @ = 0 即為 EXECUTE TIME(執行態)
如果 STATE @ =/= 0 即為 COMPILE TIME(編碼態)
#02 STATE 編碼指示器 之開與關
: [ STATE OFF ; 此詞讓 INTERPRET(文字翻譯器) 切到 EXECUTE TIME(執行態)
: ] STATE ON ; 此詞讓 INTERPRET(文字翻譯器) 切到 COMPILE TIME(編碼態)
: SLOW 1024 64 / ;
: QUICKER [ 1024 64 / ] LITERAL ;
#03 立即詞
立即詞之設立 使用IMMEDIATE 在定義之後 如下例
: [COMPILE] ' , ; IMMEDIATE
#04 延遲編碼
延遲編碼有兩個詞 COMPILE 跟 [COMPILE]
前者使用對象為普通一般的詞
後者使用對象為立即詞
延遲編碼的用途 最常見在 定義詞時用到的 ;定義詞
;定義詞 是個 立即詞
因當編碼器見到它的時候 INTERPRET(文字翻譯器) 還在編碼態(由 : 的 ] 而來)
所以這個詞要設為立即詞 才會被執行 否則是會被編碼
在 ;定義詞中
最主要的是 COMPILE UNNEST 及 [COMPILE] [ 這兩個詞組合
前者 在被定義的詞中 加編一個 UNNEST到 詞典裡去
後者 把INTERPRET(文字翻譯器) 切到執行態
結束了整個詞定義的動作
因為 UNNEST 是個普通詞 所以用 COMPILE
而 [是個立即詞 所以用 [COMPILE]