MELP Dil Referansı
Kanonik kaynak: ORTAK/dil/ |
Versiyon: Stage 1 |
Güncelleme: 2026-04
Derleme Yolu
Stage 1'de .mlp dosyaları normalizer sarmalayıcısı
üzerinden derlenir. Kullanıcı yazdığı kaynak (boşluklu anahtar kelimeler) önce
iç temsile (pmlp) çevrilir, ardından derleyici bu
iç temsili işler.
# Çalıştır
bin/run_melp program.mlp
# LLVM IR görüntüle
bin/run_melp program.mlp --ir
# Native binary üret
bin/melp_compiler program.mlp -o program
Temel Kurallar
| Kural | Doğru ✅ | Yanlış ❌ |
|---|---|---|
| Parametre ayırıcı | fonksiyon(a; b; c) | fonksiyon(a, b, c) |
| Dizi literali | [1; 2; 3] | [1, 2, 3] |
| Satır sonu yok | x = 42 | x = 42; |
| Blok sonlandırıcı | fonksiyon sonu | fonksiyon_sonu |
| koşul → ise zorunlu | koşul x > 0 ise | koşul x > 0 |
| değilse koşul | değilse koşul x > 0 ise | elif x > 0 |
| Döngüden çıkış | çık | break |
| Yorum | -- yorum | // yorum |
| Mantıksal operatör | ve, veya, değil | &&, ||, ! |
| Modulo | x mod y | x % y |
Tipler
| İngilizce | Türkçe | Açıklama |
|---|---|---|
numeric | sayısal | Tam sayı veya ondalık (derleyici seçer) |
string | metin | Metin değeri |
boolean | mantıksal | true / false |
none | hiçbir | Dönüş değeri olmayan fonksiyon |
null | boş | Null / boş değer |
sayısal x = 42
sayısal pi = 3,14
metin isim = "MELP"
mantıksal tamam = doğru
metin boşDeğer = boş
Değişkenler
sayısal sayaç = 10
metin dil = "MELP"
mantıksal aktif = doğru
-- Yeniden atama — tip anahtarı yok
sayaç = sayaç + 1
dil = "Türkçe MELP"
-- Sabit
sabit sayısal MAX = 1000
sabit metin UYGULAMA = "MELP"
Operatörler
Aritmetik
x + y
x - y
x * y
x / y
x mod y -- modulo (% değil)
Karşılaştırma
x == y
x != y
x < y
x > y
x <= y
x >= y
Mantıksal
x ve y
x veya y
değil x
Metin Birleştirme
metin tam = "Merhaba, " + isim + "!"
Koşullar
koşul puan >= 90 ise
yazdır("A")
değilse koşul puan >= 80 ise
yazdır("B")
yoksa
yazdır("C")
koşul sonu
Döngüler
Koşullu Döngü (while-stili)
sayısal i = 0
döngü i < 10
yazdır(i)
i = i + 1
döngü sonu
Sonsuz Döngü
döngü
koşul bitti ise çık
işle()
döngü sonu
Her Biri İçin (for each)
sayısal[] sayılar = [1; 2; 3; 4; 5]
her n içinde sayılar
yazdır(n)
her sonu
Fonksiyonlar
-- Dönüş değeri olan
sayısal fonksiyon topla(sayısal a; sayısal b)
döndür a + b
fonksiyon sonu
-- Dönüş değeri olmayan
hiçbir fonksiyon selamla(metin isim)
yazdır("Merhaba, " + isim)
fonksiyon sonu
-- Çağrım
sayısal sonuç = topla(3; 5)
selamla("Dünya")
Lambda
sayısal iki_kat = lambda(sayısal x)
döndür x * 2
lambda sonu
yazdır(iki_kat(5)) -- 10
Struct
yapı Nokta
sayısal x
sayısal y
yapı sonu
Nokta n = Nokta { x: 10; y: 20; }
yazdır(n.x)
Listeler
metin[] isimler = ["Ali"; "Can"; "Ece"]
yazdır(isimler[0]) -- Ali
yazdır(isimler.length) -- 3
-- Ekle
isimler.push("Duru")
Hata Yönetimi
dene
sayısal sonuç = riskliİşlem()
yazdır(sonuç)
hata yakala
yazdır("Hata: " + hata.mesaj)
sonunda
temizle()
dene sonu
Fırlat / Yakala
-- Hata fırlatan fonksiyon
sayısal fonksiyon böl(sayısal a; sayısal b)
koşul b == 0 ise
fırlat "Sıfıra bölme hatası"
koşul sonu
döndür a / b
fonksiyon sonu
Eşzamanlılık — Spawn & Channel
-- Başlat: paralel görev
başlat
yazdır("Paralel çalışıyor")
başlat sonu
-- Eşzamansız / Bekle
eşzamansız fonksiyon veriGetir()
metin veri = bekle disktenYükle("veri.txt")
yazdır(veri)
fonksiyon sonu
Türkçe Anahtar Kelimeler (Özet)
| İngilizce | Türkçe |
|---|---|
function / end function | fonksiyon / fonksiyon sonu |
if / then / else | koşul / ise / yoksa |
end if | koşul sonu |
loop / end loop | döngü / döngü sonu |
return | döndür |
print | yaz |
main | giriş |
numeric | sayısal |
string | metin |
boolean | mantıksal |
true / false | doğru / yanlış |
and / or / not | ve / veya / değil |
struct / end struct | yapı / yapı sonu |
spawn / end spawn | başlat / başlat sonu |
try / catch / end try | dene / hata yakala / dene sonu |
import / export | içe_aktar / dışa_aktar |
const | sabit |
exit | çık |
Yeni Dil Ekleme
MELP derleyicisi herhangi bir dil için minimal bir JSON yapısı ile genişletilebilir.
-- ORTAK/dil/<dil_kodu>/keywords.json
{
"schema_version": "1.0.0",
"meta": {
"name": "Español",
"lang_id": "spanish",
"code": "es",
"enabled": true
},
"keywords": {
"function": "función",
"end function": "fin función",
"print": "imprimir",
"if": "si",
"then": "entonces",
"return": "retornar"
}
}
Bu dosya oluşturulduğunda MELP derleyicisi İspanyolca kaynak dosyaları herhangi ek derleme adımı gerektirmeden işleyebilir. Algoritma değişmez.