Skip to main content

Simply

Simply is an experimental programming language focused on explicit, readable code. The GitHub repository is named Simpy, but the language is Simply.

Simply 0.2

STRING name = INPUT("Name: ")
INT age = INPUT("Age: ")
BOOL access = True

IF age >= 18 AND access:
    DISPLAY("Welcome", name)
ELSE IF age >= 13:
    DISPLAY("Teen access")
ELSE:
    DISPLAY("Blocked")

END

v0.2 includes:

  • ELSE IF
  • AND, OR, NOT
  • INPUT(...)
  • WHILE
  • isolated TEST(...) blocks

It intentionally does not include FOR, EXPECT, functions, RETURN, BREAK, CONTINUE, lists, or classes yet.

Install

After the first PyPI release, install the Simply runtime from any terminal:

python -m pip install simply-lang

Then run .sim files from any folder:

simply program.sim

Run test blocks with:

simply test program.sim

For local development from a clone of this repository:

python -m pip install -e .

VS Code

After the Marketplace release, install editor support with:

code --install-extension gamasdorpg.simply-language-support

Then .sim files are recognized as Simply anywhere. Ctrl+K M will list Simply as a language mode, and the extension provides syntax highlighting plus live lexer/parser/type diagnostics in the Problems panel.

The extension no longer needs a cloned Simpy repository. It communicates with the installed runtime through:

simply diagnostics

If the CLI is installed outside VS Code's PATH, set Simply: Executable Path in VS Code.

Until the Marketplace release is published, repository development can still use the local extension tooling.

Architecture

.sim source
    ↓
Lexer
    ↓
Tokens + INDENT/DEDENT
    ↓
Recursive-descent Parser
    ↓
AST
    ↓
Semantic Analyzer + Symbol Scopes
    ↓
Tree-walking Interpreter
    ↓
Runtime
    ↓
Output

The implementation is written in Python 3.10+ and has no third-party runtime dependencies.

INPUT

The declared variable type determines how input is converted:

INT age = INPUT("Age: ")
FLOAT score = INPUT("Score: ")
STRING name = INPUT("Name: ")
BOOL ready = INPUT("Ready (True/False): ")

WHILE

INT x = 0

WHILE x < 5:
    DISPLAY(x)
    x = x + 1

END

TEST

Tests are isolated and receive copies only of the variables listed in TEST(...).

INT x = 10
INT y = 2

TEST(x, y):
    x = x + y
    DISPLAY(x)
END

DISPLAY(x)
END

Normal execution skips test blocks. Test mode executes them.

Quality checks

Run the Python test suite:

python -m unittest discover -s tests -v

GitHub Actions also verifies the Python package build and packages the VS Code extension as a VSIX on pushes and pull requests.

Publishing

See DISTRIBUTION.md for the complete PyPI and Visual Studio Marketplace release procedure.

Project layout

simply/
    tokens.py
    lexer.py
    parser.py
    ast_nodes.py
    semantic.py
    typesys.py
    environment.py
    interpreter.py
    runtime.py
    runner.py
    diagnostics.py
    cli.py

main.py
LANGUAGE_SPEC.md
DISTRIBUTION.md
examples/
tests/
.vscode/
vscode-extension/

See LANGUAGE_SPEC.md for the exact v0.2 rules.

Download files

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

Source Distribution

simply_lang-0.2.1.tar.gz (17.5 kB view details)

Uploaded Source

Built Distribution

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

simply_lang-0.2.1-py3-none-any.whl (17.5 kB view details)

Uploaded Python 3

File details

Details for the file simply_lang-0.2.1.tar.gz.

File metadata

  • Download URL: simply_lang-0.2.1.tar.gz
  • Upload date:
  • Size: 17.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for simply_lang-0.2.1.tar.gz
Algorithm Hash digest
SHA256 99c1dadd3088cc84822400b93705b98d1b07be17b4d5e2b1e92031447fb860a6
MD5 df782bcc4fb87546773c12d02f5066d8
BLAKE2b-256 cf5909ecde63e56b039cb6c8184fee2baa5b21e57916721623ce309fc5af824c

See more details on using hashes here.

Provenance

The following attestation bundles were made for simply_lang-0.2.1.tar.gz:

Publisher: publish-pypi.yml on GamasDoRpg/Simpy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file simply_lang-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: simply_lang-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 17.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for simply_lang-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 709ff7faa85ee5b1100b33908321a354e4b709c5f3b73467242b1d5bc7d2e81a
MD5 56c361b794363fefcc60a24e60701362
BLAKE2b-256 dd56d35e3734404d1dacfd4e1ab5f711951cdea57ff2a27089c7da9c9f2711c8

See more details on using hashes here.

Provenance

The following attestation bundles were made for simply_lang-0.2.1-py3-none-any.whl:

Publisher: publish-pypi.yml on GamasDoRpg/Simpy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.2.1 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page