Homework week 3


1)  nut-compiler has not been finished.  There are no "let", "enum" and string.  Extend nut-compiler (nut.txt) to include them.  You can look at the C source in "nut4/nutc/" directory, nut.c as a guide.

2) n-code object can be made "relocatable", i.e. not dependent on the absolute location in the memory.  This can be achieved by "linearising" the n-code tree.  The simplest form is the "prefix" form.  See the following example:

source
(+ 2 3)  

becomes readable n-code:

(+ lit.2 lit.3)

which is stored in the memory (say starts at 6)

2 1 16 3 0
4 1 16 2 2
6 1 6 0 4

this object is not relocatable, it embeds the absolute location in the "next" link.  A list can be represented by prefixing it with its length, no "next" link is necessary.

(+ lit.2 lit.3)

becomes

3 + lit.2 lit.3

another example:

(+ lit.2 (+ lit.3 lit.4))

becomes
3 + lit.2 3 + lit.3 lit.4

This representation can be converted into an n-code tree (at any location).

Write a program to output n-code object in linear form to a file and read it back into the memory properly at a different location.  You can use "prList" to print the readable n-code out to check it.

  10 Nov 2009