Для понимания шаблонов проектирования советую прочесть Роберта Лафоре алгоритмы и структуры данных на java от начала до конца, если раньше этому не учились
Конкретно меня интересует преобразование текстового представления кода в дерево объектов. Затем это дерево объектов можно раскрасить цветами, на сколько я понимаю так работает подсветка кода, поправьте меня, если не прав.