concrete CallStatement : Statement
{
VariableSymbol* reference destination in destination_vars;
Expression * owner callee_address in source_ops;
vector<Expression * owner> arguments in source_ops;
};
| destination | variable to which the result of the procedure is stored. The type of the variable must be a QualifiedType that references the DataType in the callee_address ProcedureType's return_type. If the result_type is a VoidType, or the result type is not used, the destination field will be NULL. |
| callee_address | Must be a pointer-to-ProcedureType and its value is the address of the procedure to call. The procedure type pointed to by the type of the callee_address must match the actual type of the procedure being called. |
| arguments | A vector of actual operands. The number and types of the arguments must be compatible with the callee_address result type |