Lugha ya kupanga yenye sintaksia kamili ya Kiswahili. Mkusanyaji wa kujikusanya — inakusanya moja kwa moja hadi msimbo wa mashine kupitia LLVM na kizalishe asilia cha x86-64.
# SWA — Lugha ya Kupanga ya Kiswahili
**Swa** ni lugha ya kupanga yenye sintaksia kamili ya Kiswahili. Hakuna neno
la Kiingereza linatumika katika sintaksia yake. Inakusanya moja kwa moja hadi
msimbo wa mashine — kwanza kwa njia asilia (`uzalishaji.swa`) inayotoa ELF
binary moja kwa moja bila LLVM wala mkusanyaji msaidizi, na pia kwa njia ya
LLVM kwa majukwaa zaidi.
Makao rasmi: **lugha-swa**
## Mfano
```swa
husisha C::stdio
W0 salamu(N8* jina) {
andika("Habari, %s!\n", jina);
}
W0 hesabu_na_onyesha(N32 a, N32 b) {
N32 jumla = a + b;
N32 tofauti = a - b;
andika("%d + %d = %d\n", a, b, jumla);
andika("%d - %d = %d\n", a, b, tofauti);
}
salamu("Dunia");
hesabu_na_onyesha(15, 7);
```
## Mifano Zaidi
### Vigezo na Aina
```swa
N32 umri = 25;
N64 idadi_ya_watu = 8000000000;
D32 wastani = 3.14;
B1 imewashwa = kweli;
N8 herufi = 'A';
```
### Mtiririko wa Udhibiti
```swa
// Kama/Sivyo
N32 kadirifu(N32 x) {
kama (x > 0) {
rudisha 1;
} sivyo kama (x x = v;
}
```
### Safu na Kumbukumbu
```swa
N8 bafa[1024]; // safu ya ulimwengu
N32 namba[5] = {1, 2, 3, 4, 5};
W0 andika_bafa() {
bafa[0] = 65; // andika kwenye safu
N32 ya_kwanza = namba[0];
}
// Kumbukumbu ya moja kwa moja
W0 mfano_kumbukumbu() {
N32* p = tenga N32; // tenga kumbukumbu
*p = 42; // andika thamani
achilia(p); // achilia kumbukumbu
}
```
### Miito na Urejeshaji
```swa
// Tangazo la mbele
W0 mkuu() {
msaidizi(42);
}
W0 msaidizi(N32 x) {
andika("Thamani: %d\n", x);
}
// Kujirudia
N32 kitanzi(N32 n) {
kama (n <= 0) { rudisha 0; }
rudisha 1 + kitanzi(n - 1);
}
```
## Vipengele
- **Maneno muhimu 42** ya Kiswahili -- hakuna Kiingereza katika sintaksia
- **Kujitegemea (100%)** -- mnyororo wa kujikusanya umefungwa kabisa:
baiti za mkono → mbegu → stage1-exe → stage2-exe == stage3-exe
(mnyororo wa uzalishaji; uthabiti wa makosa ni mhimili tofauti —
angalia hati/mipaka.md)
- **Vizalishe viwili**: LLVM (majukwaa yote) + asilia (x86-64 ELF moja kwa moj …