Подсветки синтаксиса могут работать двумя очень общими способами. Первый реализует полный лексер и анализатор для выделенного языка (языков), точно идентифицируя тип каждого токена (ключевое слово, имя класса, имя экземпляра, тип переменной, директива препроцессора ...). Это предоставляет всю информацию, необходимую для точного выделения кода в соответствии с какой-либо спецификацией (ключевые слова в красном, имена классов в синем, что у вас).
Второй способ похож на тот, который используется в Google Code Prettify , где вместо реализации одного лексера / парсера на язык используется пара очень общих парсеров, которые могут справляться с большинством синтаксисов , Например, этот маркер сможет достаточно хорошо анализировать и выделять любой C-подобный язык, поскольку его лексер / синтаксический анализатор может идентифицировать общие компоненты этих типов языков.
Это также имеет то преимущество, что в результате вам не нужно явно указывать язык, так как движок сам определит, какой из его обобщенных синтаксических анализаторов справится лучше всего. Недостатком, конечно, является то, что подсветка менее совершенна, чем при использовании синтаксического анализатора для конкретного языка.