Zvýraznění syntaxe - Syntax highlighting

Zvýraznění syntaxe HTML

Zvýraznění syntaxe je funkce textových editorů, které se používají pro programování , skriptování nebo značkovací jazyky, jako je HTML . Tato funkce zobrazuje text, zejména zdrojový kód , v různých barvách a fontech podle kategorie výrazů. Tato funkce usnadňuje psaní ve strukturovaném jazyce, jako je programovací jazyk nebo značkovací jazyk, jako chyby struktur a syntaxejsou vizuálně odlišné. Tato funkce se také používá v mnoha kontextech souvisejících s programováním (například v programovacích příručkách), ať už ve formě barevných knih nebo online webů, které čtenářům usnadňují porozumění úryvkům kódu. Zvýraznění neovlivňuje význam samotného textu; je určen pouze pro lidské čtenáře.

Zvýraznění syntaxe je formou sekundárního zápisu , protože zvýraznění nejsou součástí významu textu, ale slouží k jeho posílení. Některé editory také integrují zvýrazňování syntaxe s dalšími funkcemi, jako je kontrola pravopisu nebo skládání kódu , jako pomocné úpravy, které jsou mimo jazyk.

Praktické výhody

Zvýraznění efektu chybějícího oddělovače (po watch = 'false ) v JavaScriptu

Zvýraznění syntaxe je jednou ze strategií, jak zlepšit čitelnost a kontext textu; zejména pro kód, který zahrnuje několik stránek. Čtenář může snadno ignorovat velké části komentářů nebo kódu podle toho, co hledají. Zvýraznění syntaxe také pomáhá programátorům najít chyby ve svém programu. Většina editorů například zvýrazňuje řetězcové literály v jiné barvě. V důsledku toho je nalezení chybějícího oddělovače mnohem jednodušší kvůli kontrastní barvě textu. Shoda výztuh je další důležitou funkcí mnoha populárních editorů. Díky tomu je snadné zjistit, zda byla složená závorka vynechána, nebo vyhledat shodu závorky, na které je kurzor, zvýrazněním dvojice jinou barvou.

Studie publikovaná na konferenci PPIG hodnotila účinky zvýrazňování syntaxe na porozumění krátkým programům a zjistila, že přítomnost zvýraznění syntaxe významně snižuje čas, který programátor potřebuje k internalizaci sémantiky programu. Data shromážděná z nástroje pro sledování očí během studie navíc naznačují, že zvýrazňování syntaxe umožňuje programátorům věnovat méně pozornosti standardním syntaktickým komponentám, jako jsou klíčová slova.

Podpora v textových editorech

gedit podporuje zvýrazňování syntaxe

Některé textové editory mohou také exportovat barevné značky ve formátu, který je vhodný pro tisk nebo pro import do textového editoru a jiných druhů softwaru pro formátování textu; například jako HTML, barevná LaTeX, PostScript nebo RTF verze jeho zvýraznění syntaxe. Existuje několik knihoven zvýraznění syntaxe nebo „motorů“, které lze použít v jiných aplikacích, ale samy o sobě nejsou úplnými programy, například rozšíření Generic Syntax Highlighter ( GeSHi ) pro PHP .

U editorů, které podporují více než jeden jazyk, může uživatel obvykle určit jazyk textu, například C , LaTeX , HTML , nebo jej textový editor automaticky rozpozná na základě přípony souboru nebo skenováním obsahu souboru. Tato automatická detekce jazyka představuje potenciální problémy. Uživatel může například chtít upravit dokument obsahující:

  • více než jeden jazyk (například při úpravách souboru HTML, který obsahuje vložený kód JavaScript ),
  • jazyk, který není rozpoznán (například při úpravě zdrojového kódu pro nejasný nebo relativně nový programovací jazyk),
  • jazyk, který se liší od typu souboru (například při úpravě zdrojového kódu v souboru bez přípony v editoru, který používá k detekci jazyka přípony souborů).

V těchto případech není jasné, jaký jazyk použít, a dokument nemusí být zvýrazněn nebo zvýrazněn nesprávně.

Prvky syntaxe

Většina editorů se zvýrazněním syntaxe umožňuje přiřazení různých barev a stylů textu desítkám různých lexikálních dílčích prvků syntaxe. Patří sem klíčová slova, komentáře, příkazy toku řízení, proměnné a další prvky. Programátoři často výrazně přizpůsobují svá nastavení ve snaze zobrazit co nejvíce užitečných informací, aniž by byl kód obtížně čitelný.

Nazývají se syntaxe syntaxe , některé editory také zobrazují určité syntaktické prvky vizuálně příjemnějším způsobem, například nahrazením operátoru ukazatele, jako ->ve zdrojovém kódu, skutečným symbolem šipky (→), nebo změnou indikací textové stopy jako /kurzíva /, *tučné písmo *, nebo _podlinka_ v komentářích zdrojového kódu skutečnou kurzívou , tučným písmem nebo podtrženou prezentací.

Příklady

Níže je srovnání s úryvku z C kódu:

Standardní vykreslování Zvýraznění syntaxe
/* 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;
}

Níže je další úryvek kódu C ++ zvýrazněného syntaxí :

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

V C ++ Například editor rozpoznal klíčová slova const , auto, int, a for. Komentář na začátku je také zdůrazněno ve zvláštním způsobem, aby se odlišil od pracovní kód.

Historie a omezení

Myšlenky zvýraznění syntaxe se výrazně překrývají s myšlenkami editorů zaměřených na syntaxi . Jedním z prvních takových editorů kódu byl editor kódu Wilfreda Hansena z roku 1969, Emily. Poskytovala pokročilá jazykově nezávislá zařízení pro dokončení kódu a na rozdíl od moderních editorů se zvýrazněním syntaxe ve skutečnosti znemožňovala vytváření syntakticky nesprávných programů.

V roce 1982 Anita H. Klock a Jan B. Chodak podali patent na první známý systém zvýrazňování syntaxe, který byl použit v periferním zařízení Intellivision Entertainment Computer System (ECS), vydaném v roce 1983. To by zdůraznilo různé prvky BASIC programů a byl implementován ve snaze usnadnit začátečníkům, zejména dětem, začít psát kód. Později byl Live Parsing Editor ( LEXX ) napsaný pro operační systém VM pro elektronizaci Oxfordského anglického slovníku v roce 1985 jedním z prvních, který používal zvýrazňování barevné syntaxe. Jeho živá parsování schopností povolené uživatelem dodaný analyzátory, které mají být přidány do editoru textu, programy, datových souborů atd Na mikropočítačů , MacPascal 1.0 (10.10.1985) uznal Pascal syntax jak to bylo napsáno a ojetých změny písma (např (tučně pro klíčová slova) pro zvýraznění syntaxe na monochromatickém kompaktním počítači Macintosh a automaticky odsazeného kódu, který odpovídá jeho struktuře.

Některé textové editory a nástroje pro formátování kódu provádějí zvýrazňování syntaxe pomocí heuristiky porovnávání vzorů (např. Regulárních výrazů ) namísto implementace analyzátoru pro každý možný jazyk. Výsledkem může být, že systém vykreslování textu zobrazuje poněkud nepřesné zvýraznění syntaxe a v některých případech pracuje pomalu. Řešení používané textovými editory k překonání tohoto problému není vždy analyzovat celý soubor, ale pouze viditelnou oblast, někdy skenovat zpět v textu až po omezený počet řádků pro „synchronizaci“.

Na druhou stranu editor často zobrazuje kód během jeho vytváření, i když je neúplný nebo nesprávný a přísné analyzátory (jako ty, které se používají v kompilátorech) by kód většinu času nedokázaly analyzovat.

Některé moderní IDE specifické pro jazyk (na rozdíl od textových editorů) provádějí úplnou analýzu jazyků, což má za následek velmi přesné porozumění kódu. David Nolden v roce 2009 označil rozšíření zvýrazňování syntaxe „sémantické zvýraznění“ pro open-source C ++ IDE KDevelop . Sémantické zvýraznění může například dát lokálním proměnným jedinečné odlišné barvy, aby se zlepšila srozumitelnost kódu. V roce 2014 byla myšlenka barevných místních proměnných dále propagována díky příspěvku na blogu Evana Brookse a poté byla myšlenka přenesena do dalších populárních IDE, jako jsou Visual Studio , Xcode a další.

Barva v uživatelském rozhraní je méně užitečná, pokud má uživatel určitý stupeň barvosleposti .

Viz také

Reference