Я не думаю, что clang может постепенно разбирать файлы C ++, но это одна из целей этого проекта: http://clang.llvm.org/features.html
Я написал нечто подобное для моего последнего года проекта. Это был не редактор C ++, а плагин Visual Studio, основной задачей которого было улучшение IntelliSense C ++ (например, Visual Assist X).
Когда я писал этот проект, я также думал о инкрементном синтаксическом анализаторе C ++, но не нашел подходящего решения. Для решения проблемы интеллигенции в C ++ я использовал обычный синтаксический анализатор C ++ из GCC. Однако, чтобы замедлить анализ файла после каждого запроса завершения кода (Ctrl + Пробел), просто попробуйте включить boost :: spirit. Чтобы заставить этот проект работать должным образом, я анализировал файлы в фоновом режиме и после каждого запроса завершения кода сравнивал текущий файл с его предыдущей версией (через diff), чтобы обнаружить изменения, сделанные после последнего анализа. Имея эти изменения, я обновил синтаксическое дерево, в основном, добавляя или удаляя переменные.
Кроме инкрементного разбора, есть и другая проблема с такими проектами. В основном вы будете анализировать код C ++, который редактируется, чтобы он был неверным. Учитывая сложную грамматику C ++, иногда анализатор не сможет восстановиться после синтаксических ошибок, поэтому он не будет правильно определять некоторые символы в коде.
Другая проблема - различия в синтаксических анализаторах / компиляторах C ++. Допустим, я использую работу в Visual Studio и в своем коде я использовал конструкцию, специфичную для компилятора VC ++. Clang Parser не сможет правильно его проанализировать.