Lustre语言

Lustre是形式化定义的、声明式和同步式的数据流程编程语言，用于响应式系统编程。它在1980年代前期成为了研究项目，受到过Lucid语言的影响Automatic control systems programming using a real-time declarative language. J.L.Bergerand, P.Caspi, N.Halbwachs, J.A.Plaice. IFAC Proceedings Volumes Volume 19, Issue 6, May 1986, Pages 89-93.。这个语言的形式表述可以在1991年的《Proceedings of the IEEE》找到The Synchronous Data Flow Programming Language LUSTRE. N. Halbwachs et al. In Proc. IEEE 1991 Vol. 79, No. 9. Accessed 17 March 2014.。在1993年，它发展进入实际的商业和工业使用，成为一个商业产品，它是开发的工业环境SCADE的核心语言。它被用于在空中客车、空客直升机和核电厂的关键控制软件中。

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

参见

（另一种面向数据流程同步语言）
同步式编程
Lucid (编程语言)
数据流程编程

引用

外部链接
Synchrone Lab  Official website
SCADE product page

Category:宣告式编程语言
Category:硬件描述语言
Category:同步式编程语言