Previous Up Next

3.5  Clocks

clock::= ident
    | ( clock )
    | stream-clock
    | ( carrier-clock : stream-clock )
    | ( clock { * clock } )
    | clock sig
    | static
 
stream-clock::= ident
    | ( stream-clock )
    | stream-clock on carrier-clock
    | stream-clock on not carrier-clock
 
carrier-clock::=value-path
    | ( carrier-clock )
    | _ ident

The precedences are given in the following table. The constructions with higher precedences come first.

OperatorAssociativity
sig-
on-
:-
*-
->right

Clock variable

ident denotes the clock variable ident.

Parenthesized clock

( clock ) stands for clock.

Stream clock

The clock stream-clock is the presence information of a stream.

Sub-clock

The stream clock stream-clock on carrier-clock denotes the sub-clock of stream-clock when carrier-clock is true. The stream clock stream-clock on not carrier-clock denotes the sub-clock of stream-clock when carrier-clock is false.

Named clock

The clock ( carrier-clock : stream-clock ) of a stream e means that e has value carrier-clock which has the stream clock stream-clock. The value may be either a global value (defined at top-level) or an identifier. This identifier is unique and is an abstraction of the actual value of e.

Signal clock

The clock clock sig of a stream e means that e is a signal. A signal boxes a value with its internal clock indicating when the value is present.

Static clock

The clock static of a value e means that e can be computed at instantiation time, that is, before the execution starts. A variable defined with a static clock can thus be used at any clock.

Tuple clock, function clock

The clock ( clock1 * ... * clockn ) is the clock of expressions evaluating to ( v1, ... , vn ) where vi is on clock clocki. The clock clock1 -> clock2 is the clock of a function whose argument is on clock clock1 and result on clock clock2.


Previous Up Next