Homework 3 is to read Chapter 5 of the text and build a static-semantics checker for Appel's Tiger language.
Your code should perform the static semantic checks decribed in Chapter 5:
break statements that occur out of
scope.Your Semant module should export a function with
this signature:
transProg : Absyn.exp -> unit
that checks an AST and outputs error messages if anything is
wrong. (Why is our type-checker called transProg
rather than something like typeCheck? Because we'll
be extending it in Homework 4 to type-check and translate the AST
to our intermediate representation.)
You will find a structure Types defining a
datatype to represent Tiger types in
$TIGER/chap5/types.sml.
You should submit:
Words to the wise:
Types.tyAbsyn.tyAbsyn.ty chunk of Tiger
type syntax to a Types.ty value. But don't
confuse the two different datatypes. Anytime you must handle a
description of a Tiger type, be clear in your mind: are you
handling a semantic value or a chunk of syntax?Last updated 18 February 2008.