Kas yra abstrakčios sintaksės medis?

Abstraktus sintaksės medis (AST) yra sintaksinė struktūra, sukurta programoje atliekamoms funkcijoms atstovauti. Jis pagrįstas programavimo šaltinio kodu. Paprastai hierarchinio dizaino abstrakčios sintaksės medis prasideda nuo pagrindinių funkcijų ir eina žemyn, kad parodytų labiau susijusias funkcijas ir kodą kiekvienoje pagrindinėje funkcijoje. Naudojant šį medį programuotojams lengviau vizualizuoti kodą neperžiūrėjus paties šaltinio kodo, kuris yra daug ilgesnis ir gali atskleisti kodo trūkumus ar silpnybes. Medis vadinamas abstrakčiu ne todėl, kad jį sunku suprasti ar turi abstrakčią formą, o todėl, kad jame nėra kodavimo sintaksės, pvz., skliaustų ir kitų simbolių, kurie neišvengiamai atsiranda kode.

Kai programuotojas kuria programą, jis ar ji turi sukurti funkcijas iš tokių dalykų kaip „jei-tada“ ir „ar dar“ teiginiai. Žvelgiant į šaltinio kodą gali būti sunku suprasti, ar visi teiginiai ir sąlygos buvo visiškai įvykdyti ir ar visos funkcijos buvo sukurtos teisingai. Abstraktus sintaksės medis suteikia programuotojui greitą būdą peržiūrėti programavimą, kad pamatytų kiekvieną sąlygą ir kaip ji taikoma visai programai.

Medis pagamintas hierarchiniu būdu. Viršuje yra vienas iš pagrindinių teiginių, o iš to teiginio šakos teka žemyn, kad parodytų, kas tenkina sąlygas. Tai tęsiasi ir rodo kitas visos programos funkcijas ir sąlygas. Taip pat dažnai rodomi programavimo kintamieji. Dauguma programavimo kalbų turi galimybę generuoti abstrakčią sintaksės medį.

Abstraktus paprastai reiškia blogai suformuotą, sunkiai suprantamą arba amorfišką. Tai netinka abstrakčiam sintaksės medžiui. Priežastis, dėl kurios vartojamas žodis „abstraktus“, yra ta, kad medis nerodo tokios sintaksės ir programavimo, koks yra; greičiau pašalinami numanomi simboliai, kurie nėra svarbūs ekranui. Pavyzdžiui, skliausteliai dažnai naudojami gana gausiai programuojant, tačiau jie nerodomi medyje. Taip yra todėl, kad šios sintaksės rodymas užima daug daugiau vietos, tampa sunkiau žiūrėti į medį, o programuotojas žinotų apie šiuos simbolius šaltinio kode.

Jei programuotojas nori matyti šiuos pagalbinius simbolius, dažnai naudojamas konkretus sintaksės medis. Šie medžiai yra panašūs į abstrakčią veislę, tik jie yra išsamiau su visais simboliais. Šis medis geriau tinka trūkstamiems simbolių ar kodų gabalams žiūrėti, o abstraktus medis tinkamas programos funkcijoms ir kintamiesiems patikrinti.