Ara dil, makine komut seti gibi yorumlayıcınıza özel komut seti tanımlanmasıdır. Assembly gösterimi gibi IL kodları IR (Intermediate Representation) ile gösterilir. Ara dil tasarımının AST (Abstract Syntax Tree) yapısına göre avantajlarını aşağıdaki şekilde sıralayabiliriz;

Şimdiye kadar Lexer ve Parser’ımızı tamamladık ve sıra veri türlerini tanımlamaya geldi. Parserımız int, string ve boolean türlerini algılayabilecek hale geldi ve şimdi bunları nesne haline getireceğiz.

Bir önceki yazıda dilimizi a = 1 , print() gibi ifadeleri ayrıştırabilecek şekile getirmiştik. Şimdi matematiksel ifadeleri işlem önceliğini dikkate alarak ayrıştıracağız. Aşağıda 2 + 5 * 4 şeklindeki bir ifadenin olası 2 farklı sonucunu göreceksiniz.

Programlama dilimizi yazmaya devam ediyoruz. Bir önceki yazıdaki lexer’a lparen, rparen, comma türlerini ekledim. Siz de bu türleri lexerınıza ekleyin ki print(1, 2) gibi fonksiyonları çağırabilelim.

Uzun bir süredir bunu merak ediyordum dün ddili.org forumunda Ali Çehreli hocama bu soruyu yönelttim ve sağolsun nasıl yapılacağını gösterdi.