在 Gforth 中执行无限循环时遇到问题

Trouble executing indefinite loops in Gforth

在 Gforth 中表示输入的正确样式是什么?

while (2 > 1) {1 + 1}

以我目前从网上的资源了解,应该是:

: loop begin 2 @ 1 > while 1 1 + repeat

然而,当我尝试用 Gforth 解释这个时,我得到一个错误:

 expected dest, do-dest or scope
 : >>>loop<<< begin 2 @ 1 > while 1 1 + repeat

您发布的代码存在四个问题:

  • 您将 loop 重新定义为其他内容。也许更好地命名它。
  • 我没有看到 ; 来结束冒号定义。
  • 您将 @ 用于不是地址的内容。只需放下 @2 1 > 将 return 为真。
  • 1 1 + 将结果压入堆栈,但您不使用它。这样栈就会溢出。

我建议这样做:

: infinite   begin 2 1 > while 1 1 + drop repeat ;

这几乎就是 ruvim 在评论中发布的内容。