v1.1.0 out now  ·  Windows IDE  ·  Free

कोड लिखो in Hindi or English

IndLan is a programming language and desktop IDE that lets you write real code using Hindi keywords — agar, jabtak, chhap — or the English equivalents. Now with f-strings, ** power operator, Hindi input functions, and 15+ new builtins.

Made by Bhavya S Solanki · Windows 10 / 11 · No install needed to run
myprogram.ind — IndLanIDE

What's inside

A real IDE for a real language

Hindi + English Keywords

Write agar or if, chhap or print — IndLan understands both. Switch styles anytime in the same file.

VS Code–style Editor

Tabbed editing, syntax highlighting, line numbers, and a live output console — all in one lightweight desktop window.

Run with F5

Press Run or hit F5 to execute your program. Output, errors, and aalao() / input() prompts all appear inline.

💡

F-strings & ** Operator New

String interpolation with f"Namaste {naam}!" and exponentiation with 2 ** 10. Write expressive code naturally.

🔨

Hindi Input Functions New

Use aalao(), number_dalao(), decimal_dalao(), haan_na() — fully Hindi input for strings, ints, floats, and booleans.

📦

Single .exe — No Python Required

Once built, IndLanIDE.exe runs standalone. Copy it to any Windows PC — it just works.

Setup guide

Running in three steps

01

Install Python (once, to build)

Download Python 3.10+ from python.org. On the installer, check "Add python.exe to PATH". Tkinter is included automatically.

02

Build the .exe

Unzip the download, then double-click build_exe.bat. It installs PyInstaller and compiles the app in 1–3 minutes. Your app lands at dist\IndLanIDE.exe.

03

Register .ind files (optional)

Double-click register_ind_filetype.bat to give .ind files the IndLan icon and make them open directly in the IDE. No admin rights needed.

Windows SmartScreen may warn about the new exe — click More info → Run anyway. This is normal for any new unsigned app.

Syntax showcase

Same idea, two languages

examples_hindi.ind
maano umar = 20

agar umar < 13 {
    chhap("Bachha ho")
} nahito_agar umar < 20 {
    chhap("Teenager ho")
} nahito {
    chhap("Adult ho")
}

// jabtak (while) loop
maano i = 1
jabtak i <= 5 {
    chhap(i)
    i += 1
}

// function aur f-string
kaam namaste(naam) {
    chhap(f"Namaste {naam}!")
}
namaste("Bhavya")
examples_english.ind
let age = 20

if age < 13 {
    print("You are a child")
} elif age < 20 {
    print("You are a teenager")
} else {
    print("You are an adult")
}

// while loop
let i = 1
while i <= 5 {
    print(i)
    i += 1
}

// function and f-string
fun greet(name) {
    print(f"Hello {name}!")
}
greet("Bhavya")
new_features.ind
// ** Exponentiation
let x = 2 ** 10
print(f"2 ** 10 = {x}")   // → 2 ** 10 = 1024

// F-strings
maano naam = aalao("Aapka naam? ")
maano umar = number_dalao("Aapki umar? ")
chhap(f"Namaste {naam}, aap {umar} saal ke hain!")

// Math builtins
print(sqrt(144))        // → 12.0
print(abs(-42))         // → 42
print(max(3, 7, 2))     // → 7

// String methods
let s = "hello world"
print(s.upper())         // → HELLO WORLD
print(s.replace("world", "IndLan"))

// Negative index + string repeat
let arr = [10, 20, 30]
print(arr[-1])           // → 30
print("ha" * 3)           // → hahaha

Quick reference

Keyboard shortcuts

ActionShortcut
New fileCtrl + N
Open fileCtrl + O
SaveCtrl + S
Save AsCtrl + Shift + S
Run programF5
Close tabCtrl + W
Keyword referenceHelp → Keyword Reference

Get started

Download IndLan IDE

Everything you need to build and run the IDE on Windows. Unzip, double-click build_exe.bat, and you're coding in minutes.

📦
indlan_ide_windows.zip v1.1.0
Windows 10 / 11  ·  Python 3.10+ to build  ·  No Python needed to run
Download .zip

Requirements

  • Windows 10 or 11
  • Python 3.10+ (only needed to build the .exe)
  • ~50 MB disk space

Documentation

IndLan Language Reference

Introduction

IndLan is a programming language that runs on top of Python and supports both Hindi and English keywords. You write .ind files, run them through the IndLan interpreter or the IDE, and get real program output — loops, functions, classes, I/O all work.

Every Hindi keyword has an English equivalent. You can mix them freely in the same file.

hello.ind
// English
print("Hello from IndLan!")

// Hindi
chhap("IndLan se Namaste!")

Keyword Reference

Complete English ↔ Hindi keyword table. Both forms are always accepted and can be mixed freely.

EnglishHindiMeaning
letmaanoDeclare a variable
ifagarConditional
elifnahito_agarElse-if branch
elsenahitoElse branch
whilejabtakWhile loop
forpratyekFor-each loop
inmeinLoop membership
do … whilekaro … jabtakDo-while loop
switchvibhagSwitch statement
casesthitiSwitch case
defaultanyathaSwitch default
funkaamDefine a function
returnvapasReturn a value
classvargDefine a class
newnayaCreate an instance
thisyehCurrent object reference
continuejaariSkip to next iteration
breakrokoExit loop
truesahiBoolean true
falsegalatBoolean false
nullkhaaliNull value
andaurLogical and
oryaLogical or
notnahiLogical not

Variables

Declare variables with let (English) or maano (Hindi). IndLan is dynamically typed.

variables.ind
maano naam  = "Bhavya"
maano umar  = 20
maano score = 98.5
maano khush = sahi    // true

chhap(naam, umar, score)

Conditions

Use agar / nahito_agar / nahito or if / elif / else. Curly braces are required.

conditions.ind
maano score = 75

agar score >= 90 {
    chhap("Grade: A")
} nahito_agar score >= 75 {
    chhap("Grade: B")
} nahito_agar score >= 50 {
    chhap("Grade: C")
} nahito {
    chhap("Grade: F")
}

Loops

While loop — jabtak

while.ind
maano i = 0
jabtak i < 5 {
    chhap("i =", i)
    i += 1
}

For-each loop — pratyek

foreach.ind
pratyek n mein range(5) {
    agar n == 3 { jaari }
    chhap("n =", n)
}

Do-while loop — karo … jabtak

dowhile.ind
maano j = 0
karo {
    chhap("j =", j)
    j += 1
} jabtak j < 3

Functions

Define with kaam (Hindi) or fun (English). Return with vapas / return.

functions.ind
kaam jodo(a, b) {
    vapas a + b
}

kaam namaste(naam) {
    chhap(f"Namaste, {naam}!")
}

chhap(jodo(4, 5))      // → 9
namaste("Bhavya")        // → Namaste, Bhavya!

Classes

Define with varg / class. Constructor is init. Use yeh / this for the instance. Create with naya / new.

classes.ind
varg Animal {
    kaam init(naam, awaaz) {
        yeh.naam  = naam
        yeh.awaaz = awaaz
    }
    kaam bolo() {
        chhap(f"{yeh.naam} bolta hai {yeh.awaaz}")
    }
}

maano kutta = naya Animal("Kutta", "Bhow")
kutta.bolo()   // → Kutta bolta hai Bhow

Switch — vibhag / sthiti

vibhag / switch for multi-branch matching. sthiti for each case, anyatha as fallback.

switch.ind
maano din = 3
vibhag din {
    sthiti 1 { chhap("Somvaar") }
    sthiti 2 { chhap("Mangalvaar") }
    sthiti 3 { chhap("Budhvaar") }
    anyatha   { chhap("Pata nahi") }
}

Input / Output

Print with chhap() / print(). Four typed input functions — each has a Hindi alias:

EnglishHindiReturns
input(prompt?)aalao(prompt?)string
input_int(prompt?)number_dalao(prompt?)integer
input_float(prompt?)decimal_dalao(prompt?)float
input_bool(prompt?)haan_na(prompt?)bool (true/false)
io.ind
maano naam  = aalao("Aapka naam kya hai? ")
maano umar  = number_dalao("Aapki umar? ")
maano khush = haan_na("Kya aap khush hain? (true/false): ")

chhap(f"Namaste {naam}! Umar: {umar}")

agar khush {
    chhap("Bahut achha!")
} nahito {
    chhap("Chinta mat karo!")
}

In the IDE, input prompts appear in the output panel's >>> box at the bottom — no terminal needed.

F-strings New in v1.1

Embed any expression inside a string using f"..." syntax. Works with both " and ' quotes, and with all Hindi keywords.

fstrings.ind
maano naam = "Bhavya"
maano umar = 17

// Basic interpolation
chhap(f"Namaste {naam}!")

// Expressions inside {}
chhap(f"Agli baar aap {umar + 1} ke honge.")
chhap(f"2 ka 10 ghaat = {2 ** 10}")

// Method calls inside {}
chhap(f"Bada naam: {naam.upper()}")

Built-in Functions Updated in v1.1

All built-in functions available in IndLan:

I/O

print(...) / chhap(...)Print values to output
input(p?) / aalao(p?)Read string from user
input_int(p?) / number_dalao(p?)Read integer from user
input_float(p?) / decimal_dalao(p?)Read float from user
input_bool(p?) / haan_na(p?)Read true/false from user

Type Conversion

str(v)Convert to string
int(v)Convert to integer
float(v)Convert to float
bool(v)Convert to boolean
char(v)int→char or char→int (ord)
type(v)Return type name as string

Collections

len(v)Length of string/list/dict
range(n) / range(a,b,s)List of integers
append(lst, v)Add to end of list
pop(lst, i?)Remove & return item
insert(lst, i, v)Insert at index
remove(lst, v)Remove first occurrence
reverse(lst)Reverse list in place
sort(lst)Sort list in place
keys(d) / values(d)Dict keys or values
has(col, v)Check if v in list/dict/str

Math

abs(n)Absolute value
sqrt(n)Square root
max(a,b,...) / max(lst)Maximum value
min(a,b,...) / min(lst)Minimum value
floor(n) / ceil(n)Round down / up
round(n, digits?)Round to nearest

String Methods (dot syntax)

s.upper() / s.lower()Change case
s.strip() / s.lstrip() / s.rstrip()Remove whitespace
s.replace(old, new)Replace substring
s.split(sep?)Split into list
s.startswith(x) / s.endswith(x)Check prefix / suffix
s.find(x)Find index of substring

List Methods (dot syntax)

lst.append(v)Add to end
lst.pop(i?)Remove & return item
lst.sort()Sort in place
lst.reverse()Reverse in place
lst.contains(v)Check membership
lst.len()Length of list

Operators & Extras New in v1.1

SyntaxDescriptionExample
**Exponentiation (right-associative)2 ** 10 → 1024
f"...{expr}..."F-string interpolationf"Hi {naam}!"
str * intString repetition"ha" * 3 → "hahaha"
lst[-1]Negative index (from end)[10,20,30][-1] → 30
+= -= *= /=Compound assignmenti += 1

README / About

About IndLan

IndLan (Indian Language) is a hobbyist programming language built in Python, designed to make coding feel natural for Hindi speakers. It is not a toy — it has variables, conditionals, loops, functions, classes, a full desktop IDE, f-strings, 20+ builtins, and Hindi input functions. The goal is to lower the barrier for people who think in Hindi but are expected to code in English.

🎯 Why IndLan?

Most beginner programmers in India learn to code by translating their logic from Hindi into English keywords. IndLan removes that translation step — write exactly what you're thinking, in your own language.

⚙ How it works

IndLan is a tree-walk interpreter. The lexer tokenises .ind files, the parser builds an AST, and the interpreter walks it. The IDE wraps all of this in a Tkinter UI compiled to a standalone .exe via PyInstaller.

📂 Project structure

lexer.py — tokeniser  ·  ind_parser.py — parser  ·  ast_nodes.py — AST nodes  ·  interpreter.py — evaluator  ·  indlan_ide.py — desktop IDE

🚀 Roadmap ideas

File I/O  ·  Error messages in Hindi  ·  Web REPL  ·  macOS / Linux builds  ·  Standard library modules  ·  Lambda / anonymous functions

Bhavya S Solanki
bhavyasolanki.online
Creator of IndLan — building tools that make programming more accessible for Hindi speakers. Based in Gujarat, India.

Changelog

Version history

v1.1.0
June 2026
Latest

Language & IDE Expansion

  • F-stringsf"Namaste {naam}!" — embed any expression in strings
  • Exponentiation operator2 ** 10 = 1024, right-associative
  • Hindi input aliasesaalao(), number_dalao(), decimal_dalao(), haan_na()
  • Typed inputinput_int(), input_float(), input_bool() with validation
  • 15+ new builtinsabs, sqrt, max, min, floor, ceil, round, bool, char, insert, remove, reverse, sort, has
  • String methods via dot syntax — .upper(), .lower(), .strip(), .replace(), .split(), .startswith(), .endswith(), .find()
  • List methods via dot syntax — .append(), .pop(), .sort(), .reverse(), .contains()
  • String repetition"ha" * 3"hahaha"
  • Negative indexesarr[-1] returns last element
  • Bug fixinput() in IDE now correctly uses redirected stdin/stderr — no more RuntimeError: lost sys.stderr
  • Bug fixindlan.py now reads files as UTF-8 — no more UnicodeDecodeError for Hindi source files
  • IDE syntax highlighting updated for all new builtins and Hindi aliases
  • Keyword Reference dialog expanded with builtins, operators, and extras sections
v1.0.0
June 2026
Stable

Initial Release

  • Full Hindi + English keyword support — agar, jabtak, pratyek, karo, vibhag, varg and more
  • VS Code–style desktop IDE with tabbed editing, syntax highlighting, and line numbers
  • Live output console with inline input() support — no terminal needed
  • Run / Stop controls — F5 to run, programs execute on a background thread
  • Built-in Keyword Reference (Help → Keyword Reference)
  • PyInstaller build pipeline — produces a standalone IndLanIDE.exe
  • .ind file association via register_ind_filetype.bat
  • Do-while loops, switch statements, classes, closures, lists, dicts
v0.3.0
May 2026
Stable

IDE Beta

  • Added Tkinter-based IDE — replacing the CLI-only workflow
  • Syntax highlighting for Hindi and English keywords
  • Output panel with real-time program output
  • Tab management: open multiple .ind files side by side
  • Keyboard shortcut system: F5, Ctrl+S, Ctrl+N, Ctrl+O, Ctrl+W
v0.2.0
April 2026
Stable

Language Expansion

  • Added class system: varg, init, yeh, naya
  • Added do-while loop: karo … jabtak
  • Added switch statement: vibhag / sthiti / anyatha
  • Added jaari (continue) and roko (break)
  • Improved error messages with line numbers
v0.1.0
March 2026
Stable

First Working Interpreter

  • Core lexer, parser, and AST interpreter in Python
  • Variables (maano / let), arithmetic, comparisons
  • If / elif / else (agar / nahito_agar / nahito)
  • While loop (jabtak) and for-each (pratyek … mein)
  • Functions with return values (kaam / vapas)
  • Print: chhap() / print() — CLI REPL and file runner