Kaj je abstraktno sintaktično drevo?

Abstraktno sintaktično drevo (AST) je sintaktična struktura, ki predstavlja funkcije, ki se pojavljajo v programu. Temelji na izvorni kodi programiranja. Abstraktno sintaktično drevo, ki je običajno hierarhično v zasnovi, se začne od osnovnih funkcij in teče navzdol, da prikaže bolj vključene funkcije in kodo znotraj vsake osnovne funkcije. Uporaba tega drevesa programerjem olajša vizualizacijo kode, ne da bi si ogledali samo izvorno kodo, ki je veliko daljša in lahko razkrije pomanjkljivosti ali slabosti v kodi. Drevo se imenuje abstraktno, ne zato, ker ga je težko razumeti ali ima abstraktno obliko, temveč zato, ker ne vključuje sintakse kodiranja, kot so oklepaji in drugi simboli, ki se neizogibno pojavljajo v kodi.

Ko programer zgradi program, mora sestaviti funkcije iz takih stvari, kot so stavki »če-potem« in stavki »ali drugače«. Ko pogledate izvorno kodo, je lahko težko ugotoviti, ali so vsi stavek in pogoj v celoti izpolnjeni in ali so bile vse funkcije ustvarjene pravilno. Abstraktno sintaktično drevo omogoča programerju hiter način, da si ogleda programiranje, da vidi vsak pogoj in kako se nanaša na program na splošno.

Drevo je narejeno hierarhično. Na vrhu je ena od glavnih stavkov in od te izjave se veje tečejo navzdol, da pokažejo, kaj izpolnjuje pogoje. To se nadaljuje in prikazuje druge funkcije in pogoje za celoten program. Pogosto so prikazane tudi spremenljivke v programiranju. Večina programskih jezikov ima možnost generiranja abstraktnega sintaksnega drevesa.

Abstraktno običajno pomeni slabo oblikovano, težko razumljivo ali amorfno. To ne velja za abstraktno sintaktično drevo. Razlog za uporabo besede »abstract« je, ker drevo ne prikazuje sintakse in programiranja, kot sta; namesto tega odstrani implicitne simbole, ki niso pomembni za prikaz. Na primer, oklepaji se pri programiranju pogosto uporabljajo precej svobodno, vendar niso prikazani na drevesu. To je zato, ker prikaz te sintakse zahteva veliko več prostora, otežuje pogled na drevo, programer pa bi vedel za te simbole v izvorni kodi.

Če želi programer videti te pomožne simbole, se pogosto uporablja konkretno sintaktično drevo. Ta drevesa so podobna abstraktni sorti, le da so podrobneje opisana z vsemi simboli. To drevo je boljše za ogled manjkajočih kosov simbolov ali kode, medtem ko je abstraktno drevo boljše za preverjanje funkcij in spremenljivk programa.