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

...
Google Search
Forth-FAQ Spy Grafic

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




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

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
Интересуют предложения по формату структуры словаря
А также содержимому в поле флагов

Моё видение
Словарь
хеш-имени
поле-флагов ( можно и без него )
поле кода ( самоукладка словаря в контекст )
поле связи ( главное поле )
поле свободной ячейки ( для here )
поле связи внутри словаря
поле notfound ( по умолчанию ' false ;
Если слово не найдено в словаре, то попытаться его "определить" число или др.
Если операция не увенчалась успехом, то продолжить поиск по контексту )

поле флагов
0 немедленное исполнение
1 временное слово
2 инлайн
3 ?
4 ?
5 ?
6 ?
7 ?

бит " я словарь" в моём понимании не нужен.
бит " исключи меня из поиска" может пригодиться, а может и нет. С ним всё сложненько

_________________
Цель: сделать 64-битную Нову под Винду


Последний раз редактировалось Victor__v Пт фев 17, 2017 18:50, всего редактировалось 1 раз.

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: структура словарей и поле флагов
СообщениеДобавлено: Пт фев 17, 2017 14:47 
<тема для mOleg>


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

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

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


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

Зарегистрирован: Вт авг 12, 2008 03:18
Сообщения: 327
Откуда: Москва
Благодарил (а): 36 раз.
Поблагодарили: 7 раз.
Вопрос. В поле имени обязательно должны быть вписаны символы имени, или
можно ограничиться ссылкой на строку?

_________________
Линукс решает, винда глотает.


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

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
Цитата:
Вопрос. В поле имени обязательно должны быть вписаны символы имени, или
можно ограничиться ссылкой на строку?


Не обязательно.
Вариантов много.
Можно использовать указатель на строку, можно хеш вместо этого, можно саму строку пр.

Цитата:
Оставить можно поля имен, связи и кода(параметров).

Под связью подразумевается связь словаря, как слова внутри другого или как указатель на последнее слово в этом словаре?

_________________
Цель: сделать 64-битную Нову под Винду


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

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

Для локальных словарей символы имени. Слов в локальных словарях немного, собственно весь словарь можно представить строкой в которой: Имя1 адрес кода имени1 Имя2 адрес2 ... ИмяN адресN. Поиск адресов кода для имен через SEARCH(вместо SFIND).

Для глобального словаря(он один или максимум два) как угодно - лучше(имхо) если он устроен как обычно, но поиск кода имен через хэш-таблицу имен(имя-->хэш-->таблица-->адрес имени(сравнение имен)-->(есть сравнение)-->адрес кода(если нет сравнения имен, то обычный поиск по SFIND).

Никаких полей флагов не надо. Флаги для интерпретатора давать в виде суффиксов к именам слов. В этом случае видно какое это слово - немедленного исполнения или нет. Флаг SMUDGE тоже не нужен, потому как определяете слово с тем же именем что было раньше. Интерпретатор и без флага все правильно может сделать.

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


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

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
Цитата:
Никаких полей флагов не надо

Утверждение достаточно спорное.
От слов мы ожидаем вполне очевидного поведения. И оно м.б. любым.
циклы и if'ы, тому пример.
Цитата:
Флаги для интерпретатора давать в виде суффиксов к именам слов

IF'I DO'I DUP'C так что ли?
А как же быть с прежними наработками, где данных модификаций нет?

_________________
Цель: сделать 64-битную Нову под Винду


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

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

Вводя поле флагов мы увеличиваем число состояний интерпретатора.
И при написании программы кроме текущего состояния этой программы
мы должны удерживать еще и состояние интерпретатора, которое к функционированию нашей программы
отношения не имеет. Это излишне.

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


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

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
Цитата:
Вводя поле флагов мы увеличиваем число состояний интерпретатора

Состояния-то два.
Если immediate , то execute иначе думаем дальше. compile, или инлайн подстановка.
полтора состояния это не так уж и много

Цитата:
мы должны удерживать еще и состояние интерпретатора, которое к функционированию нашей программы
отношения не имеет. Это излишне

Что его удерживать? При компиляции исходников основное состояние компиляция, при отладке интерпретация.
Естественно, могут быть и более сложные случаи. Но насколько они частят? У меня редко.

_________________
Цель: сделать 64-битную Нову под Винду


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

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

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


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

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

Не равно, конечно, а определяется числом глобальных переменных.
Под глобальными переменными обобщенно можно понимать не только STATE, BASE и т.п., но и глобальные структуры интерпретатора, а это и стек параметров и стек порядка поиска в словарях. Состояние этих глобальных структур и определяет состояние интерпретатора. Управлять этим приходится - переставлять, копировать, удалять параметры на стеке, заводить словари, менять порядок поиска. Все это можно убрать. Интерпретатор будет иметь только одно состояние - исполнение. Словарь только один. Управление созданием программы только в одном месте - на уровне имен слов.

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


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

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
Цитата:
Словарь только один

От задачи зависит.
Помню заводил словарь в СПФ с одной простой целью - распарсить файл и вычленить из него все цифры
И вызывал примерно так: file-num::include

Цитата:
Управлять этим приходится

Фиг с ним, со стеком.
А насчёт смены порядка поиска проблемы не чувствую. Всяких там voc-swap voc-over voc-rot и т.д. не требуется.
Операций над стеком словарей требуется немного: убрать/добавить/поменять словарь, сохранить контекст, восстановить контекст

_________________
Цель: сделать 64-битную Нову под Винду


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Victor__v писал(а):
Если слово не найдено в словаре, то попытаться его "определить" число или др.
Если операция не увенчалась успехом, то продолжить поиск по контексту )

Тогда слово, состоящее из шестнадцатериных символов, будет то находиться, то нет - в зависимости от BASE. Например, A, B (это вообще переменные), DEAD, FACE, определенные в другом словаре, будут определены как шестнадцатиричные числа.
Числа ищутся после завершения поиска по всем словарям (которые доступны в текущем контексте, конечно).

Victor__v писал(а):
бит " я словарь" в моём понимании не нужен.

Рассматриваем два словаря. Один указывает на другой. Теперь вопрос - куда он должен указывать? На последнее слово, определенное в том словаре? Но когда в первом словаре появятся новые слова, они будут только из него и видны, а второй словарь будет по-прежнему указывать на то слово, которое было последним в момент его создания. Поэтому нужно вместо продолжения прохода по цепочке полей связи сначала узнать, где вход в словарь-родитель. Для этого и нужен флаг "я словарь", чтобы рассматривать LFA не как указатель на следующее слово в цепочке поиска, а как указатель на вход в цепочку следующего словаря. Ничего страшного тут нет, просто вместо LFA @ словарь делает LFA @ @
Victor__v писал(а):
бит " исключи меня из поиска" может пригодиться, а может и нет. С ним всё сложненько

Зависит от того, как организовать рекурсию. Если такого флага вообще нет, то нельзя писать определения вида

: +
(какое-то условие)
IF (что-нибудь новое) ELSE
+ (старый вариант плюса)
THEN
;

Без SMUDGE новый вариант + тут же найдется. А SMUDGE заставляет вводить специальное слово RECURSE, потому что текущее незавершенное определение вроде уже есть, но внутри самого себя не находится.


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

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1288
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
Цитата:
Тогда слово, состоящее из шестнадцатериных символов, будет то находиться

Действительно проблема. Можно тогда сделать поиск по контексту словарей, а уже потом если слово не найдено, применять цепочку из значений notfound-полей.

Цитата:
Рассматриваем два словаря. Один указывает на другой. Теперь вопрос - куда он должен указывать? На последнее слово, определенное в том словаре? Но когда в первом словаре появятся новые слова, они будут только из него и видны, а второй словарь будет по-прежнему указывать на то слово, которое было последним в момент его создания

Как-то не понял.
В словаре присутствует слово, которое является другим словарём. И?
Если активировать слово, оно обновит контекст. И из него слова словаря-родителя будут не видны. А внешний словарь не будет иметь доступа к словам внутреннего словаря.

Код:
просто вместо LFA @ словарь делает LFA @ @

создавал набросок системы словарей, где код LFA @ @ .... @ просто приведёт в конце концов к нулю. ( указатель на указатель). Словарь отличается, в моём представлении, дополнительными полями, где и хранится поле связи внутри словаря.

_________________
Цель: сделать 64-битную Нову под Винду


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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
возможно, вы не видели, а возможно видели, на всякий случай Устройство словарных статей и словарей в форке.
Кстати, с числами у меня все гораздо проще и интереснее, чем обычно :)

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


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

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


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

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


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

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