This lab is designed to give you more experience working with interpreters by having you extend the interpreter for slideshows.
In a slideshow package such as powerpoint, overlays let the presenter add details to the slide that's already on the screen. This is useful when showing several steps in a single example, where each step builds on the previous ones.
For this lab, add overlays to the slideshow program with dynamic content. Start with the file from class, and modify it accordingly. You will need to modify the data definition for programs to allow someone to specify overlays, modify the talk program to use overlays, and modify the interpreter to process the overlays.
(Note: use the "Pretty Big" language under the PLT section of languages in DrScheme for this lab)
As an example, here's how a run of the program with overlays might look:
------------------------------ Title: Hand Evals in DrScheme Hand evaluation helps you learn how Scheme reduces programs to values ------------------------------ n ------------------------------ Title: Example 1 ------------------------------ n ------------------------------ Title: Example 1 1. (+ (* 2 3) 6) ------------------------------ n ------------------------------ Title: Example 1 1. (+ (* 2 3) 6) 2. (+ 6 6) ------------------------------ n ------------------------------ Title: Example 1 1. (+ (* 2 3) 6) 2. (+ 6 6) 3. 12 ------------------------------ n ------------------------------ Title: Summary: How to Hand Eval 1. Find the innermost expression 2. Evaluate one step 3. Repeat until have a value ------------------------------ n End of show
The example slide sequence comes from one slide and 3 overlays. Also note:
How should overlays behave? Here are some assumptions you should or should not make:
You may assume that the title appears on the original slide and that overlays do not add titles.
Overlays may add more than one item to a pointlist or more than one string at a time. How much info an overlay adds is specified at the level of individual overlays.
You are free to modify the existing data definitions. You shouldn't need to modify them a lot though. If you find you are making lots of edits, ask for help.
Everyone should be able to extend the data definitions, modify the talk program to specify the above example, and figure out where to edit the interpreter to process the overlays.
If you are stuck, here are some hints to get you started. I urge you to think about the problem for a while before looking at the hints -- you'll develop better language development instincts that way.