Thue (programlama dili) - Thue (programming language)

Thue ( / t u / TOO -ay ) bir olduğunu ezoterik programlama dili Bu tanımlamak veya gelen Type-0 dilleri tanımak için kullanılabilecek bir meta dildir erken 2000 yılında John Colagioia tarafından icat Chomsky hiyerarşisi . Bu tür karmaşıklıktaki dilleri tanımlayabildiğinden, kendisi de Turing-complete'dir . Thue, adını Norveçli matematikçi Axel Thue'dan alan yarı-Thue dilbilgisi adı verilen deterministik olmayan bir dize yeniden yazma sistemine dayanmaktadır. . Yazar bunu şu şekilde açıklıyor: "Thue, kısıtlamaya dayalı programlamayı yorumlamanın mümkün olan en basit yollarından birini temsil ediyor . OISC gibi dillerin zorunlu paradigma için ne olduğu, kısıtlama tabanlı paradigma için odur ; başka bir deyişle, bir katran çukurudur . "

Üretim kuralları

Bir Thue programı, bir dizi ikame kuralı olan bir kural tabanı ile başlar, her biri şu biçimdedir:

lhs ::= rhs

Kural tabanı, bir satırda yalnız bir üretim sembolü ile sona erer:

::=

İlk durum, kural tabanını takip eden bir dizi semboldür.

Thue ilk sembolleri tüketir ve ilk durumun sembollerinin her biri için kuralların sonucunu değiştirir.

Thue, sonuç durumunda lhs bulunamadığında sona erer.

Notlar

  • :: = telaffuz edilir olabilir .
  • lhs "sol taraf" tır .
  • rhs "sağ taraf" dır.
  • " ::= " asla lhs olamaz.
  • ":::" bir giriş akışıdır.
  • "~" çıkış akışıdır.
  • Yarı Thue sistemleri, sınırsız gramerlere göre izomorfiktir .

Thue'yu aramak

'd' (hata ayıklama) ile çağrıldığında, durumu yazdırın. 'l' (sol taraf) ile çağrıldığında, kuralları soldan sağa uygulayın. 'r' (sağ taraf) ile çağrıldığında, kuralları sağdan sola uygulayın. Son 'l' veya 'r' önceki anahtarları geçersiz kılar.

Örnek programlar

İşte geleneksel "Merhaba Dünya!" Thue'de:

a::=~Hello World!
::=
a

Aşağıdaki Thue programı, "_" karakterleriyle çevrelenmiş ilk durum olarak girilen ikili sayının bir artışını gerçekleştirir, bu durumda 11111111111 sayısı:

1_::=1++
0_::=1

01++::=10
11++::=1++0

_0::=_
_1++::=10

__::=1

::=

_1111111111_

Aşağıdaki örnek program, Thue'nun nondeterminizmini (ve ayrıca sonsuz bir döngü örneğini göstermek) göstermek içindir. Program, bitleri tanımsız (ve büyük olasılıkla rastgele) bir sırayla çıkarır.

b::=~0
b::=~1
ac::=abc
::=
abc

Ayrıca bakınız

Dış bağlantılar