Esterel is a programming language dedicated to control-dominated reactive systems, such as control circuits, embedded systems, human-machine interface, or communication protocols.
It belongs to the family of synchronous languages, which also includes Lustre, Signal, and SyncCharts. Esterel has been developed since 1983 at CMA (Applied Mathematics Center, Ecole des Mines de Paris), and INRIA in Sophia-Antipolis.
The language is presented in the Esterel Primer (PDF).
- Description from About Esterel
- Original Website — Frame-based website: Select the "with Esterel" link from the sidebar on the left
- Installation and Makefile information for Esterel and BrickOS
- Esterel Virtual Machine (EVM) project
- Potential alternate compiler – CEC: The Columbia Esterel Compiler (open source)
- “Currently [only] supports a subset of so-called Esterel V5”
- Might not support the scLego extensions
- A fork of CEC updated to work with CMake
- Related project - Ministrel: A “toy” synchronous language for reactive programming highly inspired by Esterel.
- Esterel compiler: As this provides an Esterel back-end for Lego C with BrickOS-Bibo, installation of a working Esterel compiler is necessary
- Esterel compiler downloads are included with the archived scLego release posted in this repository as the initial release
- Esterel.org Downloads from old Esterel website (download links on new Esterel website are currently broken)
- Purported Debian packages
- Per Esterl.org, the note on this website that Esterel 5.2.1a is newer than 5_92 is incorrect (c.f. Release Notes for Esterel v5_92)
Esterel examples are already bundled with BrickOS-Bibo, so by installing the Esterel compiler and this add-on for the Esterel compiler, you will be ready to create Esterel programs for BrickOS-Bibo.
To install scLego, type:
make ESTEREL_DISTRIB=<esterel repository>
You may also set the PERL macro to the name of the Perl command on your system if it is different from the default "perl".
Installation will copy Lego subdirectory into Esterel lib directory, and it will creates scLego, ocLego, and sscLego scripts into the Esterel bin directory.
A man page, scLego.1 is also avalaible in Esterel man/man1 dir. Please have a look at it, since it describes the recognized API from Esterel to Lego.
Then, you can call :
esterel -LLego controller.strl
or
esterel -ILego controller.strl
or
esterel -ALego controller.strl
Option -simul is also supported if you want to simulate the controller using xes or csimul. You do not have to insert code for predefined objects such as constants, or functions that belong to Esterel/Lego API; they will be automatically defined in the resulting .c.