Ett abstrakt syntaxträd (AST) är en syntaktisk struktur gjord för att representera de funktioner som förekommer i ett program. Den är baserad på källkoden för programmeringen. Typiskt hierarkiskt i design, det abstrakta syntaxträdet börjar från de grundläggande funktionerna och strömmar nedåt för att visa de mer involverade funktionerna och koden inom varje grundläggande funktion. Användningen av detta träd gör det lättare för programmerare att visualisera koden utan att titta igenom själva källkoden, som är mycket längre och kan avslöja brister eller svagheter i koden. Trädet kallas abstrakt, inte för att det är svårt att förstå eller har en abstrakt form, utan för att det inte inkluderar kodningssyntaxen som parenteser och andra symboler som oundvikligen förekommer i koden.
När en programmerare bygger ett program måste han eller hon bygga funktionerna från sådana saker som ”om-då”-satser och ”eller annat”-satser. När man tittar på källkoden kan det vara svårt att se om varje påstående och villkor har uppfyllts fullt ut och om alla funktioner har skapats korrekt. Ett abstrakt syntaxträd ger programmeraren ett snabbt sätt att se över programmeringen för att se varje villkor och hur det tillämpas på programmet överlag.
Trädet är gjort på hierarkiskt sätt. Överst finns ett av huvudpåståendena och från det påståendet flyter grenar nedåt för att visa vad som uppfyller villkoren. Detta fortsätter och visar andra funktioner och förutsättningar för hela programmet. Variabler i programmeringen visas ofta också. De flesta programmeringsspråk har förmågan att generera ett abstrakt syntaxträd.
Abstrakt betyder vanligtvis illa utformad, svår att förstå eller amorf. Detta är inte fallet med ett abstrakt syntaxträd. Anledningen till att ordet ”abstrakt” används är att trädet inte visar syntax och programmering som det är; snarare tar det bort implicita symboler som inte är viktiga för displayen. Parenteser används till exempel ofta ganska frikostigt i programmering, men de visas inte i trädet. Detta beror på att visa denna syntax tar mycket mer utrymme, gör det svårare att titta på trädet, och programmeraren skulle känna till dessa symboler i källkoden.
Om en programmerare vill se dessa hjälpsymboler används ofta ett konkret syntaxträd. Dessa träd liknar den abstrakta sorten, bara de går in mer i detalj med alla symboler. Detta träd är bättre för att titta på saknade bitar av symboler eller kod, medan det abstrakta trädet är bättre för att kolla upp programmets funktioner och variabler.