An interpreted, python-inspired, Somali programming language written in Rust
An interpreted, python-inspired, Somali programming language written in Rust
# Build
To build the interpreter, simply do: `cargo build` in the root folder.
# Demo
The REPL can be used here: geel
# Examples
The examples folder contains some simple sample code written in the Geel language. Below are the examples, and whether they are currently supported (a demo of supported examples being run can be found here:
- [x] Fizzbuzz example
- [ ] Fibonacci example
# Usage
To use the REPL run: `target/debug/geel`
To run code from a file run `target/debug/geel -k [FILE]`
To run code from a string run `target/debug/geel -q [STRING]`
# Introduction
This progamming language currently has basic support for if statements (but no support for nesting yet, also only currently supports comparisons and not return values from functions), variables, and calculations. Support for other features are planned.
Some basic supported code:
## Variable assignment
```
>>> a = 5
>>> a
5
```
## Inbuilt function (print)
```
>>> qor("Some text")
"Some Text"
```
## If Statement
```
>>> a = 5
>>> hadduu a == 5:
... qor("Some Text")
...
"Some Text"
```
### For loops
```
>>> x kastoo faraq(1,10) kujira:
... qor("Some Text")
...
```
Below is a checklist of keywords, methods, and errors that are planned, as well as their status - on the left will be a python keyword (except the last which is kotlin) and on the right will be the Somali word I've selected for it:
## Keywords
- [x] and -> iyo
- [x] not -> aheyn
- [x] or -> ama
- [x] continue -> gudub
- [ ] boolean -> booliyan
- [x] break -> jooji
- [x] True -> Run
- [x] False -> Been
- [x] None -> Waxba
- [ ] import -> keen
- [ ] from -> ka
- [ ] as -> sida
### Planned usage for imports
```
>>> [LIBRARY] ka keen [PACKAGE]
>>> [LIBRARY] ka keen [PACKAGE] sida [NAME]
>>> [LIBRARY] keen
```
- [ ] try -> tijaabi
- [ ] except -> qabo
- [ ] finally -> ugu-dambeyn
- [ ] assert -> xaqiiji
- [ ] class -> kayd
- [ ] def …