好了經過大量的試驗和錯誤以及大量的搜索後,我發現了一些應該可以工作的東西,但是由於redFORTH中存在兩個錯誤,並沒有。
VALUE
\ Works fine, now to reset the value.
: VALUE \ n <name> --
CREATE ,
DOES> @
;
在錯誤的立即
\ fails, very wierd error.
: TESTLIT [ 42 ] LITERAL ;
\ TESTLIT Unknown Token: TESTLIT
\ FORGET TESTLIT Unknown Token: TESTLIT
\ WORDS TESTLIT COLD SORTMATCH ...
演示
\ Works if not compiling, LITERAL and POSTPONE are broken.
: TO
TIBWORD FIND 3 +
STATE @ IF
POSTPONE LITERAL
POSTPONE !
ELSE
!
THEN
; IMMEDIATE
演示錯誤的POSTPONE
\ fails, postpone is directly equivelent to [']
: TESTPOST POSTPONE + ; IMMEDIATE
: TEST 2 2 TESTPOST . ;
\ . 1935
\ ' + . 1935
我要提交錯誤報告....
編輯#1:經過一些更多的試驗和錯誤,並沒有一點髒話(我對FORTH不好),我找到了一種方法使它工作。
: TO
TIBWORD FIND 3 +
STATE @ IF
(lit) (lit) , , \ store address
(lit) ! ,
ELSE
!
THEN
; IMMEDIATE
啊呀。一個關於FORTH在仿真計算機體系結構上運行的問題,在一個遊戲內部6502變體的仿真變體上運行。我無法回答它,但+1只是爲了它的元元素! – 2013-02-16 23:02:59
@Jonners Minecraft(用於個人電腦)是用Java編寫的,所有這些都在虛擬機中運行。 – sheepez 2013-02-17 21:17:53
@Milo;這裏列出的代碼仍然是錯誤的米洛。 !是(一個n - )不是(n a - )。 TO正試圖存儲一個堆棧下溢地址3.它需要是':TO(n)'3 +!' – 2013-02-25 09:04:01