Как сохранить программу/слова в 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. Есть ли способ сохранить hello и 2hello в файл, который я смогу использовать на следующий день для составления более сложных слов?
  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

person gilhad    schedule 12.07.2019    source источник


Ответы (2)


Во-первых, gforth сохраняет свою историю в файле ~/.gforth-history, который может быть извлечен любым текстовым редактором для моего письма.

Во-вторых, имея историю, доступную с помощью стрелки вверх, и редактор для сохранения файлов, я могу вернуться назад и сохранить свои входные данные в файл.

Есть ли у GNU FORTH редактор?

Просто установите позицию 0 t в первую строку, добавьте i как insert к последней строке моего кода, чтобы поместить ее туда, вставьте новую строку перед il как insert line и заполните все остальные строки таким же образом, чтобы начать.

Затем flush буфер на диск и в следующий раз используйте этот файл use test.bl и загрузите определения с помощью 0 load.

(Или конвертируйте файл блока в обычный текст в редакторе и include test.bl его)

Это я могу сделать, не выходя из gforth, так что это работает для меня.

(И со временем я могу как-то его улучшить, потому что он тоже написан в четвертом :)

person gilhad    schedule 13.07.2019

Вот ОЧЕНЬ простой способ получить доступ к любому ВНЕШНЕМУ редактору в GForth. Я объясню здесь, как это работает в Linux (любой версии), но я думаю, что этот трюк работает и с другими операционными системами, он будет работать и с системами Apple OSX.

1) Просто убедитесь, что редактор, который вы предпочитаете использовать с GForth, установлен в вашей системе. VIM уже установлен в Linux и OSX, а под Windows 10 вы можете запустить оболочку BASH изначально (погуглите: «как установить BASH в Windows 10»). Я знаю, что VIM — очень мощный редактор, но мне не нравится это потому, что это НЕ редактор экрана. Отличным редактором является MICRO, в котором даже можно было управлять мышью!! ( проверьте: https://github.com/zyedidia/micro/wiki/Installing-Micro )

2) Вот хитрость: В GForth есть способ отправить команду операционной системе: - запустите GForth и введите следующую команду: S" pwd" system и нажмите клавишу ENTER... (pwd = Print Working каталог)

В системе S"pwd" вы отправляете команду "pwd" из GForth в операционную систему, и эта команда напечатает "рабочий каталог" вашей операционной системы Linux.

Вместо «pwd» вы, конечно, можете использовать и другую команду....

Что ж, вы уже догадались: вместо 'pwd' вы набираете имя вашего редактора './micro' и вуаля: запускается редактор MICRO, и теперь вы можете начать вводить в редактор код GForth.

Когда вы будете готовы выполнить код, просто сохраните код в файл, например: mycode.f Файл будет сохранен в каталоге, который был напечатан на экране на шаге 2 (выше).

Чтобы запустить код в GForth, введите следующую команду: include mycode.f
(вам не нужно вводить PATH, ваш файл был сохранен в каталоге GForth по умолчанию!)

Он будет добавлен в ваш словарь WORDS, и теперь вы можете протестировать код.

Надеюсь, вы найдете этот трюк полезным. Наслаждайтесь написанием кода в Gforth с помощью редактора по вашему выбору!

person Robbert van Herksen    schedule 16.04.2020