AST
- Dart kursu
- Uzman
- Ders 8/47
- 5 dk
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
void main() {
// Node sınıfını tanımla (name, children; count metodu)
// bir Node yarat; count() yazdır
}Örnek çözüm
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ü
final node = Node('____', [Node('a', []), Node('b', [])]);
print(node.name);
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ı |