Modern Compiler Implementation in ML: Basic Techniques

Which version of ML should I use?

Why are there different versions of ML?

During the period 1994-96, a consortium of ML implementors including representatives of the Standard ML of New Jersey project, the Moscow ML project, and the Harlequin MLWorks product, worked together to standardize and greatly improve ML ``standard library'' and operating-system interface functions. The result is the SML Basis Library, which all three implementations (almost) support. Over the same period, the designers of ML made some small cleanups to the language design (deleting more than they added!), resulting in the Standard ML '97 language.

What's the best version for use with the Modern Compiler Implementation textbook?

Version 110, the current release of Standard ML of New Jersey, is fully SML'97 compliant. The Tiger compiler modules have been tested with this version of ML.

Support software

The Tiger compiler requires the use of ML-Lex (lexical analyzer generator), ML-Yacc (parser generator), and the SML/NJ Library (utility library functions not part of the Standard ML Basis Library); all of these are part of the SML/NJ software distribution. Make sure you use the version of Lex, Yacc, and SML-NJ-Lib that comes with the version of SML/NJ that you are using.