Lustre — це формально визначена, декларативна та синхронна мова програмування потоків даних для програмування реактивних систем. Вона почалася, як дослідницький проєкт на початку 1980-х років. Формальну презентацію мови можна знайти в Proceedings of the IEEE за 1991 рік. У 1993 році мову впровадили в практичне, промислове використання як основну мову промислового середовища SCADE, розробленого Esterel Technologies. Зараз вона використовується для програмного забезпечення критично важливих систем керування на повітряних суднах. вертольотах і атомних електростанціях.

Структура програм Lustre Програма Lustre - це серія визначень вузлів, записаних у вигляді: node foo(a : bool) returns (b : bool); let b = not a; tel Де foo — це ім’я вузла, a — ім’я єдиного входу цього вузла, а b — ім’я єдиного виходу. У цьому прикладі, вузол foo повертає заперечення свого входу a, що є очікуваним результатом.

Внутрішні змінні Додаткові внутрішні змінні можуть бути оголошені наступним чином: node Nand(X,Y: bool) returns (Z: bool); var U: bool; let U = X and Y; Z = not U; tel Примітка: Порядок рівнянь не має значення, порядок рядків U = X and Y; і Z = not U; не змінює результат.

Спеціальні оператори pre p Повертає попереднє значення p. p -> q Встановити p як початкове значення виразу q.

Приклади

Виявлення контурів node Edge (X : bool) returns (E : bool); let E = false -> X and not pre X; tel

Див. також Esterel SIGNAL (інша синхронна мова, орієнтована на потоках даних)

Примітки

Зовнішні посилання Synchrone Lab Офіційний вебсайт SCADE сторінка продукту