Создание достойной поддержки даже для одного нетривиального языка - большая работа.Подумайте об использовании библиотеки, которая сделает это за вас.Большинство из них не будут бесплатными, но, вероятно, это правильный путь, если только целью этого упражнения не является изучение теории компилятора.
Примером такой библиотеки является компилятор Microsoft C # (Roslyn).Он доступен как бесплатная библиотека с открытым исходным кодом, которую вы можете использовать в других приложениях .NET.Вы даете ему некоторый код в качестве ввода (в виде строки), и он говорит вам все, что нужно знать об этом куске кода: где находятся символы и ключевые слова, что представляет собой каждый символ, что предложить для автозаполнения, в какой момент, где компилироватьошибки в коде и т. д.
Если вы хотите научиться создавать что-то подобное самостоятельно, я предлагаю взять книгу по теории компиляторов и выделить несколько месяцев.Хотя это не ракетостроение, это тоже не тривиально.
Как только вы освоите лексеры и парсеры, вы, вероятно, захотите использовать генератор парсеров / лексеров, такой как Antlr, для утомительной работы по созданию лексера и парсера.После этого у вас все еще остается много работы для обработки синтаксического дерева, которое дает вам анализатор.Если вы создаете автозаполнение (intellisense), имейте в виду, что, пока пользователь печатает, код, который он печатает, вероятно, недействителен, что может привести к отключению синтаксического анализатора и появлению неправильных предложений автозаполнения.Как я уже сказал, чтобы сделать это правильно, нужно много работы.
Тем не менее, если подсветка синтаксиса - это все, что вам нужно, вы, вероятно, можете использовать редактор, в котором она уже есть.В зависимости от используемой вами технологии, вы можете использовать Scintilla или AvalonEdit .Вы не получите intellisense (автозаполнение), подсветку ошибок или любые другие функции, которые зависят от понимания смысла кода (семантический анализ), но вы можете получить полуприличную подсветку синтаксиса.