OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 30 Июль, 2021 22:50

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 26 ]  На страницу Пред.  1, 2
Автор Сообщение
СообщениеДобавлено: Воскресенье, 20 Июнь, 2021 11:21 

Зарегистрирован: Пятница, 07 Май, 2021 11:06
Сообщения: 14
Есть гипотеза!
Если для книжного примера перечень описателей в таблице базовых типов идет следующим образом P0, P1, P2, (для P2) ;
P0, P1 (для P1) (предполагаю что свой тэг дублируется в таблице базовых типов)
тогда p1 IS P2 преобразуется так
Глубина расширения P2 равна 2, следовательно 2 * 4 (размер указателя) получаем 8,
Следовательно, если типы равны, либо P2 расширяет тип P1, то в позиции по смещению восемь таблицы базовых типов p1 будет тип P1.
Теперь фокус ясен, всё ещё не понятно зачем дублировать свой адрес в описателе (дескрипторе) типа. Формально на рисунке у типа R0 должна быть запись указывающая на себя, но её нет. И на словах (т.е. в тексте) сказано, для типа R2 "то дескриптор R2 содержит тэги R1 и R0, как показано на рис."
Один ребус разгадали, спасибо всем кто помог.


Вложения:
TypeTest.png
TypeTest.png [ 26.26 КБ | Просмотров: 730 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 20 Июнь, 2021 16:28 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9427
Откуда: Россия, Орёл
JackKatch писал(а):
(был уверен что (a IS E1) = все что угодно, но не TRUE.


Ну так если селёдка IS рыба даёт FALSE, то это всё, что угодно, только не объектно-ориентированная / полиморфная семантика.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 21 Июнь, 2021 15:40 
Аватара пользователя

Зарегистрирован: Суббота, 16 Февраль, 2008 02:47
Сообщения: 494
JackKatch писал(а):
Есть гипотеза!
Если для книжного примера перечень описателей в таблице базовых типов идет следующим образом P0, P1, P2, (для P2) ;
P0, P1 (для P1) (предполагаю что свой тэг дублируется в таблице базовых типов)
тогда p1 IS P2 преобразуется так
Глубина расширения P2 равна 2, следовательно 2 * 4 (размер указателя) получаем 8,
Следовательно, если типы равны, либо P2 расширяет тип P1, то в позиции по смещению восемь таблицы базовых типов p1 будет тип P1.

Я именно это и пытался выразить:
Type(a).base[Type(E1).depth] = Type(E1)

JackKatch писал(а):
Теперь фокус ясен, всё ещё не понятно зачем дублировать свой адрес в описателе (дескрипторе) типа.

Чтобы не было особого случая Type(a) = Type(T). С этим особым случаем общее выражение для вычисления IS было бы
(Type(a) = Type(E1)) OR (Type(a).base[Type(E1).depth] = Type(E1))


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 21 Июнь, 2021 21:44 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1383
Для истории


Вложения:
typetests-a.pdf [52.73 КБ]
Скачиваний: 22
typetests.pdf [220.4 КБ]
Скачиваний: 24
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 22 Июнь, 2021 09:28 
Аватара пользователя

Зарегистрирован: Суббота, 16 Февраль, 2008 02:47
Сообщения: 494
Признателен за PDF, оч интересно в ретроспективе.

Бегло глянул, как в JVM сделан instanceof - похоже, там используется разреженная булева матрица и, вдобавок к этому, перебор по дереву типов.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 22 Июнь, 2021 14:28 

Зарегистрирован: Пятница, 07 Май, 2021 11:06
Сообщения: 14
В документе typetests.pdf , страница 628, на рисунке под надписью Descriptor for T001, опечатка. Последний в списке Tag for T000, а должно быть Tag for T001.


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

Часовой пояс: UTC + 3 часа


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

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


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

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2021, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB