Вопрос:
Я хочу код для: подсветки синтаксиса (языков программирования)
Язык: C # или сборка x86 (желательно C #)
Платформа: Windows
Квалификация: возможна наиболее эффективная реализация / наиболее профессионально / как крупные корпорации, такие как Microsoft, делают это
Перефразировано: как реализовать подсветку синтаксиса в C # для Windows наиболее эффективным способом, известным в настоящее время?
Разработка (не стесняйтесь - не нужно отвечать на вопрос:)):
Я не хочу просто какого-либо способа его реализации - я уже видел несколько.
Я хотел бы знать, как Microsoft делает это так хорошо в Visual Studio (в зависимости от версии).
Люди продолжают изобретать велосипед, когда дело доходит до подсветки синтаксиса. Я не понимаю почему.
Считается ли это очень сложной проблемой? Я видел реализации, которые только выделяют то, что в данный момент отображается на экране, я думаю, что это путь ... (он использовал какой-то умный API, чтобы узнать, какие строки текстового поля действительно отображались).
Я также видел реализации, использующие RichTextBox, и я думаю, что это , а не . может быть, лучше (может быть, я где-то видел - сомневаюсь, что сам подумаю)
Кроме того, я слышал, что некоторые люди реализуют его с помощью AST точно так же, как был бы закодирован компилятор (я думаю, это лексер) - я надеюсь, что это излишне - я не считаю это эффективным (необразованное предположение)
Если это действительно сложная проблема, то как большой корпус всегда делает это правильно? Например, я никогда не слышал о способе нарушения подсветки синтаксиса в Visual Studio.
Но любой другой инструмент, который реализует это, делает это плохо или хуже, чем большие парни.
Какой официальный «это лучший способ, а другой - менее эффективный»?
У меня действительно нет никаких доказательств того, что путь Microsoft лучше, но, видя, что они, вероятно, знают о Windows API больше, чем кто-либо другой, я предполагаю, что есть лучший способ его реализации (я бы хотел ошибиться - представьте себе, я могу сказать, что моя реализация подсветки синтаксиса лучше, чем у MS!)
Извините за несвязную разработку.
Также заранее прошу прощения за любые фальшивки - это мой первый вопрос.