ECP programming language
Project description
pseudocode-interpreter
CC BY-SA 2021 Alfred Taylor & Conqu3red
(AQA) Exam Compatible Psuedocode V1 ALPHA (A.E.C.P/E.C.P)
PLEASE EXPECT LIMITED FUNCTIONALITY.
Introduction:
This is an adaptation of the pseudocode used by the AQA GCSE testing body (found here) that has had its syntax tweaked for use in a compiler and had some additional functionality added. The language will be fully Turing complete. Pseudocode found in tests is compatible with AECP/ECP. It is procedurally based, and shares similarities with python (It is programmed on python, after all.) It is intended as a scripting language, that is separate from python, but has the same basic functionality, whilst maintaining some resemblance of simplicity. Considering it is entirely written in python, it is not for use in situations where speed is a priority.
Interpreters
Currently we only have a python based interpreter, altough we have a C++ based interpreter coming soon.
How it works
AECP/ECP code is analysed and then parsed into a python AST (Abstract Syntax Tree). This can then be executed by the python interpreter. This allows near seamless integration with python and almost identical speed and behaviour.
Usage
Command Line arguments
usage: python -m ecp [-h] [--debug] [--trace [TRACE [TRACE ...]]] [--tracecompact] [--pause] [--version] [inputfile]
ECP interpreter
positional arguments:
inputfile
optional arguments:
-h, --help show this help message and exit
--debug show debug information like token list
--trace [TRACE [TRACE ...]]
space seperated names of the variables to be traced
--tracecompact trace compactly
--pause pause on completion
--version show program's version number and exit
Installation
pip install py-ecp
Running
python -m ecp path/to/ecp/file.ecp
Embedding ecp code in python files
from ecp import ecp
ecp("""
SUBROUTINE TotalOut(a, b)
c ← a + b
WHILE a < c
a ← a + 1
b ← b - a
ENDWHILE
RETURN b
ENDSUBROUTINE
""", scope=globals())
print(TotalOut(3, 4))
Converting ECp to python source code
python -m ecp path/to/ecp/file.ecp --topython
or:
from ecp import to_py_source
text = """
SUBROUTINE DoSomething(a, b)
RETURN a + b
ENDSUBROUTINE
"""
print(to_py_source(text))
MORE COMING SOON!
Project details
Release history Release notifications | RSS feed
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
File details
Details for the file py-ecp-1.5.0.tar.gz
.
File metadata
- Download URL: py-ecp-1.5.0.tar.gz
- Upload date:
- Size: 23.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.11
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c953ce7e08c7e1d54a6953dab08d0a4b9f0b1c7d527e67f4ad41c79018f254de |
|
MD5 | 849d2f722dc19efb2653eb7ba0f8288d |
|
BLAKE2b-256 | 629b091e6720d12f517912c2ce54432029e891efc1ac4e6aea434e0454e89c21 |
File details
Details for the file py_ecp-1.5.0-py3-none-any.whl
.
File metadata
- Download URL: py_ecp-1.5.0-py3-none-any.whl
- Upload date:
- Size: 23.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.11
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f4aad1a6296df4387c02e3e06829c8350153611454d1a8a7a13ccca762e66da7 |
|
MD5 | 13c8b54640f850a06e33ce1f14e8d474 |
|
BLAKE2b-256 | c87a2c7be295949f386773e82c313556a393a08cbd88cc0bb14e8f60e1f82fe1 |