Compiler

Welche Eigenschaft des abstrakten Syntaxbaums (AST) ist richtig?

  1. AEr behält alles bis hin zu Klammern und Trennzeichen des Quellcodes als Knoten bei
  2. BEr lässt bedeutungslose Symbole weg und stellt die Operatorpriorität in Baumform dar
  3. CEr entspricht eins zu eins den CPU-Befehlen und kann direkt ausgeführt werden
Antwort und Erläuterung anzeigen

Antwort: B. Er lässt bedeutungslose Symbole weg und stellt die Operatorpriorität in Baumform dar

Bei der Syntaxanalyse entsteht gemäß den Grammatikregeln ein Baum samt Klammern und Trennzeichen (konkreter Syntaxbaum), der jedoch viele für die weitere Verarbeitung unnötige Informationen enthält. Der abstrakte Syntaxbaum besteht nur aus den für die Bedeutung des Programms nötigen Operationen und Anweisungen; bei (a + b) * c liegt z. B. der Additionsknoten unter dem Multiplikationsknoten, sodass die Berechnungsreihenfolge auch ohne Klammern erkennbar ist. Den CPU-Befehlen entspricht erst der in einer späteren Phase erzeugte Code.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Compiler

  1. Was ist der Hauptvorteil einer Zwischendarstellung (IR), die im Compiler intern weder von der Quellsprache noch von der CPU abhängt?
  2. Welche Aussage zum Basisblock ist richtig?
  3. Welche Kombination dessen, was Knoten und Pfeile im Kontrollflussgraphen darstellen, ist richtig?
  4. Welche Eigenschaft der Zwischendarstellung in SSA-Form ist richtig?
  5. Wandelt man den obigen Code in SSA-Form um, so erscheint nach der if-Anweisung ein Ausdruck wie „x3 = φ(x1, x2)“. Welche Funktion der φ-Funktion ist richtig?

Vergleiche zu diesem Thema