Подсветка синтаксиса

редактировать
Для выделения синтаксиса в Википедии и других вики-сайтах MediaWiki см. Википедия: выделение синтаксиса. Подсветка синтаксиса HTML

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

Выделение синтаксиса - это форма вторичной нотации, поскольку выделение не является частью значения текста, а служит его усилению. Некоторые редакторы также объединяют выделение синтаксиса с другими функциями, такими как проверка орфографии или сворачивание кода, как вспомогательные средства редактирования, которые являются внешними по отношению к языку.

СОДЕРЖАНИЕ

  • 1 Практические преимущества
  • 2 Поддержка в текстовых редакторах
  • 3 Элементы синтаксиса
    • 3.1 Примеры
  • 4 История и ограничения
  • 5 См. Также
  • 6 Ссылки

Практическая польза

Выделение эффекта отсутствия разделителя (после watch = 'false) в JavaScript

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

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

Поддержка в текстовых редакторах

gedit поддерживает подсветку синтаксиса

Некоторые текстовые редакторы также могут экспортировать цветную разметку в формате, подходящем для печати или импорта в текстовый редактор и другие виды программного обеспечения для форматирования текста; например, как HTML, раскрашенная версия LaTeX, PostScript или RTF подсветки синтаксиса. Существует несколько библиотек или «движков» подсветки синтаксиса, которые могут использоваться в других приложениях, но сами по себе не являются законченными программами, например, расширение Generic Syntax Highlighter ( GeSHi ) для PHP.

Для редакторов, которые поддерживают более одного языка, пользователь обычно может указать язык текста, такой как C, LaTeX, HTML, или текстовый редактор может автоматически распознать его на основе расширения файла или путем сканирования содержимого файла. Это автоматическое определение языка представляет потенциальные проблемы. Например, пользователь может захотеть отредактировать документ, содержащий:

  • более одного языка (например, при редактировании файла HTML, содержащего встроенный код JavaScript ),
  • язык, который не распознается (например, при редактировании исходного кода малоизвестного или относительно нового языка программирования),
  • язык, который отличается от типа файла (например, при редактировании исходного кода в файле без расширений в редакторе, который использует расширения файлов для определения языка).

В этих случаях неясно, какой язык использовать, и документ может не выделяться или выделяться неправильно.

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

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

Некоторые редакторы, называемые синтаксическим оформлением, также отображают определенные синтаксические элементы более визуально приятным образом, например, путем замены оператора указателя, как -gt;в исходном коде, фактическим символом стрелки (→) или изменения подсказок оформления текста, таких как / курсив /, * жирный шрифт *, или _подчеркнутый_ в комментариях к исходному коду фактическим курсивом, жирным шрифтом или подчеркнутой презентацией.

Примеры

Ниже приводится сравнение с фрагментом из C кода:

Стандартный рендеринг Подсветка синтаксиса
/* Hello World */ #include lt;stdlib.hgt; #include lt;stdio.hgt; int main() { printf("Hello World\n"); return 0; }
/* Hello World */ #include lt;stdlib.hgt; #include lt;stdio.hgt; int main() { printf("Hello World\n"); return 0; }

Ниже приведен еще один фрагмент выделенного синтаксиса кода C ++ :

// Create "window_count" Window objects: const auto window_count = int{10}; auto windows = std::arraylt;std::shared_ptrlt;Windowgt;, max_window_countgt;{}; for (auto i = int{0}; i lt; window_count; ++i) { windows[i] = std::make_sharedlt;Windowgt;(); }

В примере на C ++, редактор признала ключевые слова const, auto, int, и for. Комментарий в начале также выделяется особым образом, чтобы отличить его от рабочего кода.

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

Идеи подсветки синтаксиса существенно пересекаются с идеями редакторов, ориентированных на синтаксис. Одним из первых таких редакторов кода была Эмили, редактор кода Уилфреда Хансена 1969 года. Он предоставлял расширенные средства автозавершения кода, не зависящие от языка, и, в отличие от современных редакторов с подсветкой синтаксиса, фактически делал невозможным создание синтаксически некорректных программ.

В 1982 году Анита Х. Клок и Ян Б. Чодак подали патент на первую известную систему подсветки синтаксиса, которая использовалась в периферийном устройстве развлекательной компьютерной системы Intellivision (ECS), выпущенном в 1983 году. В ней будут выделены различные элементы программ BASIC и был реализован с целью облегчить начинающим, особенно детям, начало написания кода. Позже Live Parsing Editor ( LEXX ), написанный для операционной системы VM для компьютеризации Оксфордского словаря английского языка в 1985 году, был одним из первых, кто использовал цветовую подсветку синтаксиса. Его живой разборе возможность позволила предоставленные пользователем парсеры, которые будут добавлены к редактору, для текста, программ, файлов данных и т.д. На микрокомпьютеров, MacPascal 1,0 (10 октября 1985) признал синтаксис Паскаля, как он был напечатан и используемые изменения шрифта (например, жирным шрифтом для ключевых слов), чтобы выделить синтаксис на монохромном компактном Macintosh и автоматически сделать отступ в коде в соответствии с его структурой.

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

С другой стороны, редактор часто отображает код во время своего создания, хотя он является неполным или неправильным, а строгие синтаксические анализаторы (например, используемые в компиляторах) большую часть времени не могут проанализировать код.

Некоторые современные, зависящие от языка IDE (в отличие от текстовых редакторов) выполняют полный анализ языка, что приводит к очень точному пониманию кода. Расширение подсветки синтаксиса было названо «семантической подсветкой» в 2009 году Дэвидом Нолденом для C ++ IDE KDevelop с открытым исходным кодом. Например, семантическое выделение может придавать локальным переменным уникальные отличительные цвета для улучшения понимания кода. В 2014 году идея цветных локальных переменных получила дальнейшую популяризацию из-за сообщения в блоге Эвана Брукса, а после этого идея была перенесена в другие популярные IDE, такие как Visual Studio, Xcode и другие.

Цвет в пользовательском интерфейсе менее полезен, если пользователь страдает дальтонизмом.

Смотрите также

использованная литература

Последняя правка сделана 2023-04-13 03:49:05
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте