OberonCore
https://forum.oberoncore.ru/

Значения основных типов
https://forum.oberoncore.ru/viewtopic.php?f=29&t=542
Страница 1 из 1

Автор:  PGR [ Пятница, 29 Июнь, 2007 19:12 ]
Заголовок сообщения:  Значения основных типов

Почему NIL -- ключевое слово, а TRUE/FALSE -- предопределённые идентификаторы?

Автор:  Илья Ермаков [ Пятница, 29 Июнь, 2007 20:02 ]
Заголовок сообщения: 

Пёс его знает, но это действительно так.
Можно объявить CONST TRUE = 0 (правда, нормальный TRUE станет в модуле недоступен, зачем это нужно - ума не приложу), но нельзя сделать то же самое с NIL.

Автор:  PGR [ Суббота, 30 Июнь, 2007 16:17 ]
Заголовок сообщения: 

А для атрибутов методов NEW -- идентификатор, а ABSTRACT, EMPTY, EXTENSIBLE -- ключевые слова. :)

Автор:  Евгений Темиргалеев [ Понедельник, 02 Июль, 2007 11:36 ]
Заголовок сообщения: 

ИМХО, это не просто так, просто свои соображения Ominc в сообщение о языке не помещало :)

Для TRUE/FALSE - есть WinApi.TRUE (INTEGER = 1) и WinApi.FALSE (INTEGER = 0). Если ключевое слово - то WinApi.TRUE/FALSE - не получится.

Для NEW - есть еще и процедура NEW, которую можно переопределить. Может Ominc этим когда-то пользовалась?

Автор:  Trurl [ Понедельник, 02 Июль, 2007 11:53 ]
Заголовок сообщения: 

PGR писал(а):
А для атрибутов методов NEW -- идентификатор, а ABSTRACT, EMPTY, EXTENSIBLE -- ключевые слова. :)


Почему ключевые слова? При попытке определить PROCEDURE ABSTRACT; и т.п. выдается ошибка multiply defined identifier.

Автор:  PGR [ Понедельник, 02 Июль, 2007 14:30 ]
Заголовок сообщения: 

Trurl писал(а):
Почему ключевые слова? При попытке определить PROCEDURE ABSTRACT; и т.п. выдается ошибка multiply defined identifier.

В Component Pascal Language Report так написано... Оказывается это неправда :o

Автор:  PGR [ Понедельник, 02 Июль, 2007 17:41 ]
Заголовок сообщения: 

Евгений Темиргалеев писал(а):
Для TRUE/FALSE - есть WinApi.TRUE (INTEGER = 1) и WinApi.FALSE (INTEGER = 0). Если ключевое слово - то WinApi.TRUE/FALSE - не получится.

Это идёт ещё с Modula-2...
Евгений Темиргалеев писал(а):
Для NEW - есть еще и процедура NEW, которую можно переопределить. Может Ominc этим когда-то пользовалась?

Вообще предопределённые идентификаторы обычно использовались для встроенных процедур, типов и значений. Может для имени атрибута лучше было бы выбрать другое слово, вместо NEW...

Кстати, в ISO Modula-2 NIL -- это предопределённый идентификатор.

Автор:  PGR [ Понедельник, 02 Июль, 2007 17:48 ]
Заголовок сообщения: 

Trurl писал(а):
При попытке определить PROCEDURE ABSTRACT; и т.п. выдается ошибка multiply defined identifier.

А вот CONST ABSTRACT = 999; проходит без проблем.

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