Вопросы по теме 'gforth'

Как мне получить доступ к имени программы /argv[0] в Forth?
документация Gforth скажем, чтобы получить доступ к аргументам, вызвав next-arg , но это опускает имя программы, которое будет напечатано на C-подобном языке. Поскольку argv[0] автоматически удаляется из вектора аргументов в Forth, есть ли...
289 просмотров
schedule 26.06.2023

Как включить пробелы в имена файлов в GForth (GNU Forth)?
Когда я попытался включить файл в Unix (и Windows), он не будет работать, если он содержит пробелы. Например, они не будут работать: include ~/Space Folder/test.fs include ~/Space\ Folder/test.fs include "~/Space Folder/test.fs" include "~/Space\...
203 просмотров
schedule 29.12.2022

Сравнение макросов Common Lisp и возможностей метапрограммирования Forth
Каждый программист на Common Lisp знает, что макросы - мощный инструмент. Макросы Common Lisp использовались, среди прочего, для добавления объектной ориентации поверх Lisp без изменения спецификации языка; макросы чтения - это еще одна...
2722 просмотров

Отлов исключений из цикла
Я пытаюсь написать слово Forth, которое удалит все элементы в стеке. Я использую довольно тупой метод, запуская бесконечный цикл с помощью «drop» и перехватывая ошибку, когда «drop» терпит неудачу, потому что стек пуст. Мои слова определяются так:...
158 просмотров
schedule 06.07.2023

Почему я не могу получить ответ с плавающей запятой в Gforth?
Я слышал, что вам просто нужно поставить F перед оператором, а затем поставить (.) в конце, чтобы вычислить число с плавающей запятой, а затем отобразить его. Но это дало мне такой ответ: 2 3 F/ . :8: Floating-point stack underflow 2 3...
352 просмотров
schedule 30.05.2024

Можно ли вызывать Windows API из Форта?
В C/C++ исполняемые файлы Windows связаны со статическими библиотеками, которые импортируют DLL-файлы, содержащие процедуры Windows API. Но как нам получить доступ к этим процедурам из кода Forth (например, GForth)? Это вообще возможно? Я знаю,...
970 просмотров
schedule 24.04.2022

Примеры слов компиляции пользовательского потока управления
Forth, как известно, позволяет пользователям изменять язык, определяя новые слова для потока управления (помимо тех, что указаны в стандарте: DO, LOOP, BEGIN, UNTIL, WHILE, REPEAT, LEAVE IF, THEN, ELSE, CASE, ENDCASE и т. д.). Есть ли общие примеры...
390 просмотров

Как прочитать необработанный код с веб-сайта в Gforth?
Я хотел бы слово, как read-site ( add n buff max -- n flag ) где «добавить n» — это буфер имени сайта, «buff max» — это буфер, в который должен быть прочитан текст ASCII, «n» — это количество прочитанных байтов, а flag истинно, если...
272 просмотров
schedule 07.07.2023

ИСПОЛЬЗОВАНИЕ оператора IF с FORTH приводит к интерпретации слова, предназначенного только для компиляции.
Я читаю Начало Forth: 4. Решения , Решения... . Я могу бежать 42 42 = . 42 42 = ok 42 42 = . -1 ok Как и ожидалось, я получаю -1 , что равно два комплимента за true . Однако, если я помещу 42 в стек и запущу 42 .s 42 = IF...
536 просмотров
schedule 14.06.2022

Арифметические операции с четвертым выражением
В Java можно сделать следующее: int var = 5; var += 2; var -= 2; var *= 2; var /= 2; Можно ли это сделать в Форте? variable var 3 var ! 1 var +! //Increment Можно ли сделать другие подобные операции в Форте? Если нет, подскажите...
144 просмотров
schedule 17.07.2022

Форт-функции, подобные структурам
Я играю с Forth и пытаюсь понять, имеет ли он функциональную структуру. Я пытаюсь понять, что это происходит из опыта ООП. Я видел, что у вас может быть что-то вроде: : addition + . ; 4 2 addition 6 ok Есть ли способ получить его, чтобы...
390 просмотров
schedule 27.07.2023

Есть ли в gforth возможности сетевых сокетов?
Часто при изучении языка я пишу какой-нибудь сервер. Есть ли у gforth возможность использовать сетевые сокеты? Я ничего не вижу о сокетах в руководстве .
998 просмотров
schedule 23.07.2022

Что делает слово «тип»?
Учитывая следующую функцию (заимствовано из Rosetta Code ) : (echo) ( sock buf -- sock buf ) begin cr ." waiting..." 2dup 2dup size read-socket nip dup 0> while ." got: " 2dup type ( <-- HERE ) rot write-socket...
92 просмотров
schedule 24.03.2023

Как включить библиотеку C в Forth
По умолчанию Forth имеет лишь небольшое количество рабочих библиотек, так что все приходится программировать с нуля. Причина в том, что виртуальная машина Forth на основе стека идентифицирует себя как тонкую систему. Согласно руководству Gforth,...
519 просмотров
schedule 09.08.2022

Как сбросить слово в Форте?
Цель состоит в том, чтобы создать слово Forth в словаре, а затем распечатать содержимое памяти этого слова. Первый шаг прост. Слово : main создается, как описано в учебнике. После создания слова указатель словаря перемещается на следующую...
278 просмотров
schedule 10.08.2022

J1 Понимание программы Forth CPU
Я действительно чувствую, что трудно понять программирование процессора J1 Forth. У меня есть базовое понимание Forth, но я не мог понять слова, определенные в J1 Forth-программировании, такие как d# и h#... и как это работает с периферийными...
225 просмотров
schedule 22.06.2022

Выполнение символа или строки в Форте, как если бы это было слово
Допустим, у меня где-то хранится s" Hello" . и я также определил : Hello something ; . Есть ли способ выполнить строку, как если бы это было слово? Я читал документацию, но не нашел подходящей функциональности. Это может быть...
145 просмотров
schedule 22.12.2022

Gforth, FORGET и LIST слова, как в оригинальном Forth
Есть ли эквивалент forget слову Forth в Gforth? Я видел про marker , но у него другое поведение. Кроме того, команда list , похоже, не дает листинга программы. Я хотел бы просмотреть список программ в памяти, таких как старый list в BASIC -...
354 просмотров
schedule 22.11.2022

gforth: как проверить, что переменная установлена ​​со значением arg
gforth : как проверить, установлена ​​ли переменная В настоящее время я устанавливаю переменную из командной строки, например: : functionname variable ! ; поэтому он получает свое значение от gforth -e"5" myfile.fs но...
44 просмотров
schedule 17.08.2023

Проблемы с установкой элементов массива в Forth
Я пишу код на Forth, который должен создать массив случайных чисел 12x12 от 1 до 8. create big_array 144 allocate drop : reset_array big_array 144 0 fill ; reset_array variable rnd here rnd ! : random rnd @ 31421 * 6927 + dup rnd ! ; : choose...
79 просмотров
schedule 12.12.2022