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