Вариант IClassifierProvider + IClassifier прост до безобразия, но только лексера мало — раскрашивать токены не особенно интересно, нужен контекст, а его нету — VS предоставляет только отдельные строки.
Хотелось бы раскрашивать по AST. Я так понимаю, надо копать в сторону LanguageService. Может у кого-нибудь есть опыт связки его с ANTLR?