== == (= occam two syntax tree definition 30-Jan-1991 =) == ==
==============================================================
actionnode      == (S_ASS, *element, *exp)
actionnode      == (S_ASS, *list(element), *list(exp))
actionnode      == (S_CASE, *exp, *list(specification(selection)))
actionnode      == (S_CASE_INPUT, *element, *list(specification(variant)))
actionnode      == (S_DELAYED_INPUT, *element, *exp)
actionnode      == (S_INPUT, *element, *list(inputitem))
actionnode      == (S_OUTPUT, *element, *list(outputitem))
actionnode      == (S_TAGGED_INPUT, *element, *list(inputitem))
altnode         == (S_ALTERNATIVE, *altguard, *altinput, *specification(process))
altnode         == (S_ALTERNATIVE, *altguard, *caseinput, NULL) -- frontend
altnode         == (S_ALTERNATIVE, *altguard, *specification(altinput), *specification(process)) -- backend
altnode         == (S_ALTERNATIVE, *altguard, *specification(caseinput), NULL) -- backend
arraynode       == (S_ARRAY, *exp, *stype, dimlength)
arraynode       == (S_ARRAY, *exp, *type, dimlength)
arraynode       == (S_ARRAY, NULL, *type, -1)
arraysubnode    == (S_ARRAYITEM, *exp, *element, BIT32 offset)  -- backend
arraysubnode    == (S_ARRAYSUB, *element, *exp)  -- frontend
arraysubnode    == (S_ARRAYSUB, *table, *exp)
arraysubnode    == (S_RECORDSUB, *element, *namenode)           -- configuration
channode        == (S_CHAN, *protocol)
channode        == (S_PORT, *simpleprotocol)
cnode           == (S_ALT, *list(specification(alternative)))
cnode           == (S_ASM, *list(guyline))
cnode           == (S_BASICBLOCK, *list(process))  -- dag stuff
cnode           == (S_DO, *list(specification(process)))        -- configuration
cnode           == (S_GUY, *list(guyline))
cnode           == (S_IF, *list(specification(choice)))
cnode           == (S_PAR, *list(specification(process)))
cnode           == (S_PLACEDPAR, *list(placement))
cnode           == (S_PRIALT, *list(specification(alternative)))
cnode           == (S_PRIPAR, *list(specification(process)))
cnode           == (S_SEQ, *list(specification(process)))
condnode        == (S_CHOICE, *exp, *process)
condnode        == (S_SELECTION, *else, *specification(process))
condnode        == (S_SELECTION, *list(exp), *specification(process))
condnode        == (S_WHILE, *exp, *specification(process))
confignode      == (S_CONNECT, *element, *element, *element)    -- configuration
confignode      == (S_MAP, *list(element), *element, *expression)--configuration
confignode      == (S_SET, *element, *list(attr), *list(exp))   -- configuration
constexpnode    == (S_CONSTEXP, *exp, BIT32 hi, lo)  -- exp is the original tree
consttablenode  == (S_CONSTCONSTRUCTOR, *wordnode, *operand)
consttablenode  == (S_STRING, *wordnode, NULL)
declnode        == (S_ABBR, *name, *element, *p)
declnode        == (S_CONFIG, *name, *process, *p)              -- configuration
declnode        == (S_DECL, *list(name), NULL, *p)
declnode        == (S_DECL, *name, NULL, *p)
declnode        == (S_LABELDEF, *label, labelname, NULL)
declnode        == (S_LFUNCDEF, *name, *valof, *p)
declnode        == (S_MAPPING, *name, *process, *p)             -- configuration
declnode        == (S_NETWORK, *name, *process, *p)             -- configuration
declnode        == (S_PLACE, *name, *exp, *p)    -- PLACE n AT v
declnode        == (S_PLACEON, *list(element), *element, *p)    -- configuration
declnode        == (S_PROCDEF, *name, *process, *p)
declnode        == (S_RETYPE, *name, *element, *p)
declnode        == (S_SFUNCDEF, *name, *valof, *p)  -- the valof is always (S_SKIP)
declnode        == (S_SPROTDEF, *name, NULL, *p)
declnode        == (S_TPROTDEF, *name, NULL, *p)
declnode        == (S_VALABBR, *name, *exp, *p)
declnode        == (S_VALRETYPE, *name, *exp, *p)
declnode        == (S_VSPLACE, *name, NULL, *p)  -- PLACE n IN VECSPACE
declnode        == (S_WSPLACE, *name, *exp, *p)  -- PLACE n AT WORKSPACE v
declnode        == (S_WSPLACE, *name, NULL, *p)  -- PLACE n IN WORKSPACE
dopnode         == (S_ADD, *operand, *operand, type)
dopnode         == (S_AFTER, *operand, *operand, type)
dopnode         == (S_AND, *exp, *operand, type)
dopnode         == (S_BITAND, *operand, *operand, type)
dopnode         == (S_BITOR, *operand, *operand, type)
dopnode         == (S_CCNT1, *operand, *operand)
dopnode         == (S_COLON2, *element, *element)
dopnode         == (S_COLON2, *exp, *exp)
dopnode         == (S_COLON2, *stype, (S_ARRAY, NULL, *type, -1))
dopnode         == (S_CSUB0, *operand, *operand)
dopnode         == (S_DIV, *operand, *operand, type)
dopnode         == (S_EQ, *operand, *operand, type)
dopnode         == (S_EVAL, *exp, *exp)  -- evaluate and throw away LHS, return rhs
dopnode         == (S_FOR, *exp, *exp)   -- range for overlapcheck
dopnode         == (S_GE, *operand, *operand, type)
dopnode         == (S_GR, *operand, *operand, type)
dopnode         == (S_GUYCODE, (treenode *)*wordnode, *list(asmexp))
dopnode         == (S_GUYSTEP, (treenode *)*wordnode, NULL)
dopnode         == (S_INTERVAL, *exp, *exp)  -- obsolete
dopnode         == (S_LE, *operand, *operand, type)
dopnode         == (S_LS, *operand, *operand, type)
dopnode         == (S_LSHIFT, *operand, *operand, type)
dopnode         == (S_MINUS, *operand, *operand, type)
dopnode         == (S_MULT, *operand, *operand, type)
dopnode         == (S_NE, *operand, *operand, type)
dopnode         == (S_OR, *exp, *operand, type)
dopnode         == (S_OVERLAPCHECK, *exp, *exp)
dopnode         == (S_PLUS, *operand, *operand, type)
dopnode         == (S_REM, *operand, *operand, type)
dopnode         == (S_RSHIFT, *operand, *operand, type)
dopnode         == (S_SUBTRACT, *operand, *operand, type)
dopnode         == (S_TIMES, *operand, *operand, type)
dopnode         == (S_XOR, *operand, *operand, type)
hiddenparamnode == (S_FNACTUALRESULT, *exp, 0)       -- backend
hiddenparamnode == (S_FNFORMALRESULT, *type, 0)      -- backend
hiddenparamnode == (S_HIDDEN_PARAM, *exp, dimension) -- backend
instancenode    == (S_FINSTANCE, *name, *list(exp))
instancenode    == (S_PINSTANCE, *name, *list(exp))
leafnode        == (S_ANY)
leafnode        == (S_ARC)      -- configuration
leafnode        == (S_BOOL)
leafnode        == (S_BYTE)
leafnode        == (S_DUMMYEXP)   -- null expression
leafnode        == (S_EDGE)     -- configuration
leafnode        == (S_ELSE)
leafnode        == (S_END) -- end of outermost list of declarations
leafnode        == (S_FALSE)
leafnode        == (S_INT)
leafnode        == (S_INT16)
leafnode        == (S_INT32)
leafnode        == (S_INT64)
leafnode        == (S_LABEL) -- type of an assembler label
leafnode        == (S_LABEL) -- type of an assembler label
leafnode        == (S_NODE)     -- configuration
leafnode        == (S_PARAM_STATICLINK) -- backend
leafnode        == (S_PARAM_VSP)        -- backend
leafnode        == (S_REAL32)
leafnode        == (S_REAL64)
leafnode        == (S_SKIP)
leafnode        == (S_SKIP)
leafnode        == (S_STOP)
leafnode        == (S_TIMER)
leafnode        == (S_TRUE)
leafnode        == (S_UNDECLARED)
listnode        == (S_FNTYPE, *list(type), *list(param))
listnode        == (S_LIST, *l, *list(l))
litnode         == (S_BYTELIT, *wordnode)
litnode         == (S_INT16LIT, *wordnode)
litnode         == (S_INT32LIT, *wordnode)
litnode         == (S_INT64LIT, *wordnode)
litnode         == (S_INTLIT, *wordnode)
litnode         == (S_REAL32LIT, *wordnode)
litnode         == (S_REAL64LIT, *wordnode)
litnode         == (S_UBYTELIT, *wordnode)
litnode         == (S_UINTLIT, *wordnode)
litnode         == (S_UREALLIT, *wordnode)
mopnode         == (S_ADDRESSOF, *exp) -- only valid inside ASM, not GUY
mopnode         == (S_BITNOT, *operand, type)
mopnode         == (S_CONSTRUCTOR, *list(exp))
mopnode         == (S_ELSIZE, *operand)   -- backend
mopnode         == (S_EXACT, *operand, type)
mopnode         == (S_MOSTNEG, *stype, type)
mopnode         == (S_MOSTPOS, *stype, type)
mopnode         == (S_NEG, *operand, type)
mopnode         == (S_NOT, *operand, type)
mopnode         == (S_ROUND, *operand, type)
mopnode         == (S_SEGSTART, *operand) -- backend
mopnode         == (S_SIZE, *operand, type)
mopnode         == (S_STRUCTCONSTRUCTOR, *operand, *type) -- obsolete
mopnode         == (S_TRUNC, *operand, type)
mopnode         == (S_UMINUS, *operand, type)
namenode        == (N_ABBR, *wordnode, *type, *specification)
namenode        == (N_CONFIG, *wordnode, NULL, *specification)  -- configuration
namenode        == (N_DECL, *wordnode, *type, *specification)
namenode        == (N_FIELD, *wordnode, NULL, *specification)   -- configuration
namenode        == (N_INLINEFUNCDEF, *wordnode, *fntype, *specification)
namenode        == (N_INLINEPROCDEF, *wordnode, *list(param), *specification)
namenode        == (N_LABELDEF, *wordnode, *type, *specification)
namenode        == (N_LFUNCDEF, *wordnode, *fntype, *specification)
namenode        == (N_LIBFUNCDEF, *wordnode, *fntype, *specification)
namenode        == (N_LIBPROCDEF, *wordnode, *list(param), *specification)
namenode        == (N_MAPPING, *wordnode, NULL, *specification) -- configuration
namenode        == (N_NETWORK, *wordnode, NULL, *specification) -- configuration
namenode        == (N_PARAM, *wordnode, *type, NULL)
namenode        == (N_PREDEFFUNCTION, *wordnode, *fntype, *specification)
namenode        == (N_PREDEFPROC, *wordnode, *list(param), *specification)
namenode        == (N_PROCDEF, *wordnode, *list(param), *specification)
namenode        == (N_REPL, *wordnode, *type, *specification)
namenode        == (N_RETYPE, *wordnode, *type, *specification)
namenode        == (N_SCFUNCDEF, *wordnode, *fntype, *specification)
namenode        == (N_SCPROCDEF, *wordnode, *list(param), *specification)
namenode        == (N_SFUNCDEF, *wordnode, *fntype, *specification)
namenode        == (N_SPROTDEF, *wordnode, *list(simpleprotocol), *specification)
namenode        == (N_STDLIBFUNCDEF, *wordnode, *fntype, *specification)
namenode        == (N_STDLIBPROCDEF, *wordnode, *list(param), *specification)
namenode        == (N_TAGDEF, *wordnode, *list(simpleprotocol), NULL)
namenode        == (N_TPROTDEF, *wordnode, *list(tag), *specification)
namenode        == (N_VALABBR, *wordnode, *type, *specification)
namenode        == (N_VALPARAM, *wordnode, *type, NULL)
namenode        == (N_VALRETYPE, *wordnode, *type, *specification)
namenode        == (T_PREEVALTEMP, *wordnode, *type, *exp)
namenode        == (T_REGTEMP, *wordnode, *type, *exp)
namenode        == (T_RESERVEDWS, *wordnode, *type, *exp)
namenode        == (T_TEMP, *wordnode, *type, *exp)
processornode   == (S_PROCESSOR, *exp, *process)  -- config only
replcnode       == (S_ARRAYCONSTRUCTOR, *name, *exp, *exp, *exp) -- obsolete
replcnode       == (S_PLACEDREPLPAR, *name, *exp, *exp, *placement)
replcnode       == (S_PRIREPLALT, *name, *exp, *exp, *specification(alternative))
replcnode       == (S_PRIREPLPAR, *name, *exp, *exp, *specification(process))
replcnode       == (S_REPLALT, *name, *exp, *exp, *specification(alternative))
replcnode       == (S_REPLDO, *name, *exp, *exp, *specification(process)) -- configuration
replcnode       == (S_REPLIF, *name, *exp, *exp, *specification(choice))
replcnode       == (S_REPLPAR, *name, *exp, *exp, *specification(process))
replcnode       == (S_REPLSEQ, *name, *exp, *exp, *specification(process))
segmentnode     == (S_SEGMENT, *element, *exp, *exp)  -- frontend
segmentnode     == (S_SEGMENT, *table, *exp, *exp)
segmentnode     == (S_SEGMENTITEM, *element, *exp, *exp, *subscript-exp, *check-exp, BIT32 offset) -- backend
spacenode       == (S_SPACEUSAGE, *process, BIT32 maxwsp, datasize, vsusage, nestedvs, *name) -- backend
valofnode       == (S_VALOF, *process, *list(exp))
variantnode     == (S_VARIANT, *list(inputitem), *specification(process))
wordnode        == (S_ASMNAME, *string, len)  -- .WSSIZE etc
wordnode        == (S_NAME,    *string, len)
