Overview of Code for Module 12

Files you will write or edit

match-compiler.sml

Template for the match compiler.

knormalize.sml

You will add code to handle CONSTRUCTED and CASE forms.

knf.sml

You will add forms for blocks and for decision trees.

codegen.sml

You will generate code for blocks and for decision trees.

assembler.sml

You will add code to handle the GOTO_VCON form.

New things

New file that you need to understand

case.sml

Defines data structures and utility functions for new syntax: patterns, constructed data, and case expressions.

New files that are useful

case-viz

A shell script that can be used to view a visualization of decision trees.

run-es-with-predef

A shell script that runs eScheme code using your UFT and SVM.

listutil.sml

Defines a few handy list functions: mapi, concatMap, foldri.

New files that can be ignored

match-viz.sml

Provides a visualization of decision trees.

predefs.es

Predefined functions of eScheme, adapted from μML.

Old things

Files that have changed in interesting or useful ways

asm.sml

Acquired a GOTO_VCON form.

object-code.sml

Acquired a GOTO_VCON form and a JUMP_TABLE_ENTRY form.

asmutil.sml

Acquired functions mkblock, setblockslot, getblockslot, and gotoVcon.

env.sml

Acquired a <+> function that will be useful for adding pattern bindings to an environment.

error-sig.sml, error-module.sml

Acquired function Error.option of type 'a error option -> 'a option error.

primitives.sml

Acquired a getblockslot primitive, useful for K-normalizing a LET_CHILD form of a decision tree.

Files that have changed in boring but necessary ways

iformat.h, iparsers.c, iparsers.h

To support GotoVcon and IfVconMatch, we’ve acquired a new instruction encoder and a new instruction parser.

opcode.h

I’ve added opcodes GotoVcon and IfVconMatch.

clscheme.sml, foscheme.sml

Acquired syntactic forms CONSTRUCTED and CASE.

disambiguate.sml

Converts uses of VCON into CONSTRUCTED data.

Changes you can mostly ignore

print.c

I’ve improved the printing of blocks (constructed data).

svm-dis.c

The svm-dis program has acquired a -pc option, and some code has been refactored.

languages.sml, uft.sml

We’ve acquired a new language ES and suitable driver support.

set.sml

Acquired function Set.singleton.

uft/vscheme.sml

Acquired new syntactic forms COND (used only for embedding), VCON, and CASE.

vscheme-parse.sml

Is now functorized and can parse either vScheme or eScheme.

wppscheme.sml

Can prettyprint the new forms from vscheme.sml. Other prettyprinting improvements.

Several others

Embedding or analysis of the CONSTRUCTED and CASE forms.