If statement 将IF语句与FORTH一起使用会产生“;解释“仅编译”一词;
我在看书。我可以运行If statement 将IF语句与FORTH一起使用会产生“;解释“仅编译”一词;,if-statement,forth,gforth,If Statement,Forth,Gforth,我在看书。我可以运行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=。
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
42.s 42正常
42=如果为“foobar”,则为;
:2:解释仅编译的单词
42=>>>如果我相信这些必须被编译成单词,不管出于什么原因,表达式都不是原语。我相信书中提到了这一点
注意:IF…THEN
语句必须包含在定义中。你不能只在“计算器风格”中输入这些单词
所以看起来是这样的,
: mycond 42 = IF ." foobar " THEN ; ok
42 .s <1> 42 ok
mycond foobar ok
42 mycond foobar ok
:mycond 42=IF.“foobar”THEN;好啊
好的
我和foobar好吗
42我和foobar好吗
这又是一个问题
在Forth中,只能在冒号定义中使用控件结构。if结构如下所示:
我相信这些必须被编译成文字,不管出于什么原因,这些表达都不是原语。我相信书中提到了这一点
注意:IF…THEN
语句必须包含在定义中。你不能只在“计算器风格”中输入这些单词
所以看起来是这样的,
: mycond 42 = IF ." foobar " THEN ; ok
42 .s <1> 42 ok
mycond foobar ok
42 mycond foobar ok
:mycond 42=IF.“foobar”THEN;好啊
好的
我和foobar好吗
42我和foobar好吗
这又是一个问题
在Forth中,只能在冒号定义中使用控件结构。if结构如下所示:
完全结构化的单词仅用于编译单词用法
对于循环/if/while…直到等
仅使用Gforth文档。这是最好的。我想用Gforth。。。否则,您可能难以理解糟糕的示例或其他Forth口译员,ANSI Forth或gnuforth中未包含的特定单词。准确的结构化单词仅用于编译单词用法
对于循环/if/while…直到等
仅使用Gforth文档。这是最好的。我想用Gforth。。。否则,您可能难以使用ANSI Forth或gnuforth中未包含的错误示例或其他Forth解释器特定单词。Forth标准规定,控制结构(IF、else、THEN、DO、LOOP等)仅用于编译使用,交互使用是一种“不明确的情况”。有些实现允许交互使用,但它远不是通用的。第四个标准说控制结构(IF、ELSE、THEN、DO、LOOP等)仅用于编译使用,交互使用是一种“不明确的情况”。有些实现允许交互使用,但它远不是通用的