这个三线福斯模块系统是如何工作的



我已经开始阅读思考。在书中,作者提到了一个三行模块系统,并参考了第四次会议的会议记录。这是一个PDF,包含模块系统的描述,从第14页开始(打印132页)。

以下是关于如何使用定义的三个单词INTERNALEXTERNALMODULE的说明。

模块是程序的一部分,位于单词INTERNAL和模块。常量、变量和例程的定义模块的local写在单词INTERNAL和外部。模块外使用的定义如下写在单词EXTERNAL和MODULE之间。[的局部变量routine]在INTERNAL和EXTERNAL之间定义。例行程序引用它们是在EXTERNAL和MODULE之间定义的。

这是代码本身:

: INTERNAL ( --> ADDR) CURRENT @ @ ; 
: EXTERNAL ( --> ADDR) HERE ;
: MODULE( ADDRl ADDR2 --> )PFA LFA ! ; 

我读这本书是为了了解如何编写一般软件,而不是如何在Forth的任何特定实现中编程,所以我不熟悉代码中使用的内置单词,但我对这个模块系统很好奇。有人能解释一下它是如何工作的吗?

我将重新表述描述。一个模块应该是这样的:

INTERNAL
... code ...
EXTERNAL
... more code ...
MODULE

实现该模块系统的代码假定字典是传统的单链表。INTERNAL保存指向当前单词的指针,例如正好在INTERNAL之前的单词。CCD_ 6在CCD_。MODULE取两个指针,并将EXTERNAL之后的单词的链接字段补丁为指向INTERNAL之前的单词。实际上,它使字典跳过INTERNALEXTERNAL之间的所有单词。

这在现代福斯可能不起作用,因为单词CURRENTPFALFA没有标准化。而且,HERE可能不是下一个字的报头的正确地址。

相关内容

  • 没有找到相关文章