This directory contains:

- L1: a shell script that runs an L1 interpreter. Pass it the name of
      a file containing an L1 program and get back the results.

- L2: a shell script that runs an L2 interpreter. Pass it the name of
      a file containing an L2 program and get back the results.

- L3: a shell script that runs an L3 interpreter. Pass it the name of
      a file containing an L3 program and get back the results.

- L4: a shell script that runs an L4 interpreter. Pass it the name of
      a file containing an L4 program and get back the results.

- L5: a shell script that runs an L5 interpreter. Pass it the name of
      a file containing an L5 program and get back the results.

- L4-steps: a shell script that produces a graphical trace of the
            A-normalization algorithm. The script reads an L3
            expression (not an L3 program) from stdin. Example
            usages:
            $ echo '((a b) c)' | ./L4-steps
            $ ./L4-steps
            ((a b) c)
            ^D
            $ ./L4-steps < file_containing_L3_expr

- check-coloring: a script that runs on the output of the graph coloring
  assignment to determine if the coloring is valid for the graph

- run-test-fests: a script that runs the tests from the Test Fests.
  Command-line arguments determine which tests to run. For example,

  ./run-test-fests --L1 your/code/L1 --L3 your/code/L3

  runs just the L1 and L3 tests, using L1 compiler at path 
  your/code/L1 and the L3 compiler at path your/code/L3. Supply
  the --help flag to see the names of the other command-line
  arguments.

  The run-test-fests script expects tests.tar.gz to be unpacked in
  the same directory as itself, but run-test-fests can be run from
  any directory (and it will still find the test cases).

  If your compiler executables are shell scripts, be sure the scripts
  begin with a #! line; otherwise, you'll get an error about exec
  failing.

These scripts require that you have Racket installed and its bin
directory on your path. If that is not the case, feel free to edit the
script to point to racket directly.

Pass the --help command line argument to see some options.

- fib.L1: the first fib example from the lecture notes

- fib-rec.L1 & fib-rec.L2: examples of an iterative version of fib in L1 and L2

- fib.L3: a fib function written in L3.

- fib.L4: a fib function written in L4.

- compiled/: a directory containing bytecode that implements the
             interpreters.

- README: this file
