Wat is Abstracte syntaxisboom (AST)?

Weergave van de structuur van een programma als een boom met bewerkingen en instructies als knopen. Betekenisloze informatie zoals haakjes en scheidingstekens wordt weggelaten, en de voorrang van operatoren komt tot uiting in de vorm van de boom.

Japanse benaming: 抽象構文木(AST)

“Abstracte syntaxisboom (AST)” komt voor in 2 oefenvragen uit 1 onderwerpen, bijv. Compilers.

Vakgebied: Compilers

Nu oefenen: vragen over Abstracte syntaxisboom (AST)

Welke uitspraak over een abstracte syntaxisboom (AST) is juist?

  1. AAlle haakjes en scheidingstekens van de broncode blijven als knopen behouden
  2. BSymbolen die voor de betekenis niet ter zake doen zijn weggelaten en de prioriteit van operatoren komt in de boomvorm tot uitdrukking
  3. CHij komt één op één overeen met CPU-instructies en kan rechtstreeks worden uitgevoerd
Antwoord en toelichting tonen

Antwoord: B. Symbolen die voor de betekenis niet ter zake doen zijn weggelaten en de prioriteit van operatoren komt in de boomvorm tot uitdrukking

Parsing levert een boom op die volgens de grammaticaregels ook haakjes en scheidingstekens bevat (concrete syntaxisboom), maar die bevat veel informatie die voor de verdere verwerking niet nodig is. Een abstracte syntaxisboom is een boom met alleen de voor de betekenis van het programma noodzakelijke operaties en statements als knopen; bij (a + b) * c bijvoorbeeld staat de optelknoop onder de vermenigvuldigingsknoop, zodat ook zonder haakjes de volgorde van berekening duidelijk is. Wat met CPU-instructies overeenkomt, is de code die in een latere fase wordt gegenereerd.

Welke vorm van de abstracte syntaxisboom van de expressie 2 + 3 * 4 is juist?

  1. ADe wortel is een +-knoop, waarvan het rechterkind een *-knoop is die 3 * 4 voorstelt
  2. BDe wortel is een *-knoop, waarvan het linkerkind een +-knoop is die 2 + 3 voorstelt
  3. CDe vijf knopen 2, 3, 4, + en * staan allemaal als directe kinderen naast elkaar onder de wortel
Antwoord en toelichting tonen

Antwoord: A. De wortel is een +-knoop, waarvan het rechterkind een *-knoop is die 3 * 4 voorstelt

Vermenigvuldigen heeft een hogere prioriteit dan optellen, zodat de expressie wordt geïnterpreteerd als 2 + (3 * 4). In een abstracte syntaxisboom staat de bewerking die eerst wordt berekend lager, dus de wortel is + met als linkerkind 2 en als rechterkind een *-knoop met 3 en 4 als kinderen. Als de boom van onder af wordt geëvalueerd, wordt eerst 3 * 4 = 12 berekend en daarna 2 + 12 = 14. De wortel is * als het (2 + 3) * 4 zou zijn, en als alles naast elkaar onder de wortel staat, kan de volgorde van berekening niet worden weergegeven.

“Abstracte syntaxisboom (AST)” in de toelichting

Vragen met “Abstracte syntaxisboom (AST)” (2)

  1. Welke uitspraak over een abstracte syntaxisboom (AST) is juist?
  2. Welke vorm van de abstracte syntaxisboom van de expressie 2 + 3 * 4 is juist?

Verwante termen

Syntactische analyse (parsing) Basic block Common subexpression elimination Constant folding Control-flow-graaf (CFG) Inlining Instructiescheduling Intermediaire representatie (IR) JIT-compilatie (just-in-time) Lexicale analyse

Naar de woordenlijst