PPTree.Mesa
Copyright © 1985 by Xerox Corporation. All rights reserved.
Russ Atkinson, February 12, 1985 2:57:18 pm PST
PPTree: CEDAR DEFINITIONS = BEGIN
data structures
Link: TYPE = REF ANY;
Null: Link = NIL;
Node: TYPE = RECORD [
name: NodeName,
attr: PACKED ARRAY AttrId OF BOOLALL[FALSE],
info: CARDINAL ← 0,
son: SEQUENCE sonLimit: [1..MaxNSons] OF Link];
MaxNSons: PRIVATE CARDINAL = LAST[INTEGER];
SonId: TYPE = [1..MaxNSons);
AttrId: TYPE = [1..3];
Handle: TYPE = REF Node;
NullHandle: Handle = NIL;
NodeName: TYPE = {
general tree constructors
list, item,
declarations
decl, typedecl,
basicTC, enumeratedTC, recordTC, monitoredTC, variantTC,
refTC, pointerTC, listTC, arrayTC, arraydescTC, sequenceTC,
procTC, processTC, portTC, signalTC, errorTC, programTC,
anyTC, definitionTC, unionTC, relativeTC,
subrangeTC, longTC, opaqueTC, zoneTC, linkTC, spareTC,
implicitTC, frameTC, discrimTC,
entry, internal,
unit, diritem, module, body, inline, lambda, block,
statements
assign, extract,
if,
case, casetest, caseswitch,
bind,
do, forseq, upthru, downthru,
return, result,
goto, exit, loop,
free,
resume, reject, continue, retry, catchmark,
restart, stop,
lock, wait, notify, broadcast, unlock,
null,
label,
open,
enable, catch,
dst, lst, lstf,
syscall, spareS1, spareS2, spareS3,
subst, call, portcall, signal, error, syserror, xerror,
start, join,
expressions
apply,
callx, portcallx, signalx, errorx, syserrorx, startx, fork, joinx,
index, dindex, seqindex, reloc,
construct, union, rowcons, sequence, listcons,
substx,
ifx, casex, bindx,
assignx, extractx,
or, and,
relE, relN, relL, relGE, relG, relLE, in, notin,
plus, minus, times, div, mod,
dot, cdot, dollar,
create,
not,
uminus,
addr,
uparrow,
min, max, lengthen, abs, all,
size, first, last, pred, succ,
arraydesc, length, base,
loophole,
nil,
new,
void,
clit, llit,
cast, check, float, pad, chop, safen,
syscallx, narrow, istype,
openx,
mwconst, cons,
atom, typecode,
stringinit, textlit, signalinit, procinit,
intOO, intOC, intCO, intCC,
thread,
none,
exlist,
initlist,
ditem,
self,
mergecons};
tree manipulation
Id: TYPE = Link;
Scan: TYPE = PROC [t: Link];
Map: TYPE = PROC [t: Link] RETURNS [v: Link];
Test: TYPE = PROC [t: Link] RETURNS [BOOL];
END.