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.
npm install -g @arwildo/jawascriptBuat 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 cilik
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).
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.
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.
- 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.
