OberonCore
https://forum.oberoncore.ru/

B22: Компилятор игнорирует недопустимые для КП юникод-лит...
https://forum.oberoncore.ru/viewtopic.php?f=116&t=1837
Страница 1 из 1

Автор:  Евгений Темиргалеев [ Суббота, 12 Сентябрь, 2009 22:40 ]
Заголовок сообщения:  B22: Компилятор игнорирует недопустимые для КП юникод-лит...

Компилятор игнорирует недопустимые для КП юникод-литеры (c > 0FFX)
(исходный заголовок: "Юникод в 1.6 Ominc / 1.6 community")

Уважаемый Иван Горячев, кланяюсь в ножки!

И за Unicode tools, но самое главное за то, что удалось обнаружить ОПЕЧАТКУ в исходнике, благодаря Вашему допиливанию ББ до поддержки юникода. В 1.6 от оминк уже грешил на баг в компилере.
Код:
               (* Вызов сравнителя *)
               cres := -2;
               filepar.cmpr(par, oi.next.name, cres);
               IF ~((-1 <= cres) & (cres <= 1)) THEN HALT(100) END;
               ASSERT((-1 <= cres) & (cres <= 1), 100);
Предпоследняя строчка появилась когда начались "проблемы". Она отрабатывает, на ASSERT-е --- останов ("проблема")...... "Вызов сравнителя" был процедурой с VAR параметром res. Процедура была убрана, код вставлен на место вызова в процедуру с параметром res и переменной cres: INTEGER. Когда перепечатывал ASSERT (менял res на cres), впечатал юникодовую русскую эс. Которая стандартным сканером полностью игнорируется... и cres превращается в res.
Код:
   PROCEDURE DevCPM.Get* (VAR ch: SHORTCHAR);
      VAR ch1: CHAR;
   BEGIN
      REPEAT in.ReadChar(ch1); INC(curpos) UNTIL (ch1 < 100X) & (ch1 # TextModels.viewcode);
      ch := SHORT(ch1)
   END Get;
Сравните с:
Код:
   PROCEDURE DevCPM.Get* (VAR ch: SHORTCHAR);
   VAR ch1 : CHAR;
   BEGIN
      REPEAT in.ReadChar(ch1); INC(curpos) UNTIL ch1 # TextModels.viewcode;
      ch := UniLang.Short(ch1);
   END Get;

поправил опечатку в имени модуля

Автор:  Иван Горячев [ Понедельник, 14 Сентябрь, 2009 04:33 ]
Заголовок сообщения:  Re: Юникод в 1.6 Ominc / 1.6 community

Классно. На самом деле вот это конкретное моё исправление - попытка реализации русских идентификаторов. Весьма кривая, кстати :oops: И неудавшаяся. А после полувыхода официального 1.6 я нашу версию и вовсе забросил. И, кстати, это на самом деле баг в компиляторе - модуль то DevCPS ;)

Автор:  Евгений Темиргалеев [ Понедельник, 14 Сентябрь, 2009 09:28 ]
Заголовок сообщения:  Re: Юникод в 1.6 Ominc / 1.6 community

Иван Горячев писал(а):
И, кстати, это на самом деле баг в компиляторе - модуль то DevCPS ;)
Не понял, что Вы имеете в виду; поясните, пожалуйста.
Иван Горячев писал(а):
Весьма кривая, кстати :oops: И неудавшаяся.
нет худа без добра.. :)

Автор:  Иван Горячев [ Вторник, 15 Сентябрь, 2009 01:59 ]
Заголовок сообщения:  Re: Юникод в 1.6 Ominc / 1.6 community

Евгений Темиргалеев писал(а):
Не понял, что Вы имеете в виду; поясните, пожалуйста.


В смысле процедура DevCPS.Get игнорирует юникодные символы (Хотя согласно Сообщению они недопустимы). DevCPS - модуль компилятора. Значит можно говорить что это - баг компилятора

Автор:  Евгений Темиргалеев [ Вторник, 15 Сентябрь, 2009 09:10 ]
Заголовок сообщения:  Re: Юникод в 1.6 Ominc / 1.6 community

Согласен. Была бы ошибка "некорректный символ" не было бы и проблем с опечатками...

В официальной версии юникодовые символы (+немаскирующиеся вьюшки) игнорирует всё же DevCPM.Get к которой DevCPS.Get обращается для чтения следующего символа текста

Автор:  Евгений Темиргалеев [ Четверг, 29 Август, 2013 14:03 ]
Заголовок сообщения:  Re: Юникод в 1.6 Ominc / 1.6 community

письмо в рассылке
Date: Thu, 29 Aug 2013 10:38:16 +0000
From: Campbell, Robert (Selex ES, UK)
Subject: [BLACKBOX] BlackBox (compiler) patches - report illegal charcters.
Цитата:
Helmut, (All)

You recently asked for a collection of patches.

One I had forgotten was to stop the compiler quietly ignoring illegal Unicode characters in source code.

It has just saved me lots of wasted time, I accidently typed a Unicode ‘-‘ instead of an ASCII one. It looks the same in the Courier font I use for complex mathematical / numerical source code.

Because I was using this patch the error showed up immediately.

I can’t remember the details (file name etc), but can look if necessary. Anyway, please add it to your list if it is not already there.

Regards
Robert

Автор:  Евгений Темиргалеев [ Среда, 06 Ноябрь, 2013 19:48 ]
Заголовок сообщения:  Re: Компилятор игнорирует недопуст. юникод-литеры (>0FFX)

Решение: viewtopic.php?p=82262#p82262

Автор:  Роман М. [ Воскресенье, 05 Январь, 2014 22:30 ]
Заголовок сообщения:  Re: B22: Компилятор игнорирует недопустимые для КП юникод-ли

Решение Ивана Горячева мне симпатизирует больше чем решение Цинна из-за более гибкого подхода к многоязычности.

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