diff --git a/AstSemantics.md b/AstSemantics.md index 43d562ac..aff8b63e 100644 --- a/AstSemantics.md +++ b/AstSemantics.md @@ -250,9 +250,15 @@ Branches that exit a `block`, `loop`, or `tableswitch` may take a subexpression that yields a value for the exited construct. Branches may only reference labels defined by an outer *enclosing construct*. This means that, for example, references to a `block`'s label can only occur -within the `block`'s body. In practice, outer `block`s can be used to place labels for any -given branching pattern, except for one restriction: one can't branch into the middle of a -loop from outside it. This restriction ensures all control flow graphs are well-structured. +within the `block`'s body. + +In practice, outer `block`s can be used to place labels for any given branching +pattern, except for one restriction: one can't branch into the middle of a loop +from outside it. This restriction ensures all control flow graphs are well-structured +in the exact sense as in high-level languages like Java, JavaScript, Rust and Go. To +further see the parallel, note that a `br` to a `block`'s label is functionally +equivalent to a labeled `break` in high-level languages in that a `br` simply +breaks out of a `block`. ### Yielding values from control constructs