Expression Katmanı için Türkçe Öneriler
💡 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çindecompound kuralıyla çakışmaz çünkü parser bağlamı (forbağlamı vs.comparisonbağ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.