Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт мар 28, 2024 19:02

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 56 ]  На страницу 1, 2, 3, 4  След.
Автор Сообщение
 Заголовок сообщения: Борьба со словарями!
СообщениеДобавлено: Вт авг 24, 2010 21:20 
Не в сети

Зарегистрирован: Вс апр 25, 2010 11:14
Сообщения: 200
Откуда: Москва
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
Додумался до простой, но интересной мысли:
Если изменить в словарной статье LFA -
можно получить не список слов, а дерево,
то чего не хватало многим фортерам:
1 viewtopic.php?f=25&t=2097&start=15
в этой теме обсуждали иерархическое представление программы - более наглядно
2 можно отказаться от контекстных словарей
3 предыдуший вариант поиска слов продолжает работать
4 упрощённая процедура определения порядка поиска слов
5 подходит под затачивание форта, как проблемно-ориентированного языка

Как это работает:
В поле LFA указываем не банальную ссылку на предыдущее слово,
а ссылку на слово-родитель ( т.е. на точку привязки ) в виде xt.
Заставляем программиста указывать слово родитель перед компиляцией
т.е. : родитель : новое_слово слово1 слово2 ;
родитель заносится в переменную, а затем проставляется в LFA
Во главе иерархии слов, как в Delphi TObject - NOOP
В переменную "текущий словарь" заносится xt слова с которого начинается поиск
FIND-PARENT ( теперь стандартное слово поиска ) проверяет слово - и если не находит, передвигается к слову родителю
и так до NOOP, у NOOP в LFA 0 - конец поиска, NOTFOUND

Старый способ поиска через слово FIND такжк работает ( т.к. организация в виде списка сохраняется созданием отдельного поля связи либо использованием спец символа как признака начала статьи, например:
FIND смотрит последнее слово, затем посимвольно читает список до спец символа - признака словарной статьи, смотрит эту статью и.т.д )


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Борьба со словарями!
СообщениеДобавлено: Вт авг 24, 2010 21:33 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Код:
: dup : function1 ; \ надо же от чего-то отталкиваться
: function1 : function2 ; \ теперь основываем еще одну функцию
: function1 : function3 ; \ и еще одну

: function2 : function4  function2 function3 ; \ упс, function3 не видна в этом порядке поиска
: function3 : function4 \ может, так?
  function2 function3 ; \ упс, теперь function2 не видна


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Борьба со словарями!
СообщениеДобавлено: Вт авг 24, 2010 21:39 
Не в сети

Зарегистрирован: Вс апр 25, 2010 11:14
Сообщения: 200
Откуда: Москва
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
Пример некорректный: иерархия выстраивается не за счёт перечисления всех родственников слова до седьмого колена
Мы указываем только родительское слово - как в Дельфях
И выстраивается дерево состоящее из разветвлений и вложенных списков

Синтаксис также другой:
указывается родитель, а затем идёт стандартная процедура создания слова
Расширение почти не затрагивает основные принципы работы форта, но добавляет новых возможностей.
: function1 : function2 ; - до такого маразма надо было додуматься! Как это в форте можно начинать определение не закончив предыдущее?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Борьба со словарями!
СообщениеДобавлено: Вт авг 24, 2010 22:15 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2168
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 41 раз.
Antender писал(а):
2 можно отказаться от контекстных словарей

можно их просто не использовать

Понятие слово-родитель для форта бессмысленно -
у каждого слова может быть уйма родителей или ни одного.

Больше толку будет в возможности вносить часть семантики в сами имена слов
(комбинаторное именование).
Это и сейчас можно, но есть проблемы с опознаванием таких имен в плане больших чем для
обычных слов затрат времени на поиск.

_________________
С уважением, chess


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Борьба со словарями!
СообщениеДобавлено: Вт авг 24, 2010 22:23 
Не в сети

Зарегистрирован: Вс апр 25, 2010 11:14
Сообщения: 200
Откуда: Москва
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
Цитата:
Цитата:
2 можно отказаться от контекстных словарей


Точнее они просто будут не нужны

Родитель - неудачная метафора - скорее " слово в словаре к которому привязан поиск в словаре относительно текущего слова " И всё.

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

Кстати здесь "родитель" один т.к. наследуется не код и не внутряняя организация слова , а место в иерархии слов. Это не ООП наследование.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Борьба со словарями!
СообщениеДобавлено: Вт авг 24, 2010 22:48 
Не в сети

Зарегистрирован: Вс апр 25, 2010 11:14
Сообщения: 200
Откуда: Москва
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
Пример:

NOOP
+---------------------------------------+
основная ветвь слово 1 |
| ветвь
основная ветвь слово 2
|
+-------------------------------------------------------------------------+
| |
основная ветвь слово 3 |
| ветвь
+---------------------------------------+
| |
ветвь 1 слово 1 ветвь 2 слово 1
| |
ветвь 1 слово 2 ветвь 2 слово 2
|
+------------------+
| |
ветвь 3 слово 1 ветвь 4 слово 1
| |
ветвь 3 слово 2 ветвь 5 слово 2

слово 2 слову 3 родитель в одной ветви
слово 1 слову 2 родитель в одной ветви

слово 3 основной ветви родитель
для двух слов (ветвь 3-1) и (ветвь 3-2)

и.т.д.

Поиск слова ведётся с xt указанном в некоей переменной - допустим S
Заносим в S слово 4-1
Поиск пройдёт по 4-1, 1-2, 1-1, осн-3, осн-2, осн-1, NOOP
Заносим в S слово 2-2
Поиск пройдёт по 2-2, 2-1, осн-3, осн-2, осн-1, NOOP

Т.е. поиск от ветки в кроне дерева до корня NOOP
Таким образом:
1 Словарь только один, нет контекстных
2 гибкая процедура поиска из любого места словаря
3 нет Context - добавлять можно в любую часть словаря созданием новой ветви
4 Организация по прежнему в виде линейной структуры в памяти
5 новые слова при помощи переназначения ссылок можно добавить В ЛЮБУЮ ЧАСТЬ СЛОВАРЯ!


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Борьба со словарями!
СообщениеДобавлено: Вт авг 24, 2010 22:56 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Antender писал(а):
: function1 : function2 ; - до такого маразма надо было додуматься! Как это в форте можно начинать определение не закончив предыдущее?

Смотрим на верхний пост.
Antender писал(а):
Заставляем программиста указывать слово родитель перед компиляцией
т.е. : родитель : новое_слово слово1 слово2 ;

Это кто писал? И про маразм - разновидность самокритики? :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Борьба со словарями!
СообщениеДобавлено: Вт авг 24, 2010 23:02 
Не в сети

Зарегистрирован: Вс апр 25, 2010 11:14
Сообщения: 200
Откуда: Москва
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
Признаю ошибку, погорячился
В идеале выглядит так

т.е. :

родитель : новое_слово слово1 слово2 ;

кроме того родитель не слово - родитель xt
просто указание куда привязывать компилируемое слово


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Борьба со словарями!
СообщениеДобавлено: Вт авг 24, 2010 23:07 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Теперь представляем "обычного программиста", который решил не задумываться о выстраивании цепочек поиска с каждым новым словом. Что он сделает? Скорее всего, напишет такую штуку, которая будет "пристегивать" новое слово сразу за предыдущим. И получим, что есть сейчас. Кроме того, сейчас уже есть слово ":", которое представляет собой равноправное слово Форта, и выполняет вполне определенные, запрограммированные при его описании действия - в частности, прописывает LFA. Никто не запрещает написать еще одно слово, создающее словарную статью, но с другим именем, и вот оно будет писать в LFA нечто со стека. Ломать и бороться, таким образом, просто не с чем.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Борьба со словарями!
СообщениеДобавлено: Вт авг 24, 2010 23:22 
Не в сети

Зарегистрирован: Вс апр 25, 2010 11:14
Сообщения: 200
Откуда: Москва
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
1 Очень удобно пристёгивать библиотеки
Нужна в задаче - пристёгиваем до или после нужных слов
Возможность прикреплять слова в произвольном месте словаря - ИМХО такого пока ещё не было
2 Дерево - разветвлённый список
3 Менее муторная система смены текущего набора слов

Ломать придётся т.к. меняется интерпретатор ( смотрит с чего начинать поиск по переменной ), меняется словарная статья ( немного )

Придумано под влиянием
viewtopic.php?f=18&t=705&view=next
10 пост viewtopic.php?f=9&t=148


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

Зарегистрирован: Вс апр 25, 2010 11:14
Сообщения: 200
Откуда: Москва
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
viewtopic.php?f=36&t=1851

А это вообще тоже самое - как раньше не заметил?

Тем не менее способ работы придумал.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Борьба со словарями!
СообщениеДобавлено: Вт авг 24, 2010 23:41 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Antender писал(а):
Возможность прикреплять слова в произвольном месте словаря - ИМХО такого пока ещё не было

А дойти до произвольного места, и там загрузить файл - это не прикрепление в произвольном месте?
Antender писал(а):
Ломать придётся т.к. меняется интерпретатор ( смотрит с чего начинать поиск по переменной ), меняется словарная статья ( немного )

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Борьба со словарями!
СообщениеДобавлено: Ср авг 25, 2010 09:32 
Не в сети

Зарегистрирован: Вс апр 25, 2010 11:14
Сообщения: 200
Откуда: Москва
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
Дойти до произвольного места, загрузить библиотеку, загрузить вторую не мешающую первой, затем загрузить третью доступную для первых двух.

Интерпретатор смотрит xt в переменной поиска ( с какого слова начинать ) - немного по другому работает.

Словарь в виде дерева раньше уже предлагался - 2 поста вверх, по ссылке.

Обычному программисту придумывать ничего не придётся - слово ; выдаст xt созданного слова и в результате получится список внутри дерева. Останется только указать куда список подключать.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Борьба со словарями!
СообщениеДобавлено: Ср авг 25, 2010 10:06 
Не в сети
Аватара пользователя

Зарегистрирован: Пт дек 26, 2008 21:16
Сообщения: 412
Откуда: Великий Новгород
Благодарил (а): 9 раз.
Поблагодарили: 4 раз.
Antender писал(а):
отказ от контексных словарей и неудобной работы с ними.

От интересно почему автор решил что его способ удобнее. :!: :?:
Со словарями как раз легко и просто разобраться.
А в предложеных деревьях по моему так запутаешься что сам на дерево полезеш :D
Такое у меня создалось впечатление :roll:


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Борьба со словарями!
СообщениеДобавлено: Ср авг 25, 2010 10:09 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
Antender писал(а):
Додумался до простой, но интересной мысли: Если изменить в словарной статье LFA -можно получить не список слов, а дерево, то чего не хватало многим фортерам:1 viewtopic.php?f=25&t=2097&start=15


Кому не хватало - тот уже сделал!
Правда дерево не воротил, но словари могут хранить любые данные, кстати, с LFA вы погорячились ;)
Когда я сказал любые, я имел ввиду, то словарь может работать с неперечислимыми именами(например, с числами), а так же с именами генерируемыми под искомое (например, работа с функциями dll, как со словами, когда код, вызывающий слова генерируется при первой попытке вызова слова). Если интересно, вам сюда

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


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

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


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

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


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

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