Interface ReferenceExpression

All Superinterfaces:
SymbolicExpression, SymbolicObject
All Known Subinterfaces:
ArrayElementReference, NTReferenceExpression, OffsetReference, TupleComponentReference, UnionMemberReference

public interface ReferenceExpression extends SymbolicExpression

An expression representing a way to reference into values. A reference expression may be thought of as a function which accepts certain values (represented as symbolic expressions) and for each such value, returns a reference to some sub-structure of that value.

For example, the identity reference accepts a value and returns a reference to the entire value. It is like the identity function. A non-trivial example is the reference expression "element 17 of an array." Thought of as a function, that reference accepts any value of array type and returns element 17 of that value. There is also a tuple component reference, which is similar to an array reference, though the index must be concrete for a tuple component reference, while for an array reference the index can be specified by any symbolic expression of integer type.

Reference expressions can be composed. For example, a reference expression corresponding to "element 17 of component 2 of element 32 of an array of tuples of arrays" may be formed.

See Also: