Несколько вопросов по компилятору
- ruslan
- топ-софт
- Сообщения: 24
- Зарегистрирован: Пт, 21/09/2007 16:38
- Имя Фамилия: Руслан Окуневич
- Откуда: ТопСофт
- Контактная информация:
По поводу неполного вычисления логических выражений: мне тоже жутко не нравится такая реализация, когда всё выражение вычисляется всегда полностью, но к решению этой проблемы нужно подходить осторожно - если с какой-то версии Атлантиса вычисление логических выражений будет работать по-другому, то это грозит тем, что все Атлантис-приложения перестанут корректно работать. Возможный способ решения - расширить синтаксис языка. Например в C# операторы && и || вычисляют второй операнд при необходимости, а & и | - всегда.
-
- заказчик
- Сообщения: 95
- Зарегистрирован: Чт, 25/09/2008 07:45
- Имя Фамилия: Марат Ахметзянов
- Откуда: ОАО "Северо-Западные Магистральные Нефтепроводы"
Руслан Окуневич
Не путать && и || vs & и | - это разные операторы!
& и | - это бинарные операторы побитового И/ИЛИ (так что здесь однозначно вычисляется второй операнд), эти операции применимы как к логическим, так и к простым (структурным) операндам
&& и || - это логические операторы, применимые только к булевым операндам.
Побитовые операции сейчас вряд ли нужны vip-у. А вот допилить and и or (&& и ||) просто необходимо!
По поводу все сломается - так нечего было полагаться на такое поведение! Тем более стандарта на vip, регламентирующего подобное поведение, как я понял нет.
А вообще можно в опцию компиляции ключик добавить - для поддержки старого кода. Все решаемо! На как сейчас оставлять однозначно нельзя!
Не путать && и || vs & и | - это разные операторы!
& и | - это бинарные операторы побитового И/ИЛИ (так что здесь однозначно вычисляется второй операнд), эти операции применимы как к логическим, так и к простым (структурным) операндам
&& и || - это логические операторы, применимые только к булевым операндам.
Побитовые операции сейчас вряд ли нужны vip-у. А вот допилить and и or (&& и ||) просто необходимо!
По поводу все сломается - так нечего было полагаться на такое поведение! Тем более стандарта на vip, регламентирующего подобное поведение, как я понял нет.
А вообще можно в опцию компиляции ключик добавить - для поддержки старого кода. Все решаемо! На как сейчас оставлять однозначно нельзя!
-
- заказчик
- Сообщения: 95
- Зарегистрирован: Чт, 25/09/2008 07:45
- Имя Фамилия: Марат Ахметзянов
- Откуда: ОАО "Северо-Западные Магистральные Нефтепроводы"
Руслан Окуневич
Только что узнал, что побитовые операции есть в Галактике. Был не прав
Фёдор Терсин
Почитал доку
Кажется я понял, почему у вас работает полный разбор.
В vip-е скорей всего нет разделения м/у логическими и побитовыми and, or, xor
Логическая операции реализуются ч/з побитовые, а там нужны обязательно 2 аргумента. Если я не прав, поправьте
P.S. Описания таких нюансов в chm нет. Документ на стандарт нужен обязательно!
Только что узнал, что побитовые операции есть в Галактике. Был не прав
Фёдор Терсин
Почитал доку
Кажется я понял, почему у вас работает полный разбор.
В vip-е скорей всего нет разделения м/у логическими и побитовыми and, or, xor
Логическая операции реализуются ч/з побитовые, а там нужны обязательно 2 аргумента. Если я не прав, поправьте
P.S. Описания таких нюансов в chm нет. Документ на стандарт нужен обязательно!