Syntaxmarkering
Syntaxmarkering är en funktion i textredigerare som används för programmering , skript eller märkningsspråk , som HTML . Funktionen visar text, särskilt källkod , i olika färger och typsnitt beroende på kategori av termer. Den här funktionen underlättar skrivning på ett strukturerat språk som ett programmeringsspråk eller ett märkningsspråk eftersom både strukturer och syntaxfel är visuellt distinkta. Den här funktionen används också i många programmeringsrelaterade sammanhang (som programmeringsmanualer), antingen i form av färgglada böcker eller webbsidor för att göra det lättare för läsarna att förstå kodavsnitt. Markering påverkar inte innebörden av själva texten; den är endast avsedd för mänskliga läsare.
Syntaxmarkering är en form av sekundär notation , eftersom markeringarna inte är en del av textens betydelse, utan tjänar till att förstärka den. Vissa redigerare integrerar också syntaxmarkering med andra funktioner, såsom stavningskontroll eller kodvikning , som hjälpmedel för redigering som är externt i förhållande till språket.
Praktiska fördelar
Syntaxmarkering är en strategi för att förbättra textens läsbarhet och sammanhang; speciellt för kod som sträcker sig över flera sidor. Läsaren kan enkelt ignorera stora delar av kommentarer eller kod, beroende på vad de letar efter. Syntaxmarkering hjälper också programmerare att hitta fel i sitt program. Till exempel markerar de flesta redigerare strängliteraler i en annan färg. Följaktligen är det mycket lättare att upptäcka en saknad avgränsare på grund av textens kontrasterande färg. Brace-matchning är en annan viktig funktion hos många populära redaktörer. Detta gör det enkelt att se om en hängslen har utelämnats eller lokalisera matchningen av hängslen som markören är på genom att markera paret i en annan färg.
En studie publicerad på konferensen PPIG utvärderade effekterna av syntaxmarkering på förståelsen av korta program, och fann att närvaron av syntaxmarkering avsevärt minskar tiden det tar för en programmerare att internalisera semantiken i ett program. Dessutom antydde data som samlats in från en eyetracker under studien att syntaxmarkering gör det möjligt för programmerare att ägna mindre uppmärksamhet åt syntaktiska standardkomponenter som nyckelord.
Stöd i textredigerare
Vissa textredigerare kan också exportera den färgade markeringen i ett format som är lämpligt för utskrift eller för import till ordbehandling och andra typer av textformateringsprogram; till exempel som en HTML-, färgad LaTeX-, PostScript- eller RTF- version av dess syntaxmarkering. Det finns flera syntaxmarkeringsbibliotek eller "motorer" som kan användas i andra applikationer, men som inte är kompletta program i sig, till exempel tillägget Generic Syntax Highlighter (GeSHi) för PHP .
För redigerare som stöder mer än ett språk kan användaren vanligtvis ange språket för texten, såsom C , LaTeX , HTML , eller så kan textredigeraren automatiskt känna igen det baserat på filtillägget eller genom att skanna innehållet i filen. Denna automatiska språkdetektering ger potentiella problem. Till exempel kan en användare vilja redigera ett dokument som innehåller:
- mer än ett språk (till exempel när du redigerar en HTML- fil som innehåller inbäddad JavaScript -kod),
- ett språk som inte känns igen (till exempel vid redigering av källkod för ett oklart eller relativt nytt programmeringsspråk),
- ett språk som skiljer sig från filtypen (till exempel när du redigerar källkod i en fil utan filtillägg i en redigerare som använder filtillägg för att identifiera språket).
I dessa fall är det inte klart vilket språk som ska användas, och ett dokument kanske inte är markerat eller markeras felaktigt.
Syntaxelement
De flesta redigerare med syntaxmarkering tillåter att olika färger och textstilar ges till dussintals olika lexikaliska underelement av syntax. Dessa inkluderar nyckelord, kommentarer, kontrollflödessatser, variabler och andra element. Programmerare anpassar ofta sina inställningar i ett försök att visa så mycket användbar information som möjligt utan att göra koden svår att läsa.
Kallas syntaxdekoration , vissa redigerare visar också vissa syntaktiska element på mer visuellt tilltalande sätt, till exempel genom att ersätta en pekoperator som ->
i källkoden med en faktisk pilsymbol (→), eller ändra ledtrådar för textdekoration som /kursivt/, * fetstil* eller _understruken_ i källkodskommentarer med en faktisk kursiv , fetstil eller understruken presentation.
Exempel
Nedan är en jämförelse av ett utdrag av C -kod:
Standard rendering | Syntaxmarkering |
---|---|
/* Hello World */ #include #omfatta int main() { printf("Hej världen\n"); returnera 0; } |
0
/* Hello World */ #include <stdlib.h> #include <stdio.h> int main () { printf ( "Hello World \n " ); återvända ; }
|
Nedan finns ett annat utdrag av syntaxmarkerad C++ -kod:
0
// Skapa "window_count" fönsterobjekt: const auto window_count = int { 10 }; auto windows = std :: array < std :: shared_ptr < Window > , max_window_count > {}; for ( auto i = int { }; i < window_count ; ++ i ) { windows [ i ] = std :: make_shared < Window > (); }
I exemplet C++ har redigeraren känt igen nyckelorden const
, auto
, int
, och for
. Kommentaren i början är också markerad på ett specifikt sätt för att skilja den från arbetskoden .
Historia och begränsningar
Idéerna med syntaxmarkering överlappar avsevärt med syntaxstyrda redigerares idéer . En av de första sådana redaktörerna för kod var Wilfred Hansens kodredaktör från 1969, Emily. Det gav avancerade språkoberoende kodkompletterande faciliteter, och till skillnad från moderna redigerare med syntaxmarkering, gjorde det faktiskt omöjligt att skapa syntaktiskt felaktiga program.
1982 ansökte Anita H. Klock och Jan B. Chodak om patent på det första kända syntaxmarkeringssystemet, som användes i Intellivision's Entertainment Computer System (ECS) kringutrustning, som släpptes 1983. Det skulle lyfta fram olika delar av BASIC-program och implementerades i ett försök att göra det lättare för nybörjare, särskilt barn, att börja skriva kod. Senare var Live Parsing Editor ( LEXX ) skriven för VM- operativsystemet för datorisering av Oxford English Dictionary 1985 en av de första som använde färgsyntaxmarkering. Dess live-parsningsfunktion gjorde det möjligt att lägga till tolkar som tillhandahålls av användare i editorn för text, program, datafiler etc. På mikrodatorer kände MacPascal 1.0 (10 oktober 1985) igen Pascal-syntaxen när den skrevs och använde teckensnittsändringar (t.ex. , fetstil för nyckelord) för att markera syntax på den monokroma kompakta Macintosh och automatiskt indragen kod för att matcha dess struktur.
Vissa textredigerare och kodformateringsverktyg utför syntaxmarkering med hjälp av mönstermatchningsheuristik (t.ex. reguljära uttryck ) snarare än att implementera en parser för varje möjligt språk . Detta kan resultera i att ett textåtergivningssystem visar något felaktig syntaxmarkering och i vissa fall fungerar långsamt. En lösning som används av textredigerare för att övervinna detta problem är att inte alltid analysera hela filen utan bara det synliga området, ibland skanna bakåt i texten upp till ett begränsat antal rader för "synkronisering".
Å andra sidan visar redigeraren ofta kod när den skapas, medan den är ofullständig eller felaktig, och de strikta tolkarna (som de som används i kompilatorer) skulle misslyckas med att analysera koden för det mesta.
Vissa moderna, språkspecifika IDE:er (i motsats till textredigerare) utför fullständig språkanalys vilket resulterar i en mycket exakt förståelse av koden. En förlängning av syntaxmarkering kallades "semantisk markering" 2009 av David Nolden för öppen källkod C++ IDE KDevelop . Till exempel kan semantisk markering ge lokala variabler unika distinkta färger för att förbättra kodens begriplighet. 2014 populariserades idén om färgade lokala variabler ytterligare på grund av ett blogginlägg av Evan Brooks, och efter det överfördes idén till andra populära IDE:er som Visual Studio , Xcode och andra.
Färg i ett användargränssnitt är mindre användbart om användaren har en viss grad av färgblindhet .