V pátek 26. dubna 2024 úderem 22 hodiny začíná naše nová
a opravdu velká série soutěží o nejlepší webovou stránku !!
Proto neváhejte a začněte hned zítra soutěžit o lákavé ceny !!

Syntaktický strom

Z Multimediaexpo.cz

Abstraktní syntaktický strom pro následující kód Euklidovského algoritmu:
while b ≠ 0
if a > b
a := a − b</dd>
</dd>
else
b := b − a</dd>
</dd>
</dd>
return a</dd>

Abstraktní syntaktický strom (také syntaktický strom nebo syntaktický graf) je v informatice stromovou reprezentací abstraktní syntaktické struktury zdrojového kódu napsaného v programovacím jazyce. Jeho vnitřními uzly jsou operátory a listy jsou operandy. Abstraktního syntaktického stromu se využívá primárně pro překlad a optimalizaci kódu. Jako příklad si můžeme představit strom, který reprezentuje booleovský výraz. V tomto stromu může překladač velmi pohodlně optimalizovat – např. pokud je jedna větev disjunkce vždy pravdivá, tak není třeba vyhodnocovat druhou větev. Syntaxe je abstraktní v tom smyslu, že nereprezentuje každý detail, který se vyskytuje v reálné syntaxi. Například seskupující závorky jsou ve stromové struktuře implicitní a syntaktické konstrukce jako if-podmínka-then mohou být označeny jediným uzlem se dvěma větvemi. To činí abstraktní syntaktické stromy odlišné od stromů konkrétních, které jsou tradičně označovány jako derivační stromy. Ty jsou často tvořeny parserem jako součást překladu a kompilace zdrojového kódu. Již postavený syntaktický strom lze doplňovat o dodatečné informace následným zpracováním, například kontextovou analýzou.

Struktura syntaktického stromu

  • vnitřní uzly stromu jsou operátory
  • synové uzlu jsou jeho operandy
  • každá část podstromu je samostatnou logickou jednotkou

Syntaktický strom při interpretaci

Abstraktní syntaktický strom (AST) je vhodný k řízení výkonu programu zejména pro Just-in-time kompilátory, kdy je lepší jako průběžný formát než bytekód. V přístupu řízení podle AST je potřeba analyzovat každou větu pouze jednou. Hlavní výhodou oproti bytekód interpretaci je, že AST udržuje globální program, strukturu a vztahy mezi instrukcemi (což v bytekódu nelze zjistit), a poskytuje kompaktnější reprezentaci. AST také umožňuje provádět lepší analýzu při běhu.

Související články