Compiler berbasis Rust untuk menerjemahkan model xtUML (Executable UML) dari format JSON menjadi kode sumber dalam berbagai bahasa pemrograman seperti Python, Java, dan Javascript.
Link Update Proyek : Github Arbath
Proyek ini bertujuan membangun model-driven compiler yang mampu:
- Membaca model xtUML dalam bentuk JSON.
- Melakukan analisis semantik terhadap elemen model (kelas, state, event, dsb).
- Menghasilkan kode sumber otomatis dari model ke berbagai target bahasa.
Dengan pendekatan ini, pengembang dapat berfokus pada desain model sistem, bukan menulis kode secara manual.
xtuml-compiler/
│
├── src/
│ ├── main.rs → Entry point CLI (mengatur input & output)
│ ├── parser.rs → Parser untuk membaca model xtUML (JSON → Struct)
│ ├── semantic.rs → Analisis semantik & pembentukan AST
│ ├── generator/ → Modul generator kode
│ │ ├── python.rs → Generator untuk bahasa Python
│ │ ├── java.rs → Generator untuk bahasa Java
│ │ └── javascript.rs → Generator untuk bahasa Javascript
│ └── templates/ → Template file untuk masing-masing bahasa target
│
├── models/
│ └── example_model.json → Contoh model xtUML dalam format JSON
│
└── output/
└── generated_code/ → Hasil kode sumber yang dihasilkan oleh compiler
Gunakan file binary yang telah disedikan di github release atau jalankan sendiri di komputer anda.
git clone https://github.com/Arbath/xtuml-compiler.git
cd xtuml-compilerPastikan kamu sudah menginstal Rust dan Cargo. Kemudian jalankan:
cargo buildContoh menjalankan compiler untuk model contoh:
cargo run -- models/example_model.json --lang javaAtau untuk bahasa lain:
cargo run -- models/example_model.json --lang python
cargo run -- models/example_model.json --lang javascriptHasil output akan muncul di folder:
output/generated_code/
xtUML (Executable UML) adalah pengembangan dari UML yang memungkinkan model sistem:
- Dapat dijalankan atau disimulasikan, bukan sekadar digambar.
- Dapat diterjemahkan langsung menjadi kode sumber melalui model compiler.
Compiler ini berperan sebagai bridge antara model xtUML (abstrak) dan kode implementasi (nyata).
| Komponen | Deskripsi |
|---|---|
| Rust | Bahasa utama untuk kecepatan dan keamanan memori |
| Serde | Parsing dan serialisasi JSON |
| Clap | Parser CLI untuk argumen --lang dan path model |
| Tera / Handlebars | Template engine untuk generator kode |
| Walkdir / fs | File system handling untuk output otomatis |
JSON Model
│
▼
[Parser Layer]
(serde_json → Struct)
│
▼
[Semantic Analyzer Layer]
(validasi class, state, event)
│
▼
[Code Generator Layer]
(C++ / Java / Python templates)
│
▼
generated_code/
| Tahap | Deskripsi | Status |
|---|---|---|
| 1 | Struktur dasar proyek & parser JSON | Selesai |
| 2 | Analisis semantik model | Selesai |
| 3 | Generator kode Python / Java / Javascript | Selesai |
| 4 | Validasi event & state machine | Selesai |
| 5 | Integrasi WebAssembly (xtUML web IDE) | Rencana jangka panjang |
Kontribusi sangat terbuka! Silakan buat pull request atau issue jika menemukan bug atau ide baru.
Langkah:
- Fork repository
- Buat branch fitur baru
- Lakukan perubahan
- Ajukan pull request
Proyek ini dirilis di bawah lisensi MIT License silakan gunakan, ubah, dan sebarkan dengan bebas selama mencantumkan atribusi.
“Model once, generate everywhere.”