tree = ^ node; SyntaxClass = ( ident, intcon, boolcon, charcon, emptycon, nilcon, lambdaexp, application, unexp, binexp, ifexp, block, declist, decln ); node = record case tag :SyntaxClass of ident :( id :alfa ); intcon :( n:integer ); boolcon :( b:boolean ); charcon :( ch:char ); emptycon, nilcon:(); lambdaexp :( fparam, body :tree ); application :( fun, aparam :tree ); unexp :( unopr :symbol; unarg :tree ); binexp :( binopr:symbol; left, right :tree ); ifexp :( e1, e2, e3 :tree ); block :( decs, exp :tree ); declist :( recursive:boolean; hd, tl :tree ); decln :( name: alfa; val:tree ) end; {\fB Syntactic Types. \fP}