A beginner-friendly programming language in Assamese — transpiles to Python.
Project description
Ooju · উজু
A beginner-friendly programming language written in Assamese
"Programming, made natural in Assamese"
Ooju (উজু — meaning easy) is a transpiled language that lets beginners write programs using Assamese keywords, lowering the barrier to coding for Assamese-speaking communities. It transpiles cleanly to Python through a full Tokenizer → Parser → Code Generator pipeline.
✨ Features
- 🗣️ Assamese keywords — write code in your own language
- ⚡ Runs on Python — zero extra runtime needed
- 🛠️ CLI tools —
run,compile,repl, andversion - 🔒 Safe execution — sandboxed builtins, no
execsurprises - 🎨 VS Code support — syntax highlighting for
.ojfiles - 📚 Teaching-friendly — clear, helpful error messages
📦 Installation
pip install ooju
Development Setup
git clone https://github.com/Prabaaal/Ooju.git
cd Ooju
pip install -e .
🚀 Quick Start
Create a file called hello.oj:
kaam greet(name):
kua("Namaskar, " + name)
dhora naam = lobo("Tomar naam ki? ")
greet(naam)
Run it:
ooju run hello.oj
See the generated Python:
ooju run hello.oj --debug
Compile to a .py file:
ooju compile hello.oj
📖 Language Reference
Variables
dhora x = 5
dhora greet = "Namaskar!"
Output & Input
kua("Namaskar!") # print
dhora name = lobo("Ki?) # input
Functions
kaam add(a, b):
return a + b
Conditionals
jodi (x > 5) hoi, tetia:
kua("besi")
nohole jodi (x > 3) hoi, tetia:
kua("moddhyom")
nohole ba:
kua("kom")
Loops
# Repeat N times
3 bar kora:
kua("hello")
# While loop
jetialoike (x < 10) bare bare kora:
dhora x = x + 1
Comments
// This is a single-line comment
///
This is a
block comment
///
⚠️ Error Messages
Ooju gives beginner-friendly errors with context and suggestions:
OojuError:
File : hello.oj
Line : 3
Code : dhora naam
Issue: missing assignment after 'dhora'
Help : Did you mean: dhora x = 10 ?
📂 Project Structure
Ooju/
├── assets/ # Branding (logo)
├── ooju/ # Core language package
│ ├── tokenizer.py # Lexer — text → tokens
│ ├── parser.py # Parser — tokens → AST
│ ├── codegen.py # Code generator — AST → Python
│ ├── transpiler.py # Pipeline orchestrator
│ ├── cli.py # Command-line interface
│ ├── repl.py # Interactive REPL
│ └── stdlib.py # Safe builtins sandbox
├── examples/ # Sample .oj programs
├── tests/ # Pytest test suite
├── editors/vscode/ # VS Code syntax extension
├── pyproject.toml
└── README.md
🧪 Running Tests
pip install pytest
pytest tests/
🎨 Editor Support
Syntax highlighting for .oj files is available for VS Code.
cd editors/vscode
npm install
npm run package # builds the .vsix
code --install-extension ooju-vscode-*.vsix
🤝 Contributing
Contributions are welcome! Here's how to get started:
- Fork the repo
- Create a feature branch:
git checkout -b feature/your-feature - Commit your changes:
git commit -m "feat: add your feature" - Push and open a Pull Request
Please ensure all tests pass before submitting.
📄 License
MIT © Prabal Gogoi
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 ooju-1.0.1.tar.gz.
File metadata
- Download URL: ooju-1.0.1.tar.gz
- Upload date:
- Size: 25.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
55a616c84552ccbb21c7fe0f1e6142b5d5121020918ffeaf78323099688131bb
|
|
| MD5 |
d04230f52764138ec5e7bc853a4b2239
|
|
| BLAKE2b-256 |
48f3fd81dfa7b9ea403745339334ea59ad1e167db3d5a9c205699015a1ba6c95
|
File details
Details for the file ooju-1.0.1-py3-none-any.whl.
File metadata
- Download URL: ooju-1.0.1-py3-none-any.whl
- Upload date:
- Size: 18.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e2b9b7a25a5f7fb852e5e63f2f5cfb439a76a0351d7561212e2bde5bb09dfa67
|
|
| MD5 |
846a9e090771bf1a821c97b401b62b31
|
|
| BLAKE2b-256 |
0790909b708b87ab9d7458026202e1b086a2320f5d2090cd941d2abc45180842
|