Simple synchronous programming language
Project description
Compass
Disclaimer: This is a personal side-project
Compass :compass: is a small programming language with strong inpiration from Esterel. It is a synchronous programming language meant to build finite state machines easily for your C code.
Unlike Esterel, Compass is very bare bones and uses a rather trivial compilation process, which can lead to very different behaviours for code that looks similar.
The ABRO code example adapted for Compass looks like :arrow_down_small:
module abro(input A, input B, input R, output O)
each R seq {
par {
await A;
await B;
};
emit O;
}
endmodule
Installation
The Compass compiler is distributed as a Python source package. To install it, one can run :arrow_down_small:
# Fetch the source code
git clone https://github.com/roadelou/compass.git
# Go into the repository
cd compass
# Install the python package
pip3 install .
A PyPi package is also available for the compiler, and it can be installed with pip3 install roadelou_compass
:tada:
Usage
Once the compiler is installed, it can be used from the terminal through the compass
command. Basic usage is :arrow_down_small:
# This will output a C file called abro_compass.c
compass abro.cmps
# To compile the header file to use the C code
compass --lang header abro.cmps
# To compile a CLI interface to test the module
compass --lang debug abro.cmps
Examples
Some examples of the language can be found in the examples folder.
Features
The version of compass in the repository supports:
input
andoutput
signalslocal
variableseach
,par
,seq
,await
andemit
statements- Conditional tests with
if
,elif
,else
andendif
- Many C-inspired operators for expressions
:warning: Be careful about the syntax for end-of lines. The ;
operator should only be used to separate several statements in a list of statements, i.e. only in seq
and par
blocks. The last ;
is optional by the way.
METADATA
Field | Value |
---|---|
:pencil: Contributors | roadelou |
:email: Contacts | |
:date: Creation Date | 2021-03-12 |
:bulb: Language | Markdown Document |
EOF
Project details
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 roadelou-compass-0.0.3.tar.gz
.
File metadata
- Download URL: roadelou-compass-0.0.3.tar.gz
- Upload date:
- Size: 22.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.24.0 setuptools/49.1.3 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 07d1e6e11e5cd59e79d6f4bacc33715f46b7d4ae042b6f2570239b972bf6d383 |
|
MD5 | 2f3be2e38dc2f8c670dc359421982dab |
|
BLAKE2b-256 | 3f7d0c35460290310dac8c838f7ffdfbe5e2d8817757975333874fceb6e51875 |
File details
Details for the file roadelou_compass-0.0.3-py3-none-any.whl
.
File metadata
- Download URL: roadelou_compass-0.0.3-py3-none-any.whl
- Upload date:
- Size: 65.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.24.0 setuptools/49.1.3 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.9.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 978e5af0603cdf981572e77454e3e61fb10fa38db79ea4bce57a9a499bb74bf6 |
|
MD5 | 43f571cdf4c363a07a87e7c332944f65 |
|
BLAKE2b-256 | 729166c76977da924638031ce3e6c6f1013227b436249da1bc84620fb69667cc |