Directory Organization

[NB: This will make more sense after reading An Abstract, Reusable, and Extensible Programming Language Design Architecture]

This directory is split into four logical units that comprise the hlt.language.design.* packages:

  1. Package hlt.language.design.kernel:
    contains the classes defining the kernel language expressions and their sanitizer and compiler;
  2. Package hlt.language.design.types:
    contains the classes defining the types and the typechecker, and the symbol table entries
  3. Package hlt.language.design.instructions:
    contains the classes defining the abstract machine intructions based on an abstract interface for a runtime system;
  4. Package hlt.language.design.backend:
    contains the classes defining the runtime system.

Some kernel classes import the types and instructions packages, and so do some of the backend's runtime; some classes in instructions import types; the classes in types involved in type-checking import the kernel package.

The inter-package import diagram is:

	  --------------<---------------
	 /                              \
      kernel --<--->-- types --<-->--instructions -->-- backend
                          \                               /
	                   ------------->-----------------
where an arrow -->-- means "import".