OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 16 Апрель, 2024 11:39

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




Начать новую тему Ответить на тему  [ Сообщений: 11 ] 
Автор Сообщение
 Заголовок сообщения: WITH!
СообщениеДобавлено: Четверг, 10 Май, 2007 01:02 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Да, простой язык, но периодически все равно что-то новое для себя открываешь...
Я, к примеру, не знал до настоящего момента, что в альтернативах WITH могут стоять разные имена переменных. Т.е. ищется не просто первое совпадение по типу для переменной, а первое соответствие среди заданных пар (переменная, тип).
Код:
   WITH dest: StdView DO
   
   | src: View DO
   
   END;


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: WITH!
СообщениеДобавлено: Четверг, 10 Май, 2007 10:09 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Илья Ермаков писал(а):
в альтернативах WITH могут стоять разные имена переменных. Т.е. ищется не просто первое совпадение по типу для переменной, а первое соответствие среди заданных пар (переменная, тип).

А плчему именно "пар"? Определеяющим является тип, а уж имя переменной - вторично, по-моему...
ЗЫ Илья, а имеет ли смысл дублировать сообщения здесь и в Королевстве? Отвечать-то по идее то же в двух местах придётся... :о) Ленно, да и запутаться можно. Вдруг обсуждение по разным линиям пойдёт?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 10 Май, 2007 10:15 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Я сказал "пар", потому что проверка идет строго последовательно, по вариантам. И в итоге выполняется первая ветка, в которой имеется корреляция между var и type: var IS type.

По поводу ветки - может и не стоит дублировать, но хочется как-то оживить ветку про языки на КД :-)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 10 Май, 2007 10:45 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Нет, кажется именно вы правы...
Хм... Действительно - несколько другой (то есть, совершенно другой! :о) ) угол зрения на конструкцию появился.
Спасибо! :о)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 10 Май, 2007 11:02 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Не знаю, насколько ценна будет мысль, но - поделюсь... :о)
Данный аспект открывает интересную возможность построения "локально-централизованного" анализатора состояний каких-либо объектов обобщённо выражающееся через их текущий тип. Что-то родственное конструкции alt { ... } в Лимбо. Но там "прослушиваются" каналы, а здесь - обобщённо - объекты.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 10 Май, 2007 11:11 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Вот и у меня ассоциации сразу в этом направлении пошли :-)

Только выяснить бы, откуда идет эта семантика? С Оберона? Или это в КП добавили, или - вообще недокументированная особенность ББ...

Попробовать бы в других версиях, но я в Линуксе, кроме ББ там у меня ничего не живет :(


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 10 Май, 2007 11:40 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Илья Ермаков писал(а):
Только выяснить бы, откуда идет эта семантика? С Оберона? Или это в КП добавили, или - вообще недокументированная особенность ББ...

А так ли это важно?
Я думаю, интереснее взглянуть на БНФ описание этой части грамматики:

Statement =
...|
WITH [ Guard DO StatementSeq ]
{"|" [ Guard DO StatementSeq ] }
[ELSE StatementSeq] END
..

Интересно, правда? В смысле того, что , если убрать то, что в {}, то получим

WITH [ Guard DO StatementSeq ]
[ELSE StatementSeq] END

а теперь убираем "необязательное" в []

WITH END

но это - гарантированный эксэпшн, потому, что, по логике, не один из вариантов не подошёл, а ELSE - тоже нету... :о)
Мне интересно, это прокатывает на компиляции? (Я сегодня только вечером рц5 намереваюсь скачать...)

Илья Ермаков писал(а):
Попробовать бы в других версиях, но я в Линуксе, кроме ББ там у меня ничего не живет :(

А где бы мне позаиметь для федоры вариант? :о)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 10 Май, 2007 11:59 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Хе, Вы думаете у меня какой-то особенный ББ? :-)
Рабочий - самый обычный 1.5.
Нужен Wine от 0.9.16, проставить шрифты - и.. И три месяца уже проблем не знаем! :-)
Только еще в GNOME лучше работать, т.к. KDE слишком шустро какие-то сообщения от мышки на себя перехватывает, в результате ссылки могут не работать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 10 Май, 2007 12:01 
Аватара пользователя

Зарегистрирован: Вторник, 19 Сентябрь, 2006 21:54
Сообщения: 2449
Откуда: Россия, Томск
Илья Ермаков писал(а):
Только выяснить бы, откуда идет эта семантика? С Оберона? Или это в КП добавили, или - вообще недокументированная особенность ББ...

В XDS работает. Сообщению о языке тоже вроде не противоречит. Осталось только на Native проверить, если у кого установлен.


Последний раз редактировалось Александр Ильин Четверг, 10 Май, 2007 12:07, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 10 Май, 2007 12:03 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
А в Oberon?2 синтаксис другой:
WithStatement = WITH Guard DO StatementSequence
{"|" Guard DO StatementSequence}
[ELSE StatementSequence] END.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Четверг, 10 Май, 2007 12:12 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Trurl писал(а):
А в Oberon?2 синтаксис другой:
WithStatement = WITH Guard DO StatementSequence
{"|" Guard DO StatementSequence}
[ELSE StatementSequence] END.

МОжет опечатка якась? Я Это зрел в пособии инфо21 по ББ.


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

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


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

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


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

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