Оберон-клуб «ВЄДАsoft»

Твердыня модульных языков
Текущее время: 23 апр 2019, 04:18

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




Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: особенность функции VAL
СообщениеДобавлено: 29 окт 2018, 23:30 
Не в сети

Сообщения: 338
В BlackBoxComponentBuilder функция VAL(INTEGER,"a") возвращает код буквы а, т.е. 97. Для строчки VAL(INTEGER,"ab") вернётся 256*97+98. Где-нибудь описано такое поведение? Ааа, хотя это всего лишь интерпретации первых букв строки как значение типа INTEGER при определённом порядке байт... А я-то пытался из этого вывести что-то про особый способ кодировки коротких строчек :)


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: особенность функции VAL
СообщениеДобавлено: 30 окт 2018, 17:58 
Не в сети
Аватара пользователя

Сообщения: 934
Откуда: Днепропетровская обл.
budden, функция SYSTEM.VAL обозначает "интерпретировать содержимое куска памяти по такому-то адресу как значение такого-то типа". Ваше "а" размещается в памяти в виде строки: код символа "a" и завершающий строку нуль. Если "a" это короткий однобайтовый символ, то Вы пытаетесь получить 4-байтовое число из двухбайтовой строки в памяти. То есть число будет состоять из двух байт строки и двух байт мусора.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: особенность функции VAL
СообщениеДобавлено: 06 ноя 2018, 13:31 
Не в сети

Сообщения: 338
Код на это не похож. Вот ссылка на кусок, который делает (он в нашей слегка переименованной копии, но не суть).

https://gitlab.com/budden/nkp/blob/master/k/Ня/Mod/Д.kp#L1697

(ссылки с кириллицей на вашем движке не работают). Вот для справки ссылка на оригинальный код:

https://gitlab.com/budden/nkp/blob/mast ... B.kp#L1692


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: особенность функции VAL
СообщениеДобавлено: 06 ноя 2018, 16:01 
Не в сети
Аватара пользователя

Сообщения: 934
Откуда: Днепропетровская обл.
Что Вы хотите этим сказать? Что VAL(INTEGER,"a") трактует "a" как символ и константный литерал, а не как строку? (тут вспоминается Patrik Reali с его критикой такой неоднозначности)

Ссылки кириллицей — да, много где не поддерживаются. Форумный движок же буржуйский.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: особенность функции VAL
СообщениеДобавлено: 06 ноя 2018, 20:30 
Не в сети

Сообщения: 338
Разврат мозга (т.е. отладчик) показывает, что "a" - это константа типа char8, а "аа" как раз попадает в указанную мной ветку. Как обрабатывается char8 - я пока не понял.

Последняя версия движка ПШПББ поддерживает урлы в кириллице.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: особенность функции VAL
СообщениеДобавлено: 10 ноя 2018, 19:57 
Не в сети

Сообщения: 338
Тема ещё не была раскрыта. Она понимает юникод:
Код: "OBERON"
  1.  
  2. MODULE Бережок; IMPORT SYSTEM; BEGIN
  3. ASSERT(SYSTEM.VAL(INTEGER,"ж")=1078);
  4. ASSERT(SYSTEM.VAL(INTEGER,"b")=98);
  5. END Бережок.
  6.  
  7. (* ^Q "Kernel.LoadMod('Бережок')"
  8. *)
  9.  


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: особенность функции VAL
СообщениеДобавлено: 11 ноя 2018, 00:46 
Не в сети

Сообщения: 52
Откуда: Equestria
Вроде всё логично, если строка из одного символа интерпретируется как [SHORT]CHAR.

Неоднозначность можно было бы решить если разрешить использование $ к константам.
Но не знаю насколько это нужно. Где ещё такая неоднозначность может вылезти? В gpcp вообще нет SYSTEM, а мой компилятор Оберона для jvm вообще генерирует инвалидный код для данного случая, гыг.

_________________
Извините, хоть и пони, но не толерантный и не терпеливый. Ну щито поделать.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: особенность функции VAL
СообщениеДобавлено: 23 ноя 2018, 05:47 
Не в сети
Администратор
Аватара пользователя

Сообщения: 94
Ссылки Кириллицей вполне возможно вставлять, если пользоваться тегом URL и копировать после url= ссылку из строки браузера с процентиками (в Firefox она именно с процентиками копируется).

https://gitlab.com/budden/nkp/blob/master/k/Ня/Mod/Д.kp#L1697


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

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


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

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


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

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Тех.поддержка phpBB