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