abhinu-dev_basic-ictl

Python License Status GitHub last commit GitHub issues

Abhinu.Dev Basic ICTL

Abhinu.Dev Basic ICTL Banner

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’s eval() 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 of eval().


Table of Contents

See the History for full project changes.


About

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.

Why ICTL?


Features

Core Language Features:

🛠️ Developer Tools:


Quick Start

1. Create a Simple Program

Create a file named hello.ictl:

Program.Main {
    Terminal.Echo("Hello, World!")
}

2. Run It

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

3. Output

Hello, World!

Try Interactive Mode

# 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.


Web Editor

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.


Installation

Choose one of the two installation paths below, if you want to install it:

The easiest way to get started! Each release includes:

Download from Releases

  1. Go to GitHub Releases
  2. Download the latest release files for your platform

Option A: Standalone Executable (Easiest - because of constant updates)

# Download ICTL.exe (or your version)
ICTL.exe your_program.ictl

No Python installation required!

Option B: System-wide Installation (Windows)

  1. Download the Inno Setup installer (e.g., ICTL-v1.0s-installer.exe)
  2. Run the installer and follow the prompts
  3. Add ICTL to your system PATH during installation (will be added automatically, cross check)
  4. Use ictl from any command prompt:
ictl your_program.ictl

Option C: Install VS Code Extension

  1. Download the .vsix file from the release
  2. In VS Code, press Ctrl+Shift+P and run Extensions: Install from VSIX...
  3. Select the downloaded VSIX file

💻 Path 2: Development - From Source Code

For developers who want to modify or contribute to the language.

Prerequisites

Installation Steps

  1. Clone the Repository
git clone https://github.com/indiancoder3/abhinu-dev_basic-ictl.git
cd abhinu-dev_basic-ictl
  1. Navigate to ICTL Directory
cd code
  1. Run Programs
# Execute a file
python main.py your_program.ictl

# Or use interactive mode
python main.py
  1. Install VS Code Extension (optional)

See VS Code Extension section for setup instructions.


Language Basics

Variables

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)
}

String Operations

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

Terminal I/O

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

Mathematics

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: >, <, >=, <=, ==, !=

Conditionals

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!")
    }
}

Loops

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 Reference

Terminal Commands

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

Variable Commands

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)

Math Commands

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)

Control Flow

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"))

Time Commands

| 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")


VS Code Extension

The ICTL language is supported in VS Code with syntax highlighting, code snippets, and language configuration.

Installation

  1. Open Abhinu.Dev Basic ICTL Language Support in your browser.
  2. Press Install, it will ask if you do have VS Code. Continue, and let the website open VS Code.
  3. You will see the extension. Install it.

Or:

  1. Download the extension VSIX file the latest release.
  2. In VS Code, press Ctrl+Shift+P and run Extensions: Install from VSIX...
  3. Select the downloaded VSIX file.

Features

Usage

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!")
}

Examples

The repository includes several complete examples in ictl/examples/:

Running Examples

ictl examples/basic_test.ictl
ictl examples/welcome_test.ictl

Building from Source

Requirements

Setup

# 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

Contributing

Contributions are welcome! Whether it’s bug fixes, new features, examples, or documentation improvements, please feel free to contribute.

How to Contribute

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/your-feature
  3. Make your changes
  4. Test thoroughly
  5. Commit with clear messages: git commit -am 'Add new feature'
  6. Push to the branch: git push origin feature/your-feature
  7. Submit a Pull Request

Areas We Need Help With


Troubleshooting

Common Issues

FileNotFoundError: File not found

Syntax Error

Variable not defined

Invalid expression (and includes the variable name) in Math


Building Story

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!

The Name Lore

The Goals of the Language

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…

License

This project is licensed under the GNU GPL v3 — a copyleft open-source license. Orignally, it was licensed under MIT.

For Package Users

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/

Credits

Special thanks to:


Contact & Support

For questions, issues, or suggestions:


Happy Coding! 🚀

© IndianCoder3 2026