SaffronCG4Impl.mesa
Copyright Ó 1987 by Xerox Corporation. All rights reserved.
Generated by BJackson.pa at April 27, 1987 10:56:57 pm PDT
using ThreeCasabaFour [1.1] of April 14, 1987 6:34:07 pm PDT
DIRECTORY
SaffronAG5Def,
SaffronAG4Def,
SaffronAG9Def,
SaffronAG7Def,
SaffronAG1Def,
SaffronAG2Def,
SaffronAG6Def,
SaffronGenericDef,
ThreeC4Support,
SaffronCG4Def USING[],
SaffronATDef;
SaffronCG4Impl: CEDAR PROGRAM IMPORTS SaffronAG5Def, SaffronAG4Def, SaffronAG9Def, SaffronAG7Def, SaffronAG1Def, SaffronAG2Def, SaffronAG6Def EXPORTS SaffronCG4Def=
BEGIN
OPEN SaffronAG5Def, SaffronAG4Def, SaffronAG9Def, SaffronAG7Def, SaffronAG1Def, SaffronAG2Def, SaffronAG6Def, SaffronGenericDef, ThreeC4Support, SaffronATDef;
SaffronCG4LinkProc: PUBLIC PROC[prodLinkArray: SeeProdLinkArray, tknLinkArray: TokenLinkArray] =
BEGIN
prodLinkArray[181] ← Seerangea;
prodLinkArray[182] ← Seerangeb;
prodLinkArray[183] ← Seerangec;
prodLinkArray[184] ← Seeranged;
prodLinkArray[185] ← Seerangee;
prodLinkArray[186] ← Seetrashtrash;
prodLinkArray[187] ← Seetrashnull;
prodLinkArray[188] ← Seedefaultoptgetstrash;
prodLinkArray[189] ← Seedefaultoptgetsexportrash;
prodLinkArray[190] ← Seedefaultoptgets;
prodLinkArray[191] ← Seedefaultoptgetsexp;
prodLinkArray[192] ← Seeorderlistone;
prodLinkArray[193] ← Seeorderlistmore;
prodLinkArray[194] ← Seetrusted;
prodLinkArray[195] ← Seeoptrelationnegative;
prodLinkArray[196] ← Seeoptrelationpositive;
prodLinkArray[197] ← Seerelationtailrange;
prodLinkArray[198] ← Seerelationtailrelop;
prodLinkArray[199] ← Seerelopeq;
prodLinkArray[200] ← Seerelopne;
prodLinkArray[201] ← Seereloplt;
prodLinkArray[202] ← Seerelople;
prodLinkArray[203] ← Seerelopgt;
prodLinkArray[204] ← Seerelopge;
prodLinkArray[205] ← Seesharespresent;
prodLinkArray[206] ← Seesharesabsent;
prodLinkArray[207] ← Seestatementifthen;
prodLinkArray[208] ← Seestatementifthenelse;
prodLinkArray[209] ← Seestatementselect;
prodLinkArray[210] ← Seestatementbasicstmt;
prodLinkArray[211] ← Seebalstmtifthenelse;
prodLinkArray[212] ← Seebalstmtselect;
prodLinkArray[213] ← Seebalstmtbasicstmt;
prodLinkArray[214] ← Seebasicstmtexp;
prodLinkArray[215] ← Seebasicstmtassign;
prodLinkArray[216] ← Seebasicstmtmultiassign;
prodLinkArray[217] ← Seebasicstmtblock;
prodLinkArray[218] ← Seebasicstmtselect;
prodLinkArray[219] ← Seebasicstmtloopcontrol;
prodLinkArray[220] ← Seebasicstmtexit;
prodLinkArray[221] ← Seebasicstmtloop;
prodLinkArray[222] ← Seebasicstmti;
prodLinkArray[223] ← Seebasicstmtj;
prodLinkArray[224] ← Seebasicstmtreturn;
prodLinkArray[225] ← Seebasicstmttransfer;
prodLinkArray[226] ← Seebasicstmtfree;
prodLinkArray[227] ← Seebasicstmtwait;
prodLinkArray[228] ← Seebasicstmterror;
prodLinkArray[229] ← Seebasicstmtstop;
prodLinkArray[230] ← Seebasicstmtnull;
prodLinkArray[231] ← Seebasicstmtresume;
prodLinkArray[232] ← Seebasicstmtreject;
prodLinkArray[233] ← Seebasicstmtcontinue;
prodLinkArray[234] ← Seebasicstmtretry;
prodLinkArray[235] ← Seebasicstmtgetstate;
prodLinkArray[236] ← Seebasicstmtsetstate;
prodLinkArray[237] ← Seeforclauseassignation;
prodLinkArray[238] ← Seeforclauseiteration;
prodLinkArray[239] ← Seeforclauserepetition;
prodLinkArray[240] ← Seeforclauseempty;
prodLinkArray[241] ← Seecontrolidnew;
prodLinkArray[242] ← Seecontrolidold;
prodLinkArray[243] ← Seedirectionyes;
prodLinkArray[244] ← Seedirectionno;
prodLinkArray[245] ← Seedoexita;
prodLinkArray[246] ← Seedoexitb;
prodLinkArray[247] ← Seedoexitc;
prodLinkArray[248] ← Seedoexitd;
prodLinkArray[249] ← Seetransfersignal;
prodLinkArray[250] ← Seetransfererror;
prodLinkArray[251] ← Seetransferreturnwitherror;
prodLinkArray[252] ← Seetransferstart;
prodLinkArray[253] ← Seetransferrestart;
prodLinkArray[254] ← Seetransferjoin;
prodLinkArray[255] ← Seetransfernotify;
prodLinkArray[256] ← Seetransferbroadcast;
prodLinkArray[257] ← Seetransfertransferwith;
prodLinkArray[258] ← Seetransferreturnwith;
END;
Seerangea: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
id: idNode;
id ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildRangetypeidProdNode[position, length, BuildTypeIdidProdNode[id.position, id.length, id]], stack];
RETURN[stack]
END;
Seerangeb: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
id: idNode;
interval: IntervalNode;
interval ← NARROW[stack.first];
stack ← stack.rest;
id ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildRangesubrangeProdNode[position, length, BuildSubrangenamedProdNode[id.position, interval.position + interval.length - id.position, BuildTypeIdidProdNode[id.position, id.length, id], interval]], stack];
RETURN[stack]
END;
Seerangec: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
typeid: TypeIdNode;
interval: IntervalNode;
interval ← NARROW[stack.first];
stack ← stack.rest;
typeid ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildRangesubrangeProdNode[position, length, BuildSubrangenamedProdNode[typeid.position, interval.position + interval.length - typeid.position, typeid, interval]], stack];
RETURN[stack]
END;
Seeranged: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
interval: IntervalNode;
interval ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildRangesubrangeProdNode[position, length, BuildSubrangeunnamedProdNode[interval.position, interval.length, interval]], stack];
RETURN[stack]
END;
Seerangee: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
typeid: TypeIdNode;
typeid ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildRangetypeidProdNode[position, length, typeid], stack];
RETURN[stack]
END;
Seetrashtrash: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildJunkProdNode[position, length], stack];
RETURN[stack]
END;
Seetrashnull: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildJunkProdNode[position, length], stack];
RETURN[stack]
END;
Seedefaultoptgetstrash: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
trash: JunkNode;
trash ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildDefaultgetstrashProdNode[position, length], stack];
RETURN[stack]
END;
Seedefaultoptgetsexportrash: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
exp: ExpNode;
trash: JunkNode;
trash ← NARROW[stack.first];
stack ← stack.rest;
exp ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildDefaultgetsexportrashProdNode[position, length, exp], stack];
RETURN[stack]
END;
Seedefaultoptgets: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildDefaultgetsProdNode[position, length], stack];
RETURN[stack]
END;
Seedefaultoptgetsexp: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
exp: ExpNode;
exp ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildDefaultgetsexpProdNode[position, length, exp], stack];
RETURN[stack]
END;
Seeorderlistone: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
optexp: OptExpNode;
optexp ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildOrderListoneProdNode[position, length, optexp], stack];
RETURN[stack]
END;
Seeorderlistmore: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
orderlist: OrderListNode;
optexp: OptExpNode;
optexp ← NARROW[stack.first];
stack ← stack.rest;
orderlist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildOrderListmoreProdNode[position, length, orderlist, optexp], stack];
RETURN[stack]
END;
Seetrusted: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildJunkProdNode[position, length], stack];
RETURN[stack]
END;
Seeoptrelationnegative: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
relationtail: RelationTailNode;
relationtail ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildRelationnegativeProdNode[position, length, relationtail], stack];
RETURN[stack]
END;
Seeoptrelationpositive: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
relationtail: RelationTailNode;
relationtail ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildRelationpositiveProdNode[position, length, relationtail], stack];
RETURN[stack]
END;
Seerelationtailrange: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
range: RangeNode;
range ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildRelationTailrangeProdNode[position, length, range], stack];
RETURN[stack]
END;
Seerelationtailrelop: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
relop: RelopNode;
sum: ExpNode;
sum ← NARROW[stack.first];
stack ← stack.rest;
relop ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildRelationTailrelopProdNode[position, length, relop, sum], stack];
RETURN[stack]
END;
Seerelopeq: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildRelopeqProdNode[position, length], stack];
RETURN[stack]
END;
Seerelopne: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildRelopneProdNode[position, length], stack];
RETURN[stack]
END;
Seereloplt: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildRelopltProdNode[position, length], stack];
RETURN[stack]
END;
Seerelople: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildRelopleProdNode[position, length], stack];
RETURN[stack]
END;
Seerelopgt: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildRelopgtProdNode[position, length], stack];
RETURN[stack]
END;
Seerelopge: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildRelopgeProdNode[position, length], stack];
RETURN[stack]
END;
Seesharespresent: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
idlist: IdListNode;
idlist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildSharespresentProdNode[position, length, idlist], stack];
RETURN[stack]
END;
Seesharesabsent: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildSharesabsentProdNode[position, length], stack];
RETURN[stack]
END;
Seestatementifthen: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
exp: ExpNode;
statement: StatementNode;
statement ← NARROW[stack.first];
stack ← stack.rest;
exp ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildStatementifthenProdNode[position, length, exp, statement], stack];
RETURN[stack]
END;
Seestatementifthenelse: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
exp: ExpNode;
balstmt: StatementNode;
statement: StatementNode;
statement ← NARROW[stack.first];
stack ← stack.rest;
balstmt ← NARROW[stack.first];
stack ← stack.rest;
exp ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildStatementifthenelseProdNode[position, length, exp, balstmt, statement], stack];
RETURN[stack]
END;
Seestatementselect: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
casehead: SelectHeadNode;
casestmtlist: SelectStmtListNode;
statement: StatementNode;
statement ← NARROW[stack.first];
stack ← stack.rest;
casestmtlist ← NARROW[stack.first];
stack ← stack.rest;
casehead ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildStatementselectProdNode[position, length, casehead, casestmtlist, BuildOptStatementpresentProdNode[statement.position, statement.length, statement]], stack];
RETURN[stack]
END;
Seestatementbasicstmt: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
basicstmt: StatementNode;
basicstmt ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[basicstmt, stack];
RETURN[stack]
END;
Seebalstmtifthenelse: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
exp: ExpNode;
balstmtthenpart: StatementNode;
balstmtelsepart: StatementNode;
balstmtelsepart ← NARROW[stack.first];
stack ← stack.rest;
balstmtthenpart ← NARROW[stack.first];
stack ← stack.rest;
exp ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildStatementifthenelseProdNode[position, length, exp, balstmtthenpart, balstmtelsepart], stack];
RETURN[stack]
END;
Seebalstmtselect: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
casehead: SelectHeadNode;
casestmtlist: SelectStmtListNode;
balstmt: StatementNode;
balstmt ← NARROW[stack.first];
stack ← stack.rest;
casestmtlist ← NARROW[stack.first];
stack ← stack.rest;
casehead ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildStatementselectProdNode[position, length, casehead, casestmtlist, BuildOptStatementpresentProdNode[balstmt.position, balstmt.length, balstmt]], stack];
RETURN[stack]
END;
Seebalstmtbasicstmt: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
basicstmt: StatementNode;
basicstmt ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[basicstmt, stack];
RETURN[stack]
END;
Seebasicstmtexp: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
lhs: ExpNode;
lhs ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildStatementexpProdNode[position, length, lhs], stack];
RETURN[stack]
END;
Seebasicstmtassign: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
lhs: ExpNode;
exp: ExpNode;
exp ← NARROW[stack.first];
stack ← stack.rest;
lhs ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildStatementassignProdNode[position, length, lhs, exp], stack];
RETURN[stack]
END;
Seebasicstmtmultiassign: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
explist: ExpListNode;
exp: ExpNode;
exp ← NARROW[stack.first];
stack ← stack.rest;
explist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildStatementmultiassignProdNode[position, length, explist, exp], stack];
RETURN[stack]
END;
Seebasicstmtblock: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
trusted: JunkNode;
checked: CheckedNode;
block: BlockNode;
block ← NARROW[stack.first];
stack ← stack.rest;
checked ← NARROW[stack.first];
stack ← stack.rest;
trusted ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildStatementblockProdNode[position, length, checked, block], stack];
RETURN[stack]
END;
Seebasicstmtselect: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
casehead: SelectHeadNode;
casestmtlist: SelectStmtListNode;
casestmtlist ← NARROW[stack.first];
stack ← stack.rest;
casehead ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildStatementselectProdNode[position, length, casehead, casestmtlist, BuildOptStatementabsentProdNode[casestmtlist.position + casestmtlist.length, casestmtlist.position + casestmtlist.length - casestmtlist.position - casestmtlist.length]], stack];
RETURN[stack]
END;
Seebasicstmtloopcontrol: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
forclause: ForClauseNode;
dotest: DoTestNode;
scope: ScopeNode;
doexit: DoExitNode;
doexit ← NARROW[stack.first];
stack ← stack.rest;
scope ← NARROW[stack.first];
stack ← stack.rest;
dotest ← NARROW[stack.first];
stack ← stack.rest;
forclause ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildStatementloopcontrolProdNode[position, length, forclause, dotest, scope, doexit], stack];
RETURN[stack]
END;
Seebasicstmtexit: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildStatementexitProdNode[position, length], stack];
RETURN[stack]
END;
Seebasicstmtloop: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildStatementloopProdNode[position, length], stack];
RETURN[stack]
END;
Seebasicstmti: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
id: idNode;
id ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildStatementgotoProdNode[position, length, id], stack];
RETURN[stack]
END;
Seebasicstmtj: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
id: idNode;
id ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildStatementgotoProdNode[position, length, id], stack];
RETURN[stack]
END;
Seebasicstmtreturn: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
optargs: OptArgsNode;
optargs ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildStatementreturnProdNode[position, length, optargs], stack];
RETURN[stack]
END;
Seebasicstmttransfer: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
transfer: TransferNode;
lhs: ExpNode;
lhs ← NARROW[stack.first];
stack ← stack.rest;
transfer ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildStatementtransferProdNode[position, length, transfer, lhs], stack];
RETURN[stack]
END;
Seebasicstmtfree: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
free: FreeNode;
exp: ExpNode;
optcatch: CatchNode;
optcatch ← NARROW[stack.first];
stack ← stack.rest;
exp ← NARROW[stack.first];
stack ← stack.rest;
free ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildStatementfreeProdNode[position, length, free, exp, optcatch], stack];
RETURN[stack]
END;
Seebasicstmtwait: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
lhs: ExpNode;
lhs ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildStatementwaitProdNode[position, length, lhs], stack];
RETURN[stack]
END;
Seebasicstmterror: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildStatementerrorProdNode[position, length], stack];
RETURN[stack]
END;
Seebasicstmtstop: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildStatementstopProdNode[position, length], stack];
RETURN[stack]
END;
Seebasicstmtnull: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildStatementnullProdNode[position, length], stack];
RETURN[stack]
END;
Seebasicstmtresume: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
optargs: OptArgsNode;
optargs ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildStatementresumeProdNode[position, length, optargs], stack];
RETURN[stack]
END;
Seebasicstmtreject: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildStatementrejectProdNode[position, length], stack];
RETURN[stack]
END;
Seebasicstmtcontinue: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildStatementcontinueProdNode[position, length], stack];
RETURN[stack]
END;
Seebasicstmtretry: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildStatementretryProdNode[position, length], stack];
RETURN[stack]
END;
Seebasicstmtgetstate: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
lhs: ExpNode;
lhs ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildStatementgetstateProdNode[position, length, lhs], stack];
RETURN[stack]
END;
Seebasicstmtsetstate: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
exp: ExpNode;
exp ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildStatementsetstateProdNode[position, length, exp], stack];
RETURN[stack]
END;
Seeforclauseassignation: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
controlid: ControlIdNode;
expinitial: ExpNode;
expnext: ExpNode;
expnext ← NARROW[stack.first];
stack ← stack.rest;
expinitial ← NARROW[stack.first];
stack ← stack.rest;
controlid ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildForClauseassignationProdNode[position, length, controlid, expinitial, expnext], stack];
RETURN[stack]
END;
Seeforclauseiteration: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
controlid: ControlIdNode;
direction: DecreasingNode;
range: RangeNode;
range ← NARROW[stack.first];
stack ← stack.rest;
direction ← NARROW[stack.first];
stack ← stack.rest;
controlid ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildForClauseiterationProdNode[position, length, controlid, direction, range], stack];
RETURN[stack]
END;
Seeforclauserepetition: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
range: RangeNode;
range ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildForClauserepetitionProdNode[position, length, range], stack];
RETURN[stack]
END;
Seeforclauseempty: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildForClauseemptyProdNode[position, length], stack];
RETURN[stack]
END;
Seecontrolidnew: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
ident: IdentNode;
typeexp: TypeExpNode;
typeexp ← NARROW[stack.first];
stack ← stack.rest;
ident ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildControlIdnewProdNode[position, length, ident, typeexp], stack];
RETURN[stack]
END;
Seecontrolidold: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
id: idNode;
id ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildControlIdoldProdNode[position, length, id], stack];
RETURN[stack]
END;
Seedirectionyes: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildDecreasingyesProdNode[position, length], stack];
RETURN[stack]
END;
Seedirectionno: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildDecreasingnoProdNode[position, length], stack];
RETURN[stack]
END;
Seedoexita: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildDoExitProdNode[position, length, BuildExitListemptyProdNode[position, length], BuildOptStatementabsentProdNode[position, length]], stack];
RETURN[stack]
END;
Seedoexitb: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
exitlist: ExitListNode;
exitlist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildDoExitProdNode[position, length, exitlist, BuildOptStatementabsentProdNode[exitlist.position + exitlist.length, exitlist.position + exitlist.length - exitlist.position - exitlist.length]], stack];
RETURN[stack]
END;
Seedoexitc: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
exitlist: ExitListNode;
statement: StatementNode;
statement ← NARROW[stack.first];
stack ← stack.rest;
exitlist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildDoExitProdNode[position, length, exitlist, BuildOptStatementpresentProdNode[statement.position, statement.length, statement]], stack];
RETURN[stack]
END;
Seedoexitd: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
exitlist: ExitListNode;
statement: StatementNode;
statement ← NARROW[stack.first];
stack ← stack.rest;
exitlist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildDoExitProdNode[position, length, exitlist, BuildOptStatementpresentProdNode[statement.position, statement.length, statement]], stack];
RETURN[stack]
END;
Seetransfersignal: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildTransfersignalProdNode[position, length], stack];
RETURN[stack]
END;
Seetransfererror: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildTransfererrorProdNode[position, length], stack];
RETURN[stack]
END;
Seetransferreturnwitherror: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildTransferreturnwitherrorProdNode[position, length], stack];
RETURN[stack]
END;
Seetransferstart: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildTransferstartProdNode[position, length], stack];
RETURN[stack]
END;
Seetransferrestart: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildTransferrestartProdNode[position, length], stack];
RETURN[stack]
END;
Seetransferjoin: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildTransferjoinProdNode[position, length], stack];
RETURN[stack]
END;
Seetransfernotify: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildTransfernotifyProdNode[position, length], stack];
RETURN[stack]
END;
Seetransferbroadcast: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildTransferbroadcastProdNode[position, length], stack];
RETURN[stack]
END;
Seetransfertransferwith: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildTransfertransferwithProdNode[position, length], stack];
RETURN[stack]
END;
Seetransferreturnwith: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildTransferreturnwithProdNode[position, length], stack];
RETURN[stack]
END;
END..