[英]USING IF Statement with FORTH produces “Interpreting a compile-only word”
我正在閱讀《 起點》:4.決策,決策...。 我可以運行42 42 = .
42 42 = ok
42 42 = . -1 ok
可以預測,我得到-1
,這是對true
二的補充 。 但是,如果我將42
壓入堆棧,然后運行
42 .s
42 = IF ." foobar " THEN ;
我希望可以輸出foobar
,但事實並非如此。 相反,我得到了
42 .s <1> 42 ok
42 = IF ." foobar " THEN ;
:2: Interpreting a compile-only word
42 = >>>IF<<< ." foobar " THEN ;
Backtrace:
$7F7539250B30 throw
這里發生了什么?
完全結構化的單詞僅在循環/ if / while ...直到此類情況下才用作編譯的單詞。
僅使用Gforth文檔。 這是最好的。 我的意思是使用Gforth ...否則您可能會遇到不好的示例或ANSI Forth或gnuforth中未包含的其他Forth解釋器特定單詞的問題。
FORTH標准表示控制結構(IF,ELSE,THEN,DO,LOOP等)僅用於編譯使用 ,而交互使用則是“模棱兩可的情況”。 一些實現允許交互式使用,但是它遠非通用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.