 
  UNIVERSAL SYMBOLIC FORMAT
  =========================

  USF Encoding rules
  ==================

  Primitives
  ==========

	'aaaa'   Push an atom onto the stack
	         (within an atom ' is written \'
	          and \ is written \\)

	"aaa"    Push a string on the stack
	         (within a  string " is written \"
                  and \ is written \\)

	~aaaa~   Push a binary on the stack
	         (within a binary ~ is written \~
                  and \ is written \\)

        [-][0-9]* Integer (The integer starts with - or 0..9
		  and stops with the first chacater that is not in
		  00.9)

  White Space
  ===========
        %....%   Comment (skip)
                 (within a comment % is written \%
                  and \ is written \\)

	\s\n\r\t  Ignore

        ,        Ignore

  Tuples
  ======

	A tuple is a container for a fixed number of
	items. The source language tuple {A, B, ..., Z} is
	encoded by the sequence:

		"{" encode(A) encode(B) ... encode(Z) "}"

	{        Make a new stack frame

	}        Pop the topmost stack frame and convert it to 
		 a tuple (with it's element reversed)

  Lists
  =====
  
        A list is a container for a variable number of items.
	The list [A,B,...Z] is built in reverse order
	and encoded as:

	"#" encode(Z) & ... encode(B) & encode(A) &

	#        Push nil onto the stack

	&        Replace the two topmost entries on the stack
		 with (cons X Y)

  Cacheing
  ========

        Control = '"~%-0123456789{}#&$>,\s\n\r\t (26 characters)

	C       = 0..255 -- Control
		  i.e. the set of characters not included in
	          Control 

	>C       Pop the stack and store in register[C]
		 C is any character except Control

        C        Push register[C] on the stack

        $        Return the top stack entry (the stack must only have
		 ONE entry now)

   Examples
   ========

   'person'>p # {p,"Joe",123} & {p, 'fred', ~abc~} & $

   Represents the Erlang term

	[{person, "Joe", 123}, {person, fred, <<abc>>}].

   {'abc', 'def'>d, # 123 & d &}$

   Represents the Erlang term
	
        {abc, def, [def,123]}



