5.4.2 Control Statements
A control statement's effect on the flow of execution is carried by the instruction it lowers to. A statement's own
runtime semantics are pure: they evaluate operands and return a result, and never mutate control state. The
InstructionKind and the pre-resolved offsets on
Instruction let the executor's fetch/decode loop decide
whether to branch (RD-VBAL §3.5.2 Instruction ).
A block statement is kept structured. Each of its headers remains an instruction of its own, and only the control
effects between them (a branch's fall-through-versus-skip choice, a loop's back-edge) are pre-resolved offsets
(RD-VBAL §3.5.3 Lowering Block Statements ).
Statements
Statement
AST node(s)
Instruction kind(s)
RD-VBAL §5.4.2.1 Call Statement
CallStatementNode
Simple
RD-VBAL §5.4.2.2 While Statement
WhileWendStatementNode
ConditionalBranch, Jump
RD-VBAL §5.4.2.3 For Statement
ForStatementNode
ForOpener, ForNext
RD-VBAL §5.4.2.4 For Each Statement
ForEachStatementNode
ForEachOpener, ForEachNext
RD-VBAL §5.4.2.5 Exit For Statement
KeywordStatementNode (Token: "Exit For")
ExitLoop
RD-VBAL §5.4.2.6 Do Statement
DoLoopStatementNode , DoWhileLoopStatementNode , DoUntilLoopStatementNode , DoLoopWhileStatementNode , DoLoopUntilStatementNode
ConditionalBranch, LoopBack, Jump
RD-VBAL §5.4.2.7 Exit Do Statement
KeywordStatementNode (Token: "Exit Do")
ExitLoop
RD-VBAL §5.4.2.8 If Statement
IfBlockStatementNode , ElseIfBlockStatementNode , ElseBlockStatementNode
ConditionalBranch, Jump
RD-VBAL §5.4.2.9 Single-line If Statement
InlineIfStatementNode
ConditionalBranch
RD-VBAL §5.4.2.10 Select Case Statement
SelectCaseStatementNode , CaseExpressionStatementNode , CaseElseClauseStatementNode
Select, ConditionalBranch, Jump
RD-VBAL §5.4.2.11 Stop Statement
KeywordStatementNode (Token: Stop)
Break
RD-VBAL §5.4.2.12 GoTo Statement
GoToStatementNode
Jump
RD-VBAL §5.4.2.13 On...GoTo Statement
OnGoToStatementNode
JumpTable
RD-VBAL §5.4.2.14 GoSub Statement
GoSubStatementNode
GoSub
RD-VBAL §5.4.2.15 Return Statement
ReturnStatementNode
Return
RD-VBAL §5.4.2.16 On...GoSub Statement
OnGoSubStatementNode
GoSubTable
RD-VBAL §5.4.2.17 Exit Sub Statement
KeywordStatementNode (Token: "Exit Sub")
ExitProcedure
RD-VBAL §5.4.2.18 Exit Function Statement
KeywordStatementNode (Token: "Exit Function")
ExitProcedure
RD-VBAL §5.4.2.19 Exit Property Statement
KeywordStatementNode (Token: "Exit Property")
ExitProcedure
RD-VBAL §5.4.2.20 RaiseEvent Statement
KeywordStatementNode (Token: RaiseEvent)
Simple
RD-VBAL §5.4.2.21 With Statement
WithStatementNode
With
RD-VBAL §5.4.2.22 End Statement
KeywordStatementNode (Token: End)
Halt
RD-VBAL §5.4.2.23 Assert Statement
—
—
For a block statement, a Jump in the table above is the synthesized trailing jump of a branch, or a loop's
back-edge. See
RD-VBAL §3.4.1 Block Statements ,
RD-VBAL §3.4.2 Simple Statements and
RD-VBAL §3.5.2 Instruction for the complete node and instruction catalogues.
⏮️ RD-VBAL §5.4.1.2 Rem Statement | ⏭️ RD-VBAL §5.4.2.1 Call Statement