Ana SayfaSyntax

Expression Katmanı için Türkçe Öneriler

👤 c0mblasterR 👁 33 💬 0 yanıt

💡 Sözdizimi Genişletme Önerileri


Başlangıç

Hazer v0.3.0 itibarıyla for, if, while, def gibi compound statement katmanındaki anahtar kelimeler başarıyla Türkçeleştirilmiş durumda. Ancak aynı anahtar kelimelerin expression katmanındaki karşılıkları henüz kapsam dışında. Bu durum, özellikle Python'un en sık kullanılan yapılarından bazılarını Türkçe syntaxla yazmayı engelliyor.

Aşağıda, pratikte en çok ihtiyaç duyulan üç eklentiyi ve bunların python.gram üzerindeki karşılıklarını paylaşıyorum.


1. 🔁 Comprehension & Generator Expression Desteği

Sorun

ozyinele ve içinde yalnızca compound for döngüsü için tanımlı. Aşağıdaki yapılar şu an syntax hatası veriyor:

# List comprehension
kareler = [x * x for x in sayilar]

# Generator (sum, any, all ile)
toplam = sum(k["fiyat"] * k["adet"] for k in sepet)
var_mi = any(k in BUYUK for k in sifre)

Öneri

comp_for ve comp_if kurallarına Türkçe alternatif eklenmesi:

# Hedef sözdizimi
kareler = [x * x ozyinele x içinde sayilar]
toplam  = sum(k["fiyat"] * k["adet"] ozyinele k içinde sepet)
var_mi  = any(k içinde BUYUK ozyinele k içinde sifre)

python.gram Hedef Kurallar

comp_for:
    | ('for' | 'ozyinele') star_targets ('in' | 'içinde') ...
comp_if:
    | ('if' | 'eğer') ...

2. ❓ Ternary (Koşullu) İfade Desteği

Sorun

Python'un tek satırlık koşullu ifadesi (x if koşul else y) şu an Hazer'de Türkçe karşılığı olmadan kullanılıyor. eğer ve değilse yalnızca statement katmanında tanımlı olduğundan expression içinde syntax hatası veriyor:

# Çalışmıyor
mola_turu = "Uzun Mola" eğer sayac % 4 == 0 değilse "Kısa Mola"

Öneri

ternary / named_expr kuralına Türkçe alternatif eklenmesi:

# Hedef sözdizimi
mola_turu = "Uzun Mola" eğer sayac % 4 == 0 değilse "Kısa Mola"
durum_metni = "Geçti" eğer puan >= 50 değilse "Kaldı"

python.gram Hedef Kural

ternary:
    | disjunction ('if' | 'eğer') disjunction ('else' | 'değilse') ...

3. 🔍 Membership in Operatörü Desteği

Sorun

içinde anahtar kelimesi yalnızca for ... in ... iterasyon yapısı için tanımlı (in(for) olarak belgelenmiş). Ancak Python'da in iki farklı bağlamda kullanılıyor:

Kullanım Tür Hazer Durumu
for x in liste iterasyon ozyinele x içinde liste
"a" in "abc" üyelik testi ❌ karşılık yok
# Çalışmıyor
eğer anahtar içinde metin ise   # membership test
eğer eleman içinde liste ise    # membership test

Öneri

comparison kuralındaki 'in' operatörüne Türkçe alternatif eklenmesi:

# Hedef sözdizimi
eğer anahtar içinde metin ise
eğer eleman içinde liste ise
eğer degil anahtar içinde metin ise   # not in karşılığı

python.gram Hedef Kural

comparison:
    | ... ('in' | 'içinde') ...
    | ... ('not' | 'degil') ('in' | 'içinde') ...

Not: Bu değişiklik ozyinele/içinde compound kuralıyla çakışmaz çünkü parser bağlamı (for bağlamı vs. comparison bağlamı) PEG kuralları gereği ayrı ayrı işleniyor.


Özet Tablo

Öneri python.gram Kuralı Öncelik
Comprehension / Generator comp_for, comp_if 🔴 Yüksek
Ternary ifade ternary 🟡 Orta
Membership in comparison 🔴 Yüksek

Bu üç eklenti tamamlandığında Hazer kodu, Python'un expression katmanında da neredeyse tamamen Türkçe yazılabilir hale gelecek.


Görüş ve önerilerinizi bekliyorum.

Henüz yanıt yok. İlk yanıtı sen yaz!
Yanıt yazmak için giriş yap.