Table of Contents
This chapter specifies the syntax and semantics of names and expressions.
Names are used to denote a variety of entities within a Comma program. Names can refer to declared entities such as signatures, domains and types. Other examples include indexed and selected components, subroutine formal parameters, object declarations, the result of function calls, type conversions, and attributes applied (recursively) to a name.
Name | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
Attributes | |||||
---|---|---|---|---|---|
|
|
For a range attribute mark of the form X'Range(N)
the
prefix X
must denote a scalar subtype, a
constrained array subtype, or a value of array type.
When the prefix X
denotes a scalar subtype
a range arribute mark of the form X'Range
is equivalent
to X'First .. X'Last
. An argument may not be supplied.
When the prefix X
denotes a constrained
array subtype or a value of some array type then the argument, if
present, must be a static integer expression. If an argument is not
supplied a then an implicit default argument of 0 is used. A range
attribute mark of the form X'Range(N)
is equivalent to a
range A'First(N) .. A'Last(N)
, with the exception that
the prefix is evaluated only once.
Indexed Components | |||||
---|---|---|---|---|---|
|
Selected Components | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
A function call represent the invocation of a subroutine that returns a value as the result of normal exectution. Function call expressions may provide key associations which map the actual parameters of the call to the corresponding formal parameters.
Function Calls | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
|
Expressions | |||||
---|---|---|---|---|---|
|