From 496ef1254b41de5f490c10c39dafe3b8ddc1a55a Mon Sep 17 00:00:00 2001 From: nodist Date: Sat, 22 Aug 2026 15:37:56 -0400 Subject: new syntax --- docs/definitions.md | 55 +++++++++++++++++++++++++ docs/index.md | 37 +++++++++++++++++ docs/syntax.md | 115 ++++++++++++++++++++++++++++++++++++++++++++++++++++ docs/tagging.md | 23 +++++++++++ mkdocs.yml | 7 +++- 5 files changed, 235 insertions(+), 2 deletions(-) create mode 100644 docs/definitions.md create mode 100644 docs/syntax.md create mode 100644 docs/tagging.md diff --git a/docs/definitions.md b/docs/definitions.md new file mode 100644 index 0000000..a7bc028 --- /dev/null +++ b/docs/definitions.md @@ -0,0 +1,55 @@ +# Definitions + +--- + +## Code + +A representation of executable bytes + +### Operation + +Intrinsic + +### Statement + +A sequence of operations + +### Block + +A list of statements + +### Function + +A sequence of blocks and/or statements that take arguments and returns code or data + +### Coroutine + +A sequence of functions for a single `Task` + +### Line + +A queue of coroutines on a container + +## Data + +A representation of non executable bytes + +### Collection + +A list of immediately evaluated statements + +### Value + +Fits in a general register, all updates are atomic + +### Container + +Requires heap allocation, all updates are processed through a single-file `Line` + +### Task + +Coroutine state + +### Tag + +A key associated with a value diff --git a/docs/index.md b/docs/index.md index e69de29..acab793 100644 --- a/docs/index.md +++ b/docs/index.md @@ -0,0 +1,37 @@ +# Kevin's Programming Language (KPL) Specification + +--- + +## Language Goals + +### Implicit Error Handling + +* All operations return a `Result` that can be manually or automatically checked + +### Asynchronous First + +* No functions, only coroutines + +### All Code Is Thread Safe + +* Values are atomic and all containers have a `mutex` like mechanism that is implicitly locked before use + +### Strongly Typed + +* Dynamic types are represented by `Any`, these types have to be matched to a type before they can be used + +### Single Invocation + +* Just In Time Compilation + +### Asymmetric C Interoperability + +KPL code can call C code, C code can call certain KPL code + +### Run On Linux/WSL With `io_uring` For `X86-64` And `Aarch64` Only with Minimal Dependencies + +* GCC, Make and OpenSSL; should compile on most distributions without any extra steps + +### Low Resource Usage + +* Should work on servers with 1 Core and 1 Gigabyte of RAM diff --git a/docs/syntax.md b/docs/syntax.md new file mode 100644 index 0000000..0868143 --- /dev/null +++ b/docs/syntax.md @@ -0,0 +1,115 @@ +# Syntax + +--- + +## Comments + +```text +// Comment Until End Of Line + +/* Comment */ +``` + +## Numbers + +### Integers + +```text +1234 +1_000_000 +``` + +### Floats + +```text +1.2 +``` + +## Glyphs + +### Characters `''` + +```text +'a' +'Σ' +``` + +### Strings `""` + +## Operators + +### Symbol + +```text +1 + 2 +``` + +### Named ``[a-z]\w+` + +## Variables `[a-z][a-zA-Z0-9_]{0,49}` + +## Constants `_[a-zA-Z0-9_]{0,49}` + +## Types `[A-Z][a-zA-Z0-9_]{0,49}` + +## Tags `\.[a-zA-Z0-9_]{1,50}` + +## Blocks `{}` + +## Collections `()` + +## Modifiers `[]` + +## Separators `;|\n` + +## Actions + +### If `?` + +```text +? condition {[arguments] statements } { else statements } + +? { + condition {[arguments] statements } + ... + { else statements } +} +``` + +### Loop `@` + +```text +@.tag condition {[arguments] statements } +``` + +#### ``break.tag + +#### ``continue.tag + +### Match `#` + +```text +# match { + condition {[arguments] statements } + ... + { else statements } +} +``` + +## Coroutines ``{[] ... }` + +### ``return.tag + +### ``sync + +### ``async + +### ``await + +## Generators `^{[] ... }` + +### ``yield + +### ``stop + +### ``next diff --git a/docs/tagging.md b/docs/tagging.md new file mode 100644 index 0000000..e2bcf69 --- /dev/null +++ b/docs/tagging.md @@ -0,0 +1,23 @@ +# Tagging + +--- + +## Operators + +### Matching + +### Asserting + +## Coroutines + +### Returning + +## Tables + +### Accessing + +## Loops + +### Break + +### Continue diff --git a/mkdocs.yml b/mkdocs.yml index 7a98d26..467b9ed 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,8 +1,11 @@ site_name: KPL Specification -site_dir: 'public' +site_dir: public repo_url: https://git.kpl.dev/kpl-specification/ repo_name: Git copyright: Copyright © nodist theme: readthedocs nav: - - Main : 'index.md' + - Main: index.md + - Definitions: definitions.md + - Syntax: syntax.md + - Tagging: tagging.md -- cgit v1.2.3