Forth
http://fforum.winglion.ru/

структура словарей и поле флагов
http://fforum.winglion.ru/viewtopic.php?f=8&t=3115
Страница 4 из 4

Автор:  Victor__v [ Вс апр 09, 2017 21:07 ]
Заголовок сообщения:  Re: структура словарей и поле флагов

Цитата:
я знаю что ALSO делает

Это все знают, вопрос в том как.
Примерный код слова also
: ALSO GET-ORDER OVER SWAP 1+ SET-ORDER ;

Круто, что сказать. А во всём виноваты списки :twisted: всё же время говорят, СТЕК КОНТЕКСТА

Цитата:
По-моему, чем реверсить чужую форт-систему, проще написать свою.

Считайте, я учусь на чужих ошибках :_)

Автор:  vpn289 [ Вс апр 09, 2017 21:18 ]
Заголовок сообщения:  Re: структура словарей и поле флагов

Victor__v писал(а):
Это все знают, вопрос в том как.
Примерный код слова also
: ALSO GET-ORDER OVER SWAP 1+ SET-ORDER ;

Круто, что сказать. А во всём виноваты списки :twisted: всё же время говорят, СТЕК КОНТЕКСТА

Да не так и сложно. Коряво немного, да. Уж как спроектировано.
Код:
: ALSO   
            GET-ORDER ( wid1 ... widn n )
               1+ >R DUP R>
            ( wid1 .. widn widn n+1 ) SET-ORDER ;

Так, наверное, понятнее.
Списки тут не причем. Кому-то очень нравится дергать стек. А списки - очень ценная вещь.

Автор:  Victor__v [ Вс апр 09, 2017 21:33 ]
Заголовок сообщения:  Re: структура словарей и поле флагов

Если бы тут был не список, а стек можно было бы сделать иначе.
К примеру,
Код:
: ALSO CONTEXT @ CELL +TO CONTEXT CONTEXT ! ;


Цитата:
Списки тут не причем. Кому-то очень нравится дергать стек. А списки - очень ценная вещь

Списки как раз причём. из-за них такая реализация ALSO вышла
Стек контекста здесь выглядит уместней , чем список контекста.

Против списков лично ничего не имею. Вещь полезная.

Автор:  vpn289 [ Вс апр 09, 2017 23:50 ]
Заголовок сообщения:  Re: структура словарей и поле флагов

Victor__v писал(а):
Если бы тут был не список, а стек можно было бы сделать иначе.
К примеру,
Код:
: ALSO CONTEXT @ CELL +TO CONTEXT CONTEXT ! ;

Что есть +TO? Предполагаю, что это такая префиксная запись +! Но смысл всего построения от меня утекает. CONTEXT @ дает нам контекстный список, CELL - по-идее размер ячейки, +TO CONTEXT как надо понимать? Может быть должно быть CONTEXT CELL +? Не, кажется догадываюсь.
CONTEXT у вас кладет адрес вершины какбы стека, CELL +TO CONTEXT призван этот адрес увеличить на размер ячейки. Идея понятна. Два вопроса, как двигаться в обратном направлении? То-есть слово PREVIOUS. Каков размер этого стека и как предполагается отрабатывать выход за пределы этого стека? Лишний PREVIOUS и система рухнет. Каково устройство слова CONTEXT в Вашем варианте?

Цитата:
Списки как раз причём. из-за них такая реализация ALSO вышла
Стек контекста здесь выглядит уместней , чем список контекста.

Против списков лично ничего не имею. Вещь полезная.

В SPF как раз стек контекстов. Зарезервирован массив, в который словом ALSO пушится очередной список. Вернее, выполняется DUP на вершине стека списков. Слово, определенное через VOCABULARY, подменяет собой вершину стека списков.

Я же в своей системе отказался от стека списков вообще. Если надо производить поиск по более чем одному списку, списки сцепляются. Ну и когда надо, список можно отцепить. Автоматически пропадают ограничения на количество последовательных списков (контекстов) для поиска. Хотя пока более двух не понадобилось.

И опять, по-моему, недоразумения с терминологией. В чем отличие стека от списка? А стека контекста от списка контекста?

Автор:  Victor__v [ Пн апр 10, 2017 09:36 ]
Заголовок сообщения:  Re: структура словарей и поле флагов

Код:
Каково устройство слова CONTEXT

В моём варианте это VALUE-переменная
Цитата:
как двигаться в обратном направлении? То-есть слово PREVIOUS

Как?
Код:
: PREVIOUS CONTEXT 0! [ CELL NEGATE LIT, ] +TO CONTEXT ;


Цитата:
Каков размер этого стека

В СПФ восемь ячеек, пусть будет также, хотя обычно требуется меньше.

Цитата:
как предполагается отрабатывать выход за пределы этого стека? Лишний PREVIOUS и система рухнет

вариант 1) Никак.
вариант 2) Поскольку по-любому потребуется слово дно-стека-контекста, то можно ввести проверку, на исчерпаемость.
Вопрос в другом, насколько эта проверка вообще нужна?

Цитата:
стека списков

Копался в СПФ когда-то по этому поводу, переход на след. словарь там что-то вроде @ cell+ ,

Цитата:
В чем отличие стека от списка? А стека контекста от списка контекста?

В организации работы с памятью.
След. элемент стека это либо ячейка+ либо ячейка-
След. элемент списка можно взять по-разному.
К примеру cell+ @ или @ cell- или ещё как-то.
Список предполагает расширяемость, стек нет.

Короче, стеком сделать проще. Расширить тоже можно при необходимости.

Страница 4 из 4 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/