Learning Objectives
1. Identity the correspondence between a grammar and a type.
2. Identify the correspondence between a grammar and a recursive-descent parser.
3. Add a new type and new rule for a given production.
Qestions
1. Explain to your teammates how this code works. Have one person explain the types and another explain the parse code.
2. Suppose we want to add if expressions. The grammar rule will be
(a) Extend the token type with an appropriate constructor.
(b) Extend the expression type with an appropriate constructor.
(c) Add a clause to the parse function to correctly parse the new rule.