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 IFAND,OR,NOTINPUT(...)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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
99c1dadd3088cc84822400b93705b98d1b07be17b4d5e2b1e92031447fb860a6
|
|
| MD5 |
df782bcc4fb87546773c12d02f5066d8
|
|
| BLAKE2b-256 |
cf5909ecde63e56b039cb6c8184fee2baa5b21e57916721623ce309fc5af824c
|
Provenance
The following attestation bundles were made for simply_lang-0.2.1.tar.gz:
Publisher:
publish-pypi.yml on GamasDoRpg/Simpy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
simply_lang-0.2.1.tar.gz -
Subject digest:
99c1dadd3088cc84822400b93705b98d1b07be17b4d5e2b1e92031447fb860a6 - Sigstore transparency entry: 2619922660
- Sigstore integration time:
-
Permalink:
GamasDoRpg/Simpy@aabb430f2c3d76e5f5b9c4287a1b7b02530f1263 -
Branch / Tag:
refs/tags/Simply0.2.1 - Owner: https://github.com/GamasDoRpg
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@aabb430f2c3d76e5f5b9c4287a1b7b02530f1263 -
Trigger Event:
release
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
709ff7faa85ee5b1100b33908321a354e4b709c5f3b73467242b1d5bc7d2e81a
|
|
| MD5 |
56c361b794363fefcc60a24e60701362
|
|
| BLAKE2b-256 |
dd56d35e3734404d1dacfd4e1ab5f711951cdea57ff2a27089c7da9c9f2711c8
|
Provenance
The following attestation bundles were made for simply_lang-0.2.1-py3-none-any.whl:
Publisher:
publish-pypi.yml on GamasDoRpg/Simpy
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
simply_lang-0.2.1-py3-none-any.whl -
Subject digest:
709ff7faa85ee5b1100b33908321a354e4b709c5f3b73467242b1d5bc7d2e81a - Sigstore transparency entry: 2619922683
- Sigstore integration time:
-
Permalink:
GamasDoRpg/Simpy@aabb430f2c3d76e5f5b9c4287a1b7b02530f1263 -
Branch / Tag:
refs/tags/Simply0.2.1 - Owner: https://github.com/GamasDoRpg
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@aabb430f2c3d76e5f5b9c4287a1b7b02530f1263 -
Trigger Event:
release
-
Statement type: