[Test] Temel Aritmetik, Operatör Önceliği ve print Çıktısı #99

Closed
opened 2026-06-14 22:26:26 +03:00 by saqut · 1 comment
Owner

Giriş (Nedir, Neden Önemli?)

Bu issue, derleyicinin en temel davranışını sabitleyen bir golden-test taslağıdır: sayı literalleri, dört işlem, operatör önceliği (precedence) ve print builtin'i. "Fibonacci çalıştı" hedefinden önce bile bu örneğin doğru çalışması gerekir — Pratt parser'ın (zaten yapılı) önceliği doğru uyguladığının kanıtıdır.


Test Kodu (examples/tests/aritmetik.sqt)

int main() {
    print(1 + 2 * 3);     // çarpma toplamadan önce
    print((1 + 2) * 3);   // parantez önceliği
    print(10 - 4 - 3);    // soldan-sağa birliktelik (left-assoc)
    print(10 / 3);        // tamsayı bölmesi (truncation)
    print(10 % 3);        // mod
    print(2 + 3 * 4 - 6 / 2);
    return 0;
}

Beklenen Çıktı (saqut run examples/tests/aritmetik.sqt)

7
9
3
3
1
11

Açık Sorular / Bağlı Fazlar

  • Bu test, saqut run (IR + VM, ADR-015) tamamlanmadan AST seviyesinde de kısmen doğrulanabilir: saqut ast --optimized ile constant folding (Faz 4) çalıştığında her print argümanı doğrudan tek bir Literal düğümüne katlanmalı (örn. 1 + 2 * 3Literal(7)).
  • 10 / 33 (tamsayı bölmesi) davranışı tip denetiminde (Faz 3) açıkça test edilmeli; int / int = int (kayıp olabilir ama bu saQut'ta hata değil, sadece kesme/truncation — ADR-010'daki "kayıpsız literal" kuralından farklı bir konu, karıştırılmamalı).

İmza/Yorum: Bu dosya, "derleyici bitti mi?" sorusuna verilecek ilk somut cevaplardan biri olmalı — examples/fibonacci.sqt'den önce, daha küçük bir adım.

### Giriş (Nedir, Neden Önemli?) Bu issue, derleyicinin **en temel** davranışını sabitleyen bir golden-test taslağıdır: sayı literalleri, dört işlem, operatör önceliği (precedence) ve `print` builtin'i. "Fibonacci çalıştı" hedefinden önce bile bu örneğin doğru çalışması gerekir — Pratt parser'ın (zaten yapılı) önceliği doğru uyguladığının kanıtıdır. --- ### Test Kodu (`examples/tests/aritmetik.sqt`) ```c int main() { print(1 + 2 * 3); // çarpma toplamadan önce print((1 + 2) * 3); // parantez önceliği print(10 - 4 - 3); // soldan-sağa birliktelik (left-assoc) print(10 / 3); // tamsayı bölmesi (truncation) print(10 % 3); // mod print(2 + 3 * 4 - 6 / 2); return 0; } ``` ### Beklenen Çıktı (`saqut run examples/tests/aritmetik.sqt`) ``` 7 9 3 3 1 11 ``` --- ### Açık Sorular / Bağlı Fazlar - Bu test, `saqut run` (IR + VM, ADR-015) tamamlanmadan **AST** seviyesinde de kısmen doğrulanabilir: `saqut ast --optimized` ile constant folding (Faz 4) çalıştığında her `print` argümanı doğrudan tek bir `Literal` düğümüne katlanmalı (örn. `1 + 2 * 3` → `Literal(7)`). - `10 / 3` → `3` (tamsayı bölmesi) davranışı tip denetiminde (Faz 3) açıkça test edilmeli; `int / int = int` (kayıp olabilir ama bu saQut'ta hata değil, sadece kesme/truncation — ADR-010'daki "kayıpsız literal" kuralından farklı bir konu, karıştırılmamalı). *İmza/Yorum:* Bu dosya, "derleyici bitti mi?" sorusuna verilecek **ilk** somut cevaplardan biri olmalı — `examples/fibonacci.sqt`'den önce, daha küçük bir adım.
saqut added the
test-senaryosu
label 2026-06-14 22:26:26 +03:00
Author
Owner

Golden test eklendi: tests/golden/arithmetic/precedence.sqt. Operatör önceliği (çarpma/bölme/mod), parantez, sol-birliktelik — 6 çıktı, beklenenle eşleşti. 9/9 ctest geçti.

Golden test eklendi: `tests/golden/arithmetic/precedence.sqt`. Operatör önceliği (çarpma/bölme/mod), parantez, sol-birliktelik — 6 çıktı, beklenenle eşleşti. 9/9 ctest geçti.
saqut closed this issue 2026-06-18 22:33:32 +03:00
Sign in to join this conversation.
No description provided.