Ayrıştırma ağacı (parse tree), biçimsel dil kuramının temel kavramlarından biri olup bir dilin üretim kurallarına (gramer) uygun biçimde bir dizgenin (string) nasıl üretildiğini hiyerarşik bir yapı olarak gösteren grafiksel temsildir. Ayrıştırma ağaçları, bilgisayar bilimlerinde özellikle derleyici tasarımında, doğal dil işleme (NLP) alanında, matematiksel ifadelerin çözümlemesinde ve cümle analizlerinde yaygın biçimde kullanılmaktadır.
Temelde bir ayrıştırma ağacı, bir bağlamdan bağımsız gramer (context-free grammar) yardımıyla belirli bir giriş dizgesinin o gramer tarafından üretilip üretilemeyeceğini ve eğer üretilebiliyorsa, hangi adımlarla üretileceğini görsel bir yapı olarak ifade eder. Bu yapı, üretim kurallarının uygulama sırasını ve ara aşamaları da içerir.
Ayrıştırma ağaçlarının temeli biçimsel dil kuramına dayanır. Bir gramer G=(V,Σ,R,S) dört ögeden oluşur:
Bir ayrıştırma ağacı:
Ayrıştırma ağacı bir kök düğümden dallanan dallar aracılığıyla terminal sembollere ulaşır. Düğümler ikiye ayrılır:
Her düğüm bir etikete sahiptir. Örneğin, (x + y) * z ifadesi için bir ayrıştırma ağacı kökünde E bulunur. Üretim kurallarının hangi sırayla uygulandığına bağlı olarak ağaç dallanır.

Ayrıştırma ağacı yapısı örneği (Yapay zeka ile oluşturulmuştur.)
Bir ayrıştırma ağacı, birden fazla farklı türetimden doğabilir. Türetim sırasında:
Örnek: x + y *z
Burada farklı türetimler aynı ifadeyi üretebilir. Eğer farklı türetimlere karşılık gelen farklı ayrıştırma ağaçları varsa, gramer belirsizdir.
Bir gramer, bir dizge için birden fazla farklı ayrıştırma ağacı üretilebiliyorsa belirsizdir. Örneğin, a + b * c ifadesi hem çarpmanın hem de toplamanın öncelik kuralına göre farklı şekillerde ayrıştırılabilir. Bu durum, derleyiciler için istenmeyen bir durumdur. Bu nedenle çoğu programlama dili grameri, öncelik kurallarını açıkça belirten belirsiz olmayan grammarlardır.
Örnek:
Belirsiz gramer: E→E+E, E→E∗E, E→a∣b∣c
Bu gramer a + b *c ifadesini hem (a+b)*c hem de a +(b*c) şeklinde ayrıştırabilir.
Backus-Naur Formu (BNF) ayrıştırma ağaçlarının tanımlanmasında yaygın biçimde kullanılır. BNF’de üretim kuralları genellikle şu biçimde yazılır:
Örnek: 4 + 8 * (2 - 3) ifadesinin ayrıştırma ağacı;
Ayrıştırma ağacının inşası, biçimsel dil kuramının temel işlemlerinden biridir. Özellikle tam parantezlenmiş (fully parenthesized) matematiksel ifadelerin ayrıştırılması, kuramsal anlatımı somut bir uygulamaya dönüştürür. Bir ifade ayrıştırılırken her sembol bir token olarak ele alınır ve ayrıştırma işlemi bu token dizisi üzerinde adım adım yürütülür.
Ayrıştırma ağacının inşası için dört temel kural tanımlanır:
Bu işlem zincirleme biçimde devam eder ve ayrıştırma tamamlanana dek ağaç dallanır. Ebeveyn-düğüm ilişkilerini kaybetmemek için yığın (stack) kullanımı zorunludur. Her alt düğüme inişte mevcut düğüm yığına eklenir; üst düğüme dönüşte yığından çekilir.
Uygulama Örneği:
( 3 + ( 4 * 5 ) ) ifadesi için:
Bu işlem sonunda tam bir ayrıştırma ağacı oluşur. Her dal, parantezli alt ifadeye karşılık gelir.
Ayrıştırma ağacının inşa edilmesi yalnızca dizgeyi yapısal olarak çözümlemeyi değil, aynı zamanda ifadenin sayısal değerinin hesaplanmasını da mümkün kılar. Bu bağlamda, ayrıştırma ağacının değerlendirilmesi (evaluation) bir tür ağaç tabanlı hesaplama algoritmasıdır.
Değerlendirme algoritması özyinelemeli (recursive) bir yapıdadır:
Örneğin (3 + (4 * 5)) için:
Bu yöntem, karmaşık ifadelerde bile doğru işlem sırasını otomatik olarak korur; çünkü ayrıştırma ağacı zaten işlemlerin öncelik ilişkisini yapısal olarak saklamaktadır.
LL(1) ayrıştırıcı, top-down parsing yöntemidir.
LL(1) gramerlerinde, her adımda uygulanacak üretim kuralı yalnızca sıradaki karaktere bakılarak belirlenebilir. Bu özellik, insan tarafından kolayca anlaşılır gramerlerin tasarımını mümkün kılar. G2 grameri örneğinde olduğu gibi, aritmetik işlemlerde işlem önceliği açıkça belirlenir ve belirsizlik ortadan kaldırılır.
LR(1) ayrıştırıcı, bottom-up parsing yöntemidir.
LR(1) gramerleri, LL(1) gramerlerine göre daha karmaşık dil yapılarını tanımlayabilir. G3 gramerinde olduğu gibi, bazı dil yapılarında hangi kuralın seçileceğine karar vermek için yalnızca sembolün yerini değil, işlem önceliklerini de göz önünde bulundurmak gerekir. Bu nedenle LR(1) ayrıştırıcılar, shift/reduce algoritmasını kullanarak girişte ilerler ve hangi üretim kuralının uygulanacağını belirler.
Örneğin (x + y) * z ifadesi LR(1) algoritmasında:
Critchlow, Carol ve Eck, David J. "Parsing and Parse Trees". Engineering LibreTexts. Erişim Tarihi: 8 Temmuz 2025. Erişim Adresi.
Runestone Academy. "Parse Tree". Erişim Tarihi: 8 Temmuz 2025. Erişim Adresi.
Stanford InfoLab. "Parse Trees". Erişim Tarihi: 8 Temmuz 2025. Erişim Adresi.
The University of North Carolina at Chapel Hill. "Parse Trees". Erişim Tarihi: 8 Temmuz 2025. Erişim Adresi.
Şeker, Şadi Evren. "Parçalama Ağacı (Parse Tree)". 2008. Erişim Tarihi: 8 Temmuz 2025. Erişim Adresi.
Henüz Tartışma Girilmemiştir
"Ayrıştırma Ağacı" maddesi için tartışma başlatın
Biçimsel Dil Teorisi Bağlamında Ayrıştırma Ağacı
Ayrıştırma Ağacının Yapısı
Türetim Türleri: Sol-Öncelikli ve Sağ-Öncelikli
Belirsizlik (Ambiguity)
Ayrıştırma Ağaçları ve BNF Gösterimi
Ayrıştırma Ağacı İnşası: Algoritma
Ayrıştırma Ağacı Değerlendirme
LL(1) ve LR(1) Ayrıştırıcılar
LL(1) Ayrıştırıcı
LR(1) Ayrıştırıcı
Bu madde yapay zeka desteği ile üretilmiştir.