NodeName:
TYPE~{
none,
lambda, -- LAMBDA decl => exp IN exp 1 = domain decl, 2 = range, 3 = body
let, -- LET binding IN exp 1 = binding, 2 = exp
arrow, -- decl -> exp 1 = domain decl, 2 = range
arrow2, -- decl ->> exp 1 = domain decl, 2 = range
apply, -- exp exp 1 = rator exp, 2 = rand exp
applyDefault, -- exp * exp 1 = rator exp, 2 = rand exp
subscript, -- exp . id 1 = exp, 2 = id
union, -- exp + exp 1, 2 = exp
then, -- exp THEN exp 1, 2 = exp
exclusion, -- exp - exp 1, 2 = exp
restriction, -- exp ^ exp 1, 2 = exp
splitUpper, -- exp \ exp 1, 2 = exp
splitLower, -- exp / exp 1, 2 = exp
group, -- [ exp's ] 1, ..., n = exp
decl, -- [ declElem's ] 1, ..., n = declElem
declElem, -- name : exp 1 = id, 2 = exp (or null)
bind, -- [ bindElem's ] 1, ..., n = bindElem
bindRec, -- REC [ bindElem's ] 1, ..., n = bindElem
bindElem, -- decl : exp 1 = id, 2 = exp (or null)
type, -- TYPE id 1 = name
env, -- ENV
nil, -- NIL
control, -- CONTROL
unitId,
-- host dirlist namelist ! version 1 = host, 2 = dirlist,
3 = namelist, 4 = version
uiList, -- namelist 1 , ..., name/unquote
unQuote, -- name ^ 1 = name
typeTYPE, -- (internal)
typeDECL, -- (internal)
typeBINDING, -- (internal)
typePATTERN, -- (internal)
typeSTRING, -- STRING
nBind, -- normalized bind (internal) 1 = decl, 2 = group or let
nBindRec, -- normalized bindRec (ditto) 1 = decl, 2 = group or let
stamp, -- version stamp (internal) 1 = bcd version stamp
cross, -- cross type (internal) 1, 2 = type
cross2, -- cross cross type (internal) 1 = decl, 2 = type