Skip to main content

Transpiler Bahasa Indonesia ke Python

Project description

Indpy ๐Ÿ‡ฎ๐Ÿ‡ฉ

Indpy adalah transpiler yang mengubah kode dengan sintaks Bahasa Indonesia menjadi kode Python valid, lalu langsung menjalankannya.

Kode .indpy  โ†’  Lexer  โ†’  Parser  โ†’  AST  โ†’  Transpiler  โ†’  Python

Instalasi

Termux / Acode Terminal / Linux

curl -fsSL https://raw.githubusercontent.com/ZanderoDev/Indpy/main/install.sh | bash

atau jika sudah di-clone:

bash install.sh

Setelah instalasi, buka terminal baru lalu jalankan:

indpy --versi

Persyaratan

  • Python 3.7 atau lebih baru
  • Git (untuk instalasi otomatis)
  • pytest โ€” hanya untuk menjalankan unit test
pip install pytest

Struktur Folder

Indpy/
โ”œโ”€โ”€ main.py        # CLI entry point
โ”œโ”€โ”€ lexer.py       # Tokenizer โ€” teks โ†’ token
โ”œโ”€โ”€ parser.py      # Parser   โ€” token โ†’ AST
โ”œโ”€โ”€ transpiler.py  # Generator โ€” AST โ†’ kode Python
โ”œโ”€โ”€ keywords.py    # Peta kata kunci Bahasa Indonesia โ†’ Python
โ”œโ”€โ”€ errors.py      # Kelas error berbahasa Indonesia
โ”œโ”€โ”€ install.sh     # Installer otomatis
โ”œโ”€โ”€ tests/
โ”‚   โ”œโ”€โ”€ test_lexer.py
โ”‚   โ”œโ”€โ”€ test_parser.py
โ”‚   โ””โ”€โ”€ test_transpiler.py
โ””โ”€โ”€ contoh/
    โ”œโ”€โ”€ halo_dunia.indpy       # Contoh 1: Halo Dunia
    โ”œโ”€โ”€ kalkulator.indpy       # Contoh 2: Kalkulator
    โ””โ”€โ”€ loop_dan_fungsi.indpy  # Contoh 3: Loop & Fungsi

Cara Pakai

Setelah install global (indpy)

# Masuk REPL interaktif
indpy

# Jalankan file .indpy
indpy namafile.indpy
indpy jalankan namafile.indpy

# Lihat kode Python yang dihasilkan sebelum dijalankan
indpy jalankan namafile.indpy --tampilkan

# Ekspor ke file .py (tanpa menjalankan)
indpy ekspor namafile.indpy
indpy ekspor namafile.indpy -o output.py

# Cek versi
indpy --versi

Tanpa install (langsung dari folder)

python main.py jalankan contoh/halo_dunia.indpy
python main.py ekspor  contoh/kalkulator.indpy -o hasil.py
python main.py repl

REPL Interaktif

Jalankan indpy tanpa argumen untuk masuk ke mode interaktif:

$ indpy
Indpy v1.0.0 (Python 3.11.6)
Ketik 'keluar()' atau tekan Ctrl+D untuk keluar.
>>> x = 10
>>> x * 3
30
>>> cetak("halo dari REPL")
halo dari REPL

Blok multi-baris

Blok yang dibuka dengan : otomatis masuk ke mode multi-baris. Tekan Enter kosong untuk mengeksekusi:

>>> fungsi kuadrat(n):
...      kembali n ** 2
...
>>> kuadrat(7)
49

Pintasan keyboard

Tombol Aksi
keluar() / exit() Keluar dari REPL
Ctrl+D Keluar dari REPL
Ctrl+C Batalkan input saat ini (tidak keluar)

Kata Kunci yang Didukung

Bahasa Indonesia Python Keterangan
fungsi def Definisi fungsi
kelas class Definisi kelas
kembali return Nilai kembalian
kembalikan return Alias kembali
jika if Kondisi
jika_tidak elif Kondisi lanjutan
lainnya else Kondisi default
untuk for Loop iterasi
selama while Loop kondisi
dalam in Operator keanggotaan
hentikan break Keluar dari loop
lanjut continue Lanjut iterasi
lewati pass Pernyataan kosong
lewat pass Alias lewati
impor import Impor modul
dari from Impor dari modul
sebagai as Alias impor
menjadi as Alias sebagai
coba try Blok percobaan
kecuali except Tangkap exception
akhirnya finally Selalu dijalankan
naikkan raise Lempar exception
bersama with Context manager
dan and Operator logika
atau or Operator logika
bukan not Negasi logika
tidak not Alias bukan
benar True Nilai boolean
salah False Nilai boolean
kosong None Nilai null
global global Variabel global
nonlokal nonlocal Variabel closure
hapus del Hapus variabel
lambda lambda Fungsi anonim
pernyataan assert Pernyataan asersi
cetak print Tampilkan output
masukkan input Baca input
panjang len Panjang koleksi
rentang range Rentang angka
tipe type Tipe data
bilangan int Konversi ke bilangan
desimal float Konversi ke desimal
teks str Konversi ke teks
daftar list Tipe list
kamus dict Tipe dictionary
himpunan set Tipe set

Contoh Kode

Halo Dunia

cetak("Halo, Dunia!")

Fungsi dan kondisi

fungsi sapa(nama):
    jika nama == "":
        kembali "Halo, Anonim!"
    kembali "Halo, " + nama + "!"

cetak(sapa("Budi"))

Loop

untuk i dalam rentang(1, 6):
    cetak("Iterasi ke-" + teks(i))

Kelas

kelas Hewan:
    fungsi __init__(diri, nama):
        diri.nama = nama

    fungsi suara(diri):
        cetak(diri.nama, "bersuara!")

h = Hewan("Kucing")
h.suara()

Penanganan error

coba:
    hasil = 10 / 0
kecuali ZeroDivisionError:
    cetak("Tidak bisa membagi dengan nol!")

Impor modul

dari math impor sqrt sebagai akar_kuadrat

cetak(akar_kuadrat(16))   # โ†’ 4.0

Keamanan String

Kata kunci di dalam tanda kutip tidak diterjemahkan:

cetak("jika hujan, bawa payung")
# โ†’ print("jika hujan, bawa payung")   โœ“ bukan "if hujan, bawa payung"

Menjalankan Unit Test

pytest tests/ -v

Arsitektur

Lexer (lexer.py)
  Membaca source code karakter per karakter.
  Menghasilkan token: KATA_KUNCI, NAMA, ANGKA, TEKS, OP, DELIMITER,
  INDENT, DEDENT, BARIS_BARU, EOF.
  Longest-match-first: operator tiga karakter (mis. **=) dicek sebelum dua karakter.
  String literal dijaga utuh โ€” isinya tidak diproses.

Parser (parser.py)
  Recursive Descent Parser.
  Mengonsumsi token dan membangun AST (pohon dict Python).
  Mendukung: penugasan, if/elif/else, while, for, def, class,
  try/except/finally, with, import, return, break, continue, pass,
  lambda, assert, del, global, nonlocal, eksponen kanan-asosiatif, dsb.

Transpiler (transpiler.py)
  Menelusuri AST secara rekursif.
  Menghasilkan kode Python valid dengan indentasi otomatis.

main.py (CLI)
  Subperintah: jalankan | ekspor | repl
  indpy (tanpa argumen) โ†’ langsung masuk REPL.
  Mengorkestrasi Lexer โ†’ Parser โ†’ Transpiler โ†’ exec().

Lisensi

MIT โ€” bebas digunakan dan dimodifikasi.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyindo-1.0.0.tar.gz (33.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyindo-1.0.0-py3-none-any.whl (25.8 kB view details)

Uploaded Python 3

File details

Details for the file pyindo-1.0.0.tar.gz.

File metadata

  • Download URL: pyindo-1.0.0.tar.gz
  • Upload date:
  • Size: 33.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for pyindo-1.0.0.tar.gz
Algorithm Hash digest
SHA256 bdf97dbb52ad5e3c1468c67f2601aab57619305a8ecaf21e7d1f7185e8428e19
MD5 ec64981c7e0ffe16b771a3983ca808a8
BLAKE2b-256 91925c983d69f7c6f6cf9fafea397362104f3a0db84eb513c69886f545e6e0c3

See more details on using hashes here.

File details

Details for the file pyindo-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: pyindo-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 25.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for pyindo-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7a941251b7397e81d6559e9edf79bc3a394214a99f58663d4c5c4bcfec662f4e
MD5 77ce198b77ade18aa30c44663623032d
BLAKE2b-256 7c35486b10d822fefa0106186947fc3c83b10940c0fee8b766cda9f060f047b3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page