ATL: Atlas Transformation Language Specification of the ... - Eclipse
ATL: Atlas Transformation Language Specification of the ... - Eclipse
ATL: Atlas Transformation Language Specification of the ... - Eclipse
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
No change.<br />
Description<br />
<strong>Specification</strong> <strong>of</strong> <strong>the</strong> <strong>ATL</strong> Virtual Machine<br />
The <strong>of</strong>fset operand must be <strong>of</strong> type int. Execution proceeds at <strong>the</strong> <strong>of</strong>fset from <strong>the</strong> address <strong>of</strong> <strong>the</strong><br />
opcode <strong>of</strong> this goto instruction. The target address must be that <strong>of</strong> an opcode <strong>of</strong> an instruction<br />
within <strong>the</strong> operation that contains this goto instruction.<br />
4.3.3 The iterate instruction<br />
Operation<br />
Delimitate <strong>the</strong> beginning <strong>of</strong> iteration on collection elements.<br />
Format<br />
Operand Stack<br />
Description<br />
Iterate<br />
…, collection ⇒ …<br />
collection is popped from <strong>the</strong> operand stack. Execution proceeds from <strong>the</strong> opcode following this<br />
iterate instruction to its corresponding enditerate opcode (iterate instructions can be nested) for<br />
each element <strong>of</strong> <strong>the</strong> popped collection. Before each loop entry, <strong>the</strong> next element <strong>of</strong> <strong>the</strong> popped<br />
collection is pushed onto <strong>the</strong> operand stack. After <strong>the</strong> last loop, execution proceeds from <strong>the</strong> opcode<br />
following <strong>the</strong> enditerate instruction associated with this iterate instruction. Within an operation,<br />
each iterate instruction has to be associated with an enditerate instruction.<br />
4.3.4 The enditerate instruction<br />
Operation<br />
Delimitate <strong>the</strong> end <strong>of</strong> iteration on collection elements.<br />
Format<br />
Operand Stack<br />
No change.<br />
Description<br />
enditerate<br />
Delimitate <strong>the</strong> end <strong>of</strong> an iteration previously opened by an iterate instruction. No action is<br />
associated with an enditerate instruction. Within a given operation, <strong>the</strong> number <strong>of</strong> enditerate<br />
instructions must be equal to <strong>the</strong> number <strong>of</strong> iterate instructions. An enditerate instruction may be<br />
specified only if a non-delimited iterate instruction has been previously declared in <strong>the</strong> same<br />
operation.<br />
4.3.5 The call instruction<br />
Operation<br />
Call a method.<br />
Format<br />
Operand Stack<br />
value<br />
call<br />
signature<br />
…, context, [arg1, [arg2 ...]] ⇒ … when called operation has no return<br />
Page 30 / 62