Imagine that you were asked to implement a tax-preparation program such as TurboTax. Such programs change only slightly from year to year: the tax rates and some questions asked may change, but the core of a taxes program is the same from year to year (query the user for information, compute values for different lines). This is a good indication that there is a "language" of tax forms such that someone can write the new tax form program each year, but use the same underlying program (interpreter) to prepare the tax forms.
For this assignment, you will design a language of tax forms. You will NOT write the interpreter that runs the forms. This is an assignment in language design only.
Your language must be sufficient to capture the non-blacked-out portions of the following tax form and schedules:
Your language should be sufficient to capture all of the non-blacked-out portions of these two forms. If your language design is sufficient, then someone should be able to write an interpreter for it that would prompt a user for the information needed to compute that user's taxes; which prompts to give (and when) should be contained within your tax form language. Similarly, instructions to compute intermediate values needed in a tax computation should be part of your language. The interpreter should not need any information other than your program and the tax tables (which you will ignore for this assignment) to compute taxes. Remember that your goal is to produce a language that would let someone "program" different tax forms without changing the underlying interpreter.
For the proposed language portion, submit the data definition that you intend to use for tax forms. The design should be sufficient to capture the entire required portions of the 1040 form and the schedules A and B.
For the example, show how you will capture a non-trivial portion of the required portion of the 1040 form/schedules in your language. You do not need to specify the entire form, but you should show enough to demonstrate how each part of your data definition is used in specifying a tax form and how each interesting part of the form fits in your language.
Turn in a single file hwk4.ss (or hwk4.scm) containing the data definitions and tax form example programs. Make sure that both students' names are in a comment at the top of the file.
Use the list of questions we covered in the first lecture on slideshows to help identify the pieces you need in the language: what is the data in a tax form, what operations/commands need to happen on that data, etc.