[Fikir] Import Sözdizimi ve Modül Çözümleme #81

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

Giriş (Nedir, Neden Önemli?)

Şu ana kadar tüm tasarım tek dosyalı programları (examples/fibonacci.sqt) hedefliyor. Ama gerçek projeler birden fazla dosyaya bölünür. saQut'a "başka bir dosyadaki fonksiyon/struct'ı kullan" diyebilmek için bir import (içe aktarma) sözdizimi gerekir.


Gelişme (Olası Yaklaşımlar)

  • En basit model: import "util.sqt" — dosya yolu tabanlı, C'nin #include'una benzer ama metin yapıştırma değil, sembol tablosu seviyesinde birleştirme (her dosya kendi AST'sine sahip kalır, sembol çözümleme dosyalar arası genişler).
  • Alternatif: isim-tabanlı modül sistemi (import utilutil.sqt veya util/ dizini arar), Go/Python tarzı.
  • saQut'ta class/namespace yok — modül adı, dosya adına eşlenebilecek doğal bir "isim alanı" (namespace) adayı olabilir: util.helper() gibi nokta-erişimi.

Açık Sorular

  • Döngüsel import (A, B'yi; B, A'yı import ediyor) nasıl ele alınır — derleme hatası mı, yoksa forward-declaration ile mi çözülür (ADR-011'deki forward-reference mantığına benzer)?
  • Import edilen dosyanın AST'si her derlemede yeniden mi ayrıştırılır, yoksa bir "derleme birimi cache"i mi olur (LSP issue'suyla bağlantılı)?

İmza/Yorum: Bu, "Faz 5: Modüller" için doğal bir başlangıç noktası olabilir — ama Faz 0-4 (tek dosya, fibonacci) bitmeden ele alınmamalı.

### Giriş (Nedir, Neden Önemli?) Şu ana kadar tüm tasarım **tek dosyalı** programları (`examples/fibonacci.sqt`) hedefliyor. Ama gerçek projeler birden fazla dosyaya bölünür. saQut'a "başka bir dosyadaki fonksiyon/struct'ı kullan" diyebilmek için bir **import (içe aktarma)** sözdizimi gerekir. --- ### Gelişme (Olası Yaklaşımlar) - En basit model: `import "util.sqt"` — dosya yolu tabanlı, C'nin `#include`'una benzer ama metin yapıştırma değil, **sembol tablosu seviyesinde birleştirme** (her dosya kendi AST'sine sahip kalır, sembol çözümleme dosyalar arası genişler). - Alternatif: isim-tabanlı modül sistemi (`import util` → `util.sqt` veya `util/` dizini arar), Go/Python tarzı. - saQut'ta `class`/namespace yok — modül adı, dosya adına eşlenebilecek doğal bir "isim alanı" (namespace) adayı olabilir: `util.helper()` gibi nokta-erişimi. --- ### Açık Sorular - Döngüsel import (A, B'yi; B, A'yı import ediyor) nasıl ele alınır — derleme hatası mı, yoksa forward-declaration ile mi çözülür (ADR-011'deki forward-reference mantığına benzer)? - Import edilen dosyanın AST'si her derlemede yeniden mi ayrıştırılır, yoksa bir "derleme birimi cache"i mi olur (LSP issue'suyla bağlantılı)? *İmza/Yorum:* Bu, "Faz 5: Modüller" için doğal bir başlangıç noktası olabilir — ama Faz 0-4 (tek dosya, fibonacci) bitmeden ele alınmamalı.
saqut added the
fikir
moduller-import
labels 2026-06-14 22:13:59 +03:00
Sign in to join this conversation.
No description provided.