Što je apstraktno stablo sintakse?

Stablo apstraktne sintakse (AST) je sintaktička struktura napravljena da predstavlja funkcije koje se javljaju unutar programa. Temelji se na izvornom kodu programiranja. Tipično hijerarhijsko u dizajnu, apstraktno stablo sintakse počinje od osnovnih funkcija i teče prema dolje kako bi prikazalo više uključene funkcije i kod unutar svake osnovne funkcije. Korištenje ovog stabla olakšava programerima vizualizaciju koda bez pregledavanja samog izvornog koda, koji je mnogo duži i može otkriti nedostatke ili slabosti u kodu. Stablo se naziva apstraktnim, ne zato što ga je teško razumjeti ili ima apstraktan oblik, već zato što ne uključuje sintaksu kodiranja kao što su oznake zagrada i drugi simboli koji se neizbježno pojavljuju u kodu.

Kada programer gradi program, on ili ona moraju izgraditi funkcije od stvari kao što su “if-then” izjave i “or else” izjave. Kada pogledate izvorni kod, može biti teško vidjeti jesu li svaka izjava i uvjet u potpunosti ispunjeni i jesu li sve funkcije ispravno kreirane. Stablo apstraktne sintakse daje programeru brz način pregleda programiranja kako bi vidio svaki uvjet i kako se on primjenjuje na program općenito.

Stablo je napravljeno na hijerarhijski način. Na vrhu je jedan od glavnih iskaza i, iz te izjave, grane teku prema dolje kako bi pokazale što zadovoljava uvjete. Ovo se nastavlja, prikazujući druge funkcije i uvjete za cijeli program. Često se prikazuju i varijable u programiranju. Većina programskih jezika ima mogućnost generiranja apstraktnog sintaksnog stabla.

Apstraktno obično znači loše oblikovan, teško razumljiv ili amorfan. To nije slučaj s apstraktnim sintaktičkim stablom. Razlog zašto se koristi riječ “apstraktno” je taj što stablo ne prikazuje sintaksu i programiranje onakvima kakvi jesu; nego uklanja implicitne simbole koji nisu važni za prikaz. Na primjer, zagrade se često koriste prilično slobodno u programiranju, ali nisu prikazane na stablu. To je zato što prikazivanje ove sintakse zauzima puno više prostora, otežava gledanje stabla, a programer bi znao za ove simbole u izvornom kodu.

Ako programer želi vidjeti ove pomoćne simbole, često se koristi konkretno stablo sintakse. Ova stabla su slična apstraktnoj sorti, samo što detaljnije govore o svim simbolima. Ovo stablo je bolje za gledanje nedostajućih dijelova simbola ili koda, dok je apstraktno stablo bolje za provjeru funkcija i varijabli programa.