[Test] Bit Düzeyi (Bitwise) İşlemler — &, |, ^, ~, <<, >> #101
Labels
No Label
cli-ux
faz-plani
felsefe-gozden-gecir
ffi-builtin
fikir
gelecek-vizyon
ir-vm
kalite-mimari
moduller-import
test-senaryosu
tip-sistemi
tooling-lsp
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: saqut/saqut-compiler#101
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Giriş (Nedir, Neden Önemli?)
Tokenizer'da
&,|,^,~,<<,>>token'ları zaten tanımlı (src/tokenizer/tokenizer.hpp). Ama bu operatörlerin Pratt parser'da doğru öncelik ile ayrıştırıldığı ve tip denetiminde (Faz 3, sadeceintüzerinde tanımlı) doğru ele alındığı henüz doğrulanmadı. Bu issue, "karmaşık bit işlemleri" için bir golden-test taslağıdır.Test Kodu (
examples/tests/bit_islemleri.sqt)Beklenen Çıktı
Açık Sorular / Bağlı Fazlar
~aiçin-13beklentisi,int'in iki's complement (ikiye tümleyen) imzalı 32-bit temsiline dayanır — bu,src/core/type.hpp'deint'in tam temsilinin (bit genişliği) şimdiden dokümante edilmesini gerektirir (Faz 0'a not).1 << 2 + 1örneği kasıtlı olarak kafa karıştırıcı — C'de<</>>aritmetik operatörlerden (+/-) daha düşük önceliklidir. saQut Pratt parser'ı bu sırayı C ile aynı mı tutacak, yoksa daha "şaşırtmasız" bir öncelik mi tanımlayacak? Karar ne olursa olsun docs'a yazılmalı, çünkü bu tip kararlar "sessiz" kalırsa en çok şikayet edilen bug kaynağı olur.intiçin tanımlı olmalı;bool & boolveyafloat << 1gibi kullanımlarE003üretmeli (Faz 3'e not).İmza/Yorum: "Karmaşık byte işlemleri" testi olarak istenen tam da bu — bit-manipülasyonu doğru çalışmayan bir derleyici, gerçek programlar (hash, sıkıştırma, bayrak/flag kümeleri) için kullanılamaz hale gelir.