Repository navigation
Releases: ZanderoDev/Pyind
Release list
Pyind v1.1.0 — Penyempurnaan Transpiler
Penyempurnaan mendasar pada lexer, parser, transpiler, dan dokumentasi.
Semua API utama kini berbahasa Indonesia, dengan alias Inggris yang tetap dipertahankan untuk kompatibilitas.
from lexer import Lexer
from parser import Parser
from transpiler import Transpiler
tokens = Lexer(source).tokenisasi()
ast = Parser(tokens).urai()
kode = Transpiler().terjemahkan(ast)Ditambahkan
API Bahasa Indonesia — tokenisasi(), urai(), terjemahkan() sebagai API utama; tokenize, parse, transpile tetap ada sebagai alias. Token.teks_asli kini menyimpan ejaan sumber apa adanya, terpisah dari Token.nilai yang berisi padanan Python.
Leksikon — pemisahan tegas antara kata kunci reserved, kata kunci kontekstual (soft keyword), dan fungsi bawaan, meniru perilaku Python. Angka menangani basis biner/oktal/heksadesimal, underscore, eksponen, dan literal kompleks. Prefiks string gabungan lengkap: rb, br, fr, rf, termasuk huruf besar-kecil.
Fitur bahasa baru — async fungsi beserta await, async untuk, dan async bersama; dekorator; hasilkan dan hasilkan_dari (padanan yield / yield from); penugasan bertanda (x: int = 5), penugasan berbintang (a, *b = data), dan walrus (n := panjang(a)); perbandingan berantai (0 < x < 10); parameter posisional-only (/), keyword-only (*), dan anotasi tipe termasuk union (int | str) serta generik (daftar[int]).
Resolver simbol — nama kontekstual menjadi builtin hanya selama belum diikat:
cetak("halo") # → print("halo")
cetak = fungsi_lain
cetak("halo") # → cetak("halo") alias sudah mati
Diagnostik — errors.py diberi kode galat stabil (E1001, E2001, E3001, E4001), nama berkas, rentang lokasi, cuplikan sumber, dan penunjuk caret.
Dokumentasi — docs/bahasa.md berisi referensi bahasa lengkap: leksikon, literal, tabel presedensi operator, fitur yang didukung dan belum didukung, serta format diagnostik.
Diperbaiki
- Nama identifier kini dibaca dari ejaan sumber, bukan padanan Python —
fungsi cetak()menghasilkandef cetak(), bukandef print(). - Bug konsumsi token ganda pada daftar, dict, tuple, kelas, dan parameter yang menyebabkan galat menyesatkan.
- Slice kosong dibedakan dari ekspresi bernilai nol:
a[:],a[0:0],a[::2],a[::0]semuanya benar. - Kurung eksplisit dipertahankan agar
(-2) ** 2tetap bernilai 4. kelas Turunan(Induk):gagal diurai karena(tidak dikonsumsi.- Angka tidak valid seperti
0123,0x,1.2e,1__2, dan123abckini ditolak dengan pesan jelas. - String multi-baris dan baris lanjutan dengan
\ditangani. - Indentasi: tab dihitung kelipatan 8 kolom seperti Python; indentasi pada baris pertama tanpa blok induk dilaporkan sebagai galat.
Changed
- Persyaratan Python dinaikkan ke 3.9+ (dari 3.7+).
- Nama literal
benar/salah/kosongsah sebagai nama fungsi, kelas, parameter, dan atribut — sesuai Python yang mengizinkanNone/Truesebagai nama atribut.
Pengujian
285 test lulus, mencakup unit test lexer, parser, dan transpiler serta 147 uji regresi baru. Setiap keluaran transpilasi dipastikan dapat dikompilasi, dan ketiga file contoh berjalan tanpa galat.
Ekstensi editor
Syntax highlighting untuk file .pyind, sudah termasuk rilis ini:
- VS Code —
pyind-syntax-1.1.0.vsix- Pasang: Extensions →
···→ Install from VSIX...
- Pasang: Extensions →
- Acode —
Pyind-Acode-Plugin-1.1.0.zip- Pasang: Plugin → Install plugin from file
Keduanya menyorot kata kunci khusus, kata kunci kontekstual, penghasil
(hasilkan / hasilkan_dari), literal, angka (biner/oktal/heksa/kompleks),
string berawalan, dekorator, dan identifier Unicode.
Sumbernya ada di folder extensi/. Leksikon highlight dibangun dari
keywords.py lewat extensi/alat/sinkronkan_leksikon.py, jadi tidak akan
tertinggal dari transpiler — tests/test_highlight.py menjaga konsistensinya.
Pip dan PyPI
Mulai versi ini Pyind tersedia sebagai paket PyPI bernama pyindo:
pip install pyindo # atau: pipx install pyindo
pyind --versiPerintah pyind langsung tersedia di PATH setelah pemasangan — tidak
perlu install.sh. Both cara tetap dipertahankan: install.sh untuk
pengguna yang mau menyalin repositori, pip untuk yang mau memasang
sekali jalan.
Paket ini dibangun dengan python -m build dan dikirim ke PyPI memakai
Trusted Publishing (OIDC), tanpa API token.
Rujukan
Implementasi mengikuti spesifikasi resmi Python:
Pyind Syntax Highlighting (VS Code) v1.0.0 — DEPRECATED
Deprecated — please use pyind-syntax-1.1.0.vsix from the v1.1.0 release.
The v1.0.0 package was built against Pyind v1.0.0 and is missing the
language features added in v1.1.0:
hasilkan/hasilkan_dari(yield)- decorators
- walrus
:=and ellipsis... - binary, octal, hexadecimal and complex numbers (
2j) - combined string prefixes (
rb,br,fr,rf) - Unicode identifiers
It also pointed its publisher at ilham-local, not this repository.
Download the current package from
https://github.com/ZanderoDev/Pyind/releases/tag/v1.1.0
Pyind Syntax Highlighting (Acode) v1.0.0 — DEPRECATED
Deprecated — please use pyind-syntax-1.1.0.vsix from the v1.1.0 release.
The v1.0.0 package was built against Pyind v1.0.0 and is missing the
language features added in v1.1.0:
hasilkan/hasilkan_dari(yield)- decorators
- walrus
:=and ellipsis... - binary, octal, hexadecimal and complex numbers (
2j) - combined string prefixes (
rb,br,fr,rf) - Unicode identifiers
It also pointed its publisher at ilham-local, not this repository.
Download the current package from
https://github.com/ZanderoDev/Pyind/releases/tag/v1.1.0