Compilers

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.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Compilers

  1. Wat is het belangrijkste voordeel van het gebruik in een compiler van een tussenrepresentatie (IR) die niet van de brontaal en niet van de CPU afhangt?
  2. Welke uitspraak over een basisblok (basic block) is juist?
  3. Welke combinatie van wat knopen en pijlen in een controleflowgraaf voorstellen is juist?
  4. Welke uitspraak over de tussenrepresentatie in SSA-vorm is juist?
  5. Als de bovenstaande code in SSA-vorm wordt gebracht, komt na het if-statement een uitdrukking zoals "x3 = φ(x1, x2)". Welke uitspraak over de werking van deze φ-functie is juist?

Vergelijkingen bij dit onderwerp