SaffronCG3Impl.mesa
Copyright Ó 1987 by Xerox Corporation. All rights reserved.
Generated by BJackson.pa at April 27, 1987 10:56:55 pm PDT
using ThreeCasabaFour [1.1] of April 14, 1987 6:34:07 pm PDT
DIRECTORY
SaffronAG5Def,
SaffronAG6Def,
SaffronAG8Def,
SaffronAG7Def,
SaffronAG2Def,
SaffronAG1Def,
SaffronAG3Def,
SaffronGenericDef,
ThreeC4Support,
SaffronCG3Def USING[],
SaffronATDef;
SaffronCG3Impl: CEDAR PROGRAM IMPORTS SaffronAG5Def, SaffronAG6Def, SaffronAG8Def, SaffronAG7Def, SaffronAG2Def, SaffronAG1Def, SaffronAG3Def EXPORTS SaffronCG3Def=
BEGIN
OPEN SaffronAG5Def, SaffronAG6Def, SaffronAG8Def, SaffronAG7Def, SaffronAG2Def, SaffronAG1Def, SaffronAG3Def, SaffronGenericDef, ThreeC4Support, SaffronATDef;
SaffronCG3LinkProc: PUBLIC PROC[prodLinkArray: SeeProdLinkArray, tknLinkArray: TokenLinkArray] =
BEGIN
prodLinkArray[92] ← Seetransferopsignal;
prodLinkArray[93] ← Seetransferoperror;
prodLinkArray[94] ← Seetransferopstart;
prodLinkArray[95] ← Seetransferopjoin;
prodLinkArray[96] ← Seetransferopnew;
prodLinkArray[97] ← Seetransferopfork;
prodLinkArray[98] ← Seedisjunctor;
prodLinkArray[99] ← Seedisjunctconjunct;
prodLinkArray[100] ← Seeconjunctand;
prodLinkArray[101] ← Seeconjunctnegation;
prodLinkArray[102] ← Seenegationa;
prodLinkArray[103] ← Seenegationb;
prodLinkArray[104] ← Seenegationrelation;
prodLinkArray[105] ← Seerelationrelation;
prodLinkArray[106] ← Seerelationsum;
prodLinkArray[107] ← Seecatchlista;
prodLinkArray[108] ← Seecatchlistb;
prodLinkArray[109] ← Seecatchlistc;
prodLinkArray[110] ← Seecatchlistd;
prodLinkArray[111] ← Seecatchheadempty;
prodLinkArray[112] ← Seecatchheadmore;
prodLinkArray[113] ← Seeidentidposition;
prodLinkArray[114] ← Seeidentid;
prodLinkArray[115] ← Seetypeopcode;
prodLinkArray[116] ← Seetypeopfirst;
prodLinkArray[117] ← Seetypeoplast;
prodLinkArray[118] ← Seetypeopnil;
prodLinkArray[119] ← Seeidlist;
prodLinkArray[120] ← SeeidlistPone;
prodLinkArray[121] ← SeeidlistPmore;
prodLinkArray[122] ← Seearguments;
prodLinkArray[123] ← Seearglistany;
prodLinkArray[124] ← Seearglistfieldlist;
prodLinkArray[125] ← Seearglistempty;
prodLinkArray[126] ← Seereturnlistany;
prodLinkArray[127] ← Seereturnlistfieldlist;
prodLinkArray[128] ← Seereturnlistempty;
prodLinkArray[129] ← Seefieldlistempty;
prodLinkArray[130] ← Seefieldlistpairlist;
prodLinkArray[131] ← Seefieldlisttypelist;
prodLinkArray[132] ← Seetypeexpa;
prodLinkArray[133] ← Seetypeexpb;
prodLinkArray[134] ← Seetypeexpc;
prodLinkArray[135] ← Seenumdecimal;
prodLinkArray[136] ← Seenumoctal;
prodLinkArray[137] ← Seenumhex;
prodLinkArray[138] ← Seelhsid;
prodLinkArray[139] ← Seelhsnum;
prodLinkArray[140] ← Seelhsstring;
prodLinkArray[141] ← Seelhsflnum;
prodLinkArray[142] ← Seelhschar;
prodLinkArray[143] ← Seelhsatom;
prodLinkArray[144] ← Seelhsnarrow;
prodLinkArray[145] ← Seelhsloophole;
prodLinkArray[146] ← Seelhsapply;
prodLinkArray[147] ← Seelhsexp;
prodLinkArray[148] ← Seelhsqualifier;
prodLinkArray[149] ← Seequalifierprefixop;
prodLinkArray[150] ← Seequalifiertypeop;
prodLinkArray[151] ← Seequalifiersize;
prodLinkArray[152] ← Seequalifierapply;
prodLinkArray[153] ← Seequalifierselect;
prodLinkArray[154] ← Seequalifierindirect;
prodLinkArray[155] ← Seeexitlistempty;
prodLinkArray[156] ← Seeexitlistb;
prodLinkArray[157] ← Seeexitlistc;
prodLinkArray[158] ← SeeexitlistPa;
prodLinkArray[159] ← SeeexitlistPb;
prodLinkArray[160] ← Seeexititem;
prodLinkArray[161] ← Seeoptexptrash;
prodLinkArray[162] ← Seeoptexpexp;
prodLinkArray[163] ← Seeoptexpempty;
prodLinkArray[164] ← Seecatchcase;
prodLinkArray[165] ← Seelhslistone;
prodLinkArray[166] ← Seelhslistmore;
prodLinkArray[167] ← Seeinitializationempty;
prodLinkArray[168] ← Seeinitializationassignment;
prodLinkArray[169] ← Seeinitializationbinding;
prodLinkArray[170] ← Seeinitvalueblock;
prodLinkArray[171] ← Seeinitvaluecode;
prodLinkArray[172] ← Seeinitvaluec;
prodLinkArray[173] ← Seeinitvalued;
prodLinkArray[174] ← Seeinitvaluetrash;
prodLinkArray[175] ← Seeinitvalueexp;
prodLinkArray[176] ← Seeprocaccess;
prodLinkArray[177] ← Seeinlineyes;
prodLinkArray[178] ← Seeinlineno;
prodLinkArray[179] ← Seecodelistone;
prodLinkArray[180] ← Seecodelistmore;
END;
Seetransferopsignal: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildTransferOpsignalProdNode[position, length], stack];
RETURN[stack]
END;
Seetransferoperror: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildTransferOperrorProdNode[position, length], stack];
RETURN[stack]
END;
Seetransferopstart: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildTransferOpstartProdNode[position, length], stack];
RETURN[stack]
END;
Seetransferopjoin: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildTransferOpjoinProdNode[position, length], stack];
RETURN[stack]
END;
Seetransferopnew: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildTransferOpnewProdNode[position, length], stack];
RETURN[stack]
END;
Seetransferopfork: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildTransferOpforkProdNode[position, length], stack];
RETURN[stack]
END;
Seedisjunctor: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
disjunct: ExpNode;
conjunct: ExpNode;
conjunct ← NARROW[stack.first];
stack ← stack.rest;
disjunct ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildExporProdNode[position, length, disjunct, conjunct], stack];
RETURN[stack]
END;
Seedisjunctconjunct: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
conjunct: ExpNode;
conjunct ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[conjunct, stack];
RETURN[stack]
END;
Seeconjunctand: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
conjunct: ExpNode;
negation: ExpNode;
negation ← NARROW[stack.first];
stack ← stack.rest;
conjunct ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildExpandProdNode[position, length, conjunct, negation], stack];
RETURN[stack]
END;
Seeconjunctnegation: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
negation: ExpNode;
negation ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[negation, stack];
RETURN[stack]
END;
Seenegationa: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
relation: ExpNode;
relation ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildExpnotProdNode[position, length, relation], stack];
RETURN[stack]
END;
Seenegationb: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
relation: ExpNode;
relation ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildExpnotProdNode[position, length, relation], stack];
RETURN[stack]
END;
Seenegationrelation: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
relation: ExpNode;
relation ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[relation, stack];
RETURN[stack]
END;
Seerelationrelation: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
sum: ExpNode;
optrelation: RelationNode;
optrelation ← NARROW[stack.first];
stack ← stack.rest;
sum ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildExprelationProdNode[position, length, sum, optrelation], stack];
RETURN[stack]
END;
Seerelationsum: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
sum: ExpNode;
sum ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[sum, stack];
RETURN[stack]
END;
Seecatchlista: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
catchhead: CatchCaseListNode;
catchcase: CatchCaseNode;
catchcase ← NARROW[stack.first];
stack ← stack.rest;
catchhead ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildCatchProdNode[position, length, BuildCatchCaseListmoreProdNode[catchhead.position, catchcase.position + catchcase.length - catchhead.position, catchhead, catchcase], BuildCatchAnyabsentProdNode[catchcase.position + catchcase.length, catchcase.position + catchcase.length - catchcase.position - catchcase.length]], stack];
RETURN[stack]
END;
Seecatchlistb: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
catchhead: CatchCaseListNode;
catchhead ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildCatchProdNode[position, length, catchhead, BuildCatchAnyabsentProdNode[catchhead.position + catchhead.length, catchhead.position + catchhead.length - catchhead.position - catchhead.length]], stack];
RETURN[stack]
END;
Seecatchlistc: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
catchhead: CatchCaseListNode;
catchany: CatchAnyNode;
catchany ← NARROW[stack.first];
stack ← stack.rest;
catchhead ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildCatchProdNode[position, length, catchhead, catchany], stack];
RETURN[stack]
END;
Seecatchlistd: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
catchhead: CatchCaseListNode;
catchany: CatchAnyNode;
catchany ← NARROW[stack.first];
stack ← stack.rest;
catchhead ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildCatchProdNode[position, length, catchhead, catchany], stack];
RETURN[stack]
END;
Seecatchheadempty: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildCatchCaseListemptyProdNode[position, length], stack];
RETURN[stack]
END;
Seecatchheadmore: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
catchhead: CatchCaseListNode;
catchcase: CatchCaseNode;
catchcase ← NARROW[stack.first];
stack ← stack.rest;
catchhead ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildCatchCaseListmoreProdNode[position, length, catchhead, catchcase], stack];
RETURN[stack]
END;
Seeidentidposition: 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[BuildIdentidpositionProdNode[position, length, id, positionP], stack];
RETURN[stack]
END;
Seeidentid: 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[BuildIdentidProdNode[position, length, id], stack];
RETURN[stack]
END;
Seetypeopcode: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildTypeOpcodeProdNode[position, length], stack];
RETURN[stack]
END;
Seetypeopfirst: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildTypeOpfirstProdNode[position, length], stack];
RETURN[stack]
END;
Seetypeoplast: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildTypeOplastProdNode[position, length], stack];
RETURN[stack]
END;
Seetypeopnil: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildTypeOpnilProdNode[position, length], stack];
RETURN[stack]
END;
Seeidlist: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
idlistP: IdListNode;
idlistP ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[idlistP, stack];
RETURN[stack]
END;
SeeidlistPone: 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[BuildIdListoneProdNode[position, length, id], stack];
RETURN[stack]
END;
SeeidlistPmore: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
id: idNode;
idlistP: IdListNode;
idlistP ← NARROW[stack.first];
stack ← stack.rest;
id ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildIdListmoreProdNode[position, length, id, idlistP], stack];
RETURN[stack]
END;
Seearguments: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
arglist: ParameterListNode;
returnlist: ParameterListNode;
returnlist ← NARROW[stack.first];
stack ← stack.rest;
arglist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildArgumentsProdNode[position, length, arglist, returnlist], stack];
RETURN[stack]
END;
Seearglistany: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildParameterListanyProdNode[position, length], stack];
RETURN[stack]
END;
Seearglistfieldlist: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
fieldlist: ParameterListNode;
fieldlist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[fieldlist, stack];
RETURN[stack]
END;
Seearglistempty: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildParameterListemptyProdNode[position, length], stack];
RETURN[stack]
END;
Seereturnlistany: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildParameterListanyProdNode[position, length], stack];
RETURN[stack]
END;
Seereturnlistfieldlist: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
fieldlist: ParameterListNode;
fieldlist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[fieldlist, stack];
RETURN[stack]
END;
Seereturnlistempty: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildParameterListemptyProdNode[position, length], stack];
RETURN[stack]
END;
Seefieldlistempty: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildParameterListemptyProdNode[position, length], stack];
RETURN[stack]
END;
Seefieldlistpairlist: 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[BuildParameterListpairlistProdNode[position, length, pairlist], stack];
RETURN[stack]
END;
Seefieldlisttypelist: 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[BuildParameterListtypelistProdNode[position, length, typelist], stack];
RETURN[stack]
END;
Seetypeexpa: 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[BuildTypeExptypeidProdNode[position, length, BuildTypeIdidProdNode[id.position, id.length, id]], stack];
RETURN[stack]
END;
Seetypeexpb: 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[BuildTypeExptypeidProdNode[position, length, typeid], stack];
RETURN[stack]
END;
Seetypeexpc: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
typecons: TypeExpNode;
typecons ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[typecons, stack];
RETURN[stack]
END;
Seenumdecimal: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
decimalnum: decimalnumNode;
decimalnum ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildNumdecimalProdNode[position, length, decimalnum], stack];
RETURN[stack]
END;
Seenumoctal: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
octalnum: octalnumNode;
octalnum ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildNumoctalProdNode[position, length, octalnum], stack];
RETURN[stack]
END;
Seenumhex: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
hexnum: hexnumNode;
hexnum ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildNumhexProdNode[position, length, hexnum], stack];
RETURN[stack]
END;
Seelhsid: 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[BuildExpidProdNode[position, length, id], stack];
RETURN[stack]
END;
Seelhsnum: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
num: NumNode;
num ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildExpnumProdNode[position, length, num], stack];
RETURN[stack]
END;
Seelhsstring: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
string: stringNode;
string ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildExpstringProdNode[position, length, string], stack];
RETURN[stack]
END;
Seelhsflnum: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
flnum: flnumNode;
flnum ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildExpflnumProdNode[position, length, flnum], stack];
RETURN[stack]
END;
Seelhschar: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
char: charNode;
char ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildExpcharProdNode[position, length, char], stack];
RETURN[stack]
END;
Seelhsatom: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
atom: atomNode;
atom ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildExpatomProdNode[position, length, atom], stack];
RETURN[stack]
END;
Seelhsnarrow: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
exp: ExpNode;
opttype: OptTypeNode;
optcatch: CatchNode;
optcatch ← NARROW[stack.first];
stack ← stack.rest;
opttype ← NARROW[stack.first];
stack ← stack.rest;
exp ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildExpnarrowProdNode[position, length, exp, opttype, optcatch], stack];
RETURN[stack]
END;
Seelhsloophole: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
exp: ExpNode;
opttype: OptTypeNode;
opttype ← NARROW[stack.first];
stack ← stack.rest;
exp ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildExploopholeProdNode[position, length, exp, opttype], stack];
RETURN[stack]
END;
Seelhsapply: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
exprator: ExpNode;
exprand: ExpNode;
optcatch: CatchNode;
optcatch ← NARROW[stack.first];
stack ← stack.rest;
exprand ← NARROW[stack.first];
stack ← stack.rest;
exprator ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildExpapplyProdNode[position, length, exprator, exprand, optcatch], stack];
RETURN[stack]
END;
Seelhsexp: 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;
Seelhsqualifier: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
lhs: ExpNode;
qualifier: QualifierNode;
qualifier ← NARROW[stack.first];
stack ← stack.rest;
lhs ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildExpqualifierProdNode[position, length, lhs, qualifier], stack];
RETURN[stack]
END;
Seequalifierprefixop: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
prefixop: PrefixOpNode;
prefixop ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildQualifierprefixopProdNode[position, length, prefixop], stack];
RETURN[stack]
END;
Seequalifiertypeop: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
typeop: TypeOpNode;
typeop ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildQualifiertypeopProdNode[position, length, typeop], stack];
RETURN[stack]
END;
Seequalifiersize: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildQualifiersizeProdNode[position, length], stack];
RETURN[stack]
END;
Seequalifierapply: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
explist: ExpListNode;
optcatch: CatchNode;
optcatch ← NARROW[stack.first];
stack ← stack.rest;
explist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildQualifierapplyProdNode[position, length, explist, optcatch], stack];
RETURN[stack]
END;
Seequalifierselect: 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[BuildQualifierselectProdNode[position, length, id], stack];
RETURN[stack]
END;
Seequalifierindirect: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildQualifierindirectProdNode[position, length], stack];
RETURN[stack]
END;
Seeexitlistempty: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildExitListemptyProdNode[position, length], stack];
RETURN[stack]
END;
Seeexitlistb: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
exitlistP: ExitListNode;
exitlistP ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[exitlistP, stack];
RETURN[stack]
END;
Seeexitlistc: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
exitlistP: ExitListNode;
exitlistP ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[exitlistP, stack];
RETURN[stack]
END;
SeeexitlistPa: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
exititem: ExitItemNode;
exititem ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildExitListmoreProdNode[position, length, BuildExitListemptyProdNode[exititem.position, exititem.position - exititem.length], exititem], stack];
RETURN[stack]
END;
SeeexitlistPb: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
exitlistP: ExitListNode;
exititem: ExitItemNode;
exititem ← NARROW[stack.first];
stack ← stack.rest;
exitlistP ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildExitListmoreProdNode[position, length, exitlistP, exititem], stack];
RETURN[stack]
END;
Seeexititem: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
idlist: IdListNode;
statement: StatementNode;
statement ← NARROW[stack.first];
stack ← stack.rest;
idlist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildExitItemProdNode[position, length, idlist, statement], stack];
RETURN[stack]
END;
Seeoptexptrash: 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[BuildOptExptrashProdNode[position, length], stack];
RETURN[stack]
END;
Seeoptexpexp: 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[BuildOptExpexpProdNode[position, length, exp], stack];
RETURN[stack]
END;
Seeoptexpempty: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildOptExpemptyProdNode[position, length], stack];
RETURN[stack]
END;
Seecatchcase: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
lhslist: SignalListNode;
statement: StatementNode;
statement ← NARROW[stack.first];
stack ← stack.rest;
lhslist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildCatchCaseProdNode[position, length, lhslist, statement], stack];
RETURN[stack]
END;
Seelhslistone: 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[BuildSignalListoneProdNode[position, length, lhs], stack];
RETURN[stack]
END;
Seelhslistmore: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
lhslist: SignalListNode;
lhs: ExpNode;
lhs ← NARROW[stack.first];
stack ← stack.rest;
lhslist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildSignalListmoreProdNode[position, length, lhslist, lhs], stack];
RETURN[stack]
END;
Seeinitializationempty: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildInitializationemptyProdNode[position, length], stack];
RETURN[stack]
END;
Seeinitializationassignment: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
initvalue: InitialValueNode;
initvalue ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildInitializationassignmentProdNode[position, length, initvalue], stack];
RETURN[stack]
END;
Seeinitializationbinding: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
tilde: JunkNode;
initvalue: InitialValueNode;
initvalue ← NARROW[stack.first];
stack ← stack.rest;
tilde ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildInitializationbindingProdNode[position, length, initvalue], stack];
RETURN[stack]
END;
Seeinitvalueblock: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
procaccess: JunkNode;
trusted: JunkNode;
checked: CheckedNode;
inline: InlineNode;
block: BlockNode;
block ← NARROW[stack.first];
stack ← stack.rest;
inline ← NARROW[stack.first];
stack ← stack.rest;
checked ← NARROW[stack.first];
stack ← stack.rest;
trusted ← NARROW[stack.first];
stack ← stack.rest;
procaccess ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildInitialValueblockProdNode[position, length, checked, inline, block], stack];
RETURN[stack]
END;
Seeinitvaluecode: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildInitialValuecodeProdNode[position, length], stack];
RETURN[stack]
END;
Seeinitvaluec: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
procaccess: JunkNode;
trusted: JunkNode;
checked: CheckedNode;
codelist: CodeListNode;
codelist ← NARROW[stack.first];
stack ← stack.rest;
checked ← NARROW[stack.first];
stack ← stack.rest;
trusted ← NARROW[stack.first];
stack ← stack.rest;
procaccess ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildInitialValuemachinecodeProdNode[position, length, checked, codelist], stack];
RETURN[stack]
END;
Seeinitvalued: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
procaccess: JunkNode;
trusted: JunkNode;
checked: CheckedNode;
codelist: CodeListNode;
codelist ← NARROW[stack.first];
stack ← stack.rest;
checked ← NARROW[stack.first];
stack ← stack.rest;
trusted ← NARROW[stack.first];
stack ← stack.rest;
procaccess ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildInitialValuemachinecodeProdNode[position, length, checked, codelist], stack];
RETURN[stack]
END;
Seeinitvaluetrash: 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[BuildInitialValuetrashProdNode[position, length], stack];
RETURN[stack]
END;
Seeinitvalueexp: 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[BuildInitialValueexpProdNode[position, length, exp], stack];
RETURN[stack]
END;
Seeprocaccess: 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;
Seeinlineyes: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildInlineyesProdNode[position, length], stack];
RETURN[stack]
END;
Seeinlineno: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
stack ← CONS[BuildInlinenoProdNode[position, length], stack];
RETURN[stack]
END;
Seecodelistone: 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[BuildCodeListoneProdNode[position, length, orderlist], stack];
RETURN[stack]
END;
Seecodelistmore: PROC[nodes: LIST OF REF ANY, position: INT, length: INT]
RETURNS[LIST OF REF ANY] =
BEGIN
stack: LIST OF REF ANY ← nodes;
codelist: CodeListNode;
orderlist: OrderListNode;
orderlist ← NARROW[stack.first];
stack ← stack.rest;
codelist ← NARROW[stack.first];
stack ← stack.rest;
stack ← CONS[BuildCodeListmoreProdNode[position, length, codelist, orderlist], stack];
RETURN[stack]
END;
END..