[file] D:\test_if.f
(( Forth has three tenses 1st Definition-time ( 定義時態 ) 2nd Compile-time ( 編譯時態 ) 3th Run-time ( 執行時態 ))): cyn 0x55aa55aa here 4 allot ! ;: cyn1 0x55aa55aa here \ 4 allot ! ;: cyn.THEN ( addr f -- ) \ 1st 定義時態 definition-time [ cyn ] STATE @ if \ 2nd 編譯時態 Compile-time else \ 3th 執行時態 Run-time then ; IMMEDIATE: cyn1.THEN ( addr f -- ) [ cyn1 ] ; IMMEDIATE[eof]FLOAD 'D:\test_if.f' hex' cyn.THEN 20 dump cr' cyn1.THEN 20 dumpFLOAD 'D:\test_if.f' 44939C | 00 10 40 00 AA 55 AA 55 84 10 40 00 00 10 40 00 |..@.枓枓?@...@.| 4493AC | 84 10 40 00 00 00 00 00 00 00 00 00 00 00 00 00 |?@.............| 4493A8 | 00 10 40 00 84 10 40 00 00 00 00 00 00 00 00 00 |..@.?@.........| 4493B8 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|: _] ( -- ) STATE ON ;: _[ ( -- ) \ turn off compiling STATE OFF ;DEFER ] ' _] IS ]DEFER [ IMMEDIATE ' _[ IS [ \ turn off compiling符式裡有兩個詞 "[" 及 " ]" 來控制冒號定義中的編碼態之開關
以切換 STATE ON 編碼態(第二時序 ) 及 STATE OFF 執行態時(第三時序)
: slow 1024 64 / ;
: quicker [ 1024 64 / ] Literal ;
IS...Defer
第一時序為定義態 STATE ON 編碼態(第二時序 ) 及 STATE OFF 執行態時(第三時序)
分別以 以CREATE...DOES> 定義為例 及 以冒號定義為例 來說明 符式三時序