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

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

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

参见

引用

外部链接

Wikiwand in your browser!

Seamless Wikipedia browsing. On steroids.

Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.

Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.