Re[18]: Разбор грамматики C++
От: Павел Кузнецов  
Дата: 22.12.04 21:03
Оценка:
Шахтер,

> Я, правда, не совсем понимаю, какой бенефит от отложенного name lookup. Его же всё равно нужно делать, раньше или позже.


Смотря для чего пишется парсер. Например, если для средств автоматизации, то не обязательно. Для "полного" парсера, по идее, разницы не должно быть.

>>> (отсюда растет корнями невозможность отказаться в С++ от принципа предварительного объявления как это сделано в С#)


> ПК>А вот как это следует из предыдущего, я пока не вижу.


> А где я буду делать name lookup? Только в отпарсеной части кода, т.е. перед идентификатором. Всё, что следует после -- terra incognita.


Технически сделать возможность разрешать подобные неоднозначности без требования предварительного объявления можно. Вопрос в другом: хочется ли этого? Для C++ явным образом давно решили, что не хочется. Не по соображениям эффективности, а для того, чтобы уменьшить вероятность подхвата "чужих" имен. Правда, насколько это будет актуально, если введут модули, вопрос открытый.

> ПК> Имхо, в C++ вполне можно ввести модули, при импорте которых компилятор будет подгружать те же определения сущностей, которые он строит при анализе заголовков, включенных директивой препроцессора.


> Ну разумеется, только это не противоречит принципу предварительного объявления <...>


Ok. В первый раз я тебя неправильно понял.

> Идея прекрасная, синтаксис только дурной. Почему бы не ввести ключевое слово module и не писать, например, using module std;? Не стоит перегружать namespace.


Да, мне синтаксис тоже как-то не очень понравился.
Posted via RSDN NNTP Server 1.9 delta
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.