Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Вс сен 23, 2018 16:02

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Ответить
Имя пользователя:
Заголовок:
Текст сообщения:
Введите текст вашего сообщения. Длина сообщения в символах не более: 60000

Размер шрифта:
Цвет шрифта
Настройки:
BBCode ВКЛЮЧЕН
[img] ВЫКЛЮЧЕН
[flash] ВЫКЛЮЧЕН
[url] ВКЛЮЧЕН
Смайлики ВЫКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Не преобразовывать адреса URL в ссылки
Вопрос
Теперь гостю придется вводить здесь пароль. Не от своей учетной записи, а ПАРОЛЬ ДЛЯ ГОСТЯ, получить который можно после регистрации на форуме через ЛС.:
Этот вопрос предназначен для выявления и предотвращения автоматических регистраций.
   

Обзор темы - Тупейшая лисп-система написанная на форте
Автор Сообщение
  Заголовок сообщения:  Re: Тупейшая лисп-система написанная на форте  Ответить с цитатой
true-grue писал(а):
http://fforum.winglion.ru/viewtopic.php?p=17452#p17452
"Нет, уж лучше вы - к нам..." (с)

ИзображениеТЕМА #73, АБЗАЦ #806Изображение
Сообщение Добавлено: Вт янв 23, 2018 23:01
  Заголовок сообщения:  Re: Тупейшая лисп-система написанная на форте  Ответить с цитатой
viewtopic.php?p=17452#p17452
Сообщение Добавлено: Вт янв 23, 2018 22:45
  Заголовок сообщения:  Re: Тупейшая лисп-система написанная на форте  Ответить с цитатой
См.

Таунсенд, К.; Фохт, Д.
Проектирование и программная реализация экспертных систем на персональных ЭВМ
Сообщение Добавлено: Вт янв 23, 2018 21:54
  Заголовок сообщения:  Re: Тупейшая лисп-система написанная на форте  Ответить с цитатой
Как для меня, так замечательный примет! Давно об этом думал, спасибо.
P.s. Я об трансляции Лиспа)
Сообщение Добавлено: Вт янв 23, 2018 21:07
  Заголовок сообщения:  Тупейшая лисп-система написанная на форте  Ответить с цитатой
Код:
~ER\STR\STR-TO-NUMBERasm.F

\ STR>NUM \ a u — ? err| n 0

VOCABULARY LISP
ALSO LISP DEFINITIONS

\ типизация
-1 CONSTANT ??? \ неопределенно
0 CONSTANT NIL \ конец списка. спец. флаг
1 CONSTANT NUM \ число

\ что должна возвращать КАЖДАЯ функция на уровне форта:
\ зн. объектов
\ тип объектов
\ кол-во объектов

VECT OBJECT-FIND-L \ n a u — zn type n+1 true| n a u false
VECT SFIND-L \ a u — xt 0

\ лисповский интерпретатор
: INTERPRET

PARSE-NAME SFIND-L >R
0
BEGIN
PARSE-NAME
2DUP S" )" COMPARE
WHILE
OBJECT-FIND-L
0=
IF
SFIND-L
SWAP >R
EXECUTE
R> + \ суммируем кол-во объектов
THEN
\ проверка состояния стека
." GL: " DEPTH .SN CR
REPEAT
2DROP
;

: ( INTERPRET ;

\ пример лисповской функции +
: num+num \ zn1 t1 zn2 t2 .. znn tn n — zn type 1
>R
R@ 0= IF -2000 THROW THEN
NUM <> IF -2001 THROW THEN
-1 RP@ +!
>R
BEGIN
RP@ CELL+ @ WHILE
NUM <> IF -2001 THROW THEN
R> + >R
-1 RP@ CELL+ +!
REPEAT
R> NUM 1
RDROP

;

VECT +
' num+num TO +

: num-test
2DUP STR>NUM IF DROP 0 EXIT THEN
>R \ r: — num
2DROP
1+ >R \ r: num — num n
RP@ CELL+ @
NUM
R>
RDROP
TRUE
;

: sfind-test
SFIND 0= IF -2003 THROW THEN
;

' num-test TO OBJECT-FIND-L
' sfind-test TO SFIND-L

\EOF

пример:

( + 2 3 ( + 5 5 ( + 1 1 1 1 1 ) ) ( + 100 ) )


Соб-но безполезный лисп-интерпретатор с двумя функциями: + и NOOP :)
При желании эту развлекалку можно расширить, превратив во что-то более полезное.
Сообщение Добавлено: Вт янв 23, 2018 21:01

Часовой пояс: UTC + 3 часа [ Летнее время ]


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB