Pratt Parsing Neden Karmaşık Görünüyor?

Pratt parsing, derleyici ve yorumlayıcı yazarken operatör önceliğini ve ilişkilendirmeyi ele almak için kullanılan bir yöntem. Fakat çoğu kaynakta sihirli bir kutu gibi sunuluyor, adımlar atlanıyor, kavramlar anlaşılmadan geçiliyor.

Temel sorun, Pratt parsing'in insan düşüncesiyle uyumlu bir şekilde açıklanmaması. Klasik öğretim materyalleri genellikle kodu gösteriyor ama neden o kodu yazıyorsunuz, her satırın ne işe yaradığı net değil. Operatör tablosu, binding power (bağlama gücü) ve recursion arasındaki ilişki net olmadan kalıyor.

Aslında mantık basit: her operatörün bir gücü var. Yüksek güçlü operatörler önce işleme alınıyor. Pratt parsing bunu elegantly çözmek için token akışını adım adım ilerletir ve operatörleri doğru sırada birleştirir. Ama bu "elegance" açıklanmadığında karışıklık doğuyor.

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası

Pratt parsing'i anlamak için operatör önceliğinin neden gerekli olduğunu, binding power kavramını ve recursif iniş (recursive descent) arasındaki farkı kavraman gerekir. Kaynak kodu okuyan birinin her fonksiyonun rolünü bilmesi şart.

Eğer kendi dil yazıyorsan veya mevcut bir parser'ı öğreniyorsan, Pratt parsing'i adım adım bir örnekle çalışmak, mesela basit matematik ifadeleriyle başlamak, çok yardımcı olur. Kara kutu olması yerine, mekanizmasını görmek anlamayı hızlandırır.

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz