Skip to main content

A beginner-friendly programming language in Assamese — transpiles to Python.

Project description

Ooju logo — Bengali উজু in a glass sphere

Ooju · উজু

A beginner-friendly programming language written in Assamese

Version Python License Tests

"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 toolsrun, compile, repl, and version
  • 🔒 Safe execution — sandboxed builtins, no exec surprises
  • 🎨 VS Code support — syntax highlighting for .oj files
  • 📚 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:

  1. Fork the repo
  2. Create a feature branch: git checkout -b feature/your-feature
  3. Commit your changes: git commit -m "feat: add your feature"
  4. Push and open a Pull Request

Please ensure all tests pass before submitting.


📄 License

MIT © Prabal Gogoi


Made with ❤️ for Assamese learners

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ooju-1.0.1.tar.gz (25.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ooju-1.0.1-py3-none-any.whl (18.5 kB view details)

Uploaded Python 3

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

Hashes for ooju-1.0.1.tar.gz
Algorithm Hash digest
SHA256 55a616c84552ccbb21c7fe0f1e6142b5d5121020918ffeaf78323099688131bb
MD5 d04230f52764138ec5e7bc853a4b2239
BLAKE2b-256 48f3fd81dfa7b9ea403745339334ea59ad1e167db3d5a9c205699015a1ba6c95

See more details on using hashes here.

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

Hashes for ooju-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e2b9b7a25a5f7fb852e5e63f2f5cfb439a76a0351d7561212e2bde5bb09dfa67
MD5 846a9e090771bf1a821c97b401b62b31
BLAKE2b-256 0790909b708b87ab9d7458026202e1b086a2320f5d2090cd941d2abc45180842

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page