Module 这三行四模块系统是如何工作的?
我已经开始读书了。在这本书中,作者提到了一个三行模块系统,并参考了第四次会议的会议记录。从第14页开始,(打印132页) 以下是关于如何使用三个已定义的单词Module 这三行四模块系统是如何工作的?,module,forth,Module,Forth,我已经开始读书了。在这本书中,作者提到了一个三行模块系统,并参考了第四次会议的会议记录。从第14页开始,(打印132页) 以下是关于如何使用三个已定义的单词内部、外部和模块的说明 模块是程序的一部分,位于单词INTERNAL和INTERNAL之间 模块。常数、变量和例程的定义 模块的本地代码写在单词INTERNAL和 外部的。在模块外部使用的定义如下 写在单词EXTERNAL和MODULE之间。[a的局部变量] 例程]在内部和外部之间定义。日常工作 引用它们是在外部和模块之间定义的 下面是代码本
内部
、外部
和模块
的说明
模块是程序的一部分,位于单词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系统中,一种可能的方法是编译成不同的词表,并相应地更改搜索顺序,如