5.4.1 Statement Blocks
A statement block is a sequence of 0 or more statements.
-
statement-block = *(block-statement EOS) block-statement = statement-label-definition / rem-statement / statement / attribute-statement attribute-statement = attribute [IDENTIFIER "."] reserved-for-implementation-use attr-eq [quoted-identifier / boolean-literal-identifier] statement = control-statement / data-manipulation-statement / error-handling-statement / file-statement
Runtime Semantics
§ Execution of a <statement-block> starts by executing the first <block-statement> contained in the block and continues in sequential order until either the last contained <block-statement> is executed or a <control-statement> explicitly transfers execution to a <statement-label-definition> that is not contained in the <statement-block>.
§ Execution of a <statement-block> can begin by a <control-statement> transferring execution to a <statement-label-definition> contained within the <statement-block>. In that case, execution sequential statement execution begins with the target <statement-label-definition> and any <block-statement> elements preceding the target <statement-label-definition> are not executed.
§ <control-statement> elements within a <statement-block> can modify sequential execution order by transferring the current point of execution to a <statement-label-definition> contained within the same <statement-block>.
§ An identifier followed by “:” at the beginning of a line is always interpreted as a <statement-label-definition> rather than a <statement>.