Skip to main content

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

roadelou-compass-0.0.1.tar.gz (15.5 kB view hashes)

Uploaded Source

Built Distribution

roadelou_compass-0.0.1-py3-none-any.whl (49.1 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page