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

时间:2019-07-12 04:50:25

标签: gforth

有没有一种方法可以将我定义的单词保存到文件中,以便以后继续进行实验?

到目前为止,我仍然找到了从控制台复制+粘贴定义的唯一方法,前提是它们仍然可见。


我从头开始,所以我犯了很多错误,后来更正了这些错误,我想保存我早先定义的单词,并在下一个会话中重用它们。

这是一个简单的例子:

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:
$7F29BBAB3A00 throw 
$7F29BBAC9C98 no.extensions 
$7F29BBAB3CC0 interpreter-notfound1 
: hello ."hello"; 
:2: Undefined word
: hello >>>."hello";<<<
Backtrace:
$7F29BBAB3A00 throw 
$7F29BBAC9C20 no.extensions 
$7F29BBAB7338 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(末尾有空格)和工作2hello(使用编辑过的hello)-可以说,我在解决2hello时遇到了更多麻烦现在无法确定hello的格式和定义。

  1. 有没有一种方法可以将hello2hello保存到文件中 第二天就能使用更复杂的单词吗?
  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

2 个答案:

答案 0 :(得分:0)

首先,gforth将其历史记录保存在〜/ .gforth-history文件中,该文件可以由任何文本编辑器收集以用于我的写作

第二,可以使用向上箭头访问历史记录,并可以使用编辑器来保存文件,我可以向后爬并将输入内容保存到文件中。

Does GNU FORTH have an editor?

只需将位置0 t设置为第一行,将i设置为insert到我的代码的最后一行,以将其放置在此处,在il之前插入新行,将{ {1}},然后以这种方式重新填写所有其他行。

然后insert line缓冲到光盘,下一次使用此文件flush并用use test.bl加载定义。

(或将阻止文件转换为编辑器中的普通文本,然后0 load将其转换为文本)

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

(并且最终我可以以某种方式进行改进,因为它也是用第四种语言写的:)

答案 1 :(得分:0)

这是访问GForth中任何EXTERNAL编辑器的一种非常简单的方法。 我将在这里解释它在Linux(任何版本)下如何工作,但是我猜想该技巧也可以在其他操作系统上使用,并且可以在Apple OSX系统上使用。

1)只需确保将要与GForth一起使用的编辑器已安装在系统上。 VIM已经安装在Linux和OSX上,并且在Windows 10下,您可以本地运行BASH Shell(Google表示:“如何在Windows 10上安装BASH”) 我知道VIM是一个非常强大的编辑器,但是我不喜欢它,因为它不是屏幕编辑器。 MICRO是一个很棒的编辑器,它甚至允许鼠标控制!! (检查:https://github.com/zyedidia/micro/wiki/Installing-Micro

2)这是窍门: 在GForth中,有一种向操作系统发送命令的方法: -启动GForth并输入以下命令: S“ pwd”系统,然后按ENTER键...(pwd =打印工作目录)

对于S“ pwd”系统,您正在从GForth内部向操作系统发送命令'pwd', 然后该命令将打印Linux操作系统的“工作目录”。

您当然也可以使用其他命令来代替“ pwd”。

好吧,你猜对了: 不用'pwd'而是输入编辑器的名称'./micro'并保存:MICRO编辑器启动,现在您可以开始在编辑器中输入GForth代码了。

准备执行代码时,只需将代码保存到文件中即可,例如: mycode.f 该文件将保存在第2步(以上)在屏幕上打印出的目录中

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

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

希望您会发现此技巧很有用。 享受与您选择的编辑器一起在Gforth中编写代码的乐趣!