Мой первый вопрос.
Мне всегда было интересно об этом.
Предположим, что вы разбираете следующую строку кода:
List<Nullable<int>> list = new List<Nullable<int>>();
При синтаксическом анализе наивный токенизатор будет считать, что два прямоугольных скобки являются одним маркером "shift right". Я не сталкивался с этой проблемой с любой другой языковой конструкцией на языке C-стиля.
Как современные парсеры справляются с этим? Есть ли обходной путь при использовании такого "жадного разбора"?
Я подумал об использовании структуры стека в синтаксическом анализаторе, который обрабатывает эти токены специально при анализе общих типов. Я не уверен, насколько хорошо это работает при написании редактора кода.
Спасибо, тонна!:)