ArtemKAD писал(а):
В общем я уже закипел, но что такое wid так еще и не нашел... Мне известно только, что он вычисляется как сумма VocLastWord с каким-то числом. А вот что за число...
Так понятнее слова "на порядок сложнее" ?
скипаю примеры.
Но по сути с тобой я не согласен. К тому же я очень удивлен непониманием общественности сути проблемы 8(
если структуры слованой статьи и словаря выделены отдельно, то их легче и понимать и главное модифицировать. Сейчас модифицировать саму статью очень большая проблема, хотя таковой быть не должна.
Возможно я назвал достаточно неправильно поля. можно обозвать и так:
0 Cell -- voc_lfa
Cell -- >wid
и так далее. Но это уже немного другая проблема.
Приведенный мною код, даже чужой я читаю гораздо легче, чем простые 0 , \ вместе с комментарием
так как по сути коментарий ничего не дает в дальнейшем. А при обращении к полям по имени всегда в тексте можно отождествить то, что делается не вникая в то, как устроена сама словарная статья либо словарь.
ArtemKAD писал(а):
можно и так. Но в моем случае смещения расчитываются автоматически
последовательность: OVER + SWAP CONSTAN можно заменить на
: field: OVER + SWAP CONSTANT ;
тогда текст будет чище. Но сути это не изменит.
Не "можно и так", а НУЖНО именно так. Вы ввели в код 6 новых имен, а теперь приведите пример как Вы их будете использовать например для чтения поля VocName скажем словаря FORTH (или любого другого словаря). Еще 6 имен введете?
Намек ясен или показать "в примерах"?
Можно ввести хоть еще 20 новых, если текст станет от этого чище и полезнее. (смотри в реализацию парсера СПФ, предложенную Черезовым. Там вместо одного слова WORD десяток более мелких, но зато более полезных.)
Кстати насчет показывания в примерах - давай, покажи примеры.
ArtemKAD писал(а):
здесь не понял утверждения 8(
причем тут отслеживание стековой нотации?
есть всего лишь один базовый адрес!
Для того, что-бы найти чему он равен. У Вас в примере он закопан так глубоко, что надо перерыть почти весь код слова.
и закопан адрес не глубоко - нет ни pick ни roll для его доставания.
с чего бы это? по-моему все ясно. ( тут одна проблема есть - при постах в форум форматирование улетает 8( все пробелы с начала строки уходят. Тогда да не так понятно получается 8( )
И еще насчет перерывания кода слова - там всего несколько строк. И при желании можно добавить коментарии. Но формат статьи будет задокументирован уже в коде, а не на словах.
ArtemKAD писал(а):
Цитата:
ArtemKAD писал(а):
Сразу понятно, что wid это то, что вернуло ALLOCATE + CELL ( 4 ) т.к. найти >R не составляет проблем.
а что делают остальные поля
Дык там-же и комментарии рядом лежат. Большего ответа на вопрос "что делают остальные поля" получить из того кода нельзя.
И как мне получить информацию о полях из интерпретатора? Каким образом?
парсить комментарии исходников? не слишком ли?
ArtemKAD писал(а):
Цитата:
и где они распологаются? что такое 6 cells + ?
cells ( a -- a*cell )
6 cells - ( -- 6*cell )
Далее R@ 6 cells + это адрес выделенный по ALLOCATE + 6 ячеек
И что там находится? Могу еще один перл привести:
: CLASS! ( cls wid -- ) CELL+ CELL+ CELL+ ! ;
и что бы это значило? И что здесь делать, если добавлено еще одно поле? А таких слова в СПФ мноого!
Если бы использовалась структура мне не пришлось бы лезть в этот код! А так при копании в СПФ руки опускаются 8(((
ArtemKAD писал(а):
Цитата:
что будет, если я захочу добавить еще одно поле? убрать лишнее?
Добавить - почти наверняка ничего, а вот убирать я бы Вам не советовал - мало ли какие либы пользуются убраным полем....
Вот это самое неприятное - использование хаков при написании либ. Вот в результате таких вещей и не работают многие либы 8( А совместимость обеспечить просто.
ArtemKAD писал(а):
Надеюсь в последствии при переносе перенесенных Вами либ на еще какую нибудь Форт-систему не понадобиться еще раз залезать в структуру словаря той ФОРТ-системы. Бо проблемы как раз и возникли по указанной мной причине - причене смал32-зависимости этих либ. Возможно именно такой подход к либам и не дал развиваться этой Форт-системе .
Смал здесь не причем. Развиваться он перестал из за создателя - он не открыл код 8(
Хотя порт смала под винду есть, но тоже без исходников. Смал спроектирован гораздо лучше СПФа и встреченных в спф-е проблем в смале нет.
Залезать в структуру словарной статьи придется по любому. Но это не проблема, когда она описана нормально, все что необходимо добавляется максимум двумя-тремя строчками.
ArtemKAD писал(а):
И я натыкаюсь на немодифицируемый код, то есть его конечно можно модифицировать, но для этого нужно весь форт перебрать потратив на это достаточно времени, вместо того, чтобы просто добавить еще одно поле в структуру?!
А может стоит попробывать изменить либу так, что-бы она работала на существующем ядре. Иначе достаточно мелкие изменения ядра могут катастрофически отразиться на работе либы .
Мне необходимо иметь возможность попадать в нужное поле слова и добавлять при необходимости свои поля в структуру слова. Тут нет ничего страшного, если все сделано как положено, а не через хак.