- 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
- This frame allows to temporarily modify the scope lookup routing.
- 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;
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.