Esterel
Esterel での時間に記法は、非同期言語のそれとは異なる。具体的な時間は順序記述に置き換えられる。そのとき、事象の有無と同時性のみが考慮される。つまり、具体的な時間は特別な役割を持たないことを意味する。これを時間の多形記法(multiform notion of time)と呼ぶ。Esterel は、論理実体を完全に順序付けて並べて記述する。各実体では(0個を含む)任意個数の事象が発生する。同じ論理実体で発生した事象は同時に発生したと見なされる。それ以外の事象は発生した実体によって順序が決定される。文には、時間を消費しない文(実行と完了が同じ実体にあるもの)と、ある一定サイクル数の遅延がある文がある。
emit S -- 現在の実体上でシグナル S を存在させる。シグナルは emit されるまで存在しない。 pause -- 一旦停止し、pause の次のサイクルで実行再開する。 present S then stmt1 else stmt2 end -- 現在の実体でシグナル S が存在するなら、即座に stmt1 を実行し、さもなくば stmt2 を実行する。 await S -- S が存在するようになるまで待つ。await は通常、サイクルの開始時に S の存在をチェックしない(1サイクルは必ず待つ)。 await immediately はサイクル開始時にチェックする。 loop p end -- p を無限に繰り返す。ループ本体の中に pause や await などがない限り、ループは停止しない。 p||q -- p と q を並行して実行する。全グループが完了したときに完了となる。