Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пт май 26, 2017 07:39

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 50 ]  На страницу Пред.  1, 2, 3, 4
Автор Сообщение
 Заголовок сообщения: Re: структура словарей и поле флагов
СообщениеДобавлено: Вс апр 09, 2017 21:07 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 221
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Цитата:
я знаю что ALSO делает

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

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

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

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

_________________
Цель: написать форт-систему
Подцель: написать оптимизирующий компилятор
текущая задача: переписать if-else-then


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: структура словарей и поле флагов
СообщениеДобавлено: Вс апр 09, 2017 21:18 
Не в сети

Зарегистрирован: Вс мар 26, 2017 00:23
Сообщения: 40
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
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 ;

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: структура словарей и поле флагов
СообщениеДобавлено: Вс апр 09, 2017 21:33 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 221
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Если бы тут был не список, а стек можно было бы сделать иначе.
К примеру,
Код:
: ALSO CONTEXT @ CELL +TO CONTEXT CONTEXT ! ;


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

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

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

_________________
Цель: написать форт-систему
Подцель: написать оптимизирующий компилятор
текущая задача: переписать if-else-then


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: структура словарей и поле флагов
СообщениеДобавлено: Вс апр 09, 2017 23:50 
Не в сети

Зарегистрирован: Вс мар 26, 2017 00:23
Сообщения: 40
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
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, подменяет собой вершину стека списков.

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

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: структура словарей и поле флагов
СообщениеДобавлено: Пн апр 10, 2017 09:36 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 221
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Код:
Каково устройство слова CONTEXT

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

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


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

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

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

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

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

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

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

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

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

_________________
Цель: написать форт-систему
Подцель: написать оптимизирующий компилятор
текущая задача: переписать if-else-then


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 50 ]  На страницу Пред.  1, 2, 3, 4

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


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

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