Forth
http://www.fforum.winglion.ru/

наследование..
http://www.fforum.winglion.ru/viewtopic.php?f=25&t=2757
Страница 1 из 1

Автор:  mOleg [ Вс сен 04, 2011 09:01 ]
Заголовок сообщения:  наследование..

source file: heir.fts
\ 04.09.2011 ~mOleg
\ Copyright [C] 2011 mOleg mOlegg@ya.ru
\ наследование содержимого словаря

vocs/ vocab.fts

ALSO HIDDEN

\ создать словарь с именем name наследующий все содержимое словаря с указанным vid
\ после выполнения HEIR словарь name становится контекстным и текущим.
: HEIR: ( vid / name --> )
NEXT-WORD SVOCAB
DUP off_vname A@ >L DUP off_vlink A@ >L DUP >L
OVER off_threads# B@ CELLS /wordlist + CMOVE
L> L> OVER off_vlink A! \ сохраняются уникальные voc-link и
L> OVER off_vname A! \ ссылка на имя словаря
ALSO WITH
ALSO THIS
;

\ создать словарь с именем name наследующий все содержимое указанного voc словаря
\ после выполнения Heir словарь name становится текущим и контекстным
: Heir ( / voc name --> )
NEXT-WORD FINDVOC 0 OVER = ABORT" Ожидается имя словаря!" HEIR:
;


PREVIOUS

?ABSENT test{ \EOF -- тестовая секция ------------------------------------------
test{

VOCABULARY ZZZ
ALSO ZZZ DEFINITIONS
: a ." a" ; : b ." b" ; : c ." c" ;

ALSO FORTH DEFINITIONS
' a VALUE 'a ' b VALUE 'b ' c VALUE 'c
RECENT

CONTEXT @ RECENT HEIR: XXX
\ есть ли наследование?
' a 'a <> THROW ' b 'b <> THROW ' c 'c <> THROW

: d ." d" ; : e ." e" ; : f ." f" ;

ALSO FORTH DEFINITIONS
' d VALUE 'd ' e VALUE 'e ' f VALUE 'f
RECENT RECENT

Heir XXX CCC
: d ." переопределено" ;
\ доступны ли все слова?
' a 'a <> THROW ' b 'b <> THROW ' e 'e <> THROW ' f 'f <> THROW
\ переопределение сработало?
' d 'd = THROW

RECENT
}test
\EOF

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

Heir ( voc Name --> )
как и предыдущее определение позволяет наследовать список имен
из словаря voc , имя которого ищется в списке VOC-LINK (то есть
только среди словарей) во вновь созданный словарь с именем Name.

В случае "пополнения" содержимого наследуемого словаря в наследнике
изменения отражаться не будут! Т.е. "слепок имен" делается один раз.
Создаваемые в наследующем словаре определения так же не отражаются на
содержимом словаря, из которого был сделан слепок. Каждый наследник
создается внутри текущего словаря, который не обязан быть наследуемым.


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

PS. добвил вариант с Heir, когда имя словаря ищется в VOC-LIST. И примерчик в конце
PS. несколько причесал, добавил простой тест и описание в конце.

Автор:  вопрос [ Вс сен 04, 2011 16:22 ]
Заголовок сообщения:  Re: наследование..

Вообще, в духе открытого транслятора следовало бы задавать правила поиска, а не закладывать из в транслятор

Автор:  вопрос [ Вт сен 06, 2011 21:12 ]
Заголовок сообщения:  Re: наследование..

chess писал(а):
А неинтересно понятно почему - даже простая схема аля F83 на практике не сильно нужна

У Олега своя концепция словарей, где словарь ... упорядочивает очень многое :?:

Но, я уже говорил выше, что нужно для принятия идеи

Автор:  chess [ Вт сен 06, 2011 21:19 ]
Заголовок сообщения:  Re: наследование..

вопрос писал(а):
У Олега своя концепция словарей, где словарь ... упорядочивает очень многое

Очень многое... почему не все сразу?
Тогда может это и не словари вовсе.
Словарь - список слов с иерархической расшифровкой сложных слов через простые.

Автор:  _Harry [ Пн сен 12, 2011 14:19 ]
Заголовок сообщения:  Re: наследование..

Интересно все. Но...
Возник вопрос а зачем в форте наследование. :roll:
Может автор пояснит :?:

Автор:  mOleg [ Пн сен 12, 2011 14:52 ]
Заголовок сообщения:  Re: наследование..

_Harry писал(а):
Интересно все. Но...Возник вопрос а зачем в форте наследование.

конкретно надо несколько пространств имен (отдельных словарей) с повторяющимися именами и скрытыми за ними действиями, а писать кучу ALIAS -ов лень 8)

Автор:  _Harry [ Вт сен 13, 2011 16:58 ]
Заголовок сообщения:  Re: наследование..

Цитата:
Heir, когда имя словаря ищется в VOC-LIST
Да еще неплохо бы упомянуть что FINDVOC найдет первый в списке словарь с указанным именем.
И посему неплохо сделать слово которое брало бы в качестве наследуемого вершину стека контекста(для полного комплекта :wink: )

Автор:  mOleg [ Вт сен 13, 2011 17:45 ]
Заголовок сообщения:  Re: наследование..

_Harry писал(а):
Да еще неплохо бы упомянуть что FINDVOC найдет первый в списке словарь с указанным именем

Ну, да, хотя, одноименные словари все же редкость 8)

_Harry писал(а):
И посему неплохо сделать слово которое брало бы в качестве наследуемого вершину стека контекста(для полного комплекта )

дык, прямо в тестовой секции так и сделано:

CONTEXT @ HEIR: Name

имеется смутная идея объединить heir c unit.fts , однако, в плане синтаксиса в голову не приходит удачного варианта.

Автор:  _Harry [ Ср сен 14, 2011 14:15 ]
Заголовок сообщения:  Re: наследование..

mOleg писал(а):
Ну, да, хотя, одноименные словари все же редкость
Согласен.
Но и наследование не очень часто нужно. Как раз тут то может быть закаквыка.
Раз начал наследовать то и словари с одинаковыми именами могут понадобится.
Тут просто помнить надо что FINDVOC в этом случае использовать опасно.
mOleg писал(а):
дык, прямо в тестовой секции так и сделано:

CONTEXT @ HEIR: Name
Ну да может и не стоит делать такое слово кому надо тот и сам напишет.

Автор:  mOleg [ Ср сен 14, 2011 17:03 ]
Заголовок сообщения:  Re: наследование..

_Harry писал(а):
Раз начал наследовать то и словари с одинаковыми именами могут понадобится.Тут просто помнить надо что FINDVOC в этом случае использовать опасно.

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

Автор:  _Harry [ Чт сен 15, 2011 14:06 ]
Заголовок сообщения:  Re: наследование..

mOleg писал(а):
ну, это тут как раз не причем. Наследуются только ссылки на имена,
Я и не утверждал что это обязательно связанно. Но такое возможно тем более что " ...дело пахнет..." ООП :wink: Так что стоит упомянуть в комментариях про этот аспект.

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