Несколько вопросов по компилятору

Приемы и подходы, обмен опытом

Модераторы: Screw, larin

Аватара пользователя
ruslan
топ-софт
Сообщения: 24
Зарегистрирован: Пт, 21/09/2007 16:38
Имя Фамилия: Руслан Окуневич
Откуда: ТопСофт
Контактная информация:

Сообщение ruslan »

По поводу неполного вычисления логических выражений: мне тоже жутко не нравится такая реализация, когда всё выражение вычисляется всегда полностью, но к решению этой проблемы нужно подходить осторожно - если с какой-то версии Атлантиса вычисление логических выражений будет работать по-другому, то это грозит тем, что все Атлантис-приложения перестанут корректно работать. Возможный способ решения - расширить синтаксис языка. Например в C# операторы && и || вычисляют второй операнд при необходимости, а & и | - всегда.
stix
заказчик
Сообщения: 95
Зарегистрирован: Чт, 25/09/2008 07:45
Имя Фамилия: Марат Ахметзянов
Откуда: ОАО "Северо-Западные Магистральные Нефтепроводы"

Сообщение stix »

Руслан Окуневич
Не путать && и || vs & и | - это разные операторы!

& и | - это бинарные операторы побитового И/ИЛИ (так что здесь однозначно вычисляется второй операнд), эти операции применимы как к логическим, так и к простым (структурным) операндам
&& и || - это логические операторы, применимые только к булевым операндам.

Побитовые операции сейчас вряд ли нужны vip-у. А вот допилить and и or (&& и ||) просто необходимо!

По поводу все сломается - так нечего было полагаться на такое поведение! Тем более стандарта на vip, регламентирующего подобное поведение, как я понял нет.
А вообще можно в опцию компиляции ключик добавить - для поддержки старого кода. Все решаемо! На как сейчас оставлять однозначно нельзя!
cruger
топ-софт
Сообщения: 566
Зарегистрирован: Пт, 21/09/2007 15:19
Имя Фамилия: Фёдор Терсин
Откуда: Галактика Софт
Контактная информация:

Сообщение cruger »

Отчего же, есть стандарт - выражения вычисляются полностью.
А при реализации частичного вычисления ключик обязательно добавим, причём, локальный.
stix
заказчик
Сообщения: 95
Зарегистрирован: Чт, 25/09/2008 07:45
Имя Фамилия: Марат Ахметзянов
Откуда: ОАО "Северо-Западные Магистральные Нефтепроводы"

Сообщение stix »

Фёдор Терсин
Оч. хорошо, что есть стандарт! Это секретный документ? Как простым смертным его заполучить?

И что значит локальный ключик?
cruger
топ-софт
Сообщения: 566
Зарегистрирован: Пт, 21/09/2007 15:19
Имя Фамилия: Фёдор Терсин
Откуда: Галактика Софт
Контактная информация:

Сообщение cruger »

стандарт - это не значит документ
локальный - это значит, что его можно будет включить/выключить для конкретного выражения/исходника и т.п.
stix
заказчик
Сообщения: 95
Зарегистрирован: Чт, 25/09/2008 07:45
Имя Фамилия: Марат Ахметзянов
Откуда: ОАО "Северо-Западные Магистральные Нефтепроводы"

Сообщение stix »

Фёдор Терсин
То что не задокументировано, может трактоваться как угодно! В каком виде тогда стандарт? В голове конкретных разработчиков
cruger
топ-софт
Сообщения: 566
Зарегистрирован: Пт, 21/09/2007 15:19
Имя Фамилия: Фёдор Терсин
Откуда: Галактика Софт
Контактная информация:

Сообщение cruger »

ну и в голове использующих
можно, кстати, посмотреть, полагаю, в документации это описано
stix
заказчик
Сообщения: 95
Зарегистрирован: Чт, 25/09/2008 07:45
Имя Фамилия: Марат Ахметзянов
Откуда: ОАО "Северо-Западные Магистральные Нефтепроводы"

Сообщение stix »

Руслан Окуневич
Только что узнал, что побитовые операции есть в Галактике. Был не прав

Фёдор Терсин
Почитал доку
Кажется я понял, почему у вас работает полный разбор.
В vip-е скорей всего нет разделения м/у логическими и побитовыми and, or, xor

Логическая операции реализуются ч/з побитовые, а там нужны обязательно 2 аргумента. Если я не прав, поправьте

P.S. Описания таких нюансов в chm нет. Документ на стандарт нужен обязательно!
cruger
топ-софт
Сообщения: 566
Зарегистрирован: Пт, 21/09/2007 15:19
Имя Фамилия: Фёдор Терсин
Откуда: Галактика Софт
Контактная информация:

Сообщение cruger »

нет, вы неправы, реализованы они совершенно по разному

пользовательская документация нужна. она есть и улучшается. стандарт вещь вообще непонятная. что это такое, для кого и прочее.
есть документация-описание, и есть документация-практика использования. другой вроде не нужно
Ответить