İçeriğe geç
zee0.8-dev

Dil turu

Zee'nin çalışan yüzeyi, kolaydan zora. Buradaki her örnek gerçek derleyiciden geçer; Çalıştır ile tarayıcıda dene.

Okuma anahtarı

Zee'de ayrılmış anahtar kelime yoktur. Cümlenin ne yaptığını son kelimesi, yani yüklemi söyler: yaz, olsun, tekrarla, döndür. Türkçenin yüklem-sonlu yapısı dilin ayrıştırma kuralıdır. Bu sitedeki renklendirme de yüklemi vurgular.

okuma.dilÇalıştır ▶
"Dünyaya merhaba" yaz

isim "Ayşe" olsun
"Benim adım " ile isim yaz

Değerler ve akış

Değerler

Ad olsun ile bağlanır; türü çıkarılır ve sonradan değişmez. Ondalık bitişik virgülle yazılır ve onluk aritmetikle hesaplanır.

örnek.dilÇalıştır ▶
ad "Zeynep" olsun
yaş 7 olsun
boy 1,22 olsun
hazır doğru olsun
"Merhaba " ile ad yaz
0,1 ile 0,2 nin toplamı yaz

Koşullar

Koşul da yüklemle biter: -se/-sa. değilse ile zincirlenir; ve ile veya aynı koşulda karışmaz.

örnek.dilÇalıştır ▶
yaş 7 olsun
yaş 8 veya daha büyükse
    "Programlamaya başlayabilirsin!" yaz
değilse
    "Biraz daha oyun zamanı" yaz

Döngüler

Dört döngü: kez tekrarla, aralıkta her … için, olduğu sürece ve olana kadar tekrarla. Sayıya gelen ek ayrı yazılır: 1 den.

örnek.dilÇalıştır ▶
3 kez tekrarla
    "Merhaba" yaz

1 den 10 a kadar her sayı için
    sayı çiftse
        sayıyı yaz

Veri yapıları

Listeler

her sayı için listeyi örtük çoğuldan bulur: sayı → sayılar. Metinler Türk alfabesine göre sıralanır.

örnek.dilÇalıştır ▶
sayılar 3, 7, 1, 9 listesi olsun
sayılara 5 ekle
"Adet: " ile sayıların adedi yaz

sıralı sayıların sıralanmışı olsun
sıralının json metni yaz

Sözlükler

Ekleme sırası korunur; gezme her çalışmada aynı sırayı verir. Metin dönüşümleri Türkçe kurallıdır: İ↔i, I↔ı.

örnek.dilÇalıştır ▶
yaşlar boş sözlük olsun
yaşların "Zeynep" değeri 7 olsun
yaşların "Ada" değeri 9 olsun

yaşlardaki her ad için
    ad ile ": " ile yaşların ad değeri yaz

cümle "Türkçe düşün, Türkçe yaz" olsun
cümlenin büyük harflisi yaz

Yapılar

Alan erişimi iyelik ekiyle yapılır: kitabın adı. Yapı listeleri kayıt tablosudur ve doğrudan JSON'a dönüşür.

örnek.dilÇalıştır ▶
yapı Kitap
    ad Metin
    yazar Metin
    yıl TamSayı

kitap yeni Kitap olsun
kitabın adı "Küçük Prens" olsun
kitabın yazarı "Antoine de Saint-Exupéry" olsun
kitabın yılı 1943 olsun

raf boş liste olsun
rafa kitabı ekle
rafın json metni yaz

İşlemler

Açık imzalı işlem

Parametreler gövdenin başında … al satırlarıdır, değer döndür ile çıkar. Çağrı Türkçe cümle gibidir: argüman + için + işlem adı.

örnek.dilÇalıştır ▶
işlem yarısını bul
    sayıyı Ondalık olarak al
    Ondalık döndürür
    sonuç sayının 2 ye bölümü olsun
    sonucu döndür

yarım 7 için yarısını bul olsun
yarım yaz

Desen eşleştirme

göre bir değeri dallara ayırır; değilse kalan durumları toplar.

örnek.dilÇalıştır ▶
şekil "kare" olsun

şekle göre
    "daire" ise
        "Köşesi yok" yaz
    "kare" ise
        "4 köşesi var" yaz
    değilse
        "Bu şekli tanımıyorum" yaz

Seçenek ve Sonuç

Zee'de null yoktur. Olmayabilen değer bir türdür, beklenen hata da bir değerdir.

Seçenek

yok döndür içeren işlem Seçenek üretir. bulunanın değeri yalnız varsa dalında okunabilir; dal dışında derleme hatasıdır.

örnek.dilÇalıştır ▶
işlem ilk çift sayıyı bul
    sayıları al
    her sayı için
        sayı çiftse
            sayıyı döndür
    yok döndür

bulunan 3, 8, 5 listesi için ilk çift sayıyı bul olsun

bulunan varsa
    "Bulundu: " ile bulunanın değeri yaz
değilse
    "Çift sayı yok" yaz

Sonuç

Beklenen hatalar … dene ile Sonuç'a dönüşür. Hata değeri kod, neden ve veri taşıyan yapılandırılmış bir zincirdir. Bu örnek girdi ister; çalışma alanındaki girdi kutusuyla dene.

yas.dil
"Yaşın kaç?" diye sor
sonuç yanıtın sayısını almayı dene olsun

sonuç başarılıysa
    "Sayı aldım: " ile sonucun değeri yaz
değilse
    "Bu bir sayı değil: " ile sonucun hatası yaz

Testler

Testler dilin parçasıdır. dil dene onları taze ortamda koşar; rastgelelik, saat ve dosyalar test dünyasından gelir, bu yüzden aynı test her makinede aynı sonucu verir.

faktoriyel.dilÇalıştır ▶
işlem faktöriyelini hesapla
    sayıyı TamSayı olarak al
    TamSayı döndürür

    sayı 1 den küçükse
        1 döndür
    bir_eksiği sayı ile 1 in farkı olsun
    alt bir_eksiği için faktöriyelini hesapla olsun
    sonucu sayı ile altın çarpımı olsun
    sonucu döndür

test "faktöriyel doğru hesaplanır"
    sonuç 5 için faktöriyelini hesapla olsun
    sonuç 120 ye eşit olmalı

sonuç 5 için faktöriyelini hesapla olsun
"5! = " ile sonuç yaz

Web

Yöntemli rotalar, kontrollü durum kodları, oturum, CSRF ve rol denetimi dilin yüzeyindedir. Yerelde dil çalıştır --deneysel-web ile denenir; üretimde Zee worker'ı TLS sonlandıran bir ters vekilin arkasında --web-proxy profiliyle koşar.

sunucu.dil
8080 kapısında sunucu başlat

GET "/" adresine istek geldiğinde
    "Merhaba, web!" yanıtını gönder

GET "/durum" adresine istek geldiğinde
    "çalışıyor" yanıtını gönder

GET "/hazir" adresine istek geldiğinde
    "hazır değil" yanıtını 503 durumuyla gönder
Not: Tarayıcıdaki çalışma alanı ağ yetkinliği vermez; web örnekleri yerel kurulumda çalışır.

Derleyici hattı

Her katman bir sözleşme taşır. Bağımlılık yönleri, public API, semantic regresyon korpusu, spec maddeleri ve sürüm artefaktları CI kapılarıyla denetlenir.

Kaynak→Sözcükleme→Dizim→Tür denetimi→Türlü HIR→Çalışma

Aynı derleyici yerel CLI'da, LSP sunucusunda ve bu sitedeki WebAssembly çalışma alanında koşar. Normatif davranış spec belgelerindedir.

Sınırlar

Zee henüz 1.0 değildir. Dil yüzeyi core freeze altındadır; yeni özellik ancak gerçek ürün ihtiyacı, minimal reproducer ve kalıcı kanıtla girer. Bugün kapalı tutulan alanlar bilinçlidir: örneğin değişkenden HTTP durum kodu üretmek V1'de kapalıdır.

Yol haritası →