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

KuralDoğ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 yokx = 42x = 42;
Blok sonlandırıcıend functionend_function
if → then zorunluif x > 0 thenif x > 0
else ifelse if x > 0 thenelif x > 0
Döngüden çıkışexitbreak
Yorum-- yorum// yorum
Mantıksal operatörand, or, not&&, ||, !
Modulox mod yx % y

Tipler

İngilizceTürkçeAçıklama
numericsayısalTam sayı veya ondalık (derleyici seçer)
stringmetinMetin değeri
booleanmantıksaltrue / false
nonehiçbirDönüş değeri olmayan fonksiyon
nullboş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)

İngilizceTürkçe
function / end functionfonksiyon / fonksiyon sonu
if / then / elsekoşul / ise / yoksa
end ifkoşul sonu
loop / end loopdöngü / döngü sonu
returndöndür
printyaz
maingiriş
numericsayısal
stringmetin
booleanmantıksal
true / falsedoğru / yanlış
and / or / notve / veya / değil
struct / end structyapı / yapı sonu
spawn / end spawnbaşlat / başlat sonu
try / catch / end trydene / hata yakala / dene sonu
import / exportiçe_aktar / dışa_aktar
constsabit
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.

← Özelliklere Geri Dön Web IDE'de Deneyin →