单词LOOP被描述为“解决所有未解决的LEAVE出现的目标”(我加重了语气)。
与IF ... ELSE ... THEN不同,其中前向引用的数量始终为1,LOOP对LEAVE的数量没有限制。那么如何实现呢?
我想到的一种方法是始终在堆栈顶部保持LEAVE的数量。每个LEAVE都会增加此计数器并将自己放在其下面。LOOP从顶部读取计数器并解决相应数量的引用。但这似乎是一个廉价技巧。
真正的Forth系统如何实现这种循环?我不需要代码(已经在实现Forth作为学习经验),只需要概念。
与IF ... ELSE ... THEN不同,其中前向引用的数量始终为1,LOOP对LEAVE的数量没有限制。那么如何实现呢?
我想到的一种方法是始终在堆栈顶部保持LEAVE的数量。每个LEAVE都会增加此计数器并将自己放在其下面。LOOP从顶部读取计数器并解决相应数量的引用。但这似乎是一个廉价技巧。
真正的Forth系统如何实现这种循环?我不需要代码(已经在实现Forth作为学习经验),只需要概念。
cs-roll
)。 - ruvim