# EPL — English Programming Language > EPL is a programming language with English syntax (v10.2.0). Write code in plain English — apps, web servers, APIs, desktop GUIs, and mobile apps. Install: `pip install eplang`. Run: `epl run file.epl`. By default `epl run` executes on a bytecode VM (real closures + full control-flow parity with the reference interpreter); `--interpret` selects the tree-walking interpreter. EPL also transpiles to Python/JS/Node/Kotlin/MicroPython, compiles native binaries (`epl build`, with type inference for untyped functions), and exports native mobile/desktop projects (`epl android`/`ios`/`desktop`, with `--webview` to ship the real web app unchanged). ## Documentation - [Official Website](https://eplang.me/): Homepage with live playground and install guide - [What is EPL?](https://eplang.me/what-is-epl.html): Overview, FAQ, and how EPL compares to Python - [Syntax Reference](https://github.com/abneeshsingh21/EPL/blob/main/GRAMMAR.md): Formal grammar specification - [Examples](https://github.com/abneeshsingh21/EPL/tree/main/examples): 50+ working programs (`examples/apps/` has full apps) - [README](https://github.com/abneeshsingh21/EPL/blob/main/README.md): Getting started guide - [Changelog](https://github.com/abneeshsingh21/EPL/blob/main/CHANGELOG.md): Version history - [Full Reference for LLMs](https://eplang.me/llms-full.txt): Complete syntax + examples for AI consumption ## Key Syntax Rules - Variables: `Create name = "Ada"`, `Set count to 5`, or bare `count = 5` - Output: `Say "Hi"`, `Display "Hi"`, `Print "Hi"`, `Show "Hi"` (all equivalent) - Input: `Ask "Name?" store in name` - Interpolation: `Say "Hello $name"` and `Say "Sum ${1 + 2}"` - Functions: `Function greet takes name ... End`; call `greet("Ada")` - Conditionals: `If x > 5 Then ... Otherwise ... End` — use `Otherwise`, NOT `Else` - Loops: `For i from 1 to 10 ... End`, `For each x in list ... End`, `While c ... End`, `Repeat 5 times ... End` - Match: `Match x` / `When 1 or 2` (each alternative tested) / `Default` (or `Otherwise`) / `End` - Classes: `Class Dog ... End` with bare fields (`name = "Rex"`); instantiate `new Dog()`; methods use fields directly - Web: `Create WebApp called app` → `Route "/" shows ... End` (HTML) / `Route "/api" responds with ... End` (JSON) → `Start app on port 8080` - Maps: `Create user = Map with name = "Ada" and role = "admin"` — access `user.name` - Assign into collections: `Set list[i] to value`, `Set obj.prop to value` - Errors: `Try ... Catch error ... End` - Comments: `Note: this is a comment` — NOT `//` or `#` - Every block (If/Function/Class/While/For/Match/Route/Try) ends with `End` ## Common Builtins (verified names) - Strings: `length`, `upper`, `lower`, `trim`, `replace`, `split`, `join`, `substring`, `contains`, `index_of`, `reverse`, `starts_with`, `ends_with` - Convert: `to_text`, `to_integer`, `to_number`, `to_boolean` - Math: `absolute` (or `abs`), `round`, `floor`, `ceil`, `power`, `sqrt`, `min`, `max`, `random(a, b)`, `sum` - Collections/maps: `keys`, `values`, `has_key`, `first`, `last`, `Add x to list`, `Sort list` (statement) - Type: `type_of` → "integer"/"text"/"boolean"/"list"/"map" - Auth: `auth_hash_password`, `auth_verify_password`, `auth_generate_token` - Database: `db_open`, `db_execute`, `db_query`, `db_query_one`, `db_count`, `db_close` (+ `*_params` variants) - Env/time: `env_get` (a `.env` beside the program is auto-loaded), `now`, `today`, `Wait N seconds`, `Exit` ## CLI - `epl run file.epl` (bytecode VM) · `epl run --interpret file.epl` · `epl vm file.epl` - `epl build file.epl [-o out] [--opt=N]` — native binary (infers types for untyped functions) - `epl wasm file.epl` — WebAssembly - `epl python|js|node|kotlin|micropython file.epl [-o out]` — transpile - `epl android|ios|desktop|web file.epl [--webview] [--url URL]` — native/app export - `epl new --template web|api|auth|chatbot|cli|lib|frontend|android|ios|fullstack` - `epl serve file.epl [--reload] [--port N]` · `epl repl` · `epl watch` · `epl doctor` · `epl check` - `epl test` · `epl fmt` · `epl lint` · `epl docs` - `epl use|install|uninstall|packages|search|update` (packages) · `epl deploy ` - `epl gen ""` · `epl ai ""` · `epl explain file.epl` · `epl copilot` · `epl playground` · `epl lsp` ## Optional - [MCP Server](https://github.com/abneeshsingh21/EPL): `python -m epl.mcp_server` — tools `epl_syntax_reference`, `epl_validate`, `epl_run`, `epl_transpile`, `epl_examples`, `epl_error_lookup` for AI tools (Claude Desktop, Cursor, VS Code)