-- file SakuraTree.Mesa -- last modified by Satterthwaite, December 17, 1980 3:20 PM -- last edit by Suzuki, 28-Dec-81 8:34:10 SakuraTree: DEFINITIONS = BEGIN -- data structures Link: TYPE = REF ANY; Null: Link = NIL; Node: TYPE = RECORD [ name: NodeName, attr: PACKED ARRAY AttrId OF BOOLEAN _ ALL[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, 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, atom, typecode, stringinit, textlit, signalinit, procinit, intOO, intOC, intCO, intCC, thread, none, exlist, initlist, ditem, self, mergecons, -- Sakura nodes connectorassign, connectorcreate, connectorfork, connectorjoin, componentcreate, compitem, deviceTC, deviceblock, devicehead, devicebody, transfer, parallel, guardedcommand, guardianblock, choice, on, when, whenloopup, whenloopdown, whenloopchange, whenup, whendown, whenchange, event, upsignal, downsignal, changesignal, circuit, alias, control, mossim, step}; -- tree manipulation Id: TYPE = Link; Scan: TYPE = PROC [t: Link]; Map: TYPE = PROC [t: Link] RETURNS [v: Link]; Test: TYPE = PROC [t: Link] RETURNS [BOOLEAN]; END.