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;
}
}
}
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 .
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.cmps
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.
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
Hashes for roadelou_compass-0.0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0d870d9bf909733de1e0346b1cccc88269a52011bab5130b0f1bceac02b58fc1 |
|
MD5 | 955b4bae4003e460874829430e86b818 |
|
BLAKE2b-256 | dd336e049ede66e7c19670492d960a9423d7d0c50e61d21de6c7490665e16b75 |