İçeriğe atla
Üyelik kaydınızı yaparak son yazılan içeriklerden haberdar olun! ×
  • makale
    18
  • yorum
    0
  • görüntüleme
    18.850

Parse Tree Nedir?


Doğuhan ELMA

23 görünüm

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.

Misafir
Yorum ekle...

×   Zengin metin olarak yapıştırıldı.   Bunun yerine düz metin olarak yapıştır

  Yalnızca 75 emojiye izin verilir.

×   Bağlantınız otomatik olarak gömüldü.   Bunun yerine bağlantı olarak görüntüle

×   Önceki içeriğiniz geri yüklendi.   Düzenleyiciyi temizle

×   Görüntüleri doğrudan yapıştıramazsınız. URL'den resim yükleyin veya ekleyin.

×
×
  • Create New...