Dokumen ini berisi daftar pekerjaan untuk rewrite interpreter Wibu ke Rust.
- Tetapkan tujuan fitur v1 (syntax, tipe data, scope, control flow).
- Definisikan non-goals (fitur yang ditunda).
- Buat spesifikasi grammar awal (BNF/EBNF ringan).
- Tentukan format error & diagnostic.
- Validasi struktur crate dan dependensi antar-crate.
- Tetapkan aturan layering (lexer -> parser -> ast -> runtime).
- Definisikan public API minimal untuk tiap crate.
- Definisikan token set final (keyword, operator, literal, delimiter).
- Implementasi lexer streaming dengan posisi (line/col/offset).
- Support string literal dan escape.
- Support komentar single-line dan block.
- Unit tests untuk tokenisasi dasar.
- Lengkapi node AST (expr, stmt, decl, block, function, call).
- Tambahkan span/source range untuk setiap node.
- Struktur tipe data literal & operator.
- Implement parser Pratt / recursive descent.
- Implement parsing statement: var/let, if/else, loop, function.
- Error recovery sederhana (sync tokens).
- Unit tests untuk parsing ekspresi dan statement.
- Definisikan value model (number, string, bool, nil, function).
- Implement environment/scope (stacked env).
- Implement built-in function minimal (print/baka).
- Unit tests untuk environment dan evaluation.
- Wire pipeline lex -> parse -> eval.
- Expose API interpret/execute file.
- Centralize error handling & diagnostics.
- Standarisasi error types (lexer, parser, runtime).
- Implement pretty error message (line highlight).
- Pastikan error dapat dipropagasi antar-crate.
- Tambahkan arg parsing (run file, repl, version).
- Implement REPL sederhana.
- Integrasi output error/diagnostic.
- Port test fixture dari
WibuCPP-Legacy/test. - Golden tests untuk output interpreter.
- Tambahkan unit tests per crate.
- Tambahkan
cargo fmtdancargo clippy. - Setup CI minimal (lint + test).
- Tambahkan
deny.toml(opsional, jika mau strict).
- Update
readme.mduntuk versi Rust. - Tulis spec bahasa (docs/grammar.md).
- Contoh program dan output di
examples/.
- v0.1: lexer + parser + evaluasi ekspresi dasar.
- v0.2: control flow (if/loop), function sederhana.
- v1.0: runtime stabil + error report lengkap + CLI.