Dil rehberi

Soz söz dizimini çalışan örneklerle öğren.

Söz v0.3.0 dil çekirdeği: sözlükler, dene/yakala, güvenli dosya API'leri, aktar modülleri ve mevcut temel söz dizimi.

ASCII anahtar kelimeler: Soz; eger, degilse, islev ve don gibi Türkçe sözcüklerin ASCII biçimlerini kabul eder. eğer, değilse, işlev ve dön anahtar kelime değildir. Metinlerde Türkçe karakter kullanabilirsiniz.

Söz dizimi

Yorumlar

# karakterinden satır sonuna kadar olan bölüm çalıştırılmaz. Yorumları niyeti açıklamak için kullanın.

yorumlar.soz
# Bu satir calistirilmaz.yaz("Kod calisti")  # Satir sonu yorumu
Çıktı
Kod calisti

Söz dizimi

Değişkenler

Ayrı bir tanımlama anahtar kelimesi yoktur. İlk atama değişkeni oluşturur, sonraki atamalar günceller.

degiskenler.soz
sayac = 0sayac = sayac + 1yaz(sayac)
Çıktı
1

Söz dizimi

Sayılar

Tam ve ondalıklı gösterimler aynı sayı türünde tutulur; .5 gibi başında sıfır olmayan yazım geçerlidir.

sayilar.soz
ogrenci_sayisi = 32ortalama = 87.5yarim = .5yaz(ortalama + yarim)
Çıktı
88

Söz dizimi

Metinler

Metinler çift tırnakla yazılır. İçerik UTF-8 olabilir; \n, \t, \" ve \\ gibi kaçışlar desteklenir.

metinler.soz
isim = "Deniz"mesaj = "Merhaba dünya"yaz(mesaj + ", " + isim)
Çıktı
Merhaba dünya, Deniz

Söz dizimi

Boolean

Mantık sabitleri dogru ve yanlis biçimindedir. ve, veya ve degil kısa devreli mantık işlemleridir.

boolean.soz
aktif = dogruyetkili = yanlisyaz(aktif ve degil yetkili)
Çıktı
dogru

Söz dizimi

Boş değer

bos değer yokluğu temsil eder. Koşullarda bos, yanlis, 0, boş metin ve boş liste false kabul edilir.

bos-deger.soz
sonuc = boseger degil sonuc:    yaz("Sonuc yok")
Çıktı
Sonuc yok

Söz dizimi

Operatörler

Söz aritmetik, karşılaştırma ve mantık operatörlerini; %, // ve ** işlemlerini destekler.

operatorler.soz
yaz(10 % 3)yaz(10 // 3)yaz(2 ** 4)yaz(2 ** 3 ** 2)yaz(-10 // 3)yaz(-10 % 3)
Çıktı
1
3
16
512
-4
2

Söz dizimi

Koşullar

eger ile başlayın, sıfır veya daha fazla yoksa dalı ekleyin ve isteğe bağlı degilse ile bitirin.

kosullar.soz
puan = 75 eger puan >= 85:    yaz("Cok iyi")yoksa puan >= 50:    yaz("Gecti")degilse:    yaz("Kaldi")
Çıktı
Gecti

Söz dizimi

While döngüsü

iken döngüsü, koşul doğru kaldığı sürece girintili gövdeyi çalıştırır.

while-dongusu.soz
i = 0iken i < 3:    yaz(i)    i = i + 1
Çıktı
0
1
2

Söz dizimi

Tekrar döngüsü

tekrar ... icinde ... yalnızca liste üzerinde dolaşır. aralik bir sayı listesi üretir.

tekrar-dongusu.soz
tekrar i icinde aralik(0, 3):    yaz(i)
Çıktı
0
1
2

Söz dizimi

kir

kir, söz dizimsel olarak içinde bulunduğu en yakın döngüyü bitirir.

kir.soz
tekrar i icinde aralik(0, 10):    eger i == 3:        kir    yaz(i)
Çıktı
0
1
2

Söz dizimi

devam

devam, en yakın döngünün kalan gövdesini atlayıp sonraki tura geçer.

devam.soz
tekrar i icinde aralik(0, 5):    eger i == 2:        devam    yaz(i)
Çıktı
0
1
3
4

Söz dizimi

İşlevler

islev ile parametreli fonksiyon tanımlayın. Argüman sayısı parametre sayısıyla eşleşmelidir.

islevler.soz
islev topla(a, b):    don a + b yaz(topla(5, 3))
Çıktı
8

Söz dizimi

don

don ifade bir değer döndürür. Yalın don veya sona ulaşan işlev bos döndürür; don yalnız işlev içinde kullanılabilir.

don.soz
islev selamla(isim):    eger isim == "":        don    don "Merhaba " + isim yaz(selamla("Soz"))
Çıktı
Merhaba Soz

Söz dizimi

Listeler

Listeler farklı Soz değerlerini tutabilir. Atama kopya üretmez; alias'lar aynı liste mutasyonunu paylaşır.

listeler.soz
sayilar = [10, 20, 30]ikinci = sayilarekle(ikinci, 40)yaz(sayilar)
Çıktı
[10, 20, 30, 40]

Söz dizimi

İndeks okuma

Liste indeksleri sıfırdan başlar. Negatif, ondalık veya sınır dışı indeks çalışma zamanı hatasıdır.

indeks-okuma.soz
sayilar = [10, 20, 30]yaz(sayilar[1])
Çıktı
20

Söz dizimi

İndeks güncelleme

Bir liste elemanına atama yapabilir; iç içe indeks hedeflerini de güncelleyebilirsiniz.

indeks-guncelleme.soz
sayilar = [10, 20, 30]sayilar[1] = 50matris = [[1, 2], [3, 4]]matris[1][0] = 8yaz(sayilar)yaz(matris)
Çıktı
[10, 50, 30]
[[1, 2], [8, 4]]

Söz dizimi

Built-in fonksiyonlar

v0.3.0; G/Ç, dönüşüm, tür, liste, sözlük, metin ve güvenli dosya işlemlerini kapsayan 25 yerleşik fonksiyon sunar.

built-in-fonksiyonlar.soz
parcalar = bol("bir,iki,uc", ",")ekle(parcalar, "soz")yaz(birlestir(parcalar, " | "))
Çıktı
bir | iki | uc | soz

Söz dizimi

Sözlükler

Metin literal anahtarlı sözlükler ekleme sırasını korur. Atama kopya üretmez; alias'lar aynı mutasyonları paylaşır.

sozlukler.soz
kullanici = {"isim": "Ada", "notlar": [80, 90]}kullanici["sehir"] = "Istanbul"yaz(kullanici["isim"])yaz(anahtarlar(kullanici))
Çıktı
Ada
[isim, notlar, sehir]

Söz dizimi

dene/yakala ve hata değeri

Beklenen runtime hataları yakalanabilir. hata yalnızca yakala bloğunun yerel kapsamındadır; güvenlik limitleri ile lexer/parser hataları fatal kalır.

hata-yonetimi.soz
dene:    sayi("abc")yakala hata:    yaz(tur(hata))    yaz(metin(hata))
Çıktı
hata
Gecersiz sayi metni: abc

Söz dizimi

Güvenli dosya okuma ve yazma

Relative yollar sabit sandbox kökü içinde kalır. Yazma create-only'dir; mevcut dosya ancak üçüncü dogru argümanıyla değiştirilir.

guvenli-dosyalar.soz
dosya_yaz("sonuc.txt", "42\n")yaz(dosya_oku("sonuc.txt"))dosya_yaz("sonuc.txt", "43\n", dogru)
Çıktı
42

Söz dizimi

Çok dosyalı programlar

aktar yalnız dosya başındaki kesintisiz import bölümünde kullanılır. Relative .soz yollar import eden dosyaya göre çözülür; alias, namespace ve olarak söz dizimi yoktur.

moduller.soz
aktar "lib/matematik.soz" yaz(topla(5, 3))
Çıktı
8