Если вам нужна конкретно простейшая подсветка синтаксиса (как в вашем примере с html), то вам достаточно
лексического анализа. Вам нужно выбирать токены в тексте, и в зависимости от типа токена, выбирать цвет для подсветки. В разных средах это будет реализовано по-разному - в Саблайме это делается через спец. язык описания конечных автоматов, в других редакторах могут использоваться регулярные выражения, в Visual Studio пишется лексический анализатор на ЯП общего назначения.
Поглядите на эти инструменты, С/С++:
Flex,
ANTLR для дотнет-языков еще
FsLex хорош (правда, синтаксис у него F#-овский).
Если нужен более сложный анализ (например, подстановки в зависимости от контекста), смотрите ответ
Дмитрий Макаров - это уже синтаксический анализ, следующий этап после лексического. Упомянутый Yacc - это классическая пара к Lex/Flex. Есть и более современный аналог, совместимый с Yacc -
Bison. Под дотнет могу посоветовать тот же ANTLR, и
FsYacc в пару к FsLex.