Lustre es un lenguaje de programación de flujo de datos formalmente definido , declarativo y síncrono para la programación de sistemas reactivos. Comenzó como un proyecto de investigación a principios de la década de 1980. Una presentación formal del lenguaje se puede encontrar en las Actas del IEEE de 1991. [ 1 ] En 1993, evolucionó hacia un uso práctico e industrial en un producto comercial como el lenguaje central del entorno industrial SCADE , desarrollado por Esterel Technologies . Ahora se utiliza para software de control crítico en aeronaves , [ 2 ] helicópteros y centrales nucleares .
Estructura de los programas Lustre
Un programa Lustre es una serie de definiciones de nodos , escritas de la siguiente manera:
nodo foo(a : bool) devuelve (b : bool); dejar b = no a; tel Donde fooes el nombre del nodo, aes el nombre de la única entrada de este nodo y bes el nombre de la única salida. En este ejemplo, el nodo foodevuelve la negación de su entrada a, que es el resultado esperado.
Variables internas
Se pueden declarar variables internas adicionales de la siguiente manera:
El nodo Nand(X,Y: bool) devuelve (Z: bool); var U: bool; dejar U = X e Y; Z = no U; tel Nota: El orden de las ecuaciones no importa, el orden de las líneas U = X and Y;no Z = not U;cambia el resultado.
Operadores especiales
Ejemplos
Detección de borde emergente
nodo RisingEdge (X : bool) devuelve (E : bool); dejar E = X y no pre X; tel Detección de flanco descendente
nodo FallingEdge (X : bool) devuelve (E : bool); dejar E = no X y anterior a X; tel Véase también
Referencias
Enlaces externos
- Synchrone Lab archivado el 25/11/2020 en el sitio web oficial de Wayback Machine.
- Página del producto SCADE
- lenguajes de programación declarativos
- Lenguajes de programación síncronos
- lenguajes de descripción de hardware
- Métodos formales
- Lenguaje de modelado de software