Vad är den abstrakta syntaxen?

Abstrakt syntax är ett sätt för datorprogrammerare att kartlägga strukturen på programmet de vill skapa utan att oroa sig för den faktiska kod som behövs för att implementera det. Det låter programmeraren fokusera på vad programmet behöver göra innan man fokuserar på hur man får datorn att faktiskt utföra de önskade funktionerna. Den abstrakta syntaxen beskriver programmets specifika uppgifter, som att lägga till två siffror tillsammans, och visar vilka typer av data som kan användas inom det programmet. När den abstrakta kartläggningen är klar ritas ett abstrakt syntaxträd, som matchar de abstrakta koncepten med konkret syntax – de faktiska symbolerna som en programmerare behöver skriva ut för att köra programmet hon skapar.

Tanken med abstrakt syntax är att fokusera på datatyper och deras relationer utan att fastna i detaljerna om hur man kodar dem. Datorkod är mycket annorlunda än mänskligt språk, och att försöka tänka i dessa termer är svårt. Istället gör programmerare en lista över de steg som programmet behöver slutföra och använder sedan konkret syntax för att matcha de abstrakta termerna med datorkodtermerna som utför dessa steg. Ofta kommer programmeraren att inkludera datatyper i sin abstrakta markering för att visa vilka typer av data – oavsett om det är siffror, bokstäver eller decimaler – programmet kan arbeta med. Specifika datatyper krävs dock inte i detta skede av programmeringen och programmeraren kan välja att använda abstrakta datatyper, som är rent teoretiska och kommer att ersättas med specifika datatyper när programmet skrivs.

Denna sorts abstrakta idé om programmering används ofta i kompilatorteori. Datorer kan bara förstå två värden: 1:or och 0:or. Detta är känt som binär kod. För att datorn ska förstå ett program skrivet på ett programmeringsspråk måste den kompilera, eller översätta, orden och bokstäverna till en ström av 1:or och 0:or. Det är komplicerat att skapa kompilatorer och att kartlägga en vag eller abstrakt uppfattning om vad de behöver göra hjälper en programmerare att planera felfri kod.

När programmeraren vill mappa den abstrakta syntaxen till konkret syntax och börja koda programmet eller kompilatorn skapar hon ett abstrakt syntaxträd. Detta är helt enkelt en lista över alla abstrakta instruktioner hon har skrivit, till exempel ”lägg till 2 variabler”, med en linje från varje abstrakt term till den specifika kodraden som behövs för att exekvera den instruktionen. Programmeraren kan använda vilka abstrakta termer hon vill, men det är vanligare att använda välkända kodtermer som ”var” för variabel och ”int” för heltal.