Lustre形式化定义的、声明式同步式数据流程编程语言,用于响应式系统编程。它在1980年代前期成为了研究项目,受到过Lucid语言的影响[1]。这个语言的形式表述可以在1991年的《Proceedings of the IEEE》找到[2]。在1993年,它发展进入实际的商业和工业使用,成为一个商业产品,它是爱斯特尔技术公司英语Esterel Technologies开发的工业环境SCADE的核心语言。它被用于在空中客车[3]空客直升机核电厂的关键控制软件中。

Lustre
编程范型数据流程, 同步式
设计者J.L.Bergerand, P.Caspi, N.Halbwachs, J.A.Plaice.
实作者爱斯特尔技术公司英语Esterel Technologies
发行时间1985年,​39年前​(1985
许可证专有软件
主要实作产品
SCADE的核心语言
启发语言
Lucid
影响语言
Lucid Synchrone

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

参见

编辑

引用

编辑
  1. ^ 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.
  2. ^ The Synchronous Data Flow Programming Language LUSTRE[失效链接]. N. Halbwachs et al. In Proc. IEEE 1991 Vol. 79, No. 9. Accessed 17 March 2014.
  3. ^ SCADE Success Stories. [8 June 2013]. (原始内容存档于2019-01-30). 

外部链接

编辑