Forth中的单词重新定义

时间:2017-01-05 14:18:39

标签: forth

在Forth中,在重新定义单词的情况下,使用重新定义的单词的另一个单词的预期行为是什么? 对于例如如果x调用y

: Y ." Old Y " CR ;
: X 10 0 DO Y LOOP ;
\ ... 
: Y ." New Y " ;

然后在重新定义Y之后,XOld YNew Y的输出应该是什么?

1 个答案:

答案 0 :(得分:8)

简答:X将输出Old Y,另请参阅online test中的示例。在第二次定义Y时,X已经编译。

在Forth中,重新定义只是阴影:当新定义的名称在同一个单词列表中隐藏另一个名称时,就会出现这种情况,并且阴影定义变得无法访问(不可用)此名称。

此外,Forth使用增量编译和静态name resolution(在编译时执行)。因此,新定义不会影响任何先前的定义(以及已编译的代码)。