@ohmyghann/maduralang
v2.1.0
Published
Bahasa pemrograman esoterik bertema bahasa Madura, di-transpile langsung ke JavaScript modern.
Maintainers
Readme
MaduraLang (.mdr)
Salam Settong Dhere! Bahasa Pemrograman Khas Madura.
MaduraLang adalah bahasa pemrograman esoterik (recreational language) modern dengan sintaksis berbasis kosa kata bahasa Madura. Dilengkapi paritas fitur ala JavaScript modern seperti Object-Oriented Programming (Class/OOP), Async/Await, Arrow Functions, Template Literals, Module System, dan Switch-Case, serta pustaka bawaan resmi data wilayah Madura (madura/wilayah).
🚀 Buka Web Playground • 📖 Tata Bahasa • 💡 Contoh Kode • 📦 Paket NPM • 🧩 Ekstensi VS Code
⚡ Sekilas Contoh Kode Modern (.mdr)
// OOP / Class
bhangsa Pendekar {
nyiptaaghi(nyama, senjata) {
dibi'.nyama = nyama;
dibi'.senjata = senjata;
}
serang() {
kocaaghi(`${dibi'.nyama} nyerang ngangghuy ${dibi'.senjata}!`);
}
}
sango sakera = anyar Pendekar("Sakera", "Calok Sakti");
sakera.serang();
// Asynchronous Programming
nyambi lakona ambeleData() {
kocaaghi("Gi' ngantos respon...");
sango respon = antose anyar Promise((resolve) => setTimeout(resolve, 500));
kocaaghi("Berres!");
}
antose ambeleData();📦 Instalasi & Penggunaan
1. Jalankan via npx (Tanpa Install)
npx @ohmyghann/maduralang run program.mdr2. Install Global via npm
npm install -g @ohmyghann/maduralang3. Perintah CLI
Jalankan Program Langsung
madura run program.mdr
# atau singkatnya:
mdr run program.mdrKompilasi ke JavaScript Standar
madura build program.mdr -o dist/program.js
node dist/program.jsMode Terminal Interaktif (REPL)
madura repl
# atau cukup:
maduraCek Data Wilayah Madura Langsung di Terminal
# Lihat ringkasan 4 kabupaten & 72 kecamatan
madura wilayah
# Cari kecamatan, kabupaten, atau kode pos
madura wilayah pamekasan
madura wilayah "gili iyang"
madura wilayah 69363🗺️ Pustaka Standar Wilayah Madura (madura/wilayah)
MaduraLang dilengkapi dengan pustaka bawaan resmi data geografis 4 Kabupaten dan 72 Kecamatan di Madura:
1. Digunakan di MaduraLang (.mdr):
ngala' { daftarKabupaten, daftarKecamatan, cariWilayah } dhari "madura/wilayah";
// Ambil seluruh kecamatan di Pamekasan
sango kec = daftarKecamatan("Pamekasan");
// Cari pintar (desa, kecamatan, kode pos, atau pulau)
sango hasil = cariWilayah("Api Tak Kunjung Padam");
kocaaghi(hasil[0].info);2. Digunakan di JavaScript / TypeScript Biasa:
Programmer yang membuat website React, Vue, Express, atau Node.js biasa juga bisa langsung mengimpor data wilayah Madura ini tanpa menulis kode MaduraLang:
import { daftarKecamatan, cariWilayah, ringkasanStatistik } from '@ohmyghann/maduralang/wilayah';
console.log(daftarKecamatan('Pamekasan'));
console.log(cariWilayah('69363')); // Cari berdasarkan Kode Pos📖 Pustaka Standar Kamus & Penerjemah (madura/kamus)
Kamus dwibahasa komprehensif dengan sistem Ondhaggha Bhasa (Tingkatan Bahasa):
enja-iya: Akrab/Santaiengghi-enten: Sopan/Tengahanengghi-bhunten: Halus/Krama Inggil
1. Digunakan di MaduraLang (.mdr):
ngala' { cariKata, terjemahKaMadura, ubahTingkat, parbhasan } dhari "madura/kamus";
// Terjemah santai vs halus
sango santai = terjemahKaMadura("saya makan", "enja-iya"); // "engkok ngakan"
sango halus = terjemahKaMadura("saya makan", "engghi-bhunten"); // "abdhina dha'ar"
// Ubah tingkatan kata otomatis
sango kataHalus = ubahTingkat("ngakan", "engghi-bhunten"); // "dha'ar"2. Digunakan di JavaScript / TypeScript Biasa:
import { terjemahKaMadura, cariKata, ubahTingkat, parbhasan } from '@ohmyghann/maduralang/kamus';
console.log(terjemahKaMadura('terima kasih')); // "mator sakalangkong"
console.log(ubahTingkat('be\'en', 'engghi-bhunten')); // "panjhenengngan"3. Cek Kamus Langsung di Terminal:
# Buka info kamus & peribahasa hari ini
madura kamus
# Cari tingkatan kata makan
madura kamus makan
# Terjemahkan kalimat
madura terjemah "saya tidur" --tingkat=halus
# Output: "abdhina sare"🗺️ Pemetaan Sintaks (MaduraLang vs JavaScript)
| Konsep Pemrograman | Kata Kunci MaduraLang | Ekivalen JavaScript | Makna Harfiah Madura |
| :--- | :--- | :--- | :--- |
| Variabel (let) | sango | let | Bekal / simpanan |
| Konstanta (const) | paggun | const | Tetap / tidak berubah |
| Cetak Konsol | kocaaghi | console.log | Katakan / sampaikan |
| Input Terminal | tanyaaghi | prompt / readline | Tanyakan / minta |
| Percabangan If | lamon | if | Kalau / jika |
| Else If | lamon enja' | else if | Kalau bukan |
| Else | laen | else | Lainnya / selain itu |
| For Loop | poter | for | Putar / perputaran |
| While Loop | sampek | while | Sampai / selama |
| Break | ambu | break | Berhenti / stop |
| Continue | terros | continue | Lanjut terus |
| Boolean True | bhender | true | Benar / betul |
| Boolean False | sala | false | Salah / keliru |
| Null | tadhe' | null | Habis / tidak ada |
| Undefined | ta_tao | undefined | Tidak tahu / belum jelas |
| Fungsi | lakona | function | Pekerjaan / tindakan |
| Return | pabali | return | Kembalikan |
| Class (OOP) | bhangsa | class | Golongan / wujud kelas |
| Inheritance | katoronan | extends | Keturunan / warisan |
| Constructor | nyiptaaghi | constructor | Menciptakan / merancang |
| Instance Baru | anyar | new | Baru |
| This (Self) | dibi' | this | Diri sendiri |
| Async | nyambi | async | Sambil lalu / jalan di latar |
| Await | antose | await | Menunggu hasil |
| Import | ngala' ... dhari | import ... from | Ambil ... dari |
| Export | baghi | export | Bagikan ke luar |
| Switch | pilih | switch | Pilih kondisi |
| Case | kadhadhiyan | case | Peristiwa / kejadian |
| Default | bawaan | default | Bawaan / selebihnya |
| Try | jhe_sossa | try | Jangan risau / coba dulu |
| Catch | ngarte | catch | Mengerti / menangkap |
| Throw | ngamok | throw | Mengamuk / melempar error |
| Finally | totop | finally | Penutup / selesai |
| Logika AND | ban / && | && | Dan |
| Logika OR | otaba / \|\| | \|\| | Atau |
| Logika NOT | benne / ! | ! | Bukan |
📂 Struktur Repositori
maduralang/
├── bin/
│ └── madura.js # Entry point CLI (executable)
├── src/
│ ├── core/ # Engine Kompiler
│ │ ├── tokens.ts # Daftar token kata kunci
│ │ ├── lexer.ts # Tokenizer / Lexical Analyzer
│ │ ├── ast.ts # Definisi Abstract Syntax Tree
│ │ ├── parser.ts # Recursive Descent Parser
│ │ └── codegen.ts # JavaScript Code Generator
│ ├── stdlib/ # Standard library bawaan
│ │ └── runtime.ts # Runtime helper (kocaaghi, tanyaaghi)
│ ├── cli/ # Implementasi CLI (run, build, repl)
│ └── index.ts # Export library
├── examples/ # Koleksi contoh program .mdr
├── tests/ # Suite pengujian otomatis (Vitest)
├── docs/ # Dokumentasi tata bahasa
├── vscode-extension/ # Ekstensi Syntax Highlighter VS Code
└── package.json🔌 Ekstensi Visual Studio Code
Kamu dapat memasang ekstensi pewarnaan sintaks (syntax highlighting) untuk file .mdr:
- Salin folder
vscode-extensionke folder ekstensi VS Code lokal:- Windows:
%USERPROFILE%\.vscode\extensions\maduralang-vscode - Linux/macOS:
~/.vscode/extensions/maduralang-vscode
- Windows:
- Muat ulang (reload) VS Code kamu.
- Semua file berekstensi
.mdrakan otomatis berwarna rapi dan dikenali sebagai MaduraLang!
🧪 Menjalankan Pengujian
npm testSemua 11 pengujian unit mencakup:
- Tokenisasi kosa kata tunggal & majemuk
- Pembuatan pohon sintaks (AST)
- Keabsahan JavaScript yang dihasilkan
- Eksekusi kode secara dinamis (end-to-end)
🤝 Kontribusi
Tertarik menambahkan idiom Madura lainnya atau meningkatkan performa compiler? Silakan baca panduan di CONTRIBUTING.md. Pull Request sangat diterima!
👨💻 Pengembang (Author)
Dibuat dengan ❤️ oleh OhMyGhann.
📜 Lisensi
Didistribusikan di bawah Lisensi MIT. Lihat LICENSE untuk informasi lebih lanjut.
Mator sakalangkong! Salam settong dhere!
