OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 19 Март, 2024 05:12

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




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
СообщениеДобавлено: Пятница, 18 Март, 2016 23:43 

Зарегистрирован: Воскресенье, 03 Февраль, 2008 12:50
Сообщения: 249
Что-то не получается сделать заголовок подлиннее. Вопрос полностью выглядит так: Почему In.Int может читать только положительные числа согласно спецификации в Oakwood Guidelines? Курсивом выделил то, что не убралось в заголовок.

Теперь подробнее. Обычно в образовательных целях я использую Oxford Oberon-2 compiler, но тут ради интереса решил попробовать XDS и обнаружил неприятную вещь: In.Int может читать только положительные целые числа. Точнее даже будет сказать только "беззнаковые", в том смысле что число должно начинаться с цифры, а не знака. Потратил, к слову сказать, не так уж мало времени, чтобы понять, где источник проблем, т.к. вот уж откуда не ожидал подвоха, так это от In.Int. Решил заглянуть в Oakwood Guidelines... И таки спецификация In.Int действительно такова, что знаков в читаемом числе быть не должно, одни тольцо цифры (1.2.3.2 Operations):
Цитата:
LongInt(n) and Int(n) return the (long) integer constant n at the current position according to the format:
IntConst = digit {digit} | digit {hexDigit} “H”.

Тоже самое верно в общем то и для вещественных чисел (далее по тексту):
Цитата:
Real(n) returns the real constant n at the current position according to the format:
RealConst = digit {digit} [ {digit} [“E” (“+” | “-”) digit {digit}]].

У меня один вопрос: зачем?! Зачем вводить такое, не побоюсь этого слова, драконовское ограничение? У экспоненты вон, будьте любезны, знак учли, что уж перед числом то так сложно было? В чём сакральный смысл игнорирования очевидного факта, что знак может стоять и перед числом? Зачем усложнять жизнь на абсолютно пустом месте?

Чуть ниже по тексту (1.2.3.4 Origin) указано авторство спецификации:
Цитата:
Designed by Martin Reiser for the book ‘Programming in Oberon’. The above specification was proposed by H Mössenböck, ETH.

Но что-то в "Programming in Oberon" я такого не нашёл (слишком новое издание?). Единственно, что я там обнаружил, так это интерфейс для работы с текстами (22.3. Texts, Readers and Writers). Но вот там то как раз всё разумно:
Цитата:
integer = [sign] digit {digit} | digit {digit | hexdig} „H“.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 19 Март, 2016 00:20 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2662
Откуда: Россия, Ярославль
Этой версии реальности оказалось достаточно того факта что +, - и ~ (и может ещё какие-то) введены как monadic operations в парсере Оберона (и соответственно, везде, где он является основой).

А иначе как-то геморно реализовывать разбор такого многозначительного минуса, тут тебе и negation и difference и просто отрицательное число.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Четверг, 29 Апрель, 2021 16:48 
Аватара пользователя

Зарегистрирован: Среда, 22 Апрель, 2015 23:51
Сообщения: 248
Откуда: г. Рига, Латвийская ССР
Я тоже на это наткнулся только что, разрабатывая модуль In для Free Oberon Compiler.

В этом месте, похоже, придётся немного отойти от Дубовых требований.


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

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


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

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


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

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