[Fikir] CLI'da AST Görüntüleme — Ağaç (Tree), Tablo ve --format=dot Seçenekleri #106

Open
opened 2026-06-14 22:26:30 +03:00 by saqut · 0 comments
Owner

Giriş (Nedir, Neden Önemli?)

Şu an saqut ast ham JSON basıyor. JSON, makineler için ideal ama bir insanın "bu kod nasıl bir ağaca dönüşmüş" sorusuna hızlı cevap vermesi için okunması zor. "Programlanabilir derleyici" felsefesi hem makine-okur (JSON) hem insan-okur çıktıyı hak ediyor.


Gelişme (Olası Yaklaşımlar)

  • saqut ast file --format=json (mevcut, varsayılan kalabilir), --format=tree: terminalde girintili/kutu-çizgili bir ağaç (örn. tree komutunun çıktısına benzer: ├──, └──).
  • --format=dot: Graphviz DOT formatı — saqut ast file --format=dot | dot -Tpng -o ast.png ile görsel AST diyagramı üretilebilir (#43'te zaten "AST görselleştirme" fikri vardı, bu onun somut hâli).
  • --format=table: her düğümü satır olarak basan, tip | konum | değer kolonlarına sahip düz bir tablo — grep/awk ile script'lenmesi kolay bir ara format.
  • Renkli terminal çıktısı (--color): düğüm tipine göre (Expression mavi, Statement sarı, Literal yeşil gibi) ANSI renk kodları — --optimized ile birlikte kullanılırsa, silinen düğümler kırmızı/üstü çizili gösterilebilir (DCE'nin görsel kanıtı).

Açık Sorular

  • --format=tree/table/dot çıktıları AST'nin tam bilgisini mi taşır (her alan), yoksa "özet" mi (sadece tip + konum + kısa değer)? Tam JSON her zaman --format=json ile erişilebilir kalmalı — diğerleri "insan için özet" olabilir.
  • Bu format seçenekleri saqut symbols ve ileride saqut ir için de aynı bayrak isimleriyle tutarlı olmalı mı (örn. her komut --format=tree/json/dot/table desteklesin — CLI'da tek bir ortak altyapı, src/cli/format.hpp gibi)?

İmza/Yorum: --format=dot özellikle düşük efor / yüksek "vitrin" değeri taşıyor — bir blog yazısında/README'de "işte saQut'un AST'si" diye gösterilebilecek bir görsel üretir.

### Giriş (Nedir, Neden Önemli?) Şu an `saqut ast` ham JSON basıyor. JSON, makineler için ideal ama bir insanın "bu kod nasıl bir ağaca dönüşmüş" sorusuna hızlı cevap vermesi için **okunması zor**. "Programlanabilir derleyici" felsefesi hem makine-okur (JSON) hem **insan-okur** çıktıyı hak ediyor. --- ### Gelişme (Olası Yaklaşımlar) - `saqut ast file --format=json` (mevcut, varsayılan kalabilir), `--format=tree`: terminalde girintili/kutu-çizgili bir ağaç (örn. `tree` komutunun çıktısına benzer: `├──`, `└──`). - `--format=dot`: Graphviz DOT formatı — `saqut ast file --format=dot | dot -Tpng -o ast.png` ile görsel AST diyagramı üretilebilir (#43'te zaten "AST görselleştirme" fikri vardı, bu onun somut hâli). - `--format=table`: her düğümü satır olarak basan, `tip | konum | değer` kolonlarına sahip düz bir tablo — `grep`/`awk` ile script'lenmesi kolay bir ara format. - Renkli terminal çıktısı (`--color`): düğüm tipine göre (Expression mavi, Statement sarı, Literal yeşil gibi) ANSI renk kodları — `--optimized` ile birlikte kullanılırsa, **silinen düğümler kırmızı/üstü çizili** gösterilebilir (DCE'nin görsel kanıtı). --- ### Açık Sorular - `--format=tree`/`table`/`dot` çıktıları AST'nin **tam** bilgisini mi taşır (her alan), yoksa "özet" mi (sadece tip + konum + kısa değer)? Tam JSON her zaman `--format=json` ile erişilebilir kalmalı — diğerleri "insan için özet" olabilir. - Bu format seçenekleri `saqut symbols` ve ileride `saqut ir` için de **aynı bayrak isimleriyle** tutarlı olmalı mı (örn. her komut `--format=tree/json/dot/table` desteklesin — CLI'da tek bir ortak altyapı, `src/cli/format.hpp` gibi)? *İmza/Yorum:* `--format=dot` özellikle düşük efor / yüksek "vitrin" değeri taşıyor — bir blog yazısında/README'de "işte saQut'un AST'si" diye gösterilebilecek bir görsel üretir.
saqut added the
fikir
cli-ux
labels 2026-06-14 22:26:30 +03:00
Sign in to join this conversation.
No description provided.