Skip to main content

A beginner-friendly programming language in Assamese โ€” transpiles to Python.

Project description

๐ŸŒฟ 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 tools โ€” run, 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

# Clone the repo
git clone https://github.com/Prabaaal/Ooju.git
cd Ooju

# Install (editable mode recommended for development)
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/
โ”œโ”€โ”€ 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.0.tar.gz (22.6 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.0-py3-none-any.whl (16.5 kB view details)

Uploaded Python 3

File details

Details for the file ooju-1.0.0.tar.gz.

File metadata

  • Download URL: ooju-1.0.0.tar.gz
  • Upload date:
  • Size: 22.6 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.0.tar.gz
Algorithm Hash digest
SHA256 802633e8735a3773aa1fb2d9fb4f6970ece0b06c88e88e6fd08d6019668142e7
MD5 540626b41b3a32162c9b2346f26c834b
BLAKE2b-256 675b0fdd12239501352f9f39a53575f6d452e402967d4798d05261f7f48d567f

See more details on using hashes here.

File details

Details for the file ooju-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: ooju-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 16.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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 19f20d6c0054181c5dba1f39a26f7985d447cf4a07b1a65e536757da97e3da7b
MD5 637e3b226d4a73eb721f030279250a09
BLAKE2b-256 a3d13ea6004b6a4208d5f65b23a25b78368f9bf93d35ec70f9c98922fb0bf4d3

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