Skip to main content

A lightweight, English-like scripting language.

Project description

ShellLite Logo

ShellLite

The English-Like Programming Language

ShellLite is a modern programming language designed to prioritize human readability. It replaces complex syntax with natural English commands, making software development accessible and maintainable. With version 0.05.0, ShellLite now supports native compilation via LLVM alongside its interpreted mode.

License: MIT Version


Table of Contents


Features

Feature Description
Natural Syntax Write code that reads like English
Dynamic Typing No type declarations required
Multi-Target Compilation Compile to LLVM, JavaScript, or Python
Python Integration Use any Python library via The Bridge
GUI Framework Build desktop apps with The Canvas
Package Manager Manage dependencies with The Universe
Web Framework Built-in HTTP server and routing
Interactive REPL Explore and test code interactively

Architecture

flowchart TB
    subgraph Input
        A[Source Code .shl]
    end
    
    subgraph Frontend
        B[Lexer]
        C[Parser]
        D[AST]
    end
    
    subgraph Backend
        E{Execution Mode}
        F[Interpreter]
        G[LLVM Codegen]
        H[JS Compiler]
        I[Python Transpiler]
    end
    
    subgraph Output
        J[Runtime Execution]
        K[Native Binary]
        L[JavaScript File]
        M[Python File]
    end
    
    A --> B --> C --> D --> E
    E -->|interpret| F --> J
    E -->|compile llvm| G --> K
    E -->|compile js| H --> L
    E -->|compile python| I --> M

Compilation Pipeline

flowchart LR
    subgraph Lexical Analysis
        A[Source] --> B[Tokens]
    end
    
    subgraph Parsing
        B --> C[AST]
    end
    
    subgraph Code Generation
        C --> D[LLVM IR]
        D --> E[Optimization]
        E --> F[Native Code]
    end

Installation

Via PyPI (Recommended)

pip install shell-lite

From Source

git clone https://github.com/Shrey-N/ShellLite.git
cd ShellLite
pip install -e .

Windows Installer

Download the latest shl.exe from the Releases page.

Verify Installation

shl --version

Quick Start

Hello World

Create a file named hello.shl:

say "Hello, World"

Run it:

shl hello.shl

Interactive REPL

shl
ShellLite REPL - English Syntax
========================================
>>> say "Hello"
Hello
>>> 5 + 5
10
>>> exit

Language Overview

Type System

graph TD
    A[ShellLite Types] --> B[Number]
    A --> C[String]
    A --> D[Boolean]
    A --> E[List]
    A --> F[Dictionary]
    A --> G[Function]
    A --> H[Object]
    A --> I[None]
    
    B --> B1[Integer]
    B --> B2[Float]
    D --> D1[yes / true]
    D --> D2[no / false]

Syntax Examples

Variables and Constants

name = "Alice"
age = 30
const PI = 3.14159

Control Flow

if score > 90
    say "Excellent"
elif score > 70
    say "Good"
else
    say "Keep trying"

Functions

to greet name
    say "Hello, " + name
    give "Greeted " + name

result = greet "World"

Classes

thing Car
    has speed = 0
    
    can accelerate amount
        speed += amount
        say "Speed: " + str(speed)

my_car = new Car
my_car.accelerate 50

Natural Language Comparisons

Symbol Natural Form
== is, equals
!= is not
> is more than
< is less than
>= is at least
<= is at most

Compilation

Compilation Targets

flowchart LR
    A[script.shl] --> B{shl compile}
    B -->|--target llvm| C[Native Binary]
    B -->|--target js| D[JavaScript]
    B -->|--target python| E[Python]

Commands

# Compile to native code (default)
shl compile script.shl

# Compile to JavaScript
shl compile script.shl --target js

# Compile to Python
shl compile script.shl --target python

Performance Comparison

Mode Relative Speed Use Case
Interpreted 1x Development
Python Compiled ~1.2x Integration
JavaScript ~2-5x Web deployment
LLVM Native ~10-50x Production

The Three Pillars

ShellLite v0.05.0 introduces three major features:

graph TB
    subgraph "The Bridge"
        A[Python Libraries]
        A1[pandas]
        A2[requests]
        A3[numpy]
        A --> A1
        A --> A2
        A --> A3
    end
    
    subgraph "The Canvas"
        B[GUI Framework]
        B1[Windows]
        B2[Dialogs]
        B3[Controls]
        B --> B1
        B --> B2
        B --> B3
    end
    
    subgraph "The Universe"
        C[Package Manager]
        C1[Dependencies]
        C2[GitHub Packages]
        C3[shell-lite.toml]
        C --> C1
        C --> C2
        C --> C3
    end

The Bridge - Python Integration

Import and use any Python library directly:

use "pandas" as pd
use "requests"

data = pd.read_csv("data.csv")
response = requests.get("https://api.example.com")

The Canvas - GUI Applications

Build native desktop applications:

app "My App" size 400, 300

column
    heading "Welcome"
    button "Click Me" on_click handle_click

to handle_click
    alert "Button clicked!"

The Universe - Package Management

# Initialize project
shl init

# Install dependencies
shl install

# Install from GitHub
shl get username/repo

shell-lite.toml

[project]
name = "my-app"
version = "1.0.0"

[dependencies]
Shrey-N/shl-utils = "main"

CLI Reference

Command Description
shl <file.shl> Run a ShellLite script
shl Start the interactive REPL
shl compile <file> Compile to native code (LLVM)
shl compile <file> --target js Compile to JavaScript
shl compile <file> --target python Compile to Python
shl init Initialize a new project
shl install Install project dependencies
shl get <user/repo> Install a package from GitHub
shl fmt <file> Format a script
shl check <file> Lint a file (JSON output)
shl help Show help message

Project Structure

my-project/
├── main.shl              # Entry point
├── shell-lite.toml       # Project configuration
├── modules/
│   ├── utils.shl         # Utility functions
│   └── api.shl           # API handlers
├── tests/
│   └── test_main.shl     # Test files
└── public/
    └── index.html        # Static files (web)

Documentation

Language Guide

Chapter Topic
01 Getting Started
02 Language Basics
03 Control Flow
04 Data Structures
05 Functions and OOP
06 Modules and Standard Library
07 System Mastery
08 Web Development

Advanced Topics

Chapter Topic
09 Advanced Features
10 Compilation and Performance
11 Testing and Debugging
12 API Reference

Guides and Resources

Chapter Topic
13 Security Guide
14 Migration Guide
15 Troubleshooting
16 Examples and Tutorials
17 Best Practices

Ecosystem

Tool Description Link
Book Language design, compiler construction, and architecture guide Book
ShellDesk Official IDE for ShellLite GitHub
VS Code Extension Syntax highlighting and snippets Marketplace
Research Artifact Published on Zenodo by CERN Zenodo
Research Artifact - Geometric Binding Parser Published on Zenodo by CERN Zenodo

Contributing

See CONTRIBUTING.md for guidelines on how to contribute to ShellLite.

Security

See SECURITY.md for reporting security vulnerabilities.

License

MIT License - See LICENSE for details.


ShellLite - Making programming accessible through natural language.

Created by Shrey Naithani

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

shell_lite-0.5.3.1.tar.gz (82.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

shell_lite-0.5.3.1-py3-none-any.whl (75.5 kB view details)

Uploaded Python 3

File details

Details for the file shell_lite-0.5.3.1.tar.gz.

File metadata

  • Download URL: shell_lite-0.5.3.1.tar.gz
  • Upload date:
  • Size: 82.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for shell_lite-0.5.3.1.tar.gz
Algorithm Hash digest
SHA256 3f98da190e041ec452dd658b1391ade2ecb06c54d9759b4276be70c0ae699dc1
MD5 e11d15deaa1c0db4871e70febbf0527b
BLAKE2b-256 0cd56aa76735a17215f749965b163e7cd91f8c29092fffbe4e2bf28f0b00b4bc

See more details on using hashes here.

File details

Details for the file shell_lite-0.5.3.1-py3-none-any.whl.

File metadata

  • Download URL: shell_lite-0.5.3.1-py3-none-any.whl
  • Upload date:
  • Size: 75.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for shell_lite-0.5.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 3a5af0190e1241311666ac83755cbfc2e2a10fe5117cf0f63c61327c941648bc
MD5 49f8f351e76d62d29b6166b0be14c69a
BLAKE2b-256 027e8e40f7da594eeccb9d2941c8f252f4f67176a42a9b6bef7fd6e70a7d36e5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page