A scripting language written in C++ that lets you program using natural Swahili keywords and syntax.
# SwaziLang
SwaziLang is a scripting language written in C++ that lets you write programs using natural Swahili keywords and syntax.
Want to learn SwaziLang? Get started here →
---
## Build Instructions
```bash
mkdir build && cd build
cmake ..
cmake --build .
```
To create an installable package for your OS:
```bash
make package
# Packages are output to build/packages/
```
Installing the package (recommended — tracked by your package manager):
```bash
sudo apt install ./packages/ .deb # Debian/Ubuntu
```
Or install directly without package tracking:
```bash
sudo make install
# Note: uninstallation requires manual removal
```
---
## Running SwaziLang
After building, run the executable from the `build` directory:
```bash
./swazi
```
Or install and add to your system `PATH` to run from anywhere.
---
## Dependencies
Most dependencies are managed automatically by CMake via `FetchContent` or bundled with the build. You do **not** need Conan to build or use SwaziLang.
> **Contributors only:** If you prefer using Conan for third-party dependency management during development, install it with:
> ```bash
> pip install conan
> conan --version # verify installation
>
> mkdir build && cd build
> conan install .. --build=missing --output-folder=.
> ```
---
## Keywords
| Keyword | Meaning / Usage |
|---|---|
| `data` | Declare a variable |
| `thabiti` | Declare a constant or a `const` getter method |
| `kazi` | Define a function |
| `tabia` | Define a method inside an object or class |
| `rudisha` | Return a value from a function or method |
| `chapisha` | Print with newline |
| `andika` | Print without newline |
| `kweli` | Boolean literal: `true` |
| `sikweli` | Boolean literal: `false` |
| `kama` | `if` statement / `as` alias in imports |
| `vinginevyo` / `sivyo` | `else` / `else if` branch |
| `kwa` | `for` loop |
| `wakati` | `while` loop |
| `fanya` | `do-while` loop |
| `sawa` | Equality operator (`==`) |
| `sisawa` | Inequality operator (`!=`) | …