SaffronCG5Impl.mesa
Copyright Ó 1987 by Xerox Corporation. All rights reserved.
Generated by BJackson.pa at April 27, 1987 10:56:59 pm PDT
using ThreeCasabaFour [1.1] of April 14, 1987 6:34:07 pm PDT
DIRECTORY
SaffronAG7Def,
SaffronAG2Def,
SaffronAG3Def,
SaffronAG1Def,
SaffronAG4Def,
SaffronAG5Def,
SaffronGenericDef,
ThreeC4Support,
SaffronCG5Def USING[],
SaffronATDef;
SaffronCG5Impl: CEDAR PROGRAM IMPORTS SaffronAG7Def, SaffronAG2Def, SaffronAG3Def, SaffronAG1Def, SaffronAG4Def, SaffronAG5Def EXPORTS SaffronCG5Def=
BEGIN
OPEN SaffronAG7Def, SaffronAG2Def, SaffronAG3Def, SaffronAG1Def, SaffronAG4Def, SaffronAG5Def, SaffronGenericDef, ThreeC4Support, SaffronATDef;
SaffronCG5LinkProc: PUBLIC PROC[prodLinkArray: SeeProdLinkArray, tknLinkArray: TokenLinkArray] =
BEGIN
prodLinkArray[259] ← Seedotestuntil;
prodLinkArray[260] ← Seedotestwhile;
prodLinkArray[261] ← Seedotestempty;
prodLinkArray[262] ← Seeoptargsexplist;
prodLinkArray[263] ← Seeoptargsempty;
prodLinkArray[264] ← Seeoptargsexp;
prodLinkArray[265] ← Seefreeplain;
prodLinkArray[266] ← Seefreezoned;
prodLinkArray[267] ← Seecasestmtlistempty;
prodLinkArray[268] ← Seecasestmtlistb;
prodLinkArray[269] ← Seecasestmtlistc;
prodLinkArray[270] ← SeecasestmtlistPa;
prodLinkArray[271] ← SeecasestmtlistPb;
prodLinkArray[272] ← Seecasestmtitem;
prodLinkArray[273] ← Seedeclistone;
prodLinkArray[274] ← Seedeclistmany;
prodLinkArray[275] ← Seedeclarationvalue;
prodLinkArray[276] ← Seedeclarationtype;
prodLinkArray[277] ← Seedeclarationopaquetype;
prodLinkArray[278] ← Seeentryentry;
prodLinkArray[279] ← Seeentryinternal;
prodLinkArray[280] ← Seeentryempty;
prodLinkArray[281] ← Seeoptsizepresent;
prodLinkArray[282] ← Seeoptsizeabsent;
prodLinkArray[283] ← Seeprimaryexplist;
prodLinkArray[284] ← Seeprimaryprefixop;
prodLinkArray[285] ← Seeprimaryval;
prodLinkArray[286] ← Seeprimaryall;
prodLinkArray[287] ← Seeprimarynew;
prodLinkArray[288] ← Seeprimarycons;
prodLinkArray[289] ← Seeprimarylistcons;
prodLinkArray[290] ← Seeprimarynil;
prodLinkArray[291] ← Seeprimarytypeop;
prodLinkArray[292] ← Seeprimarysize;
prodLinkArray[293] ← Seeprimarysize2;
prodLinkArray[294] ← Seeprimaryistype;
prodLinkArray[295] ← Seeprimaryaddress;
prodLinkArray[296] ← Seeprimarydescriptor;
prodLinkArray[297] ← Seeprimarylhs;
prodLinkArray[298] ← Seenewplain;
prodLinkArray[299] ← Seenewzoned;
prodLinkArray[300] ← Seeconsplain;
prodLinkArray[301] ← Seeconszoned;
prodLinkArray[302] ← Seelistconsplain;
prodLinkArray[303] ← Seelistconszoned;
prodLinkArray[304] ← Seedesclistexplicit;
prodLinkArray[305] ← Seedesclistdefault;
prodLinkArray[306] ← Seeoptcatchcatchlist;
prodLinkArray[307] ← Seeoptcatchempty;
prodLinkArray[308] ← Seeidentlist;
prodLinkArray[309] ← SeeidentlistPa;
prodLinkArray[310] ← SeeidentlistPb;
prodLinkArray[311] ← SeeidentlistPc;
prodLinkArray[312] ← SeeidentlistPd;
prodLinkArray[313] ← Seeprefixoplong;
prodLinkArray[314] ← Seeprefixopabs;
prodLinkArray[315] ← Seeprefixoppred;
prodLinkArray[316] ← Seeprefixopsucc;
prodLinkArray[317] ← Seeprefixopord;
prodLinkArray[318] ← Seeprefixopmin;
prodLinkArray[319] ← Seeprefixopmax;
prodLinkArray[320] ← Seeprefixopbase;
prodLinkArray[321] ← Seeprefixoplength;
END;
Seedotestuntil: 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[BuildDoTestuntilProdNode[position, length, exp], stack];
RETURN[stack]
END;
Seedotestwhile: 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[BuildDoTestwhileProdNode[position, length, exp], stack];
RETURN[stack]
END;
Seedotestempty: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildDoTestemptyProdNode[position, length], stack];
RETURN[stack]
END;
Seeoptargsexplist: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
explist: ExpListNode;
explist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildOptArgsexplistProdNode[position, length, explist], stack];
RETURN[stack]
END;
Seeoptargsempty: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildOptArgsemptyProdNode[position, length], stack];
RETURN[stack]
END;
Seeoptargsexp: 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[BuildOptArgsexpProdNode[position, length, lhs], stack];
RETURN[stack]
END;
Seefreeplain: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildFreeplainProdNode[position, length], stack];
RETURN[stack]
END;
Seefreezoned: 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[BuildFreezonedProdNode[position, length, lhs], stack];
RETURN[stack]
END;
Seecasestmtlistempty: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildSelectStmtListemptyProdNode[position, length], stack];
RETURN[stack]
END;
Seecasestmtlistb: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
casestmtlistP: SelectStmtListNode;
casestmtlistP ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[casestmtlistP, stack];
RETURN[stack]
END;
Seecasestmtlistc: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
casestmtlistP: SelectStmtListNode;
casestmtlistP ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[casestmtlistP, stack];
RETURN[stack]
END;
SeecasestmtlistPa: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
casestmtitem: SelectStmtItemNode;
casestmtitem ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildSelectStmtListmoreProdNode[position, length, BuildSelectStmtListemptyProdNode[casestmtitem.position, casestmtitem.position - casestmtitem.length], casestmtitem], stack];
RETURN[stack]
END;
SeecasestmtlistPb: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
casestmtlistP: SelectStmtListNode;
casestmtitem: SelectStmtItemNode;
casestmtitem ← NARROW[stack.first];
stack ← stack.rest;
casestmtlistP ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildSelectStmtListmoreProdNode[position, length, casestmtlistP, casestmtitem], stack];
RETURN[stack]
END;
Seecasestmtitem: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
caselabel: SelectLabelNode;
statement: StatementNode;
statement ← NARROW[stack.first];
stack ← stack.rest;
caselabel ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildSelectStmtItemProdNode[position, length, caselabel, statement], stack];
RETURN[stack]
END;
Seedeclistone: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
declaration: DeclarationNode;
declaration ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildDecListoneProdNode[position, length, declaration], stack];
RETURN[stack]
END;
Seedeclistmany: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
declist: DecListNode;
declaration: DeclarationNode;
declaration ← NARROW[stack.first];
stack ← stack.rest;
declist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildDecListmanyProdNode[position, length, declist, BuildDecListoneProdNode[declaration.position, declaration.length, declaration]], stack];
RETURN[stack]
END;
Seedeclarationvalue: 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;
entry: EntryNode;
readonly: ReadOnlyNode;
typeexp: TypeExpNode;
initialization: InitializationNode;
initialization ← NARROW[stack.first];
stack ← stack.rest;
typeexp ← NARROW[stack.first];
stack ← stack.rest;
readonly ← NARROW[stack.first];
stack ← stack.rest;
entry ← NARROW[stack.first];
stack ← stack.rest;
public ← NARROW[stack.first];
stack ← stack.rest;
identlist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildDeclarationvalueProdNode[position, length, identlist, public, entry, readonly, typeexp, initialization], stack];
RETURN[stack]
END;
Seedeclarationtype: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
identlist: IdentListNode;
publicid: AccessNode;
tilde: JunkNode;
publictype: AccessNode;
typeexp: TypeExpNode;
default: DefaultNode;
default ← NARROW[stack.first];
stack ← stack.rest;
typeexp ← NARROW[stack.first];
stack ← stack.rest;
publictype ← NARROW[stack.first];
stack ← stack.rest;
tilde ← NARROW[stack.first];
stack ← stack.rest;
publicid ← NARROW[stack.first];
stack ← stack.rest;
identlist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildDeclarationtypeProdNode[position, length, identlist, publicid, publictype, typeexp, default], stack];
RETURN[stack]
END;
Seedeclarationopaquetype: 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;
optsize: OptSizeNode;
optsize ← NARROW[stack.first];
stack ← stack.rest;
public ← NARROW[stack.first];
stack ← stack.rest;
identlist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildDeclarationopaquetypeProdNode[position, length, identlist, public, optsize], stack];
RETURN[stack]
END;
Seeentryentry: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildEntryentryProdNode[position, length], stack];
RETURN[stack]
END;
Seeentryinternal: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildEntryinternalProdNode[position, length], stack];
RETURN[stack]
END;
Seeentryempty: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildEntryemptyProdNode[position, length], stack];
RETURN[stack]
END;
Seeoptsizepresent: 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[BuildOptSizepresentProdNode[position, length, exp], stack];
RETURN[stack]
END;
Seeoptsizeabsent: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildOptSizeabsentProdNode[position, length], stack];
RETURN[stack]
END;
Seeprimaryexplist: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
explist: ExpListNode;
explist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildExpexplistProdNode[position, length, explist], stack];
RETURN[stack]
END;
Seeprimaryprefixop: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
prefixop: PrefixOpNode;
orderlist: OrderListNode;
orderlist ← NARROW[stack.first];
stack ← stack.rest;
prefixop ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildExpprefixopProdNode[position, length, prefixop, orderlist], stack];
RETURN[stack]
END;
Seeprimaryval: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
orderlist: OrderListNode;
orderlist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildExpvalProdNode[position, length, orderlist], stack];
RETURN[stack]
END;
Seeprimaryall: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
orderlist: OrderListNode;
orderlist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildExpallProdNode[position, length, orderlist], stack];
RETURN[stack]
END;
Seeprimarynew: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
new: NewNode;
typeexp: TypeExpNode;
initialization: InitializationNode;
optcatch: CatchNode;
optcatch ← NARROW[stack.first];
stack ← stack.rest;
initialization ← NARROW[stack.first];
stack ← stack.rest;
typeexp ← NARROW[stack.first];
stack ← stack.rest;
new ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildExpnewProdNode[position, length, new, typeexp, initialization, optcatch], stack];
RETURN[stack]
END;
Seeprimarycons: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
cons: ConsNode;
explist: ExpListNode;
optcatch: CatchNode;
optcatch ← NARROW[stack.first];
stack ← stack.rest;
explist ← NARROW[stack.first];
stack ← stack.rest;
cons ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildExpconsProdNode[position, length, cons, explist, optcatch], stack];
RETURN[stack]
END;
Seeprimarylistcons: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
listcons: ListConsNode;
explist: ExpListNode;
explist ← NARROW[stack.first];
stack ← stack.rest;
listcons ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildExplistconsProdNode[position, length, listcons, explist], stack];
RETURN[stack]
END;
Seeprimarynil: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildExpnilProdNode[position, length], stack];
RETURN[stack]
END;
Seeprimarytypeop: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
typeop: TypeOpNode;
typeexp: TypeExpNode;
typeexp ← NARROW[stack.first];
stack ← stack.rest;
typeop ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildExptypeopProdNode[position, length, typeop, typeexp], stack];
RETURN[stack]
END;
Seeprimarysize: 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[BuildExpsizeProdNode[position, length, typeexp], stack];
RETURN[stack]
END;
Seeprimarysize2: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
typeexp: TypeExpNode;
exp: ExpNode;
exp ← NARROW[stack.first];
stack ← stack.rest;
typeexp ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildExpsize2ProdNode[position, length, typeexp, exp], stack];
RETURN[stack]
END;
Seeprimaryistype: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
exp: ExpNode;
typeexp: TypeExpNode;
typeexp ← NARROW[stack.first];
stack ← stack.rest;
exp ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildExpistypeProdNode[position, length, exp, typeexp], stack];
RETURN[stack]
END;
Seeprimaryaddress: 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[BuildExpaddressProdNode[position, length, lhs], stack];
RETURN[stack]
END;
Seeprimarydescriptor: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
desclist: DescListNode;
desclist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildExpdescriptorProdNode[position, length, desclist], stack];
RETURN[stack]
END;
Seeprimarylhs: 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[lhs, stack];
RETURN[stack]
END;
Seenewplain: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildNewplainProdNode[position, length], stack];
RETURN[stack]
END;
Seenewzoned: 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[BuildNewzonedProdNode[position, length, lhs], stack];
RETURN[stack]
END;
Seeconsplain: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildConsplainProdNode[position, length], stack];
RETURN[stack]
END;
Seeconszoned: 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[BuildConszonedProdNode[position, length, lhs], stack];
RETURN[stack]
END;
Seelistconsplain: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildListConsplainProdNode[position, length], stack];
RETURN[stack]
END;
Seelistconszoned: 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[BuildListConszonedProdNode[position, length, lhs], stack];
RETURN[stack]
END;
Seedesclistexplicit: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
expbase: ExpNode;
explength: ExpNode;
opttype: OptTypeNode;
opttype ← NARROW[stack.first];
stack ← stack.rest;
explength ← NARROW[stack.first];
stack ← stack.rest;
expbase ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildDescListexplicitlengthProdNode[position, length, expbase, explength, opttype], stack];
RETURN[stack]
END;
Seedesclistdefault: 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[BuildDescListdefaultlengthProdNode[position, length, exp], stack];
RETURN[stack]
END;
Seeoptcatchcatchlist: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
catchlist: CatchNode;
catchlist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[catchlist, stack];
RETURN[stack]
END;
Seeoptcatchempty: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildCatchProdNode[position, length, BuildCatchCaseListemptyProdNode[position, length], BuildCatchAnyabsentProdNode[position, length]], stack];
RETURN[stack]
END;
Seeidentlist: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
identlistP: IdentListNode;
identlistP ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[identlistP, stack];
RETURN[stack]
END;
SeeidentlistPa: 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[BuildIdentListoneProdNode[position, length, BuildIdentidProdNode[id.position, id.length, id]], stack];
RETURN[stack]
END;
SeeidentlistPb: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
id: idNode;
positionP: PositionNode;
positionP ← NARROW[stack.first];
stack ← stack.rest;
id ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildIdentListoneProdNode[position, length, BuildIdentidpositionProdNode[id.position, positionP.position + positionP.length - id.position, id, positionP]], stack];
RETURN[stack]
END;
SeeidentlistPc: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
id: idNode;
identlistP: IdentListNode;
identlistP ← NARROW[stack.first];
stack ← stack.rest;
id ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildIdentListmanyProdNode[position, length, BuildIdentListoneProdNode[id.position, id.length, BuildIdentidProdNode[id.position, id.length, id]], identlistP], stack];
RETURN[stack]
END;
SeeidentlistPd: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
id: idNode;
positionP: PositionNode;
identlistP: IdentListNode;
identlistP ← NARROW[stack.first];
stack ← stack.rest;
positionP ← NARROW[stack.first];
stack ← stack.rest;
id ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildIdentListmanyProdNode[position, length, BuildIdentListoneProdNode[id.position, positionP.position + positionP.length - id.position, BuildIdentidpositionProdNode[id.position, positionP.position + positionP.length - id.position, id, positionP]], identlistP], stack];
RETURN[stack]
END;
Seeprefixoplong: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildPrefixOplongProdNode[position, length], stack];
RETURN[stack]
END;
Seeprefixopabs: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildPrefixOpabsProdNode[position, length], stack];
RETURN[stack]
END;
Seeprefixoppred: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildPrefixOppredProdNode[position, length], stack];
RETURN[stack]
END;
Seeprefixopsucc: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildPrefixOpsuccProdNode[position, length], stack];
RETURN[stack]
END;
Seeprefixopord: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildPrefixOpordProdNode[position, length], stack];
RETURN[stack]
END;
Seeprefixopmin: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildPrefixOpminProdNode[position, length], stack];
RETURN[stack]
END;
Seeprefixopmax: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildPrefixOpmaxProdNode[position, length], stack];
RETURN[stack]
END;
Seeprefixopbase: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildPrefixOpbaseProdNode[position, length], stack];
RETURN[stack]
END;
Seeprefixoplength: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildPrefixOplengthProdNode[position, length], stack];
RETURN[stack]
END;
END..