CodeBlanks Logo Icon CodeBlanks

AST

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

AST

AST (Abstract Syntax Tree), kaynak kodun ağaç yapısındaki gösterimidir. Her düğüm (node) bir ifadeyi, deyimi veya tanımı temsil eder. Örneğin a + b ifadesi, BinaryOp('+', a, b) düğümü olarak modellenir.

AST, soyut olduğundan gereksiz ayrıntılar (boşluk, yorum) tutulmaz. Parser, token akımından AST üretir; bu ağaç üzerinde tür denetimi, optimizasyon ve Kernel'e dönüşüm yapılır. AST, derleyicinin anlamsal anlamda kodu temsil ettiği ilk aşamadır.

AST düğüm türleri

AST, farklı düğüm türleri içerir: Literal (sabit değerler), Identifier (değişken referansları), BinaryOp (iki operandlı işlem), FunctionCall (çağrı). Her düğümün alt düğümleri olabilir.

Örneğin add(1, 2) ifadesi, FunctionCall('add', [Literal(1), Literal(2)]) olarak modellenir. Tür denetimi AST üzerinde yapılır; her düğümün statik türü belirlenir. Bu, derleme anı hatalarının temelini oluşturur.

Uygulama AST Node sınıfı

Bir Node sınıfı tanımla: final String name; final List<Node> children; Node(this.name, this.children); alan ve kurucu. int count() => 1 + children.length; metodu. main içinde final n = Node('BinaryOp', [Node('a', []), Node('b', [])]); yarat; print(n.count()); ile yazdır.

Başlangıç kodu

main.dart
void main() {
  // Node sınıfını tanımla (name, children; count metodu)
  // bir Node yarat; count() yazdır
}

Örnek çözüm

main.dart
class Node {
  final String name;
  final List<Node> children;
  Node(this.name, this.children);
  int count() => 1 + children.length;
}

void main() {
  final n = Node('BinaryOp', [Node('a', []), Node('b', [])]);
  print(n.count());
}

Beklenen çıktı

3

Soru ve cevaplar

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

1 AST düğümü

Soru
final node = Node('____', [Node('a', []), Node('b', [])]);
print(node.name);
Cevap
final node = Node('BinaryOp', [Node('a', []), Node('b', [])]);
print(node.name);

Açıklama: BinaryOp bir AST düğüm türüdür (örn. a + b).

2 AST'nin amacı nedir?

  • Kaynak kodu anlamsal olarak temsil etmek Doğru cevap
  • Kod yazmak için
  • Çöp toplamak için
  • Paket indirmek için

Açıklama: AST kaynak kodun anlamsal ağaç gösterimidir.

3 AST düğümlerini eşleştir

Kavram Anlamı
Literal Sabit değer
Identifier Değişken referansı
BinaryOp İki operandlı işlem
FunctionCall Çağrı

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