From 8e882a5fd94a423ef89495f0037635bfad7ceb62 Mon Sep 17 00:00:00 2001 From: Stone_Red <56473591+Stone-Red-Code@users.noreply.github.com> Date: Thu, 5 Mar 2026 02:30:26 +0100 Subject: [PATCH] Update README to use standard template --- README.md | 59 ++++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 43 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 59da794..047db8a 100644 --- a/README.md +++ b/README.md @@ -1,25 +1,52 @@ -# YesNt +![YesNt](https://socialify.git.ci/Stone-Red-Code/YesNt-Interpreter/image?description=1&forks=1&issues=1&name=1&pattern=Signal&pulls=1&stargazers=1&theme=Auto) -> YesNt is a imperative and interpreted language inspired by the Assembly language. +- [Documentation](docs/README.md) +- [Language Reference](docs/language-reference.md) +- [Releases](https://github.com/Stone-Red-Code/YesNt-Interpreter/releases) -## Documentation +## What is it? -| Document | Description | -| -------------------------------------------------------- | ----------------------------------------- | -| [docs/README.md](docs/README.md) | Getting started | -| [docs/language-reference.md](docs/language-reference.md) | Full language reference | -| [docs/library-api.md](docs/library-api.md) | Embedding the interpreter as a C# library | -| [docs/editor.md](docs/editor.md) | Using the terminal code editor | +YesNt is an interpreted scripting language inspired by assembly. The core idea is simple: each line maps to one primary statement. Lines are processed top-to-bottom, and inline tokens (like `${variable}` or `%read_line`) are substituted before the statement executes. Postfix modifiers like `calc` and `task` can also appear at the end of a line to evaluate arithmetic or fork execution into a background thread. -## Quick example +**Key characteristics:** + +- **Line-based execution:** Lines are processed top-to-bottom. Each line is a self-contained statement +- **Assembly-inspired control flow:** Labels, `goto`, and conditional jumps alongside structured `if`/`while` blocks +- **Explicit scoping:** `var` for function-local variables, `global` for cross-scope shared state +- **Functions with stacks:** Arguments and return values are passed via explicit push/pop stacks (`push_in`, `%in`, `push_out`, `%out`) +- **Background tasks:** Any line can be forked into a background execution flow with `task` +- **Embeddable:** The interpreter ships as a C# library. Custom statements can be registered, and built-in ones can be removed or disabled for sandboxing + +YesNt is intentionally minimal and transparent. It is well suited for scripting, education, and embedding in applications that need a lightweight, controllable scripting engine. + +## Usage + +1. Download & install the latest release + - GitHub (Windows/Linux/macOS): [releases](https://github.com/Stone-Red-Code/YesNt-Interpreter/releases) +2. Run a script with the interpreter CLI + - `YesNt.Interpreter.App script.ynt` runs a script +3. Or use the terminal code editor + - `YesNt.CodeEditor` opens the editor (optional path to load a file) + - `run` / `debug` to execute the open script + - `format` to auto-format indentation + +## Example ```ynt -var name = world -print_line Hello ${name} -``` +func greet: + var name = %in + print_line Hello, ${name}! +return -## Run +func add: + var result = %in + %in calc + push_out ${result} +return -```bash -dotnet run --project YesNt.Interpreter.App -- path/to/script.ynt +call greet with Alice +call greet with Bob + +call add with 3, 7 +var sum = %out +print_line 3 + 7 = ${sum} ```