@rafxzflow/indoscript
v1.2.8
Published
JavaScript nganggo basa Jawa lan Indonesia
Maintainers
Readme
JawaScript
JavaScript nganggo basa Jawa.
JawaScript adalah transpiler kecil yang mengubah berkas .jawa menjadi JavaScript melalui tiga tahap: tokenizer → parser → emitter, lalu mengeksekusinya dengan Node.js. Versi ini tidak lagi memakai regex pengganti kata sederhana — bahasa diparsing sungguhan sehingga string/komentar tak pernah salah diubah, dan kamus kata terpusat di satu berkas.
Install
npm install -g @arwildo/jawascriptUsage
Buat file hello.jawa:
ono x = 10;
ono y = 20;
tampilno(x + y);
yen (x < y) {
tampilno("x luwih cilik");
} ora {
tampilno("x luwih gedhe");
}Jalankan:
jawa hello.jawaOutput:
30
x luwih cilikContoh
kelas Kethek {
constructor(jeneng) {
iki.jeneng = jeneng;
}
mangan(kg) {
tampilno(iki.jeneng + " mangan " + kg + " kg");
}
}
ono si = anyar Kethek("Kiki");
si.mangan(2);
sambil fungsi jalur() {
enteni janji((selesai) => setTimeout(selesai, 10));
tampil.serat("selesai");
}
jalur();Contoh lain tersedia di folder examples/: oop, async, error, switch, fors, console, web (butuh browser).
Keyword
Semua kata terpusat di src/keywords.js — untuk ganti/tambah kata cukup edit berkas itu saja. Tabel ringkas juga ada di keywords.md.
Dasar
| Jawa | JavaScript |
| ------------- | ------------- |
| ono | let |
| paten | const |
| tampilno | console.log |
| yen | if |
| ora yen | else if |
| ora | else |
| nganti | while |
| kanggo | for |
| saka | of (for...of) |
| ing | in (for...in) |
| fungsi | function |
| balekno | return |
| mandheg | break |
| lanjutna | continue |
| buang | throw |
| bener | true |
| salah | false |
Operator kata
Selain simbol JS (==, ===, =, !, &&, ||, <, >), operator juga bisa ditulis dalam kata:
| Jawa | JavaScript |
| -------------- | ---------- |
| lan | && |
| utawa | \|\| |
| padhaKaro | === |
| oraPadha | !== |
| gedhePadha | >= |
| cilikPadha | <= |
| gedhe | > |
| cilik | < |
Fungsi built-in
| Jawa | JavaScript |
| ------------------- | ----------- |
| teksDadiInteger | parseInt |
| teksDadiDesimal | parseFloat |
Kelas & OOP
| Jawa | JavaScript |
| ----------- | ---------- |
| kelas | class |
| warisan | extends |
| anyar | new |
| iki | this |
| konstruktor | constructor |
Async
| Jawa | JavaScript |
| ---------- | ---------- |
| sambil | async |
| enteni | await |
Error handling
| Jawa | JavaScript |
| ----------- | ---------- |
| nyoba | try |
| nompo | catch |
| akhire | finally |
| buang | throw |
Lainnya
| Jawa | JavaScript |
| -------- | ----------- |
| milih | switch |
| kasus | case |
| asale | default |
| suwung | null |
| rajelas | undefined |
Catatan: operator memakai simbol JS aslinya dan tidak diterjemahkan —
==,===,!==,!=,!,=,&&,||,<,>, dst. ditulis persis seperti JavaScript, tapi ada juga padanan katanya (lan,utawa,padhaKaro, dst., lihat tabel di atas). Arrow=>juga dipakai apa adanya, misal(e) => tampilno(e).Belum didukung:
typeof,instanceof, template literal, destructuring, getter/setter.
Member: console & DOM
Kamus member (MEMBERS di src/keywords.js) memetakan objek/method umum:
| Jawa | JavaScript |
| --------------------- | --------------------- |
| tampil.serat | console.log |
| tampil.ngadat | console.error |
| tampil.awas | console.warn |
| tampil.kabar | console.info |
| tampil.tabel | console.table |
| dokumen | document |
| layar | window |
| janji | Promise |
| kirim | fetch |
| jupuk | querySelector |
| jupukKabeh | querySelectorAll |
| jupukId | getElementById |
| gawe | createElement |
| tempel | appendChild |
| rungokno | addEventListener |
| teksDadiInteger | parseInt |
| teksDadiDesimal | parseFloat |
| konstruktor | constructor |
Contoh: dokumen.jupuk("#tombol").rungokno("click", (e) => { ... }) → document.querySelector("#tombol").addEventListener("click", ...).
Contoh di examples/ yang memakai DOM (web.jawa) memerlukan browser; yang lain berjalan di Node.js.
Cara Kerja
- Tokenizer (
src/tokenizer.js) memecah.jawamenjadi token (identifier, keyword, angka, string, operator). Kata yang mirip dicocokkan paling panjang dulu, misaltampilnovstampil, supaya tidak keliru. - Parser (
src/parser.js) membangun AST dengan recursive descent. Percabangan, perulangan, fungsi, class/OOP, async/await, error handling, switch, dan object/array benar-benar diparsing. - Emitter (
src/emitter.js) mengubah AST menjadi JavaScript, lalu dieksekusi.
Mengganti kata cukup di src/keywords.js; tokenizer/parser/emitter otomatis mengikuti tanpa perubahan lain.
JawaScript adalah project eksperimen yang dibuat untuk bersenang senang dan belajar bahasa jawa secara secara programming.
