MELP Dil Referansı
Kanonik kaynak: ORTAK/dil/ |
Versiyon: Stage 1 |
Güncelleme: 2026-03
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ı | func(a; b; c) | func(a, b, c) |
| Dizi literali | [1; 2; 3] | [1, 2, 3] |
| Satır sonu yok | x = 42 | x = 42; |
| Blok sonlandırıcı | end function | end_function |
| if → then zorunlu | if x > 0 then | if x > 0 |
| else if | else if x > 0 then | elif x > 0 |
| Döngüden çıkış | exit | break |
| Yorum | -- yorum | // yorum |
| Mantıksal operatör | and, or, not | &&, ||, ! |
| 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 |
numeric x = 42
numeric pi = 3,14
string name = "MELP"
boolean ok = true
string empty = null
-- Türkçe karşılıkları:
-- 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
numeric count = 10
string lang = "MELP"
boolean enabled = true
-- Yeniden atama — tip anahtarı yok
count = count + 1
lang = "Turkish MELP"
-- Sabit
const numeric MAX = 1000
const string APP = "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 and y
x or y
not x
String Birleştirme
string full = "Hello, " + name + "!"
Koşullar
if score >= 90 then
print("A")
else if score >= 80 then
print("B")
else
print("C")
end if
Döngüler
Koşullu Döngü (while-style)
numeric i = 0
loop i < 10
print(i)
i = i + 1
end loop
Sonsuz Döngü
loop
if done then exit
process()
end loop
For Each
list numbers = [1; 2; 3; 4; 5]
for each n in numbers
print(n)
end for
Fonksiyonlar
-- Dönüş değeri olan
numeric function add(a; b)
return a + b
end function
-- Dönüş değeri olmayan
none function greet(string name)
print("Hello, " + name)
end function
-- Çağrım
numeric result = add(3; 5)
greet("World")
Lambda
numeric double = lambda(x)
return x * 2
end lambda
print(double(5)) -- 10
Struct
struct Point
numeric x
numeric y
end struct
Point p = Point { x: 10; y: 20 }
print(p.x)
Listeler
list names = ["Ali"; "Can"; "Ece"]
print(names[0]) -- Ali
print(names.length) -- 3
-- Append
names.append("Duru")
Hata Yönetimi
try
numeric result = riskyOperation()
print(result)
catch error
print("Hata: " + error.message)
finally
cleanup()
end try
Result Tipi
-- Başarı veya hata döndüren fonksiyon
Result function divide(numeric a; numeric b)
if b == 0 then
throw "Sıfıra bölme hatası"
end if
return a / b
end function
Eşzamanlılık — Spawn & Channel
-- Spawn: paralel görev başlat
spawn
print("Paralel çalışıyor")
end spawn
-- Async/Await
async function fetchData()
string data = await loadFromDisk("data.txt")
print(data)
end function
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.