Module 这三行四模块系统是如何工作的?

Module 这三行四模块系统是如何工作的?,module,forth,Module,Forth,我已经开始读书了。在这本书中,作者提到了一个三行模块系统,并参考了第四次会议的会议记录。从第14页开始,(打印132页) 以下是关于如何使用三个已定义的单词内部、外部和模块的说明 模块是程序的一部分,位于单词INTERNAL和INTERNAL之间 模块。常数、变量和例程的定义 模块的本地代码写在单词INTERNAL和 外部的。在模块外部使用的定义如下 写在单词EXTERNAL和MODULE之间。[a的局部变量] 例程]在内部和外部之间定义。日常工作 引用它们是在外部和模块之间定义的 下面是代码本

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

以下是关于如何使用三个已定义的单词
内部
外部
模块
的说明

模块是程序的一部分,位于单词INTERNAL和INTERNAL之间 模块。常数、变量和例程的定义 模块的本地代码写在单词INTERNAL和 外部的。在模块外部使用的定义如下 写在单词EXTERNAL和MODULE之间。[a的局部变量] 例程]在内部和外部之间定义。日常工作 引用它们是在外部和模块之间定义的

下面是代码本身:

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

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

我会重新描述一下。模块应如下所示:

INTERNAL
   ... code ...
EXTERNAL
   ... more code ...
MODULE
实现此模块系统的代码假定字典是传统的单链表
INTERNAL
保存指向当前单词的指针,例如
INTERNAL
前面的指针
EXTERNAL
将指向单词的指针保存在
EXTERNAL
之后<代码>模块使用这两个指针,并在
外部
之后修补单词的链接字段,以指向
内部
之前的单词。实际上,它使词典跳过
内部
外部
之间的所有单词


这在现代Forth中可能不起作用,因为单词
CURRENT
PFA
LFA
没有标准化。而且,
这里的
可能不是下一个单词的标题的正确地址。

在现代的Forth系统中,一种可能的方法是编译成不同的词表,并相应地更改搜索顺序,如