Öğrenme deneyimi için sıfırdan bir C# yorumlayıcısı yazıyorum ve şimdiye kadar her şey sorunsuz geçti. Tamamen işlevsel bir C# lexer'ım var, her türlü jetonu ayrıştırıcıya gönderir. Jetonları nasıl ayrıştıracağımı biliyorum ama AST'yi (soyut sözdizimi ağacı) nasıl yapılandırmam gerektiğinden emin değilim.Bir Özet Sözdizimi Ağacının parçaları nasıl tasarlanır?
Örneğin, basit bir kod parçası varsa:
using System.Xml;
ağaç ayrıştırılan zaman nasıl bir şey olurdu?
Bunu beğendiniz mi?
UsingDirective
Identifier(System)
Identifier(Xml)
veya benzeri mi?
UsingDirective
Identifier(System)
Identifier(Xml)
ben/else/else ifadeleri, bir açıklamada kombine değişken ifadesi/atama (int i eğer ben onlardan noktalarla tanımlayıcıları gibi şeyler yapısı nasıl bazı öneri ve/veya örnekleri alabilirsem = 0;), yardımcı olacak fonksiyon tanımları vb. Ağacın nasıl yapılacağına dair daha iyi bir fikre ihtiyacım var ve gerisini kendim çözebilirim. Teşekkürler.
Bu uzun bir öğrenme deneyimi olacak, eğer tüm C# :-) uygulamak istiyorsanız – svick
Eh, sınıf kütüphanesinin çoğunluğunu bırakıyorum. Temel olarak sadece temel sınıf/fonksiyon tanımları, değişken oluşturma/kullanım ve işlev çağrıları için neyin uygulanması gerektiğini uyguluyorum. –