A simple, expressive programming language that transpiles to Python
Project description
Orlang
A simple, expressive programming language that transpiles to Python. Orlang is inspired by the Afaan Oromo language, using its syntax and keywords to create a unique and culturally relevant programming experience.
Features
- Clean, Afaan Oromo-inspired syntax
- Support for basic data types (integers, strings, booleans)
- Variable declarations and assignments
- Control flow statements (if/else, while loops, for loops)
- Transpiles to readable Python code
Installation
Using pip
pip install orlang
From Source
Prerequisites
- Python 3.13 or higher
- uv package manager (optional)
Setup
- Clone the repository:
git clone https://github.com/firo1919/orlang.git
cd orlang
- Install the package in development mode:
# Using pip
pip install -e .
# Or using uv
uv pip install -e .
This will install the orlang command-line tool globally.
Usage
Command Line
Run an Orlang file:
orlang path/to/your/file.orl
Example Code
// Variable declaration
bakka count = 0;
// While loop
yeroo (count < 5) {
barreessi count;
count = count + 1;
}
// For loop
hama (bakka i = 0; i < 5; i = i + 1) {
barreessi i;
}
Language Specification
Afaan Oromo Keywords
Orlang uses Afaan Oromo words as keywords to make programming more accessible and culturally relevant:
bakka- Variable declaration (meaning "place" or "location")barreessi- Print statement (meaning "write")yoo- If statement (meaning "if")kanbiroo- Else statement (meaning "otherwise")yeroo- While loop (meaning "time" or "when")hama- For loop (meaning "until")dhugaa- True (meaning "true")soba- False (meaning "false")duwwaa- Null (meaning "empty")
Variables
Variables must be declared using the bakka keyword:
bakka name = "value";
Control Flow
If Statements
yoo (condition) {
// code
} kanbiroo {
// code
}
While Loops
yeroo (condition) {
// code
}
For Loops
hama (bakka i = 0; i < limit; i = i + 1) {
// code
}
Operators
Arithmetic
+- Addition-- Subtraction*- Multiplication/- Division
Comparison
==- Equal to!=- Not equal to>- Greater than<- Less than>=- Greater than or equal to<=- Less than or equal to
Logical
fi- Logical AND (meaning "and")ykn- Logical OR (meaning "or")
License
This project is licensed under the MIT License - see the LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file orlang-0.1.1.tar.gz.
File metadata
- Download URL: orlang-0.1.1.tar.gz
- Upload date:
- Size: 6.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
14ac046ec4f090045ed9370835810199f7cfdd0dc76c0c78ed418ee8e9d9f28c
|
|
| MD5 |
61d6af786054543b3e1a25e6373db5e2
|
|
| BLAKE2b-256 |
4c26c22a00e3dce1979c0ae0407c855e251f87e9bb715330d6b769550ec4ec03
|
File details
Details for the file orlang-0.1.1-py3-none-any.whl.
File metadata
- Download URL: orlang-0.1.1-py3-none-any.whl
- Upload date:
- Size: 6.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4f4b8f79a03e4536922a33d78232ac80604974ae99d307d23ee4773cd390e9cd
|
|
| MD5 |
7362ce8e740daa34bb4bb1f57e994964
|
|
| BLAKE2b-256 |
49273f32627316f75dd27d25a00aa9f8f8be9e899c74d46fe0812fc36391c77b
|