function newnode(t:SyntaxClass) :tree; var n :tree; begin new(n); n^.tag := t; newnode := n end; function cons(h, t :tree) :tree; var c :tree; begin c := newnode(list); c^.hd := h; c^.tl := t; cons := c end; function append( a, b :tree ) :tree; begin if a=nil then append:=b else append:=cons(a^.hd, append(a^.tl, b)) end; {\fB Tree Manipulation. \fP}