/c/cs421/as/as5
directory on all zoo machines.
Attached is the detailed specification of this assignment. It is
also available in the /c/cs421/as/as5/README
file on all the ZOO
machines.
Assignment 5. Type Checker Programming exercise described in Modern Compiler Implementation in ML, Chapter 5, on page 121 - 122. This assignment is to implement a type checker for the Tiger language. Please read Chapter 5 of Appel very CAREFULLY before starting to work on the assignment. You need to do both Part (a) and Part (b) of the type checker (see pp. 121 - 122 of Appel). But it is a good idea to make Part (a) work correctly first before embarking on Part (b). WARNING: sample code in Appel's book contains many syntactic errors, so don't try to copy the code from Appel's book into your semant.sml. Understand the problem and write your own code. The "/c/cs421/as/as5" now contains the following files: absyn.sml errormsg.sml table.sig table.sml symbol.sml parse.sml These are copied from the "as4" directory. types.sml The internal representation of types. main.sml The top level program used to test your typechecker. Function call "Main.comp fname" will parse and typecheck the tiger program in file "fname". Function call "Main.testit()" will parse and typecheck all 49 tiger programs in the "/c/cs421/as/testcases" directory. env.sml semant.sml The skeleton env.sml and semant.sml files. You need to fill in the details in these two files. sources.cm The makefile. sources-mine.cm The sources.cm file if you want to use my lexer and parser. To start working on the assignment, copy all the above files into your working directory, copy your tiger.lex and tiger.grm file from your previous assignments, then start writing "env.sml" and "semant.sml". If your lexer or parser still does not work, you can use the "sources-mine.cm" file as your "sources.cm" file. This will use my lexer and parser instead. But I do NOT recommend this. I hope all of you will spend time debugging through your old assignments and use your own lexer and parser in the future assignments. Finally, you need to turn in the following three files README (more documentation is better) env.sml semant.sml This is probably the LARGEST assignment in this class. To most of you, it would probably take days. Please start working on it as early as you can. Also please make sure that your type-checker prints out friendly error messages. Enjoy, -Zhong Shao (shao-zhong@cs.yale.edu)