madura-lang
v1.0.1
Published
Bahasa pemrograman esoterik berbasis Bahasa Madura - Ngoding angguy bhasa Madura Kanak!
Maintainers
Readme
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 (setelah dipublish)
npm install -g madura-langDari Source
git clone https://github.com/your-username/madura-lang.git
cd madura-lang
npm install
npm linkPenggunaan
Jalankan file .mdr:
madura-cli namafile.mdrAtau jika belum di-link:
node cli.js namafile.mdrKamus Bahasa
Deklarasi Variabel
badha→ let (variabel bisa diubah)ngangguy→ var (variabel bisa diubah)tetep/konce→ const (variabel konstan)
Kondisional
mon→ iftape→ elsetape mon→ else ifgante→ switchbila→ casebiasana/laenna→ default
Fungsi
angguy→ functionpabeli→ returnnyetak/pa'berri'en→ console.log
Perulangan
saterossa→ whilebitong→ forjijji'i→ for...ofambu→ breakterros→ continue
Nilai Boolean & Null
bhendher→ truesala→ falsekosong→ nulltade'→ 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→ trytangkep→ catchpokokna→ finallyontallaghi→ throw
Contoh Program
Hello World
nyetak "Halo, Dunia!"Variabel dan Operasi
badha umur = 25
tetep taonLahir = 1999
nyetak "Umur: " + umur
nyetak "Taon Lahir: " + taonLahirKondisional
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: " + hasilArray dan Object
// Array
badha buah = ["mangga", "rambutan", "durian"]
nyetak buah[0]
// Object
badha orang = {
jeneng: "Ahmad",
umur: 30,
asal: "Sumenep"
}
nyetak orang.jenengSwitch 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 # DokumentasiDevelopment
Build Grammar
Grammar akan di-compile otomatis saat menjalankan program menggunakan PEG.js.
Testing
node cli.js contoh.mdrContributing
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
Terimakasih
Terima kasih kepada komunitas Madura dan semua yang mendukung pelestarian bahasa daerah melalui teknologi!
Madura Lang - Ngoding angguy bhasa Madura Kanak! 🚀
