Everything that executes is called an ExecutionObject.
abstract ExecutionObject : ScopedObject
{
virtual list<Expression * owner> source_ops;
virtual list<VariableSymbol* reference> source_vars;
virtual list<CodeLabelSymbol* reference> defined_labels;
};
| source_ops | Virtual list to allow iteration of all source operands of this execution object. |
| source_vars | Virtual list to allow iteration of all variables read of this execution object. |
| defined_labels | Virtual list to allow iteration of all labels defined in this execution object. |
Subclasses:
| Statement | The statement does not return any value and may affect the control flow. |
| Expression | It always returns a value. |