Command-line language

Make command-line
programs legible.

CMLL — Command Language Made Legible — is a small programming language implemented in C. Its .cmll files can express variables, expressions, functions, control flow, arrays, objects, file operations and shell commands.

Search docs

Search all project guides

Find CMLL syntax, installation instructions or related ecosystem projects.

Install

Linux x86_64 release

The project README documents a release ZIP for the cmll executable and a separate VS Code extension package. Its complete installation recipe uses curl, unzip, sudo and optionally the VS Code code command.

cmll --version
cmll --help
cmll hello.cmll
For the current release download and full installation command, follow the project README. This page intentionally links to the canonical instructions instead of duplicating a long version-specific installer.
Read official installation instructions
First program

A CMLL script

Save as hello.cmll. CMLL ignores newlines as statement separators, so use semicolons.

project "Hello World";
set name = "CMLL";
set version = 1;

say "Hello from CMLL!";
show "Language: " + name;
show "Version: " + version;

Run it with:

cmll hello.cmll
Core syntax

Examples you can adapt

The examples below use the documented current syntax, not hypothetical language features.

Variables and expressions

set price = 12;
set quantity = 4;
set total = price * quantity;
show total;

Use set to make variable declarations clear. Values include numbers, strings, booleans, null, arrays, objects and functions.

Conditions

set score = 85;

if score >= 90 {
    say "excellent";
} else {
    if score >= 70 {
        say "good";
    } else {
        say "keep practicing";
    }
}

Conditions use braces. Separate statements inside blocks with semicolons.

Loops

set total = 0;
for (n in [1, 2, 3, 4]) {
    total = total + n;
}
show total;

The documented implementation supports array iteration with for. Do not assume general array indexing is available.

Functions

func add(a, b) {
    return a + b;
}

set result = add(20, 22);
show result;

Functions can return expression values and be called from other expressions.

Arrays and objects

set user = {
    name: "Dominex",
    active: true,
    tools: ["CMLL", "MacoraOne"]
};

show user.name;
show user.active;

Access object properties using dot notation. The current README notes that general array indexing such as items[0] is not implemented.

Comments and output

# A one-line comment
set status = true;
say "Ready";
show status;

The lexer uses # for single-line comments. say and show are documented statements.

Statement reference

Language features

FeatureExamples / notes
Declarationsset name = "CMLL";
Assignmenttotal = total + 1;
Control flowif, else, while, for
Functionsfunc, return, task
Output and shellsay, show, run
Files and environmentread file, write file, env
DataArrays, objects, dot property access and expression operators
Important details

Write for the current implementation

Semicolons matter

Newlines are ignored by the lexer. Use semicolons between statements, including statements inside blocks.

set first = 1;
set second = 2;
show first + second;

Know the supported subset

Use the source README as the authoritative feature list. For example, general array indexing is not currently implemented, even though arrays and iteration are supported.

Read the language reference
Source code

Explore CMLL