Введение

Инструмент редакторов для программирования, написания скриптов и разметки с подсветкой синтаксиса на Википедии и других вики MediaWiki.

Подсветка синтаксиса — это функция текстовых редакторов, используемая для языков программирования, скриптов или разметки, таких как HTML. Эта функция отображает текст, особенно исходный код, разными цветами и шрифтами в зависимости от категории элементов. Она облегчает написание на структурированном языке, таком как язык программирования или язык разметки, поскольку структуры и синтаксические ошибки становятся визуально различимыми. Эта функция также применяется во многих областях, связанных с программированием (например, в руководствах по программированию), либо в виде красочных книг, либо на веб-сайтах, чтобы облегчить понимание фрагментов кода для читателей. Подсветка синтаксиса не влияет на смысл текста; она предназначена исключительно для удобства чтения. Подсветка синтаксиса является формой вторичной нотации, поскольку она не является частью значения текста, а служит для его усиления. Некоторые редакторы также интегрируют подсветку синтаксиса с другими функциями, такими как проверка орфографии или сворачивание кода, в качестве вспомогательных средств редактирования, не связанных непосредственно с языком.

Практические преимущества

Выделение синтаксиса — одна из стратегий повышения читабельности и понимания текста, особенно для кода, занимающего несколько страниц. Читатель может легко пропускать большие фрагменты комментариев или кода, в зависимости от того, что он ищет. Выделение синтаксиса также помогает программистам находить ошибки в программе. Например, большинство редакторов выделяют строковые литералы другим цветом. Следовательно, гораздо проще заметить отсутствующий разделитель благодаря контрастному цвету текста. Автоматическое сопоставление скобок — еще одна важная функция, присутствующая во многих популярных редакторах. Она позволяет легко увидеть, не пропущена ли скобка, или найти парную скобку для той, на которой находится курсор, подсвечивая обе скобки разными цветами. Исследование, опубликованное на конференции PPIG, оценивало влияние выделения синтаксиса на понимание коротких программ и показало, что наличие выделения синтаксиса значительно сокращает время, необходимое программисту для освоения семантики программы. Кроме того, данные, полученные с помощью айтрекера в ходе исследования, показали, что выделение синтаксиса позволяет программистам уделять меньше внимания стандартным синтаксическим элементам, таким как ключевые слова.

Элементы синтаксиса

Большинство редакторов с подсветкой синтаксиса позволяют назначать различные цвета и стили текста десяткам различных лексических подэлементов синтаксиса. К ним относятся ключевые слова, комментарии, операторы управления потоком, переменные и другие элементы. Программисты часто тщательно настраивают параметры, чтобы отображать как можно больше полезной информации, не усложняя при этом чтение кода. Некоторые редакторы, используя так называемое оформление синтаксиса, также отображают определенные синтаксические элементы более наглядно, например, заменяя оператор указателя, такой как >, в исходном коде фактическим символом стрелки (→), или преобразуя элементы форматирования текста в комментариях к исходному коду, такие как /курсив/, *жирный шрифт* или подчеркивание, в фактическое курсивное, жирное или подчеркнутое отображение.

История и ограничения

Идеи синтаксического выделения значительно пересекаются с идеями синтаксически-ориентированных редакторов. Одним из первых таких редакторов кода был редактор кода Уилфреда Хансена 1969 года, Emily. Он обеспечивал продвинутые, не зависящие от языка средства автодополнения кода и, в отличие от современных редакторов с подсветкой синтаксиса, фактически делал невозможным создание синтаксически некорректных программ. В 1982 году Анита Х. Клок и Ян Б. Чодак запатентовали первую известную систему подсветки синтаксиса, которая использовалась в периферийном устройстве Intellivision's Entertainment Computer System (ECS), выпущенном в 1983 году. Она подсвечивала различные элементы программ на BASIC и была реализована в попытке облегчить начинающим, особенно детям, освоение программирования. Позже, Live Parsing Editor (LEXX), разработанный для операционной системы VM в 1985 году для компьютеризации Оксфордского английского словаря, стал одним из первых редакторов, использовавших цветную подсветку синтаксиса. Его возможность "жирного" разбора позволяла добавлять в редактор пользовательские парсеры для текста, программ, файлов данных и т.д. На микрокомпьютерах MacPascal 1.0 (10 октября 1985 года) распознавал синтаксис Pascal по мере ввода и использовал изменения шрифта (например, полужирный для ключевых слов) для выделения синтаксиса на монохромном компактном Macintosh и автоматически выполнял отступы кода в соответствии с его структурой. Некоторые текстовые редакторы и инструменты форматирования кода выполняют подсветку синтаксиса, используя эвристики сопоставления с образцом (например, регулярные выражения), а не реализуя парсер для каждого возможного языка. Это может приводить к тому, что система рендеринга текста отображает не совсем точную подсветку синтаксиса и в некоторых случаях работает медленно. Решением, используемым текстовыми редакторами для преодоления этой проблемы, является не всегда разбор всего файла, а только видимой области, иногда с обратным сканированием текста на ограниченное количество строк для "синхронизации". С другой стороны, редактор часто отображает код в процессе его создания, когда он неполный или неправильный, а строгие парсеры (как те, что используются в компиляторах) не могут разобрать код большую часть времени. Некоторые современные, специализированные IDE (в отличие от текстовых редакторов) выполняют полный разбор языка, что обеспечивает очень точное понимание кода. Расширение подсветки синтаксиса было названо "семантической подсветкой" в 2009 году Дэвидом Нольденом для IDE KDevelop с открытым исходным кодом для C++. Например, семантическая подсветка может присваивать локальным переменным уникальные, отличные цвета для повышения читаемости кода. В 2014 году идея использования цветных локальных переменных получила дальнейшее распространение благодаря публикации в блоге Эвана Брукса, после чего эта идея была перенесена в другие популярные IDE, такие как Visual Studio, Xcode и другие. Цвет в пользовательском интерфейсе менее полезен, если у пользователя есть какая-либо степень цветовой слепоты.