Подсветки синтаксиса обычно не выходят за рамки лексического анализа, что означает, что вам не нужно разбирать весь язык на операторы, объявления, выражения и тому подобное. Вам нужно только написать лексер, что довольно легко с регулярными выражениями. Я рекомендую вам начать с изучения регулярных выражений, если вы еще этого не сделали. Это займет все 30 минут.
Вы можете рассмотреть возможность игры с Flex (генератор лексического анализатора; https://github.com/westes/flex) в качестве учебного упражнения. Должно быть довольно легко реализовать базовую подсветку синтаксиса во Flex, которая выводит выделенный HTML или что-то в этом роде.
Короче говоря, вы бы дали Flex набор регулярных выражений и что делать с соответствующим текстом, и генератор будет жадно сопоставляться с вашими выражениями. Вы можете сделать свой переход лексера между исключительными состояниями (например, в и из строковых литералов, комментариев и т. Д.), Как показано в FAQ по флексам Вот канонический пример лексера для C, написанного на Flex: http://www.lysator.liu.se/c/ANSI-C-grammar-l.html.
Создание расширяемой подсветки синтаксиса станет следующей частью вашего путешествия. Хотя я ни в коем случае не фанат XML, взгляните на то, как определяются файлы подсветки синтаксиса Kate, такие как этот для C ++ . Ваша задача - выяснить, как вы хотите определить подсветку синтаксиса, а затем создать программу, которая использует эти определения для генерации HTML или чего угодно.