Forth
http://fforum.winglion.ru/

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

Автор:  mOleg [ Пт фев 24, 2017 05:32 ]
Заголовок сообщения:  Re: структура словарей и поле флагов

Victor__v писал(а):
Смотрел исходники словаря number
Это не следствие, это скорее заглушка, дабы была однородность

О том и речь.

Victor__v писал(а):
Да и кому нужно брать xt от числа?

Вот уже не помню, в каком месте я это использовал, но пригодилось однажды.

Victor__v писал(а):
К тому же вариант не масштабируется. А то мало ли в обиход войдёт данная фича с лагом?
т.е. код ' 1 ' 2 ' 3 execute . execute . execute . выведет 3 3 3

да, этот вариант не работает, точнее, работает не так, как ожидается, причем, исправить можно, если числа выкладывать на вершину стека, а не в переменную, но нужно ли оно на самом деле?

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

Подведём итоги.
Против всех флагов высказался chess
за флаг "я словарь" высказался положительно хищник
я отрицательно.
mOleg воздержался от его обсуждения
флаги "временное слово", immediate, инлайн не обсуждались

по структуре словаря претензий, как я понял, почти нет.

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

Как вариант, можно добавить флаги доверия-регистр
Позволит оптимизировать код.
Т.е если слово имеет флаг, к примеру ECX-dov , то перед и после работы слова значение регистра сохраняется.

Автор:  mOleg [ Вт фев 28, 2017 20:39 ]
Заголовок сообщения:  Re: структура словарей и поле флагов

Цитата:
mOleg воздержался от его обсуждения

я высказался сильно раньше за то, чтобы рассматривать все части определения, как атрибуты, набор которых зависит от словаря.
Хотя, конечно же, часть атрибутов обязательна, но их количество невелико, и так, как они к тому же битовые, то легко все упаковываются в один байт. Т.е. смысла избавляться от них нет никакого.

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

По-моему, флаги в поле имени совершенно лишняя сущность. Есть система, построенная без флагов вообще.

Автор:  Hishnik [ Сб апр 01, 2017 01:08 ]
Заголовок сообщения:  Re: структура словарей и поле флагов

Речь о флагах как таковых, или об их размещении в поле имени, как написано в некоторых источниках? Вполне можно под флаги выделить отдельное поле, это не проблема.

Автор:  Victor__v [ Чт апр 06, 2017 13:37 ]
Заголовок сообщения:  Re: структура словарей и поле флагов

Цитата:
построенная без флагов вообще

А смысл?
К тому же некоторые приёмы в форте также можно считать флагами.
Как "я юзверь" - USER-CODE, "я строка" - SLITERAL-CODE , "я переопределяемое слово" - VECT-CODE и пр.

Их тоже решили выкинуть?
Не флаги, но вызов данных слов может трактоваться так.

Автор:  vpn289 [ Чт апр 06, 2017 17:20 ]
Заголовок сообщения:  Re: структура словарей и поле флагов

Victor__v писал(а):
Цитата:
построенная без флагов вообще

А смысл?
К тому же некоторые приёмы в форте также можно считать флагами.
Как "я юзверь" - USER-CODE, "я строка" - SLITERAL-CODE , "я переопределяемое слово" - VECT-CODE и пр.

Их тоже решили выкинуть?
Не флаги, но вызов данных слов может трактоваться так.

Это скользкий момент. Считать ли xt слова флагом? В конце-концов можно придумать концепцию, в которой входной поток интерпретировать как поток флагов.
Сформулирую - флаг, это то, что требует следом условного перехода.
Поясню - я не против условных переходов вообще, но по возможности стараюсь от них избавляться.
Если можно не проверять слово на IMMEDIATE или, к примеру, FIND сможет класть на стек только xt, почему бы не сделать так. Пусть все происходит как бы само.

Автор:  Victor__v [ Сб апр 08, 2017 20:59 ]
Заголовок сообщения:  Re: структура словарей и поле флагов

Цитата:
к примеру, FIND сможет класть на стек только xt, почему бы не сделать так. Пусть все происходит как бы само.

Но для доп данных нужны флаги. Они-то и облегчают
Если find возвращает только xt , то как определить, что это за слово?
Можно создать с десяток специализированных словарей, для инлайн-слов, immediate-ов, и пр. И как результат увеличение времени компиляции.
Данный подход потребует, по моим представлениям, наличие отдельного sfind для каждого спец.словаря.
Зачем, ежели влаги облегчают это дело.

Кое-кто, всем известный шахматист, к примеру, приводит довод, что по происшествии н-го времени нельзя вспомнить какое слово как работает.
Не лучше ли механизм проверки ввести и вспоминать не надо будет?
К примеру, immediate-flag ' forth xt-wordlist-type

Автор:  vpn289 [ Сб апр 08, 2017 22:43 ]
Заголовок сообщения:  Re: структура словарей и поле флагов

Victor__v писал(а):
Цитата:
к примеру, FIND сможет класть на стек только xt, почему бы не сделать так. Пусть все происходит как бы само.

Но для доп данных нужны флаги. Они-то и облегчают
Если find возвращает только xt , то как определить, что это за слово?

А зачем определять? Пусть оно делает свое дело. Кроме того, xt однозначно определяет тип слова. Для слов, определённых через двоеточие - это ссылка на адресный интерпретатор, для слов, созданных определяющими словами - на точку DOES> определяющего слова. К чему дублировать существующий механизм?
Victor__v писал(а):
Можно создать с десяток специализированных словарей, для инлайн-слов, immediate-ов, и пр. И как результат увеличение времени компиляции.
Данный подход потребует, по моим представлениям, наличие отдельного sfind для каждого спец.словаря.
Зачем, ежели влаги облегчают это дело.

Чем короче список, тем раньше закончится поиск по нему. Специализированный список явно будет короче общего списка. И время компиляции уменьшится.
sfind всего один. Просто он ищет в заданном контексте. Либо явно vocname sfind, либо неявно CONTEXT @ sfind. Я уверенно говорю об этом, потому что есть рабочая система, построенная по этому принципу.
Victor__v писал(а):
Кое-кто, всем известный шахматист, к примеру, приводит довод, что по происшествии н-го времени нельзя вспомнить какое слово как работает.
Не лучше ли механизм проверки ввести и вспоминать не надо будет?
К примеру, immediate-flag ' forth xt-wordlist-type

Не лучше. По заветам Мура-Броуди слово должно называться так, что сразу будет понятно ЧТО оно делает. Этому помогает правило: одно слово - одна функция. Правда тут кроется кажущееся противоречие. Неизбежно будут появляться слова, функция которых зависит от контекста. Но это только кажется. Потому что ситуация обратная. Контексты позволяют иметь слова с одинаковым именем, но разные функционально. Что дает возможность приближать форт-текст к тексту на пусть упрощенном, но человеческом, английском языке. Неизвестно, но вероятно, что иегролифические языки еще легче ложатся в эту концепцию.
А что дает механизм проверки? Как он действует? Как им пользоваться? Он потребует разработки специальной среды разработки?

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

Код:
Для слов, определённых через двоеточие - это ссылка на адресный интерпретатор, для слов, созданных определяющими словами - на точку DOES> определяющего слова

Ну если так, то возможно, когда писал, представлял себе натив без адресного интерпретатора :)

Цитата:
Чем короче список, тем раньше закончится поиск по нему. Специализированный список явно будет короче общего списка. И время компиляции уменьшится.

Так-то оно так, а как же поиск по контекстам? Ему же надо перебрать некоторое кол-во контекстов, дабы найти слово с нужным признаком. У вас какая-то эвристика что ли? Дабы облегчить нахождение?

Цитата:
Просто он ищет в заданном контексте.

А это уже интересненько. Это как?
Взял интерпретатор слово из входного потока, запускает sfind . Где здесь надо подставить "заданный контекст"?
Первое что на ум приходит - префиксы. А что второе?

Цитата:
А что дает механизм проверки? Как он действует? Как им пользоваться? Он потребует разработки специальной среды разработки?

1)
а. вспомнить, что есть что по прошествии энного времени
б. сделать энное действие над выборкой из списка

2) Есть список слов, есть слово которое может пройтись по элементам списка, к примеру WORDS.
WORDS можно выразить как ['] TYPE WORD-NAME-in-context , примерно всё от реализации зависит.
Дам стек.диаграмму.
WORD-LIST-XT ( xt voc \\ xt: LFA -- ?? )

слово для проверки на флаг immediate
: IMMEDIATE-FLAG >R R@ LFA>FFA @ 0x2 MOD IF R@ LFA>NAME TYPE CR THEN RDROP ;

Итого:
' IMMEDIATE-FLAG ' FORTH WORD-LIST-XT

3) см пункт 2)
4) нет

Цитата:
сразу будет понятно ЧТО оно делает

Это не всегда возможно. Не то что на русском, на английском непонятно как сформировать.
К примеру, как назвать слово берущее со стека число, систему исчисления, и адрес слова, и выдающее число в виде строки, с которой будут произведены некие манипуляции, зависящие от адреса слова.
т.е n base xt // xt: addr u -- ??
Вот как его назвать?
Я пока называю NUM>??
как назвать получше без потери смысла и записи имени в виде предложения?
Вариант num>str>непонятная_ересь не предлагать

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

Victor__v писал(а):
Так-то оно так, а как же поиск по контекстам? Ему же надо перебрать некоторое кол-во контекстов, дабы найти слово с нужным признаком. У вас какая-то эвристика что ли? Дабы облегчить нахождение?

Цитата:
Просто он ищет в заданном контексте.

А это уже интересненько. Это как?
Взял интерпретатор слово из входного потока, запускает sfind . Где здесь надо подставить "заданный контекст"?
Первое что на ум приходит - префиксы. А что второе?

Намного проще. Слово sfind берет контекст из переменной CONTEXT. Обычно в системе присутствует слово аналогичное (SFIND), которое словарь для поиска ака контекст берет со стека. ( В SPF это SEARCH-WORDLIST).
В каком-то смысле это можно назвать префиксами. Только эти префиксы действуют не на одно следующее слово, а до следующего префикса.


Цитата:
1)
а. вспомнить, что есть что по прошествии энного времени
б. сделать энное действие над выборкой из списка

А заглянуть в исходный текст или справочник разве нельзя?
Цитата:
2) Есть список слов, есть слово которое может пройтись по элементам списка, к примеру WORDS.
WORDS можно выразить как ['] TYPE WORD-NAME-in-context , примерно всё от реализации зависит.
....

Понял в чем у нас основное расхождение. Вы видите систему откомпилированной, я же в виде исходников.
Тот же SPF намного легче изучать, заглядывая в исходные тексты.

Цитата:
Это не всегда возможно. Не то что на русском, на английском непонятно как сформировать.
К примеру, как назвать слово берущее со стека число, систему исчисления, и адрес слова, и выдающее число в виде строки, с которой будут произведены некие манипуляции, зависящие от адреса слова.
т.е n base xt // xt: addr u -- ??
Вот как его назвать?
Я пока называю NUM>??
как назвать получше без потери смысла и записи имени в виде предложения?
Вариант num>str>непонятная_ересь не предлагать

Здесь мне сложно сказать что-то конкретное. Возможно, это слово нужно разбить на два-три, возможно нельзя. Но опять я вижу ответ на вопрос КАК, а не ЧТО? Вы мне описываете как оно работает и то не полностью. Собственно num>str было бы нормальным именем, если бы не непоятная ересь с некими манипуляциями. Может их как раз вынести в отдельное слово? И писать в два слова num>str> manipulations ?
Все равно ведь эти манипуляции определены отдельно.

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

Цитата:
В каком-то смысле это можно назвать префиксами. Только эти префиксы действуют не на одно следующее слово, а до следующего префикса.

А-а, что-то вроде [ IMMEDIATE-VOCS ] КОД1 КОД2 [ FORTH-VOCS ]

Цитата:
А заглянуть в исходный текст или справочник разве нельзя?

Можно, но мы же не знаем что мы наворотили пару лет назад :) Что из какого контекста было содрано.
А так это гибкий механизм упрощающий отладку и не только.

Цитата:
Тот же SPF намного легче изучать, заглядывая в исходные тексты.

Ага. Особенно когда простые вещи выражаются через сложные, по исходникам это сразу не просечёшь. Но дизассемблер наше всё 8)
Советую посмотреть дизассемблером слово ALSO для разогрева.
А так, хорошая система. Как и все остальные со своими закидонами.

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

Victor__v писал(а):
Советую посмотреть дизассемблером слово ALSO для разогрева.
А так, хорошая система. Как и все остальные со своими закидонами.

Мммм.. Зачем дизассемблером? Во-первых, я знаю что ALSO делает. Во-вторых, в SPF есть какой-то оптимизирующий компилятор, так что дизассемблировать явно очень тяжко.
По-моему, чем реверсить чужую форт-систему, проще написать свою. :)

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

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

Вооооот! :wink:

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