npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

madura-lang

v1.0.1

Published

Bahasa pemrograman esoterik berbasis Bahasa Madura - Ngoding angguy bhasa Madura Kanak!

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-lang

Dari Source

git clone https://github.com/your-username/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:

  1. Fork repository ini
  2. Buat branch fitur (git checkout -b fitur-baru)
  3. Commit perubahan (git commit -am 'Tambah fitur baru')
  4. Push ke branch (git push origin fitur-baru)
  5. 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! 🚀