Aşağıdakilere ihtiyacınız olacak:
- Yeni bir dil yaratmanın bir nedeni
- Bir Felsefe
- Anlamsal Bir Tanım
- Jetonlarınızın sözlüksel açıklaması
- Bir Sözdizimi Analizi tanımı
Diliniz nasıl farklı olacak? Görevi nedir? İşlevsel mi? Nesne yönelimli mi? Meta bir dil mi? Eşsiz özellikleri nelerdir? Var olmayan (veya çirkin bir şekilde var olan) dünyaya ne verecek? Bir şeyi nasıl değiştirmek istiyorsun? Derlenmiş veya yorumlanmış mı? DSL mi yoksa genel amaçlı bir dil mi? Bu sizin felsefenizdir ve dilinizin tasarımı hakkında çok şey ifade eder.
Sonra, kaba sözdizimi ve semanti kazıma üzerinde çalışın. Bu sizin anlamsal tanımınız olacak ... sahte kod yazmak düşüncelerinizi geliştirmek için harika bir yoldur. Bunun nasıl yapıldığına dair mükemmel bir örnek için "C Programlama Dili" ni okuyun. Onunla oyna.
Daha sonra belirteçlerinizi ve sözdizimini bir şekilde tanımlamanız gerekir. Programlar daha sonra bunları dizelerde okuyabilen ve sözdizimini işleyebilen otomatik veri olarak işler. Yacc ve Bison, sırasıyla lexical ve syntax analizi için Regular Expressions ve BNF stili bir sözdizimi kullanır. Diğer diller için Yacc ve Bison benzeri araçlar da bulunmaktadır.
Ayrıca ne YAPMAYI bilmek için dil teorisinde / derleyicide bir topraklamaya ihtiyacınız olacaktır . Örnekler arasında belirsiz gramerler, AST oluşturma ve manipülasyon sorunları ve genellikle yaşamın kendiniz için nasıl basitleştirileceği sayılabilir. Teoriyi bilmek çok önemlidir. Başlamak için aşağıdakileri almayı düşünürüm:
Derleyiciler: İlkeler, Teknikler ve Araçlar (Dragon Book)
C'de Modern Derleyici Uygulaması veya Java'da Modern Derleyici Uygulaması