v0.1.3 · npm & PyPI
kemlang-py is a programming language with real Gujarati keywords. Write kem bhai, run everywhere.
13
keywords
3
install methods
3.10+
Python
jskkem bhai // read the user's name aa naam che bapu tame bolo bhai bol "kem cho, " + naam + "!" // count from 1 to 5 aa i che 1 farvu { bhai bol i i che i + 1 } jya sudhi i < 6 aavjo bhai
Translation
kemlang-py follows the same logic as Python - just with Gujarati words in place of English ones. Every concept maps one-to-one.
print("Hello!")bhai bol "Hello!"
x = 42
aa x che 42
if age >= 18:
print("adult")
else:
print("minor")jo age >= 18 {
bhai bol "adult"
} nahi to {
bhai bol "minor"
}while i < 5:
print(i)
i += 1farvu {
bhai bol i
i che i + 1
} jya sudhi i < 5name = input()
aa name che bapu tame bolo
Learn by building
Every concept introduced step by step - from the bare skeleton to a full interactive program with input, conditionals, and loops.
Every kemlang-py program opens with kem bhai and closes with aavjo bhai. Think of it as saying "hello, brother" and "goodbye, brother".
jskkem bhai aavjo bhai
bhai bol means "brother, say" - it prints whatever comes after it. Strings go in double or single quotes.
output
kem cho, duniya!
jskkem bhai bhai bol "kem cho, duniya!" aavjo bhai
aa means "this", che means "is". So aa naam che "Sanket" reads: this naam is "Sanket".
output
kem cho, Sanket!
jskkem bhai aa naam che "Sanket" bhai bol "kem cho, " + naam + "!" aavjo bhai
bapu tame bolo means "father, you say" - it waits for the user to type something and returns it as a string.
output
What is your name? > Riya kem cho, Riya!
jskkem bhai bhai bol "What is your name?" aa naam che bapu tame bolo bhai bol "kem cho, " + naam + "!" aavjo bhai
jo means "if", nahi to means "otherwise". Braces wrap the block - no colons, no indentation rules.
output
B grade - thik che
jskkem bhai aa score che 88 jo score >= 90 { bhai bol "A grade - saras!" } nahi to { jo score >= 75 { bhai bol "B grade - thik che" } nahi to { bhai bol "Keep practising" } } aavjo bhai
farvu means "to do", jya sudhi means "as long as". The condition goes at the end, checked after each iteration.
output
1 2 3 4 5
jskkem bhai aa i che 1 farvu { bhai bol i i che i + 1 jo i > 5 { tame jao } } jya sudhi bhai chhe aavjo bhai
Language reference
kemlang-py is intentionally small. Every keyword has a clear Gujarati meaning - no guessing, no arbitrary symbols to memorise.
kem bhaiprogram startaa = this · che = isaavjo bhaiprogram endaavjo = goodbyeaa x che valdeclarebhai = brother · bol = sayx che valreassignsame, without aabhai bol exprprintbapu = father · bolo = saybapu tame boloread inputreturns a stringjo cond { }ifjo = ifnahi to { }elsenahi to = otherwisefarvu { } jya sudhi condwhile loopjya sudhi = while/untiltame jaobreaktame = you · jao = goaagal vadocontinueaagal = forward · vado = movebhai chhe / bhai nathitrue / falsealso: true / falseArchitecture
kemlang-py is a tree-walking interpreter written in Python. Your source code goes through three stages before producing output.
01
kemlang/lexer.py
Source code is scanned into a stream of typed tokens. Multi-word keywords like kem bhai are matched first, then single keywords, literals, and operators.
02
kemlang/parser.py
The token stream feeds a recursive-descent parser that produces an Abstract Syntax Tree of typed statement and expression nodes.
03
kemlang/interpreter.py
A tree-walking interpreter visits each node and executes it. Variables live in an Environment dict. Errors carry line and column info.
CLI
The kem CLI covers running, formatting, inspecting tokens, and visualising the AST - all out of the box.
kem cho, Sanket! 1 2 3 4 5
KemLang REPL v0.1.3 >>> bhai bol 1 + 1 2 >>>
Formatted hello.jsk
KEM_BHAI 'kem bhai' 1:0 BHAI_BOL 'bhai bol' 2:2 STRING '"Hello!"' 2:10 AAVJO_BHAI 'aavjo bhai' 3:0
Program
└── Print
└── Literal: "Hello!"Installation
Pick npm or pip - both install the same kem binary. Works on macOS, Linux, and Windows.
install
verify
Requires Node.js 14+ and Python 3.10+
Features
A complete language environment - interpreter, formatter, REPL, and token inspector - all in one install.
Real Gujarati words mapped to real programming concepts - kem bhai, bhai bol, jo, nahi to, farvu.
One install command, one run command. No runtimes to configure, no project files to create.
Install via npm or pip. The same kem CLI on macOS, Linux, and Windows.
kem run · kem repl · kem fmt · kem tokens · kem ast. Everything in one binary.
MIT licensed, built in Python with Typer and Rich. Small, readable codebase.
Built for Gujarati speakers learning to code - and programmers curious about language design.
Roadmap
kemlang-py is under active development. These features are planned for upcoming releases. Contribute on GitHub.
kaam add(a, b) { aapo a + b }aa x = 10bhai bol f"kem cho, {naam}!"aa nums che [1, 2, 3]aa p che {"name": "Sanket"}aa inp che bhai sambhalWant to help? The codebase is small and well-documented. Read the docs then open a PR.
Get started
Start writing Gujarati code today. Install in under a minute, run your first program in five.