[1] Footnote 2 suggests that an actual implementation would perform syntax transformations before program execution. In the same vein, names declared in blocks should be scanned out in a preprocessing step rather than each time a block is evaluated.
5.4.3   Blocks, Assignments, and Declarations