Молчун
Зарегистрирован: 20 May 2005
Сообщения: 40
Примеры кода: 0
|
Re[3]: Баг в компиляторе или... |
23 January 2007 13:52 |
|
|
|
|
Здравствуйте, nikov, Вы писали:
N>Вопрос 1: Почему в safe-контексте компилятор пытается разобрать '&' как одноместный оператор?
При разборе грамматики никакого safe-контекста нет. Это контекст на уровне семантики, но не грамматики.
N>Вопрос 2: Допустим, что в начале компилятор пытается разобрать '?' как часть тернарного оператора. Почему он не возвращается и не разбирает его по-другому (как nullable-sign), поcле того, как он не находит двоеточия?
Так реализован компилятор от Microsoft. По-моему он, после просмотра следующего за ? токена, в случае потенциальной неоднозначности, для совместимости с С#1.0, интерпретирует ? как оператор условного выражения.
N>
Для сравнения, следующий код успешно компилируется:
N>
N>static int? Foo(object x, object y)
N>{
N> return x as int? | y as int?;
N>}
N>
В данном случае не возникает неоднозначности. Оператор | бинарный, следовательно знак ? может быть только ч
Данное сообщение получено с сайта RSDN
|
|