Podświetlanie składni - Syntax highlighting

Podświetlanie składni HTML

Podświetlanie składni to funkcja edytorów tekstu używana w językach programowania , skryptów lub znaczników , takich jak HTML . Ta funkcja wyświetla tekst, zwłaszcza kod źródłowy , w różnych kolorach i czcionkami zgodnie z kategorią terminów. Ta funkcja ułatwia pisanie w ustrukturyzowanym języku, takim jak język programowania lub język znaczników, jako zarówno struktury, jak i błędy składnisą wizualnie wyraźne. Ta funkcja jest również wykorzystywana w wielu kontekstach związanych z programowaniem (takich jak podręczniki programowania), w postaci kolorowych książek lub witryn internetowych, aby ułatwić czytelnikom zrozumienie fragmentów kodu. Podświetlanie nie wpływa na znaczenie samego tekstu; jest przeznaczony tylko dla ludzkich czytelników.

Podświetlanie składni jest formą notacji drugorzędnej , ponieważ podświetlenia nie są częścią znaczenia tekstu, ale służą do jego wzmocnienia. Niektóre edytory integrują również podświetlanie składni z innymi funkcjami, takimi jak sprawdzanie pisowni lub składanie kodu , jako pomoc w edycji zewnętrznej w stosunku do języka.

Praktyczne korzyści

Podświetlanie efektu brakującego ogranicznika (po watch='false ) w JavaScript

Podświetlanie składni to jedna ze strategii poprawiających czytelność i kontekst tekstu; zwłaszcza w przypadku kodu, który obejmuje kilka stron. Czytelnik może łatwo zignorować duże sekcje komentarzy lub kodu, w zależności od tego, czego szuka. Podświetlanie składni pomaga również programistom znaleźć błędy w ich programie. Na przykład większość edytorów wyróżnia literały ciągów w innym kolorze. W związku z tym dostrzeżenie brakującego ogranicznika jest znacznie łatwiejsze ze względu na kontrastujący kolor tekstu. Dopasowywanie nawiasów klamrowych to kolejna ważna funkcja wielu popularnych edytorów. Ułatwia to sprawdzenie, czy nawias został pominięty lub zlokalizowanie dopasowania nawiasu, na którym znajduje się kursor, podświetlając parę innym kolorem.

Badanie opublikowane na konferencji PPIG oceniło wpływ podświetlania składni na rozumienie krótkich programów, stwierdzając, że obecność podświetlania składni znacznie skraca czas potrzebny programiście na internalizację semantyki programu. Ponadto dane zebrane za pomocą narzędzia do śledzenia wzroku podczas badania sugerowały, że podświetlanie składni umożliwia programistom zwracanie mniejszej uwagi na standardowe komponenty składniowe, takie jak słowa kluczowe.

Wsparcie w edytorach tekstu

gedit obsługuje podświetlanie składni

Niektóre edytory tekstu mogą również eksportować kolorowe znaczniki w formacie odpowiednim do drukowania lub importowania do edytorów tekstu i innych rodzajów oprogramowania do formatowania tekstu; na przykład jako HTML, kolorowana wersja LaTeX, PostScript lub RTF jej podświetlania składni. Istnieje kilka bibliotek lub "silników" podświetlania składni, które mogą być używane w innych aplikacjach, ale same w sobie nie są kompletnymi programami, na przykład rozszerzenie Generic Syntax Highlighter ( GeSHi ) dla PHP .

W przypadku edytorów obsługujących więcej niż jeden język użytkownik może zwykle określić język tekstu, taki jak C , LaTeX , HTML , lub edytor tekstu może go automatycznie rozpoznać na podstawie rozszerzenia pliku lub skanując zawartość pliku. To automatyczne wykrywanie języka stwarza potencjalne problemy. Na przykład użytkownik może chcieć edytować dokument zawierający:

  • więcej niż jeden język (na przykład podczas edycji pliku HTML zawierającego osadzony kod JavaScript ),
  • język, który nie jest rozpoznawany (na przykład podczas edycji kodu źródłowego dla mało znanego lub stosunkowo nowego języka programowania),
  • język, który różni się od typu pliku (na przykład podczas edytowania kodu źródłowego w pliku bez rozszerzeń w edytorze, który używa rozszerzeń plików do wykrywania języka).

W takich przypadkach nie jest jasne, jakiego języka użyć, a dokument może nie być wyróżniony lub być wyróżniony nieprawidłowo.

Elementy składni

Większość edytorów z podświetlaniem składni pozwala na nadawanie różnych kolorów i stylów tekstu dziesiątkom różnych podelementów leksykalnych składni. Należą do nich słowa kluczowe, komentarze, instrukcje przepływu sterowania, zmienne i inne elementy. Programiści często dostosowują swoje ustawienia, starając się pokazać jak najwięcej przydatnych informacji bez utrudniania czytania kodu.

Nazywane dekoracją składni , niektóre edytory wyświetlają również pewne elementy składniowe w bardziej wizualnie przyjemny sposób, np. zastępując operator wskaźnika, jak ->w kodzie źródłowym, rzeczywistym symbolem strzałki (→) lub zmieniając wskazówki dotyczące dekoracji tekstu, takie jak /kursywa/, *pogrubienie*, lub _podkreślenie_ w komentarzach do kodu źródłowego za pomocą kursywy , pogrubienia lub podkreślenia prezentacji.

Przykłady

Poniżej znajduje się porównanie z fragmentem o C kodu:

Renderowanie standardowe Podświetlanie składni
/* 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;
}

Poniżej znajduje się kolejny fragment kodu C++ z wyróżnieniem składni :

// 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>();
}

Na przykład C ++, redaktor uznał te słowa kluczowe const , auto, int, i for. Komentarz na początku jest również podświetlony w specyficzny sposób, aby odróżnić go od kod działa.

Historia i ograniczenia

Idee podświetlania składni w znacznym stopniu pokrywają się z pomysłami edytorów korzystających ze składni . Jednym z pierwszych takich edytorów kodu był edytor kodu Wilfreda Hansena z 1969 roku, Emily. Zapewniał zaawansowane, niezależne od języka funkcje uzupełniania kodu iw przeciwieństwie do nowoczesnych edytorów z podświetlaniem składni, faktycznie uniemożliwiał tworzenie programów niepoprawnych składniowo.

W 1982 roku Anita H. Klock i Jan B. Chodak złożyli patent na pierwszy znany system podświetlania składni, który był używany w urządzeniu peryferyjnym Intellivision's Entertainment Computer System (ECS), wydanym w 1983 roku. Miał on podświetlać różne elementy programów BASIC i został zaimplementowany w celu ułatwienia początkującym, zwłaszcza dzieciom, rozpoczęcia pisania kodu. Później, Live Parsing Editor ( LEXX ) napisany dla systemu operacyjnego VM w celu komputeryzacji Oxford English Dictionary w 1985 roku był jednym z pierwszych, który używał kolorowego podświetlania składni. Jej parsowanie żywo zakresie zdolności pozwoliły parsery dostarczone przez użytkownika mają być dodane do edytora tekstu, programów, plików danych, itp Na mikrokomputerów , MacPascal 1.0 (10 października 1985) rozpoznał składni Pascala, jak to zostało wpisane i używane zmiany czcionki (np , pogrubione dla słów kluczowych), aby podświetlić składnię na monochromatycznym, kompaktowym Macintoshu i automatycznie wciąć kod, aby dopasować jego strukturę.

Niektóre edytory tekstu i narzędzia do formatowania kodu wykonują podświetlanie składni za pomocą heurystyki dopasowywania wzorców (np. Wyrażenia regularne ), zamiast implementować parser dla każdego możliwego języka. Może to spowodować, że system renderowania tekstu będzie wyświetlał nieco niedokładne podświetlanie składni, aw niektórych przypadkach działa wolno. Rozwiązaniem stosowanym przez edytory tekstu w celu przezwyciężenia tego problemu nie zawsze jest parsowanie całego pliku, ale tylko widocznego obszaru, czasami skanowanie wstecz w tekście do ograniczonej liczby wierszy w celu „synchronizacji”.

Z drugiej strony, edytor często wyświetla kod podczas jego tworzenia, gdy jest on niekompletny lub niepoprawny, a ścisłe parsery (takie jak te używane w kompilatorach) przez większość czasu nie przeanalizują kodu.

Niektóre nowoczesne, specyficzne dla języka IDE (w przeciwieństwie do edytorów tekstu) wykonują pełne parsowanie języka, co skutkuje bardzo dokładnym zrozumieniem kodu. Rozszerzenie podświetlania składni zostało nazwane "podświetlaniem semantycznym" w 2009 roku przez Davida Noldena dla open-source C++ IDE KDevelop . Na przykład wyróżnianie semantyczne może nadać zmiennym lokalnym unikalne, odrębne kolory, aby poprawić zrozumiałość kodu. W 2014 roku idea kolorowych zmiennych lokalnych została jeszcze bardziej spopularyzowana dzięki wpisowi na blogu autorstwa Evana Brooksa, a następnie pomysł został przeniesiony do innych popularnych środowisk IDE, takich jak Visual Studio , Xcode i inne.

Kolor w interfejsie użytkownika jest mniej przydatny, jeśli użytkownik ma pewien stopień ślepoty barw .

Zobacz też

Bibliografia