- Pascal: These frames expect Pascal statements or may contain other frames.
- This frame begins a (possibly empty) sequence of statements. In the context of routine definitions or a
programit can delimit a scope.
- This frame surrounds a “catch-all”-alternative as part of a
repeat … until
repeatin conjunction with
untilis used to surround the loop body of a tail-controlled loop. It is the only frame type not ending with an
- exception treatment
- If exceptions are supported in the current compiler mode, the following frames are available as well. These frames are in fact “double”-frames: They group two sequences at once. Neither of them can be used independently (e. g. writing
finally … end;without a proper
- Assembly language: Frames beginning with
asmexpect assembly language. In pure assembly routines, this kind of frame may delimit a scope, too. Note, you cannot nest other frames in
Although not mandatory, it is customary to indent all code surrounded by frame markers by one level.
try openJar; except throwATantrum; end;
Some styles add another indentation level for nested or subordinate frame markers per se.
if apples = oranges then begin protest; halt(123); end;
As you can see from the examples above, it is customary to put frame delimiters isolated in their own line. Exempt of this guideline are of course frames accepting or requiring additional clauses to be syntactically complete:
repeat write('Enter a non-negative integer: '); readLn(i); until i >= 0;
asm rdrand eax mov n, eax end ['eax'];
Frames frequently, but not always, turn up to be (conditional)
Some compile-time optimizations require code to be structured in a certain way, frames setting boundaries for that.