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

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

Принцип

править

При подсветке синтаксиса в исходном тексте языков программирования выделяются:

  • конструкции языка;
  • комментарии
  • числовые и строковые данные

Более продвинутые системы подсветки синтаксиса также выделяют:

  • переменные
  • скобки
  • стандартные функции языка

Многие текстовые редакторы и среды разработки имеют также функцию подсветки парных скобок под курсором: при приближении текстового курсора к скобке выделяется как скобка, возле которой находится курсор, так и парная ей.

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

История

править

Live Parsing Editor (LEXX или LPEX) на VM, написанный для оцифровки Оксфордского словаря в 1985 году, был одним из первых редакторов с подсветкой синтаксиса[1].

Примеры

править

Ниже сравниваются сниппеты кода Си:

обычное отображение с подсветкой синтаксиса
/* Hello World */
#include <stdlib.h>
#include <stdio.h>

int main()
{
    printf("Hello World\n");
    return 0;
}
/* Hello World */
#include <stdlib.h>
#include <stdio.h>

int main()
{
    printf("Hello World\n");
    return 0;
}

А вот — другой пример синтаксической подсветки: уже в коде C++:

// Create "window_count" Window objects:
const auto window_count = int{10};
auto windows = std::array<std::shared_ptr<Window>, max_window_count>{};
for (auto i = int{0}; i < window_count; ++i) {
    windows[i] = std::make_shared<Window>();
}

В этом примере редактор распознаёт ключевые слова auto, const, int и for; комментарии в начале также выделены особым образом для отличия от действующего кода.

См. также

править
  • Стиль отступов
  • Colorer — библиотека подсветки синтаксиса исходных текстов программ в текстовом редакторе, разработанный Игорем Русских.
  • Pygments[англ.] — Python-библиотека подсветки синтаксиса
  • Scintilla — компонент редактирования (имеющий, в том числе, подсветку синтаксиса) с открытым исходным кодом для Microsoft Windows и Linux с GTK+, разработанный Нейлом Ходжсоном
  • SynEdit — компонент многострочного редактирования с открытым исходным кодом для Delphi, Kylix, C++ Builder; разработка больше не поддерживается.

Примечания

править
  1. LEXX — A programmable structured editor. Дата обращения: 30 января 2008. Архивировано 25 марта 2009 года.

Ссылки

править
  • Code2HTML (англ.). — конвертер из исходных кодов в HTML с подсветкой. Дата обращения: 22 ноября 2009. Архивировано 12 февраля 2012 года.
  • syntaxhighlighter (англ.). — подсветка синтаксиса кода на веб-странице. Дата обращения: 22 ноября 2009. Архивировано из оригинала 12 февраля 2012 года.
  • highlight.js. — автоматическая подсветка синтаксиса на веб-страницах с использованием JavaScript. Дата обращения: 22 ноября 2009. Архивировано 12 февраля 2012 года.