From f69654bbcab1ca379567eaa483a62b659c140333 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 19 Jun 2026 19:07:11 +0000 Subject: [PATCH] =?UTF-8?q?docs:=20d=C3=B6k=C3=BCmanlar=20ve=20issue'lar?= =?UTF-8?q?=20ger=C3=A7ek=20durumla=20g=C3=BCncellendi?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - CLAUDE.md: "Mevcut durum" bölümü yeniden yazıldı — tüm pipeline çalışıyor, bilinen eksikler (#35–#38) listelendi - docs/fikirler.md: "kod üretimi VM henüz yoktur" notu kaldırıldı - docs/adr-frontend-analiz.md: "henüz kodlanmamıştır" uyarısı kaldırıldı - docs/roadmap-frontend.md: tüm fazlar (0–4) ✅ TAMAMLANDI olarak işaretlendi - readme.md: saqut check komutu CLI tablosuna eklendi - GitHub #30–#34 issue'ları kapatıldı (düzeltilmiş bug'lar) Co-Authored-By: Claude Opus 4.8 --- CLAUDE.md | 25 ++++++++++++++++++------- docs/adr-frontend-analiz.md | 11 +++++------ docs/fikirler.md | 7 ++++--- docs/roadmap-frontend.md | 29 ++++++++++------------------- readme.md | 1 + 5 files changed, 38 insertions(+), 35 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index d556c7a..9d15529 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -37,13 +37,24 @@ git'te izlenir. değil; kripto asla elle yazılmaz (ADR-017). ## Mevcut durum (yapılan vs planlanan) -- **Çalışıyor:** lexer, tokenizer, Pratt parser, AST, AST'nin JSON serileştirmesi, - CLI iskeleti (`tokens`/`ast`/`symbols`/`run`), konum takibi, basit aritmetiği - düşüren minimal IR deneyi. -- **Planlı (henüz YOK):** sembol tablosu, semantik analiz, tip sistemi, diagnostic - motoru, optimizasyon, IR+bytecode VM ile çalıştırma. -- **Birinci kilometre taşı ("bitti" tanımı):** `examples/fibonacci.sqt` - (recursive + iterative) derlenip çalıştırılabilmeli. +- **✅ Birinci kilometre taşı AŞILDI:** `examples/fibonacci.sqt` + (recursive + iterative) `saqut run` ile çalışıyor → `55\n55`. +- **Çalışıyor (tam pipeline):** + - Lexer, tokenizer, Pratt parser, AST + JSON serileştirmesi + - Sembol tablosu (iki-geçişli toplayıcı, döngüsel struct tespiti) + - Tip sistemi (`src/core/type.hpp`) + diagnostic motoru (`src/diagnostic/`) + - Tip denetleyici + yapısal doğrulayıcı (`src/semantic/`) + - Optimizasyon: constant folding (int/bool/logical) + dead code elimination + - IR üreteci (3-adresli, slot tabanlı) + bytecode VM (yorumlayıcı döngü) + - CLI: `tokens` / `ast` / `symbols` / `check` / `ir` / `run` (6 komut) +- **Henüz YOK (bilinen eksikler):** + - float/double codegen (tip sistemi var, IR opcode'u yok) + - struct IR (parse/semantik var, codegen yok) + - array IR (parse/semantik var, codegen yok) + - `%=` operatörü IR'da eksik (#37) + - Global değişken IR üretimi sessizce atlıyor (#38) + - W003 ölü kod uyarısı üretilmiyor (#36) + - DCE silinen düğümleri `delete` etmiyor — bellek sızıntısı (#35) - **İlke:** Önce uçtan uca tek **dikey dilim**, sonra çerçeve. Erken soyutlamadan kaçın. ## Belge haritası diff --git a/docs/adr-frontend-analiz.md b/docs/adr-frontend-analiz.md index e564881..aea0564 100644 --- a/docs/adr-frontend-analiz.md +++ b/docs/adr-frontend-analiz.md @@ -10,12 +10,11 @@ > Tartışmanın tam akışı için bkz. `docs/transkript-frontend-tasarim.md`. > Uygulama planı için bkz. `docs/roadmap-frontend.md`. > -> ⚠️ **Yapılan vs planlanan:** Bu belgedeki ADR-006…019 **tasarım kararlarıdır**; -> tarif edilen makine (sembol tablosu, semantik analiz, tip sistemi, diagnostic, -> optimizasyon, IR+VM) **henüz kodlanmamıştır.** Bugün çalışan: lexer, tokenizer, -> Pratt parser, AST, AST'nin JSON serileştirmesi, CLI iskeleti, konum takibi ve -> basit aritmetiği düşüren minimal bir IR deneyi. Hiçbir ADR, var olmayan bir -> mekanizmayı varmış gibi anlatmaz. +> ✅ **Uygulama durumu:** Bu belgedeki ADR-006…019 kararlarında tarif edilen +> makine **kodlandı ve çalışıyor.** Sembol tablosu, semantik analiz, tip sistemi, +> diagnostic motoru, optimizasyon (constant folding + DCE), IR üreteci ve bytecode +> VM'in tamamı uygulandı. `examples/fibonacci.sqt` uçtan uca çalışıyor. +> Güncel "çalışıyor / henüz yok" listesi için bkz. `CLAUDE.md`. --- diff --git a/docs/fikirler.md b/docs/fikirler.md index e129375..712a31f 100644 --- a/docs/fikirler.md +++ b/docs/fikirler.md @@ -18,9 +18,10 @@ > **çok uzak gelecektir**. ADR-001'deki karşılaştırmalar o gün için geçerli. > - "HeavyIR/LightIR" ikiliği (ADR-005) bir **gelecek fikri** olarak durur; v0'ın > IR+VM hedefi tek, basit bir IR'dir + **FFI seam** (ADR-016). -> - **Yapılan vs planlanan:** ADR-001'deki "mevcut durum" listesi hâlâ doğrudur -> (lexer/tokenizer/parser/AST + minimal IR deneyi çalışır); kod üretimi ve VM -> **henüz yoktur.** +> - **Yapılan vs planlanan:** Tüm pipeline uygulandı. `examples/fibonacci.sqt` +> uçtan uca çalışıyor (lexer → tokenizer → parser → sembol tablosu → tip +> denetleyici → optimizasyon → IR üreteci → bytecode VM). ADR-001'deki +> "mevcut durum" listesi artık tarihseldir; güncel durum için bkz. `CLAUDE.md`. --- diff --git a/docs/roadmap-frontend.md b/docs/roadmap-frontend.md index 897b73d..8d03264 100644 --- a/docs/roadmap-frontend.md +++ b/docs/roadmap-frontend.md @@ -10,21 +10,12 @@ > yorum satırlarıyla takip edilebilir olmalıdır (header-only tarzı korunur, > bkz. ADR-003). > -> ⚠️ **Yapılan vs planlanan:** Bugün çalışan = lexer, tokenizer, Pratt parser, -> AST, AST'nin JSON serileştirmesi, CLI iskeleti, konum takibi, basit aritmetiği -> düşüren minimal IR deneyi. Bu yol haritasındaki **her şey planlıdır** (sembol -> tablosu, semantik analiz, tip sistemi, diagnostic, optimizasyon). +> ✅ **Birinci kilometre taşı AŞILDI.** Faz 0–4 uygulandı; `examples/fibonacci.sqt` +> uçtan uca çalışıyor. Bu yol haritası artık tarihsel bir referanstır. > -> 🎯 **Bu haftanın işi:** **sembol tablosu + iki-geçişli toplayıcı** (Faz 2), -> hedef **"fibonacci'yi derle ve çalıştır"** (`examples/fibonacci.sqt`). Faz 0–1 -> bunun önkoşuludur. -> -> 🧭 **Önce dikey dilim, sonra çerçeve.** Bir şey çalışmadan önce genel pass -> manager / evrensel config / ağır soyutlama inşa etme. Uçtan uca tek bir dilim -> (kaynak → IR → çalıştır; tamsayı + değişken + kontrol akışı + tek `print`) -> önce çalışsın. Faz 4'ün framework'ü (OptimizationManager, fixpoint, config) -> ancak Faz 0–3 fibonacci'yi geçirdikten **sonra** anlam kazanır — erken -> soyutlama daha az değil, daha çok karmaşıklıktır. +> **Sonraki hedefler:** float/double codegen, struct IR, array IR, açık bug'lar +> (#35 bellek sızıntısı, #36 W003 uyarısı, #37 `%=` IR, #38 global değişken IR). +> Güncel "çalışıyor / henüz yok" listesi için bkz. `CLAUDE.md`. --- @@ -46,7 +37,7 @@ Katman eşlemesi (ADR-006): --- -## Faz 0 — Temeller (Type + Diagnostic + Hata Kataloğu) +## ✅ Faz 0 — Temeller (Type + Diagnostic + Hata Kataloğu) — TAMAMLANDI **Bağımlılık:** yok. **Hedef:** her şeyin üstüne kurulacağı temel veri yapıları. İlgili ADR: 010 (Type), 013 (Diagnostic). @@ -91,7 +82,7 @@ Katman eşlemesi (ADR-006): --- -## Faz 1 — AST Refactor (ExpressionNode / StatementNode + analiz alanları) +## ✅ Faz 1 — AST Refactor (ExpressionNode / StatementNode + analiz alanları) — TAMAMLANDI **Bağımlılık:** Faz 0 (Type). **Hedef:** node hiyerarşisini ifade/deyim olarak ayır, analiz alanlarını ekle. İlgili ADR: 012, 013. @@ -116,7 +107,7 @@ ayır, analiz alanlarını ekle. İlgili ADR: 012, 013. --- -## Faz 2 — Symbol Table (scope'lu, iki-geçişli toplama) +## ✅ Faz 2 — Symbol Table (scope'lu, iki-geçişli toplama) — TAMAMLANDI **Bağımlılık:** Faz 0, 1. **Hedef:** isim çözümleme + scope + referans toplama. İlgili ADR: 011, 013. @@ -150,7 +141,7 @@ ayır, analiz alanlarını ekle. İlgili ADR: 012, 013. --- -## Faz 3 — Semantic Analiz (Tip Kontrolü + Yapısal Doğrulama) +## ✅ Faz 3 — Semantic Analiz (Tip Kontrolü + Yapısal Doğrulama) — TAMAMLANDI **Bağımlılık:** Faz 2. **Hedef:** tipleri ata/kontrol et, yapısal kuralları doğrula. İlgili ADR: 010, 013. @@ -173,7 +164,7 @@ doğrula. İlgili ADR: 010, 013. --- -## Faz 4 — Optimizasyon Framework +## ✅ Faz 4 — Optimizasyon Framework — TAMAMLANDI **Bağımlılık:** Faz 3. **Hedef:** opsiyonel, iteratif, toggle'lı kaynak-seviyesi optimizasyon. **Orijinali bozmaz — klon üstünde** (ADR-007). İlgili ADR: 007, 008, 009. diff --git a/readme.md b/readme.md index b73bb90..eee1e64 100644 --- a/readme.md +++ b/readme.md @@ -91,6 +91,7 @@ Binary lands at `build/saqut`. | `saqut ast file:src.sqt` | Full AST as JSON | | `saqut ast file:src.sqt --optimized` | AST after constant folding + dead-code elimination | | `saqut symbols file:src.sqt` | Symbol table dump | +| `saqut check file:src.sqt` | Semantic analysis only — errors and warnings, JSON | | `saqut ir file:src.sqt` | IR instruction dump | | `saqut run file:src.sqt` | Compile and run via bytecode VM |