OberonCore
https://forum.oberoncore.ru/

WITH!
https://forum.oberoncore.ru/viewtopic.php?f=29&t=455
Страница 1 из 1

Автор:  Илья Ермаков [ Четверг, 10 Май, 2007 01:02 ]
Заголовок сообщения:  WITH!

Да, простой язык, но периодически все равно что-то новое для себя открываешь...
Я, к примеру, не знал до настоящего момента, что в альтернативах WITH могут стоять разные имена переменных. Т.е. ищется не просто первое совпадение по типу для переменной, а первое соответствие среди заданных пар (переменная, тип).
Код:
   WITH dest: StdView DO
   
   | src: View DO
   
   END;

Автор:  Wlad [ Четверг, 10 Май, 2007 10:09 ]
Заголовок сообщения:  Re: WITH!

Илья Ермаков писал(а):
в альтернативах WITH могут стоять разные имена переменных. Т.е. ищется не просто первое совпадение по типу для переменной, а первое соответствие среди заданных пар (переменная, тип).

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

Автор:  Илья Ермаков [ Четверг, 10 Май, 2007 10:15 ]
Заголовок сообщения: 

Я сказал "пар", потому что проверка идет строго последовательно, по вариантам. И в итоге выполняется первая ветка, в которой имеется корреляция между var и type: var IS type.

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

Автор:  Wlad [ Четверг, 10 Май, 2007 10:45 ]
Заголовок сообщения: 

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

Автор:  Wlad [ Четверг, 10 Май, 2007 11:02 ]
Заголовок сообщения: 

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

Автор:  Илья Ермаков [ Четверг, 10 Май, 2007 11:11 ]
Заголовок сообщения: 

Вот и у меня ассоциации сразу в этом направлении пошли :-)

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

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

Автор:  Wlad [ Четверг, 10 Май, 2007 11:40 ]
Заголовок сообщения: 

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

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

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 ]
Заголовок сообщения: 

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

Автор:  Александр Ильин [ Четверг, 10 Май, 2007 12:01 ]
Заголовок сообщения: 

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

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

Автор:  Trurl [ Четверг, 10 Май, 2007 12:03 ]
Заголовок сообщения: 

А в Oberon?2 синтаксис другой:
WithStatement = WITH Guard DO StatementSequence
{"|" Guard DO StatementSequence}
[ELSE StatementSequence] END.

Автор:  Wlad [ Четверг, 10 Май, 2007 12:12 ]
Заголовок сообщения: 

Trurl писал(а):
А в Oberon?2 синтаксис другой:
WithStatement = WITH Guard DO StatementSequence
{"|" Guard DO StatementSequence}
[ELSE StatementSequence] END.

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

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