如何在 GForth 中保存程序/单词

How save program / words in GForth

有没有办法将我定义的单词保存到文件中,以便以后继续试验?

到目前为止,我只找到了从控制台复制+粘贴定义的方法,如果它们仍然可见的话。


我是从forth开始的,所以我犯了很多错误并稍后更正它们,我想保存我之前定义的单词并在下一个会话中重用它们。

这是一个简单的例子:

Gforth 0.7.3, Copyright (C) 1995-2008 Free Software Foundation, Inc.
Gforth comes with ABSOLUTELY NO WARRANTY; for details type `license'
Type `bye' to exit
:hello ."hello"; 
:1: Undefined word
>>>:hello<<< ."hello";
Backtrace:
F29BBAB3A00 throw 
F29BBAC9C98 no.extensions 
F29BBAB3CC0 interpreter-notfound1 
: hello ."hello"; 
:2: Undefined word
: hello >>>."hello";<<<
Backtrace:
F29BBAB3A00 throw 
F29BBAC9C20 no.extensions 
F29BBAB7338 compiler-notfound1 
: hello ." hello";  ok
: 2hello hello hello ;  ok
2hello  hellohello ok
: hello ." hello "; \ added space to end redefined hello   ok
2hello  hellohello ok                   
: 2hello hello hello ; redefined 2hello   ok
2hello  hello hello  ok
bye

现在我正在工作 hello(最后是 space)和工作 2hello(使用编辑后的 ​​hello)- 可以说,我遇到了更多麻烦修复 2hello 以定义形式,hello 的定义现在不在屏幕上。

  1. 有没有办法将 hello2hello 保存到文件中,我 能不能用next day来造更复杂的词?
  2. 它可以是文本文件吗,这样我就可以使用一些编辑器(比如 vim)来清除所有错误的定义并评论那些我想保留的内容?

我想以文件 welcome.fth:

结束
: hello \ -- ; say hello and space at the end of word, to be able simply concatenate that 
    ." hello ";
: 2hello \ -- ; repeats hello two times
    hello hello ; 

第二天就可以来继续探索

Gforth 0.7.3, Copyright (C) 1995-2008 Free Software Foundation, Inc.
Gforth comes with ABSOLUTELY NO WARRANTY; for details type `license'
Type `bye' to exit
include welcome.fth  ok
2hello  hello hello  ok
\ now I can continue with learning

首先,gforth 将其历史记录保存在 ~/.gforth-history 文件中,任何文本编辑器都可以获取该文件以供我写作

其次,使用 up-arrow 可以访问历史记录,并且有编辑器可以保存文件,我可以返回并将我的输入保存到文件中。

只需将位置 0 t 设置为第一行,将 i 作为 insert 添加到我代码的最后一行以将其放在那里,在 il 之前插入新行作为 insert line 并以这种方式填写所有其他行回到开始。

然后 flush 将缓冲区写入光盘,下次使用此文件 use test.bl 并使用 0 load.

加载定义

(或在编辑器中将块文件转换为普通文本并 include test.bl 它)

我可以在不离开 gforth 的情况下做到这一点,所以它对我有用。

(最终我可以以某种方式改进它,因为它也写在前面:)

这是访问 GForth 中任何外部编辑器的一种非常简单的方法。 我将在这里解释它在 Linux(任何版本)下是如何工作的,但我想这个技巧也适用于其他操作系统,它将适用于 Apple OSX 系统。

1) 只需确保您喜欢与 GForth 一起使用的编辑器已安装在您的系统上。 VIM 已经安装在 Linux 和 OSX 上,在 Windows 10 下,您可以 运行 BASH shell 本机(Google 用于:'how to install BASH on Windows 10') 我知道 VIM 是一个非常强大的编辑器,但我不喜欢它,因为它不是屏幕编辑器。 一个伟大的编辑器是 MICRO,它甚至允许鼠标控制! (检查:https://github.com/zyedidia/micro/wiki/Installing-Micro

2) 这是诀窍: 在 GForth 中,有一种方法可以向操作系统发送命令: - 启动 GForth 并输入以下命令: S"pwd" 系统并按 ENTER 键... (pwd = Print Working Directory)

使用 S"pwd" 系统,您从 GForth 中向操作系统发送命令 'pwd', 该命令将打印 Linux 操作系统的 'working directory'。

除了'pwd'你当然也可以使用另一个命令....

嗯,你猜对了: 而不是 'pwd' 你键入你的编辑器的名称 './micro' 并很快:MICRO 编辑器启动,现在你可以开始在编辑器中输入你的 GForth 代码。

当您准备好执行代码时,只需将代码保存到一个文件中,例如: mycode.f 该文件将保存在步骤 2(上文)中屏幕上打印出的目录中

要运行 GForth中的代码,键入以下命令: 包括 mycode.f
(您不必输入 PATH,您的文件已保存在 GForth 的默认目录中!)

它将添加到您的 WORDS 词汇表中,现在您可以测试代码了。

希望您会发现这个技巧有用。 使用您选择的编辑器享受在 Gforth 中编写代码的乐趣!