The three kinds of environments that could be associated with a procedure passed as a parameter are illustrated by the Pascal program in Fig. 7.54. The lexical, passing, and activation environments of such a procedure consist of the bindings of identifiers at the point at which the procedure is defined, passed as a parameter, and activated, respectively. Consider function f, passed as a parameter on line II.

Using the lexical, passing, and activation environments for f. nonlocal m 00 line 8 is in the scope of the declarations of m on lines 6. 10, and 3, respectively.
a) Draw the activation tree for this program.
b) What is the output of the program, using the lexical. passing, and activation environments for £1 *
c) Modify the display implementation of a lexically scoped language to set up the lexical environment correctly when a procedure passed as a parameter is activated.
