Biçimsel dil kuramı

kendisine özgü kurallar tarafından kısıtlanabilecek sembol dizileri kümesi; harfleri bir alfabeden alınan ve belirli kurallara göre iyi biçimlendirilmiş kelimeler

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 makine 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

değiştir

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++ dillerinde kullanılan kayan nokta (İngilizce: 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