Information Technology Reference
In-Depth Information
[ ”separate” ][ explicit processor specification ]
class name [ actual generics ];
detachable tag =
”attached”
”detachable” ;
explicit processor specification =
qualified explicit processor specification
|
|
unqualified explicit processor specification ;
qualified explicit processor specification =
;
unqualified explicit processor specification =
<
entity name ”.” ”handler” ”
>
<
entity name
>
;
class name = name ;
feature name = routine name
|
entity name ;
routine name = name ;
entity name = name
|
”Result”
|
”Current” ;
name =( ”a”
| ... |
”z”
|
”A”
| ... |
”Z” )
{
”a”
| ... |
”z”
|
”A”
| ... |
”Z”
}
;
A class consists of a number of features. A feature is either a routine - a sequence of
instructions - or an attribute - a data storage. If a routine returns a result, then it is
called a function ; otherwise, it is called a procedure . If a routine is marked as a once
routine ( once keyword), then the routine gets executed only once in a given context.
Functions and attributes are also called queries ; routines are also called commands .A
routine can define a precondition ( require keyword) and a postcondition ( ensure key-
word). The enclosing class can define an invariant ( invariant keyword). Each feature
can be exported to a list of classes, so that only these classes can use the feature. A
number of procedures are dedicated creation procedures . These procedures can be used
in creation expression ( create keyword) to create new objects. A class can be marked as
an expanded class ( expanded keyword). Objects of expanded classes get copied when
they get passed around; objects of non-expanded classes get aliased.
Formally, a type t is a triple
(
,
,
)
. The component d is the detachable tag , p is
the processor tag ,and c is the class type . The detachable tag d captures detachability.
An entity of attached type ( attached keyword), i.e., d
d
p
c
!, is statically guaranteed to
store a value, i.e., to be non-void. An entity of detachable type ( detachable keyword),
i.e., d
=
?, can be void. As discussed later, the detachable tag is also used for the selec-
tive locking mechanism to prevent a request queue from being locked. The processor
tag p captures the locality of objects accessed by an entity of the type t . The processor
tag p can be separate ( separate keyword without explicit processor specification), i.e.,
p
=
. The object attached to the entity of the type t is potentially handled by a differ-
ent processor than the current processor. The processor tag p can be explicit ( separate
keyword with explicit processor specification), i.e., p
=
. The object attached to the
entity of the type t is handled by the processor specified by
= α
α
. The processor tag p can
be non-separate (no separate keyword), i.e. p
. The object attached to the entity of
the type t is handled by the current processor. The processor tag p can denote no pro-
cessor, i.e., p
=
=
. It is used in the type of the void reference. The explicit processor tag
Search WWH ::




Custom Search