CodeBlanks Logo Icon CodeBlanks

AST

Abstract Syntax Tree (AST) yapısını öğrenirsin.

AST

AST (Abstract Syntax Tree, Soyut Sözdizim Ağacı), derleyicinin kaynak kodu analiz ettikten sonra oluşturduğu ağaç yapıdır. Her düğüm bir sözdizim birimini (ifade, deyim, bildirim) temsil eder.

Örnek: a + b * c ifadesi bir BinaryExpr ağacı olur; sol tarafta a, sağ tarafta başka bir BinaryExpr (b * c) bulunur. Bu yapı, kodun anlamını işleyip denetlemeyi (tip kontrolü, eniyileme) mümkün kılar. AST, kaynak koddan bağımsız bir iç temsildir.

AST düğümleri

Bir AST'de yaygın düğüm türleri şunlardır: Expr (ifade — değer üreten birim), Stmt (deyim — yan etkili birim), BinaryExpr (iki operandlı işlem), Literal (sabit değer), VarDecl (değişken bildirimi).

Derleyici AST'yi üç şekilde kullanır: denetim (tip kontrolü, kapsamam analizi), eniyileme (sabit katlama, ölü kod elimination) ve kod üretimi (AST'den assembly'e). Senkronize edilmiş bu aşamalar kaynak koddan çalıştırılabilir dosya üretir.

Uygulama Expr yapısı yaz

struct Expr { int value; }; yaz. main içinde Expr e{42}; tanımla ve std::cout << e.value; yaz.

Başlangıç kodu

main.cpp
#include <iostream>

// Expr yapısını burada tanımla

int main() {
    // Expr örneği oluştur ve değerini yazdır
    return 0;
}

Örnek çözüm

main.cpp
#include <iostream>

struct Expr {
    int value;
};

int main() {
    Expr e{42};
    std::cout << e.value;
    return 0;
}

Beklenen çıktı

42

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 AST yapısını tamamla

Soru
struct BinaryExpr { Expr* left; Expr* right; std::string op; ____;
Cevap
struct BinaryExpr { Expr* left; Expr* right; std::string op; };

Açıklama: struct tanımı } ile kapanır.

2 Bir AST düğümü neyi temsil eder?

main.cpp
struct Expr { int value; };
  • Bir makine komutu
  • Bir sözdizim birimi (ifade, deyim) Doğru cevap
  • Bir bellek hücresi
  • Bir dosya

Açıklama: Her AST düğümü bir sözdizim birimini temsil eder.

3 Düğümü rolüne eşle

Kavram Anlamı
Expr node İfade düğümü
Stmt node Deyim düğümü
BinaryExpr İki operandlı işlem
Literal Sabit değer

Uzman bölümündeki tüm dersler