resaltado de sintaxis por lo general, no va más allá del análisis léxico, lo que significa que no tiene que analizar todo el lenguaje en declaraciones y declaraciones y expresiones y otras cosas. Solo tiene que escribir un lexer, que es bastante fácil con expresiones regulares. Te recomiendo que comiences aprendiendo expresiones regulares, si es que aún no lo has hecho. Tomará todos los 30 minutos.
Es posible que desee considerar jugar con Flex (el generador de analizador léxico; https://github.com/westes/flex) como ejercicio de aprendizaje. Debería ser bastante fácil implementar un marcador de sintaxis básico en Flex que muestra HTML resaltado o algo así.
En resumen, le daría a Flex un conjunto de expresiones regulares y qué hacer con el texto coincidente, y el generador coincidirá avariciosamente con sus expresiones. Puede hacer su transición de lexer entre estados exclusivos (por ejemplo, dentro y fuera de literales de cadena, comentarios, etc.) como se muestra en the flex FAQ. Aquí hay un ejemplo canónico de un lexer para C escrito en Flex: http://www.lysator.liu.se/c/ANSI-C-grammar-l.html.
Hacer un resaltador de sintaxis extensible sería la siguiente parte de su viaje. Aunque de ninguna manera soy fanático de XML, observe cómo se definen los archivos de resaltado de sintaxis Kate, como this one for C++. Su tarea sería averiguar cómo quiere definir marcadores de sintaxis, luego crear un programa que use esas definiciones para generar HTML o lo que le plazca.