Lustre语言
Lustre是形式化定义的、声明式和同步式的数据流程编程语言,用于响应式系统编程。它在1980年代前期成为了研究项目,受到过Lucid语言的影响[1]。这个语言的形式表述可以在1991年的《Proceedings of the IEEE》找到[2]。在1993年,它发展进入实际的商业和工业使用,成为一个商业产品,它是爱斯特尔技术公司开发的工业环境SCADE的核心语言。它被用于在空中客车[3]、空客直升机和核电厂的关键控制软件中。
编程范型 | 数据流程, 同步式 |
---|---|
设计者 | J.L.Bergerand, P.Caspi, N.Halbwachs, J.A.Plaice. |
实作者 | 爱斯特尔技术公司 |
发行时间 | 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
参见
编辑- Esterel
- SIGNAL(另一种面向数据流程同步语言)
- 同步式编程
- 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.
- ^ The Synchronous Data Flow Programming Language LUSTRE[失效链接]. N. Halbwachs et al. In Proc. IEEE 1991 Vol. 79, No. 9. Accessed 17 March 2014.
- ^ SCADE Success Stories. [8 June 2013]. (原始内容存档于2019-01-30).
外部链接
编辑- Synchrone Lab (页面存档备份,存于互联网档案馆) Official website
- SCADE product page