OberonCore
https://forum.oberoncore.ru/

Toward Ultimate Unicode
https://forum.oberoncore.ru/viewtopic.php?f=3&t=795
Страница 2 из 4

Автор:  Борис Рюмшин [ Суббота, 29 Декабрь, 2007 13:46 ]
Заголовок сообщения:  Re: Toward Ultimate Unicode

Info21 писал(а):
Политика партии -- принцип Калашникова.


Главное, тут не нужно путать генеральную линию партии (АК) с политикой партии...

:mrgreen:

Автор:  Wlad [ Суббота, 29 Декабрь, 2007 13:55 ]
Заголовок сообщения:  Re: Toward Ultimate Unicode

Борис Рюмшин писал(а):
Info21 писал(а):
Политика партии -- принцип Калашникова.

Главное, тут не нужно путать генеральную линию партии (АК) с политикой партии...
:mrgreen:

+100 :о) Занести в мАксимы!

Автор:  Сергей Оборотов [ Понедельник, 31 Декабрь, 2007 22:35 ]
Заголовок сообщения:  Re: Toward Ultimate Unicode

Илья Ермаков писал(а):
Это хорошо. Только надо таки решить:
а) будем терпеть Latin-1 в объектных файлах
б) будем капать на мозги ОМ (я уже пробовал летом, они делали вид, что не понимают сути проблемы :-) )
в) будем итить своим путём.
б) не хорошо, а в остальном почему бы и нет.

Автор:  Иван Горячев [ Среда, 16 Январь, 2008 08:21 ]
Заголовок сообщения:  Re: Toward Ultimate Unicode

Trurl писал(а):
Тип Name переопределяем как ARRAY nameLen OF CHAR. Это благотворно повлияет на GetTypeName, GetObjName, GetRefProc, GetRefVar.

Проблема в том, что дескрипторы модуля и типов напрямую отображаются из ocf в память. И сия замена разом поменяет формат кодового файла. Я попытался грузить файлы с преобразованиями SHORTCHAR -> CHAR, но завис на fixup'ах :(

Автор:  Trurl [ Среда, 16 Январь, 2008 09:15 ]
Заголовок сообщения:  Re: Toward Ultimate Unicode

Иван Горячев писал(а):
Проблема в том, что дескрипторы модуля и типов напрямую отображаются из ocf в память. И сия замена разом поменяет формат кодового файла.


А формат кодового файла менять не надо.
Код:
PROCEDURE GetObjName* (mod: Module; obj: Object; OUT name: Name);
   VAR p: StrPtr;
BEGIN
   p := S.VAL(StrPtr, S.ADR(mod.names[obj.id DIV 256]));
   WideStr(p$,name)
END GetObjName;

Автор:  Иван Горячев [ Четверг, 17 Январь, 2008 09:36 ]
Заголовок сообщения:  Re: Toward Ultimate Unicode

Т.е. в кодовом файле хранить имена в SHORTCHARах в кодировке типа utf-8? На это в Kernel есть процедуры GetRefProc и GetRefVar. Часть символьной информации отображается прямо в память, но не выражается в системе ни в каких структурах - упомянутые процедуры елозят по памяти в поисках данных, в том числе и имён. И им придётся каждый раз преобразования кодировки делать. Невелик труд, конечно, тут вопрос в "правильности" скорее - отображать модуль напрямую в память или грузить его по частям, с заполнением всяких структур?

Автор:  Trurl [ Четверг, 17 Январь, 2008 17:45 ]
Заголовок сообщения:  Re: Toward Ultimate Unicode

Да и пусть себе елозят.

Автор:  Trurl [ Пятница, 18 Январь, 2008 10:25 ]
Заголовок сообщения:  Re: Toward Ultimate Unicode

Ещё некоторые атавизмы остались в StdLinks, StdFolds и т.д.

Автор:  Info21 [ Вторник, 13 Декабрь, 2011 21:37 ]
Заголовок сообщения:  Re: Toward Ultimate Unicode

Стал очевиден интерес к локализованным версиям ББ для школьников от 11 лет -- кроме русского и сугубо демонстрационного кабардинского (кстати, на новой версии школьной сборки работает влёт), есть еще телодвижения для двух крупных языков, не считая самозародившегося зародыша словарика для украинского.

Это задает совсем другой контекст для задачи юникодизации идентификаторов в ББ.
Как-то уже есть ощущение Неизбежности. Независимо от позиции Оминк.

У нас тут главный Trurl ведь?
Как бы прояснить состояние на данный момент?

Автор:  Trurl [ Понедельник, 05 Март, 2012 16:50 ]
Заголовок сообщения:  Re: Toward Ultimate Unicode

Кажется, есть совсем юникодный ББ. Пока только русский.

Автор:  Trurl [ Вторник, 06 Март, 2012 20:58 ]
Заголовок сообщения:  Re: Toward Ultimate Unicode

Код:
MODULE ЭтоПроба;

   IMPORT Log, Dialog;
   CONST
      α = 0;
      ω = 42;
      
   VAR Куку*: ARRAY ω OF CHAR;
     π*: REAL;
   
   PROCEDURE Раз*;
   BEGIN
      Log.String(Куку);Log.Ln;
      Log.Real(π);Log.Ln;
   END Раз;

   PROCEDURE Два*;
   BEGIN
      Куку := "Ха-Ха!";
      Dialog.UpdateString(Куку);
   END Два;

   PROCEDURE НапэўнаМожнаІТак*;
   BEGIN
      Куку := "Cапраўды!";
      Log.String(Куку);Log.Ln;
   END НапэўнаМожнаІТак;
   
   PROCEDURE УкраїнськуТежРозуміємо*;
   BEGIN
      Log.String("Це так!");Log.Ln;
   END УкраїнськуТежРозуміємо;
   
   PROCEDURE ĈiujLingvojTaŭgas*;
   BEGIN
      Log.String("Ĝoju!");Log.Ln;
   END ĈiujLingvojTaŭgas;

   PROCEDURE ΚατιΕλληνικο*;
   BEGIN
      Log.String("Γεια σας!");Log.Ln;
   END ΚατιΕλληνικο;

BEGIN
   π := 3.14;
   Куку := "Куку!";
END ЭтоПроба.

Вот примерно так.

Автор:  Trurl [ Вторник, 06 Март, 2012 21:05 ]
Заголовок сообщения:  Re: Toward Ultimate Unicode

Надо ещё с несовместимостями разобраться.

Автор:  Trurl [ Среда, 07 Март, 2012 21:38 ]
Заголовок сообщения:  Re: Toward Ultimate Unicode

Вот
Вложение:
bb16uni.zip [389.41 КБ]
Скачиваний: 201

Взять BlackBox 1.6; накатить на него это; открыть Build-Tool, скомпилировать, слинковать.
Или, по вкусу, использовать папку как целевую, далее по плану.

Отличия:
  • StdFolds,StdLinks,StdStamps,OleClient,SqlControls теперь умеют сохранять свои свойства в уникоде. Пришлось изменить версии. Но, если строки все же помещаются в Latin-1, то сохраняются по-старому, для совместимости.
  • Kernel все имена отдает/принимает как ARRAY OF CHAR. Соответственно, изменены модули, которые его используют.
  • В объектных файлах имена предполагаются в UTF-8 (точнее CESU-8), так что возможны недоразумения с модулями, скомпилированными в стандартном ББ и содержащими символы из верней половины Latin-1.
  • Точно так же Stores сохраняет имена типов. Возможны те же проблемы.
  • Процедуры, которые распознают имена изменены так, что принимают не только Latin-1.
  • Компилятор допускает те же символы в идентификаторах.
Набор символов сверх Latin-1: латинские с диакритикой, кирилица, греческий.

:( Упаковал с неправильным StdCmds
Вложение:
Комментарий к файлу: StdCmds
Cmds.odc [31.88 КБ]
Скачиваний: 464

Автор:  Info21 [ Среда, 07 Март, 2012 23:05 ]
Заголовок сообщения:  Re: Toward Ultimate Unicode

Спасибо, скачал.

Очередная школьная версия на 1.5, она практически готова.

И теперь потихоньку-полегоньку будем экспериментировать с этой.

Автор:  Trurl [ Пятница, 09 Март, 2012 19:19 ]
Заголовок сообщения:  Re: Toward Ultimate Unicode

Вот еще перекодировал из 1.5. Поскольку National (пока?) нет добавил i21sysNational.

Вложения:
Комментарий к файлу: переводы документации из 1.5
bb16docu-ru.7z [635.78 КБ]
Скачиваний: 200
ADru.7z [65.55 КБ]
Скачиваний: 196
i21прим.7z [44.66 КБ]
Скачиваний: 204
i21диал.7z [14.69 КБ]
Скачиваний: 200
i21sys.7z [185.17 КБ]
Скачиваний: 202
i21edu.7z [268.59 КБ]
Скачиваний: 196

Автор:  Trurl [ Понедельник, 12 Март, 2012 07:31 ]
Заголовок сообщения:  Re: Toward Ultimate Unicode

Оказывается перекодированная документация уже есть.

Я вот думаю: хранить имена в UTF-8 конечно напрашивается, но получается некоторая несовместимость. Может, добавлять в начало какой-нибудь символ?

Автор:  Info21 [ Понедельник, 12 Март, 2012 09:20 ]
Заголовок сообщения:  Re: Toward Ultimate Unicode

Trurl писал(а):
Оказывается перекодированная документация уже есть.
Вот зря Вы торопитесь.

Само перекодирование не проблема.
Важно четко знать, ЧТО перекодировать.

Trurl писал(а):
Я вот думаю: хранить имена в UTF-8 конечно напрашивается, но получается некоторая несовместимость. Может, добавлять в начало какой-нибудь символ?
"некоторая"?
Как в "некоторая несвежесть"? :)

Можно пример?

Автор:  Trurl [ Понедельник, 12 Март, 2012 11:16 ]
Заголовок сообщения:  Re: Toward Ultimate Unicode

Info21 писал(а):
Само перекодирование не проблема.

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

Info21 писал(а):
"некоторая"?
Как в "некоторая несвежесть"? :)

Да, что-то в этом роде. :)

Например, некий немец пишет
Код:
VAR subsidiär*:INTEGER;
PROCEDURE Manöver*;

и компилирует это в стандартном ББ.
Теперь в "уникодизированном" ББ получим китайские иероглифы: Man嵥r;subsidi㰀.
И наоборот, если скомпилировать это в "уникодизированном", то в стандартном получим
Код:
VAR subsidiär: INTEGER;
PROCEDURE Manöver;

Автор:  Info21 [ Понедельник, 12 Март, 2012 11:49 ]
Заголовок сообщения:  Re: Toward Ultimate Unicode

Trurl писал(а):
Info21 писал(а):
Само перекодирование не проблема.

Может быть и проблемой. Ссылки на русские имена файлов, напрмер.
Спасибо, теперь понял.

Trurl писал(а):
А что делать с формами, я даже не знаю.
У Цинна была где-то тулза как раз про программную обработку форм -- переименования и т.п.

Но тут уникод подмешивается.
Пож., приведите на этот счёт тоже явный пример.

Автор:  Info21 [ Понедельник, 12 Март, 2012 12:14 ]
Заголовок сообщения:  Re: Toward Ultimate Unicode

Хочу зафиксировать всё явно, для экономии умственной энергии в недалёком будущем.

Trurl писал(а):
Например, некий немец пишет
Код:
VAR subsidiär*:INTEGER;
PROCEDURE Manöver*;

и компилирует это в стандартном ББ.
Т.е. тут все буковки SHORTCHAR, но две -- из верхней АСКИ.

Trurl писал(а):
Теперь в "уникодизированном" ББ получим китайские иероглифы: Man嵥r;subsidi㰀.
Т.е. у-ББ считает литерки из верхней АСКИ за шифровку уникодных литер, пока в какой-то момент не вырулит опять на чистый нижний АСКИ.

Trurl писал(а):
И наоборот, если скомпилировать это в "уникодизированном",
То есть сначала конвертируем исходник в уникод, чтобы две буковки перешли из верхней АСКИ куда-то в уникод.

Trurl писал(а):
то в стандартном получим
когда попытаемся из стандартного изучить бинарники уникодного, например, пытаясь посмотреть интерфейс посредством Ctrl+D
Trurl писал(а):
Код:
VAR subsidiär: INTEGER;
PROCEDURE Manöver;
то есть каждая высокоуникодная литерка превратится в пару АСКИшных.

Понятно.
Понятно, что спешить тут не показано.
-------------
И какую литерку предлагается вставлять перед строкой УТФ-8?
Чтобы её видел стандартный ББ?
Разве это возможно?

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

Тогда для использования стандартного бинарника в у-ББ нужно добавить некий интерфейсный модуль (как делается для dll).

Пусть у-ББ маркирует свои идентификаторы спец.литерой (которая запрещена для идентификаторов в стандартном ББ), а две тулзы как-то это понимают.

No?

Страница 2 из 4 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/