[英]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.