1. Describe the module structure of Example 4.6, using GDN. Example 4.6 introduced the problem of writing an interpreter for the MINI programming language. Here we address the problem of defining a compiler for MINI. One possible architecture is the following: 2. Describe the module structure of Figure 4.11, using TDN. 3. Redesign the interface of the stack module so that it takes account of the previous comments. Also, discuss the use of a fixed-size data structure to implement the stack. Under what assumption is the interface correct? Is the module easily reusable? If not, how can you improve its reusability?