При редактировании этого и того же в Vim я часто обнаруживаю, что его подсветка синтаксиса (для некоторых типов файлов) имеет некоторые недостатки. На данный момент я не могу вспомнить ни одного примера, но кто-то наверняка это сделает. Обычно он состоит из строк, которые в некоторых случаях сильно выделяются, некоторые вещи с арифметическими и булевыми операторами и некоторые другие мелкие вещи.Что такое альтернативы регулярным выражениям для подсветки синтаксиса?
Теперь vim использует регулярные выражения для этого рода вещей (собственный вкус).
Однако, я начал сталкиваться с редакторами, которые, на первый взгляд, имеют подсветку синтаксиса, о которой лучше заботиться. Я всегда думал, что регулярные выражения - это способ пойти на такие вещи.
Так что мне интересно, имеют ли эти редакторы только лучшие письменные регулярные выражения, или они позаботятся об этом каким-то другим способом? Какие ? Как подчеркивается синтаксическая подсветка, когда вы хотите, чтобы она была «стабильной»? И, на ваш взгляд, что такое редактор, который позаботился о нем лучше всего (в вашем редакторе выбора) и как он это сделал (по-язычному)?
Редактировать-1: Например, редакторы, такие как Emacs, Notepad2, Notepad ++, Visual Studio - знаете ли вы, какой механизм они используют для синхронизации. высокая. ?
@Pax, вы действительно используете REs над полноразмерным синтаксическим анализатором для выделения синтаксиса? Я думал, что это будет один из тех случаев, когда вы хотите использовать парсер. – mmcdole
Парсеры лучше, но обычно им приходится обрабатывать больше источников и сложнее писать. REs (если сделано правильно) может быть быстрее и работать в подавляющем большинстве случаев, потому что источник имеет естественные контрольные точки (например, точка с запятой для C, если предположить, что это не внутренние кавычки). Имейте в виду, что это окрашено моим опытом - мне никогда не приходилось писать код Forth в Vim, поэтому, насколько я знаю, REs может быть дерьмом. Языки, которые я использую, похоже, работают нормально, хотя я, вероятно, мог бы их разбить, если бы я сделал свой исходный код довольно уродливым. – paxdiablo