SaffronCG6Impl.mesa
Copyright Ó 1987 by Xerox Corporation. All rights reserved.
Generated by BJackson.pa at April 27, 1987 10:57:00 pm PDT
using ThreeCasabaFour [1.1] of April 14, 1987 6:34:07 pm PDT
DIRECTORY
SaffronAG9Def,
SaffronAG7Def,
SaffronAG2Def,
SaffronAG8Def,
SaffronAG6Def,
SaffronGenericDef,
ThreeC4Support,
SaffronCG6Def USING[],
SaffronATDef;
SaffronCG6Impl: CEDAR PROGRAM IMPORTS SaffronAG9Def, SaffronAG7Def, SaffronAG2Def, SaffronAG8Def, SaffronAG6Def EXPORTS SaffronCG6Def=
BEGIN
OPEN SaffronAG9Def, SaffronAG7Def, SaffronAG2Def, SaffronAG8Def, SaffronAG6Def, SaffronGenericDef, ThreeC4Support, SaffronATDef;
SaffronCG6LinkProc: PUBLIC PROC[prodLinkArray: SeeProdLinkArray, tknLinkArray: TokenLinkArray] =
BEGIN
prodLinkArray[322] ← Seetypeconsa;
prodLinkArray[323] ← Seetypeconsb;
prodLinkArray[324] ← Seetypeconsc;
prodLinkArray[325] ← Seetypeconsenum;
prodLinkArray[326] ← Seetypeconsrecord;
prodLinkArray[327] ← Seetypeconspointer;
prodLinkArray[328] ← Seetypeconsvar;
prodLinkArray[329] ← Seetypeconsref;
prodLinkArray[330] ← Seetypeconsrefany;
prodLinkArray[331] ← Seetypeconsrefunspecified;
prodLinkArray[332] ← Seetypeconslist;
prodLinkArray[333] ← Seetypeconsarray;
prodLinkArray[334] ← Seetypeconsdescriptor;
prodLinkArray[335] ← Seetypeconstransfer;
prodLinkArray[336] ← Seetypeconso;
prodLinkArray[337] ← Seetypeconsp;
prodLinkArray[338] ← Seetypeconszone;
prodLinkArray[339] ← Seetypeconslong;
prodLinkArray[340] ← Seetypeconsframe;
prodLinkArray[341] ← Seetypeconst;
prodLinkArray[342] ← Seetypeconsu;
prodLinkArray[343] ← Seetypeconstypeapply;
prodLinkArray[344] ← Seedependentyes;
prodLinkArray[345] ← Seedependentno;
prodLinkArray[346] ← Seemonitoredyes;
prodLinkArray[347] ← Seemonitoredno;
prodLinkArray[348] ← Seeorderedyes;
prodLinkArray[349] ← Seeorderedno;
prodLinkArray[350] ← Seebaseyes;
prodLinkArray[351] ← Seebaseno;
prodLinkArray[352] ← Seepointertypeunspecified;
prodLinkArray[353] ← Seepointertypespecified;
prodLinkArray[354] ← Seepointerprefixabsent;
prodLinkArray[355] ← Seepointerprefixpresent;
prodLinkArray[356] ← Seeindextypepresent;
prodLinkArray[357] ← Seeindextypeabsent;
prodLinkArray[358] ← Seetransfermodea;
prodLinkArray[359] ← Seetransfermodeb;
prodLinkArray[360] ← Seetransfermodeport;
prodLinkArray[361] ← Seetransfermodesignal;
prodLinkArray[362] ← Seetransfermodeerror;
prodLinkArray[363] ← Seetransfermodeprocess;
prodLinkArray[364] ← Seetransfermodeprogram;
prodLinkArray[365] ← Seeelementlistempty;
prodLinkArray[366] ← Seeelementlistb;
prodLinkArray[367] ← SeeelementlistPa;
prodLinkArray[368] ← SeeelementlistPb;
prodLinkArray[369] ← Seeelementidwithrep;
prodLinkArray[370] ← Seeelementanon;
prodLinkArray[371] ← Seeelementid;
prodLinkArray[372] ← Seeheapyes;
prodLinkArray[373] ← Seeheapno;
prodLinkArray[374] ← Seetypeappla;
prodLinkArray[375] ← Seetypeapplb;
prodLinkArray[376] ← Seetypeapplc;
prodLinkArray[377] ← Seetypeappld;
prodLinkArray[378] ← SeelengthP;
prodLinkArray[379] ← Seereclista;
prodLinkArray[380] ← Seereclistb;
prodLinkArray[381] ← Seereclistc;
prodLinkArray[382] ← Seereclistd;
prodLinkArray[383] ← Seerecliste;
prodLinkArray[384] ← Seereclistf;
prodLinkArray[385] ← Seereclistg;
prodLinkArray[386] ← Seevariantpair;
prodLinkArray[387] ← Seevariantparta;
prodLinkArray[388] ← Seevariantpartb;
prodLinkArray[389] ← Seevariantpartc;
prodLinkArray[390] ← Seevcaseheadident;
prodLinkArray[391] ← Seevcaseheadcomputed;
prodLinkArray[392] ← Seevcaseheadoverlaid;
prodLinkArray[393] ← Seetagtypestar;
prodLinkArray[394] ← Seetagtypetypeexp;
prodLinkArray[395] ← Seevariantlistone;
prodLinkArray[396] ← Seevariantlistmore;
prodLinkArray[397] ← Seevariantitem;
prodLinkArray[398] ← Seepackedyes;
prodLinkArray[399] ← Seepackedno;
prodLinkArray[400] ← Seeimportsa;
prodLinkArray[401] ← Seeimportsb;
prodLinkArray[402] ← Seeimportsc;
prodLinkArray[403] ← Seeopttypepresent;
prodLinkArray[404] ← Seeopttypeabsent;
END;
Seetypeconsa:
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[BuildTypeExpsubrangeProdNode[position, length, BuildSubrangeunnamedProdNode[interval.position, interval.length, interval]], stack];
RETURN[stack]
END;
Seetypeconsb:
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[BuildTypeExpsubrangeProdNode[position, length, BuildSubrangenamedProdNode[id.position, interval.position + interval.length - id.position, BuildTypeIdidProdNode[id.position, id.length, id], interval]], stack];
RETURN[stack]
END;
Seetypeconsc:
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[BuildTypeExpsubrangeProdNode[position, length, BuildSubrangenamedProdNode[typeid.position, interval.position + interval.length - typeid.position, typeid, interval]], stack];
RETURN[stack]
END;
Seetypeconsenum:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
dependent: MachineDependentNode;
elementlist: ElementListNode;
elementlist ← NARROW[stack.first];
stack ← stack.rest;
dependent ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTypeExpenumProdNode[position, length, dependent, elementlist], stack];
RETURN[stack]
END;
Seetypeconsrecord:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
dependent: MachineDependentNode;
monitored: MonitoredNode;
reclist: RecListNode;
reclist ← NARROW[stack.first];
stack ← stack.rest;
monitored ← NARROW[stack.first];
stack ← stack.rest;
dependent ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTypeExprecordProdNode[position, length, dependent, monitored, reclist], stack];
RETURN[stack]
END;
Seetypeconspointer:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
ordered: OrderedNode;
base: BaseNode;
pointertype: PointerTypeNode;
pointertype ← NARROW[stack.first];
stack ← stack.rest;
base ← NARROW[stack.first];
stack ← stack.rest;
ordered ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTypeExppointerProdNode[position, length, ordered, base, pointertype], stack];
RETURN[stack]
END;
Seetypeconsvar:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
typeexp: TypeExpNode;
typeexp ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTypeExpvarProdNode[position, length, typeexp], stack];
RETURN[stack]
END;
Seetypeconsref:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
readonly: ReadOnlyNode;
typeexp: TypeExpNode;
typeexp ← NARROW[stack.first];
stack ← stack.rest;
readonly ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTypeExprefProdNode[position, length, readonly, typeexp], stack];
RETURN[stack]
END;
Seetypeconsrefany:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
readonly: ReadOnlyNode;
readonly ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTypeExprefanyProdNode[position, length, readonly], stack];
RETURN[stack]
END;
Seetypeconsrefunspecified:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildTypeExprefunspecifiedProdNode[position, length], stack];
RETURN[stack]
END;
Seetypeconslist:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
readonly: ReadOnlyNode;
typeexp: TypeExpNode;
typeexp ← NARROW[stack.first];
stack ← stack.rest;
readonly ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTypeExplistProdNode[position, length, readonly, typeexp], stack];
RETURN[stack]
END;
Seetypeconsarray:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
packed: PackedNode;
indextype: OptTypeNode;
typeexp: TypeExpNode;
typeexp ← NARROW[stack.first];
stack ← stack.rest;
indextype ← NARROW[stack.first];
stack ← stack.rest;
packed ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTypeExparrayProdNode[position, length, packed, indextype, typeexp], stack];
RETURN[stack]
END;
Seetypeconsdescriptor:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
readonly: ReadOnlyNode;
typeexp: TypeExpNode;
typeexp ← NARROW[stack.first];
stack ← stack.rest;
readonly ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTypeExpdescriptorProdNode[position, length, readonly, typeexp], stack];
RETURN[stack]
END;
Seetypeconstransfer:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
safe: SafeNode;
transfermode: TransferModeNode;
arguments: ArgumentsNode;
arguments ← NARROW[stack.first];
stack ← stack.rest;
transfermode ← NARROW[stack.first];
stack ← stack.rest;
safe ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTypeExptransferProdNode[position, length, safe, transfermode, arguments], stack];
RETURN[stack]
END;
Seetypeconso:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
id: idNode;
typeexp: TypeExpNode;
typeexp ← NARROW[stack.first];
stack ← stack.rest;
id ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTypeExprelativeProdNode[position, length, BuildTypeIdidProdNode[id.position, id.length, id], typeexp], stack];
RETURN[stack]
END;
Seetypeconsp:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
typeid: TypeIdNode;
typeexp: TypeExpNode;
typeexp ← NARROW[stack.first];
stack ← stack.rest;
typeid ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTypeExprelativeProdNode[position, length, typeid, typeexp], stack];
RETURN[stack]
END;
Seetypeconszone:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
heap: UncountedNode;
heap ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTypeExpzoneProdNode[position, length, heap], stack];
RETURN[stack]
END;
Seetypeconslong:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
typeexp: TypeExpNode;
typeexp ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTypeExplongProdNode[position, length, typeexp], stack];
RETURN[stack]
END;
Seetypeconsframe:
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[BuildTypeExpframeProdNode[position, length, id], stack];
RETURN[stack]
END;
Seetypeconst:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
id: idNode;
typeexp: TypeExpNode;
typeexp ← NARROW[stack.first];
stack ← stack.rest;
id ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTypeExppaintedProdNode[position, length, BuildTypeIdidProdNode[id.position, id.length, id], typeexp], stack];
RETURN[stack]
END;
Seetypeconsu:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
typeid: TypeIdNode;
typeexp: TypeExpNode;
typeexp ← NARROW[stack.first];
stack ← stack.rest;
typeid ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTypeExppaintedProdNode[position, length, typeid, typeexp], stack];
RETURN[stack]
END;
Seetypeconstypeapply:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
typeappl: TypeApplyNode;
typeappl ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTypeExptypeapplyProdNode[position, length, typeappl], stack];
RETURN[stack]
END;
Seedependentyes:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildMachineDependentyesProdNode[position, length], stack];
RETURN[stack]
END;
Seedependentno:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildMachineDependentnoProdNode[position, length], stack];
RETURN[stack]
END;
Seemonitoredyes:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildMonitoredyesProdNode[position, length], stack];
RETURN[stack]
END;
Seemonitoredno:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildMonitorednoProdNode[position, length], stack];
RETURN[stack]
END;
Seeorderedyes:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildOrderedyesProdNode[position, length], stack];
RETURN[stack]
END;
Seeorderedno:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildOrderednoProdNode[position, length], stack];
RETURN[stack]
END;
Seebaseyes:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildBaseyesProdNode[position, length], stack];
RETURN[stack]
END;
Seebaseno:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildBasenoProdNode[position, length], stack];
RETURN[stack]
END;
Seepointertypeunspecified:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
pointerprefix: OptIntervalNode;
pointerprefix ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildPointerTypeunspecifiedProdNode[position, length, pointerprefix], stack];
RETURN[stack]
END;
Seepointertypespecified:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
pointerprefix: OptIntervalNode;
readonly: ReadOnlyNode;
typeexp: TypeExpNode;
typeexp ← NARROW[stack.first];
stack ← stack.rest;
readonly ← NARROW[stack.first];
stack ← stack.rest;
pointerprefix ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildPointerTypespecifiedProdNode[position, length, pointerprefix, readonly, typeexp], stack];
RETURN[stack]
END;
Seepointerprefixabsent:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildOptIntervalabsentProdNode[position, length], stack];
RETURN[stack]
END;
Seepointerprefixpresent:
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[BuildOptIntervalpresentProdNode[position, length, interval], stack];
RETURN[stack]
END;
Seeindextypepresent:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
typeexp: TypeExpNode;
typeexp ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildOptTypepresentProdNode[position, length, typeexp], stack];
RETURN[stack]
END;
Seeindextypeabsent:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildOptTypeabsentProdNode[position, length], stack];
RETURN[stack]
END;
Seetransfermodea:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildTransferModeprocProdNode[position, length], stack];
RETURN[stack]
END;
Seetransfermodeb:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildTransferModeprocProdNode[position, length], stack];
RETURN[stack]
END;
Seetransfermodeport:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildTransferModeportProdNode[position, length], stack];
RETURN[stack]
END;
Seetransfermodesignal:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildTransferModesignalProdNode[position, length], stack];
RETURN[stack]
END;
Seetransfermodeerror:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildTransferModeerrorProdNode[position, length], stack];
RETURN[stack]
END;
Seetransfermodeprocess:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildTransferModeprocessProdNode[position, length], stack];
RETURN[stack]
END;
Seetransfermodeprogram:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildTransferModeprogramProdNode[position, length], stack];
RETURN[stack]
END;
Seeelementlistempty:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildElementListemptyProdNode[position, length], stack];
RETURN[stack]
END;
Seeelementlistb:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
elementlistP: ElementListNode;
elementlistP ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[elementlistP, stack];
RETURN[stack]
END;
SeeelementlistPa:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
element: ElementNode;
element ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildElementListmoreProdNode[position, length, BuildElementListemptyProdNode[element.position, element.position - element.length], element], stack];
RETURN[stack]
END;
SeeelementlistPb:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
elementlistP: ElementListNode;
element: ElementNode;
element ← NARROW[stack.first];
stack ← stack.rest;
elementlistP ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildElementListmoreProdNode[position, length, elementlistP, element], stack];
RETURN[stack]
END;
Seeelementidwithrep:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
id: idNode;
exp: ExpNode;
exp ← NARROW[stack.first];
stack ← stack.rest;
id ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildElementidwithrepProdNode[position, length, id, exp], stack];
RETURN[stack]
END;
Seeelementanon:
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[BuildElementanonymousrepProdNode[position, length, exp], stack];
RETURN[stack]
END;
Seeelementid:
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[BuildElementidProdNode[position, length, id], stack];
RETURN[stack]
END;
Seeheapyes:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildUncountedyesProdNode[position, length], stack];
RETURN[stack]
END;
Seeheapno:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildUncountednoProdNode[position, length], stack];
RETURN[stack]
END;
Seetypeappla:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
typeappl: TypeApplyNode;
id: idNode;
id ← NARROW[stack.first];
stack ← stack.rest;
typeappl ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTypeApplymoreidsProdNode[position, length, typeappl, id], stack];
RETURN[stack]
END;
Seetypeapplb:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
id: idNode;
lengthP: ExpNode;
lengthP ← NARROW[stack.first];
stack ← stack.rest;
id ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTypeApplyoneProdNode[position, length, BuildTypeIdidProdNode[id.position, id.length, id], lengthP], stack];
RETURN[stack]
END;
Seetypeapplc:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
typeid: TypeIdNode;
lengthP: ExpNode;
lengthP ← NARROW[stack.first];
stack ← stack.rest;
typeid ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTypeApplyoneProdNode[position, length, typeid, lengthP], stack];
RETURN[stack]
END;
Seetypeappld:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
typeappl: TypeApplyNode;
lengthP: ExpNode;
lengthP ← NARROW[stack.first];
stack ← stack.rest;
typeappl ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTypeApplymorelengthsProdNode[position, length, typeappl, lengthP], stack];
RETURN[stack]
END;
SeelengthP:
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[exp, stack];
RETURN[stack]
END;
Seereclista:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildRecListemptyProdNode[position, length], stack];
RETURN[stack]
END;
Seereclistb:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildRecListemptyProdNode[position, length], stack];
RETURN[stack]
END;
Seereclistc:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
pairlist: PairListNode;
pairlist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildRecListpairlistProdNode[position, length, pairlist], stack];
RETURN[stack]
END;
Seereclistd:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
typelist: TypeListNode;
typelist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildRecListtypelistProdNode[position, length, typelist], stack];
RETURN[stack]
END;
Seerecliste:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
pairlist: PairListNode;
variantpair: PairItemNode;
variantpair ← NARROW[stack.first];
stack ← stack.rest;
pairlist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildRecListpairlistProdNode[position, length, BuildPairListmanyProdNode[pairlist.position, variantpair.position + variantpair.length - pairlist.position, pairlist, BuildPairListoneProdNode[variantpair.position, variantpair.length, variantpair]]], stack];
RETURN[stack]
END;
Seereclistf:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
variantpart: TypeExpNode;
default: DefaultNode;
default ← NARROW[stack.first];
stack ← stack.rest;
variantpart ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildRecListtypelistProdNode[position, length, BuildTypeListoneProdNode[variantpart.position, default.position + default.length - variantpart.position, BuildTypeItemProdNode[variantpart.position, default.position + default.length - variantpart.position, variantpart, default]]], stack];
RETURN[stack]
END;
Seereclistg:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
variantpair: PairItemNode;
variantpair ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildRecListpairlistProdNode[position, length, BuildPairListoneProdNode[variantpair.position, variantpair.length, variantpair]], stack];
RETURN[stack]
END;
Seevariantpair:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
identlist: IdentListNode;
public: AccessNode;
variantpart: TypeExpNode;
default: DefaultNode;
default ← NARROW[stack.first];
stack ← stack.rest;
variantpart ← NARROW[stack.first];
stack ← stack.rest;
public ← NARROW[stack.first];
stack ← stack.rest;
identlist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildPairItemProdNode[position, length, identlist, public, variantpart, default], stack];
RETURN[stack]
END;
Seevariantparta:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
vcasehead: TagNode;
variantlist: VariantListNode;
variantlist ← NARROW[stack.first];
stack ← stack.rest;
vcasehead ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTypeExpunionProdNode[position, length, vcasehead, variantlist], stack];
RETURN[stack]
END;
Seevariantpartb:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
vcasehead: TagNode;
variantlist: VariantListNode;
variantlist ← NARROW[stack.first];
stack ← stack.rest;
vcasehead ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTypeExpunionProdNode[position, length, vcasehead, variantlist], stack];
RETURN[stack]
END;
Seevariantpartc:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
packed: PackedNode;
vcasehead: TagNode;
typeexp: TypeExpNode;
typeexp ← NARROW[stack.first];
stack ← stack.rest;
vcasehead ← NARROW[stack.first];
stack ← stack.rest;
packed ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTypeExpsequenceProdNode[position, length, packed, vcasehead, typeexp], stack];
RETURN[stack]
END;
Seevcaseheadident:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
ident: IdentNode;
public: AccessNode;
tagtype: TagTypeNode;
tagtype ← NARROW[stack.first];
stack ← stack.rest;
public ← NARROW[stack.first];
stack ← stack.rest;
ident ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTagidentProdNode[position, length, ident, public, tagtype], stack];
RETURN[stack]
END;
Seevcaseheadcomputed:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
tagtype: TagTypeNode;
tagtype ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTagcomputedProdNode[position, length, tagtype], stack];
RETURN[stack]
END;
Seevcaseheadoverlaid:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
tagtype: TagTypeNode;
tagtype ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTagoverlaidProdNode[position, length, tagtype], stack];
RETURN[stack]
END;
Seetagtypestar:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildTagTypestarProdNode[position, length], stack];
RETURN[stack]
END;
Seetagtypetypeexp:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
typeexp: TypeExpNode;
typeexp ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildTagTypetypeexpProdNode[position, length, typeexp], stack];
RETURN[stack]
END;
Seevariantlistone:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
variantitem: VariantItemNode;
variantitem ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildVariantListoneProdNode[position, length, variantitem], stack];
RETURN[stack]
END;
Seevariantlistmore:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
variantlist: VariantListNode;
variantitem: VariantItemNode;
variantitem ← NARROW[stack.first];
stack ← stack.rest;
variantlist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildVariantListmoreProdNode[position, length, variantlist, variantitem], stack];
RETURN[stack]
END;
Seevariantitem:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
idlist: IdListNode;
reclist: RecListNode;
reclist ← NARROW[stack.first];
stack ← stack.rest;
idlist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildVariantItemProdNode[position, length, idlist, reclist], stack];
RETURN[stack]
END;
Seepackedyes:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildPackedyesProdNode[position, length], stack];
RETURN[stack]
END;
Seepackedno:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildPackednoProdNode[position, length], stack];
RETURN[stack]
END;
Seeimportsa:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildModuleListemptyProdNode[position, length], stack];
RETURN[stack]
END;
Seeimportsb:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
modulelist: ModuleListNode;
modulelist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[modulelist, stack];
RETURN[stack]
END;
Seeimportsc:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildModuleListemptyProdNode[position, length], stack];
RETURN[stack]
END;
Seeopttypepresent:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
typeexp: TypeExpNode;
typeexp ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildOptTypepresentProdNode[position, length, typeexp], stack];
RETURN[stack]
END;
Seeopttypeabsent:
PROC[nodes:
LIST
OF
REF
ANY, position:
INT, length:
INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildOptTypeabsentProdNode[position, length], stack];
RETURN[stack]
END;
END..