SakeraLang dan MaduraLang adalah bahasa pemrograman esoterik yang menggunakan sintaksis Bahasa Madura, memungkinkan penulisan kode seperti deklarasi variabel (sango), percabangan (mon/laen), dan output (toles) dalam bahasa daerah. Proyek ini bertujuan mengenalkan coding dengan nuansa lokal dan memudahkan pembelajaran dasar pemrograman melalui pendekatan bahasa daerah. Bahasa pemrograman ini diciptakan oleh Ahda Firly Barori.
Madura Lang 🌴
Bahasa pemrograman esoterik berbasis Bahasa Madura - membawa cita rasa lokal ke dalam dunia pemrograman!
Deskripsi
Madura Lang adalah bahasa pemrograman yang terinspirasi dari Bahasa Madura, bahasa daerah yang digunakan di pulau Madura dan sekitarnya (Sumenep, Bangkalan, Pamekasan, dan Sampang). Bahasa ini dirancang untuk membuat pemrograman lebih dekat dengan budaya lokal.
Instalasi
Dari NPM
npm install -g madura-lang
Dari Source
git clone https://github.com/adhfry/madura-lang.git cd madura-lang npm install npm link
Penggunaan
Jalankan file .mdr:
madura-cli namafile.mdr
Atau jika belum di-link:
node cli.js namafile.mdr
Kamus Bahasa
Deklarasi Variabel
- badha → let (variabel bisa diubah)
- ngangguy → var (variabel bisa diubah)
- tetep / konce → const (variabel konstan)
Kondisional
- mon → if
- tape → else
- tape mon → else if
- gante → switch
- bila → case
- biasana / laenna → default
Fungsi
- angguy → function
- pabeli → return
- nyetak / pa'berri'en → console.log
Perulangan
- saterossa → while
- bitong → for
- jijji'i → for...of
- ambu → break
- terros → continue
Nilai Boolean & Null
- bhendher → true
- sala → false
- kosong → null
- tade' → undefined
Operator Perbandingan
- paddhang → === (sama persis)
- pada bi → == (sama dengan)
- ta' paddhang → !== (tidak sama persis)
- ta' pada → != (tidak sama)
- lebbi dhari → > (lebih dari)
- korang dhari → < (kurang dari)
Operator Logika
- sareng → && (dan)
- tabe → || (atau)
- tak → ! (tidak/bukan)
Exception Handling
- coba → try
- tangkep → catch
- pokokna → finally
- ontallaghi → throw
Contoh Program
Hello World
nyetak "Halo, Dunia!"
Variabel dan Operasi
badha umur = 25 tetep taonLahir = 1999 nyetak "Umur: " + umur nyetak "Taon Lahir: " + taonLahir
Kondisional
badha nilai = 85
mon (nilai lebbi dhari 90) {
nyetak "Nilai A"
} tape mon (nilai lebbi dhari 75) {
nyetak "Nilai B"
} tape {
nyetak "Nilai C"
}
Perulangan
// While Loop
badha i = 0
saterossa (i korang dhari 5) {
nyetak "Hitungan: " + i
i = i + 1
}
// For Loop
bitong (badha j = 0; j korang dhari 3; j = j + 1) {
nyetak "For loop: " + j
}
// For...of Loop
badha angka = [1, 2, 3, 4, 5]
jijji'i (badha num dhari angka) {
nyetak "Angka: " + num
}
Fungsi
angguy tambah(a, b) {
pabeli a + b
}
badha hasil = tambah(5, 3)
nyetak "Hasil: " + hasil
Array dan Object
// Array
badha buah = ["mangga", "rambutan", "durian"]
nyetak buah[0]
// Object
badha orang = {
jeneng: "Ahmad",
umur: 30,
asal: "Sumenep"
}
nyetak orang.jeneng
Switch Statement
badha hari = 3
gante (hari) {
bila 1:
nyetak "Senin"
ambu
bila 2:
nyetak "Selasa"
ambu
bila 3:
nyetak "Rabu"
ambu
biasana:
nyetak "Hari lain"
}
Try-Catch
coba {
badha hasil = 10 / 0
nyetak hasil
} tangkep (e) {
nyetak "Kasalahan: " + e
} pokokna {
nyetak "Rampong"
}
Program Lengkap
// Fungsi untuk menghitung faktorial
angguy faktorial(n) {
mon (n korang dhari 2) {
pabeli 1
}
pabeli n * faktorial(n - 1)
}
// Fungsi untuk cek bilangan prima
angguy isPrima(num) {
mon (num korang dhari 2) {
pabeli sala
}
bitong (badha i = 2; i * i lebbi dhari num tabe i * i paddhang num; i = i + 1) {
mon (num % i paddhang 0) {
pabeli sala
}
}
pabeli bhendher
}
nyetak "=== Program Madura Lang ==="
badha angka = 5
nyetak "Faktorial " + angka + " = " + faktorial(angka)
badha cekPrima = 17
mon (isPrima(cekPrima)) {
nyetak cekPrima + " adalah bilangan prima"
} tape {
nyetak cekPrima + " bukan bilangan prima"
}
Fitur
| Fitur | Keterangan |
|---|---|
| Deklarasi variabel | badha / ngangguy / tetep / konce (let / var / const) |
| Tipe data | number, string, boolean, null, undefined |
| Array & Object literal | Array: [..], Object: {..} |
| Operator aritmatika | +, -, *, /, % |
| Operator perbandingan | ===, ==, !==, !=, >, < |
| Operator logika | &&, |
| Kondisional | mon / tape / tape mon (if / else if / else) |
| Switch-case | gante / bila / biasana (switch / case / default) |
| Perulangan | saterossa, bitong, jijji'i (while, for, for...of) |
| Break & Continue | ambu (break), terros (continue) |
| Fungsi & return | angguy (function), pabeli (return) |
| Exception handling | coba / tangkep / pokokna, ontallaghi (throw) |
| Member access | object.property |
| Array access | array[index] |
| Function calls | namaFungsi(arg1, arg2) |
| Komentar | // komentar satu baris |
| String escaping | Gunakan escape sequence dalam string (mis. " \n) |
Struktur Proyek
madura-lang/ ├── cli.js # CLI entry point ├── interpreter.js # Runtime interpreter ├── madura.pegjs # PEG.js grammar ├── kamus.txt # Kamus referensi ├── contoh.mdr # File contoh ├── package.json # NPM config └── README.md # Dokumentasi
Development
Build Grammar
Grammar akan di-compile otomatis saat menjalankan program menggunakan PEG.js.
Testing
node cli.js contoh.mdr
Contributing
Kontribusi sangat welcome! Silakan:
- Fork repository ini
- Buat branch fitur (git checkout -b fitur-baru)
- Commit perubahan (git commit -am 'Tambah fitur baru')
- Push ke branch (git push origin fitur-baru)
- Buat Pull Request
Roadmap
- Import/Export modules
- Class dan OOP
- Async/Await
- Standard library
- REPL mode
- Debugger
- VS Code extension
Lisensi
MIT License - lihat file LICENSE
Author
Ahda Firly Barori
Madura Lang - Ngoding angguy bhasa Madura Kanak! 🚀