AST
- C++ kursu
- Uzman
- Ders 38/47
- 5 dk
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
#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
#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
struct BinaryExpr { Expr* left; Expr* right; std::string op; ____;
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?
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 |