OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Суббота, 15 Декабрь, 2018 05:49

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




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
СообщениеДобавлено: Воскресенье, 15 Июль, 2018 19:09 

Зарегистрирован: Пятница, 13 Март, 2015 16:40
Сообщения: 241
На RPi3 в среде Ofront 1.4 (Oberon V4) модуль Display.Mod содержит тип "нуль-запись":
Цитата:
TYPE
Bytes* = (*X11.Bytes*)RECORD END;
Font* = (*X11.Font*) POINTER TO Bytes;

Команда Browser.ShowDef для этого модуля выдала непонятное мне, но крайне заинтересовавшее, определение:
Цитата:
TYPE
Bytes = RECORD [256]
END;
Font = POINTER TO Bytes;

Попробовал описать тип "нуль-запись" с числом в []: транслятор ругается "SYSTEM not imported" и caret указывает на первую скобку.
Добавил импорт SYSTEM: "illegal value of parameter" число в скобках.

Квадратные скобки и их содержимое как расценивать?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 16 Июль, 2018 13:33 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 742
Откуда: Киев
Ещё интересно, откуда взялся Ofront на RPI3. Шёл в стандартной поставке одной из доступных ОС?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 16 Июль, 2018 20:04 

Зарегистрирован: Пятница, 13 Март, 2015 16:40
Сообщения: 241
Comdiv писал(а):
Ещё интересно, откуда взялся Ofront на RPI3. Шёл в стандартной поставке одной из доступных ОС?

От Темпля. Свежак ;)
Copyright 1995-2016, Software Templ OG. All rights reserved.
http://www.software-templ.com/shareware.html
Нет не шёл, но причин не установить нет.

Любезное сообщество, ну может кто в курсе про "[]" в нуль-записи?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 17 Июль, 2018 12:27 

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 993
Artyemov писал(а):
Добавил импорт SYSTEM: "illegal value of parameter" число в скобках.

Правильно ругается. В этой версии Оберона:
Код:
IF (sf < 0) OR (sf > OPM.MaxSysFlag) THEN err(220); sf := 0 END

Значение sysflag более 255 используется в OfrontOPC.NofPtrs для исключения подсчетов.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 17 Июль, 2018 17:16 

Зарегистрирован: Пятница, 13 Март, 2015 16:40
Сообщения: 241
Я не в претензии, но синтаксическая конструкция с числом в "[]" после RECORD нигде ж не описана.


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

Зарегистрирован: Вторник, 29 Ноябрь, 2005 21:41
Сообщения: 993
Описывают в приложениях к описаниям, как небезопасное расширение синтаксиса для системных нужд. В некоторых версиях ещё и фигурные скобки для флагов используют.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 18 Июль, 2018 03:12 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 198
Откуда: Украина, Днепропетровская обл.
Artyemov писал(а):
Цитата:
TYPE
Bytes = RECORD [256]
END;

Квадратные скобки и их содержимое как расценивать?

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

Максимальное значение числа, ровно как и то, какие числа транслятор пропустит, это уже зависит от реализации. BlackBox тоже разрешает запись
Код:
RECORD [1]
как аналог
Код:
RECORD [untagged]

Смотрим в коде BrowserCmd как устроен этот вывод:
Код:
      PROCEDURE SysFlag;
      BEGIN
         IF typ^.sysflag # 0 THEN
            Wch("["); Wi(typ^.sysflag); Ws("] ")
         END
      END SysFlag;

   BEGIN
      CASE typ^.form OF
      ...
            | Record:
                  Ws("RECORD "); SysFlag;
                  IF typ^.BaseTyp # NIL THEN Wch("("); Wtype(typ^.BaseTyp); Wch(")") END ;

Ofront хранит в системном флаге типа "запись" не только внутренний код флага (биты {0..7}), но и системное выравнивание записи (биты {8..14}). Это внутренняя информация транслятора, нужная для правильного расчёта выравнивания полей при расширении записи.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 18 Июль, 2018 19:52 

Зарегистрирован: Пятница, 13 Март, 2015 16:40
Сообщения: 241
Спасибо.
Получается я влез в дебри.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 19 Июль, 2018 01:52 
Аватара пользователя

Зарегистрирован: Вторник, 28 Август, 2007 00:55
Сообщения: 198
Откуда: Украина, Днепропетровская обл.
Не совсем. Просто, видимо, Йозефу было удобно видеть сырое значение флагов в браузере при просмотре интерфейса модуля. Может быть, для нужд отладки. Так и осталось, исправлять не стал. А можно было бы исправить.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

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


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

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


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

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