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>.