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.ty
Absyn.ty
Absyn.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.