Biçimsel dil kuramı
Biçimsel dil kuramı, teorik bilişimin temel dallarından biridir. Bir biçimsel dil, abece denilen belli bir küme Σ üzerinde kurulan dizilerden oluşur. Biçimsel dilleri tanımlamak için ifadeler, gramerler ya da tanımlanan dile ait olan dizileri kabul eden otomatlar kullanılır. Bunun yüzünden otomat kuramı ile ilişkisi çok önemlidir.
Biçimsel diller, Chomsky sınıflandırmasına göre 4 sınıfa ayırılır:
- Tip 3 Düzenli diller
- Tip 2 Bağlamdan bağımsız diller
- Tip 1 Bağlama duyarlı diller
- Tip 0 Özyinelemeli sayılabilir diller
Her sınıf, daha küçük sayılı sınıfların bir alt kümesidir. Tip 0 en genel sınıftır, Turing makina ve bilgisayar programıyla sayılanan her dilli kapsar.
Bu sınıflandırma (hiyerarşi), dillerin dizilerini türeten gramer ya da kabul eden makinaların hesaplama gücüne göre yapılmıştır.
Uygulama
Teorik bilişim bilimi bakımından önemli olan bu madde pratikte programlama dilleri kullanarak bilgisayar programları üretilmesini sağlayan derleyici ve yorumlayıcı yazılımlarının hazırlanmasında önemli bir rol oynar. Biçimsel dil kuramı, sıfırdan bir programlama dili geliştirmek isteyen bir bilgisayar programcısının ilk öğrenmesi gereken konulardan biridir. Mesela alttaki Tip 2 grameri Java,C,C++ de kullanılan floating point sayılarından oluşan biçimsel dili tanımlar; bu dil 3.1415 ya da 1.40239846e-45f gibi sayıların yazılış şekillerini gösterir.
FloatingPointLiteral: Digits . [Digits] [ExponentPart] [FloatTypeSuffix] . Digits [ExponentPart] [FloatTypeSuffix] Digits ExponentPart [FloatTypeSuffix] Digits [ExponentPart] FloatTypeSuffix Digits: Digit Digits Digit Digit: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 ExponentPart: ExponentIndicator SignedInteger ExponentIndicator: one of e E Si gnedInteger: [Sign] Digits Sign: one of + - FloatTypeSuffix: one of f F d D