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

Глава 3 Начало FORTH гласит:

Теперь, когда вы сделали блок «текущим», вы можете перечислить его, просто набрав слово L. В отличие от LIST, L не хочет начинаться с номера блока; вместо этого он перечисляет текущий блок.

Когда я запускаю 180 LIST, я получаю

Screen 180 not modified     
0                                                                 
...                                                             
15                                                                 
 ok

Но когда я запускаю L, я получаю сообщение об ошибке

:30: Undefined word
>>>L<<<
Backtrace:
$7F0876E99A68 throw 
$7F0876EAFDE0 no.extensions 
$7F0876E99D28 interpreter-notfound1 

Что я делаю не так?


person Evan Carroll    schedule 17.02.2018    source источник


Ответы (4)


Да, gForth поддерживает внутренний (БЛОЧНЫЙ) редактор. Начать

  1. тип: use blocked.fb (демонстрационная страница)
  2. тип: 1 load
  3. введите editor
  4. words покажет слова редактора,

    s b n bx nx qx dl il f y r d i t 'par 'line 'rest c a m  ok
    
  5. введите 0 l для отображения экрана 0, который описывает редактор,

    Screen 0 not modified     
     0 \\ some comments on this simple editor                 29aug95py
     1 m marks current position        a goes to marked position       
     2 c moves cursor by n chars       t goes to line n and inserts    
     3 i inserts                       d deletes marked area           
     4 r replaces marked area          f search and mark               
     5 il insert a line                dl delete a line                
     6 qx gives a quick index          nx gives next index             
     7 bx gives previous index                                         
     8 n goes to next screen           b goes to previous screen       
     9 l goes to screen n              v goes to current screen        
    10 s searches until screen n       y yank deleted string           
    11                                                                 
    12 Syntax and implementation style a la PolyFORTH                  
    13 If you don't like it, write a block editor mode for Emacs!      
    14                                                                 
    15                                                                 
     ok
    

Создание собственного блочного файла

Чтобы создать свой собственный новый файл блока myblocks.fb

  1. тип: use blocked.fb
  2. тип: 1 load
  3. введите editor

затем

  1. введите use myblocks.fb
  2. 1 load покажет БЛОК #1 (строки с 0 по 15. 16 строк по 64 символа в каждой)
  3. 1 t выделит строку 1
  4. Введите i this is text, чтобы [i]вставить в строку 1
  5. После редактирования текущего БЛОКА введите flush, чтобы записать БЛОК №1 в файл myblocks.fb

Для получения дополнительной информации см. блоки gForth.

person Fred Zelders    schedule 23.09.2018
comment
некоторые из ваших ярлыков не работали в gForth, хотя я подтвердил, что это редактирование работает. Добро пожаловать на сайт, большой вклад. - person Evan Carroll; 23.09.2018

Оказывается, это «Команды редактора», в книге говорится:

Для тех, чей РЕДАКТОР не соблюдает эти правила

Стандарт FORTH-79 не определяет команды редактора. Ваша система может использовать другой редактор; если это так, проверьте документацию по вашей системе

Я не верю, что gforth вообще поддерживает внутренний редактор. Итак, L, T, I, P, F, E, D, R предположительно не поддерживаются.

person Evan Carroll    schedule 17.02.2018
comment
Нет, в gforth нет внутреннего редактора. Предполагается, что вы используете emacs. - person vonbrand; 24.04.2018
comment
@vonbrand Я думаю, это больше не работает, или мы просто упустили из виду эту функцию, посмотрите выбранный ответ сейчас - person Evan Carroll; 23.09.2018

gforth хорошо интегрирован с emacs. В моем xemacs здесь по умолчанию любой файл с именем *.fs считается источником FORTH. «C-h m», как обычно, выдает доступные команды.

person vonbrand    schedule 24.04.2018

Нет, у GNU Forth нет внутреннего редактора; Я использую Вим :)

person francois P    schedule 22.02.2018
comment
Посмотреть выбранный ответ - person Evan Carroll; 28.09.2018