A basic programming language made for making the learning journey easy! Contributions are welcome!
Python (for building the language interpreter) | IndianCoder3 | Command Reference | Build Story | Web Editor
[!CAUTION] This programming language is still in development. Some features (such as
Math.Eval()) used Python’seval()in older versions, which could execute arbitrary code.⚠️ This applies only to ICTL v1.0 and below. Starting from v1.1.0,
Math.Eval()uses a custom math parser instead ofeval().
See the History for full project changes.
Abhinu.Dev Basic ICTL is a beginner-friendly programming language designed to make the learning journey easy and enjoyable. Whether you’re just starting out or teaching others to code, ICTL provides a clean, intuitive syntax that focuses on core programming concepts like variables, loops, conditionals, and basic mathematics.
The language is built on Python and runs as an interpreter, making it easy to execute .ictl files directly or use the interactive shell for learning.
✨ Core Language Features:
🛠️ Developer Tools:
.ictl script files from command lineCreate a file named hello.ictl:
Program.Main {
Terminal.Echo("Hello, World!")
}
If you installed from Release (Easiest):
ictl hello.ictl
# or if using standalone
ICTL-v1.0s.exe hello.ictl
If you’re developing from source:
python main.py hello.ictl
Hello, World!
# From release
ictl
# Or from source
python main.py
This drops you into an interactive shell where you can execute ICTL commands line by line.
I also made a web editor interface for testing out ICTL without installing it! Simply visit this link. If the link does not work, try https://basic-ictl-web-studio.onrender.com/
I recommend using the web interface to avoid installation, as there are updates often.
It is based upen Monace, letting me build a autocomplete and syntax hilighting system, and also a ribbon, and a status bar at the bottom.
Choose one of the two installation paths below, if you want to install it:
The easiest way to get started! Each release includes:
# Download ICTL.exe (or your version)
ICTL.exe your_program.ictl
No Python installation required!
ICTL-v1.0s-installer.exe)ictl from any command prompt:ictl your_program.ictl
.vsix file from the releaseCtrl+Shift+P and run Extensions: Install from VSIX...For developers who want to modify or contribute to the language.
pip (Python package installer)git clone https://github.com/indiancoder3/abhinu-dev_basic-ictl.git
cd abhinu-dev_basic-ictl
cd code
# Execute a file
python main.py your_program.ictl
# Or use interactive mode
python main.py
See VS Code Extension section for setup instructions.
Variables store data that you can use throughout your program.
Declaring a Variable:
Variables.New("MyVariable") # Make sure, quotes here, and no spaces!
Some parts of the documentation have missed quotes, so please understand there should be quotes. Although due to a bug, it works even without quotes, it will be patched in a future update.
Assigning a Value:
Variables.MyVariable = "Hello"
Variables.Counter = 42
Variables.Pi = 3.14
Using Variables:
Program.Main {
Variables.New("Name")
Variables.Name = "Alice"
Terminal.Echo("Hello, " + Variables.Name)
}
Strings are enclosed in double quotes and can be concatenated with +:
Program.Main {
Variables.New(FirstName)
Variables.New(LastName)
Variables.FirstName = "John"
Variables.LastName = "Doe"
Terminal.Echo(Variables.FirstName + " " + Variables.LastName)
}
For those who are thinking that using + directly can add too, try 2+2 directly. It will return 22, as Math is suppposed to be evaluated via Math.Eval
Output (Echo):
Terminal.Echo("This is printed to the screen")
Terminal.Echo(Variables.Counter)
Input (Ask):
Program.Main {
Variables.New("Name")
Variables.Name = Terminal.Ask("What is your name? ")
Terminal.Echo("Nice to meet you, " + Variables.Name)
}
Styling Output:
Terminal.Style("green")
Terminal.Echo("This text is green!")
Terminal.Style("red")
Terminal.Echo("This text is red!")
Terminal.Style("reset")
Available styles: red, green, blue, yellow, cyan, magenta, bold, reset
Evaluating Expressions:
Program.Main {
Variables.New("Result")
Variables.Result = Math.Eval(10 + 5)
Terminal.Echo(Variables.Result) # Output: 15
Variables.Result = Math.Eval((2 + 3) * 4)
Terminal.Echo(Variables.Result) # Output: 20
Variables.Result = Math.Eval(100 / 4)
Terminal.Echo(Variables.Result) # Output: 25.0
}
Supported operators: +, -, *, /, parentheses ()
Comparing Numbers:
Program.Main {
Variables.New("X")
Variables.X = 10
Program.If(Math.Compare(Variables.X, ">", 5)) {
Terminal.Echo("X is greater than 5")
}
}
Operators: >, <, >=, <=, ==, !=
If Statement with Else:
Program.Main {
Variables.New("Age")
Variables.Age = Terminal.Ask("How old are you? ")
Program.If(Math.Compare(Variables.Age, ">=", 18)) {
Terminal.Echo("You are an adult")
}
Program.Else {
Terminal.Echo("You are a kid!")
}
}
Nested Conditionals:
Program.If(Math.Compare(Variables.Score, ">", 90)) {
Terminal.Echo("Grade: A")
Program.If(Math.Compare(Variables.Score, "==", 100)) {
Terminal.Echo("Perfect score!")
}
}
Program.Else {
Program.If(Math.Compare(Variables.Score, ">", 80)) {
Terminal.Echo("Grade: B, you were left out just by a few marks!")
}
}
Counted Loop:
Program.Main {
Program.Loop(5) {
Terminal.Echo("This runs 5 times")
}
}
Infinite Loop with Break:
Program.Main {
Variables.New(Counter)
Variables.Counter = 0
Program.ForeverLoop {
Variables.Counter = Math.Eval(Variables.Counter + 1)
Terminal.Echo("Count: " + Variables.Counter)
Program.If(Math.Compare(Variables.Counter, ">=", 10)) {
Program.BreakLoop
}
}
}
Continue Statement:
Program.Loop(10) {
Program.If(Math.Compare(Variables.i, "==", 5)) {
Program.Continue
}
Terminal.Echo(Variables.i)
}
Additional improvement for the examples is needed, contributions here are welcome!
| Command | Description | Example |
|---|---|---|
Terminal.Echo(<expr>) |
Print to console | Terminal.Echo("Hello") |
Terminal.Ask(<prompt>) |
Get user input | Variables.X = Terminal.Ask("Enter value: ") |
Terminal.Style(<style>) |
Set text color/style | Terminal.Style("green") |
Terminal.Clear |
Clear the terminal | Terminal.Clear |
| Command | Description | Example |
|---|---|---|
Variables.New(<name>) |
Declare variable | Variables.New(MyVar) |
Variables.<name> = <expr> |
Assign value | Variables.MyVar = 42 |
Variables.<name> |
Read variable | Terminal.Echo(Variables.MyVar) |
| Command | Description | Example |
|---|---|---|
Math.Eval(<expr>) |
Calculate expression | Math.Eval(10 + 5 * 2) |
Math.Compare(<a>, <op>, <b>) |
Compare numbers | Math.Compare(X, ">", 5) |
Data.Compare(<a>, <b>) |
Compare values (as strings) | Data.Compare(Input, "yes") |
Math.Random(<min>, <max>) |
Output a random number in the range | Math.Random(1, 100) |
| Command | Description | Example |
|---|---|---|
Program.Main { ... } |
Program entry point | Program.Main { ... } |
Program.If(<cond>) { ... } |
Conditional execution | Program.If(cond) { ... } |
Program.Else { ... } |
Else for the If | Program.Else { ... } |
Program.Loop(<n>) { ... } |
Loop N times | Program.Loop(10) { ... } |
Program.ForeverLoop { ... } |
Infinite loop | Program.ForeverLoop { ... } |
Program.BreakLoop |
Exit loop | Program.BreakLoop |
Program.Continue |
Next iteration | Program.Continue |
Program.Not(<cond>) |
Flip a condition | Program.Not(Data.Compare("h", "h")) |
| Command | Description | Example |
|———|————-|———|
| Time.Wait(<duration in sec>) | Wait for seconds | Time.Wait(2.5) |
| Time.Current(<format>) | Fetch current time in a format | Variables.Time = Time.Current("hh:mm tt")
The ICTL language is supported in VS Code with syntax highlighting, code snippets, and language configuration.
Or:
Ctrl+Shift+P and run Extensions: Install from VSIX...Once installed, VS Code automatically recognizes .ictl files with full language support.
Create a new file example.ictl:
Program.Main {
Terminal.Echo("Hello from VS Code!")
}
The repository includes several complete examples in ictl/examples/:
ictl examples/basic_test.ictl
ictl examples/welcome_test.ictl
# Clone the repository
git clone https://github.com/indiancoder3/abhinu-dev_basic-ictl.git
cd abhinu-dev_basic-ictl
# Navigate to ICTL directory
cd code
# Run the interpreter
python main.py # Interactive mode
python main.py test.ictl # Execute a file
Contributions are welcome! Whether it’s bug fixes, new features, examples, or documentation improvements, please feel free to contribute.
git checkout -b feature/your-featuregit commit -am 'Add new feature'git push origin feature/your-featureFileNotFoundError: File not found
Syntax Error
Program.Main { ... } wraps all code (not mandatory, but recommended since v1.1.0, older versions require it)Variable not defined
Variables.New(Name) before useInvalid expression (and includes the variable name) in Math
I started off with Scratch and then explored Python and HTML. I noticed that switching from Scratch to Python is easy for some things, but there’s no simple graphics built-in (unless you use PyGame or Turtle).
So, I wanted a language that’s easy to understand for beginners. That’s how Abhinu.Dev Basic ICTL was born!
Currently, there is no GUI or something, but I am trying to implement it! So, Any help or contributions are welcome! We need graphics for this. Right now, I can think of the Small Basic Turtle, but let’s see…
This project is licensed under the GNU GPL v3 — a copyleft open-source license. Orignally, it was licensed under MIT.
If you use ICTL in your project, simply include:
This project uses Abhinu.Dev Basic ICTL, licensed under the GNU GPL v3 License.
Copyright (c) 2026 IndianCoder3
For full license details, visit: https://www.gnu.org/licenses/
Special thanks to:
For questions, issues, or suggestions:
Happy Coding! 🚀
© IndianCoder3 2026