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

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.1.tar.gz (68.5 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.1-py3-none-any.whl (62.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: shell_lite-0.5.1.tar.gz
  • Upload date:
  • Size: 68.5 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.1.tar.gz
Algorithm Hash digest
SHA256 8bdb8f09495df171368df56125e98e533c7796de3e8ca5c5947e7692edd0f974
MD5 bf3aaea68c6eabdc21c6b5e49fae8239
BLAKE2b-256 039d70bb5f8c7ebf1f709cb37585c56db2ad2366cc3057933b2ada343e546242

See more details on using hashes here.

File details

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

File metadata

  • Download URL: shell_lite-0.5.1-py3-none-any.whl
  • Upload date:
  • Size: 62.1 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 bbd2f170af7904445b0d7fc29aab453d8d9091cde409aa0ba028ebf9da34f5cf
MD5 9393227d2cda6f899353596aebdc6b30
BLAKE2b-256 cfd2cdcce6c6a7a4ccbef9fcd09364e9d2f7f0af99bf8c2add783c813a015f73

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