Further LISP syntax tree improvements

Tagged:  
$ ./stree.lisp "[ab*]|[qw*]"
WARNING: INTERN("(SETF COMMON-LISP:TYPE)"): # is locked
         Ignore the lock and proceed
Dumping object #[SYMBOL-INSTANCE #x21E3DC66]
type: 2
  type: 3
    type: 4
      value: w, type: 0
      value: q, type: 0
  type: 3
    type: 4
      value: b, type: 0
      value: a, type: 0

Moving further in my LISP syntax tree parser - I switched from lists to objects which as value may contain a list. It is needed for simpler object extension, when I need to add object ID for example (monotonically increasing number in this case) I will just extend corresponding object, while previously, when relations were represented as lists I needed to add another list field and add clumsy list position helpers to determine what this object represents.

In case of objects it is also simpler to work with non-character symbols (i.e. another objects), although currently reader works with (char=) and friends.

I'm slowly preparing this code to start generating deterministic finite automata, which will be the next step I suppose, since current architecture is exactly what I wanted - rather simple and very extensible.

P.S. Out of curiosity, what method should object have to allow its pretty printing with (format t "~A") instead of #[SYMBOL-INSTANCE #x21E3DC66]?

SET-PPRINT-DISPATCH

<a href="http://www.lispworks.com/documentation/lw50/CLHS/Body/22_bab.htm" title="http://www.lispworks.com/documentation/lw50/CLHS/Body/22_bab.htm">http://www.lispworks.com/documentation/lw50/CLHS/Body/22_bab.htm</a>

I will take a look, thank you.