首页 > 解决方案 > 如何退出 Forth 环境?

问题描述

如果我在 Forth 环境中,我该如何离开,以及如何编写一个单词来离开?

标签: forth

解决方案


有两种方法可以“离开”Forth 代码,这取决于你需要做什么。

BYE

Forth 标准定义了BYE离开 Forth 环境本身的词。

BYE( -- )
将控制权返回给主机操作系统(如果有)。

当您的 Forth不是作为程序在操作系统中运行时,这个词得到了很多创造性的解释。例如,在某些以 Forth操作系统BYE的系统上,会导致系统重新启动,从而让您加载另一个操作系统。

BYE是编程工具扩展字集的一部分。

QUIT

核心词集中有一个词叫做QUIT,但它并没有离开环境。相反,它会留下一个单词的执行并将您返回给解释器。这就是为什么它被称为“退出”,它是另一种意义上的退出。

QUIT( -- ) ( R: i * x -- )
清空返回堆栈,SOURCE-ID如果存在则存储零,使用户输入设备成为输入源,并进入解释状态。不显示消息。重复以下操作:

  • 接受来自输入源的一行到输入缓冲区,设置>IN为零,然后解释。
  • 如果处于解释状态,则显示实现定义的系统提示,所有处理都已完成,并且不存在歧义条件。

而不是定义QUIT为“这个词将您返回到解释器”之类的东西,而是在 Forth 标准中QUIT真正定义为解释器本身。在一个分解的 Forth 实现中,这是有道理的:让你回到解释器的词和解释器本身可以是同一个词,它们都可以清除返回堆栈并开始解释。

并且QUIT是您更可能在冒号定义中看到使用的单词,因为它是一种方便的方法,可以打破单词执行堆栈,保持数据堆栈的当前内容不变,然后返回到解释器。当然,您可以BYE在冒号定义中使用,例如在自定义解释器或用 Forth 编写的环境中退出回到操作系统。


推荐阅读