14.1 FIR_Expression
14.1.1 Derived Class Description
The predefined FIR_Expression class and its derivatives represent formulas for computing a value. They may appear in a wide variety of contexts including type definitions, the initial value of declarations, and as parameters within sequential or concurrent statements.14.1.2 Properties
struct FIR_Expression {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
};
struct FIR_MonadicOperator {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref implementation; /* reference to FIR_SubprogramDeclaration */
FIR_Ref operand;
};
struct FIR_IdentityOperator {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref implementation; /* reference to FIR_SubprogramDeclaration */
FIR_Ref operand;
};
struct FIR_NegationOperator {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref implementation; /* reference to FIR_SubprogramDeclaration */
FIR_Ref operand;
};
struct FIR_AbsoluteOperator {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref implementation; /* reference to FIR_SubprogramDeclaration */
FIR_Ref operand;
};
struct FIR_MonadicOperator {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref implementation; /* reference to FIR_SubprogramDeclaration */
FIR_Ref operand;
};
struct FIR_DyadicOperator {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref implementation; /* reference to FIR_SubprogramDeclaration */
FIR_Ref left_operand;
FIR_Ref right_operand;
};
struct FIR_AndOperator {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref implementation; /* reference to FIR_SubprogramDeclaration */
FIR_Ref left_operand;
FIR_Ref right_operand;
};
struct FIR_OrOperator {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref implementation; /* reference to FIR_SubprogramDeclaration */
FIR_Ref left_operand;
FIR_Ref right_operand;
};
struct FIR_NandOperator {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref implementation; /* reference to FIR_SubprogramDeclaration */
FIR_Ref left_operand;
FIR_Ref right_operand;
};
struct FIR_NorOperator {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref implementation; /* reference to FIR_SubprogramDeclaration */
FIR_Ref left_operand;
FIR_Ref right_operand;
};
struct FIR_XorOperator {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref implementation; /* reference to FIR_SubprogramDeclaration */
FIR_Ref left_operand;
FIR_Ref right_operand;
};
|
IR_Kind enumeration value
|
IR_XNOR_OPERATOR
|
|
Parent class
|
FIR_DyadicOperator
|
|
Predefined child classes
|
None
|
|
Application-specific data elements
|
Via extension class
|
struct FIR_XnorOperator {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref implementation; /* reference to FIR_SubprogramDeclaration */
FIR_Ref left_operand;
FIR_Ref right_operand;
};
struct FIR_EqualityOperator {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref implementation; /* reference to FIR_SubprogramDeclaration */
FIR_Ref left_operand;
FIR_Ref right_operand;
};
struct FIR_InequalityOperator {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref implementation; /* reference to FIR_SubprogramDeclaration */
FIR_Ref left_operand;
FIR_Ref right_operand;
};
struct FIR_LessThanOperator {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref implementation; /* reference to FIR_SubprogramDeclaration */
FIR_Ref left_operand;
FIR_Ref right_operand;
};
struct FIR_LessThanOrEqualOperator {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref implementation; /* reference to FIR_SubprogramDeclaration */
FIR_Ref left_operand;
FIR_Ref right_operand;
};
struct FIR_DyadicOperator {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref implementation; /* reference to FIR_SubprogramDeclaration */
FIR_Ref left_operand;
FIR_Ref right_operand;
};
struct FIR_GreaterThanOrEqualOperator {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref implementation; /* reference to FIR_SubprogramDeclaration */
FIR_Ref left_operand;
FIR_Ref right_operand;
};
struct FIR_SLLOperator {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref implementation; /* reference to FIR_SubprogramDeclaration */
FIR_Ref left_operand;
FIR_Ref right_operand;
};
struct FIR_SRLOperator {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref implementation; /* reference to FIR_SubprogramDeclaration */
FIR_Ref left_operand;
FIR_Ref right_operand;
};
struct FIR_SLAOperator {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref implementation; /* reference to FIR_SubprogramDeclaration */
FIR_Ref left_operand;
FIR_Ref right_operand;
};
struct FIR_SRAOperator {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref implementation; /* reference to FIR_SubprogramDeclaration */
FIR_Ref left_operand;
FIR_Ref right_operand;
};
struct FIR_DyadicOperator {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref implementation; /* reference to FIR_SubprogramDeclaration */
FIR_Ref left_operand;
FIR_Ref right_operand;
};
struct FIR_ROROperator {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref implementation; /* reference to FIR_SubprogramDeclaration */
FIR_Ref left_operand;
FIR_Ref right_operand;
};
struct FIR_AdditionOperator {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref implementation; /* reference to FIR_SubprogramDeclaration */
FIR_Ref left_operand;
FIR_Ref right_operand;
};
struct FIR_SubtractionOperator {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref implementation; /* reference to FIR_SubprogramDeclaration */
FIR_Ref left_operand;
FIR_Ref right_operand;
};
struct FIR_ConcatenationOperator {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref implementation; /* reference to FIR_SubprogramDeclaration */
FIR_Ref left_operand;
FIR_Ref right_operand;
};
struct FIR_MultiplicationOperator {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref implementation; /* reference to FIR_SubprogramDeclaration */
FIR_Ref left_operand;
FIR_Ref right_operand;
};
struct FIR_DivisionOperator {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref implementation; /* reference to FIR_SubprogramDeclaration */
FIR_Ref left_operand;
FIR_Ref right_operand;
};
struct FIR_ModulusOperator {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref implementation; /* reference to FIR_SubprogramDeclaration */
FIR_Ref left_operand;
FIR_Ref right_operand;
};
struct FIR_RemainderOperator {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref implementation; /* reference to FIR_SubprogramDeclaration */
FIR_Ref left_operand;
FIR_Ref right_operand;
};
struct FIR_ExponentiationOperator {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref implementation; /* reference to FIR_SubprogramDeclaration */
FIR_Ref left_operand;
FIR_Ref right_operand;
};
struct FIR_PhysicalLiteral {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref abstract_literal;
FIR_Ref unit;
};
struct FIR_Aggregate {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_AssociationList element_association_list;
};
struct FIR_OthersInitialization {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref expression;
};
struct FIR_FunctionCall {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref implementation; /* reference to FIR_SubprogramDeclaration */
FIR_Ref parameter_association_list; /* FIR_AssociationList */
};
struct FIR_QualifiedExpression {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref type_mark;
FIR_Ref expression;
};
struct FIR_TypeConversion {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref type_mark;
FIR_Ref expression;
};
struct FIR_Allocator {
IR_Kind kind;
FIR_Source source_locator;
FIR_Ref subtype; /* reference to FIR_TypeDefinition */
FIR_Ref value; /* may be NIL, from subtype or expression */
};