Parse Tree Nedir?
Parse tree (ayrıştırma ağacı), formal gramerler kullanılarak türetilen bir dilin yapısını görsel olarak gösteren bir ağaç yapısıdır. Bu ağaç, dilin sözdizimini, yani gramer kurallarının nasıl uygulandığını adım adım sergiler. Ağacın kökü genellikle gramerin başlangıç sembolüdür ve yapraklar terminal sembollere (dilin temel elemanları) karşılık gelir. İç düğümler ise nonterminal sembollerdir (üretim kuralları ile değiştirilen semboller).
Parse Tree Örneği
Önceki Python kodumuzda kullanılan gramerle basit bir parse tree oluşturalım. Bu gramer ile "ab" stringini türeten kurallar:
S -> AB
A -> a
B -> b
Bu gramerle üretilen "ab" stringi için parse tree şu şekilde olacaktır:
S / \ A B / \ a b
Python Kodu ile Parse Tree Oluşturma
Aşağıdaki Python kodu, parse tree'yi temsil eden bir sınıf yapısı kullanır ve önceki örnekte tanımlanan gramer kuralları ile parse tree oluşturur:
class Node: def __init__(self, symbol): self.symbol = symbol self.children = [] def add_child(self, child): self.children.append(child) def print_tree(self, level=0): print(' ' * level + self.symbol) for child in self.children: child.print_tree(level + 1) def build_parse_tree(symbol, rules): node = Node(symbol) # Eğer sembol nonterminal ise ve bir kuralı varsa if symbol in rules and rules[symbol] != symbol: # Kuraldaki her sembol için bir çocuk düğüm oluştur for s in rules[symbol]: child = build_parse_tree(s, rules) node.add_child(child) return node # Gramer kuralları rules = { 'S': 'AB', 'A': 'a', 'B': 'b' } # Parse tree'yi oluştur ve yazdır root = build_parse_tree('S', rules) root.print_tree()
Bu kodda Node sınıfı, parse tree'nin düğümlerini temsil eder. Her düğüm, sembolü ve çocuk düğümleri saklar. build_parse_tree fonksiyonu, belirli bir sembolden başlayarak parse tree'yi rekürsif olarak inşa eder. Son olarak, print_tree metodu, ağacı görsel olarak yansıtacak şekilde düz metin olarak yazdırır.
0 Yorum
Önerilen Yorumlar
Görüntülenecek yorum yok.